GNU/Linux >> Linux の 問題 >  >> Linux

Linux カーネルはマイクロカーネル アーキテクチャと比べてどうですか?

マイクロカーネルは、モノリシック カーネルよりも、最も内側の最も信頼できるモードで実行する必要があるコードが少なくて済みます。これには、次のような多くの側面があります。

  • マイクロカーネルを使用すると、基本的でない機能 (接続されていない、または使用されていないハードウェアのドライバーなど) を自由にロードおよびアンロードできます。これは、モジュールを介して Linux でほとんど実現可能です。
  • マイクロカーネルはより堅牢です。カーネル以外のコンポーネントがクラッシュしても、システム全体が影響を受けることはありません。バグのあるファイルシステムまたはデバイス ドライバーは、Linux システムをクラッシュさせる可能性があります。 Linux には、コーディングの実践とテスト以外に、これらの問題を軽減する方法がありません。
  • マイクロカーネルの信頼できるコンピューティング ベースは小規模です。そのため、悪意のあるデバイス ドライバーやファイル システムでさえ、システム全体を制御することはできません (たとえば、最新の USB ガジェットの疑わしい起源のドライバーは、ハード ディスクを読み取ることができません)。
  • 前のポイントの結果として、通常のユーザーはモノリシック カーネルのカーネル コンポーネントとなる独自のコンポーネントをロードできます。

Unix GUI は、ユーザーランド コード (ビデオ デバイス ドライバー (の一部) を除く) である X ウィンドウを介して提供されます。最新のユニックスの多くは、一般ユーザーが FUSE を介してファイルシステム ドライバーをロードできるようにします。 Linux ネットワーク パケット フィルタリングの一部は、ユーザーランドで実行できます。ただし、デバイス ドライバー、スケジューラ、メモリ マネージャー、およびほとんどのネットワーク プロトコルは、依然としてカーネルのみです。

Linux とマイクロカーネルに関する古典的な (古いものである場合) の読み物は、Tanenbaum-Torvalds の討論です。 20 年後、Linux は非常にゆっくりとマイクロカーネル構造に向かって進んでいると言えます (ロード可能なモジュールは初期に登場し、FUSE はより最近のものです) が、まだまだ道のりは長いです.

もう 1 つの変更点は、デスクトップおよびハイエンドの組み込みコンピューターでの仮想化の関連性が高まったことです。目的によっては、カーネルとユーザーランドの間ではなく、ハイパーバイザーとゲスト OS の間に関連する区別があります。


マイクロカーネルは、ユーザー空間ではなく、システムがカーネル モードにある時間を可能な限り最小限に制限します。

カーネル モードでクラッシュが発生すると、カーネル全体がダウンします。つまり、システム全体がダウンします。ユーザーモードでクラッシュが発生した場合、そのプロセスだけがダウンします。 Linux はこの点で堅牢ですが、意図的または偶然に、カーネル サブシステムが他のカーネル サブシステムのメモリを上書きする可能性があります。

マイクロカーネルの概念は、ネットワークやデバイス ドライバーなど、従来はカーネル モードであった多くのものをユーザー空間に配置します。マイクロカーネルは実際には多くのことを担当していないため、よりシンプルで信頼性が高いことも意味します. IP プロトコルがシンプルで愚かであることによって、複雑さをエッジに追いやり、コアを無駄のないものにすることで、実際に堅牢なネットワークにつながる方法を考えてみてください。


この問題の反対側を読む必要があります:

エクストリーム ハイ パフォーマンス コンピューティングまたはマイクロカーネルがダメな理由

ファイル システムはカーネルに属します


Linux
  1. Linuxデスクトップでカーネルをアップグレードする方法

  2. Linuxでカーネルバージョンを確認する方法

  3. Linux カーネルの copy_from_user は内部でどのように機能しますか?

  1. Linux –カーネルモジュールを適切にリロードする方法は?

  2. Linux – Linuxカーネルはマイクロカーネルアーキテクチャとどのように比較されますか?

  3. Linux カーネルモジュールのコーディング方法は?

  1. Linux カーネルは __init 呼び出しの順序をどのように決定しますか?

  2. Mac のコマンドラインは Linux と比べてどうですか?

  3. Linux カーネルはどうしてこんなに小さいのでしょうか?