Plan 9 from Bell Labs:UNIXの革新的な後継OS
Plan 9 from Bell Labs(通称Plan 9)は、
ベル研究所のComputing Sciences Research Centerで
1980年代中頃から
2002年にかけて開発された、主に研究用途向けの分散
オペレーティングシステムです。
UNIXの流れを汲みつつ、
UNIXの設計上の課題を克服することを目指した、革新的なシステムとして知られています。
名称の由来
Plan 9の「9」は、
UNIX version 8に続くバージョン番号を示唆しているという説があります(
UNIX version 9と10も存在します)。しかし、同時に
エド・ウッド監督のSF映画『Plan 9 from Outer Space』に由来するという、ユーモラスな一面も持ち合わせています。プロジェクトのマスコットキャラクターであるGlendaも、
エド・ウッド作品にちなむ命名です。初期のウインドウシステムが『8½』と名付けられたことにも、映画へのオマージュと
UNIXからの継承を示すユーモアが感じられます。
歴史
Plan 9は、
ベル研究所内における主要な研究プラットフォームとして
UNIXに取って代わることを目的として開発されました。分散マルチユーザー環境におけるシステム利用やプログラミングに関する
UNIXモデルの改良が、研究の中心課題でした。
当初は
ベル研究所内部のプロジェクトでしたが、
1992年には大学向けに、
1995年には一般向けに商用OSとしてリリースされました。しかし、その後
ベル研究所の後継であるルーセント・テクノロジーは商業化を断念し、
2000年にはオープンソースライセンス、
2002年にはフリー
ソフトウェアライセンスで非商用リリースされました。現在も、
ベル研究所がホスティングする開発ソースツリーを通じて、活発な開発が続けられています。
Plan 9は、
UNIXが抱えていた問題点を解決するために設計されました。
UNIXは、単一マシンを多くのユーザーが共有することを前提とした設計であるため、複数のマシンを共有する分散環境への対応が不十分でした。Plan 9は、ネットワーク環境における分散処理を前提とし、ユーザーごとに独立した作業環境を提供することで、この問題を解決しました。
さらに、
UNIXがローカル
ファイルシステムの表現に焦点を当てていたのに対し、Plan 9はローカル、リモートを問わずあらゆるリソースへのアクセスを課題としました。この思想に基づき、
端末、
CPUサーバ、ファイル
サーバ、認証
サーバを分離することでセキュリティの向上を図り、ファイル
サーバによる自動的なバックアップ機能も備えています。初期はMOジュークボックスをストレージとして想定していましたが、現在ではハードディスクが主流となっています。
すべてのリソースはファイル
UNIX以前のOSでは、デバイスごとに異なるアクセス機構が用いられていました。
UNIXはこれを改善し、すべての
入出力をファイル操作で統一的に扱うことを目指しました。しかし、プロセス状態の制御など、ファイルにうまくマッピングできない概念も存在しました。
Plan 9は、この問題に対し、あらゆるシステムリソースを
ファイルシステムの一部として表現するという、より徹底的なファイル中心アプローチを採用しました。ネットワークや
ユーザインタフェースなど、従来は
ファイルシステムの外に存在していたリソースも、ファイルとして扱われます。これにより、システムインタフェースの統一性と簡潔さが実現されています。
分散アーキテクチャ
Plan 9は単独マシンでも動作しますが、OSの機能コンポーネントを複数のマシンに分散して配置することもできます。典型的な構成では、軽量な
端末でGUIを操作し、
CPUサーバで計算処理を行い、別のマシンをファイル
サーバとして利用します。仮想化技術の発展により、単一マシン上でもこの環境を再現することが容易になりました。
設計思想
Plan 9の設計目標は、以下の点を重視しています。
ファイルとしてのリソース: すべてのリソースを階層型ファイルシステム内のファイルとして表現する。
名前空間: アプリケーションから見て、ネットワークは単一の一貫した名前空間として表現される。各プロセスの名前空間は独立しており、ユーザーは複数の名前空間を同時に扱うことができる。
*
標準通信プロトコル: 9Pプロトコルを用いて、ローカル、リモートの区別なくあらゆるリソースにアクセスする。
Plan 9では、ファイル、画面、ユーザー、
コンピュータなど、すべてに固有のパス名が割り当てられ、
UNIXと同様の方法で操作できます。さらに、任意のオブジェクトにパス名として名前を付けることができます。これは、
World Wide WebのURIシステムに似ています。
Unionディレクトリ
Plan 9は、異なる媒体やネットワークにまたがるリソース群を透過的に連結できる「unionディレクトリ」という概念を導入しました。これにより、例えば、リモートの`/bin`ディレクトリを手元の`/bin`ディレクトリと連結し、ローカルとリモートのアプリケーションに透過的にアクセスできます。
/proc, /net
`/proc`ディレクトリには動作中のプロセスの情報が、`/net`ディレクトリにはネットワークインタフェースの情報が格納されています。これらのディレクトリも
ファイルシステムの一部として扱われ、コマンドラインツールで操作できます。`/net`はTCP/IPなど、複数の通信プロトコルやデバイスドライバのインタフェースを統合したもので、unionディレクトリと組み合わせることで、ネットワークアクセス制御などの高度な機能を実現できます。
Plan 9は、通信機能を重視した分散システムです。
9Pプロトコルは、ネットワークオブジェクトをファイルのようにアクセスできるインタフェースを提供し、ネットワーク透過性を高めています。
Unicode対応
Plan 9は、内部コードにUTF-8を採用しており、多言語対応が容易です。UTF-8自体は、Plan 9の研究過程で
ケン・トンプソンによって考案されました。
実装と影響
Plan 9は、x86アーキテクチャを中心に、様々なプラットフォームに移植されています。
C言語で記述されており、POSIX準拠アプリケーションの移植も可能です。Plan 9は、
ファイルシステムによるシステムインタフェースの統一という
UNIXの概念を、現代的な分散システムとして実現した意義深いプロジェクトです。UTF-8をはじめ、その技術は他のOSにも影響を与えています。しかし、
UNIXほどの普及には至らず、研究用途に留まっている現状です。その理由として、既存の十分に動作するシステム(
UNIX)の存在が、革新的なPlan 9の普及を阻んだという指摘もあります。
ライセンス
Plan 9はフリー
ソフトウェアライセンスで公開されており、ソースコードは自由に利用できます。