Multics
[Wikipedia|▼Menu]

Multics
開発者MITGEベル研究所
プログラミング言語PL/1, アセンブリ言語[1]
開発状況開発終了(歴史上のOS)
ソースモデルオープンソース(かつてはプロプライエタリだった)
初版1969年
リポジトリ

web.mit.edu/multics-history/source/Multics_Internet_Server/Multics_sources.html

使用できる言語英語
プラットフォームGE-645メインフレーム、Honeywell 6180 シリーズ
カーネル種別モノリシックカーネル
既定のUIコマンドラインインタフェース
ライセンス当初はプロプライエタリだったが、2007年から MIT License[2]
ウェブサイト ⇒Multicians,
Multics Internet Server
テンプレートを表示

Multics(マルティックス)は1960年代に開発されたタイムシェアリングオペレーティングシステムであり、後世に多大な影響を与えた。名前は「multiplexed information and computing service」に由来している。プロジェクトは1964年にマサチューセッツ州ケンブリッジで始まった。最後まで使われていたカナダ国防省のシステムは、2000年10月30日に退役した[3]
概要

Multicsの元の計画と開発は1964年に、MITフェルナンド・J・コルバトら)を中心として、AT&Tベル研究所およびゼネラル・エレクトリック (GE) の独創的な共同プロジェクトとして始まった。しかし1969年にベル研が見切りをつけ脱落(これが結果としてUNIXを生んだ)、さらに翌年GEのコンピューター部門がハネウェルにMulticsもろとも買収されている。

MulticsはGEが商品化しようとしており、結果としてハネウェルが商品化したが、あまり成功しなかった。しかし、コンピュータ市場に与えた影響は大きく、様々な斬新で貴重なアイデアが盛り込まれている[4]

高可用性を目指して様々な機能が盛り込まれ、電話電力サービスのような「コンピュータ・ユーティリティ」を目標としていた。そのためソフトウェア構造のモジュール化だけでなく、ハードウェアもモジュール化され、必要なリソース(計算機能、主記憶、ディスク装置など)を追加するだけで拡張可能な構造を目指した。ファイル毎のアクセス制御リストによって柔軟な情報共有が可能だが、必要に応じて完全なプライバシーも提供できる。技術者がシステムの性能を分析できる機構も標準で組み込んでいて、様々な性能最適化機構も組み込まれた。
アイデア

Multicsは単一レベル記憶と呼ばれるデータアクセス法を実装した。これは、(Multicsではセグメントと呼ばれる)ファイルプロセスアドレス空間の明確な区別をなくした考え方である。プロセスのメモリはセグメントをそのアドレス空間にマップすることで構成される。その読み書きにはプロセスは通常のCPUの命令を使い、オペレーティングシステムがその更新内容がディスクに反映されるよう働く。POSIXの用語で言えば、これは全てのファイルがmmap()で扱われることと同じである。しかし、MulticsにはUNIXなどにあるようなファイルをマッピングする以外のプロセスのメモリという概念がなかった。「全て」のメモリが何らかのセグメント(ファイル)の一部であり、ファイルシステムに対応する場所が存在する。これはプロセスやカーネルのスタックなどに使われるメモリでも同様である。

この方式の問題点は基本概念の問題ではなく、それが動作していたマシンのアーキテクチャの問題であった。セグメント(ファイル)のサイズが256K×36ビットワード(約1Mバイト)で制限された。従って、それ以上のサイズのファイルを扱うには特別な処理が必要で、これをマルチセグメントファイルと呼んだ。もっとも、巨大なデータベースやグラフィックが使われる以前だったため、この制限にひっかかることはほとんどなかった。

