恐竜本の勉強まとめ続きです。前回はコンピュータのハード構成に関する話でした。今回の範囲は1章1.4節以降です。
OSの構成
- OSの重要な役割:複数プログラムを同時に走らせる(multiprogramming)こと
- ジョブがIOなどで待ち時間ができた場合、マルチプログラミングではないシステムでは終わるまで待つ必要があるが、OSは別のジョブをその間実行することでCPUを有効活用する。
- プロセス:メモリに読み込まれて実行されているプログラム
- ジョブスケジューリング:複数のジョブが実行可能になっているがメモリが足りないときどれを読み込むか決める仕組み
- CPUスケジューリング:複数のジョブが同時に実行可能であるときどれを実行するか決める仕組み
- スワッピング:メインメモリに読み出す(スワップイン)ことと、メインメモリからディスクに書き出すこと(スワップアウト)
- 仮想記憶:メモリ上に乗り切っていないプロセスを実行するための技術
カーネルモードとユーザーモード
複数のプロセスが同時に動くということによって動作に悪影響があってはならない。OSは他のプロセスのメモリ書き換えや無限ループ等の動作から他のプロセスを保護する動作をしている。これを実現するため、コンピュータ上のプログラムの実行時はカーネルモードとユーザーモードというモードが用意されている。
- カーネルモード:スーパーバイザーモード、システムモード、特権モードなどともいう。このモードの実行時はハードウェア上のどこかにあるモードビットというビットが0となる。OSの実行時にこのモードをとる。他のユーザに影響を与えるような機械語の命令の一部はカーネルモードでしか実行できないようになっている。
- ユーザーモード:ユーザーアプリケーションが実行されているときのモード。モードビットが1となる。
ユーザーモード実行中のプログラムがシステムコールでOSの動作を要求すると、OSに制御が引き継がれカーネルモードに遷移する。動作完了後ユーザーモードに遷移する。また、ユーザーモード中にメモリのアクセス違反が起きるとハードウェアがそれを検知し割り込みを発生させる。割り込みベクタの処理が実行されることでOSはアクセス違反を知る。OSはそのプログラムを異常終了する。
タイマー
同じプロセスがCPUを専有しないように、OSはプロセスの実行前にタイマーを設定する。タイマーが発火すると割り込みが発生し、OSに制御が戻ってくる。
プロセス管理
プロセス管理に関してOSは以下の機能を持つ。
- CPU上で動かすプロセスとスレッドをスケジューリングする
- ユーザー/システムプロセスの生成と削除
- プロセスの停止と再開
- プロセス同期の仕組みの提供
- プロセス間通信
メモリ管理
- メモリのどの部分が誰に使用されているか追跡する
- どのプロセスやデータをメモリに乗せるか、もしくはメモリから出すか
- メモリの割当と開放
ストレージ管理
ストレージ管理にはファイルシステム管理、マスストレージ管理、IOシステムが属する。
- ファイル作成・削除
- ディレクトリ作成・削除
- ファイルとストレージのマッピング
- ファイルの不揮発性ストレージへのバックアップ
- 空き領域管理
- ストレージの割当
- ディスクスケジューリング
- バッファリング・キャッシング・スプーリングの管理
- デバイスドライバインターフェース
- 特定のハードウェアのドライバ
キャッシュに関して
キャッシュはメインメモリより高速にデータを取れる記憶領域で、この領域へのデータ出し入れはハードウェア的に実装されている。内容は次に実行する予定の命令。CPUは命令を実行するたびにキャッシュから命令を読み出す。
保護・セキュリティ
ユーザーIDやグループIDを用いてあるユーザーが作ったプロセスが行える操作の権限管理をする。
ネットワーク
複数のコンピュータで協調して作業する場合の通信機能を担う。
特殊用途のシステム
組み込みシステムではRTOSを動作させる事が多い。組込みシステムでは応答時間が決まっており、その時間内で実行が終了しなければならない。
いかがでしたか?
もなにも無いと思いますが、1章後半のまとめでした。エンジニアならなんとなく知っていることの紹介ばかりなので、経験年数3年以上とかあれば、サラッと読み飛ばしていい気がしました。
コメント