歴史
VM(オペレーティングシステム)
VM (多くの場合VM / CMS )は、IBMメインフレームSystem / 370、System / 390、zSeries、System z、およびパーソナルコンピューター用のHerculesエミュレーターを含む互換システムで使用されるIBM仮想マシンオペレーティングシステムのファミリーです。
1972年にリリースされた最初のバージョンはVM / 370 、または公式にはVirtual Machine Facility / 370でした。これは、以前のCP / CMSオペレーティングシステムのSystem / 370再実装でした。マイルストーンバージョンにはVM / SPが含まれていました。現在のバージョンであるz / VMは、メインフレーム市場の主要な完全仮想化ソリューションの1つとして依然として広く使用されています。
通常、名前でVMと組み合わされたCMSは、VMの下で会話型のタイムシェアリングを提供するために開発されたシングルユーザーオペレーティングシステムであるConversational Monitor Systemを指します。
概要
VMアーキテクチャの中心は、VM -CPと呼ばれる制御プログラムまたはハイパーバイザーです(通常はCP 、場合によってはあいまいにVM )。物理ハードウェア上で実行され、仮想マシン環境を作成します。 VM-CPは、すべてのI / Oおよびその他の特権操作を含む、物理マシンの完全な仮想化を提供します。デバイス管理、ディスパッチ、仮想ストレージ管理、およびその他の従来のオペレーティングシステムタスクを含むシステムのリソース共有を実行します。各VMユーザーには、独自のアドレススペース、仮想デバイスなどを備えた独立した仮想マシンが提供され、スタンドアロンマシンで実行できるソフトウェアを実行できます。特定のVMメインフレームは通常、数百または数千の仮想マシンインスタンスを実行します。 VM-CPは、CP-67の再実装であるCP-370、それ自体がCP-40の再実装として始まりました。
各仮想マシン内で実行されるのは、別の「ゲスト」オペレーティングシステムです。これは次のとおりです。
- CMS (「会話型監視システム」、CP / CMSの「ケンブリッジ監視システム」から名前を変更)。正式名称はVM-CMSです (VMは一般にVM / CMSと呼ばれるため、混乱を招きます )。ほとんどの仮想マシンは、軽量のシングルユーザーオペレーティングシステムであるCMSを実行します。そのインタラクティブな環境は、ファイルシステム、プログラミングサービス、デバイスアクセス、コマンドライン処理など、シングルユーザーPCの環境に匹敵します。 (CMSの以前のバージョンは「メインフレーム上のCP / M」とは明確に説明されていませんが、比較は時代錯誤です; CP / Mの作者であるGary Kildallは経験豊富なCMSユーザーでした。)
- 主流のオペレーティングシステム。 IBMのメインストリームオペレーティングシステム(MVSまたはDOS / VSEファミリ)は、変更せずにロードして実行できます。 VMハイパーバイザーは、ゲストオペレーティングシステムを例外的な特権を持つアプリケーションプログラムとして扱います。特権命令(アプリケーションがシステム全体またはその重要な部分を引き継ぐことができる命令)の使用を防ぎますが、特権命令をシミュレートします。ほとんどのメインフレームオペレーティングシステムは、オペレーティングシステムの特権を奪おうとする通常のアプリケーションを終了します。
- VMの別のコピー。 VMの「第2レベル」インスタンスは、仮想マシン内で完全に仮想化できます。これにより、VMの開発とテストが行われます(「第2レベル」のVMは、ハードウェアの異なる仮想化を潜在的に実装できます)。この手法は、S / 370ハードウェアが利用可能になる前にS / 370ソフトウェアを開発するために使用され、IBMでの新しいハードウェア開発で役割を果たし続けています。文献では、 5レベルの深さでの仮想化の実用的な例を引用しています ( VMおよびVMコミュニティの 55ページを参照)。最上位以下のVMレベルもアプリケーションとして扱われますが、例外的な特権があります。
- メインフレームバージョンのAIXまたはLinuxのコピー。メインフレーム環境では、これらのオペレーティングシステムは多くの場合VMで実行され、他のゲストオペレーティングシステムと同様に処理されます。 (ベアハードウェア上で「ネイティブ」オペレーティングシステムとして実行することもできます。)
- 専用のVMサブシステム。いくつかの非CMSシステムがVM-CP仮想マシン内で実行され、スプール、プロセス間通信、特殊なデバイスサポートなどのサービスをCMSユーザーに提供します。これらは「舞台裏」で動作し、VM-CP制御プログラムに追加することなくCMSで利用可能なサービスを拡張します。別の仮想マシンで実行することにより、他のVMユーザーと同じセキュリティと信頼性の保護を受け取ります。例は次のとおりです。
- RSCS (「リモートスプーリングおよび通信サブシステム」、別名VNET)–仮想マシン間の通信および情報転送機能
- RACF (「リソースアクセス制御機能」)—セキュリティシステム
- GCS (「グループ制御システム」) 。MVSAPIの限定的なシミュレーションを提供します。
- 共有ファイルシステム (SFS)。ディレクトリツリーで共有ファイルを整理します。
ハイパーバイザーインターフェイス
かつて、CMSは真のオペレーティングシステムとしてベアマシンで実行できました(このような構成は珍しいことですが)。 VMでゲストOSとしてのみ実行されるようになりました。これは、CMSがファイルシステム操作を実行し、他のVMサービスを要求するために、VM-CPへのハイパーバイザーインターフェイスに依存しているためです。この準仮想化インターフェース:
- VM-CPへの高速パスを提供して、完全なシミュレーションのオーバーヘッドを回避します。
- CP / CMSリリース2.1のパフォーマンス向上として最初に開発されました。これは、CPの効率における重要な初期マイルストーンです。
- CMSとCP間の信号として、仮想化されていないモデル依存の機械語命令を使用します: DIAG (「診断」)。
IBMは360/65の「ハイパーバイザー」という用語を作り出し、後にCP-67のDIAGハンドラーに使用しました。
Diagnose命令( '83'x-ニーモニックなし)は、もともとIBMが「組み込みの診断機能、または他のモデル依存機能」を実行することを目的とした特権命令です。 VM / 370では、「仮想マシンとCP間の通信」に再利用されました。この命令には、RxおよびRyと呼ばれる2つの4ビットレジスタ番号が含まれます。これらは、「オペランドストレージアドレスまたはDIAGNOSEインターフェイスに渡されるリターンコードを含む」ことができます。 」使用可能な診断機能のいくつかを以下にリストします。
16進コード | 関数 |
---|---|
0008 | 「仮想コンソール機能」—CPコマンドを実行する |
0020 | 一般I / O-テープまたはディスクデバイスで有効なCCWチェーンを実行します |
003C | VM / 370ディレクトリを更新する |
0058 | 3270仮想コンソールインターフェイス-IBM 3270端末でフルスクリーンI / Oを実行します |
0060 | 仮想マシンのストレージサイズを決定する |
0068 | 仮想マシン通信機能(VMCF) |
歴史
VMの初期の歴史は、記事CP / CMSおよびHistory of CP / CMSで説明されています。 VM / 370はCP / CMSの再実装であり、1972年にIBMの「System / 370 Advanced Function」発表の一部として利用可能になりました(System / 370シリーズに仮想メモリハードウェアとオペレーティングシステムが追加されました)。 VM / 370 Release 6を介したVMの初期リリースは、1981年までオープンソースで継続され、現在はパブリックドメインであると見なされています。このポリシーは、1977年に有料のVM / SEおよびVM / BSEアップグレードで終了し、1980年にVM / System Product(VM / SP)で終了しました。ただし、IBMは既存のコードのソース形式での更新を長年にわたって提供し続けましたが、無料ベースを除くすべてのアップグレードにはライセンスが必要でした。 CP-67と同様に、仮想マシンの特権命令はプログラム割り込みを引き起こし、CPは特権命令の動作をシミュレートしました。
VMは引き続きIBM 内の重要なプラットフォームであり 、オペレーティングシステムの開発とタイムシェアリングの使用に使用されます。しかし、顧客にとっては、IBMの「その他のオペレーティングシステム」のままでした。 OSおよびDOSファミリは引き続きIBMの戦略的製品であり、顧客はVMの実行を推奨されませんでした。緊密な協力関係を形成した人々は、初期のCP / CMSユーザーのコミュニティサポートモデルを継続しました。それまでの間、システムは、他のIBMの取り組みと比較して、プロジェクトで利用可能なリソースをめぐってIBM内での政治的内戦に苦しんでいました。システムの基本的な「問題」はIBMのフィールド販売レベルで見られました。VM/ CMSは、一定数のタイムシェアユーザーをサポートするために必要なハードウェアの量を明らかに削減しました。結局のところ、IBMはコンピューターシステムを販売するビジネスに携わっていました。
メリンダバリアンはこの魅力的な引用文を提供し、VMの予期しない成功を示しています。
VM / 370のマーケティング予測では、製品の全ライフ期間中に1つしか168がVMを実行しないと予測されていました。実際、顧客に配信された最初の168はCPとCMSのみを実行しました。 10年後、ポキプシーから出荷される大型プロセッサの10パーセントは、エンディコットで製造されたミッドレンジマシンの非常にかなりの部分と同様に、VMを実行する予定です。 15年が経過する前に、MVSライセンスよりも多くのVMライセンスがありました。
XT / 370(および後でAT / 370)でCMSを実行するPC DOSバージョンは、VM / PCと呼ばれます。 VM / PC 1.1はVM / SPリリース3に基づいていました。
IBMが3081にSystem / 370 Extended Architectureを導入したとき、お客様は同じマシンでMVS / XAをテストしながら実稼働MVS / 370システムを実行する必要に直面しました。 IBMのソリューションはVM / XA Migration Aidであり、これは新しいInterpretive Execution(SIE)命令を使用して仮想マシンを実行しました。 SIEはいくつかの特権命令を自動的に処理し、処理できない場合にはCPに戻りました。後の3090のプロセッサリソース/システムマネージャ(PR / SM)もSIEを使用しました。最終的にVM / ESAおよびz / VMに取って代わられる前に、いくつかのVM / XA製品がありました。
ハードウェアの進化によりプロセッサアーキテクチャが大幅に変更されたため、VMの役割はIBM内で変更されました。下位互換性は引き続きIBMメインフレームファミリの基礎であり、元のSystem / 360で導入された基本的な命令セットを引き続き使用しています。しかし、64ビットzSeriesを効率的に使用する必要があるため、VMアプローチはより魅力的になりました。 VMは、DOS / VSEからMVSに変換するデータセンターでも利用されており、ますます重要になっているプラットフォームであるメインフレームAIXおよびLinuxを実行する際に役立ちます。現在のz / VMプラットフォームは、VMユーザーが長い間それをふさわしいと感じているというIBM内の認識をついに達成しました。一部のz / VMサイトでは、単一システム上で数千の仮想マシンユーザーを同時に実行しています。 z / VMは2000年10月に初めてリリースされ、現在も積極的に使用および開発されています。
IBMとサードパーティは、VMで実行される多くのアプリケーションとツールを提供しています。例には、RAMIS、FOCUS、SPSS、NOMAD、DB2、REXX、RACF、およびOfficeVisionが含まれます。現在のVM製品は、HTTPサーバー、データベースマネージャー、分析ツール、エンジニアリングパッケージ、金融システムなどのメインフレームアプリケーションの全範囲を実行します。
CPコマンド
リリース6の時点で、VM / 370制御プログラムには、ユーザーの仮想マシンの定義と制御に関する一般ユーザー向けのコマンドがいくつかあります。コマンドの小文字部分はオプションです
コマンド | 説明 |
---|---|
#CP | ユーザーがコマンド環境からCPコマンドを発行できるようにします |
アドストップ | アドレス停止を設定して、特定の命令で仮想マシンを停止します |
ATTN | CPがコマンド環境で制御を取得できるようにするアテンション割り込みを発生させます |
ベギン | オプションで指定されたアドレスで、ユーザーの仮想マシンの実行を継続または再開します |
変化する | スプールファイルの属性を変更します。たとえば、出力クラスまたはファイルの名前を変更したり、プリンター固有の属性を設定したりできます |
閉じる | 開いているプリンター、パンチ、リーダー、またはコンソールファイルを閉じ、スプーリングシステムに解放します。 |
カップル | 仮想チャネル間アダプター(CTCA)を別のアダプターに接続します |
CP | CMS環境でCPコマンドを実行する |
定義する | 現在の仮想マシン構成を変更します。仮想デバイスを追加するか、使用可能なストレージサイズを変更します |
デタッチ | 現在の構成から仮想デバイスまたはチャネルを削除する |
ダイヤル | ログオンしたマルチアクセス仮想マシンに端末を接続します |
DISConn | 仮想マシンの実行を継続しながら端末を切断します |
表示 | 仮想マシンストレージまたは(仮想)ハードウェアレジスタを表示する |
ダンプ | 仮想スプールプリンターで現在の仮想マシンのスナップショットダンプを印刷する |
エコー | 入力された行をエコーするように仮想マシンを設定します |
外部 | 仮想マシンへの外部割り込みを引き起こす |
示す | 現在のシステム負荷またはリソース使用量を表示します |
IPL | 仮想マシンのオペレーティングシステムのIPL(ブート) |
リンク | そのマシンの定義が共有を許可している場合、別の仮想マシンからデバイスを接続します |
LOADVFCB | 仮想プリンターのフォーム制御バッファー (FCB)を指定する |
ログオフ ログアウト | 現在の仮想マシンの実行を終了し、システムから切断します |
ログオン ログインする | システムにサインオンする |
メッセージ MSG | システムオペレータまたは別のユーザーに1行のメッセージを送信します |
準備ができていない | 仮想デバイスを「準備ができていません」と表示する |
注文 | 閉じたスプールファイルをIDまたはクラスで並べ替える |
パージ | クラス、m ID、またはALLによるデバイスの閉じられたスプールファイルの削除 |
問い合わせ | 仮想マシンのステータス情報、「今日のメッセージ」、またはログインユーザーの数またはnbamesを表示します。 |
準備完了 | デバイスのデバイス終了割り込みを引き起こします |
要求 | 仮想コンソールで割り込みを引き起こします |
リセット | デバイスの保留中の割り込みをすべてクリアします |
巻き戻し | 実際の(非仮想)磁気テープ装置を巻き戻す |
セットする | メッセージングや端末のファンクションキーなど、仮想マシンのさまざまな属性を設定します |
睡眠 | 仮想マシンを無期限または指定された期間「休止状態」にする |
SMsg | 1行の「特別なメッセージ」を別のユーザーに送信する |
スプール | スプールされた仮想デバイスのオプションを設定する |
格納 | 仮想マシンのレジスタまたはストレージの内容を変更します |
システム | 仮想マシンをリセットまたは再起動するか、ストレージをクリアします |
鬼ごっこ | スプールされたデバイスまたはファイルに関連付けられたタグを設定します。タグは通常、ファイルの宛先を識別するためにVMのリモートスプール通信サブシステム(RSCS)によって使用されます |
ターミナル | 端末の特性を設定する |
トレース | 指定された仮想マシンのアクティビティのトレースを開始または停止します |
転送 | 別のユーザーとの間でスプールファイルを転送する |
VMDUMP | Interactive Problem Control System(IPCS)プログラム製品で読み取り可能な形式で仮想マシンをダンプします |
VMマスコット
1980年代初期、SHARE内のVMグループ(IBMユーザーグループ)は、コミュニティが採用するマスコットまたはロゴを探していました。これは、IBMのMVSユーザーが七面鳥をマスコットとして選択したことへの反応の一部でした(伝説によると、MVSの初期にMVS Performance Groupがパフォーマンスが痛い話題だったとき、喜んで選ばれました)。 1983年、SHARE 60でテディベアはVMの事実上のマスコットになりました。テディベアステッカーが「親しみやすい」と新人にフラグを付けるために「抱きしめたくなる」の名札に付けられました。クマはヒットし、すぐに広く登場しました。クマは、コミュニティに「有用な貢献」をした「VMの騎士団」の入会者に授与されました。