ハイブリッドカーネル
ハイブリッドカーネル(英語: hybrid kernel)とは、オペレーティングシステムで使用されているモノリシックカーネルとマイクロカーネルのアーキテクチャの特徴と利点を組み合わせようとするオペレーティングシステムのカーネルアーキテクチャである[1][2][信頼性要検証]。 概要伝統的にカーネルはモノリシックカーネルとマイクロカーネルにカテゴリ分けされてきた[注釈 1]。「ハイブリッド」というカテゴリは、ハイブリッドカーネルと通常のモノリシックカーネルの類似性から議論を呼んでいる。この用語はリーナス・トーバルズによって単なるマーケティング用語として却下された[3]。 ハイブリッドカーネルの背後にある考えは、マイクロカーネルに似たカーネル構造を持ちながら、その構造をモノリシックカーネルの方法で実装することである。マイクロカーネルとは対照的に、ハイブリッドカーネルの(殆ど)全てのオペレーティングシステムのサービスはカーネル空間に置かれている。マイクロカーネルのようにユーザー空間にサービスを置くことによる信頼性の利点はない。しかし、通常のモノリシックカーネルと同様に、マイクロカーネルで通常発生するカーネルとユーザーモードの間のメッセージの送受信やコンテキストスイッチによる性能上のオーバーヘッドはない。 例NTカーネル→詳細は「Windows NT系 § NTカーネル」を参照
ハイブリッドカーネルの代表的な例としては、Windows 11とWindows Server 2022を含み、Windows Phone 8、Windows Phone 8.1、Xbox One、Xbox Series X/Sでも採用されている、Windows NT系の全てのオペレーティングシステムで採用されているMicrosoft Windows NTカーネルがある。 Windows NTはハイブリッドカーネルをベースとした最初のWindowsオペレーティングシステムであった[要出典].。このハイブリッドカーネルはカーネギーメロン大学のリチャード・ラシッドが開発したMachマイクロカーネルの影響を受けた修正されたマイクロカーネルとして設計されたが、純粋なマイクロカーネルの全ての基準は満たしていなかった。Windows NT系はエミュレーションサブシステムがモノリシックカーネルのようにカーネルモードで実行されるのではなくユーザーモードのサーバプロセスで実行され、更に多くの設計目標がMachの設計目標多数あることから[注釈 2]、モノリシックカーネルではなくハイブリッドカーネル(またはマイクロカーネル[4])に分類される。逆に、Windows NT系がマイクロカーネルシステムでない理由は、モノリシックカーネルの設計の場合と同様に、システムコンポーネントの殆どがカーネルと同じアドレス空間で実行されるためである[注釈 3]。 Windowsの主なオペレーティングシステムのパーソナリティは常に存在するWindows APIである。このパーソナリティを実装するエミュレーションサブシステムはクライアント/サーバー ランタイム サブシステム( Windows NT系で実行されるアプリケーションはOSのパーソナリティの1つ[注釈 5]に記述されており、ドキュメントが公開されていないOSのネイティブなAPIには記述されていない[注釈 6]。OSのパーソナリティはエミュレーションサブシステムサーバプロセスと共に、必要に応じてアプリケーションプロセスのアドレス空間にマッピングされる一連のユーザーモードDLLを介して実装される。アプリケーションは同じアドレス空間にマッピングされたOSのパーソナリティのDLLを呼び出すことによってシステムサービスに接続し、同じくアプリケーションプロセスのアドレス空間にマッピングされたNTランタイムライブラリ( XNUカーネル→詳細は「XNU」を参照
XNUとは、AppleがmacOS、iOS、watchOS、tvOSで使用するために取得し開発し、Darwinの一部としてFLOSSとして公開したカーネルである。XNUはX 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のより大きな部分でメモリ保護の利点を享受できるようにしながら[要出典]、ある程度の重要なタスクに対してに対してモノリシックカーネルの速度を維持することを目指している。 その他脚注注釈
出典
参考文献
関連項目 |