Inferno (オペレーティングシステム)

Inferno
Inferno 4th Edition
Inferno 4th Edition
開発者 ベル研究所 / Vita Nuova Holdings
プログラミング言語 C
OSの系統 Unixの後継
開発状況 開発中
ソースモデル フリーソフトウェア / オープンソース
最新安定版リリース Fourth Edition / 2007年2月2日
対応プラットフォーム x86, MIPS, ARM, PowerPC, SPARC
カーネル種別 仮想機械
ライセンス GPL / LGPL / MIT
ウェブサイト Vita Nuova
テンプレートを表示

Infernoは、分散システムのための オペレーティングシステム (OS)。 Plan 9 from Bell Labs を開発した経験を元に、その後の ベル研究所でのOS、言語、オンザフライ・コンパイラ、グラフィックス、セキュリティ、ネットワーク、移植性などの研究成果を盛り込んでいる。

Infernoアプリケーションは様々なハードウェア、ネットワーク、環境に移植可能である。任意のマシンに実装可能な 仮想機械 (Dis) がベースになっている。また、 型安全な言語 Limbo が移植性の高いバイトコードを生成する。さらに、ハードウェア上で直接動作する場合でも、他のOS上でアプリケーションとして動作する場合でも同じインターフェースを提供する仮想オペレーティングシステムを含む。

リソースアクセスは、ローカルでもリモートでも Styxという 通信プロトコルを使う。例えばアプリケーションが標準的なファイル操作(オープン、リード、ライト、クローズ)を行う場合もその通信プロトコルを経由する。第4版 (Fourth edition) では、Styx は Plan 9 の新しいバージョンでの 9Pプロトコル (9P2000) と全く同じである。

OSの名称、関連プログラムの名称、さらには Vita Nuova Holdings という企業名は、 ダンテ・アリギエーリの作品、特に『 神曲』に由来している。

設計理念

Infernoは 1995年ベル研究所の計算機科学研究部門が Plan 9 from Bell Labs の考え方をより広範囲なデバイスやネットワークに広めるために開発した。Infernoは、Plan 9 から得られた以下の3つの原則に基づいた 分散オペレーティングシステムである。

ファイルとしてのリソース
全ての リソースはファイルとして表現され、 ファイルシステムの階層内のどこかに配置される。
名前空間
アプリケーションから見て、ネットワークは単一で一貫した 名前空間であり、物理的には分散したリソースも1つの階層化されたファイルシステムとして見える。
標準通信プロトコル
Styx という標準プロトコルで、ローカルなリソースにもリモートのリソースにもアクセスする。

対象とするネットワーク環境の多様性に対応するため、設計段階で 仮想機械を使うのが必須であると決定された。これは Javaを生んだOakプロジェクトと同じ結論だが、それぞれ独自に同じ結論に至っている。仮想機械Disは レジスタマシンの一種で、 Java仮想マシンとは反対に、動作するアーキテクチャになるべくマッチするよう設計されている。そのため、新たなアーキテクチャをサポートする際に JITコンパイラを作成するのが単純という利点がある。

この仮想機械は、メモリが1MB程度で MMUのないデバイスでも効率的に動作するよう設計された メモリ管理を備えている。その ガベージコレクションは参照カウント方式とリアルタイム・カラーリング方式の組み合わせである。

Infernoカーネルには、仮想機械、オンザフライ・コンパイラ、スケジューラ、デバイスドライバ、通信プロトコルスタック、名前空間エバリュエータ、ファイルシステム階層のルートが含まれる。また、仮想オペレーティングシステムのインタフェース(システムコール、グラフィックス、セキュリティ、算術モジュールなど)を提供する組み込みモジュールもある。

Bell Labs Technical Journal の論文 [1]では、以下に示したような観点でInfernoの移植性と汎用性を紹介している。

プロセッサ間の移植性
現在、 x86SPARCMIPSARMHP-PAPowerPCといったアーキテクチャで動作し、他のプロセッサへの移植も容易である。
環境間の移植性
小型端末上の独立したOSとしても動作するが、 Windows NTWindows 95、Unix ( IRIX, Solaris, FreeBSD, Linux, AIX, HP-UX)、Plan 9 上でもアプリケーションとして動作する。どの環境でもInfernoのアプリケーションはインタフェースが同一である。
分散設計
ユーザーのクライアントマシンでもサーバでも同じ環境を確立し、どちらも相手のリソース(例えば、接続しているI/Oデバイスやネットワーク)をインポートできる。システムの通信機能の助けにより、アプリケーションをクライアントとサーバに(時には動的に)分割するのが容易である。
ハードウェアの要求仕様が小さい
最小1MBのメモリでもそれなりのアプリケーションを実行でき、 MMUハードウェアを必要としない。
移植性の高いアプリケーション
Infernoのアプリケーションは 型安全な言語 Limboで書かれており、その実行ファイルは全てのプラットフォームで同一である。
動的適応性
ハードウェアや利用可能なリソースの状況によって、アプリケーションがロードするモジュールを変えることがある。例えば、ビデオプレーヤーのアプリケーションは状況によってデコーダモジュールを使い分ける。

このような設計は、コンテンツプロバイダやサービスプロバイダがコンテンツを提供する際に、ハードウェアやソフトウェアやネットワークの詳細を気にせずに済むような標準インタフェースを提供する目的で行われた。