どちらも小さいはずですが、両者の主な違いは何ですか?
2 に答える
ExokernelはMIT (およびその亜種のクラス) のオペレーティング システムであり、ハードウェアの抽象化を比較的ほとんど処理しません。エキソカーネルでは、ハードウェアの制御 (特にメモリ割り当て)の低レベルの責任は、多くの場合、開発者の手に委ねられています。ほとんどの開発者はアプリケーションを作成しているだけなので、多くの開発者はおそらく OS にそのような低レベルのタスクの責任を負わせることを好むでしょう。
エキソカーネルは、物理的なハードウェア リソースをプログラムに割り当てるだけです。これにより、プログラムは、リンクされているライブラリ オペレーティング システムを使用して、エキソカーネルが提供していない抽象化の一部を提供できます。開発者は、抽象化モデルから選択するか、独自のモデルを作成できます。アプリケーションによっては、これによりパフォーマンスが大幅に向上する場合があります。何をしているのかわからない場合は、クラッシュ時に爆発するプログラムを作成することもできます。
ほとんどのカーネルは、物理的なハードウェアリソースをある種の理論モデルに抽象化するために、さらに多くのことを行います。開発者は、ハードウェアを内部的に処理する細かい点を処理するこのモデルとやり取りします。
nanokernelという用語は、特定の種類のカーネルを表すために使用されます。プレフィックス「ピコ」、または「ナノ」、「マイクロ」は、通常、カーネルの「サイズ」を示しています。より大きなカーネルは、より多くの機能で構築され、より多くのハードウェア抽象化を処理します。ナノカーネルは、ハードウェアの抽象化を提供する比較的小さなカーネルですが、システム サービスはありません。また、最新のマイクロカーネルにはシステム サービスがないため、用語が類似しています。
カーネルの名前は通常、新しい種類のカーネルを生み出した特定のバッチの研究に由来します。たとえば、カーネギー メロン大学で開発された「マッハ」と呼ばれるカーネルは、現代の「マイクロカーネル」の最初の例の 1 つです。
補足: エキソカーネルの真の利点は選択です。ほとんどの場合、多くの抽象化は壊滅的なバグの減少を意味します。アプリケーションによっては、別の抽象化モデルを使用したり、すべてを自分で処理したりしたい場合があります。特定のプロジェクトで OS の抽象化を廃止したい場合は、オペレーティング システムを切り取り、ハードウェアの一部をその仕事にコミットする必要があります。エキソカーネルの場合、これは必要ありません。「金属に」直接プログラムすることもできますが、好きなときに抽象化モデルにリンクすることも選択できます。これは非常に強力な概念です。
補足: ほとんどのアプリケーション開発者にとって、このような低レベルでメモリを扱う必要はありません。通常、カーネルの上に構築されたオペレーティング システムのいくつかのレイヤーがあり、アプリケーションは OS の最上位レベルで実行されます。javascript で記述しているときは、オペレーティング システム上で実行されるアプリケーションに実装されたモデルとやり取りするなど、さらに高度な作業を行います。メモリのアドレス指定は、無視してはいけませんが、開発者にとってはまったく別のことを意味する場合があります。そのような高いレベルの抽象化で書いているのは誰ですか。
モノリシックなマイクロとエキソカーネルを区別するのに非常に役立つリンクを 1 つ見つけました。リンクは --- http://www.scribd.com/doc/174682128/Difference-between-monolithic-microkernel-and-exokernel