初級ではOSを「店長(世話役)」と捉えました。中級では、カーネルの中身と、資源管理の仕組みを見ます。
中級の解説は準備中のため、中級の内容を表示しています。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
OSの中心=カーネル
OSの核がカーネル。アプリ(ユーザー空間)と、ハードを直接触る領域(カーネル空間)を分け、境界越しに安全にやり取りします。
- システムコール — アプリがカーネルに処理を頼む窓口
- プロセス/スレッド — 実行単位。プロセスは独立、スレッドは同一プロセス内で並行。プロセスには実行/待機/レディなどの状態があり、切り替えながら進む
- ドライバ — 各ハードを操作するためのカーネルの部品
アニメーション『プロセスとスレッド』を開く
登場人物メモ:
- ※1 ユーザー空間/カーネル空間 — 権限を分けた2つの領域
- ※2 スケジューラ — どのプロセスにCPUを、いつ渡すかを決める係
資源をどう配るか
- CPUスケジューリング — 多数のプロセスに、CPU時間を細切れ(タイムスライス/時分割)で順に割り当てる。これで見かけ上の同時実行=マルチタスクを実現する
- メモリ管理 — 仮想メモリで各プロセスに広い空間を見せ、足りなければスワップ
アニメーション『仮想メモリ(見せかけの広い空間)』を開く
- ファイルシステム — ストレージ上のデータを、名前とディレクトリで扱えるようにする
- 入出力 — ドライバ経由で周辺機器を操作する
守りと分離
- 保護 — 権限(ユーザー空間)を分け、アプリがカーネルやハードを直接壊せないようにする
- 隔離 — プロセスごとにメモリ空間を分け、干渉を防ぐ
- 並行制御 — 共有資源はロック等で守る(不備はデッドロックの原因)
⚠️ うまくいかないとき
- スワップ多発 — 仮想メモリの使いすぎで、ストレージ待ちが増え激遅に
- デッドロック — 複数プロセスが互いのロックを待って止まる
- メモリリーク — 解放し忘れでメモリを食い潰す
- ゾンビプロセス — 親が終了状態を回収せず、プロセス表にPID枠だけが残る(CPU・メモリはほぼ消費しない)
- 暴走プロセス — 無限ループや解放漏れで、CPU・メモリを占有し続ける
関連する知識
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. アプリがOSに「ファイルを開く」「画面に出す」などを頼むための窓口を何と呼ぶ?
問2. 実メモリより大きく見せかけ、足りない分をストレージで代用する仕組みは?
問3. CPUが1個でも複数のプロセスが同時に動いて見えるのは、CPU時間を細切れにして順に割り当てているからです。この方式の呼び方はどれ?
問4. 親プロセスが終了状態を回収せず、プロセス表にPIDの枠だけが残ってしまう状態はどれ?
問5. 複数のプロセスが互いに相手の握るロックの解放を待ち合い、どちらも進めなくなる状態はどれ?
問6. OSが「あるアプリの暴走が他のアプリやカーネルを直接壊さない」ようにするため、プロセスごとにメモリ空間を分ける仕組みを何と呼ぶ?
問7. プリンタやディスクなど、各ハードウェアを操作するためのカーネルの部品を、カタカナで何と呼ぶ?
問8. プログラムが確保したメモリを解放し忘れ、使用メモリが増え続けて食い潰していく不具合を、カタカナで何と呼ぶ?