(57)【要約】 【課題】  単一のシステムに組み込まれる複数の同一機種環境または異機種環境間の仮想マシンを管理・制御する、改善された効果的な仮想マシン制御装置及び方法を提供する。【解決手段】  実行中の仮想マシンを制御する仮想マシン制御装置であって、  仮想マシンが実行する第１スイッチングハイパーバイザーを有する第１コンピュータデバイス、第２スイッチングハイパーバイザーを有し、前記第２スイッチングハイパーバイザーが第１スイッチングハイパーバイザーと通信する第２コンピュータデバイス、及び前記第１と第２コンピュータデバイスに接続され、前記第１と第２スイッチングハイパーバイザーでアクセス可能となる共通メモリを含む。【選択図】  図１
2011100431.tif 000002
【特許請求の範囲】
【請求項１】
実行中の仮想マシンを制御する仮想マシン制御装置であって、
第１スイッチングハイパーバイザーを有する第１コンピュータデバイス、
前記第１スイッチングハイパーバイザーと通信可能な第２スイッチングハイパーバイザーを有する第２コンピュータデバイス、及び
前記第１と第２コンピュータデバイスに接続され、前記第１と第２スイッチングハイパーバイザーでアクセス可能となる共通メモリを含み、
前記第１スイッチングハイパーバイザーは、当該第１スイッチングハイパーバイザーで仮想マシンを実行している時、当該仮想マシンの状態情報を前記共有メモリに保存し、前記仮想マシンを前記第２コンピュータデバイスで実行するように切り替えるための切り替え通知を受けた時、前記仮想マシンの実行を中断し、
前記第２スイッチングハイパーバイザーは、前記共有メモリから前記仮想マシンの前記保存された状態情報を得て、前記仮想マシンの前記得られた状態情報に基づいて、前記第２コンピュータデバイスで前記仮想マシンの実行を再開する仮想マシン制御装置。
【請求項２】
前記第２スイッチングハイパーバイザーは、当該第２スイッチングハイパーバイザーで仮想マシンを実行している時であって前記仮想マシンの状態情報が更新された時は、前記仮想マシンの状態情報を前記共有メモリに更に持続的に保存する請求項１に記載の仮想マシン制御装置。
【請求項３】
前記仮想マシンの状態情報は、ＣＰＵレジスタと状態、周辺機器の状態と、前記第１コンピュータデバイスまたは前記第２コンピュータデバイスの前記仮想マシンのメモリ内容に関する情報を少なくとも含む請求項１に記載の仮想マシン制御装置。
【請求項４】
前記ＣＰＵレジスタと状態、前記周辺機器の状態と、前記第１コンピュータデバイスの前記仮想マシンのメモリ内容に関する情報は、前記共有メモリの特定の記憶場所に保存され、前記第２コンピュータデバイスは、そこから前記保存された情報を読み出し、前記仮想マシンの状態情報を得る請求項３に記載の仮想マシン制御装置。
【請求項５】
前記第１コンピュータデバイスと、前記第１スイッチングハイパーバイザーを前記第２スイッチングハイパーバイザーに通信させる前記第２コンピュータデバイスに接続された接続インターフェースを更に含む請求項１に記載の仮想マシン制御装置。
【請求項６】
前記接続インターフェースのユニットは、ＰＣＩ−Ｅバスを含む請求項５に記載の仮想マシン制御装置。
【請求項７】
前記第１スイッチングハイパーバイザーは、既定の設定またはユーザー選択に基づいて、複数の既定の仮想マシンの設定の中で前記第１コンピュータデバイスの前記実行中の仮想マシンとなるように仮想マシンの設定を更に選ぶ請求項１に記載の仮想マシン制御装置。
【請求項８】
前記仮想マシンは、前記仮想マシンに用いられるハードウェアアーキテクチャが前記第１コンピュータデバイスで用いられるのと異なる時、前記第１コンピュータデバイスの命令セットをシミュレートする、命令変換または命令エミュレータを更に用いる請求項１に記載の仮想マシン制御装置。
【請求項９】
前記第１コンピュータデバイスはＡＲＭベースのコンピュータデバイスであり、前記第２コンピュータデバイスはｘ８６ベースのコンピュータデバイスであるか、あるいはまた、前記第１コンピュータデバイスはｘ８６ベースのコンピュータデバイスであり、前記第２コンピュータデバイスはＡＲＭベースのコンピュータデバイスであるか、いずれかである請求項８に記載の仮想マシン制御装置。
【請求項１０】
前記第１コンピュータデバイスは、プラグ可能デバイスを更に含み、前記第２コンピュータデバイスは、前記プラグ可能デバイスに差し込みが適合するプラグ可能インターフェースを含み、前記切り替え通知を受けた後、前記プラグ可能デバイスは、前記第１コンピュータデバイスから更に取り除かれ、前記プラグ可能インターフェースを介してそれによって用いられる前記コンピュータデバイスに差し込まれる請求項９に記載の仮想マシン制御装置。
【請求項１１】
特定のハードウェアデバイスが前記第２コンピュータデバイスに存在しない場合、前記第２スイッチングハイパーバイザーは、対応するハードウェアデバイスとして前記特定のハードウェアデバイスと類似した機能を有するハードウェアデバイスを更に選ぶか、またはソフトウェアモジュールで前記特定のハードウェアデバイスを実装する請求項９に記載の仮想マシン制御装置。
【請求項１２】
特定のハードウェアデバイスが前記第２コンピュータデバイスに存在しない場合、前記第２スイッチングハイパーバイザーは、前記第１スイッチングハイパーバイザーと更に通信して、前記第１と第２コンピュータデバイス間の接続インターフェースを介して、前記第１コンピュータデバイスで前記特定のハードウェアデバイスの元の設定を用いて仮想デバイスを設定する請求項９に記載の仮想マシン制御装置。
【請求項１３】
前記第１と第２コンピュータデバイスは、異機種環境のＣＰＵを有する請求項１に記載の仮想マシン制御装置。
【請求項１４】
第１スイッチングハイパーバイザーを有する第１コンピュータデバイスと前記第１スイッチングハイパーバイザーと通信可能な第２スイッチングハイパーバイザーを有する第２コンピュータデバイスとを少なくとも含む複数のコンピュータデバイスと、共有メモリとを含むコンピュータシステムで、実行中の仮想マシンを切り替える仮想マシン制御方法であって、
前記仮想マシンが前記第１コンピュータデバイスで実行されている時、前記実行中の仮想マシンの状態情報を前記第１コンピュータデバイスの前記第１スイッチングハイパーバイザーが前記共有メモリに保存するステップ、
前記仮想マシンを前記第２コンピュータデバイスに切り替えるための切り替え通知を受けるステップ、前記第１スイッチングハイパーバイザーによって前記仮想マシンの実行が中断されるステップ、及び
前記第２スイッチングハイパーバイザーによって前記共有メモリから前記仮想マシンの保存された状態情報が獲得され、前記仮想マシンの前記獲得された状態情報に基づいて、前記第２コンピュータデバイスの前記第２スイッチングハイパーバイザーにより前記第２コンピュータデバイスで前記仮想マシンの実行が再開されるステップ
を含む仮想マシン制御方法。
【請求項１５】
前記仮想マシンの状態情報が更新された時、前記仮想マシンの状態情報を前記共有メモリに持続的に保存するステップを更に含む請求項１４に記載の仮想マシン制御方法。
【請求項１６】
前記仮想マシンの状態情報は、ＣＰＵレジスタと状態、周辺機器の状態と、前記第１コンピュータデバイスまたは前記第２コンピュータデバイスの前記仮想マシンのメモリ内容に関する情報を少なくとも含む請求項１４に記載の仮想マシン制御方法。
【請求項１７】
前記ＣＰＵレジスタと状態、前記周辺機器の状態と、前記第１コンピュータデバイスの前記仮想マシンのメモリ内容に関する情報は、前記共有メモリの特定の記憶場所に保存され、前記第２コンピュータデバイスは、そこから前記保存された情報を読み出し、前記仮想マシンの状態情報を得る請求項１６に記載の仮想マシン制御方法。
【請求項１８】
前記第１スイッチングハイパーバイザーによって、既定の設定またはユーザー選択に基づいて、複数の既定の仮想マシンの設定の中で前記第１コンピュータデバイスの前記実行中の仮想マシンとなるように仮想マシンの設定を更に選ぶステップを更に含む請求項１４に記載の仮想マシン制御方法。
【請求項１９】
前記仮想マシンは、前記仮想マシンに用いられるハードウェアアーキテクチャが前記第１コンピュータデバイスで用いられるのと異なる時、前記第１コンピュータデバイスの命令セットをシミュレートする、命令変換または命令エミュレータを更に用いる請求項１４に記載の仮想マシン制御方法。
【請求項２０】
前記第１コンピュータデバイスは、プラグ可能デバイスを更に含み、前記第２コンピュータデバイスは、前記プラグ可能デバイスに差し込みが適合するプラグ可能インターフェースを含み、前記切り替え通知を受けた後、前記プラグ可能デバイスは、前記第１コンピュータデバイスから更に取り除かれ、前記プラグ可能インターフェースを介してそれによって用いられる前記コンピュータデバイスに差し込まれる請求項１４に記載の仮想マシン制御方法。
【請求項２１】
特定のハードウェアデバイスが前記第２コンピュータデバイスに存在しない場合、前記第２スイッチングハイパーバイザーは、対応するハードウェアデバイスとして前記特定のハードウェアデバイスと類似した機能を有するハードウェアデバイスを更に選ぶか、またはソフトウェアモジュールで前記特定のハードウェアデバイスを実装する請求項１４に記載の仮想マシン制御方法。
【請求項２２】
前記第１と第２コンピュータデバイスは、異機種環境のＣＰＵを有する請求項１４に記載の仮想マシン制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の同一機種環境あるいは異機種環境のＣＰＵで構成されるコンピュータシステム（デスクトップまたはラップトッププラットフォーム等）において実行される仮想マシンの管理・制御に関し、特に、同一のコンピュータプラットフォーム（コンピュータシステム）に属している２つまたは２つ以上のコンピュータデバイス間での実行中の仮想マシンの切り替えを管理・制御する仮想マシン制御装置及び仮想マシン制御方法に関する。
【背景技術】
【０００２】
コンピューティングシステムの仮想化は、最近一般的になってきている。仮想化は、オペレーティングシステム（ＯＳ）とそれで実行するアプリケーションからコンピュータハードウェアを切り離した新しい層を指している。仮想化技術は、コンピュータハードウェアが１つ以上のオペレーティングシステムの同時実行をサポートするのを可能にする。また、仮想マシンと言われるコンテナに保持された（コンテナのような収容単位ごとに保持・管理された）オペレーティングシステムとそのアプリケーションは、ハイパーバイザー（いわゆる仮想マシンモニタ（ＶＭＭ）、仮想化ＯＳ）によって制御されてスケジュールされる。ハイパーバイザーは、コンピュータシステムにおいて仮想マシン（バーチャルマシン）を実現するための制御プログラムであり、複数の仮想マシンが同時にホストコンピュータで実行するのを可能にするコンピュータソフトウェア／ハードウェアプラットフォームの仮想化ソフトである。ハイパーバイザーは、例えば仮想ＣＰＵ、メモリと、それで実行するアプリケーションのＩＯデバイスなどの一組の仮想資源を提供する。ハイパーバイザーは、ホストコンピュータの物理ハードウェアデバイスの一部、または全てを仮想マシンにマッピングして、仮想マシンに含まれる仮想デバイスを作成することができる。ハイパーバイザーは、仮想化したハードウェアデバイスを用いて仮想マシンのサービスとそれで実行する複数の仮想マシンの保護を提供することができる。
【０００３】
現在の仮想化技術は、仮想ＯＳと一組の仮想化したハードウェアデバイスを有する１つ以上の仮想マシンが同一のコンピュータアーキテクチャで実行されるようにすることができる。例えば、現在の仮想化技術を用いると、単一のｘ８６ベースのコンピュータシステムは、１つまたは１つ以上のＡＲＭベースの、またはｘ８６ベースの仮想マシンをホスティング（ｈｏｓｔ）することができる。しかし、これは、例えばデスクトップまたはラップトップなどの単一のコンピュータシステムを構成する複数の同一機種環境または異機種環境のＣＰＵ間で（例えば、同一アーキテクチャまたは異なるアーキテクチャのＣＰＵ間で）、同一の仮想マシンを実行する動的スイッチングをサポートしない。この動的スイッチングをＣＰＵ間でサポートすることができれば、これは重要な有利性がある。例えば、期間中に仮想マシンが軽い作業負荷のみをＣＰＵにかけた時、複数の作業負荷が統合されることができるもう１つのＣＰＵに切り替えられることができる。これは、元のＣＰＵが待機モードまたは節電モードに入り、システム全体の電力消費を減少することを可能にする。例えばｘ８６とＡＲＭの異機種環境のＣＰＵを有するハイブリッドデスクトップまたはラップトッププラットフォームでは、例えば、ｘ８６の仮想マシンは、通常ＡＲＭ ＣＰＵを用いて電力消費を減少するが、ＣＰＵ−ｂｏｕｎｄ ｘ８６のアプリケーション（例えば、マルチメディアエンコーディング／デコーディング）を実行するように要求された時、仮想マシンは、ｘ８６ ＣＰＵ上で実行するように動的に切り替えられる可能性がある。
【０００４】
よって、単一のプラットフォームに組み込まれる複数のコンピュータデバイス間で仮想マシンを管理・制御する新しい仮想マシン制御方法が必要となる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、単一のコンピュータシステムに組み込まれる複数の同一機種環境または異機種環境間の仮想マシンを管理・制御する、改善された効果的な仮想マシン制御装置及び仮想マシン制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
実行中の仮想マシンを管理・制御する装置（仮想マシン制御装置）としてのコンピュータシステムは、一例として、第１コンピュータデバイス、第２コンピュータデバイスと、共有メモリを含む。第１コンピュータデバイスは、仮想マシンが実行する第１スイッチングハイパーバイザーを有する。第２コンピュータデバイスは、第２スイッチングハイパーバイザーを有し、第２スイッチングハイパーバイザーは、第１スイッチングハイパーバイザーと通信している。共通メモリは、第１と第２コンピュータデバイスに接続され、第１と第２スイッチングハイパーバイザーでアクセス可能となる。第１スイッチングハイパーバイザーは、仮想マシンの状態情報を共有メモリに保存する。前記仮想マシンを第２コンピュータデバイスに切り替えるための切り替え通知を受けた時、第１スイッチングハイパーバイザーは、仮想マシンの実行を中断する。続いて第２スイッチングハイパーバイザーは、共有メモリから仮想マシンの保存された状態情報を得て、仮想マシンの得られた状態情報に基づいて、第２コンピュータデバイスで仮想マシンの実行を再開する。
【０００７】
一実施例では、その間に接続された少なくとも第１と第２コンピュータデバイスと共有メモリを含むコンピュータシステムのコンピュータデバイス間で、実行中の仮想マシンを切り替える仮想マシン制御方法が提供され、第１コンピュータデバイスは、仮想マシンが実行する第１スイッチングハイパーバイザーを有し、第２コンピュータデバイスは、第１スイッチングハイパーバイザーと通信している第２スイッチングハイパーバイザーを有する。前記仮想マシン制御方法は、下記のステップを含む。まず、仮想マシンが第１コンピュータデバイスで実行の時、実行中の仮想マシンの状態情報は、第１コンピュータデバイスの第１スイッチングハイパーバイザーで共有メモリに保存される。続いて仮想マシンを第２コンピュータデバイスに切り替えるための切り替え通知が受けられる。その後、仮想マシンの保存された状態情報が共有メモリから得られ、仮想マシンの実行が仮想マシンの得られた状態情報に基づいて、第２スイッチングハイパーバイザーによって第２コンピュータデバイスで再開される。
【０００８】
この仮想マシン制御装置と仮想マシン制御方法は、有形的表現媒体に組み込まれるプログラムコードの形をとることができる。プログラムコードが機械によってロードされて実行された時、前記機械は、前記方法を実施する装置となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態を説明するためのコンピュータシステムの構成を示す図である。
【図２】図１に示すコンピュータシステムの共有メモリを示す図である。
【図３】図１に示すコンピュータシステムで、実行中の仮想マシンを選択する方法の一実施形態を示す流れ図である。
【図４】図１に示すコンピュータシステムで、実行中の仮想マシンを第１コンピュータデバイスから第２コンピュータデバイスに切り替える切り替え方法を示す流れ図である。
【発明を実施するための形態】
【００１０】
本発明についての目的、特徴、長所が一層明確に理解されるよう、以下に実施形態を例示し、図面を参照にしながら、詳細に説明する。
【００１１】
図１は、本発明の一実施形態としての、本発明に係る装置及び方法を適用したコンピュータシステム１００の構成を示す図である。コンピュータシステム１００は、少なくとも２つまたは２つ以上のコンピュータデバイス１１０と１２０、共有メモリ１３０と、接続インターフェース１４０を含む。仮想マシン１５０は、コンピュータデバイス１１０とコンピュータデバイス１２０とにおいて実行することができ、また、コンピュータデバイス１１０とコンピュータデバイス１２０との間で実行を切り替えることができる。各コンピュータデバイスは、コンピュータデバイスの動作を制御する処理ユニットと、仮想マシン１５０の実行を処理するスイッチングハイパーバイザー（ｓｗｉｔｃｈｉｎｇ ｈｙｐｅｒｖｉｓｏｒ）を更に含むことができる。コンピュータデバイス１１０と１２０のスイッチングハイパーバイザーによって作り出されて制御された仮想マシン１５０は、仮想中央処理装置（ＣＰＵ）、メモリと、一組の仮想ハードウェアデバイスを含むことができる。例えば、図１に示されるように、コンピュータデバイス１１０は、コンピュータデバイス１１０の動作を制御する処理ユニット１１２と、仮想マシン１５０の実行を処理する第１スイッチングハイパーバイザー１１４を含むことができる。コンピュータデバイス１２０は、処理ユニット１２２と、第１スイッチングハイパーバイザー１１４と通信し、仮想マシンの実行を処理する第２スイッチングハイパーバイザー１２４を含むことができる。コンピュータデバイス１２０は、接続インターフェース１４０によってコンピュータデバイス１１０に接続される。
【００１２】
コンピュータデバイス１１０と１２０は、同じまたは異なる処理ユニットタイプとハードウェアデバイスの処理ユニットを有することができる。一実施例では、例えばコンピュータデバイス１１０と１２０は、例えばｘ８６シリーズＣＰＵの同じ処理ユニットタイプの処理ユニットを有し、例えばＷｉｎｄｏｗベースのオペレーティングシステム（ＯＳ）などの同じＯＳを稼動することができる。もう１つの実施例では、コンピュータデバイス１１０と１２０は、異なるＯＳを稼動する、異なる処理ユニットタイプの処理ユニットを有することができる。例えば、コンピュータデバイス１１０の処理ユニットタイプは、ｘ８６シリーズＣＰＵであることができ、コンピュータデバイス１２０の処理ユニットタイプは、ＡＲＭプロセッサであることができる。また、コンピュータデバイス１１０のＯＳのタイプは、ＷｉｎｄｏｗベースのＯＳで、コンピュータデバイス１２０のＯＳのタイプは、ＬｉｎｕｘベースのＯＳであることができる。
【００１３】
共有メモリ１３０は、コンピュータデバイス１１０と１２０に接続されてアクセス可能となり、よって第１と第２スイッチングハイパーバイザー１１４と１２４でもアクセス可能となる。共有メモリ１３０は、実行中の仮想マシンまたは一部の物理メモリで用いられる全ての物理メモリをホスティングすることができる。注意するのは、共有メモリ１３０は、ソフトウェア（例えば、別々のメモリシステムの収集（ｃｏｌｌｅｃｔｉｏｎ）に共有表示（ｖｉｅｗ）を提供するデーモン）で、または例えばどのタイプでも大域的にアクセス可能なメモリ構造のハードウェアで実施されることができる。コンピュータデバイス１１０と１２０は、接続インターフェース１４０によって共有メモリ１３０に接続することができる。接続インターフェース１４０は、第１スイッチングハイパーバイザー１１４が第２スイッチングハイパーバイザー１２４と通信するように、コンピュータデバイス１１０とコンピュータデバイス１２０に接続される。接続インターフェース１４０は、例えばどのタイプのバスデバイス、例えばＰＣＩ−Ｅバスデバイスであることができる。
【００１４】
動作では、一般に仮想マシン１５０で実行している第１スイッチングハイパーバイザー１１４は、仮想マシン１５０の状態情報を共有メモリ１３０に持続的に保存することができる。仮想マシン１５０の状態情報は、例えば、ＣＰＵレジスタと状態、周辺機器の状態と、コンピュータデバイス１１０または１２０の仮想マシン１５０のメモリ内容に関する情報を含むことができる。
【００１５】
ＣＰＵレジスタと状態、周辺機器の状態と、コンピュータデバイス１１０の仮想マシン１５０のメモリ内容に関する情報は、共有メモリ１３０の特定の記憶場所に保存されることができる。よって、仮想マシン１５０の実行がコンピュータデバイス１２０に切り替えられた時、コンピュータデバイス１２０は、共有メモリ１３０の特定の記憶場所から保存された情報を直接読み出し、仮想マシン１５０の状態情報を得ることができる。
【００１６】
図２は、本発明の共有メモリ１３０の実施例を示している。図２に示されるように、例えば、メモリアドレスＸ、メモリアドレスＹと、メモリアドレスＺがＣＰＵレジスタと状態、周辺機器の状態と、仮想マシンのメモリ内容に関する情報を含むメモリブロックの先頭（ｓｔａｒｔｉｎｇ）アドレスをそれぞれ示すことで、コンピュータデバイス１２０は、例えば、共有メモリ１３０のメモリアドレスＸから仮想マシンのＣＰＵレジスタと状態に関する情報を得ることができる。  
【００１７】
実行中の仮想マシンをユーザーがコンピュータデバイス１１０からコンピュータデバイス１２０に切り替えようとした時、仮想マシン１５０をコンピュータデバイス１２０に切り替えるための切り替え通知が発動され、第１スイッチングハイパーバイザー１１４に伝送される。切り替え通知を受けた時、第１スイッチングハイパーバイザー１１４は、仮想マシン１５０の実行を中断し、接続インターフェース１４０によって切り替え通知を第２スイッチングハイパーバイザー１２４にパスする。切り替え通知を受けた後、第２スイッチングハイパーバイザー１２４は、共有メモリ１３０から仮想マシン１５０の保存された状態情報を得る。また、仮想マシンは、共有メモリ１３０から仮想マシン１５０の得られた状態情報に基づいて、コンピュータデバイス１２０で実行するように構成され、コンピュータデバイス１２０で仮想マシン１５０の実行を再開する。コンピュータデバイス１１０のＣＰＵレジスタと状態、周辺機器の状態と、仮想マシンのメモリ内容に関する情報が共有メモリ１３０の特定の記憶場所に保存されることができることから（例えば図２に示すように）、コンピュータデバイス１２０は、共有メモリ１３０の特定の記憶場所から保存された情報を直接読み出し、仮想マシン１５０の状態情報を得ることができる。
【００１８】
図３は、本発明に係る装置、システムで、実行中の仮想マシンを選択する方法の実施例の流れ図である。ユーザーがコンピュータシステム１００を起動した時、コンピュータデバイス１１０は、まず初期設定で起動されることができる。よって、コンピュータデバイス１１０のハードウェア構成は、ハードウェアを起動するように初期化され（ステップＳ３１０）、続いて、そのスイッチングハイパーバイザー１１４が初期化される（ステップＳ３２０）。スイッチングハイパーバイザー１１４が初期化された後、仮想マシンを構成することができる。第１スイッチングハイパーバイザー１１４は、記憶媒体（例えばハードディスク、読み出し専用メモリまたはフラッシュメモリ）に保存された既定の設定、またはユーザー選択に基づいて、複数の既定の仮想マシンの設定の中でコンピュータデバイス１１０の実行中の仮想マシンとなるように仮想マシンを更に選ぶことができる（ステップＳ３３０）。仮想マシン１５０の構成が決定された後、スイッチングハイパーバイザー１１４は、選ばれた仮想マシンを起動し、それがコンピュータデバイス１１０のＯＳとして機能することができる（ステップＳ３４０）。注意するのは、仮想マシン１５０の構成は、ＣＰＵタイプ（例えば、ＣＰＵアーキテクチャ）構成と仮想マシン１５０の周辺構成を含むことができる。仮想マシン１５０のＣＰＵタイプ構成がコンピュータデバイス１１０の構成と適合しない場合（例えば、仮想マシン１５０のＣＰＵタイプ構成は、ＡＲＭベースのＣＰＵアーキテクチャであり、コンピュータデバイス１１０のＣＰＵタイプは、Ｉｎｔｅｌ ｘ８６ベースのＣＰＵアーキテクチャである）、仮想マシンは、コンピュータデバイス１１０で実行されるようにコンピュータデバイス１１０で実行できる一組の仮想ハードウェアデバイスをシミュレートするように求められることができる。仮想マシンに用いられるハードウェアアーキテクチャがコンピュータデバイス１１０で用いられるのと異なる時、仮想マシン１５０は、命令変換（ｉｎｓｔｒｕｃｔｉｏｎ ｔｒａｎｓｌａｔｏｒ）、または命令エミュレータを更に用いて第１コンピュータデバイス１１０の命令セットをシミュレートすることができるため、仮想マシン１５０のオペレーティングシステムとユーザーアプリケーションがホストコンピュータデバイス１１０で動作されることができる。
【００１９】
仮想マシン１５０がホストコンピュータデバイス１１０で実行された後、本発明の仮想マシン制御方法は、実行中の仮想マシンを第１コンピュータデバイスから第１コンピュータデバイスにスイッチするように更に実施されることができる。
【００２０】
図４は、本発明に係る装置、システムで、実行中の仮想マシンを第１コンピュータデバイスから第２コンピュータデバイスに切り替える、切り替え方法（仮想マシン制御方法）の実施例の流れ図である。図１に示されるように、切り替え方法は、コンピュータシステム１００に用いられることができる。まず、ステップＳ４１０では、仮想マシンが第１コンピュータデバイスで現在実行されると仮定し（即ち、コンピュータデバイス）、実行中の時に常に第１スイッチングハイパーバイザー１１４が仮想マシンの状態情報の全てを共有メモリ１３０に書き込む。仮想マシン１５０の状態情報は、例えば、ＣＰＵレジスタと状態、周辺機器の状態と、コンピュータデバイス１１０の仮想マシン１５０のメモリ内容に関する情報を含むことができる。仮想マシン１５０の状態情報は、共有メモリ１３０の特定の記憶場所に保存されることができる。続いてステップＳ４２０では、切り替え通知が受け取られたかどうか判断される。通知が受け取られてない場合、ステップＳ４１０は、第１スイッチングハイパーバイザー１１４によって持続的に実施され、仮想マシンの状態情報の全てを書き込む。ユーザーが仮想マシンの実行を第２コンピュータデバイス（即ちコンピュータデバイス１２０）に切り替えようとした時、ユーザーは、切り替え通知を第１スイッチングハイパーバイザー１１４に出す。切り替え通知は、仮想マシンと、共有メモリ１３０の仮想マシンの状態情報のために切り替えられるコンピュータデバイスと仮想マシンの状態情報のメモリアドレスの情報を含む。切り替え通知を受けた後（ステップＳ４２０でＹｅｓ）、ステップＳ４３０では、第１スイッチングハイパーバイザー１１４は、第２スイッチングハイパーバイザー１２４と通信し、第２スイッチングハイパーバイザー１２４に新しい仮想マシンインスタンスを準備するように知らせ、現在実行中の仮想マシンの状態情報を受ける。また、第１スイッチングハイパーバイザー１１４は、仮想マシンの全ての動作を中断することができる。ターゲットのコンピュータデバイス（即ち、コンピュータデバイス１２０）の新しい仮想マシンインスタンスが整った後、ステップＳ４４０では、第１スイッチングハイパーバイザー１１４は、第２スイッチングハイパーバイザー１２４に共有メモリ１３０の仮想マシンの状態情報のメモリアドレスの情報を読み込むように知らせ、前に実行の仮想マシンの状態情報を得て、ターゲットのコンピュータデバイスで、実行中の仮想マシンを再開する。
【００２１】
この実施例では、仮想マシンの状態情報は、ターゲットのコンピュータデバイスにコピーされるのでなく、共有メモリ１３０に持続的に更新されて保存されるため、ターゲットのコンピュータデバイスは、特定の記憶場所で共有メモリ１３０から状態情報を読み込み、切り替え通知を受けることで、仮想マシンの実行を即時に開始することができる。
【００２２】
いくつかの実施例では、コンピュータデバイス１１０と１２０は、異なる処理ユニットタイプ及び／または異なる実行ＯＳの処理ユニットを有することができる。例えばコンピュータデバイス１１０の処理ユニットタイプは、ｘ８６シリーズＣＰＵであることができ、コンピュータデバイス１２０の処理ユニットタイプは、ＡＲＭプロセッサであることができる。また、コンピュータデバイス１１０のＯＳのタイプは、ＷｉｎｄｏｗベースのＯＳであることができ、コンピュータデバイス１２０のウィンドウシステム１２４のＯＳのタイプは、ＬｉｎｕｘベースのＯＳであることができる。コンピュータデバイス１１０の実際のハードウェア周辺機器は、コンピュータデバイス１２０のそれと同じでないことから、コンピュータデバイス１２０は、コンピュータデバイス１１０で用いられる特定のハードウェアデバイスに直接適合することができない可能性がある。よって、いくつかの方法が上述のハードウェアの不適合問題を克服するように提供される。
【００２３】
例えば、一実施例では、コンピュータデバイス１１０は、プラグ可能デバイスを含み、コンピュータデバイス１２０は、プラグ可能デバイスに差し込みが適合するプラグ可能インターフェースを含むものとされる。この場合、切り替え通知を受けた後、プラグ可能デバイスは、まず、コンピュータデバイス１１０から取り除かれ、続いてプラグ可能インターフェースを介してそれによって用いられるコンピュータデバイス１２０に差し込まれることができる。例えば、プラグ可能デバイスは、プラグアンドプレイ機能をサポートするＵＳＢデバイスであることができ、よって、プラグ可能インターフェースは、ＵＳＢインターフェースである。
【００２４】
もう１つの実施例では、コンピュータデバイス１１０で用いられる特定のハードウェアデバイスがコンピュータデバイス１２０に存在しない場合、第２スイッチングハイパーバイザー１２４は、コンピュータデバイス１２０のハードウェアデバイスから対応するハードウェアデバイスとして、特定のハードウェアデバイスと類似した機能を有するハードウェアデバイスを更に選ぶことができる。例えば、マウスデバイスがコンピュータデバイス１１０で用いられているが、コンピュータデバイス１２０に存在していない場合、第２スイッチングハイパーバイザー１２４は、マウスデバイス（例えばタッチパネル）と類似した機能のハードウェアデバイスを選ぶことができる。
【００２５】
もう１つの実施例では、コンピュータデバイス１１０で用いられる特定のハードウェアデバイスがコンピュータデバイス１２０に存在せず、且つ対応するハードウェアデバイスがない場合、第２スイッチングハイパーバイザー１２４は、ソフトウェアモジュールで特定のハードウェアデバイスを実装するか、または第２スイッチングハイパーバイザー１２４は、第１スイッチングハイパーバイザー１１４と更に通信して、コンピュータデバイス１１０で特定のハードウェアデバイスの元の設定を用い、続いてコンピュータデバイス１１０と１２０間の接続インターフェース１４０を介して仮想デバイスを用いて仮想デバイスを設定することができる。
【００２６】
注意するのは、説明のために、２つのコンピュータデバイスのみが上述の実施例の仮想マシンの実行を切り替えるのに用いられるが、本発明はこれを限定するものではない。言い換えれば、２つ以上のコンピュータデバイスは共有メモリの直接アクセスによって、実行中の仮想マシンの状態情報を共有することができ、続いて本発明の切り替え方法（仮想マシン制御方法）を用いて仮想マシンを異なるコンピュータデバイスに切り替えることができる。
【００２７】
要約すると、コンピュータデバイス間で、実行中の仮想マシンを切り替える本発明に係る装置及び方法によれば、特に同一機種環境と異機種環境のＣＰＵで構成されるデスクトップまたはラップトッププラットフォームで実行中の仮想マシンの管理に複数の仮想マシンインスタンスが同時に動作されることができる。仮想マシンは、命令変換によって同じＣＰＵシステム（例えば、同じＣＰＵアーキテクチャ）を有する装置上で、または異なるＣＰＵシステム（例えば、異なるＣＰＵアーキテクチャ）を有するコンピュータシステムでホスティングされることができる。本発明のスイッチングハイパーバイザーを用いれば、仮想マシンの必要不可欠（ｅｓｓｅｎｔｉａｌ）な状態（例えば、ＣＰＵレジスタの状態）は、関連する複数のコンピュータデバイスでアクセス可能な共有メモリに保存されることができるため、仮想マシンを再開する待機時間が短くなる。即ち、スイッチングハイパーバイザーは、１つのコンピュータデバイスからもう１つのコンピュータデバイスにそれらをコピーすることなく、共有メモリによって仮想マシンの状態を転送することができ、仮想マシンが同一機種環境または異機種環境のコンピュータデバイスで実行されるように動的に切り替えられることができて、リアルタイム、またはほぼリアルタイムで同じプラットフォームに属しているコンピュータデバイス間で転送することができる。
【００２８】
本発明に係る仮想マシン制御装置と仮想マシン制御方法（切り替え方法）、または本発明の特定の態様または部分は、例えばフレキシブルディスク、ＣＤ−ＲＯＭ 、ハードディスク、または他の機械読み取り可能な記憶媒体などの有形的表現媒体に組み込まれるプログラムコードの形をとることができる。プログラムコードは、例えばコンピュータなどの機械によってロードされて実行された時、前記機械は、それによって前記方法を実施する装置となる。前記方法は、光ファイバーを通して、またはその他の伝送形態を通して、例えば電気配線またはケーブルなどのいくつかの伝送媒体を介して伝送されたプログラムコードの形で組み込まれることもできる。例えばコンピュータなどの機械にプログラムコードが受信されてロードされ、実行された時、前記機械は、上述の方法を実施する装置となる。汎用プロセッサに実施された時、プログラムコードは、プロセッサと組み合わせられ、特定用途向けロジック回路に類似して動作する固有の装置を提供する。
【００２９】
以上、本発明の好適な実施例を例示したが、これは本発明を限定するものではなく、本発明の精神及び範囲を逸脱しない限りにおいては、当業者であれば行い得る少々の変更や修飾を付加することが可能である。従って、本発明が請求する保護範囲は、特許請求の範囲を基準とする。
【符号の説明】
【００３０】
１００  コンピュータシステム
１１０  コンピュータデバイス
１１２  処理ユニット
１１４  第１スイッチングハイパーバイザー
１２０  コンピュータデバイス
１２２  処理ユニット
１２４  第２スイッチングハイパーバイザー
１３０  共有メモリ
１４０  接続インターフェース
１５０  仮想マシン
【図１】
2011100431.tif 000003
【図２】
2011100431.tif 000004
【図３】
2011100431.tif 000005
【図４】
2011100431.tif 000006