
Exokernelは、 MITの並列分散オペレーティングシステムグループによって開発されたオペレーティングシステム カーネルであり、 [1]同様のオペレーティングシステムの一種でもあります。
オペレーティングシステムは一般に、(仮想)ファイルシステムなどの高レベルの抽象化を通じてハードウェアリソースをアプリケーションに提供します。エクソカーネルの背後にある考え方は、アプリケーション開発者に課す抽象化をできるだけ少なくし、ハードウェア抽象化についてできるだけ多くの決定を下せるようにすることです。 [2]エクソカーネルは機能がリソースの保護と多重化の確保に限定されているため非常に小さく、従来のマイクロカーネルのメッセージパッシングの実装やモノリシックカーネルの高レベルの抽象化の実装 よりもかなり単純です。
実装された抽象化はライブラリ オペレーティング システムと呼ばれ、特定のメモリ アドレス、ディスク ブロックなどを要求する場合があります。カーネルは、要求されたリソースが空いているかどうか、およびアプリケーションがそれにアクセスできることのみを確認します。この低レベルのハードウェア アクセスにより、プログラマーはカスタム抽象化を実装し、不要な抽象化を省略できます。これは、プログラムのパフォーマンスを向上させるために最もよく使用されます。また、プログラマーは、必要な抽象化のレベル (高レベルまたは低レベル) を選択することもできます。
エクソカーネルは、エンドツーエンドの原則をオペレーティング システムに適用したものと見なすことができます。つまり、アプリケーション プログラムに、異なる要件を考慮して設計された他の抽象化の上に抽象化を重ねることを強制しません。たとえば、MIT エクソカーネル プロジェクトでは、Cheetah Web サーバーはフォーマット済みのインターネット プロトコルパケットをディスクに保存し、カーネルは不正な読み取りと書き込みを防止することでディスクへの安全なアクセスを提供しますが、ディスクをどのように抽象化するかは、アプリケーションまたはアプリケーションが使用するライブラリ次第です。
モチベーション
従来、カーネル設計者は、アプリケーション プログラムが何らかの抽象化モデルを介してハードウェアと対話することを要求することで、個々のハードウェア リソースをアプリケーション プログラムから見えなくしようとしてきました。これらのモデルには、ディスク ストレージ用のファイル システム、メモリ用の仮想アドレス空間、タスク管理用のスケジューラ、ネットワーク通信用のソケットなどがあります。ハードウェアのこれらの抽象化により、一般的にプログラムの作成が容易になりますが、パフォーマンスが制限され、新しい抽象化の実験が妨げられます。セキュリティ重視のアプリケーションでは、ディスクに古いデータを残さないファイル システムが必要になる場合がありますが、信頼性重視のアプリケーションでは、障害回復のためにそのようなデータを保持するファイル システムが必要になる場合があります。
1 つの選択肢は、カーネルを完全に削除してハードウェアに直接プログラムすることですが、その場合、マシン全体が作成中のアプリケーション専用になります (逆に、アプリケーションのコードベース全体がそのマシン専用になります)。エクソカーネルの概念は妥協案です。つまり、カーネルがマシンの基本的な物理リソース (ディスクブロック、メモリ ページ、プロセッサ時間など) を複数のアプリケーション プログラムに割り当て、各プログラムがこれらのリソースをどのように使用するか決定できるようにします。その後、プログラムは、必要な抽象化を実装するサポート ライブラリにリンクできます (または独自の抽象化を実装できます)。
MITエクソカーネル
MIT は、2 つのカーネルを使用して、2 つのエクソカーネル ベースのオペレーティング システムを開発しました。1 つはストレージのサポートが限定された概念実証の Aegis で、もう 1 つはエクソカーネルの概念をより徹底的に適用した XOK です。
MIT エクソカーネル システムの基本的な考え方は、オペレーティング システムが、アプリケーション ソフトウェアによって提供される小さなプログラムの実行プログラムとして機能するというものです。これらのプログラムは、エクソカーネルがハードウェアを安全に使用することを保証できるという要件によってのみ制約されます。
デザイン
MIT エクソカーネルは、次のようにハードウェア リソースを管理します。
- プロセッサ
- カーネルはプロセッサ リソースをタイムラインとして表し、プログラムはそこから時間間隔を割り当てることができます。プログラムは、残りのタイム スライスを別の指定プログラムに譲ることができます。カーネルは、割り込み、ハードウェア例外、タイム スライスの開始または終了などのプロセッサ イベントをプログラムに通知します。プログラムがイベントの処理に長い時間がかかる場合、カーネルは後続のタイム スライス割り当てでペナルティを課します。極端な場合には、カーネルはプログラムを中止できます。
- メモリ
- カーネルは、物理メモリ ページをプログラムに割り当て、トランスレーション ルックアサイド バッファを制御します。プログラムは、そのページにアクセスする機能を送信することで、別のプログラムとページを共有できます。カーネルは、プログラムが機能を持つページのみにアクセスするようにします。
- ディスクストレージ
- カーネルは、物理ブロック アドレスによってアプリケーション プログラムにディスク ブロックを識別し、アプリケーションがデータの配置を最適化できるようにします。プログラムがディスクの使用を初期化すると、プログラムが制御するブロックをカーネルが判断するために使用できる関数がカーネルに提供されます。カーネルはこのコールバックを使用して、新しいブロックを割り当てるときに、プログラムが既に制御しているブロックに加えて割り当てられたブロックのみを要求することを確認します。
- ネットワーキング
- カーネルは、カーネルによるセキュリティ チェックを容易にするために設計されたバイトコード言語でプログラムを実行する、プログラム可能なパケット フィルターを実装します。
アプリケーション
Exokernel で利用可能なライブラリ オペレーティング システムには、カスタム ExOS システムとBSD用のエミュレーターが含まれます。これらに加えて、exokernel チームはカーネルを直接使用する Cheetah Web サーバーを作成しました。
歴史

