| 原作者 | カリム・ヤグモア、 フィリップ・ジェラム |
|---|---|
| 初回リリース | 2002年6月3日 |
| オペレーティング·システム | リナックス |
| プラットフォーム | IA-32 |
| 利用可能 | 英語 |
| タイプ | ナノカーネル ハードウェア抽象化レイヤー(HAL)、ハイパーバイザー |
| ライセンス | ライセンス |
| Webサイト | 詳しくはこちら |
Adeos ( Adaptive Domain Environment for Operating Systems )は、コンピュータハードウェアとその上で動作するオペレーティングシステム(OS)の間で動作するナノカーネル ハードウェア抽象化レイヤー( HAL ) またはハイパーバイザーです。 [1] [2]他のナノカーネルとは異なり、外側のカーネルの低レベルレイヤーだけではありません。代わりに、複数のカーネルを一緒に実行することを目的としており、完全な仮想化技術に似ています。これは、GNU General Public License (GPL) に基づいてリリースされた無料のオープンソースソフトウェアです。
Adeos は、複数のオペレーティング システム間、または 1 つの OS の複数のインスタンス間でハードウェア リソースを共有するための柔軟な環境を提供し、これにより、優先順位が付けられた複数のドメインが同じハードウェア上に同時に存在できるようになります。
Adeos はLinux カーネルの下に正常に挿入され、対称型マルチプロセッシング(SMP) クラスタリング、より効率的な仮想化、パッチレス カーネル デバッグ、Linux用のリアルタイム コンピューティング(RT) システムなど、さまざまな可能性を切り開きました。
HAL の中では珍しく、Adeos は Linux のロード可能なカーネル モジュールとしてロードできるため、別の OS を一緒に実行できます。Adeos は、リアルタイム アプリケーション インターフェイス ( RTAI ) のコンテキストで開発され、モジュール化されて HAL がリアルタイム カーネルから分離されました。
過去の仕事
複数のオペレーティングシステムを同じシステムで実行できるようにするには、2 つの方法があります。1 つ目はシミュレーション ベースで、追加のオペレーティングシステムを実行するための仮想環境を提供します。2 つ目は、ナノカーネル レイヤーを使用してハードウェアの共有を可能にする方法です。[1]
シミュレーションのカテゴリには、Xen、VMware、Virtual PC、SimOSなどのツールがあります。また、Adeosに似たカーネルベースの仮想マシン(KVM)もあります[要出典]が、RTではなく、特定の仮想化ハードウェアサポートが必要です。これらの方法は、ベースOSとは別のアプリケーションを実行したいユーザー向けに使用され、ベースOSをユーザーに制御させるものではありません。シミュレーションは、実稼働環境で使用することを意図したものではありません。ナノカーネルのカテゴリには、SPACE、キャッシュカーネル、Exokernelなどのツールがあります。これらはすべて、実稼働オペレーティングシステムの構築に使用できる小型のハードウェア管理機能を構築することを示唆しています[要出典]。このアプローチの問題は、既存のオペレーティングシステムとそのユーザーベースの問題に対処していないことです。[1]
Adeos は、変更されていない実行中の OS の下に挿入される単純なレイヤーを提供し、その後、複数の OS が同じハードウェア環境を共有できるようにするために必要なプリミティブとメカニズムを提供することで、両方のカテゴリのアプリケーションの要件に対応します。Adeos は、Adeos 自身の操作に必要な範囲を超えて、さまざまな OS によるハードウェアの使用に制限を課そうとはしません。代わりに、そのような制限はシステム管理者またはシステム プログラマーによって課されます。これにより、システムが不適切な管理にさらされますが、Adeos の背後にある考え方は、システム管理者とプログラマーに制御権を取り戻すことです。[1]
建築

Adeos はシグナルのキューを実装します。周辺機器がシグナルを送信するたびに、マシンで実行されているさまざまなオペレーティングシステムが順番に起動され、シグナルを受け入れるか、無視するか、破棄するか、終了するかを決定する必要があります。OS によって処理 (または破棄) されないシグナルは、チェーン内の次の OS に渡されます。終了されたシグナルは、後続のステージに伝播されません。[1]
Adeos はハードウェアへの平等で信頼できるアクセスを保証する必要があるため、さまざまな OS によって発行されるハードウェア コマンドの一部を制御しますが、さまざまな OS の通常の動作にあまり干渉してはなりません。各 OS は、完全に制御できるドメインに含まれています。このドメインには、プライベート アドレス空間と、プロセス、仮想メモリ、ファイル システムなどのソフトウェア抽象化が含まれます。Adeos は、操作に必要な場合を除き、ハードウェアの使用に関するポリシーを強制することはありません。ポリシーを決定する作業は、システム アーキテクトに委ねられています。[1]
Adeos 割り込みパイプ

