Multic――コンピューティングの新潮流に挑戦
CTSSはバッチ処理向けのコンピュータをTSSに転用していたが、コルバトはTSSに最適化したハードウェアとOSにより、より多数のユーザが同時に利用できるシステムを開発する計画を立てた。かれは、バロースのB5000とフェランティのAtlasの設計を参考にして、2つのプロセッサ、仮想記憶、ファイルシステムの利点を最大化できるハードウェアを検討した。コルバトは大学院生だったジェローム・サルツァーとともに、2つのプロセッサがそれぞれ複数のメモリバンクを共有して協業するSMP(対称型並列処理)がこの目的に適うと考え、実現できそうなコンピュータ・メーカーを探した。
IBMは64年4月にIBM S/360を発表しプロジェクトMACで活用するよう薦めたが、IBM S/360は基本的にバッチ処理マシンで希望に沿う設計ではなかった。コルバトのグループはゼネラル・エレクトリック(GE)が軍用コンピュータの商用版を開発しているとの情報を得て、アリゾナ州フェニックスの工場を訪れてIBM 7094と同様の1ワード36ビットのGE 635を見せられた。かれらはマシンの責任者と面会し、2プロセッサのSMPや仮想記憶を実装できるか話し合いを始めた。
ファノとコルバトはIBMとも折衝を続けたが、S/360に代わるマシンの開発には消極的で、プロジェクトMACはGEのハードウェアを採用することを7月15日に発表した。コルバトは次いで、IBM 7090向けバッチ処理OSを開発しPL/Iの仕様策定に加わったベル研究所に、プロジェクトMACへの参加を働きかけた。64年11月に、ベル研究所のビクター・ヴィソットスキーのチームがプロジェクトMACに参加し、コルバトと新しいTSSの仕様設計を開始した。
65年9月に教授になったコルバトは、ヴィソットスキーとともに秋期合同コンピュータ会議でMultics(Multiplexed Information and Computing System、多重型情報と計算機システム)の名で、24時間×7日の連続運用を目指す新システムの概要を発表した。
SMPとパーティションやセキュリティ機構の実現
コルバトはMulticsで、IBMがS/360で採用を見送ったASCII文字コードとIBMのユーザ会が65年に仕様を策定したばかりのプログラミング言語PL/Iの採用を決めた。PL/Iは、FORTRANとCOBOLが果たしてきた役割を単一言語で実現し、Algolよりもプログラムのモジュール化とハードウェアからの独立性に優れた言語を目指していた。ベル研究所のダグラス・マッキルロイとロバート・モリスは、OSを記述するためにPL/IのサブセットのEPLとコンパイラを開発することになった。しかし、コンパイラ開発は33ヶ月かかり、Multicsの開発が遅れることになった。
GEがMultics用に設計したGE 645は、割り込み用クロック、入出力制御、仮想記憶のアドレス管理に対応するプロセッサを2基搭載し、総容量512kワードの3つのメモリブロック、2つの入出力コントローラ、待ち行列機構を備えた磁気ドラム(4Mワード)を装備して、67年1月にMITに納入された。
このマシンの命令処理速度は0.44MIPSで、IBM 7094の0.35MIPSより25%しか高速化できなかった。SMPによる性能向上が難しいことを示すことになったが、Multicsはプロセッサとメモリの資源配分を稼働中に変更できる最初のシステムで、2プロセッサで1台のマシンとしてタイムシェアリング・サービスを提供しながら、資源の1部を独立したコンピュータ(パーティション)としてOSの新バージョンの評価などに使うことができた。
Multicsは、64年から69年10月までに年平均約150人を動員して、135kB強のカーネルとプログラム・モジュールを約1,500個(約4.5MB相当)を開発した。MulticsはCTSSのツリー型の階層型ファイルシステムを継承し、プログラム、データ、周辺機器などに名前をつけて扱うことを可能にした。また、周辺機器には通信手段の定義ファイルを提供し、周辺機器メーカーがデバイスドライバを用意した周辺機器はMulticsで利用できた。MulticsはOSへの攻撃や同時に実行するプログラムの悪影響を防ぐために、セキュリティ機能を備えていた。プロテクション・リングというセキュリティ機構は、カーネルに最も高い特権を与え、他のプログラムに優先度に応じたリング番号を付与し、異なるリング間の干渉を制限でき、今日のプロセッサでも利用されている。