本日、MITコンピューター科学研究所のドーソン・エングラー、フランス・カーシューフック、ジェームズ・オタルJr.(ドーソンR. )外核オペレーティングシステムについて。 記事自体は非常に膨大ですので、もちろん興味のない限り、部分的に翻訳します。
注釈
従来のオペレーティングシステムは、固定インターフェイスを使用し、プロセス間通信や仮想メモリなどのオペレーティングシステムの抽象化を提供することにより、アプリケーションのパフォーマンス、柔軟性、機能を制限します。 exoderオペレーティングシステムのアーキテクチャは、ハードウェアリソースの管理をアプリケーションレベルに移行することにより、これらの問題を解決します。 このアーキテクチャを使用して、OSの小さなカーネルは、すべてのハードウェアリソースを、低レベルのインターフェイスを介してオペレーティングシステムの信頼できないライブラリに安全に転送します。 オペレーティングシステムライブラリこのライブラリは、システムオブジェクトとポリシーを実装します。 ハードウェアリソースの保護を管理から分離することにより、オペレーティングシステムのアプリケーション固有の抽象化を実装し、システムライブラリを拡張、特化、または置換することさえできます。
外核オペレーティングシステムのプロトタイプを作成しました。 調査によると、例外のキャッチや制御の受け渡しなどの最も単純な操作は、UNIXの完全にモノリシックなバージョンであるUltrixよりも10〜100倍高速です。 さらに、exoコアにより、アプリケーションが従来のオペレーティングシステムでは受け入れられない方法でマシンリソースを管理できることが実証されました。 たとえば、仮想メモリとプロセス間通信は、アプリケーションレベルのライブラリを使用して実装されました。 調査によると、ユーザーレベルの仮想メモリとプロセス間相互作用のプリミティブは、Ultrix OSのカーネルレベルの同様のプリミティブよりも5〜40倍高速に動作します。 文献に記載されているデータと比較すると、外核システムのプロトタイプは、従来のオペレーティングシステムよりも少なくとも5倍高速であり、例外のキャッチやプロセス間通信などの問題を解決します。
1.はじめに
オペレーティングシステムは、アプリケーションとハードウェアリソース間のインターフェイスを定義します。 残念ながら、明確に定義されたインターフェースは、アプリケーション開発の利便性だけでなく、パフォーマンスを大幅に低下させる可能性があります。 従来、オペレーティングシステムは、プロセス、ファイル、アドレススペース、プロセス間通信などの高レベルの抽象化の背後にマシンリソースに関する情報を隠していました。 実際、このような抽象化は、アプリケーションが実行される仮想マシンを定義します-信頼できないアプリケーションによって置き換えたり変更したりすることはできません。 このような抽象化の厳密な定義は、3つの主な理由で不十分です。ドメイン固有の最適化の利点をアプリケーションから奪い、抽象化の既存の実装への変更を許可せず、アプリケーションの開発の柔軟性を低下させます。既存のもののみを使用して実装されます(可能な場合)。
これらの問題は、リソース管理をアプリケーションレベルに移行することで解決できると考えています。 信頼できないものにします。 これを証明するために、仮想コア(VM)、プロセス間通信(IPC)などのオペレーティングシステムの従来の抽象化が信頼できないソフトウェアによってアプリケーションレベルで実装される、exコアである新しいカーネルアーキテクチャを開発しました。 このアーキテクチャを使用して、最小コアは使用可能なハードウェアリソースを安全に多重化します。 エキソコアインフラストラクチャ上で動作するオペレーティングシステムライブラリは、高レベルの抽象化を実装します。 アプリケーションの作成者は、必要なライブラリを選択するか、独自のライブラリを作成します。 新しいライブラリの使用は、実行可能ファイルをリンクするだけで実装されます。
私たちの研究は、ハードウェアリソースを管理する抽象化がどのように実装されているかを制御するメカニズムの出現により、アプリケーションが大きな恩恵を受けることを示しています。 AppleとLee [5]は、仮想メモリにアクセスする既存の汎用プリミティブがガベージコレクタと共有メモリシステムのパフォーマンスを低下させると主張しています。 Cao [10]は、ファイルキャッシングの制御をアプリケーション層に適用すると、アプリケーションの稼働時間を45%削減できると述べています。 Hartley and Cheriton [26]およびKrueger [30]は、アプリケーション依存の仮想メモリポリシーによってアプリケーションの実行速度が向上することを示しています。 Stonebreaker [47]は、ファイルシステムを実装する場合の不適切なソリューションがデータベースのスピルオーバーに大きな影響を及ぼす可能性があると主張しています。 TaekkotとLevy [50]は、信号処理をアプリケーションレベルに移行すると、例外を一桁高速に処理できることを示しています。
アプリケーションにハードウェアリソースの制御を提供するために、exoコアは低レベルインターフェイスを定義します。 エキソコアのアーキテクチャは、1つの古くて単純な観察に基づいています。プリミティブのレベルが低いほど、より効率的に使用でき、高レベルの抽象化の実装により自由になります。
可能な限り低いインターフェイス(理想的にはハードウェアインターフェイス)を実装するために、エキソコアアーキテクトは1つの目標を設定しました:制御から保護を分離すること。 たとえば、エキソコアは、ウィンドウシステムを知らないフレームバッファーを保護し、ファイルシステムの概念を持たないディスクを保護する必要があります。 1つの解決策は、各アプリケーションに独自の仮想マシンを提供することです。 セクション8で後述するように、仮想マシンはパフォーマンスを低下させる可能性があります。 さらに、エキソコアはハードウェアリソースをエミュレートしませんが、それらを提供するため、効果的でシンプルなソリューションを使用できます。 exコアは、リソースを安全に提供する3つの方法を提供します。 1つ目は安全なバインディングです-アプリケーションを安全にハードウェアリソースに接続し、イベントを処理できます。 第二に、目に見えるリソースの取り消し第三に、キャンセルプロトコルを使用して、exoコアは誤動作しているアプリケーションとハードウェアリソースの間の接続を切断できます。
安全な結合、目に見えるリソース障害、およびキャンセルプロトコルに基づいて、エキソ核システムのプロトタイプを開発しました。 これには、exoコア(Aegis)、およびオペレーティングシステムの信頼できないライブラリ(ExOS)が含まれています。 このシステムを使用して、外核アーキテクチャのいくつかの重要な特性を示します。
- 実装する必要のあるプリミティブの数が少ないため、exoカーネルは非常に効果的です。
- 低レベルの安全なリソース多重化を非常に低いレイテンシで提供できます。
- VMやIPCなどの従来の抽象化は、アプリケーションレベルで効率的に実装でき、拡張、特殊化、または置換できます。
- アプリケーションは、ニーズに応じて、より特殊な抽象化の実装を作成できます。
実際には、プロトタイプの核外システムは、アプリケーション開発の柔軟性を高め、モノリシックまたはマイクロカーネルを備えたシステムよりも優れたパフォーマンスを提供します。 低レベルのAegisカーネルインターフェイスにより、アプリケーションレベルのソフトウェアはリソースをより効率的に使用できます。 Aegisカーネルのセキュア転送は、主張されているどの実装よりもほぼ7倍高速です。 例外フックは5倍高速です。
また、コアは、マイクロカーネルシステムでは利用できないExOS(および他のすべてのアプリケーションレベルソフトウェア)の柔軟性を提供します。 たとえば、アプリケーションレベルで実装されたVMは、分散共有メモリシステムおよびガベージコレクターと簡単に統合できます。 Aegisが使用する制御転送プロトコルにより、アプリケーションは、パフォーマンスと使いやすさを選択して、多数のIPCプリミティブを実装できます。 たとえば、Amoeba [48]、Chorus [43]、Mach [2]、V [15]などのマイクロカーネルシステムでは、仮想メモリおよびメッセージ転送サービスが信頼できるサーバーによってカーネルに実装されるため、信頼できないアプリケーションによるIPCプリミティブの実装は許可されません。 また、メモリページのテーブルの構造、プロセスの抽象化などの抽象化は、マイクロカーネルでは変更できません。 最終的に、ネットワーク、情報出力システム、ハードドライブなどの多くのハードウェアリソースは、バイパスできない、またはアプリケーションのニーズに合わせて最適化できない重いサーバーにカプセル化されます。 実際、このような重いサーバーは、アプリケーションレベルで動作するカーネルサブシステムです。
この記事では、exoコアのアーキテクチャと設計、およびexoコアを安全かつ効率的に実装する方法に焦点を当てています。 2番目の部分では、外核について詳しく説明します。 3番目は、設計とアーキテクチャの開発で遭遇した問題の議論です。 4番目では、プロトタイプの状態とテスト方法について説明します。 パート5と6は実装を表します。 パート7には、核外アーキテクチャの柔軟性を示す実験レポートが含まれています。 パート8で行われた作業について説明し、パート9で要約します。
ここでオリジナルに慣れることができます 。