現在(2020/05/06)大学3年生で現役のエンジニアの方に勉強を教わっているので教わったことを忘れないようにメモとして残していきます。あくまで自分用なので例えなどは自分がわかりやすいように解釈して書いています。間違いなどがありましたら指摘してください。
ソフトウェアの分類
以下の画像のような分類になっている。
応用ソフトウェア:表計算などの各種アプリケーションソフト
ミドルウェア:応用ソフトウェアと基本ソフトウェアの橋渡しをする役割
基本ソフトウェア:OS,言語プロセッサなど。ハードウェアとの橋渡しの役割
※OSに関して常に最新バージョンが良いものであるとは限らない。
基本ソフトウェア
基本ソフトウェアは以下の3つのプログラムにわけることができる。
制御プログラム:ハードウェアを管理する。このプログラムをカーネルと呼び、メモリ管理、プロセス管理などの機能に限定したマイクロカーネルと、多くの機能を網羅したモノリシックカーネルがある。詳しくは勉強していないので今はこの程度の理解で興味がでてきたら勉強する。
言語処理プログラム:プログラミング言語で書かれたプログラムを機械語に翻訳するプログラム。高級言語を低級言語に変換する。
サービスプログラム:コンピュータ機能を補う補助的なプログラム。ファイルの圧縮など。
ジョブ管理
カーネルが持つ機能の一つ。まずは用語から説明。
マスタスケジューラ:利用者とパソコンの中身のを橋渡しするプログラム。利用者から指示を受けたり、ジョブの実行状態を報告する。要はジョブの管理者。
ジョブスケジューラ:ジョブを制御する。
以下に流れを記していく。
1.リーダ:ここでジョブを待ち状態にする。
2.イニシエータ:優先度の高いジョブを持ってきて、ジョブステップに分解する。
3.ターミネータ:実行を終えたジョブに割り当てられていたハードウェア資源を開放して、ジョブの結果を出力待ち行列に登録する。
4.ライタ:優先度の高いものから順にジョブ結果を出力する。
スプーリング
低速な装置とのデータのやり取りを高速な磁気ディスクを介して行うことで処理効率を高める方法。メリットはスループットの向上。
スループット:単位時間当たりに処理できる仕事量。単位はbps。
レイテンシー:通信の遅延時間。スループットとのトレードオフの関係らしい。