Multics とは?ページ内リンク ↓ウィキペディア(Wikipedia)記事 ↓Yahoo!知恵袋Multicsは1960年代に開発されたタイムシェアリングオペレーティングシステムであり、後世に多大な影響を与えた。名の由来は「Multiplexed Information and Computing Service」による。 出典: 『ウィキペディア(Wikipedia)』 MULTICS 出典: 『はてなダイアリー』 関連商品
Ditte Andersson /
最安値(新品): ¥ 1,131
最安値(中古): ¥ 1,133
|
目次 |
Multicsの元の計画と開発は1964年に、MIT(フェルナンド・J・コルバトら)を中心として、AT&Tベル研究所およびゼネラル・エレクトリック(GE)社の独創的な共同プロジェクトとして始まった。しかし1969年にベル研が見切りをつけ脱落(これが結果としてUNIXを生んだ)、さらに翌年GEのコンピューター部門がハネウェルにMulticsもろとも買収されている。
MulticsはGE社が商品化しようとしており、結果としてハネウェルが商品化したが、あまり成功しなかった。しかし、コンピュータ市場に与えた影響は大きく、様々な斬新で貴重なアイデアが盛り込まれている。
高可用性を目指して様々な機能が盛り込まれ、電話や電力サービスのような「コンピュータ・ユーティリティ」を目標としていた。そのためソフトウェア構造のモジュール化だけでなく、ハードウェアもモジュール化され、必要なリソース(計算機能、主記憶、ディスク装置など)を追加するだけで拡張可能な構造を目指した。ファイル毎のアクセス制御リストによって柔軟な情報共有が可能だが、必要に応じて完全なプライバシーも提供できる。技術者がシステムの性能を分析できる機構も標準で組み込んでいて、様々な性能最適化機構も組み込まれた。
Multicsは「シングル・レベル・ストア」(単一レベル記憶) と呼ばれるデータアクセス法を実装した初期のオペレーティングシステムである。これは、(Multicsではセグメントと呼ばれる)ファイルとプロセスのアドレス空間の明確な区別を排除する考え方である。プロセスのメモリはセグメントをそのアドレス空間にマップすることで構成される。その読み書きにはプロセスは通常のCPUの命令を使い、オペレーティングシステムがその更新内容がディスクに反映されるよう働く。POSIXの用語で言えば、これは全てのファイルがmmap()で扱われることと同じである。しかし、MulticsにはUNIXなどにあるようなファイルをマッピングする以外のプロセスのメモリという概念がなかった。「全て」のメモリが何らかのセグメント(ファイル)の一部であり、ファイルシステムに対応する場所が存在する。これはプロセスやカーネルのスタックなどに使われるメモリでも同様である。
これが次の大きなアイデアを生み出すこととなった。動的リンクである。動作中のプロセスは新たなセグメントをそのアドレス空間に追加するよう要求でき、そのセグメントにはコードが入っていて実行できるのである。これにより、アプリケーションは最新版のルーチンを自動的に使用可能となり、各ルーチンは別々のセグメントとなっていて、最初にそのルーチンを呼び出そうとしたときに読み込まれるようになった。異なるユーザーが実行させている異なるプロセスの間では、このようなライブラリセグメントの検索ルールを個別に設定でき、ユーザー毎に異なるバージョンのルーチンを自動的に使用することができた。Multicsのセキュリティ機能を適切に設定すると、あるセグメント内のコードが別のプロセス内のデータ構造にアクセスできるという重要な機能もあった。
従って、デーモンとして動作しているアプリケーションがあったとき、別のユーザープロセスが単純に普通の手続き呼び出しを行うと、そのデーモンにアクセスするコードセグメントが動的にリンクされて実行されるといった仕掛けが可能であった。そのようなコードセグメントはデーモンの持つデータ構造を更新することもできる。要求を登録完了したら、制御は元のユーザープロセスのコードに戻される。
これらを駆使したとき、今日一般に使われているオペレーティングシステムでも不可能なことができるという点は注目に値する。1960年代からコンピュータは格段に進歩しているのにもかかわらずである。もちろん、もっと制限された形でこれらの機能は実現され使われている。
Multicsはまた、積極的なオンライン構成変更をサポートした。CPUもメモリバンクもディスクドライブもシステム動作中に追加したり削除したりすることが可能だった。実際、MITのシステムではこれが普通に行われていた。ソフトウェアの開発においてマルチプロセッサシステムを二つに論理的に分割し、一方を新たなOSの評価に使用するのである。このとき、段階的にリソースを削除していって、通常のタイムシェアリングシステムの構成を小さくし、削除したリソースで2台目のシステムを構成する。この間、タイムシェアリングシステムはそのまま動作し続けていた。これは初期のマルチプロセッサシステムの1つでもあり、今日大型のサーバなどで行われているパーティショニング機能の先駆けでもある。
Multicsはコンピュータセキュリティについても特筆すべきものがあった。Multicsはセキュリティを考慮して設計された最初のオペレーティングシステムの1つである。しかし、初期のMulticsは何度も侵入されている。そのためさらなるセキュリティ強化が行われた。第二世代のハードウェアではリングプロテクションが導入され、侵入はほとんどなくなったのである。
階層型ファイルシステムを初めて採用しただけでなく、ファイル名を任意の長さで自由に設定できるようにもなっている。ファイルやディレクトリは複数の名前を持ち(長い名前と短い名前)、ディレクトリ間のシンボリックリンクもサポートされた。今日では一般的なカーネル内でのプロセス毎のスタックも初めて採用され、セキュリティリング毎にスタックが分離された。Multicsの主力開発言語は高級言語のPL/Iである。当時高級言語を用いてOSを記述した例はほとんどなく、それはUNIXの初期の実装がアセンブラ上で行われていたことからも伺える。ただし、バロース B5000システムはMulticsに先行してALGOLを使用している。
Multicsは当初GE-645メインフレーム(36ビットシステム)上で開発された。後に ハネウェル 6180 シリーズ上で動作している。
ベル研究所は1969年にプロジェクトから撤退した。当時Multicsに関わっていた人々の一部がUNIXシステムの開発に移行した。表面上、UNIXはコマンドの命名法まで含めた多くの領域で Multics の影響を示している。しかし設計思想は全く異なっており、可能な限りシステムを小さく保とうとしていた。つまり、Multics で最も問題と思われた部分で違いを見せたのである。"Unix"という名称(元々は "Unics")は "Multics" からの連想である。Multics の M が Multiplexed(多重化)であるのと逆に、UNIX の U は Uniplexed(単一化)だと噂された。より現実的で直接的な手法を選び、Multicsを否定した設計者の思想がにじみ出ていると言えよう。
ハネウェルは GE のコンピュータ部門を買い取り、1985年ごろまでGEの設計に基づいたシステムを開発し続けた。約80ヶ所の大学や研究所や政府機関でMulticsシステムが稼動した。(Bullとハネウェルの関係で)フランスの大学で1980年代初期にいくつか導入されている。ハネウェルがMulticsのサポートをやめると、ユーザーはUNIXなど他のシステムに移行していった。
最後のMulticsマシンはカナダ国防省 (Department of National Defence) にあるマシンで、2000年10月31日に停止された。
当時としては巨大と思われたMulticsのカーネルは、135Kバイト以上のコードで構成されていた。MITに最初に設置された GE-645 の主記憶容量は 512Kワードであり(約2Mバイト)、Multicsはその約10分の1を占めていたに過ぎない。
他の方法で測定すると、OS以外のPL/Iコンパイラやユーザーコマンドやライブラリを含めた全コードは1500個のソースモジュールから構成されている。各モジュールが約200行と仮定すると、コンパイルによって生成されるコードは約4.5Mバイトとなる。これは2006年現在の感覚では小さいが、当時としては巨大だった。
MulticsのコンパイラはCPU性能を引き出すことよりもコードサイズを小さくするよう最適化されていた。例えば、「オペレータ」と呼ばれる小さなサブルーチンを多用している。コードサイズを小さくするという選択は Multics のような主記憶が高価なマルチユーザーシステムでは良い選択であった。
「Multicsは完成せず出荷されなかった」というのが一般通説だが、これは事実ではない。実際にはGE及びハネウェルから商用製品として販売されており、一定の成果を挙げたようである。(Myths about Multicsを参照。)
またUNIXとの対比で常に挙げられるパフォーマンスの悪さは、後に70半ばから80年代に至ってハードウェア性能の向上から解決している。Multicsは新奇なアイデアを貪欲に取り込んだ当時としては先進的なOSであり、現実解をとったUNIXとの比較はそれほど簡単ではない。
GEのGECOS、ハネウェルのGCOS、日本電気のACOSは、Multicsの系統といえるOSである。
Multicsに関しては様々な文献がある。完全なリストはここにある。最も重要な文献を以下に挙げる。
いずれも英文
PageRank5以上の相互リンク
・相互リンクスクエア
(PageRank 5)
・相互リンク インプロス
(PageRank 5)
→便利!NINJA TOOLS
→FC2検索
用語
Wikipedia
YouTube
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |