(57)【要約】【課題】実行環境を保ったまま状況に応じて使用するシステムを柔軟に切り換えることが可能な、新規かつ改良された技術を提供する。【解決手段】互いに異なる性質のハードウェアを有する第１システム１００ａと第２システム１００ｂとは、自システムのハードウェアを使用した処理を実行するための環境である実行環境を提供することが可能である吸収部１３０と、吸収部１３０によって提供される実行環境において所定の処理を実行することが可能である処理部１２０と、をそれぞれが有する。吸収部１３０は、自システムのハードウェアと他システムのハードウェアとの違いを吸収することによって、自システムの処理部１２０に対して自システムのハードウェアと他システムのハードウェアとの違いに依存しない実行環境を自システムの処理部１２０に提供する。【選択図】図１
2010204962.tif 000002
【特許請求の範囲】
【請求項１】
自システムのハードウェアを使用した処理を実行するための環境である実行環境を提供することが可能である吸収部と、
前記吸収部によって提供される前記実行環境において所定の処理を実行することが可能である処理部と、
をそれぞれが有するとともに、互いに異なる性質の前記ハードウェアを有する、第１システムおよび第２システムを備え、
前記第１システムの前記吸収部は、
前記第１システムの前記ハードウェアと前記第２システムの前記ハードウェアとの違いを吸収することによって、前記第１システムの前記処理部に対して前記第１システムの前記ハードウェアと前記第２システムの前記ハードウェアとの違いに依存しない前記実行環境を前記第１システムの前記処理部に提供し、
前記第２システムの前記吸収部は、
前記第１システムの前記ハードウェアと前記第２システムの前記ハードウェアとの違いを吸収することによって、前記第２システムの前記処理部に対して前記第１システムの前記ハードウェアと前記第２システムの前記ハードウェアとの違いに依存しない前記実行環境を前記第２システムの前記処理部に提供する、情報処理システム。
【請求項２】
前記第１システムは、
前記所定の処理を実行するシステムを切り換える旨を示すイベントの発生を検知することが可能である監視部をさらに備え、
前記第１システムの前記処理部は、
前記所定の処理の実行中において前記監視部によって前記イベントの発生が検知されると、前記所定の処理の実行に際して使用している前記ハードウェアに記憶されているデータを抽出して、抽出した前記データを記述したイメージファイルを生成し、生成した前記イメージファイルを前記第２システムに出力する、
請求項１に記載の情報処理システム。
【請求項３】
前記第２システムは、
前記所定の処理を実行するシステムを切り換える旨を示すイベントの発生を検知することが可能である監視部をさらに備え、
前記第２システムの前記処理部は、
前記所定の処理の実行中において前記監視部によって前記イベントの発生が検知されると、前記所定の処理の実行に際して使用している前記ハードウェアに記憶されているデータを抽出して、抽出した前記データを記述したイメージファイルを生成し、生成した前記イメージファイルを前記第１システムに出力する、
請求項２に記載の情報処理システム。
【請求項４】
前記第１システムの前記処理部は、
前記所定の処理の待機中において前記監視部によって前記イベントの発生が検知されると、前記第２システムから前記イメージファイルの入力を受け付け、入力を受け付けた前記イメージファイルに記述された前記データを前記第１システムの前記ハードウェアに記憶させ、前記データが記憶された前記ハードウェアを使用して前記所定の処理を実行する、
請求項３に記載の情報処理システム。
【請求項５】
前記第２システムの前記処理部は、
前記所定の処理の待機中において前記監視部によって前記イベントの発生が検知されると、前記第１システムから前記イメージファイルの入力を受け付け、入力を受け付けた前記イメージファイルに記述された前記データを前記第２システムの前記ハードウェアに記憶させ、前記データが記憶された前記ハードウェアを使用して前記所定の処理を実行する、
請求項４に記載の情報処理システム。
【請求項６】
前記第１システムの前記ハードウェアは、
前記第２システムの前記ハードウェアよりも動作時における処理速度が低速であり、
前記第１システムの前記監視部は、
前記第１システムの前記ハードウェアに対してかかっている負荷の大きさを監視し、前記負荷の大きさが所定値よりも大きいときには前記イベントを発生させる、
請求項５に記載の情報処理システム。
【請求項７】
前記第２システムの前記ハードウェアは、
前記第１システムの前記ハードウェアよりも動作時における処理速度が高速であり、
前記第２システムの前記監視部は、
前記第２システムの前記ハードウェアに対してかかっている負荷の大きさを監視し、前記負荷の大きさが所定値よりも小さいときには前記イベントを発生させる、
請求項５に記載の情報処理システム。
【請求項８】
前記第２システムの前記ハードウェアは、
前記第１システムの前記ハードウェアよりも動作時における消費電力が高く、
前記第２システムの前記監視部は、
前記第２システムの前記ハードウェアの動作状況を監視し、前記動作状況が前記ハードウェアのアイドル状態中であるときには前記イベントを発生させる、
請求項５に記載の情報処理システム。
【請求項９】
前記第２システムの前記ハードウェアは、
前記第１システムの前記ハードウェアよりも動作時における消費電力が高く、
前記第２システムの前記監視部は、
前記第２システムのバッテリの動作状況を監視し、前記動作状況が前記バッテリの駆動中であるときには前記イベントを発生させる、
請求項５に記載の情報処理システム。
【請求項１０】
前記第１システムの前記監視部は、
前記第１システムの前記処理部が前記所定の処理の実行に際して使用している前記第１システムの前記ハードウェアを監視し、前記第１システムに存在しないハードウェアまたは前記第１システムで故障しているハードウェアを使用する必要が生じた場合に、前記イベントを発生させる、
請求項５に記載の情報処理システム。
【請求項１１】
前記第１システムの前記監視部は、
前記第１システムの前記処理部が前記所定の処理の実行に際して使用している前記第１システム内の温度を監視し、前記温度が所定値よりも高い場合に、前記イベントを発生させる、
請求項５に記載の情報処理システム。
【請求項１２】
前記第１システムは、
前記所定の処理を実行するシステムを切り換える旨を示す切換え指示情報の入力をユーザから受け付けることが可能である入力部をさらに備え、
前記第１システムの前記監視部は、
前記入力部が前記切換え指示情報の入力を受け付けると、前記イベントを発生させる、
請求項５に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムに関する。より詳細には、状況に応じて使用するシステムを切り換える技術に関する。
【背景技術】
【０００２】
一般的に、例えば、処理能力の高いシステムの消費電力は大きく、消費電力の小さいシステムの処理能力は低い傾向にある。また、例えば、多くの機能を有するシステムの消費電力は大きく、消費電力の小さいシステムの機能は制限されているという傾向がある。したがって、例えば、処理能力の高いシステムと消費電力の小さいシステムとはトレードオフの関係にあり、処理能力と消費電力とのどちらかを優先して使用すべきシステムを選択する必要が生じる。同様に、多くの機能を有するシステムと消費電力の小さいシステムともトレードオフの関係にあり、機能と消費電力とのどちらかを優先して使用すべきシステムを選択する必要が生じる。このように、状況に応じて使用するシステムを切り換える必要が生じる。例えば、処理能力が比較的高く、豊富な機能を有するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）としてのシステム（サブシステム）と、機能は制限されるものの消費電力が比較的低いデバイスで構成されたシステム（サブシステム）とを併せ持つシステムについて開示されている（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】”Ｗｉｎｄｏｗｓ（登録商標）  ＳｉｄｅＳｈｏｗ（登録商標）”、［ｏｎｌｉｎｅ］、［平成２１年２月２６日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｊａｐａｎ／ｗｉｎｄｏｗｓ／ｐｒｏｄｕｃｔｓ／ｗｉｎｄｏｗｓｖｉｓｔａ／ｆｅａｔｕｒｅｓ／ｄｅｔａｉｌｓ／ｓｉｄｅｓｈｏｗ．ｍｓｐｘ＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、例えば、上記した非特許文献１に開示された技術では、状況に応じて使用するシステムを切り換えることは可能であるが、それぞれのシステムは実行環境が異なるため、例えば同じアプリケーションが利用できないなど、ユーザにとって不便であるという問題があった。
【０００５】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、実行環境を保ったまま状況に応じて使用するシステムを柔軟に切り換えることが可能な、新規かつ改良された技術を提供しようとするものである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある観点によれば、自システムのハードウェアを使用した処理を実行するための環境である実行環境を提供することが可能である吸収部と、吸収部によって提供される実行環境において所定の処理を実行することが可能である処理部と、をそれぞれが有するとともに、互いに異なる性質の前記ハードウェアを有する、第１システムおよび第２システムを備え、第１システムの吸収部は、第１システムのハードウェアと第２システムのハードウェアとの違いを吸収することによって、第１システムの処理部に対して第１システムのハードウェアと第２システムのハードウェアとの違いに依存しない実行環境を第１システムの処理部に提供し、第２システムの吸収部は、第１システムのハードウェアと第２システムのハードウェアとの違いを吸収することによって、第２システムの処理部に対して第１システムのハードウェアと第２システムのハードウェアとの違いに依存しない実行環境を第２システムの処理部に提供する、情報処理システムが提供される。
【０００７】
上記した第１システムは、所定の処理を実行するシステムを切り換える旨を示すイベントの発生を検知することが可能である監視部をさらに備え、第１システムの処理部は、所定の処理の実行中において監視部によってイベントの発生が検知されると、所定の処理の実行に際して使用しているハードウェアに記憶されているデータを抽出して、抽出したデータを記述したイメージファイルを生成し、生成したイメージファイルを第２システムに出力することとしてもよい。
【０００８】
上記した第２システムは、所定の処理を実行するシステムを切り換える旨を示すイベントの発生を検知することが可能である監視部をさらに備え、第２システムの処理部は、所定の処理の実行中において監視部によってイベントの発生が検知されると、所定の処理の実行に際して使用しているハードウェアに記憶されているデータを抽出して、抽出したデータを記述したイメージファイルを生成し、生成したイメージファイルを第１システムに出力することとしてもよい。
【０００９】
上記した第１システムの処理部は、所定の処理の待機中において監視部によってイベントの発生が検知されると、第２システムからイメージファイルの入力を受け付け、入力を受け付けたイメージファイルに記述されたデータを第１システムのハードウェアに記憶させ、データが記憶されたハードウェアを使用して所定の処理を実行することとしてもよい。
【００１０】
上記した第２システムの処理部は、所定の処理の待機中において監視部によってイベントの発生が検知されると、第１システムからイメージファイルの入力を受け付け、入力を受け付けたイメージファイルに記述されたデータを第２システムのハードウェアに記憶させ、データが記憶されたハードウェアを使用して所定の処理を実行することとしてもよい。
【００１１】
上記した第１システムのハードウェアは、第２システムのハードウェアよりも動作時における処理速度が低速であり、第１システムの監視部は、第１システムのハードウェアに対してかかっている負荷の大きさを監視し、負荷の大きさが所定値よりも大きいときにはイベントを発生させることとしてもよい。
【００１２】
上記した第１システムのハードウェアは、第２システムのハードウェアよりも動作時における処理速度が低速であり、第１システムの監視部は、第１システムの動作状況を監視し、動作状況が第１システムの起動中であるときにはイベントを発生させることとしてもよい。
【００１３】
上記した第２システムのハードウェアは、第１システムのハードウェアよりも動作時における処理速度が高速であり、第２システムの監視部は、第２システムのハードウェアに対してかかっている負荷の大きさを監視し、負荷の大きさが所定値よりも大きいときにはイベントを発生させることとしてもよい。
【００１４】
上記した第２システムのハードウェアは、第１システムのハードウェアよりも動作時における消費電力が高く、第２システムの監視部は、第２システムの動作状況を監視し、動作状況が第２システムのアイドル状態中であるときにはイベントを発生させることとしてもよい。
【００１５】
上記した第２システムのハードウェアは、第１システムのハードウェアよりも動作時における消費電力が高く、第２システムの監視部は、第２システムのバッテリの動作状況を監視し、動作状況がバッテリの駆動中であるときにはイベントを発生させることとしてもよい。
【００１６】
上記した第１システムの監視部は、第１システムの処理部が所定の処理の実行に際して使用している第１システムのハードウェアを監視し、第１システムに存在しないハードウェアまたは第１システムで故障しているハードウェアを使用する必要が生じた場合に、イベントを発生させることとしてもよい。
【００１７】
上記した第１システムの監視部は、第１システムの処理部が所定の処理の実行に際して使用している第１システム内の温度を監視し、温度が所定値よりも高い場合に、イベントを発生させることとしてもよい。
【００１８】
上記した第１システムは、所定の処理を実行するシステムを切り換える旨を示す切換え指示情報の入力をユーザから受け付けることが可能である入力部をさらに備え、第１システムの監視部は、入力部が切換え指示情報の入力を受け付けると、イベントを発生させることとしてもよい。
【発明の効果】
【００１９】
以上説明したように本発明によれば、所定の処理を実行するシステムにおいて所定の処理を実行している間に状況に応じて使用するシステムを切換え、切換え後のシステムにおいて、システムを切換えた時点から所定の処理の続きを実行することが可能である。
【図面の簡単な説明】
【００２０】
【図１】本実施形態に係る情報処理システムの機能構成を示す図である。
【図２】本実施形態に係るサブシステムのハードウェア構成を示す図である。
【図３】２種類の仮想化技術を示す図である。
【図４】ＬＰＳＳからＨＰＳＳにＶＭ（Ｖｅｒｔｕａｌ  Ｍａｃｈｉｎｅ）がマイグレーションする様子を示した模式図である。
【図５】ＶＭ実行側とＶＭ非実行側とにおける状態遷移図である。
【図６】本実施形態に係る情報処理システムのシステム構成例（その１）を示す図である。
【図７】本実施形態に係る情報処理システムのシステム構成例（その２）を示す図である。
【図８】ＶＭ実行側のサブシステムの切換えの流れ（その１）を示す図である。
【図９】ＶＭ実行側のサブシステムの切換えの流れ（その２）を示す図である。
【図１０】ＶＭイメージ用ＨＤＤの共有例（その１）を示す図である。
【図１１】ＶＭイメージ用ＨＤＤの共有例（その２）を示す図である。
【図１２】ＶＭイメージ用ＨＤＤの共有例（その３）を示す図である。
【図１３】ＶＭイメージ用ＨＤＤの共有例（その４）を示す図である。
【図１４】ＶＭイメージ用ＨＤＤの共有例（その５）を示す図である。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。なお、説明は以下の順序で行う。
【００２２】
１．    第１実施形態
１−１．  情報処理システムの概要
１−２．  情報処理システムの機能構成
１−３．  サブシステムのハードウェア構成
１−４．  仮想化技術とは
１−５．  仮想化
１−６．  仮想化のメリット
１−７．  マイグレーション
１−８．  マイグレーションを活用した動的な実行環境の移動
１−９．  情報処理システムを実現するために必要なシステム構成要素
１−９−１．  消費電力・処理能力の異なる二つ以上のサブシステム
１−９−２．  サブシステム間の通信手段
１−９−３．  サブシステム間でＨＷリソースを共有する手段
１−９−４．  サブシステム間でＶＭイメージを共有する手段
１−９−５．  切換えイベント検知機能
１−９−６．  サブシステム電源制御機能
１−１０．  状態遷移図
１−１０−１．  ＶＭ実行
１−１０−２．  マイグレーション待機（ＶＭ実行側）
１−１０−３．  マイグレーション待機（ＶＭ非実行側）
１−１０−４．  マイグレーション実行（ＶＭ実行側）
１−１０−５．  マイグレーション実行（ＶＭ実行側）
１−１０−６．  マイグレーションの流れ
１−１０−７．  ライブマイグレーションの流れ
１−１０−８．  切換え待機
１−１１．  システム構成例（その１）
１−１２．  システム構成例（その２）
１−１３．  ＬＰＳＳ−＞ＨＰＳＳの切換えに関して
１−１４．  切換えの流れ（その１）
１−１５．  切換えの流れ（その２）
１−１６．  ＶＭイメージ用ＨＤＤ共有例（その１）
１−１７．  ＶＭイメージ用ＨＤＤ共有例（その２）
１−１８．  ＶＭイメージ用ＨＤＤ共有例（その３）
１−１９．  ＶＭイメージ用ＨＤＤ共有例（その４）
１−２０．  ＶＭイメージ用ＨＤＤ共有例（その５）
１−２１．  命令セットが同一でない場合について
１−２２．  将来的な展望
２．    本実施形態の変形例
【００２３】
＜１．第１実施形態＞
本発明の第１実施形態について説明する。
【００２４】
［１−１．情報処理システムの概要］
低消費電力サブシステム（ＬＰＳＳ：Ｌｏｗ  Ｐｏｗｅｒ  Ｓｕｂ  Ｓｙｓｔｅｍ）と高パフォーマンスサブシステム（ＨＰＳＳ：Ｈｉｇｈ  Ｐｏｗｅｒ  Ｓｕｂ  Ｓｙｓｔｅｍ）とを有する情報処理システムが、それぞれのサブシステムにおいては仮想マシン上でＯＳ（Ｏｐｅｒｅｔｉｎｇ  Ｓｙｓｔｅｍ）を実行する。情報処理システムは、タスク負荷や電源状態などの状況に応じて、処理を実行する仮想マシンをＬＰＳＳとＨＰＳＳの間で動的にマイグレーションさせる。例えば、起動時や高負荷タスク処理時にはＨＰＳＳに、バッテリ駆動時やアイドル時や低負荷処理時にはＬＰＳＳに処理を実行させる。情報処理システムは、単一筐体中にＬＰＳＳとＨＰＳＳの両方を有するシステム（ＰＣ単体）であってもよく、ノートＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）（ＬＰＳＳ）とドック（ＨＰＳＳ）のような分離型システムであってもよい。また、情報処理システムは、ＬＰＳＳとＨＰＳＳとの組み合わせに限らず、ハードウェアの異なる２つのシステムのあらゆる組み合わせによって構成されることとすることもできる。
【００２５】
［１−２．情報処理システムの機能構成］
図１は、本実施形態に係る情報処理システムの機能構成を示す図である。図１に示すように、情報処理システム１０は、異なるハードウェアによって構成される２つのサブシステム（第１システム１００（１００ａ）および第２システム１００（１００ｂ））によって構成される。本実施形態では、サブシステムの数は２つであるとするが、３つ以上であることとしてもよい。
【００２６】
情報処理システム１０は、第１システム１００（１００ａ）と第２システム１００（１００ｂ）とが単一筐体（例えば、ノートＰＣ）内に存在することとしてもよく、第１システム１００（１００ａ）が組み込まれたノートＰＣと第２システム１００（１００ｂ）が組み込まれたドックとを有する分離型システム等であってもよい。また、第１システム１００（１００ａ）と第２システム１００（１００ｂ）とが別の筐体内に組み込まれており、各筐体がネットワークを介して接続されていることとしてもよい。
【００２７】
第１システム１００（１００ａ）と第２システム１００（１００ｂ）とは互いに性質の異なるハードウェアを有するものである。ハードウェアの性質の違いには様々なものがあり、ハードウェアの性質の違いは特に限定されるものではないが、例えば、ハードウェアによる処理速度の違い、ハードウェアによる消費電力の違い、ハードウェアの入出力インタフェースの違い、ＣＰＵの命令セットアーキテクチャの違い等が想定される。第１システム１００（１００ａ）は、吸収部１３０（１３０ａ）と、処理部１２０（１２０ａ）とを備えるものである。同様に、第２システム１００（１００ｂ）は、吸収部１３０（１３０ｂ）と、処理部１２０（１２０ｂ）とを備えるものである。
【００２８】
吸収部１３０は、自システムのハードウェアを使用した処理を実行するための環境である実行環境を提供することが可能である。ここでいうハードウェアとは、処理を実行するために必要となる物理的な装置であり、例えば、プログラムを実行するために必要となる、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等のストレージ装置といった各種の装置等である。吸収部１３０は、例えば、ＣＰＵ、ＲＡＭ、ＨＤＤ等によって構成され、ＣＰＵがＨＤＤから読み出してＲＡＭに展開した仮想マシンモニタ（ＶＭＭ：Ｖｅｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）を実行することによってその機能が実現される。ＶＭＭは、例えば、ハードウェアの違いに依存しない実行環境を、後述する仮想マシン（ＶＭ）に提供するためのプログラムである。
【００２９】
処理部１２０は、吸収部１３０によって提供される実行環境において所定の処理を実行することが可能である。所定の処理とは、特に限定されるものではなく、例えば、プログラムを実行することによってなされるものである。プログラムの種類についても特に限定されるものではないが、例えば、コンテンツデータを再生するプログラム等である。処理部１２０は、例えば、ＣＰＵ、ＲＡＭ、ＨＤＤ等によって構成され、ＣＰＵがＨＤＤから読み出してＲＡＭに展開したプログラムを実行することによって実現される。また、ここでいうプログラムは、上記ＶＭＭ上で実行される仮想マシン（ＶＭ）を構成するソフトウェアのことである。さらに、仮想マシン（ＶＭ）を実行するとは、このＣＰＵが仮想マシン（ＶＭ）を構成するソフトウェアを実行することを意味する。仮想マシン（ＶＭ）についての詳細については後述する。
【００３０】
第１システム１００ａの吸収部１３０ａは、第１システム１００ａのハードウェアと第２システム１００ｂのハードウェアとの違いを吸収する。この機能は、例えば、後に説明する仮想化技術によって実現できる。これによって、第１システム１００ａの処理部１２０ａに対して第１システム１００ａのハードウェアと第２システム１００ｂのハードウェアとの違いに依存しない実行環境を第１システム１００ａの処理部１２０ａに提供する。
【００３１】
同様に、第２システム１００ｂの吸収部１３０ｂは、第１システム１００ａのハードウェアと第２システム１００ｂのハードウェアとの違いを吸収する。これによって、第２システム１００ｂの処理部１２０ｂに対して第１システム１００ａのハードウェアと第２システム１００ｂのハードウェアとの違いに依存しない実行環境を第２システム１００ｂの処理部１２０ｂに提供する。
【００３２】
第１システム１００ａは、所定の処理を実行するシステムを切り換える旨を示すイベントの発生を検知することが可能である監視部１６０ａをさらに備えることとしてもよい。その場合には、第１システム１００ａの処理部１２０ａは、所定の処理の実行中において監視部１６０ａによってイベントの発生が検知されると、所定の処理の実行に際して使用しているハードウェアに記憶されているデータを抽出する。そして、第１システム１００ａの処理部１２０ａは、抽出したデータを記述したイメージファイルを生成し、生成したイメージファイルを第２システム１００ｂに出力する。イメージファイルとは、ハードウェア（例えば、ＣＰＵ、ＲＡＭ、ＨＤＤ等）に記憶されたデータを、ファイルやフォルダ構造を保ったまま保存したデータのことである。これによって、第１システム１００ａは、システムの切換え時にイメージファイルを第２システム１００ｂに出力することができる。監視部１６０ａは、ＣＰＵ等によって構成され、ＣＰＵがＲＡＭ等に記憶されたプログラムを実行することによって実現される。
【００３３】
同様に、第２システム１００ｂは、所定の処理を実行するシステムを切り換える旨を示すイベントの発生を検知することが可能である監視部１６０ｂをさらに備えることとしてもよい。その場合には、第２システム１００ｂの処理部１２０ｂは、所定の処理の実行中において監視部１６０ｂによってイベントの発生が検知されると、所定の処理の実行に際して使用しているハードウェアに記憶されているデータを抽出する。そして、第２システム１００ｂの処理部１２０ｂは、抽出したデータを記述したイメージファイルを生成し、生成したイメージファイルを第１システム１００ａに出力する。これによって、第２システム１００ｂは、システムの切換え時にイメージファイルを第１システム１００ａに出力することができる。監視部１６０ｂは、ＣＰＵ等によって構成され、ＣＰＵがＲＡＭ等に記憶されたプログラムを実行することによって実現される。
【００３４】
第１システム１００ａの処理部１２０ａは、所定の処理の待機中において監視部１６０ａによってイベントの発生が検知されると、第２システム１００ｂからイメージファイルの入力を受け付けることとしてもよい。第１システム１００ａの処理部１２０ａは、入力を受け付けたイメージファイルに記述されたデータを第１システム１００ａのハードウェアに記憶させ、データが記憶されたハードウェアを使用して所定の処理を実行する。これによって、第１システム１００ａの処理部１２０ａは、第２システム１００ｂの処理部１２０ｂによって実行していた所定の処理を、システムの切換え時点から実行することができる。
【００３５】
同様に、第２システム１００ｂの処理部１２０ｂは、所定の処理の待機中において監視部１６０ｂによってイベントの発生が検知されると、第１システム１００ａからイメージファイルの入力を受け付けることとしてもよい。第２システム１００ｂの処理部１２０ｂは、入力を受け付けたイメージファイルに記述されたデータを第２システム１００ｂのハードウェアに記憶させ、データが記憶されたハードウェアを使用して所定の処理を実行する。これによって、第２システム１００ｂの処理部１２０ｂは、第１システム１００ａの処理部１２０ａが実行していた所定の処理を、システムの切換え時点から実行することができる。
【００３６】
第１システム１００ａのハードウェアが、第２システム１００ｂのハードウェアよりも動作時における処理速度が低速である場合が想定される。この場合には、第１システム１００ａの監視部１６０ａは、第１システム１００ａのハードウェアに対してかかっている負荷の大きさを監視することとしてもよい。負荷の大きさが所定値よりも大きいときには所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。所定値は、例えば、ＲＡＭやＨＤＤ等に記憶されているものとする。
【００３７】
また、第１システム１００ａのハードウェアが、第２システム１００ｂのハードウェアよりも動作時における処理速度が低速である場合、第１システム１００ａの監視部１６０ａは、第１システム１００ａの処理部１２０ａによって実行されるＶＭの状況を監視することとしてもよい。その場合には、第１システム１００ａの監視部１６０ａは、第１システム１００ａの処理部１２０ａによって実行されるＶＭが起動中であるときには所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。
【００３８】
また、第２システム１００ｂのハードウェアは、第１システム１００ａのハードウェアよりも動作時における処理速度が高速である場合が想定される。この場合には、第２システム１００ｂの監視部１６０ｂは、第２システム１００ｂのハードウェアに対してかかっている負荷の大きさを監視することとしてもよい。負荷の大きさが所定値よりも小さいときには所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。所定値は、例えば、ＲＡＭやＨＤＤ等に記憶されているものとする。
【００３９】
また、第２システム１００ｂのハードウェアは、第１システム１００ａのハードウェアよりも動作時における消費電力が高い場合が想定される。この場合には、第２システム１００ｂの監視部１６０ｂは、第２システム１００ｂの動作状況を監視し、動作状況が第２システム１００ｂのアイドル状態中であるときには所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。
【００４０】
また、第２システム１００ｂのハードウェアは、第１システム１００ａのハードウェアよりも動作時における消費電力が高い場合が想定される。この場合には、第２システム１００ｂの監視部１６０ｂは、第２システム１００ｂのバッテリの動作状況を監視し、動作状況がバッテリの駆動中であるときには所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。
【００４１】
また、第１システム１００ａの監視部１６０ａは、第１システム１００ａの処理部１２０ａが所定の処理の実行に際して使用している第１システム１００ａのハードウェアを監視する。そして、第１システム１００ａの監視部１６０ａが、第１システム１００ａに存在しないハードウェアまたは第１システム１００ａで故障しているハードウェアを使用する必要が生じた場合に、所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。同様に、第２システム１００ｂの監視部１６０ｂが、第２システム１００ｂの処理部１２０ｂが所定の処理の実行に際して使用している第２システム１００ｂのハードウェアを監視することとしてもよい。そして、第２システム１００ｂの監視部１６０ｂが、第２システム１００ｂに存在しないハードウェアまたは第２システム１００ｂで故障しているハードウェアを使用する必要が生じた場合に、所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。
【００４２】
また、第１システム１００ａの監視部１６０ａは、第１システム１００ａの処理部１２０ａが所定の処理の実行に際して使用している第１システム１００ａ内の温度を監視する。そして、第１システム１００ａの監視部１６０ａが、温度が所定値よりも高い場合に、所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。同様に、第２システム１００ｂの監視部１６０ｂは、第２システム１００ｂの処理部１２０ｂが所定の処理の実行に際して使用している第２システム１００ｂ内の温度を監視することとしてもよい。そして、第２システム１００ｂの監視部１６０ｂが、温度が所定値よりも高い場合に、所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。所定値は、例えば、ＲＡＭやＨＤＤ等に記憶されているものとする。
【００４３】
また、第１システム１００ａは、所定の処理を実行するシステムを切り換える旨を示す切換え指示情報の入力をユーザから受け付けることが可能である入力部１７０ａをさらに備えることとしてもよい。入力部１７０ａは、例えば、入力装置等によって構成される。その場合には、第１システム１００ａの監視部１６０ａは、入力部１７０ａが切換え指示情報の入力を受け付けると、所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。同様に、第２システム１００ｂは、所定の処理を実行するシステムを切り換える旨を示す切換え指示情報の入力をユーザから受け付けることが可能である入力部１７０ｂをさらに備えることとしてもよい。その場合には、第２システム１００ｂの監視部１６０ｂは、入力部１７０ｂが切換え指示情報の入力を受け付けると、所定の処理を実行するシステムを切り換える旨を示すイベントを発生させることとしてもよい。ユーザは、例えば、周囲が静かな環境でシステムを利用した作業を行いたいときには、切換え指示情報を入力して、消費電力（または発熱量）が大きくシステムの冷却に使うファンを高速回転させる必要のあるシステムから、消費電力（発熱量）が小さくシステムの冷却のためにファンを回転させる必要がない（もしくはファンを低速で回転させればよい）システムに切り換えることが可能である。すなわち、ファンの回転音が比較的大きいシステムからファンの回転音が比較的小さいシステムに切り換えることが可能である。また、ユーザは、例えば、システムに高速な処理を実行させたい場合には、切換え指示情報を入力して、比較的処理速度の低速なシステムから比較的処理速度が高速なシステムに切り換えることが可能である。また、ユーザは、例えば、バッテリの残容量をあまり減らしたくない場合には、切換え指示情報を入力して、比較的消費電力の高いシステムから比較的消費電力の低いシステムに切り換えることが可能である。
【００４４】
この他に、第１システム１００ａは、第１システム１００ａのハードウェア資源のうちで第２システム１００ｂと共有する部分として共有部１４０ａをさらに備えることとしてもよい。共有部１４０ａとしては、例えば、キーボードやＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等が想定される。また、第１システム１００ａは、処理部１２０ａが共有部１４０ａに記憶されているデータやイメージファイルを第２システム１００ｂと送受信するための通信部１１０ａ、所定の処理を実行した結果を出力する出力部１５０ａ等をさらに備えることとしてもよい。同様に、第２システム１００ｂは、第２システム１００ｂのハードウェア資源のうちで第１システム１００ａと共有する部分として共有部１４０ｂをさらに備えることとしてもよい。また、第２システム１００ｂは、処理部１２０ｂが共有部１４０ｂに記憶されているデータやイメージファイルを第１システム１００ａと送受信するための通信部１１０ｂ、所定の処理を実行した結果を出力する出力部１５０ｂ等をさらに備えることとしてもよい。
【００４５】
［１−３．サブシステムのハードウェア構成］
図２は、本実施形態に係るサブシステムのハードウェア構成を示す図である。サブシステムは、上記した第１システム１００ａや、第２システム１００ｂに相当するものである。また、ここでは、第１システム１００ａと第２システム１００ｂとが別の筐体内に存在し、各々の筐体がネットワーク２００を介して接続されている例について説明するが、このような形態に限定されないことについては上記した通りである。
【００４６】
サブシステム１００（第１システム１００ａおよび第２システム１００ｂ）は、主に、ＣＰＵ９０１と、ＲＯＭ９０３と、ＲＡＭ９０５と、ホストバス９０７と、ブリッジ９０９と、外部バス９１１と、インタフェース９１３と、入力装置９１５と、出力装置９１７と、ストレージ装置９１９と、ドライブ９２１と、接続ポート９２３と、通信装置９２５とを備える。
【００４７】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９、またはリムーバブル記録媒体９２７に記録された各種プログラムに従って、サブシステム１００内の動作全般またはその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶する。これらはＣＰＵバス等の内部バスにより構成されるホストバス９０７により相互に接続されている。
【００４８】
ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バスなどの外部バス９１１に接続されている。
【００４９】
入力装置９１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置９１５は、例えば、赤外線やその他の電波を利用したリモートコントロール手段（いわゆる、リモコン）であってもよいし、サブシステム１００の操作に対応した携帯電話やＰＤＡ等の外部接続機器９２９であってもよい。さらに、入力装置９１５は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、ＣＰＵ９０１に出力する入力制御回路などから構成されている。サブシステム１００のユーザは、この入力装置９１５を操作することにより、サブシステム１００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【００５０】
出力装置９１７は、例えば、ＣＲＴディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ＥＬディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなど、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置９１７は、例えば、サブシステム１００が行った各種処理により得られた結果を出力する。具体的には、表示装置は、サブシステム１００が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。
【００５１】
ストレージ装置９１９は、サブシステム１００の記憶部の一例として構成されたデータ格納用の装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置９１９は、ＣＰＵ９０１が実行するプログラムや各種データ、および外部から取得した音響信号データや画像信号データなどを格納する。
【００５２】
ドライブ９２１は、記録媒体用リーダライタであり、サブシステム１００に内蔵、あるいは外付けされる。ドライブ９２１は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体９２７に記録されている情報を読み出して、ＲＡＭ９０５に出力する。また、ドライブ９２１は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体９２７に記録を書き込むことも可能である。リムーバブル記録媒体９２７は、例えば、ＤＶＤメディア、ＨＤ−ＤＶＤメディア、Ｂｌｕ−ｒａｙメディア、コンパクトフラッシュ（登録商標）（ＣｏｍｐａｃｔＦｌａｓｈ：ＣＦ）、メモリースティック、または、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等である。また、リムーバブル記録媒体９２７は、例えば、非接触型ＩＣチップを搭載したＩＣカード（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  ｃａｒｄ）または電子機器等であってもよい。
【００５３】
接続ポート９２３は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ｉ．Ｌｉｎｋ等のＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ポート、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）ポート等の、機器をサブシステム１００に直接接続するためのポートである。この接続ポート９２３に外部接続機器９２９を接続することで、サブシステム１００は、外部接続機器９２９から直接音響信号データや画像信号データを取得したり、外部接続機器９２９に音響信号データや画像信号データを提供したりする。
【００５４】
通信装置９２５は、例えば、ネットワーク２００に接続するための通信デバイス等で構成された通信インタフェースである。通信装置９２５は、例えば、有線または無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、またはＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ、または、各種通信用のモデム等である。この通信装置９２５は、例えば、インターネットや他の通信機器との間で音響信号等を送受信することができる。また、通信装置９２５に接続されるネットワーク２００は、有線または無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信または衛星通信等であってもよい。
【００５５】
以上、本発明の各実施形態に係るサブシステム１００の機能を実現可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。
【００５６】
［１−４．仮想化技術とは］
仮想化技術とは、ソフトウェアで仮想的なハードウェアを作り、その上でＯＳやアプリケーションなどのソフトウェアを動かすことである。
【００５７】
仮想マシンとは、ＯＳやアプリケーションを物理的なコンピュータと同じように実行できる、ソフトウェアおよびデータの集合である。仮想マシンには、ＣＰＵ、メモリ、ＨＤＤや、ネットワークコントローラなどの仮想デバイスが含まれる。
【００５８】
［１−５．仮想化］
ＰＣの世界で一般的に使われる仮想化技術には、ハイパーバイザ型とアプリケーション型の２種類が存在する。図３は、２種類の仮想化技術を示す図である。図３（ａ）に示すハイパーバイザ型のサブシステム１００は、Ｈ／Ｗ（ハードウェア）１９１と、ＶＭＭ１９２と、Ｈｏｓｔ  ＯＳ１９４を含むＶＭ１９３と、Ｇｕｅｓｔ  ＯＳ１９６を含むＶＭ１９５とを備えるものである。図３（ｂ）に示すアプリケーション型のサブシステム１００は、Ｈ／Ｗ（ハードウェア）１９１と、Ｈｏｓｔ  ＯＳ１９４と、ＶＭＭ１９２と、Ｇｕｅｓｔ  ＯＳ１９６を含むＶＭ１９５とを備えるものである。
【００５９】
［１−６．仮想化のメリット］
仮想化を行うことのメリットとして、既存のソフトウェアが実行できる「互換性」が挙げられる。その他に、基盤となる物理ハードウェアとはまったく異なる仮想マシンを構成できるという「エミュレーション」、仮想マシンをファイル群として扱うことができるという「カプセル化」、他のソフトウェアのファイルと同様に仮想マシンを一つの場所から別の場所に移動できるという「可搬性」、物理的に存在する一台のマシン上で複数の仮想マシンが実行できるという「パーティショニング」、各仮想マシンがそれぞれ別々のマシンのように振る舞うことができるという「隔離」等が挙げられる。
【００６０】
［１−７．マイグレーション］
マイグレーションとは、仮想マシンの持つ上記特徴の「可搬性」を利用して、別のホストに仮想マシンを移動することである。本実施形態では、例えば、イメージファイルが第１システム１００ａと第２システム１００ｂとの間で移動することを示すものである。マイグレーションの中で、ライブマイグレーションとは、実行中の仮想マシンを（ほぼ）無停止で別のホストに移動する技術である。図４は、ＬＰＳＳ１９１ａからＨＰＳＳ１９１ｂにＶＭがマイグレーションする様子を示した模式図である。
【００６１】
［１−８．マイグレーションを活用した動的な実行環境の移動］
続いて、マイグレーションを活用して動的に実行環境を移動させる技術（ライブマイグレーション）を本実施形態に適用した技術であるＤｙｎａｍｉｃ  Ｐｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇについて説明する。仮想マシン上でＯＳを動作させ、第１システム１００ａの一例としてのＨＰＳＳと第２システム１００ｂの一例としてのＬＰＳＳとの間で、Ｄｙｎａｍｉｃ  Ｐｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇ（いわゆる、ライブマイグレーション）を行う。以下では、第１システム１００ａの一例としてＨＰＳＳ、第２システム１００ｂの一例としてＬＰＳＳを使用することとする。
【００６２】
Ｄｙｎａｍｉｃ  Ｐｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇの一例としては、例えば、システムの起動時やシステムに高い負荷がかかる高負荷時にはＨＰＳＳ、システムのＩｄｌｅ時・バッテリ駆動時にはＬＰＳＳを使用することが想定される。さらに、別の例としては、例えば、ＨＤＭＩ（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）など、ＨＰＳＳでしか使えないインタフェースがある場合、必要なときだけＨＰＳＳに切り換えることが想定される。また、ユーザが出張するときは、ＭｏｂｉｌｅＰＣで仮想マシンを動かし、ユーザが帰ってきたらＤｅｓｋｔｏｐＰＣで仮想マシンを動かすことが想定される。これを実現するための形態としては、ＤｅｓｋｔｏｐＰＣのような別ＰＣでも、Ｄｏｃｋのような形態でも可能である。
【００６３】
［１−９．情報処理システムを実現するために必要なシステム構成要素］
本実施形態に係る情報処理システム１０を実現するために必要なシステム構成要素としては、消費電力・処理能力の異なる二つ以上のサブシステムが挙げられる。例えば、サブシステムとして、低消費電力サブシステム（ＬＰＳＳ）と高パフォーマンスサブシステム（ＨＰＳＳ）とが挙げられる。その他に、サブシステム間の通信手段（例えば、通信部１１０）や、サブシステム間で共有するＨＷ（ＨａｒｄＷａｒｅ）リソースの共有手段（例えば、共有部１４０）、サブシステム間でＶＭイメージ（例えば、イメージファイル）を共有する手段、切換えイベント検知機能（例えば、監視部１６０の機能）、サブシステム電源制御機能等が挙げられる。
【００６４】
［１−９−１．消費電力・処理能力の異なる二つ以上のサブシステム］
消費電力・処理能力の異なる二つ以上のサブシステムは、それぞれ、Ｈｏｓｔ  ＯＳとＶＭＭとを実行可能である。他サブシステムがＶＭ実行中に、自サブシステムでＨｏｓｔ  ＯＳとＶＭＭを起動しＶＭ実行サブシステムからのマイグレーション受け入れが可能な構成となっている。このような構成とするためには、サブシステムに、ＣＰＵ、チップセット、メモリなどが含まれる。Ｈｏｓｔ  ＯＳとＶＭＭとを格納するＨＤＤは、構成次第で他サブシステムと共有可能とすることができる。したがって、ＨＤＤはサブシステムに属さないこととすることもできる。
【００６５】
［１−９−２．サブシステム間の通信手段］
サブシステム間の通信手段（例えば、通信部１１０）による通信方式は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークを介するものであってもよいし、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）クライアント機能のような仮想デバイスを用いるものであってもよい。サブシステム間の通信手段は、主として、ＶＭスナップショットの共有やマイグレーションの同期を取るために用いられる。また、自サブシステムの共有リソースを他サブシステムが利用する際や、他サブシステムの共有リソースを自サブシステムが利用する際に使うことも可能である。
【００６６】
［１−９−３．サブシステム間でＨＷリソースを共有する手段］
本実施形態に係る情報処理システム１０では、以下の（１）〜（４）のいずれか、または、それらの組み合わせによってＨＷリソースの共有手段を提供するＨＷ構成とソフトウェアプログラムとが必要となる。
（１）サブシステム間の通信手段を介して、一つのサブシステムが他のサブシステムに対して機能を提供する技術を使用することができる。例えば、サーバクライアントモデルによるリモートコントロール（例えば、サーバ−クライアント型のシステムによる機能の提供）によって機能を提供する技術や、ＵＳＢクライアント機能などの仮想デバイスによって機能を提供する技術等を使用することができる。
（２）各サブシステムからアクセス可能なバスもしくはデバイスにデバイスを接続する技術を使用することができる。例えば、ｉ．ＬＩＮＫや、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等による接続等が想定される。また、両サブシステムからアクセスがあった場合にアクセスを調停するための調停コントローラを使用することもできる。
（３）ＨＷリソースが接続されたサブシステムにマイグレーションする技術を使用することができる。ＬＰＳＳには存在しないＨＷリソースが接続されたＨＰＳＳにマイグレーションする場合等が想定される。
（４）スイッチを用いて、ＶＭを実行するサブシステムにＨＷリソースを接続する技術を使用することができる。
【００６７】
［１−９−４．サブシステム間でＶＭイメージを共有する手段］
本実施形態に係る情報処理システム１０では、以下の（１）〜（３）のいずれか、または、それらの組み合わせによってＶＭイメージの共有手段を提供するＨＷ構成とソフトウェアプログラムとが必要となる。
（１）一つのサブシステムが他のサブシステムに対してスナップショットを提供する技術を使用することができる。これには、ファイルサーバの使用、ＵＳＢクライアント機能（ＶＭイメージを保存するストレージを持つサブシステムが他サブシステムに対してデバイスとして振る舞う機能）の使用、ファイル転送（コピー）機能の使用等が想定される。
（２）サブシステムと中立な位置関係に共有ストレージを配置する技術を使用することができる。これには、ｉ．ＬＩＮＫ・ＳＣＳＩ・ＬＡＮ等による接続や、調停コントローラの使用等を使用することが想定される。
（３）スイッチを用いて、ストレージの接続先を切り換えて、ＶＭを実行するサブシステムがストレージを占有する技術を使用する。
【００６８】
［１−９−５．切換えイベント検知機能］
本実施形態に係るサブシステムでは、切換えイベント検知機能（例えば、監視部１６０の機能）として、ＶＭの負荷状況、使用デバイス、ソフトウェアＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）によるユーザからの選択等をモニタするソフトウェアプログラムを実行する。また、サブシステムのコンポーネントにおいて、ハードウェアＵＩ（メカニカルスイッチ等）によるユーザからの選択、電源状況変化（ＡＣ／Ｂａｔｔｅｒｙ）、システムの温度状況、（ＨＰＳＳ分離タイプの場合）ＨＰＳＳ接続状況変化等をモニタするソフトウェアプログラムを実行する。
【００６９】
［１−９−６．サブシステム電源制御機能］
本実施形態に係るサブシステムでは、ＶＭ実行中か否かなど、状況を判断してサブシステムの動作状態を切り換える仕組みや、ソフトウェアプログラム等が必要となる。また、ＶＭを実行せず、かつ、他サブシステムに対して機能を提供しないサブシステムが存在するときには、そのサブシステムの電源を切ったり、そのサブシステムを省電力モードに遷移させたりすることで、システム全体の消費電力を低減することができる。また、マイグレーションする際や、他のサブシステムへ機能を提供する際には、サブシステムを動作状態に復帰させることもできる。
【００７０】
［１−１０．状態遷移図］
図５は、ＶＭ実行側２１０とＶＭ非実行側２２０とにおける状態遷移図である。情報処理システム１０には、ＶＭ実行側のサブシステムとＶＭ非実行側のサブシステムとが存在することになる。
【００７１】
［１−１０−１．ＶＭ実行］
図５において、「ＶＭ実行Ｔ１１０」は、ＶＭを実行している状態を示している。この「ＶＭ実行Ｔ１１０」において、他サブシステムが提供する機能があれば、サブシステム間の通信機能を介して利用することができる。また、この「ＶＭ実行Ｔ１１０」において、切換えイベントを検知すると「マイグレーション待機Ｔ１３０」状態へ遷移する。
【００７２】
［１−１０−２．マイグレーション待機（ＶＭ実行側２１０）］
図５において、「マイグレーション待機Ｔ１３０（ＶＭ実行側２１０）」は、マイグレーションの準備をし、他サブシステムが「マイグレーション待機Ｔ１３０」状態に遷移するのを待っている状態である。マイグレーション先サブシステムとの通信を確立し、同期が取れたら「マイグレーション実行Ｔ１５０」状態に遷移する。マイグレーション先サブシステムとの通信が確立できないときは「ＶＭ実行Ｔ１１０」状態に遷移する。
【００７３】
［１−１０−３．マイグレーション待機（ＶＭ非実行側２２０）］
図５において、「マイグレーション待機Ｔ１４０（ＶＭ非実行側２２０）」は、必要に応じて省電力状態もしくは電源Ｏｆｆ状態から復帰する状態である。この状態では、マイグレーション受け入れ準備をし、他サブシステムが「マイグレーション待機Ｔ１３０」状態に遷移するのを待つこととなる。マイグレーション元サブシステムとの通信を確立し、同期が取れたら「マイグレーション実行Ｔ１６０」状態に遷移する。マイグレーション先サブシステムとの通信が確立できないときは「切換え待機Ｔ１２０」状態に遷移する。
【００７４】
［１−１０−４．マイグレーション実行（ＶＭ実行側２１０）］
図５において、「マイグレーション実行（Ｔ１５０）」は、ＶＭの停止や保存を行う状態である。ＶＭの停止時間を短くするため、ＶＭ非実行側２２０にＶＭデータを差分転送することとしてもよい（ライブマイグレーション）。マイグレーションが完了したら占有していたＨＷリソースをマイグレーション先に切り換える。マイグレーションに失敗したら「ＶＭ実行Ｔ１１０」状態に遷移する。
【００７５】
［１−１０−５．マイグレーション実行（ＶＭ非実行側２２０）］
図５において、「マイグレーション実行（Ｔ１６０）」は、ＶＭの読み込みや実行を行う状態である。ＶＭの停止時間を短くするため、ＶＭ実行側２１０からＶＭデータを差分受信することとしてもよい（ライブマイグレーション）。マイグレーションが完了したらマイグレーション先が占有していたＨＷリソースを受け取る。マイグレーションに失敗したら「切換え待機Ｔ１２０」状態に遷移する。
【００７６】
［１−１０−６．マイグレーションの流れ］
マイグレーションの流れとしては、例えば、「マイグレーション開始」→「仮想マシン停止（移動元）」→「仮想マシンデータ転送（移動元→移動先）」→「仮想マシン再開（移動先）」の順に処理が実行される。
【００７７】
［１−１０−７．ライブマイグレーションの流れ］
ライブマイグレーションの流れとしては、「マイグレーション開始」→「仮想マシンデータ転送（移動元→移動先）」→「差分転送（移動元→移動先）」→「差分が十分少なくなるまで差分転送を繰り返す」→「仮想マシン停止（移動元）」→「差分転送（移動元→移動先）」→「仮想マシン再開（移動先）」の順に処理が実行される。
【００７８】
［１−１０−８．切換え待機Ｔ１２０］
図５において、「切換え待機Ｔ１２０」は、切換えイベント待ちの状態である。この状態では、電源Ｏｆｆや省電力状態、もしくはＶＭ実行サブシステムに対して自サブシステムのＨＷリソースの機能を提供する。また、この状態において、切換えイベントを検知すると「マイグレーション待機Ｔ１４０」状態へ遷移する。
【００７９】
［１−１１．システム構成例（その１）］
図６は、本実施形態に係る情報処理システムのシステム構成例（その１）を示す図である。図６に示すように、ＬＰＳＳ１９１ａは、ＣＰＵ９０１ａと、Ｍｅｍ（Ｍｅｍｏｒｙ）９０４ａと、ＮＢ（Ｎｏｒｔｈ  Ｂｒｉｄｇｅ）９０８ａと、ＳＢ（Ｓｏｕｔｈ  Ｂｒｉｄｇｅ）９０９ａと、ＨＤＤ９１８ａと、ＬＡＮ９２６ａとを備えて構成されている。また、ＨＰＳＳ１９１ｂは、ＣＰＵ９０１ｂと、Ｍｅｍ９０４ｂと、ＮＢ９０８ｂと、ＳＢ９０９ｂと、ＳＳＤ９１８ｂと、ＬＡＮ９２６ｂとを備えて構成されている。ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂとをＬＡＮ９２６ａ，９２６ｂで接続する。ＬＰＳＳ１９１ａのＨＤＤ９１８ａにはＬＰＳＳ１９１ａのＨｏｓｔ  ＯＳやＶＭＭ、ＶＭイメージを格納する。ＨＰＳＳ１９１ｂのＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）９１８ｂには、ＨＰＳＳ１９１ｂのＨｏｓｔ  ＯＳとＶＭＭとを格納する。ＨＰＳＳ１９１ｂからはＬＡＮ９２６ｂを介してＨＤＤ９１８ａにアクセスする。ＬＰＳＳ１９１ａはＬＡＮ９２６ａを介してＨＰＳＳ１９１ｂと通信する。ＬＰＳＳ１９１ａがＳＭＣ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）９０６に切換えタイミングを通知する。ＳＭＣ９０６はＰｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇに同期してＫＢＤ（ＫｅｙＢｏｒＤ）９１６の接続先とＬＣＤ９１４の接続先とをバススイッチで切り換える。ＳＭＣ９０６はＨＰＳＳ１９１ｂへの電源供給を制御する。
【００８０】
［１−１２．システム構成例（その２）］
図７は、本実施形態に係る情報処理システムのシステム構成例（その２）を示す図である。図７に示すように、ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂとをＵＳＢで接続する。ＬＰＳＳ１９１ａがＵＳＢ  Ｃｌｉｅｎｔ（ＵＳＢＣ９２４）として動作する。ＬＰＳＳ１９１ａのＨＤＤ９１８ａにはＬＰＳＳ１９１ａのＨｏｓｔ  ＯＳやＶＭＭ、ＶＭイメージを格納する。ＨＰＳＳ１９１ｂのＳＳＤ９１８ｂにはＨＰＳＳ１９１ｂのＨｏｓｔ  ＯＳとＶＭＭとを格納する。ＨＰＳＳ１９１ｂからはＵＳＢを介してＨＤＤ９１８ａにアクセスする。ＬＰＳＳ１９１ａはＵＳＢを介してＨＰＳＳ１９１ｂと通信する。ＬＰＳＳ１９１ａがＳＭＣに切換えタイミングを通知する。ＳＭＣ９０６はＰｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇに同期してＫＢＤ９１６の接続先とＬＣＤ９１４の接続先とをバススイッチで切り換える。ＳＭＣ９０６はＨＰＳＳ１９１ｂへの電源供給を制御する。
【００８１】
［１−１３．ＬＰＳＳ−＞ＨＰＳＳの切換えに関して］
Ｐｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇの切換え要求イベント発生からマイグレーション開始までの時間を短くするためには、イベント発生後にできるだけ短い時間でＨＰＳＳ１９１ｂを起動する必要がある。ＬＰＳＳ１９１ａ動作時にＨＰＳＳ１９１ｂをスタンバイに入れておくと、ＨＰＳＳ１９１ｂの復帰を高速化することができる。また、ＨＰＳＳ１９１ｂの復帰に時間がかかることが許容でき、ＬＰＳＳ１９１ａ動作中の電力を少しでも減らしたい場合にはＨＰＳＳ１９１ｂの電源を切る方が省電力になる。
【００８２】
［１−１４．切換えの流れ（その１）］
図８は、ＶＭ実行側のサブシステムの切換えの流れ（その１）を示す図である。図８では、ＬＰＳＳ動作時にＨＰＳＳの電源をＯｆｆにしておく場合について示している。ＬＰＳＳは、ＨＰＳＳ切り替えイベント（３１０）の発生を検知すると、ＨＰＳＳに起動要求（３２０）を送信する。ＨＰＳＳは、起動要求（３２０）を受信すると、電源をＯｆｆからＯｎに切り替え（ステップＳ２１０）、ＢＩＯＳを起動し（ステップＳ２２０）、ＯＳを起動し（ステップＳ２３０）、ＶＭＭを起動する（ステップＳ２４０）。ＨＰＳＳは、起動が終わると、ＬＰＳＳにマイグレーション受入準備完了通知（３３０）を送信する。ＬＰＳＳは、マイグレーション受入準備完了通知（３３０）を受信すると、ＶＭを停止し（ステップＳ２５０）、ＶＭを保存して（ステップＳ２６０）、ＨＰＳＳにＶＭ保存完了通知（３４０）を送信する。ＨＰＳＳは、ＶＭ保存完了通知（３４０）を受信すると、ＬＰＳＳからマイグレーションされたＶＭを読み込み（ステップＳ２７０）、読み込んだＶＭを再開して（ステップＳ２８０）、ＬＰＳＳにマイグレーション成功通知（３５０）を送信する。ＬＰＳＳは、ＨＰＳＳから「マイグレーション成功通知（３５０）」を受信した後、「切換え待機」状態に遷移することとしてもよく、停止状態に遷移することとしてもよい。
【００８３】
［１−１５．切換えの流れ（その２）］
図９は、ＶＭ実行側のサブシステムの切換えの流れ（その２）を示す図である。図９では、ＬＰＳＳ動作時にＨＰＳＳをスタンバイにしておく場合について示している。ＨＰＳＳは、起動要求（３２０）を受信すると、電源をスタンバイ状態からＯｎに切り替え（ステップＳ３１０）、ＢＩＯＳを再開し（ステップＳ３２０）、ＯＳを再開し（ステップＳ３３０）、ＶＭＭを再開する（ステップＳ３４０）。その他については、図８に示した処理の流れと同様である。ＨＰＳＳから「マイグレーション成功通知（３５０）」を受信した後、「切換え待機」状態に遷移することとしてもよく、停止状態に遷移することとしてもよい。
【００８４】
［１−１６．ＶＭイメージ用ＨＤＤ共有例（その１）］
図１０は、ＶＭイメージ用ＨＤＤの共有例（その１）を示す図である。図１０に示すように、ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂとを、例えば、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）９３１などのローカルバスで接続する。ＨＤＤ９１８ａをＬＰＳＳ１９１ａに接続し、ＨＤＤ９１８ａにＶＭイメージ４１０を格納する。ＨＰＳＳ１９１ｂはＬＰＳＳ１９１ａを介してＨＤＤ９１８ａを使用する。ＬＰＳＳ１９１ａがＨＰＳＳ１９１ｂに対してローカルバスで接続されたデバイスとして振る舞ってもよいし、その逆でもよい。また、ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂとでローカルバスをネットワークとして使用してもよい。
【００８５】
［１−１７．ＶＭイメージ用ＨＤＤ共有例（その２）］
図１１は、ＶＭイメージ用ＨＤＤの共有例（その２）を示す図である。図１１に示すように、ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂとを、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）９２６などのネットワークで接続する。ＨＤＤ９１８ａをＬＰＳＳ１９１ａに接続し、ＨＤＤ９１８ａにＶＭイメージ４１０を格納する。ＨＰＳＳ１９１ｂからはネットワークを介してＶＭイメージ４１０にアクセスする。ＬＰＳＳ１９１ａのＨｏｓｔ  ＯＳやＶＭＭはＨＤＤ９１８ａに格納する。ＨＰＳＳ１９１ｂもＨｏｓｔ  ＯＳやＶＭＭの格納や仮想記憶などに使用するため、ある程度の容量を持ったＳＳＤ９１８ｂなどのストレージを持たせるとよい。
【００８６】
［１−１８．ＶＭイメージ用ＨＤＤ共有例（その３）］
図１２は、ＶＭイメージ用ＨＤＤの共有例（その３）を示す図である。図１２に示すように、ＬＰＳＳ１９１ａとＨＤＤ９１８ａとをｉ．ＬＩＮＫ（ＩＥＥＥ１３９４）９３３ａで接続し、ＨＰＳＳ１９１ｂとＨＤＤ９１８ａとをｉ．ＬＩＮＫ９３３ｂで接続する。ＨＤＤ９１８ａにＶＭイメージ４１０を格納する。ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂとのどちらも、ｉ．ＬＩＮＫ９３３ａ，９３３ｂのプロトコルを使用してＨＤＤ９１８ａにアクセスする。この形態によれば、ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂとのそれぞれのＨｏｓｔ  ＯＳやＶＭＭ格納用にＨＤＤ９１８ａを使用できる。ＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂと間の通信にもｉ．ＬＩＮＫ９３３ａ，９３３ｂを使用できる。ｉ．ＬＩＮＫ９３３ａ，９３３ｂの代わりに、ＳＣＳＩ、ＳＡＳ、ｉＳＣＳＩ、ＬＡＮ等を使用することもできる。
【００８７】
［１−１９．ＶＭイメージ用ＨＤＤ共有例（その４）］
図１３は、ＶＭイメージ用ＨＤＤの共有例（その４）を示す図である。図１３に示すように、ＬＰＳＳ１９１ａ／ＨＰＳＳ１９１ｂのアクセスを調停する機能を持つＨＤＤ  Ｃｏｎｔｒｏｌｌｅｒ９４１にＨＤＤ９１８ａを接続する。ＨＤＤ  Ｃｏｎｔｒｏｌｌｅｒ９４１とＨＤＤ９１８ａとの接続には、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）９３５を使用することができる。Ｐｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇ時にＬＰＳＳ１９１ａ−ＨＰＳＳ１９１ｂ間で同期を取るため、ＬＰＳＳ１９１ａ−ＨＰＳＳ１９１ｂ間における通信手段が必要となる。通信手段としての機能は、ＨＤＤ  Ｃｏｎｔｒｏｌｌｅｒ９４１にもたせてもよい。ＨＤＤ  Ｃｏｎｔｒｏｌｌｅｒ９４１とＬＰＳＳ１９１ａとはＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）９３１ａ等で接続することができ、ＨＤＤ  Ｃｏｎｔｒｏｌｌｅｒ９４１とＨＰＳＳ１９１ｂとは、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）９３１ｂ等で接続することができる。
【００８８】
［１−２０．ＶＭイメージ用ＨＤＤ共有例（その５）］
図１４は、ＶＭイメージ用ＨＤＤの共有例（その５）を示す図である。図１４に示すように、ＬＰＳＳ１９１ａ／ＨＰＳＳ１９１ｂとＨＤＤ９１８ａとをＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）９３５ａ，９３５ｂ，９３５ｃで接続する。バススイッチ（Ｓｗｉｔｈ９３７）を使ってＬＰＳＳ１９１ａとＨＰＳＳ１９１ｂのどちらにＨＤＤ９１８ａを接続するかを決定する。Ｐｌａｔｆｏｒｍ  Ｓｗｉｔｃｈｉｎｇ時にＬＰＳＳ１９１ａ−ＨＰＳＳ１９１ｂ間で同期を取るため、別途ＬＰＳＳ１９１ａ−ＨＰＳＳ１９１ｂ間における通信手段が必要となる。
【００８９】
［１−２１．命令セットが同一でない場合について］
ＬＰＳＳとＨＰＳＳとの間でＣＰＵがサポートする命令セットが同一でない場合について説明する。ＨＰＳＳとＬＰＳＳとの間でＣＰＵがサポートしている機能や命令セットが同一にできるとは限らない。しかしながら、ＣＰＵがサポートしている機能や命令セットが同一でない場合に対してもエミュレーション技術を使用して本実施形態を適用することが可能である。また、例えば、ｘ８６ＣＰＵが無効な命令を実行すると例外（割り込み）が発生する。この場合、その割り込み処理でどのような命令を実行しようとしたのかを仮想マシンモニタが確認し、命令をエミュレーションすることが可能である。
【００９０】
また、サポートする機能や命令セットの少ない方に合わせて仮想マシンを作るという方法もある。
【００９１】
また、例えば、ＬＰＳＳはｘ８６（ｘ８６  ３２ｂｉｔ）のみ、ＨＰＳＳはｘ８６に加えｘ６４（ｘ８６  ６４ｂｉｔ）もサポートし、仮想マシン上のＯＳは６４ｂｉｔ  Ｗｉｎｄｏｗｓ（登録商標）７を使うケース等も想定できる。そのようなケースでは、ＬＰＳＳがエミュレーションすべき６４ｂｉｔ命令が頻繁に実行されることとなる。そのような場合であっても、６４ｂｉｔ命令をエミュレーションせずに実行できるようＬＰＳＳのＣＰＵを選定すればＬＰＳＳで十分なパフォーマンスを得ることが可能となる。
【００９２】
［１−２２．将来的な展望］
サーバサイドでの仮想化技術では、仮想化アプライアンスと呼ばれるサービスが広がりつつある。これは、サーバ上にあるＶＭイメージを、サーバ上もしくはクライアント上で実行するものである。このような仮想化アプライアンスも、広い意味ではＬＰＳＳもしくはＨＰＳＳとしてとらえることができる。ＶＭとこのような仮想化アプライアンスサービスと間に互換性があれば、仮想化アプライアンスサービスとの間でマイグレーションが可能となる。これにより、ＶＭ実行環境を持たない時でもネットワークサービスである仮想化アプライアンスを通してＶＭを使用したり、仮想化サーバによってパフォーマンスのスケーラビリティを増したりすることが可能になると考えられる。
【００９３】
＜２．本実施形態の変形例＞
なお、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【００９４】
１０    情報処理システム
１００  サブシステム
１００ａ  第１システム
１００ｂ  第２システム
１１０（１１０ａ，１１０ｂ）  通信部
１２０（１２０ａ，１２０ｂ）  処理部
１３０（１３０ａ，１３０ｂ）  吸収部
１４０（１４０ａ，１４０ｂ）  共有部
１５０（１５０ａ，１５０ｂ）  出力部
１６０（１６０ａ，１６０ｂ）  監視部
１７０（１７０ａ，１７０ｂ）  入力部
２００  ネットワーク
【図１】
2010204962.tif 000003
【図２】
2010204962.tif 000004
【図３】
2010204962.tif 000005
【図４】
2010204962.tif 000006
【図５】
2010204962.tif 000007
【図６】
2010204962.tif 000008
【図７】
2010204962.tif 000009
【図８】
2010204962.tif 000010
【図９】
2010204962.tif 000011
【図１０】
2010204962.tif 000012
【図１１】
2010204962.tif 000013
【図１２】
2010204962.tif 000014
【図１３】
2010204962.tif 000015
【図１４】
2010204962.tif 000016