OSの構成

基本ソフトウェア

以下の3つから構成される
  • 制御プログラム(OS)
  • 言語プロセッサ
  • サービスプログラム
サービスプログラム(ユーティリティ)は、システムの運用を支援するプログラムで、記憶媒体間のデータ転送、ファイルの複写・削除・整理などの処理を行うためのプログラム。 テキストエディタ、分類/併合・ソート・ファイル変換プログラムなどが該当する

制御プログラム

基本ソフトウェアの中核を担うもので、以下の3つから構成される。

PCの仕事

ジョブ
コンピュータで実行される人間から見たひとまとまりの処理の単位
ジョブステップ
1つ以上のジョブから構成される単位
タスク
コンピュータから見た仕事で、処理に必要なCPUの割り当て単位 プログラムのうち、CPUが割り当て(ディスパッチ)られているプログラムがタスク プログラムが実行依頼されると、カーネルは実行に必要なCPU以外のシステム資源などの実行環境を整える その後、タスクを生成して、その実行をタスク管理に依頼する。その際にTCB(Task Control Block)に以下のタスク情報を登録する。
  • タスクID
  • 優先順位
  • タスクの状態
  • レジスタ群格納アドレス(PSW:プログラム状態語)
  • プロテクション状態/実行時間
  • ユーザID(マルチユーザ環境)

カーネル

主記憶装置上に常駐する制御プログラムモジュール群で、以下の処理をする。
ジョブ管理
ジョブやジョブステップの実行を監視・制御
タスク管理
同時に実行される複数のタスクに、CPU効率を考慮した適切な順番でCPU時間を割り当てる。 生成されたタスクは、処理が終えて消滅するまで、3つの状態を行き来する。
  • 実行可能状態
  • 実行状態
  • 待ち状態
マルチプログラミング環境において、CPUが保有する実行中のプログラムの状態や主記憶アドレス空間の内容を交互に切り替える(コンテキストスイッチング) PSWの切り替えは高速だが、アドレス空間の切り替えはオーバヘッドが大きい(スレッドを活用)

デバイスドライバ

カーネルと入出力装置とのインタフェースで、入出力装置を直接操作・管理するプログラム 各装置に依存した処理を行うため、装置の種類ごとに用意される。 カーネルは最終的に入出力制御をデバイスドライバに任せる

ユーザモードとカーネルモード

ユーザモード
ユーザプログラムの実行
カーネルモード
カーネルだけが実行出来る特殊な命令を実行
ユーザモードとカーネルモードの切り替え例
ファイルの読み書きで、ユーザモードでは、入出力命令を実行できないため、システムコール(スーパバイザコール:SVC)を呼び出す。 そして、
カーネル
が、以下を実行する
  1. ユーザの命令を理解
  2. パーミッションを確認
  3. 読み書きを実行