| 開発者 | IBM ケンブリッジ科学センター |
|---|---|
| 書かれた | アセンブラ(F) |
| OSファミリー | 仮想マシン |
| 作業状態 | 歴史的 |
| ソースモデル | ソースコード(詳細は本文を参照) |
| 初回リリース | 1968年5月 |
| 最新リリース | 3.2 / 1972 |
| 利用可能 | 英語 |
| プラットフォーム | IBM System/360-67 ;仮想メモリ ハードウェアを備えたSystem/370 (オリジナルの S/370 モデルには存在しない)。実験的なハードウェアでも使用される。 |
| デフォルトの ユーザーインターフェース | コマンドラインインターフェース |
| ライセンス | IBM Type-III ライブラリ(IBM のお客様にはソース コード形式で無償で提供されますが、サポートは提供されません) |
CP/CMS ( Control Program/Cambridge Monitor System ) は、1960年代後半から1970年代前半にかけて廃止されたタイムシェアリング オペレーティングシステムです。優れたパフォーマンスと高度な機能で知られています。 [1] [2] 3つのバージョンのうち、CP-40 /CMSは、CP/CMS仮想マシンアーキテクチャを確立した重要な「ワンオフ」研究システムでした。その後に続いたCP-67 /CMSは、 IBM System/360-67用にCP-40/CMSを再実装したもので、この記事の主な焦点です。最後に、CP-370 /CMSは、 System/370用にCP-67/CMSを再実装したものです。そのままリリースされることはありませんでしたが、1972年に発表されたIBMのVM/370オペレーティングシステム の基礎となりました。
それぞれの実装は、その前身を大幅に再設計し、進化を遂げたものでした。CP-67/CMS は、初めて広く利用できる仮想マシン アーキテクチャでした。IBM は、研究システムM44/44X (部分的な仮想化を使用) とCP-40 (完全な仮想化を使用) でこのアイデアを先駆的に導入しました。
VM ファミリーの前身としての役割に加えて、CP/CMS は、オペレーティング システム(OS) 理論の開発、 IBMの System/370の設計、タイムシェアリング業界、そして今日のフリー ソフトウェア運動を先取りした自立型ユーザー コミュニティの作成において重要な役割を果たしました。
歴史
CP/CMS の基本的なアーキテクチャと戦略のパラメータは CP-40 で確立され、1967 年初頭に IBM の Cambridge Scientific Center で実稼働が開始されました。この取り組みは複雑な政治的、技術的環境の中で行われ、Wikipedia の記事「CP/CMS の歴史」で詳細に議論され、直接の引用によって裏付けられています。
簡単に言うと:
- 1960 年代初頭、IBM は科学計算分野での優位性を維持しようと努め、CTSSや MIT のProject MACなどのタイムシェアリングの取り組みに重点が置かれました。しかし、IBM はSystem/360 という巨大なプロジェクトに注力しており、このプロジェクトによって同社は別の方向へと進みました。
- タイムシェアリング コミュニティは、S/360 にタイムシェアリング機能がないことに失望しました。これは、プロジェクト MACとベル研究所での IBM の主要な売上損失につながりました。IBM の Cambridge Scientific Center (CSC) は、もともとプロジェクト MAC をサポートするために設立されましたが、S/360 用のタイムシェアリング オペレーティング システムを構築することで、タイムシェアリングにおける IBM の信頼を取り戻す取り組みを開始しました。このシステムは、最終的に CP/CMS になります。同じ精神で、IBM は、タイムシェアリング機能を備えた S/360 モデルである IBM System/360-67 と、タイムシェアリング オペレーティング システムであるTSS/360を設計およびリリースしました。TSS は失敗しましたが、タイムシェアリングをめぐる社内の政治的争いや、IBM での CP/CMS の取り組みを廃止するための協調的な取り組みにもかかわらず、360-67 と CP/CMS は成功しました[要出典]。
- 1967 年、CP/CMS の実稼働が CSC の CP-40 で開始され、その後リンカーン研究所やその他の施設の CP-67 で使用されました。1968 年には IBM Type-III ライブラリを通じて利用可能になりました。1972 年までに、CP/CMS はいくつかのリリースを経て、44 のシステムで稼働する堅牢で安定したシステムとなり、S/360-67 で 60 人のタイムシェアリング ユーザーをサポートできるようになりました。また、少なくとも 2 つの商用タイムシェアリング ベンダー ( National CSSとIDC ) が CP/CMS テクノロジを使用して S/360-67 タイム シェアリングを再販していました。
- 1972 年、IBM は S/370 シリーズに仮想メモリを追加するとともに、S/370 用に CP/CMS を再実装した VM/370 オペレーティング システムを発表しました。これにより CP/CMS リリースは終了しましたが、システムはしばらく独立した存在として存続しました。VM リリースにはしばらくソース コードが含まれ続け、VM コミュニティのメンバーは長い間積極的な貢献者であり続けました。
概要
CP/CMS は、 MITと提携している研究開発ラボである
IBM のCambridge Scientific Center (CSC) によって、Robert Creasyのリーダーシップの下構築されました。システムの目標、開発プロセス、リリース、画期的な技術の遺産は、このシステムを当時の他のオペレーティング システムや他の大規模な IBM プロジェクトとは一線を画すものにしていました。これはオープン ソースシステムであり、サポートされていないIBM Type-III Libraryの一部として、すべての IBM 顧客にソース コード形式で無償で提供されていました。CP/CMS ユーザーは、自分自身と他のユーザーをサポートしました。以下の履歴セクションで説明する異常な状況がこの状況につながりました。
CP/CMS は 2 つの主要コンポーネントで構成されます。
- CP (制御プログラム)は、仮想マシン環境を作成しました。広く使用されていたバージョンは、S/360-67 で実行された CP-67 でした。(研究システム CP-40 がアーキテクチャを確立しました。3 番目のバージョンである CP-370 は VM/370 になりました。) 従来のアプローチでは、メモリやその他のリソースをユーザー間で明示的に分割していましたが、CP では、各ユーザーにシミュレートされたスタンドアロンのSystem/360コンピューターを提供しました。各システムでは、ベア マシンで実行される任意の S/360 ソフトウェアを実行でき、事実上、各ユーザーにプライベート コンピューター システムが提供されました。
- CMS、ケンブリッジモニターシステム(コンソールモニターシステム[3]とも呼ばれるが、VMでは会話型モニターシステムに改名)は、インタラクティブなタイムシェアリング用の軽量シングルユーザーオペレーティングシステムでした。CPの仮想マシンでCMSのコピーを多数実行することで(従来の大規模なマルチタスクOSのコピーを複数実行する代わりに)、ユーザーあたりのオーバーヘッドが少なくなりました。これにより、多数の同時ユーザーが1台のS/360を共有できるようになりました。
CP/CMS 仮想マシンのコンセプトは、オペレーティング システムの設計における重要な前進でした。
- CP/CMS は、ユーザーを相互に分離することで、システムの信頼性とセキュリティを大幅に向上させました。
- 各ユーザーに対して完全なスタンドアロン コンピュータをシミュレートすることにより、CP/CMS は、タイムシェアリング専用に設計されたアプリケーションだけでなく、あらゆるS/360 ソフトウェアをタイムシェアリング環境で実行できるようになりました。
- CP/CMS は、軽量 CMS を主要なユーザー インターフェイスとして使用することで、これまでにないタイムシェアリング パフォーマンスを実現しました。さらに、CMS のシンプルさにより、従来の OS よりもユーザー インターフェイスの拡張を簡単に実装できるようになりました。
IBM は CP/CMS を VM/370 製品ラインとして再実装し、1972 年にS/370シリーズに仮想メモリが追加された際にリリースしました。VM/370 の後継製品 ( z/VMなど) は、現在でも広く使用されています。(IBM は CP-40 と同様に CP-67 を再実装しましたが、単に名前を変更してパッケージし直したわけではありません。VM は CP/CMS およびその後継製品と長年共存していました。したがって、CP/CMS を VM ファミリーとは異なる独立した OS と見なすのが適切です。)
フリーソフトウェアとしてのCP/CMS
CP/CMS はソース コード形式で配布され、多くの CP/CMS ユーザーがそのソース コードの調査と修正に積極的に関与していました。ベンダー提供のオペレーティング システムにユーザーが直接関与するのは珍しいことでした。
CP/CMS の時代には、多くのベンダーがオペレーティング システムを機械可読なソース コードで配布していました[明確化が必要]。IBM は、たとえばOS/360、DOS/360、およびその後の IBM の主流オペレーティング システムのいくつかに対して、オプションのソース コードを提供していました。これらすべてのシステムでは、SYSGENプロセスにシステム ソース コードに対する認識も含まれていました。これは、スターター セットのインストール時にも行われる現代のシステムのカーネル ビルドに相当します。 (40 年後、 Hercules エミュレーターを使用して、現在ではパブリック ドメインの一部として扱われているソース コードに基づいて、これらのシステムの化石バージョンを実行できます。)
オペレーティング システムのソース コードの重要性は、時とともに変化してきました。IBMが 1969 年にソフトウェアをハードウェアから分離する前は、OS (および他のほとんどのソフトウェア) はハードウェアのコストに含まれていました。各ベンダーは、システム全体、ハードウェア、ソフトウェアに対して完全な責任を負っていました。このため、配布媒体は比較的重要ではありませんでした。IBM が分離した後、OS ソフトウェアは IBM システム制御プログラム ソフトウェア IBM システム制御プログラム (SCP) ソフトウェアとして配布され、最終的にはオブジェクト コードのみ (OCO) の形式で配布されました。
複雑な理由から、CP/CMS は通常の方法でリリースされませんでした。IBM によるサポートは受けず、IBM スタッフ メンバーによるソフトウェア提供のコレクションであるサポート対象外のIBM タイプ III ライブラリの一部になりました (同様に、顧客によって提供されたソフトウェアはタイプ IV ライブラリを形成しました)。IBM は、このライブラリを顧客に配布し、そのまま使用できるようにしました。このような製品に対する IBM の直接サポートがないため、アクティブ ユーザーは自分でサポートする必要があり、変更と相互サポートが奨励されました。CP/CMS およびその他のタイプ III 製品は、フリー ソフトウェアの初期の形態でした。
他の IBM オペレーティングシステムのソースコードの配布は、1978 年以前に著作権表示なしで公開されたと主張できるため、しばらく続いていた可能性があります (例: OS / 360、DOS/360、DOS/VSE、MVS、さらにはTSS/370。これらはすべて今日では一般にパブリックドメインであると見なされています)。 [4] [5] [この引用には出典が必要です] } しかし、CP/CMS がサポートされていない状態であったため、ユーザーコミュニティに別のプレッシャーがかかり、ソースコードの配布が必要になりました。
CP/CMS は、IBM のCambridge Scientific Centerによって構築されたシステムであるにもかかわらず、IBM ではなくMITのLincoln Laboratoryによって Type-III Library に提供されました。この決定は、タイムシェアリングに反対する IBM の政治勢力を出し抜くための共謀の一種であると説明されています[要出典]。また、CP-40、S/360-67、CP-67、および CMS の設計と実装に貢献した MIT とUnion Carbideからの公式および非公式な情報提供の量を反映しているとも考えられています。このトピックに関する詳細な情報と参考文献については、 CP/CMS の歴史 (履歴ノート)を参照してください。
多くの CP/CMS ユーザーは、独自のソース コードのコピーに大幅な変更を加えました。この作業の多くはサイト間で共有され、重要な変更はコア システムに反映されました。National CSSや一部の学術サイトなどの他のユーザーは、VM/370 が利用可能になったときに VM/370 に切り替えるのではなく、CP/CMS の独立した開発を続けました。これらの取り組みはコミュニティから分岐し、今日ではソフトウェア フォークと呼ばれるようになりました。
IBMがVM/370をリリースした後も、VMのソースコードの配布は数リリースにわたって続いた。(VMプロジェクトでは、 IBM内の多くの類似プロジェクトで使用が義務付けられていた内部システムプログラミング言語であるPL/Sの使用は採用されなかった。PL/Sを使用すると、ソースコードの配布が不可能になっただろう。IBMは1965年には早くもアセンブリ言語から高級言語への移行を試み、 1969年にはMVSなどでPL/Sを大幅に使用していた。当時PL/Sは企業秘密とみなされ、顧客には提供されなかった。IBMはずっと後になってからこの方針に例外を設けたようだ。[6] [7] ) VMユーザーコミュニティは、CP/CMSタイプIII時代と同様に、引き続きソフトウェアに重要な貢献をした。OSやDOSのサイトでは、オペレーティングシステムの内部に深く関与するユーザーの積極的な関与を示すものはほとんどなかったが、多くのVMサイトではそれが見られた。この逆サポートにより、VMはIBMで二流の地位にあったにもかかわらず、CP/CMSのコンセプトは生き残り、進化した。
建築
CP/CMS アーキテクチャは当時としては画期的なものでした。このシステムは、複数の独立した仮想マシン(VM) を作成する仮想化制御プログラム(CP)で構成されていました。プラットフォームの仮想化は、 IBM System/360-67 の 2 つの要素によって可能になりました。
- 特権「スーパーバイザ状態」命令と通常の「問題状態」命令の分離
- アドレス変換ハードウェア
プログラムが「問題のある状態」で実行されているときに、特権命令または無効なメモリ アドレスを使用すると、ハードウェアが例外状態を発生させます。これらの状態をトラップすることで、CP は適切な動作 (I/O またはページング操作の実行など) をシミュレートできます。ベア マシン上で「スーパーバイザ状態」で実行されるゲスト オペレーティング システムは、CP では「問題のある状態」で実行されました。
その結果、完全に仮想化された環境が実現しました。各仮想マシンには、システムの実際のハードウェア環境からマップされた独自の仮想デバイス セットがありました。したがって、特定のダイヤルアップ テレタイプは、その VM インスタンスに仮想コンソールとして提示されました。
CP-67 では、特定のモデル依存命令と診断命令、特に DIAG 命令は仮想化されていなかったことに注意してください。最終的に、IBM やその他の場所での後の開発では、DIAG 命令は、ハイパーバイザーと呼ばれるようになった非仮想化インターフェイスを作成するために使用されました。クライアント オペレーティング システムは、このメカニズムを使用して制御プログラムと直接通信することができ、これによりパフォーマンスが大幅に向上しました。
実際、どの S/360 オペレーティング システムも CP で実行できますが、通常のユーザーは、シンプルなシングル ユーザー オペレーティング システムである Cambridge Monitor System (CMS) を実行していました。CMS を使用すると、ユーザーはプログラムを実行し、仮想デバイスを管理できます。CP-67 バージョン 1 および 2 では、仮想マシン内の仮想メモリはサポートされていませんでした。これはバージョン 3 で追加されました。その時点では、CP 自体のテストと開発は、単一の仮想マシン内で CP/CMS の完全なコピーを実行することで実行できました。CP-370 開発や MVS テストなどの一部の CP/CMS オペレーティング システム作業では、ハードウェアおよび OS シミュレーションの 4 レベルまたは 5 レベルの深いスタックが実行されました。
CP/CMS の設計は、IBM の以前のモノリシック オペレーティング システムとは異なり、複雑な「ビッグ システム」(ディスパッチ、ハードウェア管理、大容量ストレージ) を「リトル システム」(アプリケーション プログラムの実行、ファイル I/O、コンソールの入出力) から分離します。両方のシステムを独自のエンティティに再分類することで、1 つのユーザー システムのバグが両方に影響を与えるのを防ぎます。これは、マイクロカーネルオペレーティング システムのモデル機能です。
IBM がその後の S/370 設計で仮想化と仮想メモリ機能を実装するという決定 (初期の S/370 シリーズにはなかったが) は、少なくとも部分的には CP/CMS アプローチの成功を反映している。IBM の VM オペレーティング システム ファミリ、および一般的な仮想化テクノロジの存続と成功は、S/360-67 に大きく依存している。
多くの点で、IBM の CP-67 および CP/CMS 製品は、 VMware Workstation、Xen、Microsoft Virtual PCなどの当時の仮想化ソフトウェアを先取りし、大きな影響を与えました。
関連用語
- CP :制御プログラム。CP-40 と CP-67 は、それぞれ CSC のカスタマイズされた S/360-40 と標準 S/360-67 の実装でした。
- CMS : Cambridge Monitor System。CP /CMS システムのこの部分は、 IBM が VM/370 をリリースしたときに、 Conversational Monitor System に名前が変更されました。ただし、再実装であった CP から VM への移行とは異なり、CMS の大部分は CP/CMS から VM/370 に変更なしで移行されました。
- VM :仮想マシン。当初は疑似マシンという用語が使用されていましたが、すぐに仮想マシンはIBM M44/44Xプロジェクトから借用されました。IBM が VM/370 を導入した頃には、CP/CMS で定着していました。
- ハイパーバイザー:準仮想化のメカニズム。この用語は、IBM が CP-67 を VM/370 として再実装したときに造られました。
参照
脚注
- ^ Stuart E. Madnick (1969) 「タイムシェアリングシステム:仮想マシンコンセプトと従来のアプローチ」(PDF) 。 2012年9月13日閲覧。モダンデータシステム、第2巻、第3号、34-36ページ。
- ^ Stuart Madnick (1976) 「セキュリティ、整合性、意思決定支援システムにおける仮想マシンの利点」(PDF) 。 2012年9月13日閲覧。 IBMシステムジャーナル、第 15 巻、第 3 号。
- ^ Creasy、前掲書、p. 488 – 「コンソールモニターシステム」
- ^ cf. Hercules エミュレータは、IBM からの苦情を招かずにこれらの歴史的なシステムを実行するために使用されているようです。システムは IBM によって機械可読ソースコードとマイクロフィッシュとして公開されました。
- ^ パブリック ドメイン: 「1988 年のベルヌ条約実施法までは、適切な著作権表示がない場合、著作権で保護される作品であってもパブリック ドメインに強制されていました...」
- ^ Pugh et al.、p. 737、注166 – PL/Iの使用を義務付けるCH Reynoldsの1965年8月のPL/I政策声明を引用
- ^ WR Brittenham、「PL/Sの開発」、IBM技術レポート(1974年)– Pughで引用
引用
- 主な CP/CMS ソース
- RJ Creasy、「VM/370 タイムシェアリング システムの起源」、IBM Journal of Research & Development、第 25 巻、第 5 号 (1981 年 9 月)、pp. 483–90、PDF ― CP-40プロジェクト リーダーであり、 CTSS の著者でもある人物による、
CP/CMS とVM の歴史に関する見解 - EW Pugh、LR Johnson、John H. Palmer著『IBMの360および初期の370システム』、 MIT Press、ケンブリッジ、マサチューセッツ州およびロンドン、ISBN 0-262-16123-0 ― この時期のIBMの製品について広範囲にわたる(819 ページ)解説。このような決定的な著作でCP/CMSについてあまり触れられていないのは、
- Melinda Varian、「VM と VM コミュニティ、過去、現在、そして未来」、SHARE 89 セッション 9059–61、1997 年。― CP/CMS とVM の歴史
に関する優れた情報源 - Bitsavers、/pdf/ibm/360/cp67 のインデックス
- 追加の CP/CMS ソース
- RJ Adair、RU Bayles、LW Comeau、RJ Creasy、「360/40 用の仮想マシン システム」、 IBM Corporation、ケンブリッジ サイエンティフィック センター レポート No. 320‐2007 (1966 年 5 月)
― 仮想マシンの概念の実装について説明した独創的な論文で、カスタマイズされた CSC S/360-40 とCP-40 の設計について説明されています。 - International Business Machines Corporation、CP-67/CMS、プログラム 360D-05.2.005、IBM プログラム情報部門 (1969 年 6 月)
― IBM のリファレンス マニュアル - RA Meyer と LH Seawright、「仮想マシン タイムシェアリング システム」、IBM Systems Journal、第 9 巻、第 3 号、199 ~ 218 ページ (1970 年 9 月)
― CP-67/CMS システムについて説明し、その機能とアプリケーションの概要を示します。 - RP Parmelee、TI Peterson、CC Tillman、および DJ Hatfield、「仮想ストレージと仮想マシンの概念」、IBM Systems Journal、第 11 巻、第 2 号 (1972 年 6 月)
- 背景 CP/CMS ソース
- FJ Corbató 他著『互換性のあるタイムシェアリングシステム、プログラマーズガイド』 MIT Press、1963 年
- FJ Corbató、M. Merwin-Daggett、RC Daley、「実験的なタイムシェアリングシステム」、Proc. Spring Joint Computer Conference (AFIPS) 21、pp. 335–44 (1962) — CTSS の説明
- FJ Corbató および VA Vyssotsky、「MULTICS システムの紹介と概要」、Proc. Fall Joint Computer Conference (AFIPS) 27、pp. 185–96 (1965)
- PJ Denning、「仮想メモリ」、コンピューティング調査第 2 巻、pp. 153–89 (1970)
- JB Dennis、「セグメンテーションとマルチプログラムコンピュータシステムの設計」、JACM第 12 巻、pp. 589–602 (1965) ― GE 645
向けのプロジェクト MAC の仮想メモリ要件 - CAR Hoare および RH Perrott 編著、Operating Systems Techniques、Academic Press、Inc.、ニューヨーク (1972)
- T. キルバーン、DBG エドワーズ、MJ ラニガン、FH サムナー、「ワンレベル ストレージ システム」、IRE Trans. Electron. Computers EC-11、pp. 223–35 (1962)
― マンチェスター/フェランティアトラス - RA ネルソン、「マッピング デバイスと M44 データ処理システム」、研究レポート RC 1303、IBMトーマス J. ワトソン研究センター(1964) ― IBM M44/44X
について - RP Parmelee、TI Peterson、CC Tillman、DJ Hatfield、「仮想ストレージと仮想マシンの概念」、IBM Systems Journal、第 11 巻、 99 ~ 130ページ(1972)
- 追加のオンライン CP/CMS リソース
- febcm.club.fr —情報技術のタイムライン、1964~1974
- www.multicians.org — Tom Van Vleck の短いエッセイ「IBM 360/67 と CP/CMS」
- www.cap-lore.com — Norman Hardy によるIBM 仮想マシンの短い歴史
- www.cap-lore.com — ノーマン・ハーディによる「Blaauw Box」の短い説明
- この記事で述べられている点の詳細な引用は、 「CP/CMS の歴史」に記載されています。
外部リンク
- VM/CMS ハンドブック
- Andreas C. Hofmann: CP-370/CMS – 制御プログラム 370 / Cambridge Monitor System、1970、Computing History Dictionary (ドイツ語) [¹10.12.2022]