Adeos は、割り込み パイプを使用して、ハードウェア上で実行されているさまざまなドメインに割り込みを伝播します。一部のドメインはハードウェア割り込みを最初に受信することを好む可能性があるため、Adeos はドメインが優先割り込みディスパッチにアクセスできるメカニズムを提供します。実際、Adeos は、要求ドメインの割り込みハンドラーと付随するテーブル (SPACE 用語では割り込みメカニズムと呼ばれることがあります) を割り込みパイプラインの最初のステージに配置します。ドメインは、割り込みを受け入れるか、無視するか、破棄するか、終了するかを制御できます。これらはそれぞれ異なる効果があり、異なる方法で制御されます。[1]
割り込みを受け入れることは、ドメインの割り込みメカニズムの通常の状態です。Adeos は、割り込みを受け入れているドメインを検出すると、割り込みハンドラが正しく動作するために必要な CPU 環境とスタック コンテンツを設定した後、割り込みハンドラを呼び出します。その後、OS はタスク スケジューリングを含む任意の数の操作を実行することを決定します。OS が完了すると、パイプラインは割り込みをパイプラインに伝播することで計画どおりに進みます。[1]
ドメイン内の OS が何らかの理由で割り込みを望まない場合、その OS は Adeos に割り込みパイプラインのそのドメインが占めるステージを停止するように要求します。これにより、割り込みはパイプライン内でそれ以上進まず、ドメインが占めるステージで停止します。OS が割り込みを望まなくなった場合、Adeos にパイプラインをインストールするように要求し、その後、対応するステージで停止していたすべての割り込みは、パイプラインの他のステージへのルートをたどります。[1]
ドメインが割り込みを破棄する場合、割り込みはドメインが占有しているステージを通過し、他のステージに進みます。ドメインが割り込みを終了すると、そのドメインによって終了された割り込みは後続のステージに伝播されません。割り込みの破棄と終了は、ドメイン内の OS が Adeos を認識している場合にのみ可能です。
一部の OS は Adeos を認識しないため、その OS のハンドラーとしてのみ機能するドメインを作成することができます。したがって、割り込みパイプラインでは、このステージは常に処理対象ドメインのステージに先行し、処理対象ドメインの OS に通常のシステム操作の錯覚を与えるために、Adeos を使用してそのドメインに対してアクションを実行する場合があります。
Adeos がパイプラインのトラバースを終えると、すべてのドメインが休止状態かどうかをチェックします。休止状態の場合は、アイドル タスクを呼び出します。このタスクは、次の割り込みが発生するまでアクティブのままです。すべてのドメインが休止状態でない場合は、割り込みがパイプラインに入る前の状態にプロセッサを復元し、中断したところから実行を続行します。Adeos はハードウェアに大きく依存するため、多くの詳細は特定の実装に固有のものです。[1] [3]
適用範囲
汎用オペレーティングシステムのリソース共有
汎用オペレーティングシステムのリソース共有は、複数の汎用OSが同じハードウェアを共有できる環境を提供することをAdeosの主な目的の1つです。[1]
オペレーティングシステム開発
OS の開発は通常複雑なプロセスであり、 OS が動作しているハードウェアを調査するためにインサーキット エミュレータなどの追加のハードウェアが必要になることもあります。Adeos を使用すると、適切なドメイン ハンドラによって望ましくない動作を制御できるため、OS 開発が容易になります。また、OS 開発用のデフォルトのドメイン ハンドラを提供することもできます。これにより、開発者は制御対象のハードウェアへの直接アクセスを制御できます。Adeos 自体はカーネル モジュールであるため、このような開発ドメイン ハンドラは Adeos とは独立して開発できます。[1]
パッチレスカーネルデバッガーとプローバー
Adeos は、カーネル デバッガーとプローバーが Linux を変更することなく Linux を制御する方法を提供します。他の Adeos ドメインと同様に、これらの機能は通常のカーネル モジュールとしてロードされ、その後 Adeos からリング ゼロ ドメインを要求します。これが完了すると、割り込みパイプラインで優先割り込みディスパッチを要求できます。したがって、Linux が割り込みを処理する前に、これらの割り込みをインターセプトして、要求されたデバッグ タスクを実行できます。これは、パフォーマンス プロファイラーやその他の開発ツールにも拡張できます。[1]
参照
参考文献
- ^ abcdefghijklm 「Adaptive Domain Environment for Operating Systems」(PDF) . Adaptive Domain Environment for Operating Systems . Opersys . 2012-04-27閲覧。
- ^ 「Welcome to Adeos」。Adeosプロジェクト。Xenomaiプロジェクト。2004年3月6日時点のオリジナルよりアーカイブ。 2020年9月29日閲覧。
- ^ ピーター、ジョン。「ゲスト投稿マーケットプレイス」 。 2021年11月29日閲覧。
外部リンク
- 公式サイト
- アデオスワークスペース
