Multics

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

Multics
Multicslogo.gif
デベロッパーMITGEベル研究所
で書かれているPL / Iアセンブリ言語[1]
動作状態成熟した、歴史的な、エミュレーターが利用可能
ソースモデルオープンソース
初回リリース1969 ; 53年前 (1969
最新のリリース12.7 / 2021年7月28日; 6ヶ月前 (2021-07-28
リポジトリ
で利用可能英語
プラットフォームGE-645メインフレーム、Honeywell6180シリーズマシン
カーネルタイプモノリシックカーネル
影響を受けUnixGEORGE 3ICL VMEPRIMOSDomain / OSStratus VOS
デフォルトの
ユーザーインターフェイス
コマンドラインインターフェイス
ライセンスもともとプロプライエタリで、
2007年以降のフリーソフトウェアMulticsライセンス[2] [3]
前任者互換性のあるタイムシェアリングシステム
公式ウェブサイトwww .multicians .org

Multics( " Multiplexed Information and Computing Service ")は、シングルレベルメモリの概念に基づく影響力のある初期のタイムシェアリング オペレーティングシステムです。[4] [5] Multicsは、「マイクロコンピューターからメインフレームに至るまで、すべての最新のオペレーティングシステムに影響を与えてきた」と言われています。[6]

Multicsの初期計画と開発は、1964年にマサチューセッツ州ケンブリッジで開始されました。もともとは、MITフェルナンドコルバトとのプロジェクトMAC)とゼネラルエレクトリックおよびベル研究所が主導する共同プロジェクトでした。これは、特別に設計されたGE645コンピューターで開発されました。最初のものは1967年1月にMITに届けられました。

Multicsは、General Electricの商用製品として考案され、Honeywellの製品になりましたが、あまり成功していませんでした。Multicsは、その多くの斬新で価値のあるアイデアにより、その欠点にもかかわらず、コンピューターサイエンスに大きな影響を与えてきました。[7]

Multicsには、電話電気のユーティリティと同様のコンピューティングユーティリティをサポートできるように、高可用性を確保することを目的とした多数の機能がありますこれを実現するために、モジュラーハードウェア構造とソフトウェアアーキテクチャが使用されます。システムは、コンピューティング能力、メインメモリ、ディスクストレージなど、適切なリソースを追加するだけでサイズを拡大できます。すべてのファイルに個別のアクセス制御リストがあると、柔軟な情報共有が可能になりますが、必要に応じて完全なプライバシーが確保されます。Multicsには、エンジニアがシステムのパフォーマンスを分析できるようにするための標準的なメカニズムと、適応型のパフォーマンス最適化メカニズムがいくつかあります。

斬新なアイデア

Multicsコマンドリファレンスマニュアル

Multicsは、データアクセス用の単一レベルストアを実装し、ファイル( Multicsではセグメントと呼ばれます)とプロセス メモリの明確な区別を破棄しますプロセスのメモリは、そのアドレス空間にマップされたセグメントのみで構成されます。それらの読み取りまたは書き込みには、プロセスは通常の中央処理装置(CPU)命令を使用するだけであり、オペレーティングシステムは、すべての変更がディスクに保存されていることを確認します。POSIXの用語では、すべてのファイルがmmap()編集されたかのようになります。ただし、Multicsにはプロセスメモリの概念はありません、 Unixのように、マップされたファイルを保持するために使用されるメモリとは別にシステム内のすべてのメモリは、ファイルシステムに表示されるセグメントの一部です。これには、プロセスの一時的なスクラッチメモリ、そのカーネルスタックなどが含まれます。

これの欠点の1つは、セグメントのサイズが256キロワードに制限されていて、 1MBをわずかに超えること でした。これは、Multicsが実行されたマシンの特定のハードウェアアーキテクチャによるもので、36ビットのワードサイズとその半分のサイズ(18ビット)のインデックスレジスタ(セグメント内でのアドレス指定に使用)を備えていました。マルチセグメントファイルと呼ばれる、これより大きいファイルを処理するには、追加のコードを使用する必要がありました。1メガバイトのメモリが法外に高価だった時代、そして大規模なデータベースとその後の巨大なビットマップグラフィックスの前には、この制限に遭遇することはめったにありませんでした。

Multicsのもう1つの主要な新しいアイデアは、動的リンクでした。この場合、実行中のプロセスは、他のセグメントをアドレススペースに追加するように要求できます。セグメントには、実行可能なコードを含めることができます。これにより、アプリケーションは、呼び出された外部ルーチンの最新バージョンを自動的に使用できるようになりました。これらのルーチンは、プロセスが最初に実行を開始しようとしたときにのみ動的にリンクされた他のセグメントに保持されていたためです。プロセスが異なれば、検索ルールも異なる可能性があるため、異なるユーザーが異なるバージョンの外部ルーチンを自動的に使用することになる可能性があります。同様に重要なのは、Multicsセキュリティ機能に適切な設定を行うことで、他のセグメントのコードが別のプロセスで維持されているデータ構造にアクセスできるようになることです。

したがって、一部がデーモンとして(別のプロセスで)実行されているアプリケーションと対話するために、ユーザーのプロセスは、動的にリンクされたコードセグメント(に関連付けられた操作を実装したコードセグメント)に対して通常のプロシージャ呼び出し命令を実行するだけでした。デーモン)。そのセグメントのコードは、デーモンで維持および使用されるデータを変更できます。リクエストを開始するために必要なアクションが完了すると、単純なプロシージャのreturn命令により、ユーザーのプロセスの制御がユーザーのコードに戻りました。

