マイクロカーネルアーキテクチャの利点の1つは、システム全体を再起動することなく、ネットワーキングやファイルシステムなどの基本的なサービスを停止/開始できることです。しかし、現在Linuxカーネル(常にそうでしたか?)が同じ効果を得るためにモジュールを使用するオプションを提供している場合、マイクロカーネルの(残りの)利点は何ですか?
答え1
マイクロカーネル最も内部的で最も信頼性の高いモードで実行するには、以下のコードが必要です。フルカーネル。これには次のようないくつかの側面があります。
- マイクロカーネルを使用すると、不要な機能(接続されていない、または使用されていないハードウェア用のドライバなど)を自由にロードおよびアンロードできます。これは主にLinuxのモジュールを介して達成できます。
- マイクロカーネルはより強力です。カーネル以外のコンポーネントがクラッシュしても、システム全体には影響しません。欠陥のあるファイルシステムまたはデバイスドライバがLinuxシステムをクラッシュさせる可能性があります。コーディングの練習とテストに加えて、これらの問題を軽減するためにLinuxができることはありません。
- マイクロカーネルは小さいです。信頼できるコンピューティング財団。したがって、悪意のあるデバイスドライバやファイルシステムであってもシステム全体を制御することはできません。たとえば、最新のUSBガジェットのソースが疑わしいドライバは、ハードドライブを読み取ることができません。
- 前のポイントの結果は、一般ユーザーがモノリシックカーネル内のカーネルコンポーネントになる独自のコンポーネントをロードできることです。
Unix GUIは、ユーザー空間コードであるXウィンドウを介して提供されます(一部のビデオデバイスドライバを除く)。多くの最新のユニスは、通常のユーザーが以下を介してファイルシステムドライバをロードできるようにします。ヒューズ。一部のLinuxネットワークパケットフィルタリングは、ユーザーモードで実行できます。ただし、デバイスドライバ、スケジューラ、メモリマネージャ、およびほとんどのネットワークプロトコルはまだカーネルに制限されています。
Linuxとマイクロカーネルの古典的な(古い場合)読み取りは次のとおりです。タネンバウム - トバルズ議論。 20年が過ぎた今、Linuxはマイクロカーネル構造に向かって非常にゆっくり動いていると言えます(ロード可能なモジュールは非常に早く現れ、FUSEは後で現れました)。しかし、まだ行く道があります。
また変わった点は相関関係の増加である。仮想化デスクトップおよび高度な組み込みコンピュータ:特定の目的に応じて、関連する区別はカーネルとユーザーモードの違いではなく、カーネルモードとユーザーモードの違いです。管理プログラムとゲストオペレーティングシステム。
答え2
マイクロカーネルは、システムがカーネルモード(ユーザースペースとは反対)にある時間を可能な最小値に制限します。
カーネルモードでクラッシュが発生すると、カーネル全体がクラッシュし、これはシステム全体がクラッシュすることを意味します。ユーザーモードで競合が発生すると、プロセスは停止します。 Linuxはこの点で強力ですが、すべてのカーネルサブシステムが意図的にまたは意図しないように他のカーネルサブシステムのメモリに書き込むことは依然として可能です。
マイクロカーネルの概念は、伝統的に多くのカーネルモードエントリ(ネットワーキングやデバイスドライバなど)をユーザースペースに配置します。マイクロカーネルは、実際には多くのことを担当していないため、より簡単で安定性があることを意味します。コアを簡潔で意味のあるものに保ちながら、シンプルで愚かな方法で複雑さをエッジまで押し込むことで、IPプロトコルが実際にどのように強力なネットワークを実装するかを考えてみましょう。
答え3
答え4
x86アーキテクチャを見てください。モノリシックコアはリング0と3。本当に無駄です。ただし、コンテキストの切り替えが少ないため、より高速になります。