知識ベース

ハイブリッドカーネル

ハイブリッドカーネルは、コンピューターのオペレーティングシステムで使用されるマイクロカーネルとモノリシックカーネルアーキテクチャの側面と利点を組み合わせようとするオペレーティングシステムカーネルアーキテクチャです。

概要

従来のカーネルカテゴリは、モノリシックカーネルとマイクロカーネルです(ナノカーネルとエキソカーネルは、マイクロカーネルのより極端なバージョンと見なされます)。 「ハイブリッド」カテゴリは、ハイブリッドカーネルと通常のモノリシックカーネルの類似性により、議論の余地があります。この用語は、Linus Torvaldsによって単純なマーケティングとして却下されました。

ハイブリッドカーネルの背後にある考え方は、マイクロカーネルと同様のカーネル構造を持つことですが、モノリシックカーネルの方法でその構造を実装することです。マイクロカーネルとは対照的に、ハイブリッドカーネル内のすべての(またはほぼすべての)オペレーティングシステムサービスは、まだカーネルスペースにあります。マイクロカーネルのように、ユーザー空間にサービスを提供することの信頼性の利点はありません。ただし、通常のモノリシックカーネルと同様に、通常はマイクロカーネルに付属しているカーネルモードとユーザーモード間のメッセージパッシングとコンテキストスイッチングのパフォーマンスオーバーヘッドはありません。

NTカーネル

