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

Infernoは、分散システム環境のために設計された[オペレーティングシステム]であり、[ベル研究所]]で開発されました。このOSは、[[Plan 9 from Bell Labs]の開発経験を基に、その後の研究成果を統合したものです。特に、OS、言語、オンザフライコンパイラ、グラフィックス、セキュリティ、ネットワーク、移植性といった分野に焦点を当てています。

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

リソースアクセスは、ローカルとリモートに関わらず、Styxという通信プロトコルを通じて行われます。アプリケーションが標準的なファイル操作(オープン、リード、ライト、クローズ)を行う際も、このプロトコルが利用されます。第4版では、StyxはPlan 9の新しいバージョンで使用される9Pプロトコル(9P2000)と同一です。

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

設計理念



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

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

多様なネットワーク環境に対応するため、設計段階で仮想機械の利用が不可欠と判断されました。これはJavaを生み出したOakプロジェクトと同じ結論ですが、それぞれ独立して導き出されました。Disはレジスタマシンの一種であり、Java仮想マシンとは異なり、動作するアーキテクチャに最適化されています。この設計により、新しいアーキテクチャをサポートする際にJITコンパイラの開発が容易になります。

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

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

Bell Labs Technical Journalの論文では、Infernoの移植性と汎用性が以下の観点から紹介されています。

プロセッサ間の移植性: x86、SPARC、MIPS、ARM、HP-PA、PowerPCなど、さまざまなアーキテクチャで動作し、他のプロセッサへの移植も容易です。
環境間の移植性: 小型端末上の独立したOSとしても機能しますが、Windows NT、Windows 95、Unix (IRIX, Solaris, FreeBSD, Linux, AIX, HP-UX)、Plan 9上でもアプリケーションとして動作可能です。どの環境でもInfernoアプリケーションのインターフェースは一貫しています。
分散設計: ユーザーのクライアントマシンでもサーバーでも同じ環境を構築し、互いのリソース(I/Oデバイスやネットワークなど)を共有できます。システムの通信機能により、アプリケーションをクライアントとサーバーに分割することが容易になります。
ハードウェアの要求仕様: 最小1MBのメモリでアプリケーションを実行でき、MMUハードウェアを必要としません。
移植性の高いアプリケーション: Infernoアプリケーションは、型安全な言語Limboで記述されており、実行ファイルは全てのプラットフォームで同じです。
動的な適応性: ハードウェアやリソースの状況に応じて、アプリケーションがロードするモジュールを動的に変更できます。例えば、ビデオプレーヤーアプリケーションは、状況に応じてデコーダモジュールを切り替えます。

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

歴史



InfernoはPlan 9から派生しており、設計理念やカーネルのソースコードの一部、特にデバイス関連とStyx/9P2000プロトコル部分が共通しています。また、ベル研究所のUnixの遺産とUNIX哲学も共有しています。Infernoの多くのコマンドラインツールは、Plan 9のツールをLimboで書き直したものです。

IEEE Internet Computing誌の1997年3月4月号には、Infernoの広告が掲載され、様々なデバイスがインターネットやLANを含むあらゆるネットワーク上で通信できると宣伝されました。広告には、ゲーム機とコンピュータの通信、テレビを使ったボイスメールなどが示唆されていました。

当初、ルーセント・テクノロジーはInfernoのソースコードのライセンスを販売しようとしましたが、インターネットとInfernoの関係に対する営業部門の認識が不足しており、マーケティングは小規模でした。同時期に、サン・マイクロシステムズは、ほぼ同じ市場を対象としたJavaを大々的にマーケティングしていました。どちらも仮想機械を利用していましたが、JavaはWebブラウザ上で動作し、当時普及していたオブジェクト指向プログラミングを採用していました。ルーセントはサンからJavaのライセンスを取得し、InfernoデバイスでJavaも実行できるようにすると発表しました。そのため、JavaのバイトコードをDisのバイトコードに変換するトランスレータが開発されました。しかし、Infernoは市場の支持を得られませんでした。Inferno部門は3年で解散し、権利はVita Nuovaに移譲されました。

ルーセントは、少なくとも2つの製品、Lucent VPN Firewall BrickとLucent Pathstar phone switchでInfernoを使用しました。

Vita Nuovaは権利を取得した後も開発を続け、商用ライセンスで製品を販売しつつ、カーネルとVMを除くシステムを無料でダウンロードできるようにしました(ライセンスはGPL非互換)。新しいハードウェアへの移植も行われ、分散アプリケーションに注力しました。最終的にVita NuovaはソースコードをGPLv2でリリースし、Infernoはオープンソースプロジェクトとなりました。

移植



Infernoはハードウェア上で直接動作しますが、他のプラットフォーム上でアプリケーションとして動作し、仮想オペレーティングシステムとしても機能します。アプリケーションは修正や再コンパイルなしに、すべてのInfernoプラットフォームで実行できます。

直接動作するハードウェアには、x86、MIPS、ARM、PowerPCSPARCなどがあります。

仮想OSが動作するOSには、Microsoft WindowsLinux、FreeBSD、Plan 9、macOS、SolarisIRIXUnixWareなどがあります。Internet Explorerプラグインとしても機能し、他のブラウザ用プラグインも開発予定です。また、InfernoはOpenMokoにも移植されています。

ライセンス



Inferno 4th editionは、2005年初めに自由ソフトウェアとしてリリースされました。デュアルライセンスであり、ユーザーは自由ソフトウェアとして利用するか、商用ライセンスで購入できます。自由ソフトウェアライセンスの場合、システムの各部分にGNU General Public LicenseGNU Lesser General Public License、Lucent Public License、MIT Licenseなどの異なるライセンスが適用されます。その後、Vita Nuovaはシステム全体(フォントはBigelow and Holmesからのサブライセンス)をGPLv2で利用可能にしました。現在でも、これらの3つのライセンス形態が選択可能です。

書籍



Phillip Stanley-Marbellの教科書「Inferno Programming with Limbo」(ISBN 0-470-84352-7)はInfernoの第3版を解説していますが、主にLimbo言語とInfernoとのインターフェースに焦点を当てており、Inferno自体の解説は少ないです。例えば、Infernoの汎用シェルに関する情報は限られています。

Brian Stuartの「Principles of Operating Systems: Design and Applications」(ISBN 1-4188-3769-5)は、Infernoを例としてオペレーティングシステムの設計について論じたものです。

Martin Atkins、Charles Forsyth、Rob Pike、Howard Trickeyによる「The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System」は、OS中心の観点から解説する予定でしたが、未完に終わり出版されませんでした。

脚注



関連項目

Plan 9 from Bell Labs (Plan 9)
UNIX
JNode
Singularity - Microsoft Researchによる類似の実験的OS

外部リンク

Inferno Project on Google Code
Inferno Fourth Edition Download, including source code
論文など Inferno最新版関連
その他の関連文書
Inferno design principles
メーリングリストその他
スクリーンショット
Developing with Inferno Blog
Inferno browser plugin
Inferno projects at the GSoC.
Inferno on OLPC
Inferno on Google Directory
その他
Ninetimes: News and articles about Inferno, Plan 9 and related technologies
非公式 FAQ
Inferno programmer's notebook - Infernoユーザーが作成しているオンラインマガジン
Inferno tutorial at the University of Reading e-Science Centre
Copy of the original Lucent Inferno website
Archives of the original Inferno mailing list

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。