エクソカーネルの概念は少なくとも1994年から存在していましたが[3] 、 2024年現在、[アップデート]エクソカーネルはまだ研究段階であり、主要な商用オペレーティングシステムでは使用されていません。
概念的なオペレーティング・エクソカーネル・システムは、ケンブリッジ大学、グラスゴー大学、Citrix Systems、スウェーデン・コンピュータサイエンス研究所によって書かれたNemesisである。MITも、ExOS を含むいくつかのエクソカーネル・ベースのシステムを構築している。
参照
- ハイブリッドカーネル
- ハイパーバイザー
- カーネル(オペレーティング システム)
- マイクロカーネル
- モノリシックカーネル
- ナノカーネル
- 準仮想化
- ランプカーネル
- 単一アドレス空間オペレーティングシステム(SASOS)
- ユニカーネル
- ベアメタル
参考文献
- ^ 「MIT Exokernel オペレーティングシステム」。pdos.csail.mit.edu 。 2018年1月25日閲覧。
- ^ Engler, DR; Kaashoek, MF; O'Toole Jr., J.; Engler, DR; Kaashoek, MF; O'Toole Jr., J. (1995-12-03). 「Exokernel: アプリケーションレベルのリソース管理のためのオペレーティングシステムアーキテクチャ」. ACM SIGOPS オペレーティングシステムレビュー. 29 (5): 251, 251–266, 266. doi :10.1145/224056.224076. ISSN 0163-5980. S2CID 221932539.
- ^ エングラー、カーシューク、オトゥール、1995年。
文献
- Engler, Dawson R (1998). 「エキソカーネル オペレーティング システム アーキテクチャ」(PostScript) . MIT . 2006 年 9 月 22 日閲覧。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ———; Kaashoek, M. Frans (1996). 「すべてのオペレーティング システムの抽象化を排除する」(PostScript) . MIT . 2006 年 9 月 22 日閲覧。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ———; Kaashoek, M. Frans ; O'Toole, James Jr (1995). 「Exokernel」(PDF) .第 15 回 ACM オペレーティング システム原理シンポジウム議事録 - SOSP '95 . 第 29 巻. pp. 251–66. doi :10.1145/224056.224076. ISBN 978-0-89791-715-5. S2CID 221932539 . 2014年10月8日閲覧。
外部リンク
- Erlingsson, Úlfar; Kyparlis, Athanasios、マイクロカーネル、コーネル、
カーネルインターフェース設計において単純で効率的な操作がどの程度良い選択であるか
。 - Exokernel オペレーティング システム、MIT研究用エクソカーネル。
- ネメシス、イギリス:ケンブリッジ研究用エクソカーネル。
- BareMetal OS、Return Infinity、2014-09-06 にオリジナルからアーカイブ商用エクソカーネル。
- XOmB、2019年7月28日にオリジナルからアーカイブ、2013年5月13日に取得研究用エクソカーネル。
- エクサムール、FRGNUエクソカーネル。
