(57)【要約】【課題】仮想環境上で動作する複数のゲストＯＳからの電源制御要求を適切に処理する。【解決手段】実施形態の情報処理装置は、複数のゲストＯＳを仮想環境上で動作させる情報処理装置であって、複数のゲストＯＳの仮想環境上の動作を制御し、ゲストＯＳに対する情報処理装置のハードウェアの割り当てを示す割当情報を保持する仮想化部と、割当情報に基づいて複数のＡＣＰＩテーブルを作成するＢＩＯＳ部と、を備え、仮想化部は、複数のゲストＯＳのそれぞれに対して、割当情報に基づいて作成されたＡＣＰＩテーブルを対応させる。【選択図】図１
2017162165.tif 000002
【特許請求の範囲】
【請求項１】
複数のゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を仮想環境上で動作させる情報処理装置であって、
前記複数のゲストＯＳの仮想環境上の動作を制御し、前記ゲストＯＳに対する前記情報処理装置のハードウェアの割り当てを示す割当情報を保持する仮想化部と、
前記割当情報に基づいて複数のＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）テーブルを作成するＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）部と、を備え、
前記仮想化部は、前記複数のゲストＯＳのそれぞれに対して、前記割当情報に基づいて作成されたＡＣＰＩテーブルを対応させる、
情報処理装置。
【請求項２】
前記情報処理装置の仮想環境は、ハイパーバイザ型であり、
前記仮想化部は、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍａｎａｇｅｒ）である、
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置の仮想環境は、ホストＯＳ型であり、
前記仮想化部は、ホスト型仮想化ソフトウェアである、
請求項１に記載の情報処理装置。
【請求項４】
前記仮想化部は、前記複数のゲストＯＳのそれぞれから、前記情報処理装置のハードウェアの電源状態の制御を要求する電源制御要求を受信し、
前記ＢＩＯＳ部は、前記複数のＡＣＰＩテーブルから、前記電源制御要求を送信したゲストＯＳにより使用され、かつ、他のゲストＯＳにより使用されていない専用ハードウェア、及び、前記電源制御要求を送信したゲストＯＳと、少なくとも１つの他のゲストＯＳと、に使用されている共有ハードウェアを特定し、前記専用ハードウェアの電源状態を前記電源制御要求に基づいて制御し、前記共有ハードウェアの電源状態を、前記少なくとも１つの他のゲストＯＳが既に前記電源制御要求により要求される電源状態と同じ電源状態に移行している場合、前記共有ハードウェアの電源状態を前記電源制御要求に基づいて制御する、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記電源状態は、ＡＣＰＩ規格により定められた電源状態である、
請求項４に記載の情報処理装置。
【請求項６】
前記割当情報を前記ＢＩＯＳ部に送信し、前記ＢＩＯＳ部から前記複数のＡＣＰＩテーブルそれぞれのアドレスを受信する通信部、
を更に備える請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記複数のゲストＯＳのそれぞれは、所定のアドレスを使用して前記ＡＣＰＩテーブルにアクセスし、
前記仮想化部は、前記ＡＣＰＩテーブルの接続元のゲストＯＳに応じて、前記所定のアドレスのアドレス変換を行うことにより、前記割当情報に基づいて作成されたＡＣＰＩテーブルのアドレスを、前記複数のゲストＯＳそれぞれに対応させる、
請求項６に記載の情報処理装置。
【請求項８】
複数のゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を仮想環境上で動作させる情報処理装置の情報処理方法であって、
仮想化部が、前記複数のゲストＯＳの仮想環境上の動作を制御するステップと、
仮想化部が、前記ゲストＯＳに対する前記情報処理装置のハードウェアの割り当てを示す割当情報を保持するステップと、
ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）部が、前記割当情報に基づいて複数のＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）テーブルを作成するステップと、
仮想化部が、前記複数のゲストＯＳのそれぞれに対して、前記割当情報に基づいて作成されたＡＣＰＩテーブルを対応させるステップと、
を含む情報処理方法。
【請求項９】
複数のゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を仮想環境上で動作させる情報処理装置を、
前記複数のゲストＯＳの仮想環境上の動作を制御し、前記ゲストＯＳに対する前記情報処理装置のハードウェアの割り当てを示す割当情報を保持する仮想化部と、
前記割当情報に基づいて複数のＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）テーブルを作成するＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）部として機能させ、
前記仮想化部は、前記複数のゲストＯＳのそれぞれに対して、前記割当情報に基づいて作成されたＡＣＰＩテーブルを対応させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年の一般的なＰＣでは、複数のＣＰＵコアを持つマルチコアシステムが利用されている。それら複数のＣＰＵを効率的に使うため、アプリケーション及びＯＳでの対応が進んできている。その中の技術の一つとして、ＨＷ（Ｈａｒｄｗａｒｅ）仮想化と呼ばれる技術（ＶＭｗａｒｅ（登録商標）及びＶｉｒｔｕａｌＢｏｘ（登録商標）等）が一般化してきている。特に、多数のサーバＰＣが稼働するデータセンター等では、積極的に本技術が使われている。ＨＷ仮想化技術のメリットとして、複数のＯＳを一台のＰＣに集約することで、物理的な台数を削減し、設置コスト、電力及び保守費の削減等が挙げられる。
【０００３】
特許文献１には、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍａｎａｇｅｒ）とＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）準拠ゲスト・オペレーティング・システム（ＯＳ）との間の双方向通信のための方法及び装置、並びに、システム上の競合を管理するための専用のＶＭを用いた構成が開示されている。
【０００４】
また、ハイパーバイザ型のＨＷ仮想化を組込み機器に応用する動きがあり、ＴｒｕｓｔＯＮＩＣ（登録商標）及びＯｐｅｎ  Ｋｅｒｎｅｌ  Ｌａｂ等といった組込み機器向けに、重要な性能への影響を極力少なくしたりＲＯＭ／ＲＡＭサイズ削減を実現したりする技術が既に知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら前述の組込み機器向けの技術は、ＡＲＭ系ＣＰＵに特化したものであり、最近、スマートフォン及び組込み向け等に注力してきているｘ８６ではそもそも動作しないといった問題がある。また、ｘ８６特有の問題としてＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）と呼ばれるソフトウェアがハイパーバイザとハードウェアの間に存在している。このＢＩＯＳはハードウェアの基本的な初期化や電源制御を行う機能を持つ。この電源制御の実現をＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）と呼ばれる規格で実現している。各々のゲストＯＳが管理するハードウェアに対して、ＡＣＰＩを用いてＢＩＯＳを経由した制御を行う場合、ＢＩＯＳはＯＳが複数存在している事を認識できないため、共有で使用されるハードウェアへの電源制御の競合が発生するといった問題がある。
【０００６】
本発明は、上記に鑑みてなされたものであって、仮想環境上で動作する複数のゲストＯＳからの電源制御要求を適切に処理することができる情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、複数のゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を仮想環境上で動作させる情報処理装置であって、前記複数のゲストＯＳの仮想環境上の動作を制御し、前記ゲストＯＳに対する前記情報処理装置のハードウェアの割り当てを示す割当情報を保持する仮想化部と、前記割当情報に基づいて複数のＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）テーブルを作成するＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）部と、を備え、前記仮想化部は、前記複数のゲストＯＳのそれぞれに対して、前記割当情報に基づいて作成されたＡＣＰＩテーブルを対応させる。
【発明の効果】
【０００８】
本発明によれば、仮想環境上で動作する複数のゲストＯＳからの電源制御要求を適切に処理することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は第１実施形態の情報処理装置のハードウェア構成の例を示す図である。
【図２】図２は第１実施形態の情報処理装置のソフトウェア構成の例を示す図である。
【図３】図３は第１実施形態のＡＣＰＩテーブルの例を示す図である。
【図４】図４は第１実施形態の複数のゲストＯＳの起動方法の例を示すフローチャートである。
【図５】図５は第１実施形態の電源制御が競合した場合の処理例を示すフローチャートである。
【図６】図６は第２実施形態の情報処理装置のソフトウェア構成の例を示す図である。
【発明を実施するための形態】
【００１０】
はじめに、ＨＷ仮想化技術について説明する。ＨＷ仮想化技術の方式には、ホストＯＳ型（ホスト型）とハイパーバイザ型（ベアメタル型）と呼ばれる２種類の方式が存在する。
【００１１】
ホストＯＳ型（ホスト型）は、ＰＣ及びサーバ装置で多く使われている方式である。ホストＯＳ型は、既にインストールされたＯＳ（Ｗｉｎｄｏｗｓ（登録商標）及びＬｉｎｕｘ（登録商標）等）上にホスト型仮想化ソフトウェアをインストールし、その上で仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を立上げ、別の仮想ＯＳ（以下、ゲストＯＳという。）をインストールし、動作させるＨＷ仮想化技術である。ホストＯＳ型の特徴としては、既にＯＳが動作しているため、簡単に起動及び動作確認が出来る利点がある。一方で、ホストＯＳ型は、常にホストＯＳが必要となり、ホストＯＳを動作させるためのリソース、及び、ホストＯＳの遅延等により、ゲストＯＳの性能が出にくいという面がある。
【００１２】
ハイパーバイザ型（ベアメタル型）は、ハードウェア上に直接ハイパーバイザ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ：  ＶＭＭ）と呼ばれるソフトが配置され、そのハイパーバイザから直接仮想マシンを動作させる方式である。ハイパーバイザ型の特徴としては、ＯＳが不要なためゲストＯＳの性能への影響が少ないという点がある。また、各ゲストＯＳが直接各々に割り当てられたハードウェアを直接制御することができる。
【００１３】
以下に添付図面を参照して、情報処理装置、情報処理方法及びプログラムの実施形態を詳細に説明する。
【００１４】
（第１実施形態）
はじめに、第１実施形態の情報処理装置のハードウェア構成の例について説明する。
【００１５】
［情報処理装置のハードウェア構成］
図１は第１実施形態の情報処理装置１００のハードウェア構成の例を示す図である。第１実施形態の情報処理装置１００は、ＣＰＵ１、ＣＰＵ２、メモリ３、フラッシュＲＯＭ４、ＵＳＢコントローラ５、ＬＣＤコントローラ６及びネットワークコントローラ７を備える。
【００１６】
ＣＰＵ１及び２は、情報処理装置１００の動作を制御する制御装置である。ＣＰＵ１及び２は、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）、及び、仮想化を支援する機能を持つ。仮想化を支援する機能は、例えばメモリ仮想化及びＩＯ仮想化等を支援する機能である。第１実施形態の説明では、簡単のため、ＣＰＵが２個の場合で説明するが、ＣＰＵの数は２個の限らず任意でよい。
【００１７】
メモリ３は、ＤＤＲ２及びＤＤＲ３等の一般的な揮発メモリである。フラッシュＲＯＭ４は、例えばＮＯＲ型、及び、ＮＡＮＤ型等のフラッシュメモリデバイスである。フラッシュＲＯＭ４は、プログラム及びユーザデータの情報を記憶する不揮発性メモリである。
【００１８】
ＵＳＢコントローラ５は、ＵＳＢメモリ等を制御するためのコンローラである。ＬＣＤコントローラ６は、文字及び画像等の表示を行うＬＣＤを制御するためのコントローラである。ネットワークコントローラ７は、他の装置と通信するためのコントローラである。
【００１９】
［情報処理装置のソフトウェア構成］
次に、第１実施形態の情報処理装置１００のソフトウェア構成の例について説明する。
【００２０】
図２は第１実施形態の情報処理装置１００のソフトウェア構成の例を示す図である。第１実施形態の情報処理装置１００は、ＢＩＯＳ部２０、通信部２５、仮想化部３０、第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０を備える。第１実施形態の説明では、簡単のため、ゲストＯＳが２個の場合で説明するが、ゲストＯＳの数は２個の限らず任意でよい。
【００２１】
ＢＩＯＳ部２０は、情報処理装置１００のハードウェアとの最も低レベルの入出力を行うＢＩＯＳ機能の制御を行う。ＢＩＯＳ部２０を実現するプログラムは、上述のフラッシュＲＯＭ４に記憶されている。ＢＩＯＳ部２０は、複数のＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）テーブル２１を保持する。ＡＣＰＩテーブル２１は、電源管理及びハードウェアに関する情報等が含まれる。
【００２２】
まずＢＩＯＳ部２０は、従来の場合と同様に、ＢＩＯＳ部２０の起動時にＡＣＰＩテーブルをメモリ３上に１つ作成する。次にＢＩＯＳ部２０は、第１のゲストＯＳ４０に参照されるＡＣＰＩテーブル２１を、第１のゲストＯＳ４０の起動時に、後述の割当情報３１に基づいてメモリ３上に生成する。次にＢＩＯＳ部２０は、第２のゲストＯＳ５０に参照されるＡＣＰＩテーブル２１を、第２のゲストＯＳ５０の起動時に、後述の割当情報３１に基づいてメモリ３上に生成する。ＡＣＰＩテーブル２１の詳細は、図３を参照して後述する。
【００２３】
通信部２５は、ＢＩＯＳ部２０と仮想化部３０との間で情報の送受信を行う。通信部２５は、例えば後述の割当情報３１をＢＩＯＳ部２０に送信し、ＢＩＯＳ部２０から複数のＡＣＰＩテーブル２１それぞれのアドレスを受信する。通信部２５は、ＢＩＯＳ部２０と仮想化部３０との間の通信を可能にするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）により実現される。
【００２４】
仮想化部３０は、第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０を仮想環境上で動作させるための制御を行う。
【００２５】
第１実施形態の仮想化部３０は、ＶＭＭと呼ばれるハイパーバイザにより実現される。すなわち第１実施形態の情報処理装置１００は、上述の図１のハードウェア上に直接、仮想化部３０を動作させるハイパーバイザ型のＨＷ仮想化技術を利用している。そして仮想化部３０が、仮想マシンを動作させることにより、当該仮想マシン上で第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０を動作させる。
【００２６】
仮想化部３０は割当情報３１を保持する。割当情報３１は、情報処理装置１００で稼働する第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０に対するハードウェアの割り当てを示す情報である。
【００２７】
表１は第１実施形態の割当情報３１の例を示す表である。
【００２８】
【表１】
2017162165.tif 000003
【００２９】
第１実施形態の割当情報３１は、ハードウェア、割当対象及び属性を含む。ＣＰＵ１及び２、並びに、メモリ３及びフラッシュＲＯＭ４は、基本デバイスとして仮想化部３０に割り当てられる。なお基本デバイスは、仮想化部３０により制御されるが、第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０からもアクセス可能である。すなわち基本デバイスは、複数のゲストＯＳにより共有される共有ハードウェアである。
【００３０】
一方、ネットワークコントローラ７及びＵＳＢコントローラ５は、専用デバイスとして第１のゲストＯＳ４０に割り当てられる。ネットワークコントローラ７及びＵＳＢコントローラ５は、第２のゲストＯＳ５０からはアクセスできない。すなわちネットワークコントローラ７及びＵＳＢコントローラ５は、第１のゲストＯＳ４０の専用ハードウェアである。
【００３１】
また、ＬＣＤコントローラ６は、専用デバイスとして第２のゲストＯＳ５０に割り当てられる。ＬＣＤコントローラ６は、第１のゲストＯＳ４０からはアクセスできない。すなわちＬＣＤコントローラ６は、第２のゲストＯＳ５０の専用ハードウェアである。
【００３２】
第１のゲストＯＳ４０は、仮想化部３０上の仮想環境で動作するＯＳである。第１のゲストＯＳ４０はＡＣＰＩドライバ４１を備える。ＡＣＰＩドライバ４１は、システムの電源管理機能、及び、インタプリタを持つソフトウェアモジュールである。ＡＣＰＩドライバ４１のインタプリンタは、ＡＣＰＩテーブル２１上に存在する後述のＡＭＬ（ＡＣＰＩ  Ｍａｃｈｉｎｅ  Ｌａｎｇｕａｇｅ）を逐次解釈しながら実行する。
【００３３】
第２のゲストＯＳ５０及びＡＣＰＩドライバ５１の説明は、第１のゲストＯＳ４０及びＡＣＰＩドライバ４１の説明と同様なので省略する。
【００３４】
図３は第１実施形態のＡＣＰＩテーブル２１の例を示す図である。ＡＣＰＩテーブル２１は、ＲＳＤＰ（Ｒｏｏｔ  ｓｙｓｔｅｍ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｐｏｉｎｔｅｒ）２０１、ＸＳＤＴ（ｅＸｔｅｎｄｅｄ  Ｓｙｓｔｅｍ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｔａｂｌｅ）２０２、ＦＡＣＰ（Ｆｉｘｅｄ  ＡＣＰＩ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｔａｂｌｅ）２０３、ＤＳＤＴ（Ｄｉｆｆｅｒｅｎｔｉａｔｅｄ  Ｓｙｓｔｅｍ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｔａｂｌｅ）２０４、及び、ＳＳＤＴ（Ｓｅｃｏｎｄａｒｙ  Ｓｙｓｔｅｍ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｔａｂｌｅ）２０５を有する。ＲＳＤＰ２０１、ＸＳＤＴ２０２、ＦＡＣＰ２０３、ＤＳＤＴ２０４及びＳＳＤＴ２０５は、構造体である。
【００３５】
ＲＳＤＰ２０１は、ＲＳＤＴ（Ｒｏｏｔ  Ｓｙｓｔｅｍ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｔａｂｌｅ）と呼ばれる構造体へのポインタ、及び、ＸＳＤＴ２０２へのポインタ等を含む。
【００３６】
ＲＳＤＰ２０１は、様々なテーブルへのポインタを含み、ＸＳＤＴ２０２はＲＳＤＴを６４ビットメモリ空間に対応させた構造体である。ここではＸＳＤＴ２０２を例にして説明する。
【００３７】
ＸＳＤＴ２０２は、様々なテーブルへのエントリ（ポインタ）を含む。ここでは重要な３つの構造体（ＦＡＣＰ２０３、ＤＳＤＴ２０４及びＳＳＤＴ２０５）について説明する。
【００３８】
ＦＡＣＰ２０３は、ＡＣＰＩに関連するハードウェアへのレジスタ情報、及び、ＦＡＣＳ（Ｆｉｒｍｗａｒｅ  ＡＣＰＩ  Ｃｏｎｔｒｏｌ  Ｓｔｒｕｃｔｕｒｅ）と呼ばれるＢＩＯＳとの排他制御、及び、サスペンドレジューム時にＢＩＯＳとのやり取り等に使用されるメモリ位置の情報等を含む。またＦＡＣＰ２０３は、ＤＳＤＴ２０４へのポインタも保持している。
【００３９】
ＤＳＤＴ２０４は、主にＡＭＬ（ＡＣＰＩ  Ｍａｃｈｉｎｅ  Ｌａｎｇｕａｇｅ）と呼ばれる中間言語により記述されたハードウェアに関連する情報が記載されている。ＯＳは、ＢＩＯＳから引き渡されたこの情報をＡＣＰＩドライバ内にあるインタプリンタにより解釈し、実行する。
【００４０】
ＳＳＤＴ２０５は、ＤＳＤＴ２０４の補足として使われる。
【００４１】
図２に戻り、仮想化部３０は、複数のゲストＯＳ（第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０）のそれぞれに対して、割当情報３１に基づいて作成されたＡＣＰＩテーブル２１のアドレスを対応させることにより、複数のゲストＯＳのそれぞれに専用のＡＣＰＩテーブル２１を提供する。なおＡＣＰＩテーブル２１のアドレスは決まっており、複数のゲストＯＳ（第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０）は、所定のアドレスを使用してＡＣＰＩテーブル２１へアクセスする。そのため、具体的には、仮想化部３０は、第１のゲストＯＳ４０（第２のゲストＯＳ５０）のソースコードの改変を行わないで済むように、ＡＣＰＩテーブル２１の接続元のゲストＯＳに応じて、所定のアドレスのアドレス変換を行うことにより、割当情報３１に基づいて作成されたＡＣＰＩテーブル２１のアドレスを、各ゲストＯＳに対応させる。
【００４２】
［情報処理方法］
次に第１実施形態の情報処理方法について説明する。
【００４３】
図４は第１実施形態の複数のゲストＯＳ（第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０）の起動方法の例を示すフローチャートである。はじめに、情報処理装置１００の筐体の電源ボタンの押下、及び、ＣＰＵ１（２）リセット等により、ＢＩＯＳ部２０が起動する（ステップＳ１）。
【００４４】
次に、ＢＩＯＳ部２０は、ＡＣＰＩテーブル２１をメモリ３上に作成する（ステップＳ２）。次に、ＢＩＯＳ部２０は、仮想化部３０を起動する（ステップＳ３）。次に、仮想化部３０が、割当情報３１を、通信部２５を介してＢＩＯＳ部２０に送信することにより、当該割当情報３１をＢＩＯＳ部２０に通知する（ステップＳ４）。
【００４５】
次に、ＢＩＯＳ部２０は、ステップＳ４の処理により通知された割当情報３１に基づいてＡＣＰＩテーブル２１を作成する（ステップＳ５）。具体的には、ＢＩＯＳ部２０は、第１のゲストＯＳ４０に参照されるＡＣＰＩテーブル２１と、第２のゲストＯＳ５０に参照されるＡＣＰＩテーブル２１と、を割当情報３１に基づいてメモリ３上に生成する。
【００４６】
第１のゲストＯＳ４０に参照されるＡＣＰＩテーブル２１は、ＵＳＢコントローラ５及びネットワークコントローラ７の電源管理に関する情報を含む。第２のゲストＯＳ５０に参照されるＡＣＰＩテーブル２１は、ＬＣＤコントローラ６の電源管理に関する情報を含む。
【００４７】
次に、ＢＩＯＳ部２０は、ステップＳ５の処理により作成された２つのＡＣＰＩテーブルのアドレスを、通信部２５を介して仮想化部３０に送信することにより、当該アドレスを仮想化部３０に通知する（ステップＳ６）。次に、仮想化部３０が、複数のゲストＯＳ（第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０）を起動する（ステップＳ７）。
【００４８】
図５は第１実施形態の電源制御が競合した場合の処理例を示すフローチャートである。図５の例は、第１のゲストＯＳ４０が、省エネ移行要求を仮想化部３０に送信する場合を示す。省エネ移行要求は、情報処理装置１００のハードウェア（図１参照）の電源状態の制御を要求する電源制御要求の一例である。図５の例で説明する省エネ移行要求は、情報処理装置１００の電源状態をＡＣＰＩ規格により定義されたＳ３状態に移行させる要求である。Ｓ３状態は、Ｓｕｓｐｅｎｄ  ｔｏ  ＲＡＭと呼ばれる。Ｓｕｓｐｅｎｄ  ｔｏ  ＲＡＭは、メモリ３はセルフリフレッシュ状態により保持されているが、ハードウェアのレジスタ情報は失われている状態である。
【００４９】
従来は、それぞれのゲストＯＳから個別に省エネ移行要求が仮想化部３０に通知されることはなかった。第１実施形態の情報処理装置１００では、ゲストＯＳ毎に専用のＡＣＰＩテーブル２１が確保されている。そのため仮想化部３０は、それぞれのゲストＯＳから受信された省エネ移行要求を個別に処理することが可能である。しかしながら、例えば仮想化部３０が、第１のゲストＯＳ４０から省エネ移行要求を受信した場合に、そのまま第１のゲストＯＳ４０及び第２のゲストＯＳ５０により共有されている共有ハードウェア（ここではメモリ３）を省エネ状態にしてしまうと、第２のゲストＯＳ５０の動作に影響を与えてしまう。したがって、仮想化部３０は、第１のゲストＯＳ４０から省エネ要求を受信した場合、第２のゲストＯＳ５０の状態に応じた電源制御を行う。
【００５０】
はじめに、仮想化部３０が、第１のゲストＯＳ４０から省エネ移行要求を受信する（ステップＳ１１）。
【００５１】
次に、ＢＩＯＳ部２０が、第１のゲストＯＳ４０のみに影響がある専用ハードウェアの省エネ移行処理を行う（ステップＳ１２）。具体的には、第１実施形態の割当情報３１（表１参照）に基づいて作成されたＡＣＰＩテーブル２１の例では、ＢＩＯＳ部２０は、ＵＳＢコントローラ５及びネットワークコントローラ７の消費電力を低下させる省エネ移行処理を行う。
【００５２】
次に、ＢＩＯＳ部２０が、第２のゲストＯＳ５０が省エネ（Ｓ３状態）移行済みであるか否かを判定する（ステップＳ１３）。第２のゲストＯＳ５０が省エネ（Ｓ３状態）移行済みである場合（ステップＳ１３、Ｙｅｓ）、ＢＩＯＳ部２０は、情報処理装置１００のシステム全体として、Ｓ３状態の省エネ状態に移行可能であると判断し、共有ハードウェアであるメモリ３をセルフリフレッシュ状態にする（ステップＳ１４）。
【００５３】
第２のゲストＯＳ５０が省エネ（Ｓ３状態）移行済みでない場合（ステップＳ１３、Ｎｏ）、ステップＳ１１で受信した省エネ移行要求に応じた省エネ移行処理は終了する。
【００５４】
以上説明したように、第１実施形態の情報処理装置１００では、仮想化部３０が、複数のゲストＯＳ（第１のゲストＯＳ４０、及び、第２のゲストＯＳ５０）の仮想環境上の動作を制御し、ゲストＯＳに対する情報処理装置１００のハードウェアの割り当てを示す割当情報３１を保持する。ＢＩＯＳ部２０は、割当情報３１に基づいて複数のＡＣＰＩテーブル２１を作成する。そして仮想化部３０が、複数のゲストＯＳのそれぞれに対して、割当情報３１に基づいて作成されたＡＣＰＩテーブル２１を対応させる。
【００５５】
これにより第１実施形態の情報処理装置１００によれば、ゲストＯＳのソースコードを改変することなく、仮想環境上で動作する複数のゲストＯＳからの電源制御要求を適切に処理することができる。例えば一のゲストＯＳから、省エネ移行要求が要求された場合、複数のゲストＯＳで共有されている共有ハードウェアに対する電源制御を、情報処理装置１００で動作する他のゲストＯＳに影響を与えないように適切に処理することができる。
【００５６】
また第１実施形態の情報処理装置１００によれば、複数のゲストＯＳが起動している状態でハードウェアの電源制御を適切に行うために必要なメモリ３及びフラッシュＲＯＭ４の消費を、従来の電源制御方法よりも少なくすることができる。
【００５７】
（第２実施形態）
次に第２実施形態について説明する。第２実施形態の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。第２実施形態の説明では、情報処理装置１００にホストＯＳ型（ホスト型）のＨＷ仮想化技術が利用されている点が、第１実施形態の場合と異なる。
【００５８】
図６は第２実施形態の情報処理装置１００のソフトウェア構成の例を示す図である。第２実施形態の情報処理装置１００は、ＢＩＯＳ部２０、通信部２５、仮想化部３０、第１のゲストＯＳ４０、第２のゲストＯＳ５０、ホストＯＳ６０、アプリケーション７０ａ及びアプリケーション７０ｂを備える。第２実施形態の説明では、簡単のため、ゲストＯＳが２個の場合で説明するが、ゲストＯＳの数は２個の限らず任意でよい。
【００５９】
ＢＩＯＳ部２０は複数のＡＣＰＩテーブル２１を保持する。仮想化部３０は割当情報３１を保持する。第１のゲストＯＳ４０はＡＣＰＩドライバ４１を備える。第２のゲストＯＳ５０はＡＣＰＩドライバ５１を備える。
【００６０】
第２実施形態の仮想化部３０は、第１実施形態の場合と異なり、ホストＯＳ６０上で動作するホスト型仮想化ソフトウェアにより実現される。なおホストＯＳ６０の種類は任意でよい。第１のゲストＯＳ４０及び第２のゲストＯＳ５０は、ホストＯＳ６０上で動作する仮想化部３０により制御される仮想マシンとして動作する。ＢＩＯＳ部２０及び仮想化部３０は、第１実施形態の場合と同様に、通信部２５により情報（割当情報３１、及び、ＡＣＰＩテーブル２１のアドレス等）を送受信する。
【００６１】
アプリケーション７０ａ及び７０ｂは、ホストＯＳ６０上で動作する任意のアプリケーションである。図６に示されるように、第２実施形態の仮想化部３０は、アプリケーション７０ａ及び７０ｂと同じように、ホストＯＳ６０上で動作する。
【００６２】
以上説明したように、第２実施形態の情報処理装置１００では、仮想化部３０がホスト型仮想化ソフトウェアにより実現されているが、第２実施形態の情報処理装置１００においても、第１実施形態の場合と同様の効果を得ることができる。
【００６３】
なお第１及び第２実施形態の情報処理装置１００で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ及びＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【００６４】
また第１及び第２実施形態の情報処理装置１００で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また第１及び第２実施形態の情報処理装置１００が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【００６５】
また第１及び第２実施形態の情報処理装置１００で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【符号の説明】
【００６６】
１  ＣＰＵ
２  ＣＰＵ
３  メモリ
４  フラッシュＲＯＭ
５  ＵＳＢコントローラ
６  ＬＣＤコントローラ
７  ネットワークコントローラ
２０  ＢＩＯＳ部
２１  ＡＣＰＩテーブル
２５  通信部
３０  仮想化部
３１  割当情報
４０  第１のゲストＯＳ
４１  ＡＣＰＩドライバ
５０  第２のゲストＯＳ
５１  ＡＣＰＩドライバ
６０  ホストＯＳ
７０  アプリケーション
１００  情報処理装置
２０１  ＲＳＤＰ
２０２  ＸＳＤＴ
２０３  ＦＡＣＰ
２０４  ＤＳＤＴ
２０５  ＳＳＤＴ
【先行技術文献】
【特許文献】
【００６７】
【特許文献１】特開２０１１−２３８２７２号公報
【図１】
2017162165.tif 000004
【図２】
2017162165.tif 000005
【図３】
2017162165.tif 000006
【図４】
2017162165.tif 000007
【図５】
2017162165.tif 000008
【図６】
2017162165.tif 000009