OSの役割
抽象化を提供する#
生のハードウェアは扱いにくい。 OS が扱いやすい抽象を用意する。
| 生のハードウェア | OS の抽象 |
|---|---|
| CPU の時分割 | プロセス |
| 物理メモリ | 仮想アドレス空間 |
| ディスクのブロック | ファイル |
| ネットワークカード | ソケット |
| 各社の周辺機器 | 統一されたデバイスインタフェース |
アプリケーションが機種ごとの差異を意識しなくてよいのは この抽象化のおかげ。
資源を管理する#
有限の資源を複数のプロセスに配分する。
| 資源 | 方針 |
|---|---|
| CPU 時間 | スケジューリング |
| メモリ | ページ置き換え |
| ディスク帯域 | I/O スケジューラ |
| ネットワーク | 輻輳制御、QoS |
保護する#
- プロセス間でメモリを覗けない
- ファイルの権限
- 特権命令の制限
スケジューリング#
どのプロセスをいつ CPU に載せるか。 目的が複数あり、同時には満たせない。
| 目的 | 適する方式 |
|---|---|
| スループット | バッチ処理、切り替えを減らす |
| 応答性 | タイムスライスを短く |
| 公平性 | ラウンドロビン、CFS |
| 期限の保証 | リアルタイムスケジューラ |
Linux の CFS は「各プロセスが CPU を等しく使う」理想を 仮想実行時間で近似する方式。 Linux 6.6 以降は EEVDF に置き換えられた。
カーネルの構成#
| 方式 | 内容 |
|---|---|
| モノリシック | すべてカーネル空間。速いが大きい。Linux |
| マイクロカーネル | 最小限だけカーネル。堅牢だが通信コスト。QNX、seL4 |
| ハイブリッド | 中間。Windows NT、XNU (macOS) |
参考文献#
- Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces. Arpaci-Dusseau Books, 2018.(全文公開) https://pages.cs.wisc.edu/~remzi/OSTEP/
- Andrew S. Tanenbaum, Herbert Bos. Modern Operating Systems, 4th ed. Pearson, 2014.