OSの役割

OSの役割

執筆済 コンピュータ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.
ノート一覧を閉じる