ハイブリッドカーネルの顕著な例の1つは、Windows NTファミリのすべてのオペレーティングシステム(Windows 10およびWindows Server 2019を含む)およびWindows Phone 8、Windows Phone 8.1、およびXbox Oneを駆動するMicrosoft Windows NTカーネルです。 NTベースのWindowsは、モノリシックカーネルではなくハイブリッドカーネル(またはマクロカーネル)として分類されます。これは、エミュレーションサブシステムがモノリシックカーネルのカーネルモードではなく、ユーザーモードサーバープロセスで実行されるためです。 Machの設計目標に似た設計目標(特に、一般的なカーネル設計からのOSパーソナリティの分離)。逆に、NTがマイクロカーネルシステムではない理由は、モノリシックデザインの場合のように、ほとんどのシステムコンポーネントがカーネルと同じアドレス空間で実行されるためです(従来のモノリシックデザインでは、 se、ただし、カーネルはNTのマイクロカーネルお​​よびカーネルモードサブシステムとほぼ同様の機能を実装します。

説明
この記事には、特定の聴衆だけが興味を持つかもしれない過度の量の複雑な詳細が含まれるかもしれません 。関連する情報をスピンオフまたは再配置し、Wikipediaの包含ポリシーに反する可能性のある過度の詳細を削除することで支援してください。 (2016年2月) (このテンプレートメッセージを削除する方法とタイミングをご覧ください)

Windows NTの設計には、典型的なマイクロカーネルシステムであるMachと同じ目的の多くが含まれます。最も重要なものの1つは、よく知られたインターフェイスを介して通信するモジュールの集合としての構造であり、最初のようなコア機能に限定された小さなマイクロカーネルですレベルの割り込み処理、スレッドスケジューリング、同期プリミティブ。これにより、直接プロシージャコールまたはプロセス間通信(IPC)のいずれかを使用してモジュール間で通信できるため、異なるアドレススペース(カーネルスペースまたはサーバープロセスなど)にあるモジュールの潜在的な場所を特定できます。 Machと共有する他の設計目標には、多様なアーキテクチャのサポート、複数のオペレーティングシステムパーソナリティをその上に実装できるように十分に抽象化されたカーネル、およびオブジェクト指向の組織のサポートが含まれます。

Windowsの主要なオペレーティングシステムパーソナリティは、常に存在するWindows APIです。 Windowsパーソナリティを実装するエミュレーションサブシステムは、クライアント/サーバーランタイムサブシステム(csrss.exe)と呼ばれます。 4.0より前のバージョンのNTでは、このサブシステムプロセスには、ウィンドウマネージャー、グラフィックスデバイスインターフェイス、およびグラフィックスデバイスドライバーも含まれていました。ただし、パフォーマンス上の理由から、バージョン4.0以降では、これらのモジュール(モノリシックシステム、特に内部グラフィックスサポートなしで設計されたシステムでもユーザーモードで実装されることが多い)はカーネルモードサブシステムとして実行されます。

NTで実行されるアプリケーションは、OSパーソナリティの1つ(通常はWindows API)に書き込まれ、ドキュメントが公開されていないネイティブNT APIには書き込まれません(デバイスドライバー開発で使用されるルーチンを除く)。 OSパーソナリティは、必要に応じてアプリケーションプロセスのアドレススペースにマップされるユーザーモードDLL(ダイナミックリンクライブラリを参照)のセットと、エミュレーションサブシステムサーバープロセス(前述)を介して実装されます。アプリケーションは、アドレススペースにマップされたOSパーソナリティDLLを呼び出すことによりシステムサービスにアクセスし、さらに、アドレススペースはプロセスランタイムにマップされたNTランタイムライブラリ(ntdll.dll)を呼び出します。 NTランタイムライブラリは、カーネルモードにトラップしてカーネルモードのエグゼクティブルーチンを呼び出すか、適切なユーザーモードサブシステムサーバープロセスに対してローカルプロシージャコール(LPC)を行うことにより、これらの要求を処理します。アプリケーションプロセス、カーネルモードサブシステムなど。

XNUカーネル

XNUは、Apple Inc.がmacOS、iOS、watchOS、およびtvOSオペレーティングシステムで使用するために取得および開発したカーネルであり、ダーウィンオペレーティングシステムの一部として無料のオープンソースソフトウェアとしてリリースされています。 XNUXはNot Unixの頭字語です。

NeXTがNeXTSTEPオペレーティングシステム用に開発したXNUは、カーネギーメロン大学で開発されたMachカーネルのバージョン2.5と4.3BSDのコンポーネント、およびDriver Kitと呼ばれるドライバー作成用のオブジェクト指向APIを組み合わせたハイブリッドカーネルでした。

AppleがNeXTを買収した後、MachコンポーネントはマイクロカーネルであるOSFMK 7.3にアップグレードされました。 Appleは、FreeBSDの一部を含むハイブリッドカーネルとして機能する、大幅に変更されたOSFMK 7.3を使用しています。 (OSFMK 7.3には、University of Utah Mach 4カーネルの適用可能なコードと、元のCarnegie Mellon University Mach 3.0カーネルから派生した多くのMach 3.0バリアントの適用可能なコードが含まれています。)BSDコンポーネントは、FreeBSDプロジェクトおよびドライバーキットは、I / Oキットと呼ばれるドライバーを作成するためのC ++ APIに置き換えられました。

説明

他のいくつかの最新のカーネルと同様に、XNUはハイブリッドであり、モノリシックとマイクロカーネルの両方の機能を含み、マイクロカーネルのメッセージパッシング機能など、モジュール化とOSの大部分を保護することでメリットを享受できるように、両方のテクノロジーを最大限に活用しようとしていますメモリ、および特定の重要なタスクのモノリシックカーネルの速度を保持します。

XNUは、iOS、IA-32、およびx86-64ベースのプロセッサの一部としてARMで実行されます。

その他

  • BeOS
    • 俳句
  • 音節
  • BSDベース
    • DragonFly BSD(ハイブリッドカーネルを使用する最初の非マッハBSD OS)
  • NetWare
  • Bell Labsのプラン9
    • インフェルノ
  • MikeOS
  • OS / 2
    • eComStation
    • OS / 4
  • ReactOS
  • OS / 5
  • Tru64 UNIX(以前のDigital UNIX)