モノシリックカーネルとマイクロカーネル

モノシリックカーネル
全OSは一つのカーネル内に存在し、カーネルスレッド上で実行される
システム構成要素間の依存関係が複雑
デバイスドライバ、スケジューラ、メモリ管理、ファイルシステム、ネットワークプロトコルスタックなどもカーネル空間におかける
Linux, FreeBSDはモノシリック
ソフトウェアが少なく高速、コードも少ない
システムコールの延長で動作する
コーディングは難しい 標準Cライブラリが使えず、GNUデバッガが必要

モノシリックカーネル
伝統的なカーネルからサーバ群に機能を移転するOS設計方針
サーバ群を可能な限りユーザ空間で動作させる
ハードウェアの抽象化とシステムコールの最小
IPC(プロセス間通信)、基本スケジューラ、基本メモリハンドラ、基本I/Oプリミティブなどはカーネル空間におかける
スケジューラ本体、メモリ管理、ファイルシステム、ネットワークスタックの大部分はユーザ空間で動作
macOS, QNX, GNU Hurdなど
マイクロカーネルは通常、アドレス空間定義部、プロセス間通信(IPC)、プロセス管理などを扱う
ハードウェア処理などの昨日はマイクロカーネルで扱わない
メモリ、ソフトウェアを多く使用し、プロセス管理が複雑
ロボット、医療用システムで使われる

ハイブリッドカーネル
macOS
通信プロトコルスタックやファイルシステムをカーネル空間で動作、一部のカーネルコードはユーザ空間で提供
サードパーティーのテクノロジーを素早く統合できる

unixはユーティリティプログラム群とカーネル
linuxカーネルは1300万行
macOSはDarwinをベースとしており、XNUと呼ばれるハイブリッドカーネルを採用
Windowsもクライアント・サーバ型階層型サブシステムモデルを採用しており、ハイブリッドカーネルと見なされている

なるほど、Linux, Windows, MacOSだと、カーネルの設計・仕組みが異なるってことか。