歴史
CP / CMS
各実装は、その前身の大幅な再設計であり、進化的な前進でした。 CP-67 / CMSは、最初に広く利用可能な仮想マシンアーキテクチャでした。 IBMは、研究システムM44 / 44X(部分仮想化を使用)およびCP-40(完全仮想化を使用)でこのアイデアを開拓しました。
VMファミリの前身としての役割に加えて、CP / CMSはオペレーティングシステム(OS)理論の開発、IBMのSystem / 370の設計、タイムシェアリング業界、および今日のフリーソフトウェアの動きを予測した自立したユーザーコミュニティ。
歴史
基本的なCP / CMSのアーキテクチャおよび戦略的パラメーターはCP-40で確立され、1967年初頭にIBMのケンブリッジ科学センターで生産使用が開始されました。この取り組みは複雑な政治的および技術的環境で発生しました。 Wikipediaの記事CP / CMSの歴史。
手短に:
- 1960年代初期、IBMはCTSSやMITのProject MACなどのタイムシェアリングの取り組みに焦点が置かれた科学コンピューティングに対する優位性を維持しようとしました。しかし、IBMはシステム/ 360という巨大なプロジェクトにコミットし、それが会社を別の方向に導きました。
- タイムシェアリングコミュニティは、S / 360のタイムシェアリング機能の欠如に失望しました。これにより、Project MACおよびBell LaboratoriesでIBMの主要な売上損失が発生しました。元々Project MACをサポートするために設立されたIBMのケンブリッジサイエンティフィックセンター(CSC)は、S / 360用のタイムシェアリングオペレーティングシステムを構築することにより、タイムシェアリングにおけるIBMの信頼性を取り戻す努力を始めました。このシステムは最終的にCP / CMSになります。同じ精神で、IBMはタイムシェアリング機能を備えたS / 360モデル、IBM System / 360-67、およびタイムシェアリングオペレーティングシステム、TSS / 360を設計およびリリースしました。 TSSが失敗しました。しかし、360-67とCP / CMSは、タイムシェアリングをめぐる内部の政治的戦いにもかかわらず成功し、IBMでCP / CMSの努力を廃棄するための協調的な努力をしました。
- 1967年に、最初にCSCのCP-40でCP / CMS生産の使用が開始され、その後リンカーン研究所と他のサイトで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は、VM / 370オペレーティングシステムとともにS / 370シリーズに仮想メモリを追加し、S / 370用のCP / CMSを再実装したことを発表しました。これはCP / CMSリリースの終わりを示しましたが、システムはしばらくの間独立した存在を続けました。 VMリリースにはしばらくの間ソースコードが含まれ続け、VMコミュニティのメンバーは長い間アクティブな貢献者でした。
概要
CP / CMSファミリーの関係 | |||
→ 派生 >> 強い影響 > 何らかの影響/優先順位 | |||
CTSS | |||
> IBM M44 / 44X | |||
>> CP-40 / CMS→CP / CMS | →VM / 370→VM / SEバージョン→VM / SPバージョン→VM / XAバージョン→VM / ESA→z / VM | ||
→VP / CSS | |||
> TSS / 360 | |||
> MVTのTSO→OS / VS2の場合→MVSの場合→...→z / OSの場合 | |||
>> MULTICSおよび他のほとんどのタイムシェアリングプラットフォーム | |||
|
CP / CMSは、Robert Creasyのリーダーシップの下、MITに関連する研究開発ラボであるIBMのケンブリッジ科学センター(CSC)によって構築されました。システムの目標、開発プロセス、リリース、および画期的なテクノロジーの遺産により、このシステムは当時の他のOSや他の大規模なIBMプロジェクトとは一線を画しています。これはオープンソースシステムであり、サポートされていないIBM Type-IIIライブラリの一部として、ソースコード形式ですべてのIBM顧客に無料で提供されました。 CP / CMSユーザーは、自分自身とお互いをサポートしていました。以下の「履歴」セクションで説明する異常な状況がこの状況につながりました。
CP / CMSは、2つの主要コンポーネントで構成されていました。
- CP ( 制御プログラム )が仮想マシン環境を作成しました。広く使用されているバージョンはCP-67で、S / 360-67で実行されました。 (調査システムCP-40はアーキテクチャを確立しました。3番目のバージョンCP-370はVM / 370になりました。)従来のアプローチであったメモリやその他のリソースをユーザー間で明示的に分割する代わりに、CPは各ユーザーにシミュレートされたスタンドアロンSystem / 360コンピューター。各システムは、ベアマシンで実行されたS / 360ソフトウェアを実行でき、実質的に各ユーザーにプライベートコンピューターシステムを提供しました。
- CMS 、 ケンブリッジモニターシステム (およびコンソールモニターシステム -VMの会話型モニターシステムに改名)は、インタラクティブなタイムシェアリング用の軽量のシングルユーザーオペレーティングシステムでした。 CPの仮想マシンでCMSの多くのコピーを実行することにより、大規模な従来のマルチタスクOSの複数のコピーではなく、ユーザーあたりのオーバーヘッドが少なくなりました。これにより、多数の同時ユーザーが単一のS / 360を共有できました。
CP / CMS仮想マシンの概念は、オペレーティングシステムの設計における重要な前進でした。
- ユーザーを互いに分離することにより、CP / CMSはシステムの信頼性とセキュリティを大幅に改善しました。
- スタンドアローンのコンピュータユーザーごとに、フルをシミュレートすることで、CP / CMSは、タイムシェアリング環境で特異的にタイムシェアリング用に設計されていないだけで、アプリケーションを任意の S / 360のソフトウェアを実行することができます。
- 軽量のCMSをプライマリユーザーインターフェイスとして使用することにより、CP / CMSは前例のないタイムシェアリングパフォーマンスを実現しました。さらに、CMSのシンプルさにより、従来のOSよりもユーザーインターフェイスの機能強化を簡単に実装できました。
IBMは、仮想メモリがS / 370シリーズに追加された1972年にリリースされたVM / 370製品ラインとしてCP / CMSを再実装しました。 VM / 370の後継製品(z / VMなど)は、今日でも広く使用されています。 (IBMはCP-40と同様にCP-67を再実装し、単純に名前を変更して再パッケージしなかったことに注意することが重要です。VMは長年CP / CMSおよびその後継と共存していました。 VMファミリとは異なる独立したOSとしてのCMS。
フリーソフトウェアとしてのCP / CMS
CP / CMSはソースコード形式で配布され、多くのCP / CMSユーザーはそのソースコードの調査と変更に積極的に関与していました。ベンダーが提供するオペレーティングシステムにユーザーが直接関与することは珍しいことです。
CP / CMS時代には、多くのベンダーがオペレーティングシステムを機械可読ソースコードで配布していました。 OS / 360、DOS / 360、および多くの「メインストリーム」IBMオペレーティングシステムがこの方法で配布された可能性があります。これらすべてのシステムでは、システムソースコードの一部の認識もSYSGENプロセスに関係しており、これはスターターセットのインストールでも最新システムのカーネルビルドに匹敵します。 (40年後、Herculesエミュレーターを使用して、現在パブリックドメインの一部として扱われているソースコードに基づいて、これらのシステムの「化石化」バージョンを実行できます。)
オペレーティングシステムのソースコードの重要性は時間とともに変化しました。 1969年にIBMがハードウェアからソフトウェアをバンドル解除する前は、OS(および他のほとんどのソフトウェア)がハードウェアのコストに含まれていました。各ベンダーは、システム全体、ハードウェア、およびソフトウェアに対して完全な責任を負っていました。これにより、配布媒体は比較的重要ではなくなりました。 IBMのアンバンドル後、OSソフトウェアはIBM System Control Program(SCP)ソフトウェアとして配信され、最終的には「オブジェクトコードのみ」形式で提供されましたが、追加料金はかかりませんでした。
複雑な理由により、CP / CMSは通常の方法でリリースされませんでした。 IBMによってサポートされていませんでしたが、サポートされていないIBM Type-IIIライブラリの一部になりました。IBMType-IIIライブラリは、IBM担当者が寄贈したソフトウェアの集まりです(同様に、Type-IVライブラリを形成した顧客から寄贈されたソフトウェア)。 IBMは、このライブラリを「現状のまま」使用するために顧客に配布しました。そのような製品に対するIBMの直接のサポートの欠如により、アクティブユーザーは自分自身をサポートすることを余儀なくされ、修正と相互サポートが奨励されました。 CP / CMSおよび他のType-III製品は、初期のフリーソフトウェアです。
他のIBMオペレーティングシステムのソースコードの配布はしばらくの間継続している可能性があります(たとえば、OS / 360、DOS / 360、DOS / VSE、MVS、およびTSS / 370であり、現在一般的にパブリックドメインにあると考えられています) 1978年以前は著作権表示なしでほぼ間違いなく公開されていました。しかし、CP / CMSのサポートされていないステータスにより、ユーザーコミュニティにさまざまな圧力がかかり、ソースコードの配布が必要になりました。
不思議なことに、CP / CMSは、システムがIBMのケンブリッジ科学センターによって建設されたという事実にもかかわらず、MITのリンカーン研究所ではなく 、IBMによってタイプIII図書館に寄贈されました。この驚くべき決定は、タイムシェアリングに反対するIBMの政治勢力を打ち負かすための「共謀」の形として説明されてきました。また、CP-40、S / 360-67、CP-67、およびCMSの設計と実装に貢献したMITおよびUnion Carbideからの公式および非公式の入力の量を反映する場合があります。このトピックに関する詳細な洞察と参照については、CP / CMSの履歴(履歴ノート)を参照してください。
多くのCP / CMSユーザーは、ソースコードのコピーを大幅に変更しました。この作業の多くはサイト間で共有され、重要な変更がコアシステムに戻ってきました。 National CSSや一部の学術サイトなどの他のユーザーは、CP / CMSが利用可能になったときにVM / 370に切り替えるのではなく、独立したCP / CMSの開発を継続しました。これらの取り組みは、今日ではソフトウェアフォークと呼ばれるコミュニティとは異なります。
IBMがVM / 370をリリースした後、VMのソースコード配布はいくつかのリリースで継続されました。 (VMプロジェクトは、多くの同等のプロジェクトでIBM内で使用するために義務付けられた内部システムプログラミング言語であるPL / Sの使用を採用しませんでした。PL/ Sを使用すると、ソースコードの配布が不可能になります。IBMは、アセンブリを避けようとしました。 1965年には早くも言語をより高いレベルの言語に変更し、1969年までにMVSなどでPL / Sを大幅に使用していましたが、PL / Sは当時企業秘密とみなされ、顧客は利用できませんでした。 VMユーザーコミュニティは、CP / CMS Type-III期間中と同様に、ソフトウェアに重要な貢献を続けました。 OSやDOSのサイトでは、オペレーティングシステムの深い内部にユーザーが積極的に関与することはほとんどありませんでしたが、これは多くのVMサイトで見つかりました。この「リバースサポート」は、IBMでのVMの「二流市民」ステータスにもかかわらず、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人のユーザーのシステムのバグが両方に影響するのを防ぎます。これは、マイクロカーネルオペレーティングシステムのモデル機能です。
仮想化および仮想メモリ機能を後続のS / 370設計に実装するというIBMの決定(最初の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 : ケンブリッジモニターシステム 。 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がVM / 370としてCP-67を再実装したことから生まれました。