3. オペレーティングシステム
3.1 オペレーティングシステムの役割
- オペレーティングシステム
- 他のプログラムを実行するための基盤となるソフトウェア
- ソフトウェアの動作を支援し、コンピュータをより有効に活用する仕組みを提供する
- プロセス管理
- アプリケーションソフトウェアの実行支援と管理
- 本格的なオペレーティングシステムでは、マルチタスク機能を備えている
- メモリ管理
- プログラムの要求に応じて、メモリを割り当てる機能
- デマンドページングや仮想記憶などの仕組みでメモリを有効活用
- ファイルシステム
- ディスク装置などの記憶媒体の管理を支援する機能
- ファイル名での呼び出しや階層構造で整理可能になる
- 入出力管理
- 様々な周辺機器を接続し、アプリケーションソフトウェアから利用できるようにする機能
- 機械に固有な制御をプログラム化したドライバと呼ばれるソフトウェアを組み込み、アプリケーションソフトウェアからどの機器も同じ方法でコントロール可能になる
- プロセス管理
3.2 プロセス管理
- マルチタスク機能
- プロセス管理機能のうち、複数のプログラムを同時に並行して実行する機能のこと
- CPUの実行するプログラムを高速で切り替えることで、すべてのプログラムが同時に連続して実行しているように見える仕組み
- 切り替える際は、タスクの状態(レジスタの内容)をメモリに保存し、また同じタスクを再開するときに前回のタスク状態をメモリからレジスタにセットする
- システム全体の処理効率の向上ができる
- タスク実行ごとの(入出力の完了などの)待ち時間をシングルタスクでは有効活用できない
- イベント駆動方式
- ユーザーの操作をイベントとして扱って、その種類にお応じて処理を選択する
- プリエンプティブなマルチタスク
- 入出力のタイミングだけでなく、一定時間経つと強制的にタスクを切り替えてしまう方式
- すべてのタスクが他のタスクに影響されることなく独立に実行を進めていけることから、「完全なマルチタスク」とも呼ばれる
- ランダムな瞬間にタスクが切り替わってしまうことを前提にオペレーティングシステム内で適切に排他制御を行わなければならないため、比較的高度な機能
3.3 メモリ管理
- オペレーティングシステムのメモリ管理機能の主要な役割
- メモリ割り当て
- 複数のタスクにメモリを分配する方法を管理する
- タスク起動時にプログラムをロードするために必要な分を空きメモリから割り当てる
- アプリケーションソフトウェアからプログラムを実行するために必要なメモリの要求があった際にメモリを割り当てる
- メモリが不要になったり、ソフトウェアの実行が終了すると、メモリが返却され、再び空きメモリとして管理される
- メモリ保護
- タスク内で実行されるアプリケーションソフトウェアがアクセスできるメモリ領域を制限する
- 誤ってシステム領域のメモリに書き込んでしまうようなミスを防ぐ
- 仮想記憶
- 以下のような仕組みで実際に搭載しているメモリ容量よりも多くのメモリがあるように見せる機能
- 論理アドレスに対応する物理アドレスがない場合(存在確認欄がOFF)にMMUがアドレス変換を行う代わりにCPU実行ユニットに割り込み信号を送る
- 割り込みによりオペレーティングシステムのメモリ管理モジュールが呼び出される
- あまり使われていない物理メモリが探され、この内容をディスク装置に格納した後、論理アドレスへの割り当てから解放する(存在確認欄OFF)
- 解放された物理アドレスを最初にアクセスのあった論理アドレスに割り当てる
- 以下のような仕組みで実際に搭載しているメモリ容量よりも多くのメモリがあるように見せる機能
- メモリ割り当て
- MMU(Memory Management Unit)
- メモリ管理のための特殊機能を持ったハードウェア
- オペレーティングシステムがメモリ割り当て時に変換表を作成しMMUに設定すると、MMUはこの表をもとにアドレスを変換する
- 486/386ではCPU内にMMUを内蔵しているため、アドレス変換などは高速に実行される
- タスク切り替えの際にタスク状態の保存・復元と同時に、MMUに設定されるアドレス変換表も保存・復元される
- アドレス変換
- プログラムがアクセスするメモリアドレス(論理アドレス)と、実際にメモリチップにアクセスするアドレス(物理アドレス)を変換すること
- アドレス変換をすることで、物理アドレス上は不連続な領域でも、論理アドレスが連続した領域として扱うことができるようになる
3.4 特権レベルと保護機能
- 特権レベル
- オペレーションシステムとアプリケーションソフトウェアの特権レベル(特殊命令やI/Oポートのアクセスの実行が可能)を分離することで、オペレーティングシステムのプロセス管理やメモリ管理、入出力の働きがより安全になる
- 486は4段階の特権レベルを持つ
- 保護機能
- メモリ管理
- 特権レベルによる実行可能な命令の種類の制限
- システム資源の独占を防ぐための、タスク機能によるプログラム切り替え