Multicsは、非常に積極的なオンライン再構成もサポートしていました。システムの動作を継続しながら、中央処理装置、メモリバンク、ディスクドライブなどを追加および削除できます。ほとんどの初期のソフトウェア開発が行われたMITシステムでは、マルチプロセッサを分割するのが一般的な方法でした。2番目の動作システムを形成するのに十分なコンポーネントを段階的に削除し、残りのコンポーネントは元のログインユーザーを実行したままにすることで、営業時間外にシステムを2つの別々のシステムに分割します。システムソフトウェア開発テストは2番目のシステムで実行でき、2番目のシステムのコンポーネントはシャットダウンせずにメインユーザーシステムに追加されました。Multicsは複数のCPUをサポートしていました。これは、最も初期のマルチプロセッサシステムの1つでした。

Multicsは、最初から安全なシステムとして設計された最初の主要なオペレーティングシステムでした[8]それにもかかわらず、Multicsの初期のバージョンは繰り返し侵入されました。[9] これは、システムをはるかに安全にし、最新のセキュリティエンジニアリング技術を事前に設定したさらなる作業につながりました。第2世代のハードウェアベースが採用されると、侵入は非常にまれになりました。マスターモードの概念をマルチレベルで改良した、リング指向のセキュリティをハードウェアでサポートしていました[要出典] 米国空軍のタイガーチームプロジェクトは、1973年にコードワードZARFでMulticsのセキュリティをテストしました。1997年5月28日、アメリカ国家安全保障局はこのコードワードZARFの使用を分類解除しました。

Multicsは、階層ファイルシステムを提供した最初のオペレーティングシステムであり[10] [11]、ファイル名はほぼ任意の長さと構文にすることができます。特定のファイルまたはディレクトリは複数の名前(通常は長い形式と短い形式)を持つことができ、ディレクトリ間のシンボリックリンクもサポートされていました。Multicsは、セキュリティリングごとに個別のスタックを使用してでプロセス ごとスタック現在の標準的な概念を最初に使用しました また、コマンドプロセッサを通常のユーザーコードとして実装した最初の製品でもありました。このアイデアは、後でUnixシェルで使用されました。。また、 ALGOLで記述されたBurroughs MCPシステムに続いて、高級言語(Multics PL / I)で記述された最初の言語の1つでもありました[1]

Multicsの安全なコンピューティング環境への展開も、革新的なサポートアプリケーションの開発に拍車をかけました。1975年、MITRECorporationのMorrieGasserは、機密情報を処理する空軍データサービスセンター(AFDSC)などの設備のパスワード要件に対応するために、発音可能なランダムワードジェネレーターを開発しました。推測可能なパスワードを回避するために、AFDSCはパスワードを割り当てることを決定しましたが、手動での割り当てには管理上のオーバーヘッドが多すぎると結論付けました。このように、ランダムワードジェネレータが研究され、PL1で開発されました。音素に基づく代わりに、システムは音素セグメント(英語の2次近似)および他のアプローチに対して統計的にモデル化された発音可能性とランダム性を強化するための他のルールを採用しました。[12]このジェネレーターの子孫は、ProjectGuardian中にMulticsに追加されました。[13]

