マイクロカーネルとモノリシックカーネルのパフォーマンス


14

マイクロカーネルは、すべてのドライバーをユーザー空間プログラムとして実装し、カーネル自体にIPCなどのコア機能を実装します。ただし、モノリシックカーネルは、ドライバーをカーネルの一部として実装します(たとえば、カーネルモードで実行されます)。

マイクロカーネルはユーザー空間のドライバー間でメッセージの受け渡しを処理する必要があるため、モノリシックカーネルよりも遅いといういくつかの主張を読みました。これは本当ですか?

長い間、ほとんどのカーネルはモノリシックでした。これは、ハードウェアの速度が遅すぎてマイクロカーネルをすばやく実行できないためです。ただし、GNU / Hurd、Mac OS X、Windows NTラインなど、多くのマイクロカーネルとハイブリッドカーネルが存在するようになりました。

それで、マイクロカーネルのパフォーマンスについて何か変更はありましたか?このマイクロカーネルへの批判は今日でも有効ですか?

回答:


11

パフォーマンス関連の質問に対する答え(または少なくとも序文)は常にそうです。問題の領域を知り、比較ベンチマークを実行し、最適化の時期尚早思い出してください

まず、包括的なベンチマークトライアルでは、モノリシックカーネルと同等の方法で動作する現行世代のマイクロカーネルシステムを比較していません。そのため、これらのカーネルの特定の要素を比較するトライアルがある場合がありますが、それらはあなたの質問が描くことを目指している「全体像」を代表するものではありません。

そうは言っても、マイクロカーネル間でカーネルのパフォーマンスについては大きく異なる観測があります。たとえば、L4マイクロカーネルファミリのIPCパフォーマンスは、Machカーネルよりも1桁高いと言えます。しかし、この10年間のすべてのAppleデバイスはMachを実行しており、十分に高速に動作するようです。

話の教訓は、どのカーネルアーキテクチャを使用するかを決定する人は誰でも、最初に最終的な目標を決定する必要があるということです。マイクロカーネルシステムは、(適切に実装されていれば)もちろん、より安全で、保守しやすく、モジュール式です。ただし、適切に設計するのは難しく、モノリシックな実装よりもパフォーマンスのオーバーヘッドが高くなる場合があります。モノリシックカーネルは高速になりますが、セキュリティの実装が難しくなり、モジュール化が少なくなり、カスタマイズが簡単になります。

カーネルアーキテクチャは、最終目標に基づいている必要があります。

(そして、他のすべてが失敗した場合、両方の方法で試して、何が起こるかを見てください。)


「しかし、この10年間のすべてのAppleデバイスはMachを実行しており、十分に高速に動作するようです。」それは部分的に正しいだけです。「ダーウィンのカーネルはXNU、OSFのOSFMK 7.3(Open Software Foundation Mach Kernel)、BSDのさまざまな要素(プロセスモデル、ネットワークスタック、仮想ファイルシステムを含む)、およびオブジェクト指向を使用するハイブリッドカーネルです。 I / Oキットと呼ばれるデバイスドライバーAPI。ハイブリッドカーネル設計は、マイクロカーネルの柔軟性とモノリシックカーネルのパフォーマンスを提供します。」
Behrang Saeedzadeh

4

私は、ハイブリッドではなくWindows NTとAppleのXNUカーネルをモノリシックに呼び出すことを好みます。ハイブリッドの分類は、実際にはあまり意味がありません。実際、XNUの元のエンジニアの1人はそれをモノリシックと呼んでいます[1]。

パフォーマンスの問題について、私が見つけることができるモノリシックとマイクロの唯一の非常に詳細な比較は、「極端な高性能コンピューティングまたはマイクロケレネルが吸う理由」[2]と反論プレゼンテーション「マイクロカーネルが吸う?」です[3]。

モジュール性とカスタマイズ性は、モノリシックカーネルに固有の制限よりも設計上の問題です。たとえば、Linuxカーネルのサイズは、コンパイル時のオプションと特定のパッチの適用に応じて、数メガバイトから約1メガバイトの範囲です。Linuxの1500万行以上のコードの大部分は、ロード可能なカーネルモジュールです。ベースカーネルとは別にコンパイルされ、必要な場合にのみロードされます。これらのモジュールは、ドライバーとシステムコールを実装できます(基本システムコールをオーバーライドすることもできます)。

マイクロカーネルに明白な利点がある2つの分野は、低メモリ(<= 512k ram)または航空会社のフライトシステムや原子炉制御システムなどの「ハード」リアルタイムオペレーティングシステムです。

編集:カーネルアーキテクチャの長所と短所についてさらに詳しく説明すると、Gernot Heiserはプレゼンテーションの最後に自由に認めています。ただし、この余分なオーバーヘッドは信頼性の向上につながるため、マイクロカーネルがRTOSを支配します。

[1] Louis G. Gerbarg、「Mac OS Xの高度な同期:UnixをSMPおよびリアルタイムに拡張する」、BSDCon 2002 Conferenceの議事録、2ページ

[2] Chistoph Lameter、「極端な高性能コンピューティングまたはマイクロカーネルが吸い込まれる理由」、2007 Linux Symposium、Volume One

[3] Gernot Heiser、「Do Microkernels Suck?」、第9回Linux.conf.au、2008年1月


XNUとWindows NTを「ハイブリッド」カーネルとして分類していました
-mmk

ようこそ、@ DWに感謝します。投稿を少し整理し、引用を追加しました。
-Ironlenny

@mmk申し訳ありませんが、あなたはそれらをハイブリッドと呼んでいました。私は投稿をして読み間違えようと急いでいました。
-Ironlenny
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.