1 歴史と背景
1.1 開発の経緯
Multics(Multiplexed Information and Computing Service)は、1960年代半ばに開始された共同研究プロジェクトである。当時、コンピュータの利用はバッチ処理が主流であり、ユーザーは計算結果を得るまでに長時間待つ必要があった。Multicsは、複数のユーザーが同時にシステムを対話的に利用できるタイムシェアリング環境を提供することを目的として開発された。プロジェクトは1964年にMIT(マサチューセッツ工科大学)のMACプロジェクトの一環として構想され、その後ベル研究所とゼネラル・エレクトリック(GE)が加わり、1965年から本格的な設計と実装が開始された。
1.2 主要な参加機関
1.2.1 MITの研究プロジェクト
MITはMulticsの中核的な研究機関であり、特にMITのMACプロジェクト(Project MAC)が理論的基盤と主要な設計を提供した。MITの研究者たちは、タイムシェアリング、仮想記憶、セキュリティモデルなど、後のOSに大きな影響を与える概念を提案した。また、Multicsのソフトウェア開発の大部分を主導し、システムプログラミング言語PL/Iを用いた実装を行った。
1.2.2 ベル研究所とGEの役割
ベル研究所はシステムの信頼性と実用性の向上に貢献し、特にセキュリティ機構やファイルシステムの設計に深く関与した。一方、ゼネラル・エレクトリックはハードウェア面を担当し、Multics専用のGE-645大型コンピュータを開発・提供した。GEは後にマーケティングと商用化も試みたが、事業としての成功には至らなかった。
2 設計哲学
2.1 タイムシェアリングの原則
Multicsは「コンピュータユーティリティ」というビジョンのもと、電力や電話のようにユーザーが必要なときにいつでも計算能力を利用できるサービスを目指した。そのため、複数のユーザーが同時にシステムにログインし、各ユーザーに処理時間を細かく割り当てるタイムシェアリング方式を採用した。これにより、対話的な応答性が確保され、ユーザーは端末から直接コマンドを入力して結果を即座に得ることができた。
2.2 セキュリティと保護
2.2.1 リング保護機構
Multicsは、ハードウェアとソフトウェアが連携したリング保護機構を導入した。これは、システムの特権レベルを複数のリング(通常は0から7の8段階)に分割し、リング番号が小さいほど高い特権を持つという仕組みである。各プロセスやデータセグメントにはアクセス権限を示すリング番号が割り当てられ、不正なアクセスを防止した。この概念は後に多くのOSのセキュリティモデルの基礎となった。
2.2.2 特権レベルの管理
Multicsでは、カーネル(リング0)からユーザープロセス(リング4以上)まで、各リングに異なる特権を設定した。システムコールを介してのみ特権レベルの昇格が可能であり、ユーザープログラムが直接ハードウェアやシステムデータにアクセスすることは禁止された。この厳格な管理により、バグや悪意のあるコードによるシステム全体の破壊を未然に防ぐことができた。
2.3 仮想記憶の実装
Multicsは、本格的な仮想記憶を実装した初期のOSの一つである。ページングとセグメンテーションを組み合わせた方式を採用し、各プロセスに独立したアドレス空間を提供した。これにより、物理メモリの容量を超えるプログラムの実行が可能となり、またメモリ保護も容易になった。仮想記憶はハードウェアのメモリ管理ユニット(MMU)と密接に連携して動作し、後のOSにおける標準的な機能の先駆けとなった。
3 主要な機能
3.1 階層ファイルシステム
3.1.1 ディレクトリ構造とパス
Multicsは、今日のOSで一般的な階層型ディレクトリ構造を採用した。ルートディレクトリからツリー状にディレクトリが展開され、各ファイルは絶対パス(例:<ユーザー名> > <ディレクトリ> > <ファイル>)で一意に識別された。また、シンボリックリンクやマウントポイントなどの概念も導入し、柔軟なファイル管理を実現した。このファイルシステムの設計は、Unixのファイルシステムに直接的な影響を与えた。
3.2 マルチプロセッシングサポート
Multicsは、マルチプロセッサシステムをサポートした初期のOSである。GE-645は複数のCPUを搭載可能であり、Multicsはそれらを効率的に活用するための並列処理機能を備えていた。プロセス間通信や同期機構が整備され、複数のプロセッサが協調して動作することでシステム全体のスループットが向上した。
3.3 オンラインコマンド言語とユーザーインタフェース
Multicsは、対話型のコマンドインタプリタ(シェル)を提供した。ユーザーはコマンドを打ち込んでシステムを操作し、エディタやコンパイラなどのツールを起動できた。また、コマンドのパイプラインやリダイレクトなどの機能も実装され、後のUnixシェルの原型となった。ユーザーインタフェースは文字ベースであったが、当時としては革新的な対話環境を実現した。
4 ライフサイクルと事業展開
4.1 商用化の試み
1969年、ゼネラル・エレクトリックはMulticsを商用製品として販売開始した。しかし、高価なハードウェア(GE-645)と複雑なソフトウェアのため、価格性能比が低く、市場での普及は限定的だった。また、システムの完成度や安定性にも課題があり、商用利用には多くの改善が必要だった。GEは1970年にコンピュータ事業から撤退し、Multicsの権利はハネウェルに移譲された。
4.2 システムの普及と利用
ハネウェルはMulticsの改良を続け、1970年代後半にはHoneywell 6180シリーズ向けのMulticsをリリースした。主に大学や研究機関、一部の政府機関で利用され、特に米国国防総省やNASAなどがセキュリティを重視する用途に採用した。しかし、全体の導入数は数十台にとどまり、広範な普及には至らなかった。
4.3 開発の終了と遺産
1980年代に入ると、Unixや他の商用OSの台頭によりMulticsの競争力は低下した。ハネウェルは1985年にMulticsの開発を終了し、その後も既存ユーザー向けのサポートは続けられたが、1990年代には完全に歴史の舞台から姿を消した。しかし、Multicsが導入した多くの概念は、後のOS開発に多大な遺産を残した。
5 影響と遺産
5.1 Unixへの影響
5.1.1 設計思想の継承
Unixの開発者であるケン・トンプソンとデニス・リッチーは、もともとMulticsプロジェクトに参加していたベル研究所の研究者である。彼らはMulticsの複雑さに不満を抱き、よりシンプルで効率的なシステムとしてUnixを設計した。しかし、タイムシェアリング、階層ファイルシステム、シェル、プロセス間通信など、Unixの根幹をなす多くの概念はMulticsから受け継がれている。
5.1.2 直接的なコードや概念の流用
Multicsで使われていた「スーパーバイザコール」(システムコール)の機構や、ファイル名のパス構造、デバイスのファイル抽象化などは、Unixにそのまま取り入れられた。また、Multicsのシェルコマンド言語の一部はUnixのシェルの設計に影響を与えた。Unixの実装自体は完全に新規であったが、設計思想の連続性は明らかである。
5.2 その後のOSへの貢献
5.2.1 セキュリティモデルの先駆け
Multicsのリング保護機構は、現代のOSにおける特権レベル(ユーザーモード/カーネルモード)の原型となった。また、アクセス制御リスト(ACL)の概念もMulticsで初めて実用化され、セキュリティポリシーの柔軟な設定を可能にした。これらのアイデアは、Windows NTやLinuxのセキュリティモデルに影響を与えている。
5.2.2 ファイルシステムと仮想記憶の標準化
Multicsの階層ファイルシステムは、ファイルシステムの標準的な構造として広く普及した。仮想記憶のページング方式も、その後のすべての汎用OSで採用される技術となった。さらに、Multicsが実証したマルチプロセッシングやオンライン対話環境の有用性は、現代のクラウドコンピューティングや分散システムへの道を開いた。