プロジェクト履歴

1964年、Multicsは当初、 36ビットシステムであるGE-645メインフレーム用に開発されました。Multicsを含むGEのコンピュータ事業は、1970年にHoneywellに買収されました。1973年頃、MulticsはHoneywell 6180マシンでサポートされました。これには、保護リングのハードウェアサポートを含むセキュリティの改善が含まれていました。

ベル研究所は1969年にプロジェクトから撤退しました。そこで取り組んだ人々の何人かは、Unixシステムを作成し続けました。Multicsの開発は、MITとGeneralElectricで継続されました。

Honeywellは、1985年までシステム開発を続けました。大学、産業界、および政府のサイトに、約80百万ドルのサイトが設置されました。フランスの大学システムには、1980年代初頭にいくつかの設備がありました。HoneywellがMulticsのサポートを停止した後、ユーザーはUnixなどの他のシステムに移行しました。

1985年、Multicsは、このレベルで評価された最初のオペレーティングシステム であるNSAの一部門であるNational Computer Security Center (NCSC)から、Trusted Computer System EvaluationCriteriaを使用したB2レベルの安全なオペレーティングシステムとしての認証を発行されました。

Multicsは、1975年から2000年にかけてヨーロッパのGroupe Bullと、米国のBull HN Information SystemsInc。によって配布されました。2006年、Bull SASは、MulticsバージョンMR10.2、MR11.0、MR12.0、MR12.1、MR12.2、MR12.3、MR12.4、およびMR12.5のソースコードを無料のソフトウェアライセンスの下でリリースしました。[14]

Honeywellハードウェア上でネイティブに実行されている最後の既知のMulticsインストールは、2000年10月30日に、カナダのノバスコシア州ハリファックスにあるカナダ国防省でシャットダウンされました。[15]

現在の状況

2006年、Bull HNは、1992年のMulticsの最終リリースであるMR12.5のソースコードをMITにリリースしました。[16] TCP / IPなどの一部のオプション部分を除いて 、システムのほとんどは現在、自由ソフトウェアとして利用可能です。[17]

2014年、Multicsは、エミュレーターを使用して現在のハードウェアで正常に実行されました。[18] エミュレータの1.0リリースが利用可能になりました。[19] Multicsのリリース12.6fは、エミュレータの1.0リリースに付属しており、コマンドラインの呼び出しやビデオシステムを使用した編集など、いくつかの新機能が追加されています。[20]

コマンド

以下は、Multicsコマンドラインインターフェイスでサポートされている一般的なコンピューティングタスク用のプログラムとコマンド[21]のリストです。[22] [23]

遡及的観察

Unixの初期をカバーする本の著者であるPeterH。Salus [24]は、ある立場を述べています。[25] しかし、Multicsの技術革新の多くが現代の商用コンピューティングシステムで使用されているため、この立場はコンピューティングコミュニティで広く信用を失っています。[7]

Multicsの永続的に常駐するカーネルは、当時は大きすぎて複雑すぎると非難されていましたが、コードはわずか135KBでした。比較すると、2007年のLinuxシステムは18MBを占めていた可能性があります。[26]最初のMITGE -645には512キロワードのメモリ(2 MiB)があり、当時は本当に膨大な量でした。カーネルはMulticsメインメモリの適度な部分しか使用していませんでした。

オペレーティングシステムと複雑なPL / 1 コンパイラ、ユーザーコマンド、およびサブルーチンライブラリを含むシステム全体は、約1500のソースモジュールで構成されていました。これらは平均してそれぞれ約200行のソースコードであり、コンパイルされて合計で約4.5 MiBのプロシージャコードが生成されました。これは、当時の標準ではかなり大きいものでした。

Multicsコンパイラは一般に、CPUパフォーマンスよりもコード密度を最適化します。たとえば、短い標準コードシーケンスの演算子と呼ばれる小さなサブルーチンを使用すると、オブジェクトコードサイズと最新のシステムとの比較があまり役に立ちません。高価なメインメモリを備え たマルチユーザーシステムとして、Multicsにとって高いコード密度は最適化の良い選択でした。

