
モノリシックカーネルは、オペレーティングシステム全体がカーネル空間で実行されるオペレーティングシステムアーキテクチャです。モノリシックモデルは、マイクロカーネル[ 1 ] [ 2 ]などの他のアーキテクチャとは異なり、コンピュータハードウェア上の高レベルの仮想インターフェースを単独で定義します。一連のプリミティブまたはシステムコールによって、プロセス管理、並行処理、メモリ管理などのすべてのオペレーティングシステムサービスが実装されます。
デバイスドライバは、ロード可能なカーネルモジュールとしてカーネルに追加できます。
OS-9のようなモジュール型オペレーティングシステムや、 OpenVMS、Linux、FreeBSD、NetBSD、Solaris、AIXといった最新のモノリシックカーネル型オペレーティングシステムのほとんどは、実行時に実行可能なカーネルモジュールを動的にロード(およびアンロード)することができます。
このオペレーティングシステムのモジュール性は、バイナリ(イメージ)レベルのものであり、アーキテクチャレベルのものではありません。モジュール型のモノリシックオペレーティングシステムは、マイクロカーネルとサーバー(モジュールやデーモンと混同しないように)を使用するサーバークライアントオペレーティングシステム(およびハイブリッドカーネルとして販売されることもあるその派生製品)に固有のアーキテクチャレベルのモジュール性とは混同してはなりません。
実際には、動的にモジュールをロードすることは、別のオペレーティングシステムイメージで再起動するよりも、実行時にオペレーティングシステムイメージを処理するより柔軟な方法です。モジュールを使用すると、必要に応じてオペレーティングシステムの機能を簡単に拡張できます。[ 3 ]動的にロード可能なモジュールは、モジュールをオペレーティングシステムイメージに組み込む場合と比較して、わずかなオーバーヘッドが発生します。
しかし、場合によっては、モジュールを動的に(必要に応じて)ロードすることで、カーネル空間で実行されるコード量を最小限に抑えることができます。例えば、組み込み機器やハードウェアリソースが限られている機器のオペレーティングシステムのフットプリントを最小限に抑える場合などです。つまり、ロードされていないモジュールは、貴重なランダムアクセスメモリに格納する必要がありません。