| 開発者 | IBM ケンブリッジ科学センター(CSC) |
|---|---|
| OSファミリー | CP/CMS |
| 作業状態 | 歴史的 |
| 初回リリース | 1967年1月 |
| マーケティングターゲット | IBM メインフレームコンピュータ |
| 利用可能 | 英語 |
| プラットフォーム | 特別に改造されたユニークなIBM System/360 Model 40 |
| デフォルトの ユーザーインターフェース | コマンドラインインターフェース |
| ライセンス | 独自 |
| 後継者 | CP-67 |
CP-40は、 CP-67の研究の前身であり、CP-67は、IBMの当時革命的だったCP[-67]/CMSの一部でした。CP [-67]/CMSは、IBM System/360 Model 67用の仮想マシン/仮想メモリの タイムシェアリング オペレーティングシステムであり、IBMのVMファミリーの親です。CP-40は、クライアントオペレーティングシステムの複数のインスタンスを実行しました。特に、同じ取り組みの一環として構築されたCMS (ケンブリッジモニターシステム) [ 1]です。CP-67と同様に、CP-40とCMSの最初のバージョンは、IBMのケンブリッジサイエンティフィックセンター(CSC)のスタッフによって開発され、プロジェクトMACおよびリンカーン研究所のMITの研究者と密接に協力しました。CP-40/CMSの生産使用は1967年1月に開始されました。CP-40は、特別に改造された独自のIBM System/360 Model 40で実行されました。
プロジェクトの目標
CP-40 は単発の研究システムでした。宣言された目標は次のとおりです。
- ポキプシーで作業していた System/360 Model 67 チームに研究情報を提供します。このチームは、仮想メモリというまだ証明されていない概念で新境地を開拓していました。
- ケンブリッジにおける CSC のタイムシェアリング要件をサポートします。
しかし、重要な非公式の使命もありました。それは、MIT のようなタイムシェアリング ユーザーをサポートする IBM の取り組みと能力を示すことでした。CP-40 (およびその後継) は、技術的および社会的観点から目標を達成しました。つまり、仮想マシンの実行可能性を証明し、タイムシェアリング ユーザーの文化を確立し、リモート コンピュータ サービス産業を立ち上げることに貢献しました。このプロジェクトは、タイムシェアリングとバッチ処理をめぐる IBM 社内の政治的争いに巻き込まれ、学術的なコンピュータ サイエンス コミュニティの心をつかむことができず、最終的に IBM からMultics、UNIX、TENEX、およびさまざまなDECオペレーティング システムなどのシステムへと移行しました。最終的に、CP-40 プロジェクトで開発された仮想化の概念は、さまざまな分野で実を結び、今日でも重要な意味を持ち続けています。
特徴
CP-40 は完全な仮想化を実装した最初のオペレーティング システムでした。つまり、ターゲット コンピュータ システム (S/360-40) のすべての側面をサポートする仮想マシン環境を提供し、他の S/360 オペレーティング システムをスタンドアロン マシンのようにインストール、テスト、および使用できました。CP-40 は 14 の同時仮想マシンをサポートしました。各仮想マシンは「問題のある状態」で実行されました。I/O 操作などの特権命令によって例外が発生し、制御プログラムによってキャッチされてシミュレートされました。同様に、メイン メモリに存在しない仮想メモリ位置への参照によってページ フォールトが発生しますが、これも仮想マシンに反映されるのではなく、制御プログラムによって処理されました。この実装の詳細については、CP/CMS (アーキテクチャ)を参照してください。
CP-40 の基本的なアーキテクチャとユーザー インターフェイスはCP-67/CMSに引き継がれ、IBM の現在の VM 製品ラインへと進化しました。
ハードウェアプラットフォーム
モデル67 はCP-40 の製造には利用できなかったため、連想メモリ (「CAT ボックス」[2] ) に基づくカスタム仮想メモリ デバイスが CSC 用に設計および構築されました。このデバイスには、特別に改造された System/360 モデル 40 のハードウェアとマイクロコードの両方の変更が含まれていました。これらの変更により、ユニットにはSystem/360 ハードウェアの完全な仮想化に必要なテクノロジが与えられました。この改造されたモデル 40 は、同じタイムシェアリング ユーザー コミュニティ (特に MIT の Project MAC とベル研究所- ただし、これらのサイトはどちらも IBM の販売で大きな失敗となりました) のニーズを満たすことを目的とした、次のモデル 67 の設計に影響を与えました。
この期間中に IBM によって 3 つの異なる仮想メモリ システムが実装されました。
- 「Blaauw Box」(Gerry Blaauwにちなんで名付けられました)は、S/360-67 のオリジナル デザインの一部です。
- CP-40 を実行するために CSC の S/360-40 に追加された「CAT ボックス」(ケンブリッジ アドレス トランスレータ)
- 1972 年にS/370シリーズの追加機能として発表された「DAT ボックス」(Dynamic Address Translation)
これらのシステムはすべて異なっていましたが、類似点がありました。CP-40 の CAT ボックスは重要なマイルストーンでした。Pughら[3] は、CP-40 仮想メモリ ハードウェアに関するIEEE 論文[4]を引用し、このハードウェアは「動的アドレス変換を高速化するための並列検索レジスタ バンクが含まれているという点でユニークでした。ケンブリッジから提供された資金で、IBM のエンジニアは 64 レジスタの連想メモリを構築し、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 設計に関する多くの重要な決定がすでになされていました。
- 可能な限りデフォルト モードの不要なパラメータを備えたユーザー フレンドリなコマンド (使いやすさとトレーニングのしやすさ、およびジョブ制御要件の最小化のため)
- ファイルシステムのコマンドとマクロの基本セット。ファイル名、ファイルタイプ、ファイルモード (ファイルモード = 論理ディスク識別子またはミニディスク、ドライブ文字の割り当て形式)に基づく単純なファイル命名規則。
- 固定サイズのブロックにマップされたレコード。相対レコード番号で読み取りまたは書き込みが可能です。
- 特別な「作成」操作を必要とせず、単に書き込むだけで作成できるファイル
- デフォルトのファイルモード。ディスクを固定順序で検索できます。
これらは、IBMの「実際の」オペレーティングシステムの難しいファイル名、ジョブ制御(JCL経由)、およびその他の要件からの根本的な逸脱でした。[5] (これらの概念のいくつかは、 Control Data CorporationやDECなどの他のベンダーのオペレーティングシステムの目標でした。)
CMS ファイルシステムの設計は、フラットなディレクトリ構造を持ち、意図的にシンプルに保たれました。Creasy 氏は次のように記しています。「複数のディスクにそれぞれ 1 つのディレクトリを持つこの構造は、シンプルでありながら便利であるように選択されました。私たちが始めたとき、共通領域にファイルが格納された、複数レベルのリンクされたディレクトリが設計のトレンドでした。私たちは、実装の複雑さを軽減するために、これと CMS の他のコンポーネントの設計を簡素化しました。」[6]
CMS で実行されるアプリケーション プログラムは、同じアドレス空間内で実行されました。これらのプログラムは、 CMS 仮想マシン内の低メモリにあるCMS 中核へのシンプルなプログラミング インターフェイスを介して、CMS ファイル システムなどのシステム サービスにアクセスしました。さまざまなシステム コールが提供されましたが、そのほとんどは現在の CMS プログラマーにはおなじみのものです。(アプリケーションは CMS 仮想マシンで実行されるため、CMS データを上書きしたり、特権命令を使用したり、仮想マシンを乗っ取ったりクラッシュさせたりするその他のアクションを実行したりして、潜在的に不正動作を行う可能性があります。もちろん、そうすることで、すべて相互に分離されている他の仮想マシンに影響を与えることはできません。また、基礎となる制御プログラムに損傷を与えることもできません。ほとんどのオペレーティング システムとは異なり、CP クラッシュはアプリケーション エラーによって発生することはめったにないため、クラッシュ自体も比較的まれです。)
歴史的記録
以下の注記は、主に Pugh、Varian、Creasy [参考文献を参照] からの短い引用で、CP-40 の開発状況を示しています。著者の視点が解釈に影響を与えるため、ここでは言い換えではなく直接引用しています。追加の背景については、 CP/CMS の歴史も参照してください。
- CP-40 プロジェクトの起源:
- CSCのラスムセンはTSS/360に「非常に疑念」を抱き、CSCの遊休リソースを「S/360用の信頼できるタイムシェアリングシステム」の開発に活用することを決定した。このシステムはCP-40として知られるようになった。プロジェクトリーダーはCTSSプログラマーだったロバート・クリシーであった。[7]
- CP-40 の目標には、研究の実施 (連想メモリの使用を含むシステムとソフトウェアに関するデータの取得と分析) と、タイムシェアリングによる CSC 自身のコンピューティング要件の充足の両方が含まれていました。Varian は次のように付け加えています。「プロジェクトの真の目的はタイムシェアリング システムを構築することでしたが、他の目的も本物であり、プロジェクトの「反戦略的」側面を隠すために常に強調されていました。」Creasy は CP/CMS の目標を次のように説明しています。「新しく発表された IBM System/360 用の第 2 世代タイムシェアリング システムであり、ケンブリッジ センターのすべての活動をサポートするもので、オペレーティング システムの研究、アプリケーション開発、プログラマー、科学者、秘書、マネージャーによるレポート作成など、さまざまな活動が含まれます。開始後すぐに、このシステムはセンターの外部からオペレーティング システムのパフォーマンスを評価およびテストするためのツールとして認識され、財政的に支援されることが好都合でした。」[8]
- CSC の研究は IBM にとって重要だった。なぜなら当時は「仮想メモリ システムについてはほとんど知られていなかった」からである。バリアンは LW コモーの次の言葉を引用している。「[IBM の] 仮想メモリへの取り組みは、成功した経験に裏打ちされたものではなかった。… 恐ろしいことに、IBM でこの仮想メモリの方向性を定めていた誰も、[当時の仮想メモリ システムである Ferranti] Atlas が動作しない理由を知らなかった。」 (コモーは後に、Atlas がスラッシングに悩まされていたと結論付けたが、これはIBM M44/44Xと CP-40 で観察されるまで研究されていなかった。) [9] [10]
- CP-40 の設計: Pughらは次のように書いています。「1964 年、IBM リサーチは、タイムシェアリング プランナーに仮想マシンの原理の使用を推奨していました。[これは] オペレーティング システムをテストできるシステムなどを求めていた Cambridge [CSC] チームによって採用されました。」 1964 年末に Creasy と Comeau が下した重要な設計上の決定は、CP-40 を仮想メモリだけでなく仮想マシン(最初は擬似マシンと呼ばれていたが、IBM M44/44X プロジェクトから後者の用語が流用された。Creasy は、このプロジェクトを「類似しているが独立したアイデア」を持つと説明している) に基づいて構築することだった。[11] Creasy は、通常の「問題状態」命令とは区別される特権「スーパーバイザー状態」命令で構成される S/360命令セットに基づく CP の仮想化戦略を明確に説明している。「各 [CP] 仮想マシン プログラムは、実際には [完全に] 問題状態で実行される... 特権命令は... 仮想マシン内で CP によって再現される...」。OS を問題状態で実行することにより、すべての「トリッキーな」命令はハードウェアによって自動的に傍受される。これにより、仮想化の主な問題は 1 つだけになった。メモリ参照である。「[CTSS での] 経験から... 動的プログラム再配置... によって、メモリ参照を解消する必要があることが示唆された...プログラムを互いに独立してメモリ内外に移動できる部分に分割する。」[12]
- CP-40 仮想マシン:
- IBM M44/44X などの仮想マシンの概念を伴う以前の研究プロジェクトでは、実際のマシンの正確な仮想複製を作成しようとはしていませんでした。Creasy 氏: 「[それらは] 十分に近かったので...『十分に近い』ということは重要ではないことを証明しました。」
- CP-40 は完全な仮想化という大胆なステップを踏み、それぞれ 256K の固定仮想メモリ サイズ、ディスク パーティションへのマップされたアクセス、ユニット レコード デバイス (プリンタなど) へのスプール アクセスを備えた 14 の仮想 S/360 環境を作成しました。Comeau 氏: 「[完全な仮想化の作成] により、CP と CMS の同時開発が可能になりました。これにより、仮想メモリ環境で非仮想システム、OS、DOS を測定できるようになり、高いレベルの整合性とセキュリティも実現しました。」[13] [14]
- 実験的なIBM M44/44Xは、完全な仮想化の価値を明らかにしただけでなく、「仮想マシンの概念は、従来のアプローチよりも必ずしも効率が劣るわけではないという考えを植え付けました」。これはCP-40アーキテクチャの中心的な前提であり、最終的には非常に成功したことが証明されました。[15]
- CP-40 はすぐに、端末制御下で「最大 12 台の仮想 System/360 マシン」をサポートするようになりました (ほとんどの情報源では 14 台とされています)。 (CP-67 は後に「アドレス変換を活用し、速度を上げて、CP-40 の容量を 2 倍にしました」[16] )
- CP-40 に基づく CMS:
- CMS と CP を分離するという決定について、Creasy は次のように書いています。「CTSS の実装は、システムの進化にはモジュール設計が必要であることを明らかにしました。生産システムとしては成功しましたが、そのスーパーバイザ設計の相互接続性と依存性により、拡張と変更が困難でした。CP/CMS 設計の重要な概念は、コンピュータ リソース管理とユーザー サポートの分岐でした。実際、[CTSS] の統合設計は CP と CMS に分割されました。」CTSS プロジェクトで得られた経験の価値は、いくら強調してもし過ぎることはありません。[17]
- 初期の CMS について、Creasy は次のように書いています。「CMS は、共有、割り当て、保護の問題に煩わされることなく、単一のユーザー サービスを提供しました。」[18]初期の CMS 開発では、 CMS がスタンドアロンで起動できるまで、初期の S/360 サポート システムであるBPSの下で CMS を起動していました。最終的に、開発は CP の下の仮想マシンに移行しました。[19]
参照
- CP[-67]/CMS : CP-40の後継として広く使用され、IBMのVMシステムの前身となった。
- CP-40とCP/CMSが建設されたケンブリッジ科学センター
- IBM M44/44X、当時の実験的なページングシステム
- CP/CMS の歴史、CP-40 の創設に至った出来事と問題の概要
- タイムシェアリングシステムの進化
参考文献
- ^ 制御プログラム-67/ケンブリッジモニターシステム (GH20-0857-1) IBM。1971年10月。
- ^ Varian (1997)、p. 11 (「CAT ボックス」)
- ^ Pugh、Johnson、Palmer (1991)、p. 741(第6章の注218)
- ^ AB Lindquist、RR Seeber、LW Comeau (1966 年 12 月)。「連想メモリを使用したタイムシェアリング システム」。IEEEの議事録。54 (12): 1774–1779。doi :10.1109/PROC.1966.5261。
- ^ Varian (1997)、p. 14 – CMSインターフェースの斬新さ
- ^ Creasy (1981)、p. 489 – フラットファイルシステム
- ^ Varian (1997)、pp. 3、9、16 – CP-40プロジェクトの起源
- ^ Creasy (1981)、p. 485 – 設計目標
- ^ W. O'Neill、「動的アドレス再配置ハードウェアを備えたタイムシェアリングマルチプログラミングシステムの使用経験」、Proc. AFIPS Computer Conference 30 (Spring Joint Computer Conference、1967)、pp. 611–621 – IBM M44/44X でのスラッシング
- ^ LW Comeau、「Operating System/360 Paging Studies」、IBM Storage Hierarchy System Symposium、 1966 年 12 月 - Atlas でのスラッシング、Varian (1997) で引用、p. 17。
- ^ Creasy (1981)、p. 485 – IBM M44/44Xに似ているが独立している
- ^ Creasy (1981)、p. 486 – 仮想化戦略:問題状態の実行とアドレス変換
- ^ バリアン(1997)、9、13ページ
- ^ コモー(1982)、pp. 40、42-43、バリアン(1997)、pp. 9、13に引用
- ^ L. Talkington、「良いアイデアであり、まだ成長中」、ホワイトプレーンズ開発センターニュースレター、第2巻第3号(1969年3月)、Varian(1997年)10ページで引用。
- ^ ピュー、ジョンソン、パーマー(1991)、364-365ページ
- ^ Creasy (1981)、p. 485 – CP と CMS の分離
- ^ Creasy (1981)、p. 485 – CMS の範囲
- ^ Varian (1997)、pp. 12、15–16 – BPS での CMS の起動
さらに読む
- Adair, R. J.; Bayles, R. U.; Comeau, L. W.; Creasy, R. J. (1966)。360/40 用の仮想マシン システム (レポート)。マサチューセッツ州ケンブリッジ: IBM、ケンブリッジ サイエンティフィック センター。レポート 320-2007。、Varian (1997) および Creasy (1981) に引用
- Comeau, L. W. (1982 年 9 月)。「CP-40、VM/370 の起源」。SEAS AM82 議事録。
- Creasy, R. J. (1981). 「VM/370 タイムシェアリング システムの起源」(PDF) . IBM Journal of Research & Development . 25 (5): 483–490. doi :10.1147/rd.255.0483.
- Lingquist, A. B.; Seeber, R. R.; Comeau, L. W. (1966). 「連想メモリを使用したタイムシェアリングシステム」Proc. IEEE . 54 (12): 1774–1779. doi :10.1109/PROC.1966.5261.
- Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). IBM 360 および初期の 370 システム。ケンブリッジ MA: MIT プレス。ISBN 0-262-16123-0。
- Varian, Melinda (1997). VM と VM コミュニティの過去、現在、そして未来(PDF) . SHARE 89 セッション 9059-9061.