商用製品の歴史の中で、Honeywell Information Systems(HIS)(後のHoneywell-Bull)の営業およびマーケティングスタッフは、Honeywellの他のコンピューターラインであるGCOSを実行するDPS 6のビジネスケースに精通しており、快適に作成できると社内でよくコメントされていました。DPS-6とGCOSは、在庫管理、会計、ワープロ、および銀行などの垂直市場アプリケーション向けの評判の高い信頼できるプラットフォームであり、かなりの顧客ベースがありました。対照的に、その時代には、Multicsの柔軟性の可能性を完全に理解することは容易ではなく、その機能は一般に現代のビジネスアナリストのスキルセットの範囲外でした。[要出典]この切断の範囲は、CNO / CSCのPaulStachourによって伝えられた逸話によって具体化されました。

American Telephone and Telegraphが1983年にAT&Tに名前を変更したとき、Honeywellの法務部門のスタッフが現れ、Multicianに、コンピューター化されたすべてのドキュメントで名前を変更するよう手配できるかどうか尋ねました。プロセスがいつ完了することができるか尋ねられたとき、Multicianは「それは終わった」と答えました。スタッフは、数百、おそらく数千のドキュメントを更新する必要があると繰り返しました。Multicianは、スタッフが話しているときにグローバル検索と置換を実行し、実際にタスクが完了したと説明しました。[要出典]

他のプロジェクトへの影響

Unix

Multicsの設計と機能は、元々2人のMulticsプログラマーであるKenThompsonDennisRitchieによって作成されたUnixオペレーティングシステムに大きな影響を与えましたUnixに対するMulticsの表面的な影響は、いくつかのコマンドの命名を含む多くの分野で明らかです。しかし、内部設計の哲学はまったく異なり、システムを小さくシンプルに保つことに重点を置いていたため、当時の限られたコンピューターハードウェアに対する高いリソース要求のために、Multicsの認識された欠陥を修正しました。

