モノリシックカーネル
読み:モノリシックカーネル
外語:monolithic kernel

 オペレーティングシステム(OS)の機能の全てがカーネル空間内にあり、カーネルプロセスないしカーネルスレッドとして実行されるもの。
目次

概要
 モノリシックとは、モノリスのような一枚岩という意味であり、OSとしての機能の全てをカーネルで実現する設計手法である。
 記憶装置の有効利用ができないなどの問題点があるが、逆に取り扱いが簡単で、一つで全ての処理が行なわれるため高速、といった利点もある。
 現在のトレンドはこのモノリシックカーネルと正反対の特徴を持つマイクロカーネルではあるが、しかしPC UNIXとして有名なLinuxFreeBSDは、今もモノリシックカーネルである。

特徴

構造
 初期には、本当にカーネルそのものが一つのプログラムだった頃もあった。
 現在のようにOSが多機能化すると、全機能を一つのプログラムにするのは不可能である。そこでユーザー空間とは別にカーネル空間が用意され、また機能はカーネルモジュール(Linuxの場合)などと呼ばれるモジュール単位に分割された。こういったモジュールは、必要に応じてロードされ、カーネル空間でカーネルスレッドとして実行される。

ライブラリ
 PC UNIXのカーネルは、その多くはCで作られている。
 通常、Cでプログラムを書いた時に使われる標準Cライブラリは、ユーザー空間で動作するものである。カーネル空間では、カーネル空間で動作する別のライブラリを使う。このため、Cの標準関数であっても、カーネルでは仕様が違っていることも多い。
 例えばCでよく使うmalloc関数なども、標準Cライブラリのmalloc(3)と違い、カーネル用のmalloc(9)は引数が二つ多いなど大きく仕様が変わっている。

利点
 全てのOSサービスがカーネル空間内にあるため、ハードウェアへのアクセスが効率的である。
 従って、デバイスドライバーなども、高効率になる。

欠点
 全てのOSサービスがカーネル空間内にありカーネルスレッドとして実行されるが、原則としてカーネルスレッドを強制終了する事はできない。
 強制終了ができるのは原則としてユーザープロセス(スレッド)だけで、もしカーネルプロセス(スレッド)に異常が発生すると通常はカーネルパニックとなり、結果としてシステム全体がクラッシュする。

再検索