これが動的リンクを生み出した。動作中のプロセスは新たなセグメントをそのアドレス空間に追加するよう要求でき、そのセグメントにはコードが入っていて実行できる。これにより、アプリケーションは最新版のルーチンを自動的に使用可能となり、各ルーチンは別々のセグメントとなっていて、最初にそのルーチンを呼び出そうとしたときに読み込まれるようになった。異なるユーザーが実行させている異なるプロセスの間では、このようなライブラリセグメントの検索ルールを個別に設定でき、ユーザー毎に異なるバージョンのルーチンを自動的に使用することができた。Multicsのセキュリティ機能を適切に設定すると、あるセグメント内のコードが別のプロセス内のデータ構造にアクセスできるという重要な機能もあった。

従って、デーモンとして動作しているアプリケーションがあったとき、別のユーザープロセスが単純に普通の手続き呼び出しを行うと、そのデーモンにアクセスするコードセグメントが動的にリンクされて実行されるといった仕掛けが可能であった。そのようなコードセグメントはデーモンの持つデータ構造を更新することもできる。要求を登録完了したら、制御は元のユーザープロセスのコードに戻される。

Multicsはまた、積極的なオンライン構成変更をサポートした。CPUもメモリバンクもディスクドライブもシステム動作中に追加したり削除したりすることが可能だった。MITのシステムではこれが普通に行われていた。ソフトウェアの開発においてマルチプロセッサシステムを二つに論理的に分割し、一方を新たなOSの評価に使用する。このとき、段階的にリソースを削除していって、通常のタイムシェアリングシステムの構成を小さくし、削除したリソースで2台目のシステムを構成する。この間、タイムシェアリングシステムはそのまま動作し続けていた。これは初期のマルチプロセッサシステムの1つでもあり、今日大型のサーバなどで行われているパーティショニング機能の先駆けでもある。

Multicsはコンピュータセキュリティを考慮して設計された最初のオペレーティングシステムの1つである。しかし、初期のMulticsは何度も侵入されている[5]。そのためさらなるセキュリティ強化が行われた。第二世代のハードウェアではリングプロテクションが導入され、侵入はほとんどなくなった。

階層型ファイルシステムを初めて採用しただけでなく[6]、ファイル名を任意の長さで自由に設定できるようにもなっている。ファイルやディレクトリは複数の名前を持ち(長い名前と短い名前)、ディレクトリ間のシンボリックリンクもサポートされた。今日では一般的なカーネル内でのプロセス毎のスタックも初めて採用され、セキュリティリング毎にスタックが分離された。Multicsの主力開発言語は高級言語のPL/1である。当時高級言語を用いてOSを記述した例はほとんどなく、それはUNIXの初期の実装がアセンブラ上で行われていたことからも窺える。ただし、バロース B5000システムはMulticsに先行してALGOLを使用している[1]
プロジェクトの経緯

Multicsは当初GE-645メインフレーム(36ビットシステム)上で開発された。後にハネウェル6180シリーズ上で動作している。UNIX初期の歴史についての重要な著作[7]がある Peter H. Salus は、「彼らはMulticsをもっと多用途で柔軟なオペレーティングシステムにしようとしたが、それはみじめに失敗した」と述べている[8]。しかしそのような見方は、Multicsでの技術革新の多くが現代の商用システムで採用されている現状から見て的を射ていないとされている[4]

ベル研究所は1969年にプロジェクトから撤退した。当時Multicsに関わっていた人々の一部がUNIXシステムの開発に移行した。Multicsの開発はMITとGEで続けられた。

1970年、ハネウェルはGEのコンピュータ部門を買い取り、1985年ごろまでGEの設計に基づいたシステムを開発し続けた。約80ヶ所の大学や研究所や政府機関でMulticsシステムが稼動した。(Bullとハネウェルの関係で)フランスの大学で1980年代初期にいくつか導入されている。ハネウェルが Multics のサポートをやめると、ユーザーはUNIXなど他のシステムに移行していった。最後まで使われていたカナダ国防省のシステムは、2000年10月30日に退役した。

1985年、NSAのNCSC(国立コンピュータ保安センター)の策定したセキュリティ評価基準 Trusted Computer System Evaluation Criteria(通称オレンジブック)のB2レベルのセキュリティを実装したOSであると認証された。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:32 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef