マイクロカーネル 【microkernel】
概要
マイクロカーネル(microkernel)とは、オペレーティングシステム(OS)の中核部分であるカーネル(kernel)の設計様式の一つで、カーネル自体には最低限の機能しか実装せず、OSの機能の多くをモジュールとして独立させたもの。マイクロカーネルではメモリ上のカーネル空間にメモリ管理やプロセスの実行制御、プロセス間通信(IPC)など必要最低限度の機能しか用意せず、ファイルシステムやデバイスドライバ、ネットワーク通信といったOSの基本的な機能の多くを外部モジュール(部品)としてユーザー空間に展開する。
外部に機能を提供するモジュールはサーバ(server)とも呼ばれ、OS上で実行されるソフトウェアはカーネルではなくサーバに対して必要な機能の呼び出し要求を行う。
機能の大半が部品化され、カーネルや他のモジュールから独立しているため、機能追加や部分的な修正、入れ替えなどが行いやすく、一部の機能に不具合が生じてもシステム全体が巻き込まれにくい。ただし、プログラム間で頻繁にIPCによる通信が発生し、CPUの動作モードの切り替え(カーネルモードとユーザモード)も頻発するためオーバーヘッドが大きく、性能上の制約となる。
これに対し、OSのすべての機能をカーネル内に取り込み、一体的に運用するカーネル設計を「モノリシックカーネル」(monolithic kernel)という。マイクロカーネルが考案される以前のカーネルはすべてモノリシック型であり、現在でもLinuxなど多くのOSがモノリシックカーネルとして設計されている。
近年のWindows(NTカーネル)やmacOS(Mac OS X)のように基本設計としてマイクロカーネル型を採用したOSでも、性能上の問題などから一部の機能をカーネル内に取り込んで高速に実行できるようにするといったモノリシック的な構造が組み込まれる場合があり、「ハイブリッドカーネル」(hybrid kernel)と呼ばれる。
(2018.11.10更新)