Unix(元々はUnics )という名前は、それ自体がMulticsの駄洒落です。UnixUは、Multicsの多重化ではなく、uniplexedを表すと噂されており、より小さなコンピューター向けのより直接的で実行可能なアプローチを支持する、Multicsの複雑さに対する設計者の拒絶をさらに強調しています。 (GarfinkelとAbelson [27]は別の起源を引用しています:ベル研究所のPeter Neumannは、プロトタイプのデモンストレーションを見て、「宦官」と発音されるしゃれの名前UNICSを「去勢されたMultics」として提案しましたが、DennisRitchieはこれを否定した。[28]

ケン・トンプソンは、2007年にPeter Seibelとのインタビューを書き起こし[29]、Multicsを「過剰に設計され、過剰に構築され、すべてを超えています。ほとんど使用できませんでした。彼ら[マサチューセッツ工科大学]は、それでも大成功だと主張していますが、それは明らかにそうではなかった」。MulticsのUnixへの影響について、Thompsonは、「(Multicsについて)実際に使用するのに十分気に入ったのは、階層ファイルシステムとシェルでした。別のプロセスで、他のプロセスに置き換えることができます」と述べています。

その他のオペレーティングシステム

プライムコンピュータオペレーティングシステムであるPRIMOSは、会社の創設者であるWilliamPoduskaによって「靴箱の中のMultics」と呼ばれていました。Poduskaは後にApolloComputerを設立しましたそのAEGISとその後のドメイン/ OSオペレーティングシステムは「マッチボックス内のMultics」と呼ばれることもあり、Multicsの設計を高度にネットワーク化されたグラフィックワークステーション環境に拡張しました。

Stratus Computer(現在のStratus Technologies )のStratus VOSオペレーティングシステムは、Multicsの影響を非常に強く受けており、その外部ユーザーインターフェイスと内部構造の両方が以前のプロジェクトと多くの類似点を持っています。Multicsの高信頼性、可用性、およびセキュリティ機能がStratus VOSで拡張され、安全で信頼性の高いトランザクション処理をサポートするフォールトトレラントコンピュータシステムの新しいラインがサポートされましたStratus VOSは、Multicsの最も直接的な子孫であり、現在も開発と本番環境で活発に使用されています。

システムのあるレベルのコードが別のレベルのリソースにアクセスする能力を制限するMulticsの保護アーキテクチャが、 ICLVMEオペレーティングシステム のセキュリティ機能の基盤として採用されました。

も参照してください

参考文献

  1. ^ a b R. A. Freiburghouse、「The Multics PL / 1コンパイラ」、General Electric Company、マサチューセッツ州ケンブリッジ、1969年。
  2. ^ 「Multicsライセンス(Multics)-オープンソースイニシアチブ」opensource.org 2018年4月11日取得
  3. ^ 「Multicsについての神話」www.multicians.org 2018年4月11日取得
  4. ^ Dennis M. Ritchie、「Unixタイムシェアリングシステムの進化」、Communications of the ACM、Vol。17、1984、pp.365-375。
  5. ^ ダンマーフィー(1996)[1989]。「TOPS-20の起源と発展」
  6. ^ グレゴリー、ネイサン(2018年5月)。TymBeforeLulu.com。p。66. ISBN 97813878247552020年3月29日取得
  7. ^ a b "Multicsに関する神話"www.multicians.org 2018年4月11日取得
  8. ^ Jerome H. Saltzer、「Multicsにおける情報共有の保護と制御」、「Introduction to Multics」、MAC TR-123、Project MAC、ケンブリッジ、1974年2月。pg。2-41。
  9. ^ トムヴァンヴレック(2002)。「空軍がMulticsのセキュリティをどのように破ったか」
  10. ^ 「Multics用語集-F-」www.multicians.org 2018年4月11日取得
  11. ^ RCDaleyおよびPGNeumann、 「二次ストレージ用の汎用ファイルシステム」、AFIPS '65(秋、パートI)1965年11月30日から12月1日の議事録
  12. ^ 「発音可能なパスワードのためのランダムな単語ジェネレータ」マサチューセッツ州ベッドフォード:米国空軍システムコマンド、電子システム部門。1975年11月。ESD-TR-75-97 2021年3月8日取得
  13. ^ ヴァン・ヴレック、トム。「パスワードジェネレータ」2021年3月8日取得
  14. ^ Multicsの歴史MIT
  15. ^ 「Multicsの履歴の日付」2015年9月13日取得DND-Hのシャットダウン(17:08Z 10/30/00)
  16. ^ ヴァン・ヴレック、トム。「Multicsのオープンソース」Multicians.org 2016年4月11日取得
  17. ^ アンソニー、チャールズ。"(電子メール)Re:[dps8m-developers]マルチプロセッサおよび/またはネットワーク化されたMultics"Sourceforge.net 2016年4月11日取得
  18. ^ 「RingZero-Multicsが生まれ変わった」WikidotCom 2015年4月11日取得
  19. ^ 「MulticsSimulator」2017年7月9日取得
  20. ^ 「Multicsのインストール」2020年5月19日取得
  21. ^ Honeywell Bull、Inc。(1985年2月)。Multicsコマンドとアクティブ機能(AG92-06)(PDF)2021年1月10日取得
  22. ^ 「UnixとMultics」
  23. ^ 「Multicsコマンド」
  24. ^ Salus、Peter H.(1994)。UNIXの四半世紀(1995年1月に訂正を加えて転載。編)。マサチューセッツ州レディング:Addison-WesleyPub。Co. ISBN 978-0-201-54777-1
  25. ^ ワード、マーク(2009年8月20日)。「Unixの40年」BBCニュース2010年4月27日取得 ピーター・サルスの引用。
  26. ^ Collings、Terry; ウォール、カート(2007年4月10日)。Red Hat Linuxネットワークおよびシステム管理(第3版)。ジョン・ワイリー&サンズ。p。668. ISBN 978-0-7645-9949-12017年2月4日取得
  27. ^ ガーフィンケル、シムソンとアベルソン、ハロルド。情報社会の建築家:MITのコンピュータサイエンス研究所の35年。MIT Press、1999。ISBN978-0262071963 
  28. ^ Karn、Phil(1981年10月28日)。「UNIXの起源」ニュースグループ:  fa.unix-wizardsUsenet:[email protected] 2014年4月11日取得 
  29. ^ ピーター・サイベル。仕事中のコーダー:プログラミングの技術についての考察。APress Publications、2007。ISBN978-1-4302-1948-4 

さらに読む

文献には、Multicsとそのさまざまなコンポーネントに関する多数の論文が含まれています。かなり完全なリストは、Multics Bibliographyページと、2番目のより簡単な1994 Multics bibliography(テキスト形式)で入手できます。最も重要および/または有益なものを以下に示します。

技術的な詳細

セキュリティ

外部リンク