モノリシックカーネル
読み:モノリシックカーネル
外語:monolithic kernel
オペレーティングシステム(OS)の機能の全てがカーネル空間内にあり、カーネルプロセスないしカーネルスレッドとして実行されるもの。
概要
モノリシックとは、モノリスのような一枚岩という意味であり、OSとしての機能の全てをカーネルで実現する設計手法である。
記憶装置の有効利用ができないなどの問題点があるが、逆に取り扱いが簡単で、一つで全ての処理が行なわれるため高速、といった利点もある。
現在のトレンドはこのモノリシックカーネルと正反対の特徴を持つマイクロカーネルではあるが、しかしPC UNIXとして有名なLinuxやFreeBSDは、今もモノリシックカーネルである。
特徴
構造
初期には、本当にカーネルそのものが一つのプログラムだった頃もあった。
現在のようにOSが多機能化すると、全機能を一つのプログラムにするのは不可能である。そこでユーザー空間とは別にカーネル空間が用意され、また機能はカーネルモジュール(Linuxの場合)などと呼ばれるモジュール単位に分割された。こういったモジュールは、必要に応じてロードされ、カーネル空間でカーネルスレッドとして実行される。
ライブラリ
PC UNIXのカーネルは、その多くはCで作られている。
通常、Cでプログラムを書いた時に使われる標準Cライブラリは、ユーザー空間で動作するものである。カーネル空間では、カーネル空間で動作する別のライブラリを使う。このため、Cの標準関数であっても、カーネルでは仕様が違っていることも多い。
例えばCでよく使うmalloc関数なども、標準Cライブラリのmalloc(3)と違い、カーネル用のmalloc(9)は引数が二つ多いなど大きく仕様が変わっている。
利点
全てのOSサービスがカーネル空間内にあるため、ハードウェアへのアクセスが効率的である。
従って、デバイスドライバーなども、高効率になる。
欠点
全てのOSサービスがカーネル空間内にありカーネルスレッドとして実行されるが、原則としてカーネルスレッドを強制終了する事はできない。
強制終了ができるのは原則としてユーザープロセス(スレッド)だけで、もしカーネルプロセス(スレッド)に異常が発生すると通常はカーネルパニックとなり、結果としてシステム全体がクラッシュする。
再検索