モノリシックカーネル

モノリシックカーネルとは



モノリシック[カーネル]]は、オペレーティングシステム]の中核部分である[カーネルの設計思想の一つです。具体的には、入出力機能、ネットワーク機能、デバイスサポートなど、OSの基本的な機能をすべてカーネルと同一のメモリ空間に実装し、実行する方式を指します。これは「一枚岩」を意味するモノリス]という言葉に由来し、[[カーネルが一体化している様子を表しています。

マイクロカーネルとの比較



モノリシックカーネルとは対照的に、マイクロカーネルはOSの機能の一部をカーネル空間から切り離し、外部モジュールとして実装する方式です。モノリシックカーネルは古くから存在する設計ですが、マイクロカーネルの登場によって、その対概念として明確に定義されるようになりました。

実装方式とその議論



モノリシックカーネルは、すべての機能が単一のメモリ空間で実行されるため、マイクロカーネルと比較してコンテキストスイッチプロセス間通信によるオーバーヘッドが少ないという利点があります。これは、プロセッサの処理速度が遅かった時代には特に重要な要素でした。実際、1980年代の商用UNIXの多くはモノリシックカーネルを採用していました。

しかし、プロセッサの性能向上やマイクロカーネル側の実装技術の進歩により、モノリシックカーネルのパフォーマンスにおける優位性は小さくなりました。現在では、純粋なモノリシックカーネルを採用する利点は少ないという意見もあります。

それでも、モノリシックカーネルは、同等の機能を実装した場合にカーネルのメモリ使用量を小さく抑えやすい、また、開発時に考慮する点が少なくなるというメリットがあります。

一方、モノリシックカーネルは巨大化しやすく、機能の動的な切り替えや更新が難しいという欠点があります。研究開発の世界では、1990年代にマイクロカーネルが主流になりましたが、現在では、必要な機能を適切な性能で提供できれば問題ないという考え方が主流です。

モノリシックカーネルの採用例



現在でも、SolarisHP-UXAIXなどのUNIX系OSや、Linuxもモノリシックカーネルをベースとしています。ただし、Linuxではカーネルモジュールを動的に読み込むことで、柔軟性を高めています。

一方、Windows NTはマイクロカーネルを目指して開発されましたが、パフォーマンス上の理由から、多くの機能をカーネル空間に統合したハイブリッドカーネルに近いものになっています。

有名な論争



モノリシックカーネルとマイクロカーネルを巡っては、Linuxの作者であるリーナス・トーバルズMINIXの作者であるアンドリュー・タネンバウムの間で、1992年に有名な論争が繰り広げられました。

主な採用例



Linuxカーネル
Classic Mac OS (8.6まで)
MS-DOS
OpenVMS
UNIXカーネル
Windows 9x系 (Windows 95 / 98 / Me)
* IBM i

まとめ



モノリシックカーネルは、OSの主要機能を単一の空間にまとめることで、効率的な実行を目指した設計です。マイクロカーネルとの比較や歴史的な変遷を理解することで、OSの構造に対する理解が深まります。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。