2006年02月11日

マイクロカーネル 【micro-kernel】

OSの中核部分(カーネル)に最も汎用性の高く機能だけを持たせることでカーネルを小型化する手法。また、そのような手法によって設計されたカーネル。カーネギーメロン大学のグループが開発したMach(マーク)マイクロカーネルがもっとも有名な例。

 マイクロカーネルでは、ファイルシステムや仮想記憶処理などの機能は外部モジュールとして独立しており、カーネル自身は割り込み処理やプロセス間交信などの限られた機能しか持たない。カーネルに出された処理要求の多くは、カーネル内部からプロセス間交信によって外部モジュールを呼び出すことで行われることになる。こうした構造にすることで、カーネル内処理を並列実行することができ、効率を上げることができる。また、機能がモジュールの形で整理されているため、開発効率も上がり、移植や機能追加も容易になる。

 しかし、頻繁に発生するプロセス間通信のオーバーヘッドが大きく、また、CPUの動作モードをカーネルモードとユーザモードで頻繁に切り替える必要があるため、処理速度を向上させにくいという欠点がある。ただし、最新の研究開発の成果によれば、徹底的に機能を絞ってプロセス間通信の効率を向上させることにより、こうしたパフォーマンス上の欠点は克服できるという報告もある。

 マイクロカーネル登場以前の、カーネル自体に様々な機能を実装していく手法を「モノリシックカーネル」という。マイクロカーネルが登場した頃には、モノリシックカーネルは複雑すぎていずれ開発が困難になり、すべてのOSがマイクロカーネルを使うようになるという主張もあったが、LinuxのようなモノリシックカーネルOSの隆盛を見る限り、現在までのところそうした予想は現実とはなっていないようである。

 前述のMachはApple社のMac OS X(とその原型のNEXTSTEP)でコア部分に採用されているほか、当初のWindows NT(NTカーネル)もマイクロカーネル設計であった(現在は様々な機能が追加されてモノリシックカーネルに近くなっている)。
posted by シンビアン at 08:33| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。