(57)【要約】  【課題】  入来メッセージを処理するために仮想マシンの複数の所定のコンフィギュレーションのうち１つを決定するシステムおよび方法を提供する。  【解決手段】  第１の仮想マシンの複数のコンフィギュレーションを管理するためのシステム、方法、およびプログラム。１つ以上の他の仮想マシンからの少なくとも１つのプロトコルの次の入来インタラクションおよびその後の入来インタラクションを処理するために、第１の仮想マシンのコンフィギュレーションを、次の入来インタラクションを受信する準備をその後に最初に行う第１の仮想マシンが指示するコンフィギュレーションに設定するためのコマンドを受信する。次の入来インタラクションを受信する準備を最初に行った第１の仮想マシンが指示するコンフィギュレーションを決定する。次の入来インタラクションを受信する準備を最初に行った第１の仮想マシンのコンフィギュレーションは、次の入来インタラクションを処理する。【選択図】  図１
2008097602.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンフィギュレーションを有する第１の仮想マシンによって入来インタラクションを管理するための方法であって、
コマンドを受信するステップであって、１つ以上の他の仮想マシンからの少なくとも１つのプロトコルの次の入来インタラクションおよびその後の入来インタラクションを処理するために、前記第１の仮想マシンの前記コンフィギュレーションを、前記コマンドを受信した後に前記次の入来インタラクションを受信する準備を最初に行う前記第１の仮想マシンが指示するコンフィギュレーションに設定するための前記コマンドを受信するステップと、
前記コマンドを受信した後に前記次の入来インタラクションを受信する準備を最初に行った前記第１の仮想マシンが指示する前記コンフィギュレーションを決定するステップと、
前記次の入来インタラクションを受信する準備を最初に行った前記第１の仮想マシンのコンフィギュレーションが前記次の入来インタラクションを処理するステップと、
を含む、方法。
【請求項２】
前記コンフィギュレーションの各々が、ある数の仮想プロセッサ、ある量の仮想マシン・メモリ、仮想デバイスのアドレスおよびタイプ、ならびに関連するオペレーティング・システム名またはブート・デバイスの少なくともいずれか２つを指定する、請求項１に記載の方法。
【請求項３】
前記コンフィギュレーションを設定するためのコマンドを受信する前記ステップが、１つ以上の他の仮想マシンからの少なくとも２つのプロトコルの次の入来インタラクションおよびその後の入来インタラクションを処理するために、前記第１の仮想マシンの前記コンフィギュレーションを設定するためのコマンドを受信するステップを含む、請求項１に記載の方法。
【請求項４】
前記２つのプロトコルがＩＵＣＶおよびＶＭＣＦプロトコルを含む、請求項３に記載の方法。
【請求項５】
前記第１の仮想マシンのコンフィギュレーションが、前記入来インタラクションを受信するためのバッファを宣言することによって、あるいは前記次の入来インタラクションを前記第１の仮想マシンに通知する割込みによって、またはそれら両方によって、前記次の入来インタラクションを受信する準備を最初に行う、請求項１に記載の方法。
【請求項６】
前記第１の仮想マシンのコンフィギュレーションが、前記次の入来インタラクションを受信する許可を与え、割込みバッファを識別することによって、前記次の入来インタラクションを受信する準備を最初に行う、請求項１に記載の方法。
【請求項７】
前記少なくとも１つのプロトコルが接続指向プロトコルであり、前記入来インタラクションが接続要求である、請求項１に記載の方法。
【請求項８】
前記少なくとも１つのプロトコルがコネクションレス・プロトコルであり、前記入来インタラクションがメッセージである、請求項１に記載の方法。
【請求項９】
第１の仮想マシンの複数のコンフィギュレーションを管理するためのシステムであって、
コマンドを受信するための手段であって、１つ以上の他の仮想マシンからの少なくとも１つのプロトコルの次の入来インタラクションおよびその後の入来インタラクションを処理するために、前記第１の仮想マシンの前記コンフィギュレーションを、前記コマンドを受信した後に前記次の入来インタラクションを受信する準備を最初に行う前記第１の仮想マシンが指示するコンフィギュレーションに設定するための前記コマンドを受信するための手段と、
前記コマンドを受信した後に前記次の入来インタラクションを受信する準備を最初に行った前記第１の仮想マシンが指示する前記コンフィギュレーションを決定するための手段と、
前記次の入来インタラクションを処理するための手段を含む、前記次の入来インタラクションを受信する準備を最初に行った前記第１の仮想マシンのコンフィギュレーションと、
を含む、システム。
【請求項１０】
第１の仮想マシンの複数のコンフィギュレーションを管理するためのコンピュータ・プログラムであって、コンピュータに、
コマンドを受信するステップであって、１つ以上の他の仮想マシンからの少なくとも１つのプロトコルの次の入来インタラクションおよびその後の入来インタラクションを処理するために、前記第１の仮想マシンの前記コンフィギュレーションを、前記コマンドを受信した後に前記次の入来インタラクションを受信する準備を最初に行う前記第１の仮想マシンが指示するコンフィギュレーションに設定するための前記コマンドを受信するステップと、
前記コマンドを受信した後に前記次の入来インタラクションを受信する準備を最初に行った前記第１の仮想マシンが指示する前記コンフィギュレーションを決定するステップと、
前記次の入来インタラクションを受信する準備を最初に行った前記第１の仮想マシンのコンフィギュレーション内で、前記次の入来インタラクションを処理するステップと、
を実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に仮想マシンのオペレーティング・システムに関し、更に具体的には、入来メッセージを処理するために仮想マシンの複数の所定のコンフィギュレーションのうち１つを決定することに関する。
【背景技術】
【０００２】
今日、仮想マシン・オペレーティング・システムは広く知られている。例えば、ＩＢＭ社のｚ／ＶＭオペレーティング・システムは、以下のように仮想マシン環境を生成する。ＩＢＭ社のｚ／ＶＭオペレーティング・システムの基本オペレーティング・システム（制御プログラムすなわち「ＣＰ（Computer Program）」、またはハイパーバイザとしても知られる）は、物理リソースすなわち実コンピュータのＣＰＵ時間、ＲＡＭ、ストレージ等を論理的に分割して、複数の異なる仮想マシンを形成する。このため、各仮想マシンは、プロセッサ時間、ＲＡＭ、ストレージ等の共有資源を有して仮想コンピュータを形成し、それ自身の「ゲスト」オペレーティング・システムおよびアプリケーションを実行する。ゲスト・オペレーティング・システムおよびアプリケーションは、専用の実コンピュータにおいて動作しているかのように、各仮想マシンにおいて動作する（すなわち、それらの仮想マシンの、プロセッサ時間、ＲＡＭ、ストレージ等の共有資源を用いる）。
【０００３】
また、異なる仮想マシンにおけるプログラムは、ハイパーバイザを介して相互に通信を行うことができる。ある通信技法によると、ハイパーバイザを介した異なる仮想マシン間の通信は、ＩＵＣＶ（Inter-User Communication Vehicle））またはＶＭＣＦ（Virtual Machine Control Facility））等の独自のプロトコルを用いたメッセージを含むことができる。これらの通信プロトコルは以下の共通の特性を示す。
【０００４】
ａ）最初にソース仮想マシンがメッセージをソースの仮想アドレス空間に書き込む。
ｂ）ソース仮想マシンがターゲット仮想マシンを名前で識別する。
ｃ）ハイパーバイザがターゲットの仮想マシンに入来メッセージを知らせるための割込みを発生する。割込みはターゲット仮想マシンにおいて割込みハンドリング（interrupt handling）を呼び出す。
ｄ）ターゲット仮想マシンがメッセージの受信に同意したことに応答して、ハイパーバイザはメッセージをソースの仮想アドレス空間からターゲットの仮想マシンの仮想アドレス空間にコピーする。
【０００５】
以下は、ＩＵＣＶの更に詳細な説明である。ＩＵＣＶは、あるソース仮想マシンからあるターゲット仮想マシンにデータを転送するためのポイント・ツー・ポイント・プロトコルである。ＩＵＣＶプロトコルによって通信を行うために、ソース仮想マシンは最初に、ハイパーバイザを呼び出して通信を受信する準備を行い、割込みおよび入来メッセージのためのＩＵＣＶバッファを宣言する。通信を開始するため、ソース仮想マシンは次いでハイパーバイザを呼び出して、この通信の対象となるターゲット仮想マシンのアイデンティティを示す。割込みおよび入来メッセージのためのＩＵＣＶバッファを宣言したことによって、ターゲットが通信に同意すると、ハイパーバイザはターゲット仮想マシンに割込みを発生して、この接続のための通信経路ｉｄをターゲット仮想マシンに提供する。ターゲット仮想マシンがソース仮想マシンとの通信に同意したと仮定すると、ターゲット仮想マシンはハイパーバイザを呼び出して、通信経路を承認する。次いで、ハイパーバイザはソース仮想マシンに割込みをかけ、この接続のための通信経路ｉｄをソース仮想マシンに提供する。実際のメッセージを送信するため、ソース仮想マシンはハイパーバイザを呼び出して、先に取得した経路ｉｄおよび実際の送信メッセージを示す。これに応答して、ハイパーバイザは、経路ｉｄを用いてターゲット仮想マシンを識別し、ターゲット仮想マシンに割込みを発生する。ターゲット仮想マシンは、ハイパーバイザを呼び出すことによって割込みに応答し、実際のメッセージを受信する。次いでハイパーバイザは、ソース仮想マシンの仮想アドレス空間からターゲットの仮想マシンの仮想アドレス空間にデータをコピーし、ソース仮想マシンに割込みを発生して、データを転送したことを示す。次いで、ターゲット仮想マシンのプログラムは、ターゲット仮想マシンのアドレス空間からメッセージを読み出すことができる。
【０００６】
以下は、ＶＭＣＦの更に詳細な説明である。ＶＭＣＦは、ソース仮想マシンからターゲット仮想マシンにデータを転送するためのプロトコルである。ＶＭＣＦを用いて通信を行うため、まず、ソース仮想マシンは、ハイパーバイザを呼び出すことによって通信を受信する準備を行い、ＶＭＣＦの使用を許可し、そのストレージのある領域をＶＭＣＦ割込みバッファとして宣言する。実際のメッセージを送信するため、ソース仮想マシンは送信するメッセージを構築し、ハイパーバイザを呼び出して、指定されたターゲット仮想マシンにそのメッセージを送出する。このマシンは、ソース仮想マシンによって名前で識別される。ターゲット仮想マシンもＶＭＣＦの使用を許可した場合、ハイパーバイザはターゲット仮想マシンにＶＭＣＦ割込みを発生する。ターゲット仮想マシンは、ハイパーバイザを呼び出すことによって割込みに応答して、実際のメッセージを受信する。次いで、ハイパーバイザはソース仮想マシンの仮想アドレス空間からターゲット仮想マシンの仮想アドレス空間にデータをコピーし、ソース仮想マシンに割込みを発生して、データを転送したことを示す。次いで、ターゲット仮想マシンのプログラムは、ターゲット仮想マシンのアドレス空間からメッセージを読み出すことができる。
【０００７】
従って、ＩＵＣＶが確立された経路上でメッセージをやり取りする接続指向プロトコルであるのに対し、ＶＭＣＦは、各メッセージが名前によってターゲット仮想マシンに別個にアドレスされるコネクションレス（connectionless）・プロトコルである。「入来インタラクション」という言葉は、本発明において用いる場合、ターゲット仮想マシンと通信を行うための要求のことであり、例えば、ＩＵＣＶのような接続指向プロトコルの場合には接続要求によって、または、ＶＭＣＦのようなコネクションレス・プロトコルの場合には個別のメッセージによって行われる。ＩＵＣＶおよびＶＭＣＦプロトコルについてのこれ以上の詳細については、z/VM : CP Programming Services、ＩＢＭ注文番号ＳＣ２４−６０８４−０２を参照のこと。
【非特許文献１】z/VM : CP Programming Services、ＩＢＭ注文番号ＳＣ２４−６０８４−０２
【特許文献１】米国特許第４，６６０，１４４号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
仮想マシン当たり１つのみのコンフィギュレーションしかない限り、ＩＵＣＶおよびＶＭＣＦのもとでの入来インタラクションは、その単一のコンフィギュレーションに対して明白に解決される。しかしながら、Ｗａｌｓｈに対する米国特許第４，６６０，１４４号によれば、単一の仮想マシンは２つ（またはそれ以上）の異なるコンフィギュレーションを有し、全ては並行して交互にインスタンス化されるか、または同時にアクティブになることができる（ディスパッチャブル（dispatchable）である）。各コンフィギュレーションは、ある数の仮想プロセッサ、ある量の仮想マシン・メモリ、仮想デバイスのアドレスおよび種類、ならびに関連するオペレーティング・システム名またはブート・デバイスを指定する。各コンフィギュレーションは、オペレーティング・システムおよびアプリケーションを実行するための環境を規定する。あるコンフィギュレーションを「中心的（Principal）」または主要なコンフィギュレーションと呼ぶことができ、別のコンフィギュレーションを「補助的（Adjunct）」または二次的なコンフィギュレーションと呼ぶことができる。ハイパーバイザが、ソース仮想マシンのあるコンフィギュレーションによって開始されたインタラクションのために割込みを発生した場合、ターゲット仮想マシンのコンフィギュレーションのうちどれがこの割込みおよび関連するインタラクションを受信して処理するかをハイパーバイザが決定するために、異なるいくつかの既知の方法がある。この決定が必要である理由は、ＶＭＣＦメッセージおよびＩＵＣＶ接続要求等のインタラクションは、ある仮想マシンにアドレスされるのであり、その仮想マシン内でインスタンス化される特定のコンフィギュレーションにアドレスされるのではないということである。各コンフィギュレーションに関連した割込みハンドラは、そのコンフィギュレーションにおいて動作しているオペレーティング・システムによって提供されるものである。全ての入来インタラクションおよび関連する割込みに、コンフィギュレーションの所定の１つを用いることはすでに知られている。この手法に伴う問題は、他のコンフィギュレーションがどの入来インタラクションも関連する割込みもハンドルすることができないことである。また、現在の割込みのために、仮想マシンについて現在アクティブであるコンフィギュレーションを用いることもすでに知られている。この手法に伴う問題は、現在アクティブであるコンフィギュレーションが動的であり、インタラクションを開始した仮想マシンによって割込みの受信に適切であるとあらかじめ信頼性高く決定することができないことである。
【０００９】
本発明の目的は、ターゲット仮想マシンのどのコンフィギュレーションが、別の仮想マシンのコンフィギュレーションから開始された入来インタラクションを処理するために適切であるかを決定することである。
【課題を解決するための手段】
【００１０】
本発明は、第１の仮想マシンの複数のコンフィギュレーションを管理するためのシステム、方法、およびプログラムに関する。１つ以上の他の仮想マシンからの少なくとも１つのプロトコルの次の入来インタラクションおよびその後の入来インタラクションを処理するために、第１の仮想マシンのコンフィギュレーションを、次の入来インタラクションを受信する準備を最初に行う第１の仮想マシンが指示するコンフィギュレーションに設定するためのコマンドを受信する。次の入来インタラクションを受信する準備を最初に行った第１の仮想マシンが指示するコンフィギュレーションを決定する。次の入来インタラクションを受信する準備を最初に行った第１の仮想マシンのコンフィギュレーションは、次の入来インタラクションを処理する。
【００１１】
本発明の１つの特徴によれば、第１の仮想マシンのコンフィギュレーションは、入来接続要求を受信するためのバッファを宣言することによって、あるいは前記第１の仮想マシンに入来接続要求を通知する割込みについてイネーブルすることによって、またはそれら両方によって、接続指向プロトコルのための次の入来インタラクションを受信する準備を行う。第１の仮想マシンに対するその後の入来接続要求は、決定したコンフィギュレーションに送信される。以前の入来接続要求を受容したいずれかのコンフィギュレーションが以前に確立した通信経路はどれも変化せずそのままであり、かかる経路に沿ったメッセージは、この経路が確立された接続を受容したコンフィギュレーションへと移動し続ける。
【００１２】
本発明の別の特徴によれば、第１の仮想マシンのコンフィギュレーションは、次の入来メッセージを受信する許可を与え、割込みバッファを識別することによって、コネクションレス・プロトコルのための次の入来インタラクションを受信する準備を行う。前記コネクションレス・プロトコルによる第１の仮想マシンに対するその後の入来メッセージは、決定したコンフィギュレーションに送信される。
【発明を実施するための最良の形態】
【００１３】
図１は、コマンド・バス１５上にＣＰＵ１２（１つ以上のプロセッサを含む）、ＲＡＭ１３、ＲＯＭ１４、およびストレージ１６を含む実コンピュータ・システム１０を示す。基本のオペレーティング・システムまたはハイパーバイザ・プログラム２０は、実コンピュータ・システム１０の実リソースを論理的に分割して（全ＣＰＵ時間または前記ＣＰＵの多数の仮想プロセッサ、ＲＡＭ、ＲＯＭ、ストレージ等の共有資源）、仮想マシン３０〜３３を生成する。このため、各仮想マシン３０〜３３は１つ以上のコンフィギュレーションを含む。仮想マシン３０には、２つの異なるコンフィギュレーション３０−１および３０−２が例示されている。仮想マシン３１〜３３には１つのみのコンフィギュレーションを例示するが、各仮想マシン３１〜３３が２つの異なるコンフィギュレーションを有することも可能である。各コンフィギュレーションは機能ユニットであり、各ゲスト・オペレーティング・システムを実行する。また、１つ以上のアプリケーション２３０−１、２３０−２、２３１、２３２、および２３３も各コンフィギュレーション内で実行する。（各コンフィギュレーション３０−１、３０−２、３１−１、３２−１、および３３−１には１つのみのアプリケーションを例示するが、各コンフィギュレーションに多数のアプリケーションがある場合もある。）ハイパーバイザ２０は、以下に記載するように、仮想マシンのための機能を実行するために使用可能なプライベート・メモリを有する。仮想マシン３０は２つ以上のアクティブなコンフィギュレーションを有するが、各割込みをハンドルしソース仮想マシンのコンフィギュレーションからの関連するインタラクションを処理するためには、１つのみのコンフィギュレーションを用いる。例示した実施形態では、仮想マシン３０は中心的コンフィギュレーション３０−１および補助的コンフィギュレーション３０−２を有し、仮想マシン３１、３２、および３３の各々は、それぞれ単一の（中心的）コンフィギュレーション３１−１、３２−１、および３３−１を有する。一例として、コンフィギュレーションの各々は、ある数の仮想プロセッサ、ある量の仮想マシン・メモリ、仮想デバイスのアドレスおよびタイプ、および関連するオペレーティング・システム名またはブート・デバイスを指定する。例えば、各コンフィギュレーションは、他のコンフィギュレーションとは異なるオペレーティング・システムを用いることができる。これによって、実行可能なアプリケーションのタイプの範囲で、仮想マシンの汎用性が向上する。このため、デバッグされているオペレーティング・システムは中心的コンフィギュレーションにおいて動作し、デバッギング・ツールを実行しているオペレーティング・システムは補助的コンフィギュレーションにおいて動作することができる。別の例として、異なるコンフィギュレーションは、それらに割り当てられた仮想プロセッサの数およびメモリの量の範囲で、著しく異なる「サイズ」を有することができる。
【００１４】
ソース仮想マシンの各コンフィギュレーションは、ハイパーバイザ・プログラム２０を介して、他の仮想マシンのコンフィギュレーションのいずれとも通信を行うことができる。この通信は、ＩＵＣＶまたはＶＭＣＦ等の様々なプロトコルを用いて実行可能である。ＩＵＣＶを用いた通信は接続指向である。いったん接続経路が確立されると、これを流れるメッセージは、通信している仮想マシンの２つの特定のコンフィギュレーション間で送出される。しかしながら、接続を確立するための要求はターゲット仮想マシンを名前でアドレスするが、その仮想マシン内の特定のコンフィギュレーションを指定するわけではない。ＶＭＣＦを用いた通信はコネクションレスである。全てのメッセージはターゲット仮想マシンに名前でアドレスされるが、その仮想マシン内の特定のコンフィギュレーションにアドレスされるわけではない。
【００１５】
ＩＵＣＶおよびＶＭＣＦの双方において、ターゲット仮想マシン名に依存するインタラクションがある。ＩＵＣＶでは、これらのインタラクションは、通信経路を確立するための接続要求を含む。ＶＭＣＦでは、これらのインタラクションは、個別のメッセージの宛先を識別する。本発明によれば、ハイパーバイザ・プログラム２０は、以下に基づいて、入来接続要求およびメッセージおよび割込み等の入来インタラクションをハンドルするためのターゲット仮想メッセージの適切なコンフィギュレーションを決定する。管理者が、「中心的コンフィギュレーション」が入来インタラクションおよび関連する割込みをハンドルするように仮想マシンの設定／コンフィギュレーションを以前に行った場合、割込みが要求されるといつでも、ハイパーバイザは割込みおよび関連するインタラクションをハンドルするためにターゲット仮想マシンの中心的コンフィギュレーションに転送する。これに応答して、ターゲット仮想マシンの中心的コンフィギュレーションは、関連するインタラクションを処理する。逆に、管理者が、「補助的コンフィギュレーション」が入来インタラクションおよび関連する割込みをハンドルするように仮想マシンの設定を以前に行った場合、割込みが要求されるといつでも、ハイパーバイザは割込みおよび関連するインタラクションをハンドルするためにターゲット仮想マシンの補助的コンフィギュレーションに転送する。これに応答して、ターゲット仮想マシンの補助的コンフィギュレーションは、関連するインタラクションを処理する。しかしながら、管理者が、入来インタラクションのために「最初に準備するコンフィギュレーション」がそれらをハンドルするように仮想マシンの設定／コンフィギュレーションを以前に行った場合、その後に最初にハイパーバイザに対してＩＵＣＶバッファを宣言するか、またはハイパーバイザに対してＶＭＣＦ許可を出すコンフィギュレーションが、割込みおよび関連するインタラクション、入来インタラクションに関連したその後の全ての割込み、およびそれらの関連インタラクションをハンドルするターゲット仮想マシンのコンフィギュレーションである（別のＳＥＴコマンドによって設定が変化するまで）。
【００１６】
実際上、設定は三路スイッチ（three-way switch）である。このスイッチをセットして、入来インタラクションを全て中心的コンフィギュレーションに送出するか、それらを全て補助的コンフィギュレーションに送出するか、または最初にそれらの準備をするコンフィギュレーションに送出することができる。
【００１７】
図２は、ハイパーバイザ・プログラム２０内でのコンフィギュレーション管理プログラム機能３００を示す。これによって、ユーザは、ＳＥＴコマンドにより、適切なパラメータを用いて、各仮想マシンごとにコンフィギュレーションを設定することができる（すなわち、「中心的コンフィギュレーション」、「補助的コンフィギュレーション」、または「最初に準備するコンフィギュレーション」）。プログラム機能３００は、ユーザまたは別のアプリケーションからＳＥＴコマンドを受信し（ステップ２０１）、関連するパラメータを読み取って、設定が「中心的コンフィギュレーション」、「補助的コンフィギュレーション」、または「最初に準備するコンフィギュレーション」のいずれであるかを判定する。設定が「中心的コンフィギュレーション」である場合（決定２０２のＹＥＳ分岐およびステップ２０３）、プログラム機能３００は、（ハイパーバイザ２０のプライベート・メモリ内の）テーブル６０に、この仮想マシンをターゲットとするいずれかのＩＵＣＶ接続要求またはＶＭＣＦメッセージ（または他のプロトコルの入来インタラクション）および関連する割込みを、ターゲット仮想マシンの中心的コンフィギュレーションによって処理しなければならないことを記録する。設定が「補助的コンフィギュレーション」である場合（決定２０２のＮＯ分岐、決定２０４のＹＥＳ分岐、およびステップ２０５）、プログラム機能３００はテーブル６０に、この仮想マシンをターゲットとするいずれかのＩＵＣＶ接続要求またはＶＭＣＦメッセージ（または他のプロトコルの入来インタラクション）を、ターゲット仮想マシンの補助的コンフィギュレーションによって処理しなければならないことを記録する。設定が「最初に準備するコンフィギュレーション」である場合（決定２０２のＮＯ分岐、決定２０４のＮＯ分岐、および決定２０６のＹＥＳ分岐）、プログラム機能３００はテーブル６０に、コンフィギュレーションが予め決定されておらず、この仮想マシンをターゲットとするいずれかのＩＵＣＶ接続要求またはＶＭＣＦメッセージ（または他のプロトコルの入来インタラクション）を、この後にＩＵＣＶバッファを最初に宣言する（または他の方法で別のプロトコルの入来インタラクションの準備をする）仮想マシンのコンフィギュレーションによって処理しなければならないことを記録する。ＳＥＴコマンドが前述のいずれとも適合しない場合、プログラム機能３００はユーザにエラーを報告する（ステップ２０８）。
【００１８】
図３は、図２のステップにおいて処理したＳＥＴコマンドが「最初に準備するコンフィギュレーション」を示した場合に用いる適切なターゲット仮想マシン・コンフィギュレーションを動的に決定するためのコンフィギュレーション管理プログラム機能３００の動作を示す。図３のステップは、各仮想マシン３０〜３３ごとに別個に実行される。ステップ３０１では、ＩＵＣＶバッファを宣言することによって、またはＶＭＣＦ許可コマンドを発行することによって（または別のプロトコルに従って他のアクションを実行して、この他のプロトコルのための入来インタラクションの準備をすることによって）、プログラム機能３００は、仮想マシンの中心的または補助的のいずれかのコンフィギュレーションから、入来通信のための準備要求を受信する。
【００１９】
本発明の一実施形態において、仮想マシンがいずれかのタイプ（ＩＵＣＶまたはＶＭＣＦ）（または他のプロトコルのいずれかの他のタイプの入来通信）の入来通信の準備を行い、かつ、仮想マシンのコンフィギュレーションがＳＥＴコマンドによって予め決定されていない場合（決定３０２のＮＯ分岐）、プログラム機能３００は、次のＩＵＣＶまたはＶＭＣＦ（または他のプロトコル）のインタラクションおよび関連する割込みを処理する仮想マシンのコンフィギュレーションとして、最初に通信の準備を行ったターゲット仮想マシン（中心的または補助的）のコンフィギュレーションを決定する。このため、ターゲットの仮想マシンの中心的コンフィギュレーションが次のＩＵＣＶまたはＶＭＣＦ（または他のプロトコル）のインタラクションの準備を最初に行ったかまたは行う場合（決定３０３のＹＥＳ分岐）、プログラム機能３００は、今後の入来ＩＵＣＶまたはＶＭＣＦインタラクションおよび関連する割込みのために、この中心的コンフィギュレーションを動的に割り当てる（ステップ３０４）。しかしながら、仮想マシンの補助的コンフィギュレーションが入来ＩＵＣＶまたはＶＭＣＦ（または他のプロトコル）のインタラクションの準備を最初に行ったかまたは行う場合（決定３０３のＮＯ分岐）、プログラム機能３００は、今後の入来ＩＵＣＶまたはＶＭＣＦ（または他のプロトコル）のインタラクションおよび関連する割込みのために、この補助的コンフィギュレーションを動的に割り当てる（ステップ３０５）。
【００２０】
図４は、ソース仮想マシンのコンフィギュレーションがターゲット仮想マシンのコンフィギュレーションとのインタラクションを開始したいことをハイパーバイザ２０に通知した場合のプログラム機能３００による処理を示す。ステップ４０１において、プログラム機能３００は、ソース仮想マシン・コンフィギュレーションから、ターゲット仮想マシンにアドレスされたＶＭＣＦメッセージまたはＩＵＣＶ接続要求の通知を受信する。インタラクションにおけるアドレス・パラメータから、ハイパーバイザ２０はターゲット仮想マシンを識別し（ステップ４０２）、ターゲット仮想マシンが２つ以上のインスタンス化コンフィギュレーションを有するか否かを判定する（ステップ４０３）。そうでない場合（決定４０３のＮＯ分岐）、ハイパーバイザ２０は、インタラクションのプロトコルに適切であるとして、割込みおよび他の処理を開始し、ターゲット仮想マシンに対するインタラクションの送出をスケジューリングする（ステップ４０４）。仮想マシンは１つのみの使用可能なコンフィギュレーションを有するので、ハイパーバイザ２０はこのコンフィギュレーションを決定するために何らアクションを実行する必要はない。再び決定４０３を参照すると、ＹＥＳ分岐において、ターゲット仮想マシンが２つ以上の使用可能なコンフィギュレーション（中心的および補助的）を有するので、ハイパーバイザ２０はプログラム機能３００を呼び出して、テーブル６０から、ターゲット仮想マシンに対するインタラクションおよび関連する割込みに用いるターゲット仮想マシンの適切なコンフィギュレーションを決定する。図２および図３を参照して上述したように、プログラム機能３００は、Ｓｅｔコマンドにおいて指定された所定のコンフィギュレーション・タイプに基づいて、または、「最初に準備するコンフィギュレーション」（これがＳＥＴコマンドのパラメータであった場合）、および、どのコンフィギュレーションが最初に入来インタラクションの準備を行ったかに基づいて、用いるのに適切なターゲット仮想マシンのコンフィギュレーションを知っている。適切なコンフィギュレーションが中心的コンフィギュレーションである場合（ＳＥＴコマンドに「中心的コンフィギュレーション」パラメータが伴うことに基づいて、または、ＳＥＴコマンドが「最初に準備するコンフィギュレーション」である場合には中心的コンフィギュレーションが最初に準備を行うことに基づいて）（決定４０５のＹＥＳ分岐）、ハイパーバイザ２０のプログラム機能３０は、中心的コンフィギュレーションを、このインタラクションおよび関連する割込みのために適切なコンフィギュレーションとして選択し、ハイパーバイザ２０は、適切であるとして割込みを開始し、ターゲット仮想マシンの中心的コンフィギュレーションに対するインタラクションの送出をスケジューリングする（ステップ４０４）。しかしながら、適切なコンフィギュレーションが補助的コンフィギュレーションである場合（ＳＥＴコマンドに「補助的コンフィギュレーション」パラメータが伴うことに基づいて、または、ＳＥＴコマンドが「最初に準備するコンフィギュレーション」である場合には補助的コンフィギュレーションが最初に準備を行うことに基づいて）（決定４０５のＮＯ分岐）、ハイパーバイザのプログラム関数３００は、補助的コンフィギュレーションを、このインタラクションおよび関連する割込みのための適切なコンフィギュレーションとして選択し、ハイパーバイザ２０は、入来インタラクションのプロトコルに適切であるとして割込みを開始し、ターゲット仮想マシンの補助的コンフィギュレーションに対するインタラクションの送出をスケジューリングする（ステップ４０６）。
【００２１】
以下は、本発明の使用例である。中心的コンフィギュレーションは、まず、ＶＭＣＦおよびＩＵＣＶを用いるＩＢＭ社のＣＭＳオペレーティング・システム等のオペレーティング・システムを実行する。中心的コンフィギュレーションにおけるＣＭＳオペレーティング・システムは、準備を行う最初の（かつ唯一の）コンフィギュレーションである。後に、中心的コンフィギュレーションはリセットされ、ＶＭＣＦもＩＵＣＶも用いないｚ／ＯＳまたはＬｉｎｕｘ等の別のオペレーティング・システムが、中心的コンフィギュレーションにロードされる。次いで、補助的コンフィギュレーションにおいて、ＣＭＳベースのデバッガを立ち上げる。この例では、ＣＭＳおよびデバッガが用いるために、補助的コンフィギュレーションにおいて通信を利用することができる。
【００２２】
コンフィギュレーション管理プログラム機能３００を含むハイパーバイザ・プログラム２０は、磁気テープまたはディスク、光媒体、ＤＶＤ、メモリ・スティック、半導体メモリ等のコンピュータ読み取り可能媒体からコンピュータ１０にロードするか、または、ＴＣＰ／ＩＰアダプタ・カード７１を介してインターネットからダウンロードすることができる。
【００２３】
前述のことに基づいて、仮想マシンの多数のコンフィギュレーションとの通信を管理するためのシステム、方法、およびプログラムが開示された。しかしながら、本発明の範囲から逸脱することなく多数の変更および置換を行うことが可能である。従って、本発明は、限定ではなく例示として開示し、本発明の範囲を決定するためには特許請求の範囲を参照しなければならない。
【図面の簡単な説明】
【００２４】
【図１】ハイパーバイザ・プログラムの制御のもとで相互に通信している多数の仮想マシンのブロック図である。
【図２】本発明による、図１のハイパーバイザ・プログラム内でのコンフィギュレーション管理プログラム機能の一部のフロー・チャートである。
【図３】図１のハイパーバイザ・プログラム内でのコンフィギュレーション管理プログラム機能の一部のフロー・チャートである。
【図４】図１のハイパーバイザ・プログラム内での別の機能のフロー・チャートである。
【符号の説明】
【００２５】
１０  実コンピュータ・システム
２０  ハイパーバイザ
３０、３１、３２、３３  仮想マシン
３０−１、３１−１、３２−１、３３−１  中心的コンフィギュレーション
３０−２  補助的コンフィギュレーション
２３０−１、２３０−２、２３１、２３２、２３３  アプリケーション
３００  コンフィギュレーション管理プログラム機能
【図１】
2008097602.tif 000003
【図２】
2008097602.tif 000004
【図３】
2008097602.tif 000005
【図４】
2008097602.tif 000006