歴史
IBM CP-40
CP-40はCP-67の研究の前身であり、これはIBMの当時の革命的なCP / CMSの一部でした。IBMSystem / 360 Model 67の仮想マシン/仮想メモリタイムシェアリングオペレーティングシステムであり、 IBMのVMファミリー。 CP-40は、クライアントOSの複数のインスタンスを実行しました。特に、CMSであるCambridge Monitor Systemは、同じ取り組みの一環として構築されました。 CP-67と同様に、CP-40とCMSの最初のバージョンはIBMのケンブリッジ科学センター(CSC)スタッフによって開発され、Project MACおよびLincoln LaboratoryのMIT研究者と緊密に協力しています。 CP-40 / CMS実稼働の使用は1967年1月に開始されました。CP-40は、特別に変更された固有のIBM System / 360モデル40で実行されました。
プロジェクトの目標
CP-40は1回限りの研究システムでした。宣言された目標は次のとおりです。
- ポキプシーで働いているSystem / 360 Model 67チームに研究成果を提供します。チームは、まだ実証されていない仮想メモリの概念で新境地を開いていました。
- ケンブリッジでのCSCのタイムシェアリング要件をサポートします。
しかし、重要な非公式の使命もありました。MITのようなタイムシェアユーザーをサポートするIBMのコミットメントと能力を実証することです。 CP-40(およびその後継)は、技術的および社会的な観点から目標を達成しました。仮想マシンの実行可能性を証明し、タイムシェアユーザーの文化を確立し、リモートコンピューターサービス業界を立ち上げました。しかし、プロジェクトは、タイムシェアリングとバッチ処理をめぐるIBMの内部政治戦争に巻き込まれました。そして、最終的にIBMからMultics、UNIX、TENEX、およびさまざまなDECオペレーティングシステムなどのシステムに変わった学術コンピューターサイエンスコミュニティの心をつかむことができませんでした。ただし、最終的には、CP-40プロジェクトで開発された仮想化の概念はさまざまな分野で実を結び、今日でも重要です。
特徴
CP-40は完全な仮想化を実装した最初のオペレーティングシステムでした。つまり、他のS / 360オペレーティングシステムをインストール、テストできるように、ターゲットコンピューターシステム(S / 360-40)のすべての側面をサポートする仮想マシン環境を提供しました、スタンドアロンマシンのように使用されます。 CP-40は14の同時仮想マシンをサポートしました。各仮想マシンは「問題状態」で実行されました。I/ O操作などの特権命令は例外を引き起こし、その後、制御プログラムによってキャッチされ、シミュレートされました。同様に、メインメモリに存在しない仮想メモリの場所への参照はページフォールトを引き起こしますが、これも仮想マシンに反映されるのではなく、制御プログラムによって処理されました。この実装の詳細は、CP / CMS(アーキテクチャ)に記載されています。
CP-40の基本アーキテクチャとユーザーインターフェイスはCP-67 / CMSに引き継がれ、これがIBMの現在のVM製品ラインに進化しました。
ハードウェアプラットフォーム
Model 67はCP-40の構築には使用できなかったため、CSC用に連想メモリ(「CATボックス」)に基づくカスタム仮想メモリデバイスが設計および構築されました。これには、特別に変更されたSystem / 360 Model 40に対するハードウェアとマイクロコードの両方の変更が含まれていました。これらの変更により、System / 360ハードウェアの完全仮想化に必要な技術がユニットに与えられました。この変更されたモデル40は、タイムシェアユーザーの同じコミュニティ(特にMITのProject MACとBell Laboratories-これらのサイトは両方ともIBMの販売失敗が顕著になりました)のニーズを満たすことを目的としたモデル67の設計に影響を与えました。
この期間中にIBMによって3つの異なる仮想メモリシステムが実装されました。
- S / 360-67のオリジナルデザインの一部である「Blaauw Box」(Gerry Blaauwの名前)
- CP-40を実行するためにCSCのS / 360-40に追加された「CATボックス」(Cambridge Address Translator)
- 1972年にS / 370シリーズの追加として発表された「DATボックス」(動的アドレス変換)
これらのシステムはすべて異なっていましたが、家族の類似点がありました。 CP-40のCATボックスは重要なマイルストーンでした。 Pugh et al。 CP-40仮想メモリハードウェアに関するIEEEの論文を引用し、 「動的なアドレス変換を高速化するための並列検索レジスタバンクが含まれている点でユニークである」と述べています。 -連想メモリを登録し、360/40に統合しました。比類のない結果は、1966年初頭にケンブリッジに出荷されました。」
仮想化のサポートはCSCの修正されたモデル40の明確な目標でしたが、これは明らかに元のモデル67設計のケースではなかったことに注意することが重要です。仮想化機能が最終的に-67に実装され、CP-67 / CMSの成功を可能にしたという事実は、CSCチームの粘り強さと説得力を物語っています。
CP-40でのCMS
CMSは、1964年にCSCで最初に構築され、CP-40の下で「クライアント」オペレーティングシステムとして実行されました。 CMSプロジェクトリーダーはJohn Harmonでした。任意のS / 360オペレーティングシステムをCP-40仮想マシンで実行できますが、対話型のタイムシェアユーザーをサポートするには、新しいシンプルなシングルユーザーの対話型オペレーティングシステムが最適であると判断されました。これにより、CTSSのようなマルチユーザーシステムを実行する複雑さとオーバーヘッドが回避されます。 (これをIBMのOS / MVT-TSOおよびその後継と比較してください。基本的には、IBMバッチオペレーティングシステムの下で単一タスクとして実行されるタイムシェアリングオペレーティングシステムです。CMSでは、各対話ユーザーがプライベート仮想マシンを取得します。)
1965年9月までに、多くの重要なCMS設計の決定が既に行われていました。
- 使いやすいコマンドで、可能な限りデフォルトモードの不要なパラメーターを使用(使いやすさとトレーニング、およびジョブ制御要件を最小限に抑えるため)
- ファイルシステムコマンドとマクロの基本セット。ファイル名、ファイルタイプ、およびファイルモードに基づく単純なファイル命名規則(ファイルモード=論理ディスク識別子またはミニディスク、ドライブ文字割り当ての形式)
- 相対レコード番号で読み書きできる固定サイズのブロックにマッピングされたレコード
- 特別な「作成」操作を必要とせずに、単に書き込むだけで作成できるファイル
- デフォルトのファイルモード。固定された順序でディスクを検索できます
これらは、困難なファイルの命名、ジョブ制御(JCL経由)、およびIBMの「実際の」オペレーティングシステムの他の要件からの抜本的な出発点でした。 (これらの概念の一部は、Control Data CorporationやDECなどの他のベンダーのオペレーティングシステムの目標でした。)
フラットディレクトリ構造のCMSファイルシステムの設計は、意図的にシンプルに保たれました。 Creasy notes:「それぞれが単一のディレクトリを持つ複数のディスクのこの構造は、シンプルだが便利であるように選択されました。ファイルが共通領域に保存されるマルチレベルのリンクディレクトリは、設計を始めたときの設計傾向でした。設計を簡素化しました。実装の複雑さを軽減するために、このコンポーネントとCMSの他のコンポーネントを使用します。
CMSの下で実行されているアプリケーションプログラムは、同じアドレススペース内で実行されました。彼らは、CMS仮想マシン内の低メモリに常駐するCMSニュークリアスへのシンプルなプログラミングインターフェイスを介して、CMSファイルシステムなどのシステムサービスにアクセスしました。さまざまなシステムコールが提供されましたが、そのほとんどは現在のCMSプログラマーにとってなじみのあるものです。 (アプリケーションはCMS仮想マシンで実行されているため、CMSデータを上書きしたり、特権命令を使用したり、仮想マシンを引き継いだりクラッシュさせる可能性のある他のアクションを実行したりすることで、誤動作する可能性があります。もちろん、他の仮想マシンに影響はありませんが、これらはすべて相互に分離されているだけでなく、基盤となる制御プログラムを損傷することもありません。ほとんどのオペレーティングシステムとは異なり、CPクラッシュはアプリケーションエラーに起因することはほとんどなく、したがって比較的まれです。
履歴ノート
以下のメモでは、主にPugh、Varian、およびCreasyからの短い引用を提供し、CP-40の開発コンテキストを示しています。著者の視点が解釈に色を付けるため、ここでは、言い換えではなく直接引用が提供されています。追加のコンテキストについては、CP / CMSの履歴も参照してください。
- CP-40プロジェクトの起源:
- CSCのラスムッセンは、TSS / 360について「非常に疑わしい」と感じ、「C / 40の信頼できるタイムシェアリングシステム」を作成するために、アイドル状態のCSCリソースを使用することを決定しました。プロジェクトリーダーは、CTSSプログラマーであったRobert Creasyでした。
- CP-40の目標には、研究(連想メモリの使用を含むシステムとソフトウェアに関するデータの取得と分析)の実施と、タイムシェアリングによるCSC独自のコンピューティング要件を満たすことの両方が含まれていました。 「プロジェクトの本当の目的はタイムシェアリングシステムを構築することでしたが、他の目的も本物であり、プロジェクトの「対抗戦略的」側面を隠すために常に強調されていました。」 Creasyは、CP / CMSの目標を次のように説明しています。「新しく発表されたIBM System / 360の第2世代のタイムシェアリングシステムである...オペレーティングシステムの研究など、ケンブリッジセンターのすべての活動をサポートし、プログラマー、科学者、秘書、マネージャーによるアプリケーション開発、レポートの準備:開始後すぐに、システムがオペレーティングシステムのパフォーマンスを評価およびテストするツールとして認識され、センターの外部から財政的にサポートされるのが便利でした。 」
- CSCの研究はIBMにとって重要でした。なぜなら、当時は「仮想メモリシステムについてあまり知られていない」からです。バリアンはLWコモーを次のように引用しています。「仮想メモリへのコミットメントは成功した経験なしで支えられました。恐ろしいのは、IBMでこの仮想メモリの方向を設定した人がAtlasが機能しなかった理由を誰も知らなかったことです」 (Comeauは後にAtlasがスラッシングに苦しんだと結論付けました。スラッシングはIBM M44 / 44XとCP-40で観測されるまで研究されませんでした。)
- CP-40設計: Pugh et al。 「1964年に... IBM Researchは、オペレーティングシステムをテストできるシステムを求めていたケンブリッジチームによって選ばれたタイムシェアリングプランナーに仮想マシンの原則の使用を推奨していました。 」 1964年の終わりにCreasyとComeauによって行われた重要な設計上の決定は、CP-40を仮想メモリだけでなく仮想マシン (最初は擬似マシンと呼ばれ、後期がIBM M44 / 44Xプロジェクト– Creasyが「類似しているが独立したアイデアを持っている」と説明します。Creasyは、通常の「問題状態」とは異なる特権「監視状態」命令で構成されるS / 360命令セットに基づいてCPの仮想化戦略を明確に説明します指示:「各仮想マシンプログラムは実際に問題状態で実行されます。...特権命令...仮想マシン内でCPによって再現されます。...」OSを問題状態で実行すると、すべての「トリッキー」命令が自動的に実行されます。これにより、仮想化の主な問題が1つだけ残りました。メモリ参照。「経験...動的なプログラムの再配置の必要性を示唆しました...プログラムを、内外に移動できる部分に分割するために...」互いに独立した記憶を。」
- CP-40仮想マシン:
- IBM M44 / 44Xなど、仮想マシンの概念を含む以前の研究プロジェクトでは、実際のマシンの正確な仮想複製を作成しようとしていませんでした。クリーシー:「十分に近い...「十分に近い」ことは重要ではなかったことを証明するために。」
- CP-40は完全仮想化の大胆な一歩を踏み出し、それぞれが256Kの固定仮想メモリサイズ、ディスクパーティションへのマッピングアクセス、ユニットレコードデバイス(プリンターなど)へのスプールアクセスを備えた14の仮想S / 360環境を作成しました。コモー氏:「CPとCMSの同時開発が許可されました。仮想メモリ環境で非仮想システム、OSとDOSを測定でき、高レベルの整合性とセキュリティも提供されました。」
- 完全な仮想化の価値を明らかにすることに加えて、実験的なIBM M44 / 44Xは、「仮想マシンの概念は必ずしも従来のアプローチよりも効率が悪いとは限らないという考えを植え付けました」-CP-40アーキテクチャのコア前提であり、最終的には非常に成功しました。
- CP-40は、端末管理下ですぐに「最大12台の仮想システム/ 360マシン」をサポートします。 (CP-67は後でCP-40の「悪用された...アドレス変換...および高速化...容量を2倍にする」)。
- CP-40でのCMS:
- CMSとCPを分離する決定について、Creasyは次のように書いています。「CTSSの実装は、システム進化のためのモジュール設計の必要性を示しました。 CP / CMS設計のコンセプトは、コンピューターリソース管理とユーザーサポートの分岐でした。実際、統合設計はCPとCMSに分割されました。」 CTSSプロジェクトで得られた経験の価値は誇張することはできません。
- 初期のCMSについて、Creasyは次のように書いています。初期のCMS開発では、CMSがスタンドアロンで起動するのに十分になるまで、初期のS / 360サポートシステムであるBPSの下でCMSを起動しました。最終的に開発はCPの下の仮想マシンに移行しました。