(57)【要約】【課題】レガシー環境が消費する電力を容易に削減することを目的とする。【解決手段】１つの側面では、情報処理装置３０のアイドル状態をエミュレートする仮想計算機を稼働させる情報処理装置１０である。また、情報処理装置１０は、稼働させる仮想計算機に対する処理の実行要求を受信した場合は、情報処理装置３０の電源を投入する。そして、情報処理装置１０は、電源を投入した情報処理装置３０に対して、受信した実行要求を転送する。【選択図】図１
2013242797.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置のアイドル状態をエミュレートする仮想計算機を稼働させる演算部と、
前記演算部が稼働させる仮想計算機に対する処理の実行要求を受信した場合は、前記他の情報処理装置の電源を投入する電源投入部と、
前記電源投入部が電源を投入した情報処理装置に対して、前記受信した実行要求を転送する転送部と
を有することを特徴とする情報処理装置。
【請求項２】
前記電源投入部は、前記他の情報処理装置がアイドル状態となってから所定の時間が経過した場合は、当該他の情報処理装置の電源を落とし、
前記演算部は、前記電源投入部が前記他の情報処理装置の電源を投入した場合には、当該他の情報処理装置のアイドル状態をエミュレートする仮想計算機を停止し、前記電源投入部が当該他の情報処理装置の電源を落とした場合には、当該他の情報処理装置のアイドル状態をエミュレートする仮想計算機を再度稼働させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記他の情報処理装置と、当該他の情報処理装置のアイドル状態をエミュレートする仮想計算機との対応を示す対応情報を記憶する記憶部を有し、
前記電源投入部は、前記処理の実行要求を受信した場合は、前記記憶部が記憶する対応情報から該処理の実行を要求された仮想計算機に対応する情報処理装置を識別し、当該識別した情報処理装置の電源を投入することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
他の情報処理装置が稼働させる仮想計算機のアイドル状態のみを稼働させる演算部と、
前記演算部が稼働させる仮想計算機に対する処理の実行要求を受信した場合は、当該仮想計算機を前記他の情報処理装置に移動させる移動部と、
前記受信した実行要求を前記他の情報処理装置に送信する送信部と
を有することを特徴とする情報処理装置。
【請求項５】
前記他の情報処理装置は、前記仮想計算機の状態が、所定の時間アイドル状態となった場合は、当該仮想計算機を前記情報処理装置に対して移動させる機能を有し、
前記演算部は、前記他の情報処理装置から前記仮想計算機が移動してきた場合は、当該移動してきた仮想計算機のアイドル状態のみを稼働させることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記他の情報処理装置が稼働させる仮想計算機と、当該仮想計算機のアイドル状態のみをエミュレートする簡易仮想計算機との対応を示す対応情報を記憶する記憶部を有し、
前記演算部は、前記簡易仮想計算機を稼働させ、
前記移動部は、前記処理の実行要求を受信した場合は、前記記憶部が記憶する対応情報から該処理の実行を要求された簡易仮想計算機に対応する仮想計算機を識別し、当該識別した仮想計算機を稼働させる前記他の情報処理装置に該簡易仮想計算機を移動させることを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
前記移動部は、前記簡易仮想計算機を移動させるとともに、処理を実行するために必要な機能を追加するように当該簡易仮想計算機の移動先となる前記他の情報処理装置に指示することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記他の情報処理装置は、前記仮想計算機を実行する演算装置を複数有し、該仮想計算機を実行していない演算装置に対する電力の供給を行わないことを特徴とする請求項４−７のいずれか１つに記載の情報処理装置。
【請求項９】
他のコンピュータの電源を制御する機能を有するコンピュータに、
前記他のコンピュータのアイドル状態をエミュレートする仮想計算機を稼働させ、
稼働中の前記仮想計算機に対する処理の実行要求を受信した場合は、前記他のコンピュータの電源を投入し、
前記電源を投入したコンピュータに対して、前記受信した実行要求を転送する
処理を実行させることを特徴とする情報処理プログラム。
【請求項１０】
仮想計算機を稼働させる機能を有するコンピュータに、
前記仮想計算機を実行する演算装置ごとに電力制御を行う事ができる他のコンピュータが稼働させる仮想計算機のアイドル状態のみを稼働させ、
稼働中の仮想計算機に対する処理の実行要求を受信した場合は、当該仮想計算機を前記他のコンピュータに移動させ、
前記受信した実行要求を前記他のコンピュータに送信する
処理を実行させることを特徴とする情報処理プログラム。
【請求項１１】
他の情報処理装置の電源を制御する機能を有する情報処理装置が
前記他の情報処理装置のアイドル状態をエミュレートする仮想計算機を稼働させ、
稼働中の前記仮想計算機に対する処理の実行要求を受信した場合は、前記他の情報処理装置の電源を投入し、
前記電源を投入した情報処理装置に対して、前記受信した実行要求を転送する
処理を実行することを特徴とする情報処理方法。
【請求項１２】
仮想計算機を稼働させる機能を有する情報処理装置が、
前記仮想計算機を実行する演算装置ごとに電力制御を行う事ができる他の情報処理装置が稼働させる仮想計算機のアイドル状態のみを稼働させ、
稼働中の仮想計算機に対する処理の実行要求を受信した場合は、当該仮想計算機を前記他の情報処理装置に移動させ、
前記受信した実行要求を前記他の情報処理装置に送信する
処理を実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
従来、メインフレームやオフコン等の過去のシステムにおけるレガシーＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で動作するプログラムや、過去のシステムに付随するプリンタ等のレガシーＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）が知られている。
【０００３】
このような過去のシステムに付随するプログラムや、レガシーＩＯは、レガシー環境と呼ばれ、現用系として用いられるシステムよりも使用頻度が少ない。また、レガシー環境の中には、現用系のシステムに置き換えられないため、撤去できないものが存在する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２０４９６２号公報
【特許文献２】特開２０１１−１００４３１号公報
【特許文献３】特開平１０−０１１３０３号公報
【特許文献４】特開平０６−１９５３１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した過去のシステムに付随するレガシー環境は、現用系のシステムよりも消費電力が多いという問題がある。
【０００６】
例えば、手動による電源操作や、限られた時間だけ電源を投入することで、レガシー環境の稼働時間を抑える手法では、運用コストの増加やサービスの低下を免れない。また、レガシー環境の電源操作を現用系のシステム側から行う場合は、レガシー環境側に導入するミドルウェアや、現用系のシステムからレガシー環境側を制御するためのスクリプトを作成する手間がかかる。
【０００７】
また、例えば、仮想計算機技術を用いて、レガシー環境を現用系のシステムで実現する技術が知られている。例えば、仮想計算機技術を用いて、レガシーＯＳ等レガシー環境用に開発されたソフトウェアを現行のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で動作させる技術が知られている。
【０００８】
図２７は、従来の仮想計算機を説明するための図である。図２７に示す例では、現行のシステムであるホスト５０は、ｘ８６系の物理ＣＰＵ５４、物理メモリ５５、物理ＩＯ５６を有する。また、ホスト５０は、仮想計算機５１、仮想計算機５２、および仮想計算機５１、５２を制御するハイパーバイザ５３を実行する。
【０００９】
ここで、仮想計算機５２は、ユニックスやＭＦ（Ｍａｉｎ  Ｆｒａｍｅ）等のレガシー環境用のゲストＯＳを動作させるため、ユニックスやＭＦ等のレガシー環境における命令をｘ８６系の命令に変換するエミューレータとして動作する仮想ＣＰＵを有する。そして、仮想計算機５２は、仮想ＣＰＵを用いて、レガシー環境における命令をｘ８６系の命令に変換し、レガシー環境用のゲストＯＳを実行する。
【００１０】
しかし、仮想計算機を用いて、レガシー環境を現用系のシステムで使用する技術では、レガシー環境におけるＣＰＵで動作するように作成されたプログラムを、現用系のシステムにおけるＣＰＵで動作させる。このため、仮想計算機は、レガシー環境における多くの機械命令を現用系のシステムにおける機会命令に変換して実行するので、開発が困難である。
【００１１】
１つの側面では、本発明は、レガシー環境が消費する電力を容易に削減することを目的とする。
【課題を解決するための手段】
【００１２】
１つの側面では、他の情報処理装置のアイドル状態をエミュレートする仮想計算機を稼働させる情報処理装置である。また、情報処理装置は、稼働させる仮想計算機に対する処理の実行要求を受信した場合は、他の情報処理装置の電源を投入する。そして、情報処理装置は、電源を投入した情報処理装置に対して、受信した実行要求を転送する。
【発明の効果】
【００１３】
１つの実施形態では、レガシー環境が消費する電力を容易に削減する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１に係る情報処理システムを説明するための図である。
【図２】図２は、実施例１に係るハイパーバイザを説明するための図である。
【図３】図３は、割り込み処理テーブルの一例を説明するための図である。
【図４】図４は、ステート格納領域に格納する値の意味を説明するための図である。
【図５】図５は、仮想計算機管理テーブルの一例を説明するための図である。
【図６】図６は、簡易仮想計算機管理テーブルの一例を説明するための図である。
【図７】図７は、例外状態レジスタに格納する値の意味を説明するための図である。
【図８】図８は、実施例１に係るアイドルループのプログラム例を説明するための図である。
【図９】図９は、仮想計算機の状態遷移を説明するための図である。
【図１０】図１０は、実施例１に係るスケジューラが実行する処理の流れを説明するためのフローチャートである。
【図１１】図１１は、実施例１に係る仮想計算機が実行する処理の流れを説明するためのフローチャートである。
【図１２】図１２は、実施例１に係るハイパーバイザの連係機能部が実行する処理の流れを説明するためのフローチャートである。
【図１３】図１３は、実施例１に係るレガシー環境の情報処理装置が実行する処理の流れを説明するためのフローチャートである。
【図１４】図１４は、実施例１に係る情報処理システムがプリンタ出力を行う際の処理を説明するためのシーケンス図である。
【図１５】図１５は、実施例２に係る情報処理システムを説明するための図である。
【図１６】図１６は、実施例２に係るハイパーバイザを説明するための図である。
【図１７】図１７は、実施例２に係る仮想計算機管理テーブルの一例を説明するための図である。
【図１８】図１８は、ステートレジスタに格納する値の意味を説明するための図である。
【図１９】図１９は、実施例２に係る仮想計算機が実行する処理の流れを説明するためのフローチャートである。
【図２０】図２０は、実施例２に係る仮想計算機がレガシー側に移動する際の処理の流れを説明するための第１のフローチャートである。
【図２１】図２１は、実施例２に係る仮想計算機がレガシー側に移動する際の処理の流れを説明するための第２のフローチャートである。
【図２２】図２２は、実施例２に係るレガシー側のハイパーバイザが実行する処理の流れを説明するためのフローチャートである。
【図２３】図２３は、実施例２に係るレガシー側の仮想計算機が実行する処理の流れを説明するためのフローチャートである。
【図２４】図２４は、実施例２に係る仮想計算機が現用系に移動する際の処理の流れを説明するための第１のフローチャートである。
【図２５】図２５は、実施例２に係る仮想計算機が現用系に移動する際の処理の流れを説明するための第２のフローチャートである。
【図２６】図２６は、実施例２に係る情報処理システムがプリンタ出力を行う際の処理の流れを説明するためのシーケンス図である。
【図２７】図２７は、従来の仮想計算機を説明するための図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して本願に係る情報処理装置、情報処理方法および情報処理プログラムについて説明する。
【実施例１】
【００１６】
以下の実施例１では、図１を用いて、情報処理装置を有する情報処理システムの一例を説明する。図１は、実施例１に係る情報処理システムを説明するための図である。なお、図１に例示する情報処理装置は、少なくともＣＰＵ（Central  Processing  Unit）とメモリとを有し、仮想計算機を稼働させることができる情報処理装置である。
【００１７】
図１に示すように、情報処理システム１は、情報処理装置１０、ＩＯ（Input  Output）装置２８、３４、３５、情報処理装置３０を有する。なお、情報処理装置１０は、現用系の情報処理装置であり、図示を省略した他の情報処理装置やクライアントから、情報処理装置３０に対する処理の実行要求を受信する機能を有する。また、情報処理装置１０は、ＩＯ装置２８を介して、情報処理装置３０の電源を制御する機能を有する。ここで、ＩＯ装置２８とは、例えば、情報処理装置３０のＮＩＣ（Network  Interface  Card）等の通信を行う装置である。
【００１８】
また、情報処理装置３０は、メインフレームやオフコン等の過去のシステムを動作させるレガシー環境の情報処理装置である。また、ＩＯ装置３４、３５は、例えばプリンタや記憶装置等、レガシー環境のシステムに付随するＩＯ装置である。
【００１９】
情報処理装置１０は、メモリ１１、ＣＰＵ１２を有する。また、メモリ１１は、割り込み処理テーブル１４、ステート格納領域１５、通信ＩＯバッファ１６、仮想計算機管理テーブル１７、簡易仮想計算機管理テーブル１８を記憶する。また、ＣＰＵ１２は、制御レジスタ１９を有する。また、制御レジスタ１９は、例外状態レジスタ２０、プログラムカウンタ２１を有する。また、情報処理装置３０は、ＩＯ装置２８を介して情報処理装置１０と接続されており、管理部３１、ＩＯ入出力部３２、処理部３３を有する。
【００２０】
ここで、情報処理装置１０は、仮想計算機、および仮想計算機を制御するハイパーバイザを実行する機能を有する。以下、図２を用いて、情報処理装置１０が実行する仮想計算機、およびハイパーバイザについて説明する。
【００２１】
図２は、実施例１に係るハイパーバイザを説明するための図である。なお、図２には、ＣＰＵ１２が実行するハイパーバイザと、ハイパーバイザがＩＯ装置２８を介して通信を行う情報処理装置３０について記載した。
【００２２】
例えば、ＣＰＵ１２は、仮想ＩＯ１３、ハイパーバイザ２２、仮想計算機２３、仮想ＩＯ装置２４、仮想ＩＯ装置２５を稼働させる。ここで、仮想ＩＯ１３とは、例えば、仮想計算機２３が、他の情報処理装置が実行する仮想計算機等から、処理の実行要求を受信するＮＩＣの機能を実現する仮想的な装置である。
【００２３】
また、ハイパーバイザ２２は、仮想計算機２３を制御するプログラムであり、連係機能部２６、スケジューラ２７を有する。なお、ハイパーバイザ２２は、連係機能部２６、スケジューラ２７以外にも、仮想計算機２３を制御するために必要な処理を実行することができるものとする。
【００２４】
続いて、図３〜図９を用いて、メモリ１１が記憶する割り込み処理テーブル１４、ステート格納領域１５、仮想計算機管理テーブル１７、簡易仮想計算機管理テーブル１８に格納される情報の一例について説明する。
【００２５】
図３は、割り込み処理テーブルの一例を説明するための図である。図３に示すように、割り込み処理テーブル１４には、割り込み処理が発生した際にハイパーバイザ２２や仮想計算機２３が出力する割り込み処理の識別子と、割り込み処理が発生した際に実行するプログラムが格納されたアドレスとが対応付けられている。例えば、識別子「ＩＮＴ（Interrupt）０」は、ＩＯ割り込みを実行するプログラムが格納されたアドレス「Ａ０」と対応付けられている。また、識別子「ＩＮＴ１」は、タイマー割り込みを実行するプログラムが格納されたアドレス「Ａ１」と対応付けられている。なお、図３では省略したが、割り込み処理テーブル１４には、他にも割り込み処理の識別子と、アドレスとが対応付けられているものとする。
【００２６】
図４は、ステート格納領域に格納する値の意味を説明するための図である。ステート格納領域１５は、ＣＰＵ１２の動作状態を示す値が格納される領域である。例えば、図４に示すように、ステート格納領域１５は、値「０」が格納された場合は、ＣＰＵ１２がアイドル状態であることを示す。ここで、アイドル状態とは、ＣＰＵ１２がプログラムループを発生させるプログラムを実行し、アイドルループとなった状態を言う。
【００２７】
また、ステート格納領域１５は、値「１」が格納された場合は、ＣＰＵ１２がＯＳ（Operating  System）のプログラムを実行しているＯＳ実行状態であることを示す。また、ステート格納領域１５は、値「２」が格納された場合は、ＣＰＵ１２が各種アプリケーションを実行するアプリ実行状態であることを示す。
【００２８】
なお、ＣＰＵ１２は、実行中のプログラムに応じて、ステート格納領域１５に格納されている値を変更する。例えば、ＣＰＵ１２は、割り込み処理を実行する場合は、ＣＰＵがＯＳを実行中である旨を示す「１」をステート格納領域１５に格納する。また、ＣＰＵ１２は、ＩＯ処理の終了に伴う割り込みを実行する場合は、ＩＯ処理待ちのアプリケーションを検索するとともに、アプリケーションを実行中である旨を示す「２」をステート格納領域１５に格納する。
【００２９】
図５は、仮想計算機管理テーブルの一例を説明するための図である。図５に示すように、仮想計算機管理テーブル１７は、複数のエントリを有し、各エントリに、仮想計算機名、仮想計算機の種類、対応計算機、状態を示す情報を対応付けて格納する。ここで、仮想計算機名とは、ＣＰＵ１２が実行する仮想計算機を示す識別子である。
【００３０】
また、仮想計算機の種類とは、対応付けられた識別子が示す仮想計算機が簡易型であるか通常型であるかを示す情報である。また、対応計算機とは、対応付けられた簡易型の仮想計算機がアイドル状態をエミュレートする他の情報処理装置を示す。また、状態とは、対応付けられた仮想計算機がどのような状態であるかを示す。
【００３１】
ここで、簡易型の仮想計算機とは、ＣＰＵ１２をアイドル状態とする機能のみを有する仮想計算機である。すなわち、簡易型の仮想計算機とは、情報処理装置１０、３０や、図１において図示を省略した他の情報処理装置のアイドル状態のみをエミュレートする仮想計算機である。また、通常型の仮想計算機とは、ＣＰＵ１２をアイドル状態とする機能以外の機能を有し、通常の情報処理装置と同様の機能を発揮する仮想計算機である。
【００３２】
例えば、図５に示す例では、仮想計算機管理テーブル１７は、仮想計算機「Ｖ１」が情報処理装置３０のアイドル状態のみをエミュレートする簡易型の仮想計算機であり、アイドル状態である旨を示す。また、図５に示す例では、仮想計算機管理テーブル１７は、仮想計算機「Ｖ２」が通常型の仮想計算機であり、ＩＯ待ち状態である旨を示す。また、仮想計算機管理テーブル１７は、仮想計算機「Ｖ３」が通常型の仮想計算機であり、ＣＰＵ待ち状態である旨を示す。
【００３３】
なお、簡易型の仮想計算機は、アイドル状態のみをエミュレートするため、他の状態となることはない。また、簡易型の仮想計算機は、他の情報処理装置が実行するプログラムからは、対応付けられた情報処理装置として見える。すなわち、仮想計算機「Ｖ１」は、他の情報処理装置が実行するプログラムからは、情報処理装置３０として見える。
【００３４】
図６は、簡易仮想計算機管理テーブルの一例を説明するための図である。図６に示すように、簡易仮想計算機管理テーブル１８は、複数のエントリを有し、各エントリに、仮想ＩＯ識別子、仮想ＩＯの種類、対応ＩＯ識別子を示す情報を対応付けて格納する。ここで、仮想ＩＯとは、簡易仮想計算機に付随する仮想ＩＯ装置の識別子である。また、仮想ＩＯの種類とは、仮想ＩＯ識別子が示すＩＯの種類を示す情報である。また、対応ＩＯ識別子とは、仮想ＩＯ識別子が示す仮想ＩＯ装置と対応する実装置を示す識別子である。
【００３５】
すなわち、簡易仮想計算機管理テーブル１８は、簡易仮想計算機がアイドル状態をエミュレートする情報処理装置に付随する各ＩＯ装置に対応する仮想ＩＯ装置を示す情報である。なお、メモリ１１は、ＣＰＵ１２が稼働させる簡易仮想計算機ごとに簡易仮想計算機管理テーブル１８を記憶する。図６に示す例では、図５中において識別子「Ｖ１」が示す簡易仮想計算機、すなわち仮想計算機２３の簡易仮想計算機管理テーブル１８を記載した。
【００３６】
例えば、図６に示す例では、仮想ＩＯ「ＶＩＯ１」は、仮想コンソールを示し、対応するＩＯ装置が、「ＬＩＯ１」で示されるＩＯ装置である旨を示す。なお、「ＬＩＯ１」で示されるＩＯ装置とは、情報処理装置３０に付随するＩＯ装置である。
【００３７】
図１に戻り、通信ＩＯバッファ１６とは、情報処理装置１０が他の情報処理装置から受信する処理の実行要求を格納する領域である。具体的には、情報処理装置１０は、他の情報処理装置から情報処理装置３０に対する処理の実行要求として、情報処理装置３０に付随するＩＯ装置へのアクセス要求を受信すると、受信したアクセス要求を通信ＩＯバッファ１６に格納する。
【００３８】
次に、ＣＰＵ１２が有する例外状態レジスタ２０、プログラムカウンタ２１について説明する。なお、以下の説明では、例外状態レジスタ２０、プログラムカウンタ２１、仮想計算機２３、仮想ＩＯ装置２４、仮想ＩＯ装置２５について説明し、その後、ハイパーバイザ２２が実行する処理について説明する。
【００３９】
まず、図７を用いて、例外状態レジスタ２０について説明する。図７は、例外状態レジスタに格納する値の意味を説明するための図である。例外状態レジスタ２０は、ＣＰＵ１２が実行する仮想計算機２３において、命令例外やＶＭ（Virtual  Machine：仮想計算機）例外が発生した旨を示す値が格納されるレジスタである。
【００４０】
例えば、図７に示す例では、仮想計算機２３は、命令例外が発生した場合には、例外状態レジスタ２０に「０」を格納し、実行できない処理の実行要求を受信した場合には、ＶＭ例外を示す値「ｘＦＦ」を例外状態レジスタ２０に格納する。
【００４１】
図１に戻って、プログラムカウンタ２１とは、ＣＰＵ１２が実行したプログラムのアドレスを記憶するレジスタである。例えば、ＣＰＵ１２は、プログラムカウンタ２１にアドレス「Ａ０」が格納されている場合は、アドレス「Ａ０」に格納されたプログラムを実行し、その後、プログラムカウンタ２１に格納されたアドレスを更新する。その後、ＣＰＵ１２は、新たにプログラムカウンタ２１に格納されたアドレスに格納されたプログラムを実行することで、各プログラムを順次実行する。
【００４２】
次に、ＣＰＵ１２が実行する仮想計算機２３について説明する。仮想計算機２３は、ＣＰＵ１２が稼働させる仮想計算機である。具体的には、仮想計算機２３は、仮想計算機名が「Ｖ１」で示される簡易型の仮想計算機であり、レガシー環境の情報処理装置３０のアイドル状態をエミュレートする仮想計算機である。以下、図８を用いて、仮想計算機２３として動作するプログラムの一例について説明する。
【００４３】
図８は、実施例１に係るアイドルループのプログラム例を説明するための図である。なお、図８に示す例では、仮想計算機２３として動作するプログラムのうち、情報処理装置３０のアイドル状態をエミュレートする部分のプログラムについて示した。
【００４４】
図８に示すように、仮想計算機２３は、アドレス「Ｌ０」から開始し、「ＮＯＰ（No  Operation）、ＳＴ  ＳＡ，ｘ００、ＪＵＭＰ  Ｌ０」のみからなる簡易なプログラムで情報処理装置３０のアイドル状態をエミュレートする。ここで、ＮＯＰとは、何もしないことを要求する命令である。また、ＳＴ  ＳＡ，ｘ００とは、ステート格納領域１５の値を「０」にセットする旨を要求する命令である。また、ＪＵＭＰ  Ｌ０とは、アドレス「Ｌ０」にアドレスポインタを移動させる旨を要求する命令である。このように、仮想計算機２３は、簡易なプログラムを用いて、情報処理装置３０のアイドル状態をエミュレートする仮想計算機である。
【００４５】
なお、仮想計算機２３は、上述した情報処理装置３０のアイドル状態以外にも、以下の処理を実行する機能を有する。まず、仮想計算機２３は、例外状態レジスタ２０の値を識別し、例外状態レジスタ２０の値が「ｘＦＦ」である場合、すなわち、仮想計算機２３が実行できない処理が発生し、ＶＭ例外が発生した場合には、連係機能部２６を呼び出す機能を有する。また、仮想計算機２３は、例外状態レジスタ２０の値がＩＯ例外を示す場合、すなわち、仮想計算機２３に対するＩＯ処理の実行要求を受信した場合は、例外状態レジスタ２０の値を「ｘＦＦ」に更新する。
【００４６】
なお、仮想計算機２３は、例外状態レジスタ２０がＶＭ例外、またはＩＯ例外を示していない場合は、タイマー割り込みが発生したと判別し、タイマーの値を更新する機能を有する。ここで、タイマーとは、ハイパーバイザ２２がＣＰＵ１２の資源に応じて各仮想計算機「Ｖ１」、「Ｖ２」、「Ｖ３」を切り換える際に用いるタイマーである。
【００４７】
なお、ＣＰＵ１２は、ハイパーバイザ２２による制御に従い、仮想計算機「Ｖ１」、「Ｖ２」、「Ｖ３」を切り換えながら、または、同時に実行し、仮想計算機「Ｖ２」や「Ｖ３」を実行する場合には、通常の仮想計算機を実行している際と同様の処理を実行する。
【００４８】
次に、仮想ＩＯ装置２４、２５について説明する。仮想ＩＯ装置２４、２５は、仮想計算機２３に付随する仮想ＩＯ装置であり、仮想計算機２３がアイドル状態をエミュレートする情報処理装置３０に付随するＩＯ装置を模擬的にエミュレートする仮想ＩＯ装置である。
【００４９】
すなわち、仮想ＩＯ装置２４、２５は、他の情報処理装置が実行するプログラムからは、情報処理装置３０に付随するＩＯ装置３４、３５として見える仮想ＩＯ装置である。例えば、仮想ＩＯ装置２４は、情報処理装置３０に付随するプリンタであるＩＯ装置３４を模擬的にエミュレートする仮想ＩＯ装置である。また、仮想ＩＯ装置２５は、情報処理装置３０に付随するＩＯ装置３５を模擬的にエミュレートする仮想ＩＯ装置である。
【００５０】
次に、ハイパーバイザ２２について説明する。ハイパーバイザ２２は、仮想計算機２３、仮想ＩＯ装置２４、２５を制御するプログラムである。また、ハイパーバイザ２２は、仮想計算機「Ｖ１」、すなわち仮想計算機２３と、仮想計算機「Ｖ２」、「Ｖ３」を切り換えながら、ＣＰＵ１２に稼働させる機能を有する。
【００５１】
ここで、ハイパーバイザ２２の連係機能部２６は、情報処理装置３０の電源を制御する機能を有する。具体的には、連係機能部２６は、仮想計算機２３がＶＭ例外となった場合には、情報処理装置３０に電源の投入を要求する。また、連係機能部２６は、情報処理装置３０が稼動した場合は、通信ＩＯバッファ１６から仮想計算機２３に対する処理の実行要求を取得し、ＩＯ装置２８を介して、実行要求を情報処理装置３０へ送信する。そして、連係機能部２６は、スケジューラ２７に仮想計算機２３の動作を停止するように指示する。
【００５２】
また、連係機能部２６は、情報処理装置３０の動作状態を監視し、所定の時間間隔が経過するまでの間、情報処理装置３０がアイドル状態となった場合には、情報処理装置３０の電源を落とすよう指示する。その後、連係機能部２６は、スケジューラ２７に、仮想計算機２３を稼働させるよう指示する。
【００５３】
例えば、連係機能部２６は、仮想計算機２３から呼び出されると、スケジューラ２７から仮想計算機２３がアイドル状態をエミュレートする情報処理装置が情報処理装置３０である旨の通知を受ける。すると、連係機能部２６は、情報処理装置３０の電源を投入する。そして、連係機能部２６は、通信ＩＯバッファ１６に格納された実行要求を、仮想計算機管理テーブル１７から識別した情報処理装置３０に対して送信する。なお、連係機能部２６は、情報処理装置３０の電源が投入されている場合には、通信ＩＯバッファ１６に格納されていた実行要求を即時に情報処理装置３０に送信する。
【００５４】
ここで、連係機能部２６は、ＣＰＵ１２が複数の簡易仮想計算機を実行する場合には、連係機能部２６を呼び出した簡易仮想計算機と対応付けられた情報処理装置の電源を投入し、実行要求を送信する。例えば、連係機能部２６は、簡易仮想計算機「ＶＭ４」によって呼び出された場合には、簡易仮想計算機「ＶＭ４」がアイドル状態をエミュレートする情報処理装置の電源を投入し、実行要求を送信することとなる。
【００５５】
スケジューラ２７は、各仮想計算機「Ｖ１」、「Ｖ２」、「Ｖ３」にＣＰＵ１２の資源分配を行い、分配した資源を用いてタイマーの値を設定し、タイマー割り込みを用いて、各仮想計算機「Ｖ１」、「Ｖ２」、「Ｖ３」を切り換えるプログラムである。具体的には、スケジューラ２７は、タイマーの値が予め設定した値となった場合は、タイマー割り込みにより、各仮想計算機「ＶＭ１」、「ＶＭ２」、「ＶＭ３」をＣＰＵ１２に実行させる。
【００５６】
また、スケジューラ２７は、仮想ＩＯ装置２４、仮想ＩＯ装置２５に対する処理の実行要求を受信した場合は、通信ＩＯバッファ１６にＩＯ処理の実行要求を格納するとともに、例外状態レジスタ２０の値をＩＯ例外を示す値に更新する。次に、スケジューラ２７は、簡易仮想計算機管理テーブル１８を参照し、仮想ＩＯ装置に対応する実装置であるＩＯ装置３４、３５を識別する。そして、スケジューラ２７は、識別したＩＯ装置３４、３５が付随する情報処理装置のアイドル状態をエミュレートする仮想計算機を実行する。
【００５７】
また、スケジューラ２７は、連係機能部２６から仮想計算機２３を停止するよう指示された場合には、仮想計算機２３の動作を停止させる。また、スケジューラ２７は、連係機能部２６から仮想計算機２３の動作を稼働させるよう指示された場合には、仮想計算機２３の稼働を再開する。すなわち、スケジューラ２７は、仮想計算機２３がアイドル状態をエミュレートする情報処理装置３０の電源が投入された場合は、仮想計算機２３の稼働を停止させ、情報処理装置３０の電源が落とされた場合は、仮想計算機２３の稼働を再開させる。
【００５８】
なお、スケジューラ２７は、連係機能部２６が仮想計算機２３から呼び出された場合は、仮想計算機管理テーブル１７から仮想計算機２３がアイドル状態をエミュレートする情報処理装置３０である旨を識別する。そして、スケジューラ２７は、識別した情報処理装置３０を連係機能部２６に通知する。
【００５９】
次に、情報処理装置３０が実行する処理について説明する。管理部３１は、ＩＯ装置２８を介して、連係機能部２６から電源の投入を要求された場合には、情報処理装置３０の電源を投入する。また、管理部３１は、連係機能部２６から電源を落とすよう要求された場合には、情報処理装置３０の電源を落とす。
【００６０】
なお、連係機能部２６と管理部３１が情報処理装置３０の電源の投入を行う処理については、ＬＡＮ（Local  Area  Network）を利用したＷａｋｅ  ｏｎ  ＬＡＮ機能や、情報処理装置１０のサーバ管理機能等による電源オンコマンドの投入により実現される。また、連係機能部２６と管理部３１が情報処理装置３０の電源を落とす処理については、情報処理装置３０が実行するＯＳのリモート制御機能にログインし、シャットダウンコマンドを投入することにより実現される。なお、情報処理装置３０に、ＯＳの状態等を保存して電源を落とすスリープ機能が備わっている場合は、情報処理装置１０は、電源の投入や電源を落とす処理よりも高速に電源制御を行うことができる。
【００６１】
ＩＯ入出力部３２は、ＩＯ装置２８を介してＩＯ処理の実行要求を受信すると、受信したＩＯ処理の実行要求を処理部３３に転送する。そして、ＩＯ入出力部３２は、処理部３３から応答を受信すると、受信した応答を連係機能部２６に送信する。なお、連係機能部２６は、ＩＯ入出力部３２から応答を受信すると、受信した応答に対応するＩＯ処理の実行要求を発行した情報処理装置に対して、応答を送信するものとする。また、応答とは、例えば、ＩＯ処理の実行要求がデータの読み出し要求であれば、読み出されたデータであり、ＩＯ処理の実行要求がプリントアウト要求であれば、プリントアウトが完了した旨を示す情報である。
【００６２】
処理部３３は、ＩＯ入出力部３２からＩＯ処理の実行要求を受信すると、受信した実行要求に応じて、ＩＯ装置３４、３５に対する処理を実行する。また、処理部３３は、処理を完了した場合には、応答をＩＯ入出力部３２に出力する。
【００６３】
このように、情報処理装置１０は、情報処理装置３０のアイドル状態をエミュレートする仮想計算機２３を実行する。そして、情報処理装置１０は、仮想計算機２３に対する処理の実行要求、すなわち情報処理装置３０に対する処理の実行要求を受信した場合は、情報処理装置３０の電源を投入し、処理の実行要求を情報処理装置３０に転送する。このため、情報処理システム１は、容易に情報処理装置３０が消費する電力量を削減することができる。
【００６４】
すなわち、情報処理装置３０のように、使用機会が低下したものの、特定用途のために除去できないメインフレーム等、レガシー環境の情報処理装置は、節電機能が実装されていない場合がある。また、レガシー環境の情報処理装置は、アイドル状態であっても、消費電力を処理実行時の８０％〜９０％ほど低下させる。一方、近年使用されている情報処理装置は、通常時よりも高い負荷がかかっている際であっても、レガシー環境の情報処理装置と比較して、２０分の１から３０分の１ほどの電力しか消費しない。このため、現用系となる情報処理装置に、レガシー環境の情報処理装置のアイドル状態を実行させることで、節電効果をえることができる。
【００６５】
また、仮想計算機２３は、情報処理装置３０のアイドル状態をエミュレートできればよいので、簡易なプログラムで上述した処理を実行することができる。この結果、情報処理システム１は、複雑なプログラムを作成せずともよいので、情報処理装置３０が消費する電力を容易に削減できる。
【００６６】
以下、仮想計算機２３の状態遷移について説明する。図９は、仮想計算機の状態遷移を説明するための図である。図９中（Ａ）に示すように、従来の仮想計算機は、他の情報処理装置が実行する処理を全てエミュレートするため、ＣＰＵ１２の状態を、アイドル状態、ＯＳ実行状態、アプリ実行状態のいずれかに遷移させる。このため、従来の仮想計算機は、複雑なプログラムを有していた。
【００６７】
しかし、図９中（Ｂ）に示すように、仮想計算機２３は、情報処理装置３０のアイドル状態のみをエミュレートし、他の処理を実行する場合には、ハイパーバイザにＶＭ例外を伝えればよい。この結果、仮想計算機２３は、従来の仮想計算機と比較して容易なプログラムで実現できる。このため、情報処理システム１は、情報処理装置３０が消費する電力を容易に削減できる。
【００６８】
次に、図１０を用いて、スケジューラ２７が仮想計算機２３を稼働させる処理の流れについて説明する。図１０は、実施例１に関わるスケジューラが実行する処理の流れを説明するためのフローチャートである。図１０に示す例では、スケジューラ２７は、仮想計算機２３のタイマーがタイムアウトしたか否かを判別する（ステップＳ１０１）。
【００６９】
そして、スケジューラ２７は、仮想計算機２３のタイマーがタイムアウトしていない場合は（ステップＳ１０１否定）、仮想計算機２３に対応するＩＯ処理の実行要求を受信したか否かを判別する（ステップＳ１０２）。そして、スケジューラ２７は、仮想計算機２３に対応するＩＯ処理の実行要求を受信していないと判別した場合は（ステップＳ１０２否定）、仮想計算機２３の処理を再開するか否かを判別する（ステップＳ１０３）。
【００７０】
そして、スケジューラ２７は、仮想計算機２３の処理を再開しないと判別した場合は（ステップＳ１０３否定）、処理を終了する。一方、スケジューラ２７は、仮想計算機２３のタイマーがタイムアウトした場合は（ステップＳ１０１肯定）、仮想計算機２３を実行して制御を渡し（ステップＳ１０４）、処理を終了する。
【００７１】
また、スケジューラ２７は、仮想計算機２３に対するＩＯ処理の要求を受信していると判別した場合は（ステップＳ１０２肯定）、ＩＯ割り込みである旨を示す値を例外状態レジスタ２０に格納するとともに、ＩＯ待ちの仮想計算機２３に制御を渡し（ステップＳ１０５）、処理を終了する。また、スケジューラ２７は、仮想計算機２３の処理を再開すると判別した場合は（ステップＳ１０３肯定）、ＣＰＵ待ちの仮想計算機２３を実行して制御を渡し（ステップＳ１０６）、処理を終了する。
【００７２】
次に、図１１を用いて、仮想計算機２３が実行する処理の流れについて説明する。図１１は、実施例１に係る仮想計算機が実行する処理の流れを説明するためのフローチャートである。図１１に示す例では、仮想計算機２３は、割り込み処理によって実行される（ステップＳ２０１）。
【００７３】
すると、仮想計算機２３は、例外状態レジスタ２０に格納された値から発生した割り込み処理の原因を識別し、割り込み処理テーブル１４を検索して、識別した割り込み処理に対応するプログラムが格納されたアドレスを識別する（ステップＳ２０２）。その後、仮想計算機２３は、ステップＳ２０２において識別したアドレスを開始位置とする一例のプログラムをＣＰＵ１２に実行させることで、以下の処理を実現する。
【００７４】
すなわち、仮想計算機２３は、割り込み処理の原因がＶＭ例外であるか否かを判別し（ステップＳ２０３）、ＶＭ例外ではない場合は（ステップＳ２０３否定）、割り込み処理の原因がＩＯ割り込みであるか否かを判別する（ステップＳ２０４）。また、仮想計算機２３は、割り込み処理の原因がＩＯ割り込みではない場合は（ステップＳ２０４否定）、割り込み処理の原因がタイマー割り込みであるか否かを判別する（ステップＳ２０５）。
【００７５】
そして、仮想計算機２３は、割り込み処理の原因がタイマー割り込みではない場合は（ステップＳ２０５否定）、図８に示すプログラムをＣＰＵ１２に実行させることで、アイドルループを発生させる（ステップＳ２０６）。その後、仮想計算機２３は、処理を終了する。一方、仮想計算機２３は、割り込み処理の原因がＶＭ例外である場合は（ステップＳ２０３肯定）、連係機能部２６を読み出し（ステップＳ２０７）、処理を終了する。
【００７６】
また、仮想計算機２３は、割り込みの原因がＩＯ割り込みである場合は（ステップＳ２０４肯定）、例外状態レジスタ２０に「ｘＦＦ」を格納することで、ＶＭ例外を発生させ（ステップＳ２０８）、再度ステップＳ２０１の処理を実行する。また、仮想計算機２３は、割り込み処理の原因がタイマー割り込みである場合は（ステップＳ２０５肯定）、タイマーの値を更新し（ステップＳ２０９）、その後、アイドルループを発生させる（ステップＳ２０６）。
【００７７】
次に、図１２を用いて、連係機能部２６が実行する処理の流れについて説明する。図１２は、実施例１に係る連係機能部が実行する処理の流れを説明するためのフローチャートである。図１２に示す例では、連係機能部２６は、仮想計算機２３から呼び出されると、仮想計算機２３がアイドル状態をエミュレートする情報処理装置３０の電源を投入する（ステップＳ３０１）。
【００７８】
次に、連係機能部２６は、情報処理装置３０が起動したか否かを判別し（ステップＳ３０２）、情報処理装置３０が起動していない場合は（ステップＳ３０２否定）、再度情報処理装置３０が起動したかを判別することで、情報処理装置３０の起動を待ち合わせる。そして、連係機能部２６は、情報処理装置３０が起動した場合は（ステップＳ３０２肯定）、仮想計算機２３を停止させるようスケジューラ２７に指示し（ステップＳ３０３）、実行要求を情報処理装置３０にリダイレクトする（ステップＳ３０４）。
【００７９】
その後、連係機能部２６は、情報処理装置３０が１０分以上アイドル状態となったか否かを判別し（ステップＳ３０５）、情報処理装置３０が１０分以上アイドル状態となっていない場合は（ステップＳ３０５否定）、再度ステップＳ３０５を実行する。そして、連係機能部２６は、情報処理装置３０が１０分以上アイドル状態となった場合は（ステップＳ３０５肯定）、情報処理装置３０の電源を落とし（ステップＳ３０６）、処理を終了する。
【００８０】
次に、レガシー環境の情報処理装置３０が実行する処理の流れについて説明する。図１３は、実施例１に係るレガシー環境の情報処理装置が実行する処理の流れを説明するためのフローチャートである。図１３に示す例では、情報処理装置３０は、連係機能部２６から電源の投入を要求されると、ＩＯ装置３４、３５の電源を投入する（ステップＳ４０１）。次に、情報処理装置３０は、ＩＯ装置３４、３５が起動したか否かを判別し（ステップＳ４０２）、起動していない場合は（ステップＳ４０２否定）、ステップＳ４０２の判別を行う事で、ＩＯ装置３４、３５の起動を待ち合わせる。
【００８１】
そして、情報処理装置３０は、ＩＯ装置３４、３５が起動した場合は（ステップＳ４０２肯定）、情報処理装置３０が実行するＯＳ、すなわち、レガシー環境のシステムの起動を開始する（ステップＳ４０３）。次に、情報処理装置３０は、システムの起動が完了すると（ステップＳ４０４）、ＩＯ装置２８を介して、実行要求を連係機能部２６から受信し（ステップＳ４０５）、実行要求に応じた処理、例えばプリンタからの出力等を実行する（ステップＳ４０６）。次に、情報処理装置３０は、処理待ち（アイドルループ）であるかを判別する（ステップＳ４０７）。
【００８２】
そして、情報処理装置３０は、処理待ちである場合は（ステップＳ４０７肯定）、ステップＳ４０５に戻る。また、情報処理装置３０は、処理待ちではない場合（ステップＳ４０７否定）、すなわち、連係機能部２６から電源を落とす旨を要求された場合は、ＩＯ装置３４、３５の電源を落とす（ステップＳ４０８）。
【００８３】
その後、情報処理装置３０は、自身の電源を落として（ステップＳ４０９）、処理を終了する。なお、情報処理装置３０は、ステップＳ４０５〜ステップＳ４０７までの処理を反復して実行する際に、新たな実行要求を受信しない際は、何もせず、新たな実行要求を受信するまでの間、アイドルループとなる。
【００８４】
次に、図１４を用いて、情報処理システム１が情報処理装置３０に付随するＩＯ装置３４を用いて処理を実行する例について説明する。なお、以下の説明においては、ＩＯ装置３４は、レガシー環境のメインフレームである情報処理装置３０に付随するプリンタであるものとする。
【００８５】
図１４は、実施例１に係る情報処理システムがプリンタ出力を行う際の処理を説明するためのシーケンス図である。図１４に示す例では、時間「１」において、初期状態のイベントが発生する。すると、スケジューラ２７は、各仮想計算機「Ｖ１」、「Ｖ２」、「Ｖ３」への資源分配を行う。また、仮想計算機２３は、アイドルループをエミュレートし、情報処理装置３０は、電源オフの状態である。
【００８６】
次に、時間「２」において、プリンタ（ＩＯ装置３４）に対する出力要求が発行される。すると、スケジューラ２７は、仮想計算機２３用の通信ＩＯバッファ１６に発行された出力要求の書き込みを行い、ＩＯ割り込みによる仮想計算機２３の実行を開始する。すると、仮想計算機２３は、時間「３」においてＩＯ割り込みが発生したと判別し、時間「４」において、ＶＭ例外が発生したものとして、制御をスケジューラ２７に渡す。
【００８７】
すると、時間「５」において、スケジューラ２７は、仮想計算機２３のＶＭ例外が発生したと判別し、時間「６」において、仮想計算機管理テーブル１７を参照することで、仮想計算機２３に対応する情報処理装置３０を識別する。すると、連係機能部２６は、時間「７」において、スケジューラ２７が識別した情報処理装置３０の電源を投入し、時間「８」において、情報処理装置３０の起動を監視する。
【００８８】
また、情報処理装置３０は、時間「７」において、電源が投入されると、時間「８」においてＩＯ装置３４、３５の電源を投入し、時間「９」において、システムの起動を行う。すると、時間「１０」において、連係機能部２６は、仮想計算機２３の稼働を停止させ、時間「１１」において、プリンタ（ＩＯ装置３４）への出力要求をリダイレクトする。そして、連係機能部２６は、時間「１２」において、情報処理装置３０の状態を監視する。
【００８９】
一方、情報処理装置３０は、時間「１２」において、プリンタ（ＩＯ装置３４）への出力を行い、時間「１３」において、アイドルループとなる。続いて、連係機能部２６は、時間「１４」において、情報処理装置３０のアイドル状態が１０分間継続したと判別し、時間「１５」において、情報処理装置３０の電源を落とす。続いて、連係機能部２６は、時間「１６」において、仮想計算機２３を起動させる。すると、仮想計算機２３は、アイドルループを再開する。なお、情報処理装置３０は、時間「１７」において、ＩＯ装置３４、３５の電源を落とし、時間「１８」において自身の電源を落とす。
【００９０】
［実施例１の効果］
上述したように、情報処理装置１０は、情報処理装置３０のアイドル状態をエミュレートする仮想計算機２３を稼働させる。また、情報処理装置１０は、情報処理装置３０に対する処理の実行要求を受信した場合には、情報処理装置３０の電源を投入し、その後、受信した実行要求を情報処理装置３０に転送する。
【００９１】
このため、情報処理装置１０は、情報処理装置３０の消費電力を容易に削減することができる。すなわち、仮想計算機２３は、情報処理装置３０が実行する全ての処理をエミュレートせずとも、アイドル状態をエミュレートすればよい。このため、仮想計算機２３のプログラムが容易となるため、情報処理装置１０は、情報処理装置３０の消費電力を容易に削減できる。
【００９２】
また、情報処理装置１０は、情報処理装置３０の電源を投入する際に、仮想計算機２３の稼働を停止し、情報処理装置３０がアイドル状態となってから所定の時間が経過した場合は、情報処理装置３０の電源を落とすとともに、仮想計算機２３を再度稼働させる。このため、情報処理装置１０は、情報処理装置３０が消費する電力を削減することができる。また、情報処理装置１０は、他の情報処理装置が実行するプログラムに対して、常時情報処理装置３０が動作しているように見せることができる。
【００９３】
また、情報処理装置１０は、情報処理装置３０と仮想計算機２３との対応を示す仮想計算機管理テーブル１７を記憶する。また、情報処理装置１０は、他にも、図１において図示を省略したレガシー環境の情報処理装置と、レガシー環境の情報処理装置のアイドル状態をエミュレートする仮想計算機とを対応付けた仮想計算機管理テーブル１７を記憶する。
【００９４】
そして、情報処理装置１０は、処理の実行要求を受信した場合には、実行要求に対応するレガシー環境の情報処理装置を仮想計算機管理テーブル１７から識別する。その後、情報処理装置１０は、識別したレガシー環境の情報処理装置の電源を投入して実行要求を転送する。このため、情報処理装置１０は、レガシー環境の情報処理装置が複数存在する場合にも、仮想化基盤を集約し、レガシー環境に変更を加えることなく、レガシー環境の消費電力を削減することができる。
【実施例２】
【００９５】
以下の実施例２では、仮想計算機を稼働させるレガシー環境の情報処理装置が消費する電力を削減することができる情報処理システムについて説明する。
【００９６】
まず、図１５を用いて、実施例２に係る情報処理システム１ａについて説明する。図１５は、実施例２に係る情報処理システムを説明するための図である。なお、図１５に示すもののうち、図１に示す情報処理システム１と同様の機能を発揮するものについては、同一の符号を付し、説明を省略する。
【００９７】
図１５に示す例では、情報処理システム１ａは、情報処理装置１０ａ、共有ファイル２９、情報処理装置４０、ＩＯ装置３４を有する。また、情報処理装置１０ａは、情報処理装置１０と同様に、メモリ１１、ＣＰＵ１２ａを有する。メモリ１１は、割り込み処理テーブル１４、簡易仮想計算機管理テーブル１８とともに、仮想計算機管理テーブル１ａを記憶する。また、ＣＰＵ１２ａは、制御レジスタ１９ａを有する。また、制御レジスタ１９ａは、例外状態レジスタ２０、プログラムカウンタ２１、ステートレジスタ２０ａを有する。
【００９８】
一方、情報処理装置４０は、ＣＰＵ４１、ＣＰＵ４３、ＣＰＵ４５、メモリ４２、メモリ４４、メモリ４６を有する。ここで、ＣＰＵ４１とメモリ４２、ＣＰＵ４３とメモリ４４、ＣＰＵ４５とメモリ４６は、それぞれ対応付けられたユニットである。また、ＩＯ装置３４は、ＣＰＵ４５とメモリ４６が対応付けられたユニットに含まれるＩＯ装置である。
【００９９】
ＣＰＵ４５は、仮想計算機、および仮想計算機を制御するハイパーバイザを実行する演算装置である。また、メモリ４６は、ＣＰＵ４５が演算処理を実行する際に用いる記憶装置である。また、ＩＯ装置３４は、仮想計算機４８に付随するＩＯ装置である。なお、ＣＰＵ４１、ＣＰＵ４３、メモリ４２、メモリ４４については、ＣＰＵ４５およびメモリ４６と同様の機能を発揮するものとして、以下の説明を省略する。
【０１００】
ここで、情報処理装置４０は、ユニットごとに切り離しを行い、電源を部分的に切断できる機能を有する。例えば、情報処理装置４０は、ＣＰＵ４５、メモリ４６、ＩＯ装置３４を稼働させていない場合には、ＣＰＵ４５、メモリ４６、ＩＯ装置３４の電源を切断することができる。また、情報処理装置３０は、ＣＰＵ４５が処理を実行する場合には、ＣＰＵ４５、メモリ４６、ＩＯ装置３４の電源を投入する機能を有する。
【０１０１】
次に、図１６を用いて、ＣＰＵ１２ａ、およびＣＰＵ４５が実行する仮想計算機、およびハイパーバイザについて説明する。図１６は、実施例２に係るハイパーバイザを説明するための図である。図１６に示すように、ＣＰＵ１２ａは、ハイパーバイザ２２ａ、仮想計算機２３ａ、仮想ＩＯ装置２４を稼働させ、仮想ＩＯ装置１３を介して、仮想計算機２３ａに対する処理の実行要求を受信する。またＣＰＵ４５は、ハイパーバイザ４７、仮想計算機４８を稼働させる。
【０１０２】
次に、図１７、図１８を用いて、仮想計算機管理テーブル１７ａとステートレジスタ２０ａについて説明する。図１７は、実施例２に係る仮想計算機管理テーブルの一例を説明するための図である。図１７に示すように、仮想計算機管理テーブル１７ａは、図５に示す仮想計算機管理テーブル１７と同様の情報が格納されている。ここで、仮想計算機管理テーブル１７ａは、各仮想計算機の対応計算機として、情報処理装置４０が実行する仮想計算機を示す情報を記憶する。
【０１０３】
例えば、図１７に示す例では、仮想計算機管理テーブル１７ａには、仮想計算機名「Ｖ１」の仮想計算機、すなわち、仮想計算機２３ａの対応計算機が仮想計算機４８である旨を示す。ここで、仮想計算機２３ａは、仮想計算機２３と同様に簡易型の仮想計算機である。このため、仮想計算機管理テーブル１７ａは、仮想計算機２３ａが、仮想計算機４８のアイドル状態をエミュレートする仮想計算機である旨を示す。
【０１０４】
図１８は、ステートレジスタ２０ａに格納する値に意味を説明するための図である。ステートレジスタ２０ａとは、ＣＰＵ１２ａの動作状態を示す値を格納されるレジスタである。例えば、図１８に示すように、ステートレジスタ２０ａは、値「０」が格納された場合は、ＣＰＵ１２ａがアイドル状態であることを示す。
【０１０５】
また、ステートレジスタ２０ａは、値「１」が格納された場合は、ＣＰＵ１２がＯＳのプログラムを実行しているＯＳ実行状態であることを示す。また、ステートレジスタ２０ａは、値「２」が格納された場合は、ＣＰＵ１２が各種アプリケーションを実行するアプリ実行状態であることを示す。
【０１０６】
なお、ＣＰＵ１２ａは、実行中のプログラムに応じて、ステートレジスタ２０ａに格納されている値を変更する。例えば、ＣＰＵ１２ａは、割り込み処理を実行する場合は、「１」をステートレジスタ２０ａに格納し、ＩＯ処理の終了に伴う割り込みを実行する場合は、アプリケーションを実行中である旨を示す「２」をステートレジスタ２０ａに格納する。
【０１０７】
次に、仮想計算機２３ａと仮想計算機４８について説明する。仮想計算機４８は、ＩＯ装置３４に対する処理を実行する機能とともに、ＣＰＵ４５の状態をアイドルステートと呼ばれる状態に遷移させるステート遷移型のアイドル状態とする機能を有する仮想計算機である。すなわち、仮想計算機４８は、ＣＰＵ４５の状態をアイドルステートに遷移させることで、アイドル状態を実現する。
【０１０８】
一方、仮想計算機２３ａは、仮想計算機４８が有する機能のうち、ＣＰＵ４５と同様にＣＰＵ１２ａの状態をステート依存型のアイドル状態に遷移させる機能のみを有する。具体的には、仮想計算機２３ａは、ステートレジスタ２０ａに「０」を格納し、ＣＰＵ１２ａの状態をアイドルステートに遷移させる機能のみを有する。そして、仮想計算機２３ａは、仮想計算機４８のアイドル状態をエミュレートする場合には、ステートレジスタ２０ａに「０」を格納することで、ＣＰＵ１２ａの状態をアイドルステートに遷移させる。
【０１０９】
なお、仮想計算機２３ａや、図示を省略したＣＰＵ１２ａが実行する他の仮想計算機は、ＩＯ割り込みやタイマ割り込みが発生した場合は、ＣＰＵ１２ａの状態をアイドルステート状態から他の状態に遷移させる。例えば、仮想計算機２３ａは、ＩＯ割り込みが発生すると、ＣＰＵ１２ａにメモリ１１上の割り込みテーブル１４からＩＯ割り込みに応じたアドレス（Ａ０）のプログラムを読み込ませ、読み込んだプログラムを実行させる。
【０１１０】
また、仮想計算機２３ａは、ステートレジスタ２０ａに値「１」をセットする。また、仮想計算機２３ａは、ＩＯ処理の終了に伴う割り込みである場合は、ステートレジスタ２０ａに値「２」をセットし、ＣＰＵ１２ａにＩＯ処理待ちであったアプリケーションを再開させる。
【０１１１】
また、仮想計算機２３ａは、仮想計算機２３と同様に、処理の実行要求を受信した場合には、例外状態レジスタ２０に「ｘＦＦ」を格納する。そして、仮想計算機２３ａは、ハイパーバイザ２２ａの呼び出しを行う。このような場合には、ハイパーバイザ２２ａは、仮想計算機２３ａがＶＭ例外となったと判別し、仮想計算機２３ａをＣＰＵ４５に移動させる処理、すなわちマイグレーションを実行する。
【０１１２】
図１６に戻って、ハイパーバイザ２２ａとハイパーバイザ４７は、仮想計算機２３ａや仮想計算機４８のハードウェア情報をファイル群として扱うカプセル化により、仮想計算機を移動させるマイグレーション機能を有する。例えば、ハイパーバイザ２２ａは、情報処理装置４０へ仮想計算機２３ａを移動させる場合には、共有ファイル２９にカプセル化した仮想計算機２３ａのデータを格納し、ハイパーバイザ４７に読み出させることで、仮想計算機２３ａを移動させる。
【０１１３】
ここで、ハイパーバイザ２２ａは、仮想計算機２３ａを仮想計算機４８として動作させる際に必要な機能、すなわち、仮想計算機２３ａが受信した処理の実行要求を実現するために必要な機能をハイパーバイザ４７に通知する。すると、ハイパーバイザ４７は、共有ファイル２９から仮想計算機２３ａのファイルを読み出す際に、通知された機能を実現するためのファイルを動的に読み出し、読み出したファイルを実行することで、仮想計算機２３ａを仮想計算機４８として動作させる。
【０１１４】
また、ハイパーバイザ２２ａは、共有ファイル２９から仮想計算機４８のデータを読み出す場合には、仮想計算機４８が有する各機能のうち、仮想計算機を実行するＣＰＵの状態をアイドルステートに遷移させる機能のみを読み出して実行する。すなわち、ＣＰＵ１２ａは、ある仮想計算機をＣＰＵ１２ａが稼働させる場合には、仮想計算機２３ａとして稼働させ、ＣＰＵ４８は、同一の仮想計算機を仮想計算機４８として稼働させる。
【０１１５】
また、ハイパーバイザ２２ａは、ハイパーバイザ２２と同様の機能を有する。ここで、ハイパーバイザ２２ａは、仮想計算機２３ａがＶＭ例外となった場合には、仮想計算機２３ａのデータをカプセル化する。そして、ハイパーバイザ２２ａは、仮想計算機２３ａに対する処理の実行要求を受信していた場合には、受信した実行要求を共にカプセル化し、共有ファイル２９に格納する。つまり、ハイパーバイザ２２ａは、仮想計算機２３ａのメモリ領域に実行要求を格納し、仮想計算機２３ａのメモリ領域ごとにマイグレーションを行う。
【０１１６】
そして、ハイパーバイザ２２ａは、仮想計算機管理テーブル１７ａを参照し、仮想計算機２３ａと対応付けられた仮想計算機が仮想計算機４８である旨を識別する。そして、ハイパーバイザ２２ａは、仮想計算機４８を実行するＣＰＵ４５にハイパーバイザ４７の実行を要求する。すると、情報処理装置４０は、ＣＰＵ４５に電力を供給し、ハイパーバイザ４７の実行を開始する。
【０１１７】
次に、ハイパーバイザ２２ａは、ＣＰＵ４５がハイパーバイザ４７の実行を開始した場合は、仮想計算機４８の移動をハイパーバイザ４７に通知する。すると、ハイパーバイザ４７は、共有ファイル２９から仮想計算機２３ａのデータとともに、仮想計算機４８が有する機能を実現するためのデータを動的に読み出しする。そして、ハイパーバイザ４７は、仮想計算機２３ａを仮想計算機４８として稼働させる。
【０１１８】
一方、ハイパーバイザ２２ａは、ハイパーバイザ４７を介してＣＰＵ４５の状態を監視し、ＣＰＵ４５の状態がアイドルステート状態に遷移してから所定の時間が経過した場合には、ハイパーバイザ４７に仮想計算機４８の移動を要求する。すると、ハイパーバイザ４７は、カプセル化した仮想計算機４８のデータを共有ファイル２９に格納する。その後、ハイパーバイザ２２ａは、共有ファイル２９から仮想計算機４８が有する機能のうち、ＣＰＵの状態をアイドルステート状態に遷移させる機能のみを稼働させることで、仮想計算機４８を仮想計算機２３ａとして動作させる。
【０１１９】
なお、ハイパーバイザ４７は、仮想計算機２３ａを仮想計算機４８として、または、仮想計算機４８を仮想計算機２３ａとして移動させる機能のほかにも、ＣＰＵ４５が実行する仮想計算機を制御する機能、すなわち、通常のハイパーバイザが有する機能を備える。また、仮想計算機４８は、ＩＯ装置３４に対して各種処理を実行する機能以外にも、従来の仮想計算機が有する任意の機能を発揮することができるものとする。
【０１２０】
次に、図１９を用いて、仮想計算機２３ａが実行する処理の流れについて説明する。図１９は、実施例２に係る仮想計算機が実行する処理の流れを説明するためのフローチャートである。なお、図１９に示す各処理のうち、ステップＳ５０１〜Ｓ５０５、Ｓ５０８、Ｓ５０９については、図１２に示すステップＳ２０１〜Ｓ２０５、Ｓ２０８、Ｓ２０９と同様の処理を実行するものとして、説明を省略する。
【０１２１】
例えば、図１９に示す例では、仮想計算機２３ａは、割り込みの原因がタイマー割り込みではない場合（ステップＳ５０５否定）、または、タイマーを更新した場合は（ステップＳ５０９）、以下の処理を実行する。すなわち、仮想計算機２３ａは、ステートレジスタ２０ａに「０」を格納し、ＣＰＵ１２ａの状態をアイドルステートに遷移させることで、アイドルループを実現する（ステップＳ５０６）。また、仮想計算機２３ａは、ＶＭ例外が発生した場合は、割り込み処理の原因がＶＭ例外である場合は（ステップＳ５０３肯定）、例外状態レジスタ２０に「ｘＦＦ」を格納し、ハイパーバイザ２２ａの呼び出しを行い（ステップＳ５０７）、処理を終了する。
【０１２２】
次に、図２０を用いて、ハイパーバイザ２２ａがレガシー側の情報処理装置４０に仮想計算機２３ａを移動させる際の処理の流れについて説明する。図２０は、実施例２に係る仮想計算機がレガシー側に移動する際の処理の流れを説明するための第１のフローチャートである。例えば、ハイパーバイザ２２ａは、仮想計算機４８の実行に必要な資源情報を情報処理装置４０のハイパーバイザ４７に送信する（ステップＳ６０１）。すなわち、ハイパーバイザ２２ａは、処理を実行するために必要な機能をハイパーバイザ４７に通知する。
【０１２３】
次に、ハイパーバイザ２２ａは、仮想計算機４８への処理の実行要求を受信したか、すなわち、仮想計算機２３ａに対する処理の実行要求を受信したか否かを判別する（ステップＳ６０２）。そして、ハイパーバイザ２２ａは、仮想計算機４８への実行要求を受信した場合は（ステップＳ６０２肯定）、受信した実行要求をバッファリングする（ステップＳ６０３）。次に、ハイパーバイザ２２ａは、仮想計算機４８を実行することができるか否かを判別する（ステップＳ６０４）。
【０１２４】
そして、ハイパーバイザ２２ａは、仮想計算機４８を実行することができないと判別した場合は（ステップＳ６０４否定）、仮想計算機２３ａが使用するメモリ内容をハイパーバイザ４７に送信する（ステップＳ６０５）。すなわち、ハイパーバイザ２２ａは、マイグレーションを開始する。次に、ハイパーバイザ２２ａは、仮想計算機２３ａの稼働を停止させ（ステップＳ６０６）、仮想計算機２３ａのＣＰＵ状態をハイパーバイザ４７に送信する（ステップＳ６０７）。
【０１２５】
その後、ハイパーバイザ２２ａは、バッファリングした実行要求をハイパーバイザ４７に送信し（ステップＳ６０８）、処理を終了する。一方、ハイパーバイザ２２ａは、仮想計算機４８への実行要求を受信していない場合は（ステップＳ６０２否定）、ステップＳ６０４の処理を実行する。また、ハイパーバイザ２２ａは、仮想計算機４８を実行できると判別した場合は（ステップＳ６０４肯定）、ステップＳ６０２の処理を実行する。
【０１２６】
次に、図２１を用いて、ハイパーバイザ４７が移動してきた仮想計算機２３ａを仮想計算機４８として稼働させる際の処理の流れについて説明する。図２１は、実施例２に係る仮想計算機がレガシー側に移動する際の処理の流れを説明するための第２のフローチャートである。まず、ハイパーバイザ４７は、図２０中のステップＳ６０１にて送信された仮想計算機４８の実行に必要な資源情報を受信する（ステップＳ７０１）。
【０１２７】
次に、ハイパーバイザ４７は、受信した資源情報と比較して、ＣＰＵ４５やメモリ４６等の資源が足りているか否かを判別する（ステップＳ７０２）。そして、ハイパーバイザ４７は、資源が足りていないと判別した場合は（ステップＳ７０２否定）、他のＣＰＵ４３やメモリ４４等の組み込みを行う（ステップＳ７０３）。次に、ハイパーバイザ４７は、ＩＯ装置３４の起動と組み込みを行う（ステップＳ７０４）。
【０１２８】
続いて、ハイパーバイザ４７は、仮想計算機４８の資源準備完了をハイパーバイザ２２ａに通知する（ステップＳ７０５）。すると、ハイパーバイザ２２ａは、マイグレーションを開始し、仮想計算機２３ａのメモリ内容を送信する（図２０中ステップＳ６０５）。このため、ハイパーバイザ４７は、仮想計算機２３ａのメモリ内容を受信し（ステップＳ７０６）、続いて、仮想計算機２３ａのＣＰＵ状態を受信する（ステップＳ７０７）。
【０１２９】
その後、ハイパーバイザ４７は、仮想計算機２３ａを仮想計算機４８として実行し（ステップＳ７０８）、図２０中ステップＳ６０８にてハイパーバイザ２２ａが送信した実行要求を受信し（ステップＳ７０９）、処理を終了する。一方、ハイパーバイザ４７は、資源が足りていると判別した場合は（ステップＳ７０２肯定）、ステップＳ７０３、およびステップＳ７０４の処理をスキップし、ステップＳ７０５を実行する。
【０１３０】
次に、図２２を用いて、ハイパーバイザ４７が実行する処理の流れについて説明する。図２２は、実施例２に係るレガシー側のハイパーバイザが実行する処理の流れを説明するためのフローチャートである。なお、図２２中ステップＳ８０１〜Ｓ８０３、ステップＳ８０５〜Ｓ８０７については、図１０中のステップＳ１０１〜Ｓ１０３、ステップＳ１０４〜１０６と同様の処理を実行するものとして、説明を省略する。
【０１３１】
例えば、ハイパーバイザ４７は仮想計算機４８の処理を再開しないと判別した場合は（ステップＳ８０３否定）、アイドル状態が１０分継続した仮想計算機が存在するか否かを判別する（ステップＳ８０４）。そして、ハイパーバイザ４７は、アイドル状態が１０分継続した仮想計算機が存在しない場合は（ステップＳ８０４否定）、処理を終了する。
【０１３２】
一方、ハイパーバイザ４７は、アイドル状態が１０分継続した仮想計算機が存在する場合は（ステップＳ８０４肯定）、以下の処理を実行する。すなわち、ハイパーバイザ４７は、アイドル状態が１０分継続した仮想計算機を簡易仮想計算機として情報処理装置１０ａにマイグレーションする（ステップＳ８０８）。
【０１３３】
次に、図２３を用いて、仮想計算機４８が実行する処理の流れについて説明する。図２３は、実施例２に係るレガシー側の仮想計算機が実行する処理の流れを説明するためのフローチャートである。なお、以下の説明においては、メモリ４６にメモリ１１が記憶する割り込み処理テーブル１４と同様の割り込み処理テーブルが記憶されているものとする。
【０１３４】
例えば、仮想計算機４８は、割り込み処理によって実行される（ステップＳ９０１）。すると、仮想計算機４８は、割り込み処理テーブルを検索して、識別した割り込み処理に対応するプログラムが格納されたアドレスを識別する（ステップＳ９０２）。その後、仮想計算機４８は、ステップＳ９０２において識別したアドレスを開始位置とする一例のプログラムをＣＰＵ４５に実行させることで、以下の処理を実現する。
【０１３５】
すなわち、仮想計算機４８は、割り込み処理の原因がＩＯ割り込みであるか否かを判別する（ステップＳ９０３）。また、仮想計算機４８は、割り込み処理の原因がＩＯ割り込みではない場合は（ステップＳ９０３否定）、割り込み処理の原因がタイマー割り込みであるか否かを判別する（ステップＳ９０４）。
【０１３６】
そして、仮想計算機４８は、割り込み処理の原因がタイマー割り込みではない場合は（ステップＳ９０４否定）、ＣＰＵ４５の状態をアイドルステートに遷移させ、アイドル状態とし（ステップＳ９０５）処理を終了する。一方、仮想計算機４８は、割り込みの原因がＩＯ割り込みである場合は（ステップＳ９０３肯定）、ＶＭ例外を発生させ（ステップＳ９０６）、ステップＳ９０１を実行する。
【０１３７】
また、仮想計算機４８は、割り込み処理の原因がタイマー割り込みである場合は（ステップＳ９０４肯定）、タイマーの値を更新し（ステップＳ９０７）、その後、ＣＰＵの状態をアイドルステートに遷移させる（ステップＳ９０５）。
【０１３８】
次に、図２４を用いて、仮想計算機４８を情報処理装置４０から情報処理装置１０ａに移動させる際に、ハイパーバイザ４７が実行する処理の流れについて説明する。図２４は、実施例２に係る仮想計算機が現用系に移動する際の処理の流れを説明するための第１のフローチャートである。なお、図２４中のステップＳ１００１、Ｓ１００２、Ｓ１００３〜Ｓ１００６については、図２０中のステップＳ６０１、Ｓ６０２、Ｓ６０４〜Ｓ６０７においてハイパーバイザ２２ａが実行した処理と同様の処理をハイパーバイザ４７が実行するものとして、説明を省略する。
【０１３９】
例えば、ハイパーバイザ４７は、仮想計算機４８への実行要求を受信していると判別した場合は（ステップＳ１００２肯定）、仮想計算機４８の移動、すなわちマイグレーションをキャンセルし（ステップＳ１００７）、処理を終了する。一方、ハイパーバイザ４７は、仮想計算機４８への実行要求を受信していない場合は（ステップＳ１００２否定）、仮想計算機４８を実行可能であるか否かを判別する（ステップＳ１００３）。また、ハイパーバイザ４７は、仮想計算機４８のＣＰＵ状態をハイパーバイザ２２ａに送信し（ステップＳ１００６）、その後、実行要求の送信等を行わずに処理を終了する。
【０１４０】
次に、図２３を用いて、仮想計算機４８を情報処理装置４０から情報処理装置１０ａに移動させる際に、ハイパーバイザ２２ａが実行する処理の流れについて説明する。図２５は、実施例２に係る仮想計算機が現用系に移動する際の処理の流れを説明するための第２のフローチャートである。なお、図２５に示す処理のうち、ステップＳ１１０１〜Ｓ１１１１０３、Ｓ１１０５〜Ｓ１１０８については、図２１に示すステップＳ７０１〜Ｓ７０３、Ｓ７０５〜Ｓ７０８と同様の処理をハイパーバイザ２２ａが実行するものとして、説明を省略する。
【０１４１】
例えば、ハイパーバイザ２２ａは、ＣＰＵ１２ａおよびメモリ１１の組み込みを行った場合は（ステップＳ１１０３）、仮想ＩＯ装置２４の起動と組み込みを行い（ステップＳ１１０４）、その後、マイグレーションを開始する（ステップＳ１１０５〜Ｓ１１０７）。また、ハイパーバイザ２２ａは、仮想計算機２３ａを実行すると（ステップＳ１１０８）、実行要求の受信を行わずに、そのまま処理を終了する。
【０１４２】
次に、図２６を用いて、情報処理システム１ａが情報処理装置４０に付随するＩＯ装置３４を用いて処理を実行する例について説明する。図２６は、実施例１に係る情報処理システムがプリンタ出力を行う際の処理の流れを説明するためのシーケンス図である。図２６に示す例では、時間「１」において、初期状態のイベントが発生する。すると、ハイパーバイザ２２ａは、各仮想計算機「Ｖ１」、「Ｖ２」、「Ｖ３」への資源分配を行う。
【０１４３】
また、ハイパーバイザ４７は、仮想計算機４８以外の実行を制御している。また、情報処理装置１０ａにおいては、仮想計算機２３ａが仮想計算機４８のアイドル状態をエミュレートしている。また、情報処理装置４０においては、仮想計算機４８用のＣＰＵ、メモリ、ＩＯが切り離し状態であり、電源が投入されていない。
【０１４４】
次に、時間「２」において、プリンタ（ＩＯ装置３４）に対する出力要求が発行される。すると、ハイパーバイザ２２ａは、仮想計算機２３ａ用のＩＯバッファに発行された出力要求の書き込みを行い、ＩＯ割り込みによる仮想計算機２３ａの実行を開始する。すると、仮想計算機２３ａは、時間「３」においてＩＯ割り込みが発生したと判別し、時間「４」において、ＶＭ例外が発生したものとして、制御をハイパーバイザ２２ａに渡す。
【０１４５】
すると、時間「５」において、スケジューラ２７は、仮想計算機２３ａのＶＭ例外が発生したと判別し、時間「６」において、仮想計算機管理テーブル１７ａを参照することで、仮想計算機２３ａに対応する仮想計算機４８を識別する。すると、ハイパーバイザ２２ａは、時間「７」において、マイグレーションを開始し、情報処理装置４０に、仮想計算機４８の実行に必要な資源情報を送信する。また、ハイパーバイザ４７は、資源情報の受信を行う。
【０１４６】
また、ハイパーバイザ４７は、時間「８」において、仮想計算機４８の実行に必要な資源の組み込みを行う。このため、情報処理装置４０は、時間「９」において、仮想計算機４８用のＣＰＵ、メモリ、ＩＯの組み込みを行う。続いて、ハイパーバイザ４７は、時間「１０」において、仮想計算機４８の準備完了通知をハイパーバイザ２２ａに送信する。
【０１４７】
このため、ハイパーバイザ２２ａは、時間「１１」において、仮想計算機２３ａのメモリ情報を送信し、ハイパーバイザ４７は、仮想計算機４８のメモリ情報を受信する。この際、仮想計算機２３ａが受信した処理の実行要求をともに受信することとなる。続いて、ハイパーバイザ２２ａは、時間「１２」において、仮想計算機２３ａを停止させ、時間「１３」において、仮想計算機２３ａのＣＰＵ情報をハイパーバイザ４７に送信する。
【０１４８】
すると、ハイパーバイザ４７は、仮想計算機４８のＣＰＵ情報を受信し、時間「１４」において、仮想計算機４８を稼働させる。次に、情報処理装置４０は、時間「１５」において、ＩＯ割り込みの処理を行い、プリンタ（ＩＯ装置３４）の出力を行い、時間「１６」において、アイドル状態に遷移する。ここで、ハイパーバイザ４７は、仮想計算機４８の状態を監視しており、アイドル状態が１０分継続したと判別する。このため、ハイパーバイザ４７は、時間「１８」において、仮想計算機４８のメモリ情報をハイパーバイザ２２ａに送信する。すると、ハイパーバイザ２２ａは、仮想計算機４８のメモリ情報を仮想計算機２３ａのメモリ情報として受信する。
【０１４９】
続いて、ハイパーバイザ４７は、時間「１９」において、仮想計算機４８の稼働を停止させ、時間「２０」において、仮想計算機管理テーブルを参照する。そして、ハイパーバイザ４７は、時間「２１」において、仮想計算機４８の実行に必要な資源情報をハイパーバイザ２２ａに送信する。一方、ハイパーバイザ２２ａは、仮想計算機２３ａの実行に必要な資源情報を受信すると、時間「２２」において、仮想計算機２３ａの実行に必要な資源の組み込みを行う。次に、ハイパーバイザ２２ａは、仮想計算機２３ａの準備完了通知をハイパーバイザ４７に送信する。すると、ハイパーバイザ４７は、時間「２４」において、仮想計算機４８のメモリ情報をハイパーバイザ２２ａに送信する。
【０１５０】
すると、ハイパーバイザ２２ａは、時間「２４」において、仮想計算機２３ａのメモリ情報を受信する。続いて、ハイパーバイザ４７は、時間「２５」において、仮想計算機４８の稼働を停止させ、時間「２６」において、仮想計算機４８のＣＰＵ情報をハイパーバイザ２２ａに送信する。
【０１５１】
すると、ハイパーバイザ２２ａは、仮想計算機２３ａのＣＰＵ情報を受信し、時間「２７」において仮想計算機２３ａの稼働を実行する。この結果、時間「２８」において、仮想計算機２３ａは、仮想計算機４８のアイドル情報をエミュレートすることとなる。なお、情報処理装置４０は、時間「２６」において、マイグレーションが終了するため、仮想計算機４８が使用した資源の切り離しを行い、電源の供給を停止する。
【０１５２】
［実施例２の効果］
上述したように、情報処理装置１０ａは、レガシー環境の情報処理装置４０が稼働させる仮想計算機４８のアイドル状態のみを仮想計算機２３ａとして稼働させる。そして、情報処理装置１０ａは、仮想計算機２３ａに対する処理の実行要求、すなわち、仮想計算機４８に対する処理の実行要求を受信した場合は、仮想計算機２３ａを情報処理装置４０に移動させるマイグレーションを実行する。この際、情報処理装置４０は、マイグレーション対象の仮想計算機２３ａを仮想計算機４８として稼働させる。その後、情報処理装置１０ａは、仮想計算機２３ａに対する処理の実行要求を情報処理装置４０に送信する。
【０１５３】
このため、情報処理装置１０ａは、レガシー環境に対する処理の実行要求が発生した場合に、仮想計算機４８を稼働させる資源のみに電源を投入させるので、レガシー環境が消費する電力を削減することができる。
【０１５４】
また、情報処理装置４０は、仮想計算機４８の状態が所定の時間アイドル状態となった場合は、仮想計算機４８を情報処理装置１０ａに移動させる機能を有する。そして、情報処理装置１０ａは、仮想計算機４８が移動してきた場合は、仮想計算機４８のアイドル状態のみを仮想計算機２３ａとして稼働させる。このため、情報処理装置１０ａは、複雑な仮想計算機を作成せずとも、情報処理装置４０が消費する電力を削減できる。この結果、情報処理装置１０ａは、容易にレガシー環境が消費する電力を削減できる。
【０１５５】
また、情報処理装置１０ａは、他の情報処理装置が稼働させる仮想計算機と、各仮想計算機のアイドル状態をエミュレートする簡易仮想計算機との対応を示す対応情報を仮想計算機管理テーブル１７ａとして記憶する。そして、情報処理装置１０ａは、自身が稼働させる簡易仮想計算機が処理の実行要求を受信すると、簡易仮想計算機と対応する仮想計算機を稼働させる情報処理装置へ、簡易仮想計算機を移動させる。
【０１５６】
このため、情報処理装置１０ａは、複数の情報処理装置が稼動させる仮想計算機に対応する簡易仮想計算機を稼働させている場合にも、適切に仮想計算機のマイグレーションを行うことができる。この結果、情報処理装置１０ａは、仮想化基盤を集約し、レガシー環境に変更を加えることなく、レガシー環境の消費電力を削減できる。
【０１５７】
また、情報処理装置１０ａは、仮想計算機を移動させる際に、処理を実行するための必要な機能を追加するように移動先の情報処理装置に指示する。このため、情報処理装置１０ａは、仮想計算機の移動後に処理が実行できないという事態を防ぐことができる。
【０１５８】
なお、情報処理装置４０は、仮想計算機を実行する演算装置を複数有し、仮想計算機を実行していない演算装置の切り離しを行い、電力の供給を停止する機能を有する。このため、情報処理装置１０ａは、複数の仮想計算機に対応する簡易仮想計算機を実行する際に、レガシー環境の情報処理装置が消費する電力を削減することができる。
【実施例３】
【０１５９】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【０１６０】
（１）レガシー環境の情報処理装置について
図１では、１つのレガシー環境の情報処理装置３０について記載した。しかし、実施例は、これに限定されるものではない。例えば、情報処理装置１０は、情報処理装置３０と同様の機能を有する複数の情報処理装置３０ａ〜３０ｄが存在する場合にも、各情報処理装置３０ａ〜３０ｄのアイドル状態をエミュレートする仮想計算機２３ｂ〜２３ｅを実行する。そして、情報処理装置１０は、仮想計算機２３ｂ〜２３ｅが処理の実行要求を受信した場合は、処理の実行要求を受信した仮想計算機がアイドル状態をエミュレートする情報処理装置の電源を投入し、処理の実行要求を送信することとしてもよい。
【０１６１】
（２）実施形態について
上述した情報処理装置１０および情報処理装置１０ａの機能は、矛盾しない範囲で組み合わせて実施することができる。例えば、情報処理装置１０ａは、情報処理装置１０と同様の機能を有し、情報処理装置３０のアイドル状態をエミュレートする仮想計算機２３と、仮想計算機４８のアイドル状態をエミュレートする仮想計算機２３ａとを実行する。そして、情報処理装置１０ａは、仮想計算機２３が処理の実行要求を受信した場合は、情報処理装置３０の電源を投入して実行要求を送信し、仮想計算機２３ａが処理の実行要求を受信した場合は、仮想計算機２３ａを情報処理装置４０にマイグレーションしてもよい。
【０１６２】
なお、ハイパーバイザ２２、２２ａ、４７や仮想計算機２３、２３ａ、４８等のプログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＭＯ（Magneto  Optical  Disc）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１６３】
１、１ａ  情報処理システム
１０、１０ａ、３０、４０  情報処理装置
１１、４２、４４、４６  メモリ
１２、１２ａ、４１、４３、４５  ＣＰＵ
１３  仮想ＩＯ
１４  割り込み処理テーブル
１５  ステート格納領域
１６  通信ＩＯバッファ
１７  仮想計算機管理テーブル
１８  簡易仮想計算機管理テーブル
１９、１９ａ  制御レジスタ
２０  例外状態レジスタ
２０ａ  ステートレジスタ
２１  プログラムカウンタ
２２、２２ａ、４７  ハイパーバイザ
２３、２３ａ、４８  仮想計算機
２４、２５  仮想ＩＯ装置
２８、３４、３５  ＩＯ装置
２９  共有ファイル
３１  管理部
３２  ＩＯ入出力部
３３  処理部
【図１】
2013242797.tif 000003
【図２】
2013242797.tif 000004
【図３】
2013242797.tif 000005
【図４】
2013242797.tif 000006
【図５】
2013242797.tif 000007
【図６】
2013242797.tif 000008
【図７】
2013242797.tif 000009
【図８】
2013242797.tif 000010
【図９】
2013242797.tif 000011
【図１０】
2013242797.tif 000012
【図１１】
2013242797.tif 000013
【図１２】
2013242797.tif 000014
【図１３】
2013242797.tif 000015
【図１４】
2013242797.tif 000016
【図１５】
2013242797.tif 000017
【図１６】
2013242797.tif 000018
【図１７】
2013242797.tif 000019
【図１８】
2013242797.tif 000020
【図１９】
2013242797.tif 000021
【図２０】
2013242797.tif 000022
【図２１】
2013242797.tif 000023
【図２２】
2013242797.tif 000024
【図２３】
2013242797.tif 000025
【図２４】
2013242797.tif 000026
【図２５】
2013242797.tif 000027
【図２６】
2013242797.tif 000028
【図２７】
2013242797.tif 000029