ハイブリッドカーネル

ハイブリッドカーネルとは



ハイブリッドカーネルは、オペレーティングシステム(OS)のカーネル設計におけるアプローチの一つで、モノリシックカーネルとマイクロカーネルの特性を組み合わせたものです。伝統的に、カーネルはモノリシックカーネルとマイクロカーネルの二つに分類されてきましたが、ハイブリッドカーネルはこれらの中間に位置づけられます。ただし、その性質から、モノリシックカーネルとの類似性も指摘されており、議論の対象となることもあります。

ハイブリッドカーネルの仕組み



ハイブリッドカーネルは、マイクロカーネルのような構造を持ちながら、その実装はモノリシックカーネルに近い形で行われます。マイクロカーネルでは、OSの主要なサービスをユーザー空間に配置することで、システムの信頼性を高めることを目指しますが、ハイブリッドカーネルでは、ほとんどのサービスをカーネル空間に配置します。これにより、マイクロカーネルが抱えるユーザー空間とカーネル空間間でのメッセージ送受信やコンテキストスイッチによるパフォーマンスのオーバーヘッドを回避することができます。モノリシックカーネルと同様に、ハイブリッドカーネルカーネル空間内で多くの処理を行うため、高速な実行が可能です。

代表的なハイブリッドカーネルの例



Windows NTカーネル



マイクロソフトのWindows NTカーネルは、ハイブリッドカーネルの代表的な例です。Windows 11、Windows Server 2022、そしてXbox OneXbox Series X/S|Xbox Series X_Sなど、Windows NT系のOSで採用されています。このカーネルは、カーネギーメロン大学で開発されたMachマイクロカーネルの影響を受けていますが、純粋なマイクロカーネルの基準を全て満たしているわけではありません。Windows NTカーネルは、エミュレーションサブシステムをユーザーモードで実行する点でマイクロカーネルに似ていますが、システムコンポーネントの多くはカーネルと同じアドレス空間で実行されるため、モノリシックカーネルに近い側面も持ち合わせています。

Windows NT系では、Windows APIを実装するエミュレーションサブシステムが「クライアント/サーバー ランタイム サブシステム(csrss.exe)」として存在します。初期のバージョンでは、このサブシステムにウィンドウマネージャやグラフィックデバイスインターフェースなども含まれていましたが、パフォーマンス向上のため、Windows NT 4.0以降ではカーネルモードで実行されるようになりました。

Windows NT系で動作するアプリケーションは、OSのパーソナリティ(特定のOS環境をエミュレートする機能)を介してシステムサービスを利用します。アプリケーションは、自身のプロセスアドレス空間にマッピングされたDLLを呼び出すことで、システムサービスにアクセスします。これらのDLLは、NTランタイムライブラリ(ntdll.dll)を介してカーネルモードのルーチンを呼び出すか、適切なユーザーモードのサブシステムサーバープロセスにローカルプロシージャコールを行います。

XNUカーネル



Appleが開発するXNUカーネルは、macOS、iOS、watchOS、tvOSなどのOSで使用されており、オープンソースプロジェクト「Darwin」の一部として公開されています。XNUは、元々NeXTによって開発されたもので、MachカーネルにBSDのコンポーネントとドライバ開発用API(Driver Kit)を組み合わせたものです。AppleによるNeXT買収後、MachコンポーネントはOSFMK 7.3にアップグレードされ、BSDコンポーネントはFreeBSD由来のコードで置き換えられました。Driver Kitは、I/O Kitと呼ばれるC++ APIに置き換えられています。

XNUは、他の現代的なカーネルと同様に、ハイブリッドカーネルとしてモノリシックカーネルとマイクロカーネルの両方の特徴を備えています。マイクロカーネルのメッセージパッシング機能を利用してモジュール性を高め、メモリ保護の利点を享受しながら、重要なタスクに対してはモノリシックカーネルの速度を維持することを目指しています。

その他のハイブリッドカーネルの例



他にも、BeOS、Haiku、SyllableDragonFly BSDNetWarePlan 9 from Bell Labs、Inferno、OS/2、eComStation、ArcaOS、OS/4、ReactOSなどがハイブリッドカーネルの例として挙げられます。

まとめ



ハイブリッドカーネルは、モノリシックカーネルとマイクロカーネルの折衷案として生まれました。両方の長所を活かし、短所を補完する設計が特徴であり、多くのOSで採用されています。その仕組みや代表的な例を理解することで、OSの構造に関する理解を深めることができます。

もう一度検索

【記事の利用について】

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

【リンクついて】

リンクフリーです。