ナノカーネルとエキソカーネルの違いは何ですか?

StackOverflow https://stackoverflow.com/questions/172388

  •  05-07-2019
  •  | 
  •  

質問

どちらも小さいと想定されていることは理解していますが、両者の主な違いは何ですか?

役に立ちましたか?

解決

Exokernel は、 MITのオペレーティングシステム(およびその亜種の一種)であり、比較的少ないハードウェアの抽象化を処理します。 exokernelでは、ハードウェアを制御する低レベルの責任(特にメモリ割り当て)が開発者の手に委ねられていることがよくあります。ほとんどの開発者はアプリケーションを作成しているだけなので、多くの開発者はおそらく、OSにそのような低レベルのタスクの責任を負わせることを好むでしょう。

エクソカーネルは、物理的なハードウェアリソースをプログラムに割り当てるだけです。これにより、プログラムは、リンクされているライブラリオペレーティングシステムを使用して、exokernelが提供していない抽象化の一部を提供できます。その後、開発者は抽象化モデルから選択するか、独自のモデルを展開できます。アプリケーションを考えると、これにはパフォーマンス上の大きなメリットがあります。何をしているのかわからない場合は、クラッシュしたときに爆発するプログラムを作成することもできます。

ほとんどのカーネルは、物理ハードウェアを抽象化して、何らかの種類の理論モデルにリソースを追加します。開発者はこのモデルとインターフェイスします。このモデルは、ハードウェアを内部で処理するより細かい点を処理します。

ナノカーネルという用語は、特定のカーネルの種類を表すために使用されます。接頭辞" pico-"または" nano-"、" micro-"通常、「サイズ」を表します。カーネルの.. より大きなカーネルはより多くの機能で構築され、より多くのハードウェア抽象化を処理します。ナノカーネルは比較的小さなカーネルであり、ハードウェアの抽象化を提供するが、システムサービスが不足している。現代のマイクロカーネルにもシステムサービスがないため、用語は類似しています。

カーネルの名前は通常、新しい種類のカーネルを生み出した特定の調査バッチに由来します。たとえば、カーネギーメロンで開発された「マッハ」と呼ばれるカーネルは、最新の「マイクロカーネル」の最初の例。

補足: exokernelの本当の利点は選択です。ほとんどの場合、多くの抽象化は壊滅的なバグが少ないことを意味します。一部のアプリケーションでは、異なる抽象化モデルを使用したい場合や、すべてを自分で処理したい場合があります。特定のプロジェクトのOS抽象化を破棄したい場合は、オペレーティングシステムを切り取り、ハードウェアをジョブにコミットする必要があります。 exokernelの場合、これは必要ありません。 「金属に」直接プログラミングできますが、好きなときにいつでも抽象モデルにリンクすることもできます。これは非常に強力な概念です。

サイドノート:ほとんどのアプリケーション開発者にとって、このような低レベルでのメモリの処理は不要です。通常、カーネルの上に構築されたオペレーティングシステムのいくつかの層があり、アプリケーションはOSの最高レベルで実行されます。 javascriptで記述する場合、オペレーティングシステムなどで実行されるアプリケーションに実装されたモデルとのインターフェイスなど、まだ上にあります。メモリのアドレス指定は無視すべきではありませんが、開発者とはまったく異なることを意味する場合がありますこのような高レベルの抽象化を書いている人。

他のヒント

モノリシックなマイクロカーネルとエキソカーネルを区別するのに非常に役立つリンクが見つかりました。リンクは--- http://www.scribd.com/doc/174682128 / Difference-between-monolithic-microkernel-and-exokernel

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top