ハイブリッドカーネル

From Wikipedia, the free encyclopedia

モノリシックカーネル、マイクロカーネル、ハイブリッドカーネルベースのオペレーティングシステムの構造

ハイブリッドカーネル英語: hybrid kernel)とは、オペレーティングシステムで使用されているモノリシックカーネルマイクロカーネルのアーキテクチャの特徴と利点を組み合わせようとするオペレーティングシステムのカーネルアーキテクチャである[1][2][信頼性要検証]

伝統的にカーネルはモノリシックカーネルマイクロカーネルにカテゴリ分けされてきた[注釈 1]。「ハイブリッド」というカテゴリは、ハイブリッドカーネルと通常のモノリシックカーネルの類似性から議論を呼んでいる。この用語はリーナス・トーバルズによって単なるマーケティング用語として却下された[3]

ハイブリッドカーネルの背後にある考えは、マイクロカーネルに似たカーネル構造を持ちながら、その構造をモノリシックカーネルの方法で実装することである。マイクロカーネルとは対照的に、ハイブリッドカーネルの(殆ど)全てのオペレーティングシステムのサービスはカーネル空間英語版に置かれている。マイクロカーネルのようにユーザー空間英語版にサービスを置くことによる信頼性の利点はない。しかし、通常のモノリシックカーネルと同様に、マイクロカーネルで通常発生するカーネルとユーザーモードの間のメッセージの送受信やコンテキストスイッチによる性能上のオーバーヘッドはない。

NTカーネル

Windows NT系のアーキテクチャには2つのレイヤー(ユーザーモード英語版カーネルモード)があり、両方のレイヤー内に様々なモジュールが存在する。

ハイブリッドカーネルの代表的な例としては、Windows 11Windows Server 2022を含み、Windows Phone 8Windows Phone 8.1Xbox OneXbox Series X/Sでも採用されている、Windows NT系の全てのオペレーティングシステムで採用されているMicrosoft Windows NTカーネルがある。

Windows NTはハイブリッドカーネルをベースとした最初のWindowsオペレーティングシステムであった[要出典].。このハイブリッドカーネルはカーネギーメロン大学のリチャード・ラシッドが開発したMachマイクロカーネルの影響を受けた修正されたマイクロカーネルとして設計されたが、純粋なマイクロカーネルの全ての基準は満たしていなかった。Windows NT系はエミュレーションサブシステムがモノリシックカーネルのようにカーネルモードで実行されるのではなくユーザーモードのサーバプロセスで実行され、更に多くの設計目標がMachの設計目標多数あることから[注釈 2]、モノリシックカーネルではなくハイブリッドカーネル(またはマイクロカーネル[4])に分類される。逆に、Windows NT系がマイクロカーネルシステムでない理由は、モノリシックカーネルの設計の場合と同様に、システムコンポーネントの殆どがカーネルと同じアドレス空間で実行されるためである[注釈 3]

Windowsの主なオペレーティングシステムのパーソナリティは常に存在するWindows APIである。このパーソナリティを実装するエミュレーションサブシステムはクライアント/サーバー ランタイム サブシステムcsrss.exe)と呼ばれている。Windows NT 4.0より以前まではこのサブシステムにはウィンドウマネージャ、グラフィックデバイスインターフェース、グラフィックデバイスドライバも含まれていた。ただし、性能上の理由からWindows NT 4.0以降ではこれらのモジュールはカーネルモード実行される[注釈 4][4]

Windows NT系で実行されるアプリケーションはOSのパーソナリティの1つ[注釈 5]に記述されており、ドキュメントが公開されていないOSのネイティブなAPIには記述されていない[注釈 6]。OSのパーソナリティはエミュレーションサブシステムサーバプロセスと共に、必要に応じてアプリケーションプロセスのアドレス空間にマッピングされる一連のユーザーモードDLLを介して実装される。アプリケーションは同じアドレス空間にマッピングされたOSのパーソナリティのDLLを呼び出すことによってシステムサービスに接続し、同じくアプリケーションプロセスのアドレス空間にマッピングされたNTランタイムライブラリ(ntdll.dll)を呼び出す。NTランタイムライブラリはカーネルモードにトラッピングしてカーネルモードのExecutiveルーチンを呼び出すか、適切なユーザーモードサブシステムサーバプロセスにローカルプロシージャコール英語版を行うことによってこれらの要求を処理し、NT APIを使用してアプリケーションプロセス、カーネルモードサブシステム、及び相互に通信する[5]

XNUカーネル

XNUカーネル

XNUとは、ApplemacOSiOSwatchOStvOSで使用するために取得し開発し、Darwinの一部としてFOSSとして公開したカーネルである。XNUX is Not Unix頭字語である[6]

XNUは元々はNeXTによってNeXTSTEP用に開発され、Machカーネルのバージョン2.5に4.3BSDのコンポーネントとDriver Kitと呼ばれるドライバ開発用オブジェクト指向APIを組み合わせたハイブリッドカーネルであった。

AppleがNeXTを買収した後、MachコンポーネントはマイクロカーネルのOSFMK 7.3にアップグレードされた[7][8]。AppleはFreeBSDの一部が組み込まれたハイブリッドカーネルとして動作する大幅に変更されたOSFMK 7.3を使用している[注釈 7][7]。BSDコンポーネントはFreeBSDプロジェクトに由来するコードによってアップグレードされ、Driver KitはI/O Kitと呼ばれるドライバ開発用のC++ APIに置き換えられた[要出典]

説明

他の現代的なカーネルと同様に、XNUはハイブリッドカーネルであり、モノリシックカーネルマイクロカーネルの両方の機能を備えており、マイクロカーネルのメッセージパッシング機能などの両方の技術を最大限に活用して、モジュール性を高めて[要出典]OSのより大きな部分でメモリ保護の利点を享受できるようにしながら[要出典]、ある程度の重要なタスクに対してに対してモノリシックカーネルの速度を維持することを目指している。

その他

脚注

参考文献

関連項目

Related Articles

Wikiwand AI