(57)【要約】【課題】ゲストＯＳの省電力機能によることなく、デバイスの省電力管理を適切に行なうことができるようにする。【解決手段】デバイスドライバ仮想マシン３１を介してデバイス２０３にアクセスしている複数のゲスト仮想マシン３０のそれぞれに関して、複数のゲスト仮想マシン３０のうち一つとデバイス２０３との間における非アクセス状態での経過時間を非アクセス時間として測定する測定部１０６と、非アクセス時間とデバイス２０３の動作モードを表す動作モード情報とを対応付けた動作プロファイル情報Ｔ１を記憶する記憶部と、測定された非アクセス時間に基づいて動作プロファイル情報Ｔ１を参照して、動作モードを決定する決定部１０７，１０８と、デバイス２０３を決定された動作モードに遷移させる遷移制御部１０８とをそなえる。【選択図】図１
2012018515.tif 000002
【特許請求の範囲】
【請求項１】
デバイスを備えた情報処理装置であって、
該デバイスに対して処理を行なう複数のゲスト仮想マシンと、
該複数のゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンと、
該デバイスドライバ仮想マシンを介して該デバイスにアクセスしている該複数のゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定する測定部と、
該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を記憶 する記憶部と、
測定された該非アクセス時間に基づいて該動作プロファイル情報を参照して、動作モードを決定する決定部と、
該デバイスを、決定された該動作モードに遷移させる遷移制御部と、
を備えることを特徴とする、情報処理装置。
【請求項２】
該決定部が、
該デバイスを共有する該複数のゲスト仮想マシンのそれぞれに対する動作モードのうち、最も省電力度合いが小さい動作モードを選択して決定することを特徴とする、請求項１記載の情報処理装置。
【請求項３】
該決定部は、該デバイスを共有する該複数のゲスト仮想マシンのそれぞれに対して、各ゲスト仮想マシンが遷移可能な動作モードをそれぞれ仮の動作モードとして決定し、これらの仮の動作モードのうち最も省電力度合いが小さい仮の動作モードを、デバイス選択モードとして決定し、
前記遷移制御部は、該デバイスを、決定された該デバイス選択モードに遷移させる、
ことを特徴とする、請求項２記載の情報処理装置。
【請求項４】
該情報処理装置の状態変更を検出する検出部をそなえるとともに、
該記憶部が 、当該情報処理装置の状態に応じた該動作プロファイル情報をそなえ、
該決定部が、該検出部により当該情報処理装置の状態変更が検出された場合に、当該情報処理装置の状態に応じた該動作プロファイル情報を参照して、該動作モードを決定することを特徴とする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
当該情報処理装置の基準タイマクロック間隔を変更するクロック変更部と、
該クロック変更部により該基準タイマクロック間隔が変更されたことを検出するクロック変更検出部と、
該測定部による該非アクセス時間の測定方法を変更する測定方法変更部とをそなえ、
該クロック変更検出部により該基準タイマクロック間隔の変更が検出されると、該測定方法変更部が該測定部による該非アクセス時間の測定方法を変更することを特徴とする、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
デバイスを備えた情報処理装置の制御方法であって、
該デバイスに対して処理を行なう複数のゲスト仮想マシンを実現するゲスト仮想マシン実現ステップと、
該ゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンを実現するデバイスドライバ仮想マシン実現ステップと、
該デバイスドライバ仮想マシンを介して該デバイスにアクセスしている該複数のゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定する測定ステップと、
該測定ステップにおいて測定された、該非アクセス時間に基づいて、該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を参照して、動作モードを決定する決定ステップと、
該デバイスを、決定された該動作モードに遷移させる遷移制御ステップとをそなえることを特徴とする、制御方法。
【請求項７】
デバイスの制御機能をコンピュータに実行させるための制御プログラムであって、
該デバイスに対して処理を行なうゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンを介して該デバイスにアクセスしている複数の該ゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定し、
測定した該非アクセス時間に基づいて、該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を参照して、該動作モードを決定し、
該デバイスを、決定した該動作モードに遷移させる、
処理を該コンピュータに実行させることを特徴とする、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、複数種類のデバイスをそなえた情報処理装置を制御する技術に関する。
【背景技術】
【０００２】
近年、仮想化技術により、一台の物理計算機を論理的に複数の計算機に分割し、これらの計算機において、それぞれ独立したＯＳ（Operating System；ゲストＯＳ）を実行することが行なわれている。これらの論理的な計算機は、仮想マシンもしくはＶＭ（Virtual Machine）と呼ばれることもある。
また、仮想化技術によれば、複数台のサーバ上で実行していたＯＳを１台のサーバに集約もしくは統合し、リソースの効率利用により省電力化を実現することもできる。更に、実行中の仮想マシンを別のサーバへと動的に移動させるマイグレーション技術も知られている。これにより、仮想マシンを業務負荷に応じて効率的に集約して余剰サーバの電力を切断するといった省電力運用方法も知られている。
【０００３】
一方で、元々サーバなど大型計算機のための技術であった仮想化技術は、計算機の小型化、飛躍的な性能向上などにより、ノートＰＣ（Personal Computer）や携帯電話等のクライアント機器にも適用されつつある。これらのクライアント機器への仮想化技術の適用により、ユーザインタフェースの異なる複数のゲストＯＳを利用できることによる利便性の向上や、ハードウェアの抽象化やＯＳを下位レイヤーから管理することによるセキュリティの確保を期待することができる。なお、ノートＰＣや携帯電話はユーザが直接利用する機器であり、他の機器へ集約したりマイグレーションするといったサーバで用いられる省電力運用を行なうことは困難である。
【０００４】
さて、主にバッテリで駆動されるノートＰＣや携帯電話等の情報処理装置は、消費電力低減への要求が非常に高く、従来からＯＳやアプリケーションにより、きめ細かにデバイスの電源状態管理を行なっている。例えば、クロックダウンや電源供給停止などの低消費電力モードへの移行等の機能を実現している。しかし、仮想マシンシステムにおいてはこれらの電源状態管理手法を適用することができない。複数のゲストＯＳが同時に実行され、同一のデバイスを他のゲストＯＳから共有して使用している可能性があり、一のゲストＯＳから自由にデバイスの動作状態を停止することができないからである。
【０００５】
そこで、従来においては、例えば、ゲストＯＳから通知される状態遷移命令（例えば、ＡＣＰＩ（Advanced Configuration and Power Interface）命令）を管理ＯＳで調停し、この管理ＯＳが共有しているデバイスリソースを管理する手法が知られている。これにより、デバイスの実際の省電力モードへの遷移を制御し、複数のゲストＯＳが動作する仮想マシンシステムにおける消費電力を低減することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１１５６５３号公報
【特許文献２】特開２００６−１１３７６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の如く、仮想マシン上で動作する各ゲストＯＳからの状態遷移命令を管理ＯＳで調停する手法においては、システム全体で省電力を適切に実現するためには、全てのゲストＯＳが常に適切に状態遷移命令を発行して積極的に省電力を行なうことが必要となる。すなわち、仮にゲストＯＳのうち1つでも状態遷移命令を発行しないものが存在すると、省電力モードへ遷移できないという問題がある。
【０００８】
システムの運用上においては、ゲストＯＳとして、状態遷移命令を発行する機能をそなえていないレガシーなＯＳを互換性維持のために実行する場合がある。このような場合において、例えば、レガシーなゲストＯＳが適切な状態遷移命令を発行できるように改変を行なうのは困難である。又、レガシーなゲストＯＳに限らず、開発リソースの問題から、全てのゲストＯＳに同等の省電力機構をそなえさせることが困難な場合もある。
【０００９】
一方で、ゲストＯＳがそれほど活発に動いていない状態である時に、ゲストＯＳからの遷移命令に依らず、管理ＯＳや仮想マシンモニタの判断によって、デバイスを省電力モードに遷移させる場合がある。このような場合に、ゲストＯＳがデバイスを利用しようとした際にデバイスを省電力モードから復帰させる必要があり時間がかかる、という問題も生じる。
【００１０】
１つの側面では、このような課題に鑑み創案されたもので、デバイスの省電力管理を行なうことができるようにすることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
【課題を解決するための手段】
【００１１】
第１の案では、この情報処理装置は、デバイスを備えた情報処理装置であって、該デバイスに対して処理を行なう複数のゲスト仮想マシンと、該複数のゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンと、該デバイスドライバ仮想マシンを介して該デバイスにアクセスしている該複数のゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定する測定部と、該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を記憶する記憶部と、測定された該非アクセス時間に基づいて該動作プロファイル情報を参照して、動作モードを決定する決定部と、該デバイスを、決定された該動作モードに遷移させる遷移制御部とを備える。
【００１２】
また、第２の案では、制御方法は、デバイスを備えた情報処理装置の制御方法であって、該デバイスに対して処理を行なう複数のゲスト仮想マシンを実現するゲスト仮想マシン実現ステップと、該ゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンを実現するデバイスドライバ仮想マシン実現ステップと、該デバイスドライバ仮想マシンを介して該デバイスにアクセスしている該複数のゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定する測定ステップと、該測定ステップにおいて測定された、該非アクセス時間に基づいて、該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を参照して、動作モードを決定する決定ステップと、該デバイスを、決定された該動作モードに遷移させる遷移制御ステップとをそなえる。
【００１３】
さらに、第３の案では、制御プログラムは、デバイスの制御機能をコンピュータに実行させるための制御プログラムであって、該デバイスに対して処理を行なうゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンを介して該デバイスにアクセスしている複数の該ゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定し、測定した該非アクセス時間に基づいて、該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を参照して、該動作モードを決定し、該デバイスを、決定した該動作モードに遷移させる処理を該コンピュータを機能させる。
【発明の効果】
【００１４】
一態様によれば、デバイスの省電力管理を行なうことができる。
【図面の簡単な説明】
【００１５】
【図１】第１実施形態の一例としての情報処理装置の機能構成を模式的に示す図である。
【図２】第１実施形態の一例としての情報処理装置におけるデバイス及びゲストＯＳの構成例を示す図である。
【図３】第１実施形態の一例としての情報処理装置におけるデバイスステートを例示する図である。
【図４】（ａ），（ｂ），（ｃ）は第１実施形態の一例としての省電力プロファイル管理テーブルを説明するための図である。
【図５】第１実施形態の一例としてのインアクティビティ管理テーブルの例を示す図である。
【図６】第１実施形態の一例としてのバーチャルステート管理テーブルの例を示す図である。
【図７】第１実施形態の一例としての情報処理装置における電力管理処理を説明するためのフローチャートである。
【図８】第２実施形態の一例としての情報処理装置の機能構成を模式的に示す図である。
【図９】（ａ），（ｂ），（ｃ）は第２実施形態の一例としての情報処理装置の省電力プロファイル管理テーブルを示す図である。
【図１０】第２実施形態の一例としての情報処理装置における端末状態の変更に伴う省電力ステートの再計算及び再設定の遷移処理を説明するためのフローチャートである。
【図１１】第３実施形態の一例としての情報処理装置の機能構成を模式的に示す図である。
【図１２】第３実施形態の一例としての情報処理装置におけるタイマクロックの変更処理を伴なう電力管理手法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本情報処理装置、制御方法，制御プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体に係る実施の形態を説明する。
（Ａ）第１実施形態
図１は第１実施形態の一例としての情報処理装置１ａの機能構成を模式的に示す図、図２はそのデバイス及びゲストＯＳの構成例を示す図である。
【００１７】
情報処理装置１ａは、例えば、携帯電話機やＰＤＡ（Personal Digital Assistant），パーソナルコンピュータのような情報処理装置である。本実施形態においては、情報処理装置１ａとして携帯電話端末を用いた例について説明する。なお、以下、情報処理装置１ａを単に端末という場合がある。
本情報処理装置１ａは、図１に示すように、ハードウェアリソース２０として、ＣＰＵ２０１，ＲＯＭ２０２，ＲＡＭ２１１及び複数（本実施形態においては４つ）のデバイス２０３−１〜２０３−４をそなえている。
【００１８】
デバイス２０３−１〜２０３−４は、情報処理装置１ａの各種機能を実現する電子部品（モジュール）である。本実施形態においては、３Ｇデバイス２０３−１，無線ＬＡＮデバイス２０３−２，カメラデバイス２０３−３及びＳＤメモリデバイス２０３−４がそなえられている。
ここで、３Ｇデバイス２０３−１は、例えばＩＴＵ(International Telecommunication Union：国際電気通信連合)によって定められた「IMT-2000」標準に準拠したデジタル携帯電話の通信方式（いわゆる第３世代の携帯電話方式）で通信を実現するためのモジュールである。
【００１９】
無線ＬＡＮデバイス２０３−２は、無線ＬＡＮ（Local Area Network）での通信を実現するモジュールである。又、カメラデバイス２０３−３はカメラの撮像モジュールであり、ＳＤメモリデバイス２０３−４はＳＤメモリカードにデータの読み書きを実現するモジュールである。
すなわち、本情報処理装置１ａは、３Ｇ方式や無線ＬＡＮを介したデータ通信を可能とするとともに、カメラをそなえ、ＳＤメモリカードにデータの読み書きを行なう機能をそなえた携帯電話機として構成されている。
【００２０】
なお、以下、デバイスを示す符号としては、３Ｇデバイス２０３−１，無線ＬＡＮデバイス２０３−２，カメラデバイス２０３−３及びＳＤメモリデバイス２０３−４のうち１つを特定する必要があるときには符号２０３−１〜２０３−４を用いるが、任意のデバイスを指すときには符号２０３を用いる。
ＲＯＭ２０２は、ＣＰＵ２０１が実行するＯＳやプログラム，種々のデータ等を格納する記憶装置である。
【００２１】
ＲＡＭ２１１は、種々のデータやプログラムを一時的に格納する記憶領域であって、ＣＰＵ２０１がプログラムを実行する際に、データやプログラムを一時的に格納や展開をして用いる。又、このＲＡＭ２１１には、後述するデバイスドライバ仮想マシン３１やゲスト仮想マシン３０が仮想マシン間共有メモリ（図示省略）や各仮想メモリ（ｖＲＡＭ）に格納したデータ等が格納される。
【００２２】
ＣＰＵ２０１は、種々の制御や演算を行なう処理装置であり、ＲＯＭ２０２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。
また、本情報処理装置１ａにおいては、ハードウェアリソース２０上で仮想マシンモニタ（ハイパーバイザ）２１を実行することにより、１以上のゲスト仮想マシン３０（３０−１，３０−２，・・・）による仮想化システムを実現する。
【００２３】
仮想マシンモニタ２１は、情報処理装置１ａを仮想化し、複数のゲスト仮想マシン３０−１，３０−２やデバイスドライバ仮想マシン３１を生成することにより、複数の異なるＯＳを並列に実行できるようにするソフトウェア（仮想化ＯＳ）である。この仮想マシンモニタ２１は、ハードウェアリソース２０のＣＰＵ２０１により実行されることによりその機能を実現する。
【００２４】
この仮想マシンモニタ２１は、コンピュータのハードウェアのように振舞う仮想的なコンピュータである複数の仮想マシン（ＶＭ：Virtual Machine，バーチャルマシン）３０やデバイスドライバ仮想マシン３１をソフトウェアによって作り出す。そしてこれらの仮想マシン３０やデバイスドライバ仮想マシン３１上において、それぞれ様々な種類のＯＳ（ゲストＯＳ，管理ＯＳ）を稼動させることができる。
【００２５】
すなわち、仮想マシンモニタ２１は、計算機資源であるハードウェアリソース２０を複数の計算機資源としてハードウェア的に利用することを可能にする。
この仮想マシンモニタ２１としては、例えば、VMware，Xen，Oracle VM，Hyper-V，KVM，LPAR等を用いることができる。
以下、本実施形態においては、仮想マシンモニタ２１上で、デバイスドライバ仮想マシン３１と複数（図１に示す例においては２つ）のゲスト仮想マシン３０−１，３０−２が動作する例について示す。
【００２６】
ゲスト仮想マシン３０−Ａ，３０−Ａは、仮想的に設けられた互いに独立した計算機であって、それぞれゲストＯＳを稼動させて、種々の処理を行なう。なお、以下、ゲスト仮想マシン３０−Ａ上で稼動するＯＳをゲストＯＳ−Ａといい、ゲスト仮想マシン３０−Ｂ上で稼動するＯＳをゲストＯＳ−Ｂという場合がある。
なお、以下、ゲスト仮想マシン３０を示す符号としては、複数のゲスト仮想マシンのうち１つを特定する必要があるときには符号３０−Ａ，３０−Ａを用いるが、任意のゲスト仮想マシンを指すときには符号３０を用いる。
【００２７】
本実施形態においては、情報処理装置１ａは、ゲストＯＳ−ＡとゲストＯＳ−Ｂとの２つのゲストＯＳを実行し、必要に応じて、３Ｇデバイス２０３−１，無線ＬＡＮデバイス２０３−２，カメラデバイス２０３−３及びＳＤメモリデバイス２０３−４のいずかにアクセスして処理を行なう。
そして、図２に例示する本実施形態例においては、情報処理装置１ａにおいて、ゲストＯＳ−Ａは、３Ｇ，カメラ及びＳＤメモリを利用し、３Ｇ通信網を用いた通話もしくは通信機能を有している。又、ゲストＯＳ−Ｂは、無線ＬＡＮ，カメラ及びＳＤメモリを利用し、無線ＬＡＮ網を利用した構内ＩＰ電話機能などを有するものとする。
【００２８】
ゲストＯＳ−Ａ，Ｂは、それぞれ１以上のフロントエンド（Frontend）ドライバ３０１をそなえている。
フロントエンドドライバ３０１−１〜３０１−４は、それぞれデバイスドライバであって、ゲスト仮想マシン３０からデバイス２０３への各アクセスを制御する。これらのフロントエンドドライバ３０１−１〜３０１−４は、後述するデバイスドライバ仮想マシン３１の管理ＯＳにそなえられたバックエンド（Backend）ドライバ１０５−１〜１０５−４を介して各デバイス２０３にアクセスする。
【００２９】
図２に示す例においては、ゲスト仮想マシン３０−ＡのゲストＯＳ−Ａが、フロントエンドドライバ３０１−１，３０１−３，３０１−４をそなえている。又、ゲスト仮想マシン３０−ＢのゲストＯＳ−Ｂが、フロントエンドドライバ３０１−２，３０１−３，３０１−４をそなえている。
具体的には、フロントエンドドライバ３０１−１はバックエンドドライバ１０５−１を介して３Ｇデバイス２０３−１にアクセスし、フロントエンドドライバ３０１−２はバックエンドドライバ１０５−２を介して無線ＬＡＮデバイス２０３−２にアクセスする。同様に、フロントエンドドライバ３０１−３はバックエンドドライバ１０５−３を介してカメラデバイス２０３−３にアクセスし、フロントエンドドライバ３０１−４はバックエンドドライバ１０５−４を介してＳＤメモリデバイス２０３−４にアクセスする。
【００３０】
なお、図中、−１，−２，−３，−４のように、−（ハイフン）とともに示す文字を有する各符号は、同じ文字を有する各符号どうしの間に、それぞれ対応関係があることを示している。例えば、図２に示す例においては、フロントエンドドライバ３０１−１やバックエンドドライバ１０５−１は３Ｇデバイス２０３−１に対応する。同様に、フロントエンドドライバ３０１−２やバックエンドドライバ１０５−２は無線ＬＡＮデバイス２０３−２に、又、フロントエンドドライバ３０１−３やバックエンドドライバ１０５−３はカメラデバイス２０３−３にそれぞれ対応する。更に、フロントエンドドライバ３０１−４やバックエンドドライバ１０５−４はＳＤメモリデバイス２０３−４に対応する。以下、同様に、−１〜−４の文字を有する符号どうしは、互いに対応関係にある部分であることを示す。
【００３１】
また、以下、フロントエンドドライバを示す符号としては、複数のフロントエンドドライバのうち１つを特定する必要があるときには符号３０１−１〜３０１−４を用いるが、任意のフロントエンドドライバを指すときには符号３０１を用いる。同様に、バックエンドドライバを示す符号としては、複数のバックエンドドライバのうち１つを特定する必要があるときには符号１０５−１〜１０５−４を用いるが、任意のバックエンドドライバを指すときには符号１０５を用いる。
【００３２】
デバイスドライバ仮想マシン３１は、ゲスト仮想マシン３０−Ａ，３０−Ｂによる各デバイス２０３へのアクセス処理の少なくとも一部を代行する。
本実施形態にかかる仮想マシンシステムにおいては、ゲストＯＳを実行するゲスト仮想マシン３０の実際のデバイス２０３に対する入出力に関して、ゲスト仮想マシン３０とは別に実際のデバイスにアクセスするための仮想マシンであるデバイスドライバ仮想マシン３１をそなえる。
【００３３】
ゲスト仮想マシン３０は、このデバイスドライバ仮想マシン３１を仲介して実際のデバイス２０３にアクセスを行なうことができる。
ここで、デバイスドライバ仮想マシン３１は、デバイス２０３毎に各々独立した仮想マシンである場合もあり得るし、又、複数のデバイス２０３との入出力をまとめた仮想マシンである場合もあり得るし、更に、デバイスドライバ仮想マシン３１の機能を、管理用仮想マシンなど他の用途の仮想マシンに内在させる構成も取り得る。
【００３４】
いずれの構成においても、デバイスドライバ仮想マシン３１は、実際のデバイス２０３を駆動するためのデバイスドライバ１１２をその仮想マシンの中に有し、ゲスト仮想マシン３０からデバイス２０３に対する出力及びデバイス２０３からゲスト仮想マシン３０に対する入力を仲介する役割を行なう。
このデバイスドライバ仮想マシン３１は、図１に示すように、仮想マシン管理部（動作プロファイル情報管理部）１０１，タイマ割込み管理部１０４及びバックエンドドライバ１０５をそなえている。
【００３５】
タイマ割込み管理部１０４は、予め設定された一定間隔で割り込み信号（クロック信号，基準タイマクロック）を生成するものであり、この割込み信号をバックエンドドライバ１０５に入力する。本情報処理装置１ａにおいては、このタイマ割込み管理部１０４から割込み信号が入力されたタイミングでＣＰＵ２０１の割当の変更や、時間のカウント等が行なわれる。
【００３６】
バックエンドドライバ１０５は、デバイス２０３を制御するためのデバイスドライバであって、フロントエンドドライバ３０１からのデバイス２０３へのアクセスリクエストに応じて、対応するデバイス２０３に対するアクセス制御を行なう。
バックエンドドライバ１０５はデバイス２０３毎にそなえられる。図２に示す例においては、３Ｇバックエンドドライバ１０５−１，無線ＬＡＮバックエンドドライバ１０５−２，カメラバックエンドドライバ１０５−３及びＳＤメモリバックエンドドライバ１０５−４の４つのバックエンドドライバ１０５がそなえられている。
【００３７】
ここで、３Ｇバックエンドドライバ１０５−１は、フロントエンドドライバ３０１−１からのリクエストに応じて３Ｇデバイス２０３−１に対するアクセス制御を行なう。同様に、無線ＬＡＮバックエンドドライバ１０５−２は、フロントエンドドライバ３０１−２からのリクエストに応じて、無線ＬＡＮデバイス２０３−２に対するアクセス制御を行なう。又、カメラバックエンドドライバ１０５−３はフロントエンドドライバ３０１−３からのリクエストに応じて、カメラデバイス２０３−３に対するアクセス制御を行なう。更に、ＳＤメモリバックエンドドライバ１０５−４は、フロントエンドドライバ３０１−４からのリクエストに応じて、ＳＤメモリデバイス２０３−４に対するアクセス制御を行なう。
【００３８】
すなわち、情報処理装置１ａにおいては、デバイス２０３毎に、フロントエンドドライバ３０１とバックエンドドライバ１０５との組が存在する。
なお、バックエンドドライバ１０５は、図示しない仮想マシン間共有メモリや仮想マシン間イベント送信チャネル等により、フロントエンドドライバ３０１との通信を行なう。なお、これらの仮想マシン間共有メモリや仮想マシン間イベント送信チャネル等を用いたフロントエンドドライバ３０１との通信手法は既知の種々の手法を用いて実現することができ、その説明は省略する。
【００３９】
各バックエンドドライバ１０５は、図１に示すように、省電力管理部１１０，ゲスト入出力制御部１１１及びデバイスドライバ１１２をそなえている。
ゲスト入出力制御部１１１は、ゲストＯＳのフロントエンドドライバ３０１からの入出力要求をデバイス２０３に仲介する仲介処理を行なう。又、ゲスト入出力制御部１１１は、後述する省電力管理部１１０に対してゲストＯＳからデバイス２０３に対してアクセスが行なわれたことを通知するデバイスアクセス通知を行なう。
【００４０】
デバイスドライバ１１２は、実際にデバイス２０３を制御し動作させるドライバである。又、このデバイスドライバ１１２は、デバイス２０３との入出力だけでなく、デバイス２０３に対して電力状態遷移命令を発行する機能もそなえ、デバイス２０３を種々の段階の省電力動作モード（デバイスステート，動作モード）に移行させる。
図３は第１実施形態の一例としての情報処理装置におけるデバイスステートを例示する図である。この図３に示す例においては、Ｄ０〜Ｄ３の４段階のデバイスステート（動作モード）を示している。
【００４１】
ここで、デバイスステートＤ０（動作状態）は、そのデバイス２０３がフル稼働状態であり、省電力動作状態ではないことを示す。デバイスステートＤ１は、そのデバイス２０３が稼動しているが、フル稼働状態よりも低速なバスクロックで稼動している状態である。なお、このデバイスステートＤ１からはデバイスステートＤ０にすぐに復帰（移行）することができる。
【００４２】
デバイスステートＤ２（スタンバイ状態）は、そのデバイス２０３が稼動しているが、デバイスステートＤ０よりも低速なバスクロックで稼動しており、更に、デバイス２０３にそなえられた一部の機能が停止（オフ）している状態である。なお、このデバイスステートＤ２からはデバイスステートＤ１からほどではないが比較的高速にデバイスステートＤ０に復帰することが可能である。
【００４３】
デバイスステートＤ３（オフ状態）は、デバイス２０３においてバスクロック及びデバイス電源供給が停止している状態であり、デバイスステートＤ０に復帰するにはデバイスリセット等の処理が必要である。
そして、これらのデバイスステートＤ０〜Ｄ３のうち、デバイスステートＤ１〜Ｄ３が省電力状態であり、以下、これらのデバイスステートＤ１〜Ｄ３を特に省電力ステートという場合がある。なお、各デバイスステートでの消費電力量は以下の順となる。
【００４４】
Ｄ０＞Ｄ１＞Ｄ２＞Ｄ３
従って、各デバイスステートにおける省電力度合いは、以下の順となる。
Ｄ０＜Ｄ１＜Ｄ２＜Ｄ３
すなわち、省電力ステートＤ１〜Ｄ３においては、Ｄ１からＤ２、Ｄ３と進むほど省電力効果が大きくなるが、デバイスステートＤ０へ復帰する時間もかかるようになる。
【００４５】
そして、デバイスドライバ１１２は、デバイス２０３を上述したデバイスステートＤ００〜Ｄ３のいずれかの段階の動作モードに移行させる。
また、バックエンドドライバ１０５においては、上述したゲスト入出力制御部１１１及びデバイスドライバ１１２により、デバイス２０３との入出力が実現される。
仮想マシン管理部（動作プロファイル情報管理部）１０１は、各デバイス２０３を各省電力ステートへ遷移させる際の基準となる情報を管理するものであり、図４（ａ）に示すような省電力プロファイル（Profile）管理テーブルＴ１を管理する。
【００４６】
図４（ａ），（ｂ），（ｃ）は、第１実施形態の一例としての省電力プロファイル管理テーブルＴ１を説明するための図である。ここで図４（ａ）は省電力プロファイル管理テーブルＴ１を例示する図である。又、図４（ｂ）は、そのゲストＯＳ−Ａにかかるカメラデバイス２０３−３の各省電力ステートとインアクティビティ値との関係を例示する図である。更に、図４（ｃ）は、そのゲストＯＳ−Ｂにかかるカメラデバイス２０３−３の各省電力ステートとインアクティビティ値との関係を例示する図である。
【００４７】
省電力プロファイル管理テーブルＴ１は、図４（ａ）に示すように、各デバイス２０３についての各省電力ステートとインアクティビティ値との対応をゲストＯＳ毎に管理する。
ここで、インアクティビティ値とは、ゲストＯＳ（ゲスト仮想マシン３０）のデバイス２０３へのアクセスについて、デバイス２０３へアクセスが行なわれていない経過時間であり、ゲストＯＳ（ゲスト仮想マシン３０）のそのデバイス２０３に対する不活性度合いを表す。
【００４８】
このインアクティビティ値は、後述するインアクティビティ管理部１０６が、タイマ割込み管理部１０４によるタイマ割込みにより、ゲスト入出力制御部１１１からゲストＯＳとデバイスキ２０３との間に入出力がない期間を積算（計数）することにより求められる。
また、インアクティビティ値は、ゲストＯＳとデバイス２０３との間において入出力があると０にリセットされる。なお、ゲストＯＳとデバイス２０３との間において入出力があったことは、ゲスト入出力制御部１１１から通知される。
【００４９】
すなわち、このインアクティビティ値は、ゲスト仮想マシン３０（ゲストＯＳ）とデバイス２０３との間における非アクセス状態での経過時間（非アクセス時間）を表す。なお、インアクティビティ値には予め上限値が設定され、この上限値以上は増えることがない。
図４（ａ）〜（ｃ）に示す例においては、３Ｇデバイス２０３−１，無線ＬＡＮデバイス２０３−２，カメラデバイス２０３−３及びＳＤメモリデバイス２０３−４のそれぞれに対して、ゲストＯＳ−Ａ，Ｂのそれぞれにおける、省電力ステートＤ１〜Ｄ３へ移行するための基準値（上限値）としてのインアクティビティ値を対応付けて構成している。
【００５０】
図４（ｂ）に示すように、例えば、カメラデバイス２０３−３は、ゲストＯＳ−Ａについては、インアクティビティ値が０から１００まではデバイスステートＤ０であり、１００から２００までが省電力ステートＤ１となる。又、省電力ステート２００から１８００００までが省電力ステートＤ２である。なお、本実施形態においてはインアクティビティ値の上限値は１８００００であるものとする。
【００５１】
インアクティビティ値は、仮想マシンモニタや管理ＯＳにおいて一定間隔で呼び出されるタイマ割込み処理の中で加算が行なわれる。このインアクティビティ値の計数は０からスタートし、一定間隔毎に１ずつインクリメントすることにより行なう。例えば、１０ｍｓに１度処理が起床されるとして考えると、ゲストＯＳとデバイス２０３との間での入出力がなかった場合、インアクティビティ値は１秒間で１００貯まることになる。なお、この場合、インアクティビティ値の最大値（上限値）である１８００００は３０分に相当する。
【００５２】
そして、後述するバーチャルステート管理部１０７が、この省電力プロファイル管理テーブルＴ１を参照して、仮の省電力ステートの設定（変更）を行なう。
すなわち、この省電力プロファイル管理テーブルＴ１において、各省電力ステートに対応させて登録された各値（インアクティビティ値）は、その値を超過した場合にそれぞれの仮の省電力ステートを変更することを示す。
【００５３】
図４（ａ）〜（ｃ）に示す例において、ゲストＯＳ−Ａのカメラデバイス２０３−３では、インアクティビティ値が１００以下であればデバイスステートＤ０である。又、インアクティビティ値が１００より大きく２００未満であれば省電力ステートＤ１であり、インアクティビティ値が２００より大きいと省電力ステートＤ２である。
なお、インアクティビティ値は最大値１８００００以上大きくなることはないので、ゲストＯＳ−Ａに関しては、カメラデバイス２０３―３は省電力ステートＤ３にはならないことを表している。一方、ゲストＯＳ−Ｂに関しては、カメラデバイス２０３−３は、インアクティビティ値が１００以下であればデバイスステートＤ０であり、インアクティビティ値が１００より大きく２００以下であれば省電力ステートＤ１である。又、インアクティビティ値が２００より大きいと省電力ステートＤ２であり、又、インアクティビティ値が１０００より大きいと省電力ステートＤ３になることを表している。
【００５４】
すなわち、上述の如く、省電力プロファイル管理テーブルＴ１は、ゲストＯＳの各デバイス２０３に対するインアクティビティ値と遷移を許可する省電力状態を列挙したプロファイルであり、状態遷移の基準となるインアクティビティ値が登録されている。
すなわち、省電力プロファイル管理テーブルＴ１は、各々のゲスト仮想マシン３０がデバイス２０３をある一定の時間以上利用していない場合には、各々のゲスト仮想マシン３０はデバイス２０３をどの省電力ステートに遷移されることが可能であるかを記述したテーブルである。
【００５５】
そして、仮想マシン管理部１０１は、インアクティビティ値（非アクセス時間）とデバイス２０３の省電力ステート（動作モード情報）とを対応付けた省電力プロファイル管理テーブルＴ１（動作プロファイル情報）を管理する動作プロファイル情報管理部として機能する。
また、省電力プロファイル管理テーブルＴ１は、例えば、仮想マシン間共有メモリ等の記憶装置（記憶部）に格納される。又、この省電力プロファイル管理テーブルＴ１の格納場所は、適宜、変更してもよい。
【００５６】
省電力管理部１１０は、デバイス２０３の省電力動作モードを管理するものであり、図１に示すように、インアクティビティ（Inactivity）管理部（測定部）１０６，バーチャルステート（Virtual State）管理部（決定部）１０７及びリアルステート（Real State）管理部（決定部，遷移制御部）１０８をそなえている。
インアクティビティ管理部１０６は、図示しないタイマからのタイマ割込みを、ゲスト入出力制御部１１１からゲストＯＳとデバイス２０３間の入出力がない期間を計数することによりインアクティビティ値を求める。すなわち、インアクティビティ管理部１０６は、インアクティビティ値（非アクセス時間）を測定する測定部として機能する。
【００５７】
すなわち、デバイスドライバ仮想マシン３１は、実際のデバイス２０３とゲスト仮想マシン３０間の入出力から、デバイスが各々のゲスト仮想マシンからどれだけ使用されているか、前回使用されてからどれだけ時間が経過しているかを測定もしくは算出する。
なお、前述の如く、インアクティビティ値には予め上限値が設定され、この上限値以上は増えることがない。
【００５８】
また、インアクティビティ管理部１０６は、求めたインアクティビティ値をインアクティビティ管理テーブルＴ２により管理する。
図５は第１実施形態の一例としてのインアクティビティ管理テーブルＴ２の例を示す図である。インアクティビティ管理テーブルＴ２は、そのバックエンドドライバ１０５に対応するデバイス２０３について、インアクティビティ値をゲストＯＳ毎に対応付けて格納することにより構成されている。
【００５９】
インアクティビティ管理部１０６は、ゲストＯＳのデバイス２０３へのアクセスについて、デバイス２０３へアクセスが行なわれていない経過時間を、ゲストＯＳのそのデバイス２０３に対する不活性度合いであるインアクティビティ値として管理する。
また、インアクティビティ管理テーブルＴ２は、例えば、仮想マシン間共有メモリ上に格納される。又、このインアクティビティ管理テーブルＴ２の格納場所は、適宜、変更してもよい。
【００６０】
バーチャルステート管理部（決定部）１０７は、ゲストＯＳのデバイス２０３に対するインアクティビティ値に基づいて、省電力プロファイル管理テーブルＴ１を参照して、デバイス２０３が遷移可能な省電力ステートを仮のデバイスステート（動作モード）としてゲストＯＳ毎に管理する。
このバーチャルステート管理部１０７は、図６に示すような、バーチャルステート管理テーブルＴ３を管理する。
【００６１】
図６は第１実施形態の一例としてのバーチャルステート管理テーブルＴ３の例を示す図である。バーチャルステート管理テーブルＴ３は、そのバックエンドドライバ１０５に対応するデバイス２０３について、その遷移可能な省電力ステートをゲストＯＳ毎に対応付けて格納することにより構成されている。
バーチャルステート管理部１０７は、インアクティビティ管理部１０６によって算出されたインアクティビティ値に基づいて省電力プロファイル管理テーブルＴ１を参照し、対応するデバイス２０３について、インアクティビティ値に対応する省電力ステートを選択する。そしてバーチャルステート管理部１０７は、この選択した省電力ステートを仮のデバイスステートとしてバーチャルステート管理テーブルＴ３に格納する。
【００６２】
すなわち、バーチャルステート管理部１０７は、デバイス２０３を共有する複数の管理ＯＳ（ゲスト仮想マシン３０）のそれぞれに対して仮のデバイスステートを決定する。
また、このバーチャルステート管理テーブルＴ３は、例えば、仮想マシン間共有メモリ上に格納される。又、このバーチャルステート管理テーブルＴ３の格納場所は、適宜、変更してもよい。
【００６３】
リアルステート管理部（決定部、遷移制御部）１０８は、バーチャルステート管理テーブルＴ３に登録された、デバイス２０３にかかる複数のゲストＯＳに対応する各仮の省電力ステートの中から、一の省電力ステートを選択し、デバイスドライバ１１２を介して、そのデバイス２０３の省電力状態を遷移させる。
このリアルステート管理部１０８は、バーチャルステート管理テーブルＴ３に登録された、デバイス２０３に対する複数のゲストＯＳにかかる各仮のデバイスステート（仮の動作モード）の中から、最も省電力度合いが小さい仮のデバイスステートを、実際のデバイス２０３のデバイスステート（デバイス選択モード）として決定する。
【００６４】
すなわち、前述したバーチャルステート管理部１０７とこのリアルステート管理部１０８とが、インアクティビティ管理部１０６によって測定されたインアクティビティ値に基づいて、省電力プロファイル管理テーブルＴ１を参照して、動作モードを決定する決定部として機能する。
デバイスドライバ仮想マシン３１においては、省電力プロファイル管理テーブルＴ１を参照することで、各々のゲスト仮想マシン３０にとって、現在デバイス２０３をどの省電力ステートに遷移可能であるかを算出することができる。そして、各々のゲスト仮想マシン３０の遷移可能な省電力ステートを比較して、全てのゲスト仮想マシン３０にとって遷移可能な省電力ステートを選択して、デバイス２０３の省電力ステートを変更する。
【００６５】
図４（ａ）〜（ｃ）に示した例において、例えば、カメラデバイス２０３−３については、ゲストＯＳ−ＡおよびゲストＯＳ−Ｂのそれぞれのインアクティビティ値が１０００以上（すなわち１０秒以上入出力がない）の場合について考える。この場合、リアルステート管理部１０８は、バーチャルステート管理テーブルＴ３を参照して、ゲストＯＳ−Ａの仮の省電力ステートＤ２とゲストＯＳ−Ｂの省電力ステートＤ３を比較した結果、省電力度合いの小さい省電力ステートＤ２を、カメラデバイス２０３−３の省電力ステートとして選択する。
【００６６】
また、リアルステート管理部１０８は、その対応するデバイス２０３を選択した省電力ステートに遷移させる。すなわち、リアルステート管理部１０８は、デバイス２０３を、決定された動作モードに遷移させる遷移制御部としても機能する。
上述の如く構成された、第１実施形態の一例としての情報処理装置１ａにおける電力管理処理を、図７に示すフローチャート（ステップＡ１０〜Ａ１２０）に従って説明する。なお、本例においては、複数のデバイス２０３のうちカメラデバイス２０３−３の省電力管理を行なう例について説明する。
【００６７】
なお、ゲスト仮想マシン３０やデバイスドライバ仮想マシン３１は、仮想マシンモニタ２１により既に実行されているものとする（ゲスト仮想マシン実現ステップ，デバイスドライバ仮想マシン実現ステップ）。
タイマ割込み管理部１０４の制御により割り込み信号が入力されると、省電力管理部１１０は、バックエンドドライバ１０５−３に接続中のゲストＯＳの一覧を取得する（ステップＡ１０）。バックエンドドライバ１０５−３に接続中のゲストＯＳの一覧は、例えば、ゲスト入出力制御部１１１によって取得することができる。
【００６８】
先ず、取得されたゲストＯＳの一覧のうち、最初のゲストＯＳが選択される（ステップＡ２０）。省電力管理部１１０は、この選択されたゲストＯＳに関して、テーブル（インアクティビティ管理テーブルＴ２及びバーチャルステート管理テーブルＴ３）の更新を開始する（ステップＡ３０）。
インアクティビティ管理部１０６は、前回テーブル更新を行なってから今回のテーブル更新のまでの間に、ゲストＯＳとデバイス２０３−５との間で入出力が行なわれたか否かを確認する（ステップＡ４０）。ゲストＯＳとデバイス２０３−５との間で入出力が行なわれていない場合には（ステップＡ４０のＮＯルート参照）、インアクティビティ管理部１０６は、次に、インアクティビティ管理テーブルＴ２におけるそのゲストＯＳにかかるインアクティビティ値が上限値（１８００００）となっているかを確認する（ステップＡ５０）。インアクティビティ値が上限値に達していない場合には（ステップＡ５０のＮＯルート参照）、インアクティビティ管理部１０６はインアクティビティ値をインクリメント（＋１）する（ステップＡ６０）。
【００６９】
次に、バーチャルステート管理部１０７が、ステップＡ６０において求められたインアクティビティ値に基づいて省電力プロファイル管理テーブルＴ１を参照して、そのインアクティビティ値に対応する省電力ステートを取得する。バーチャルステート管理部１０７はこの取得した省電力ステートを仮のデバイスステートとして、バーチャルステート管理テーブルＴ３に、対象とするゲストＯＳに対応付けて登録する。これによりバーチャルステート管理テーブルＴ３の更新が行なわれる（ステップＡ７０）。
【００７０】
一方、前回テーブル更新を行なってから今回のテーブル更新までの間に、ゲストＯＳとデバイス２０３−５との間で入出力が行なわれている場合には（ステップＡ４０のＹＥＳルート参照）、インアクティビティ管理部１０６はインアクティビティ値を０にして（ステップＡ１００）、ステップＡ７０に移行する。
また、インアクティビティ値が上限値に達している場合にも（ステップＡ５０のＹＥＳルート参照）、ステップＡ７０に移行する。
【００７１】
省電力管理部１１０は、対象とするゲストＯＳについてのテーブル更新が終了したかを確認し（ステップＡ８０）、そのテーブル更新が終了していない場合には、ステップＡ３０に戻る。
なお、図７に示す例においては、これらのステップＡ３０〜Ａ８０において、インアクティビティ値が求められる。すなわち、ステップＡ３０〜Ａ８０が、ゲスト仮想マシン３０とデバイス２０３との間における非アクセス状態での経過時間を非アクセス時間として測定する測定ステップに相当する。
【００７２】
対象とするゲストＯＳについてのテーブル更新が終了した場合には（ステップＡ８０のＹＥＳルート参照）、次に、省電力管理部１１０は、ステップＡ１０において取得された一覧中の全てのゲストＯＳについてテーブル更新が終了したかを確認する（ステップＡ９０）。
ここで、全てのゲストＯＳについてのテーブル更新が終了していない場合には（ステップＡ９０のＮＯルート参照）、ゲストＯＳ一覧における次のゲストＯＳを新たな対象ゲストＯＳとして変更した後（ステップＡ１１０）、ステップＡ３０に戻る。
【００７３】
全てのゲストＯＳについてのテーブル更新が終了した場合には（ステップＡ９０のＹＥＳルート参照）、リアルステート管理部１０８が、バーチャルステート管理テーブルＴ３に登録された、各ゲストＯＳについての仮のデバイスステートの内、省電力度合いが最小のものを実デバイスステートとして決定する（ステップＡ１２０：決定ステップ）。
このようにして実デバイスステートが決定されると、リアルステート管理部１０８が、デバイスドライバ１１２を介して、そのデバイス２０３−４に対して、決定された実デバイスステートを設定する（遷移ステップ）。
【００７４】
このように、第１実施形態の一例としての情報処理装置１ａによれば、ゲストＯＳの省電力機能に依ることなく、デバイスドライバ仮想マシン３１が、予めゲスト仮想マシン３０に合わせて設定された省電力プロファイル管理テーブルＴ１に従って適切にデバイスの省電力管理を行なうことができる。
また、複数のゲスト仮想マシン３０が同一のデバイス２０３を共有して使用している場合も、全てのゲスト仮想マシン３０が必要とするデバイス２０３の応答速度を満たす範囲で、省電力ステートを調停することができる。すなわち、複数のゲスト仮想マシン３０が同一のデバイス２０３を共有して使用している場合においても、全てのゲスト仮想マシン３０のデバイス２０３へのアクセス要求を満たした状態でデバイス２０３の動作モードを遷移させることができる。
【００７５】
さらに、ゲストＯＳの開発においても、ハードウェア端末（情報処理装置１ａ）ごとに個別に省電力機構を実装する必要がなく、デバイスドライバ仮想マシン３１（仮想化システム）が独立して等価的に省電力制御を行なうことができる。これにより、全く同一のゲストＯＳを複数の異なるハードウェア端末に対して提供することも可能になり、開発コストの削減も可能となる。また、省電力制御の実装は主に管理ＯＳ（デバイスドライバドメイン）内で完結しており、デバイスドライバドメインのモジュール単位で、他ハードウェア端末に移植することも容易である。
【００７６】
（Ｂ）第２実施形態
図８は第２実施形態の一例としての情報処理装置１ｂの機能構成を模式的に示す図である。
本第２実施形態の情報処理装置１ｂも、第１実施形態の情報処理装置１ａと同様に、例えば、携帯電話機やＰＤＡ，パーソナルコンピュータのような情報処理装置であり、本第２実施形態においても、情報処理装置１ｂとして携帯電話機を用いた例について説明する。なお、以下、情報処理装置１ｂを単に端末という場合がある。
【００７７】
なお、図中、既述の符号と同一の符号は同一もしくは略同一の部分を示しているので、その説明は省略する。
本第２実施形態の情報処理装置１ｂは、第１実施形態の情報処理装置１ａのハードウェアリソース２０において検知スイッチ２０４をそなえるとともに、デバイスドライバ４０をそなえている。更に、デバイスドライバ仮想マシン３１において、ユーザ状態変更監視通知部１０２をそなえる。なお、その他の部分は第１実施形態の情報処理装置１ａと同様に構成されている。
【００７８】
検知スイッチ（検知部）２０４は、本情報処理装置１ｂの使用状態を検知し、その使用状態をＯＮもしくはＯＦＦの検知信号として出力するスイッチである。例えば、本情報処理装置１ｂがヒンジを介してディスプレイ部とキーボード部とを開閉可能に構成された折り畳み式携帯電話である場合に、その開状態／閉状態を検知する開閉検知スイッチを用いることができる。すなわち、検知スイッチ２０４は情報処理装置１ｂの開状態／閉状態の状態変更を検出し、その検出結果をユーザ状態変更監視通知部１０２に通知する。
【００７９】
以下、本情報処理装置１ｂがヒンジを介してディスプレイ部とキーボード部とを開いた状態（開状態）を端末開という場合があり、ヒンジを介してディスプレイ部とキーボード部とを閉じた状態（閉状態）を端末閉という場合がある。
なお、この検知スイッチ２０４は開閉検知スイッチに限定されるものではなく、種々変形して実現することができる。例えば、本情報処理装置１ａのディスプレイのバックライトの点灯／消灯状態を検知するバックライト検知スイッチであってもよい。すなわち、情報処理装置１ａの使用時にディスプレイのバックライトが点灯され、非使用状態には消灯されることをバックライト検知スイッチにより検知してもよい。
【００８０】
そして、この検知スイッチ２０４から出力される検知信号は、デバイスドライバ４０を介して後述するデバイスドライバ仮想マシン３１のユーザ状態変更監視通知部１０２に入力される。
ユーザ状態変更監視通知部１０２は、ユーザ状態の変更を監視し、変更を省電力管理部１１０に通知する。そして、ユーザ状態変更監視通知部１０２は、バーチャルステート管理部１０７にバーチャルステート管理テーブルＴ３の再計算を行なわせたり、リアルステート管理部１０８に対して、実デバイスステートの再設定を行なわせる。
【００８１】
具体的には、ユーザ状態変更監視通知部１０２は、例えば、検知スイッチ２０４からデバイスドライバ４０を介して、情報処理装置１ｂの開状態／閉状態の状態変更が通知されると、その旨を省電力管理部１１０に通知する。
また、本第２実施形態の一例としての情報処理装置１ｂにおいては、仮想マシン管理部１０１は、省電力プロファイル管理テーブルＴ１において、情報処理装置１ｂの開状態／閉状態のそれぞれの状態での省電力プロファイルを設定されている。
【００８２】
図９（ａ），（ｂ），（ｃ）は第２実施形態の一例としての情報処理装置１ｂの省電力プロファイル管理テーブルＴ１を示す図である。ここで図９（ａ）は省電力プロファイル管理テーブルＴ１を例示する図である。又、図９（ｂ）は、そのゲストＯＳ−Ａにかかるカメラデバイス２０３−３の各省電力ステートとインアクティビティ値との関係を例示する図である。更に、図９（ｃ）は、そのゲストＯＳ−Ｂにかかるカメラデバイス２０３−３の各省電力ステートとインアクティビティ値との関係を例示する図である。
【００８３】
この図９（ａ）に示す省電力プロファイル管理テーブルＴ１には、カメラデバイス２０３−３に関して、端末開の状態と端末閉との２つの情報（ユーザ状態）が登録されている。
カメラデバイス２０３−３に関して、端末開の場合及び端末閉の場合のそれぞれにおいて省電力プロファイルを設定できる場合を考える。例えば、カメラデバイス２０３−３は、端末が開いている場合は端末の画面及び端末の内側の操作ボタンによって操作可能であり、端末が閉じている場合は端末外側の小画面にと操作ボタンにより限定的な操作が可能であるとする。
【００８４】
ここで、ゲストＯＳ−Ａは、カメラデバイス２０３−３の端末が開いている場合の操作のみしか実装されておらず、端末が閉じた場合はカメラデバイスを操作する手段を持たないとする。このような場合においては、図９（ａ），（ｂ）に示すように、端末が閉じた時は、常に省電力ステートＤ３にデバイス状態を遷移させてもよい。
すなわち、本第２実施形態の一例としての情報処理装置１ｂにおいては、ユーザ状態の変更を検出して、省電力プロファイルを変更することができるのである。
【００８５】
なお、ゲストＯＳ−Ｂは、端末開の状態においても端末閉の状態においても、カメラデバイス２０３−３の操作手段を実装しており、よって、図９（ａ）に示すように端末の開閉状態に関わらず同一の省電力プロファイルを持つものとする。
ここで、端末開の状態であった場合、カメラデバイス２０３−３について、ゲストＯＳ−ＡおよびゲストＯＳ−Ｂのそれぞれのインアクティビティ値が１０００以上（すなわち１０秒以上入出力がない）場合について考える。
【００８６】
リアルステート管理部１０８は、ゲストＯＳ−Ａの仮の省電力ステートＤ２とゲストＯＳ−Ｂの省電力ステートＤ３とを比較した結果、省電力ステートＤ２をカメラデバイス２０３−３の実省電力ステートとして設定されることになる。ここで、この状態から端末を閉じると、検知スイッチ２０４により端末閉の状態が検知され、デバイスドライバ４０を介してユーザ状態変更監視通知部１０２に通知される。
【００８７】
そして、ユーザ状態変更監視通知部１０２がその旨を省電力管理部１１０に通知し、バーチャルステート管理部１０７によりゲストＯＳ−Ａの仮の省電力ステートがＤ３に変更される。リアルステート管理部１０８は、この省電力ステートＤ３をゲストＯＳ−Ｂの省電力ステートＤ３と比較し、その結果、Ｄ３がカメラデバイス２０３−３の実省電力ステートとして再設定されることになる。
【００８８】
また、ユーザ状態変更監視通知部１０２は、予め、端末状態変更により影響を受けるバックエンドドライバ１０５を把握している。例えば、端末状態変更として検知スイッチ２０４による端末閉／端末開の状態変更に対しては、カメラデバイス２０３−３にかかるバックエンドドライバ１０５−３が相当する。又、影響を受けるバックエンドドライバ１０５が複数ある場合には、例えば、これらの複数のバックエンドドライバ１０５を登録した一覧表等の形式で管理する。
【００８９】
上述の如く構成された、第２実施形態の一例としての情報処理装置１ｂにおける端末状態の変更に伴う、省電力ステートの再計算及び再設定の遷移処理を、図１０に示すフローチャート（ステップＢ１０〜Ｂ５０）に従って説明する。
ユーザが情報処理装置１ｂを操作して端末状態を変更すると、検知スイッチ２０４がその状態変更を検出し（ステップＢ１０）、デバイスドライバ４０を介してユーザ状態変更監視通知部１０２に通知される。
【００９０】
ユーザ状態変更監視通知部１０２は、この端末状態変更に関して、省電力プロファイル管理テーブルＴ１を参照するバックエンドドライバ１０５の一覧を検索する（ステップＢ２０）。そして、ユーザ状態変更監視通知部１０２は、一覧に登録されたバックエンドドライバ１０５の省電力管理部１１０に対して、端末状態変更の通知を開始する（ステップＢ３０）。
【００９１】
端末状態変更の通知を受けたバックエンドドライバ１０５においては、省電力管理部１１０（インアクティビティ管理部１０６）によるインアクティビティ値の更新や、デバイス状態の更新が行なわれる（ステップＢ４０）。
その後、一覧に登録されている全てのバックエンドドライバ１０５に対して変更通知を行なったかを確認する（ステップＢ５０）。この確認の結果、全てのバックエンドドライバ１０５に対して変更通知を行なっていない場合には（ステップＢ５０のＮＯルート参照）、ステップＢ３０に戻る。
【００９２】
また、全てのバックエンドドライバ１０５に対して変更通知を行なった場合には（ステップＢ５０のＹＥＳルート参照）、処理を終了する。
このように、第２実施形態の一例としての情報処理装置１ｂによれば、上述した第１実施形態と同様の作用効果を得ることができる他、予め省電力プロファイル管理テーブルＴ１に端末状態の変更に応じた省電力プロファイルを登録しておくことにより、端末状態の変化に応じた省電力制御を行なうことができる。
【００９３】
なお、本第２実施形態においては、端末状態の変更として、端末開／端末閉の状態変化を検知スイッチ２０４によって検知する例について説明したが、これに限定されるものではない。例えば、情報処理装置１ｂにそなえられた特定の機能が使用されたことを状態変化として検知してもよく、又、図示しないバッテリーの残量を監視し、このバッテリーの残量が所定値以下となった場合を状態変化として検知してもよい。又、これら状態変化の検知は、ハードウェア手段もしくはソフトウェア手段のいずれを用いて検知してもよい。すなわち、他のデバイスドライバからの通知により状態変化の検知を行なってもよく、又、いずれかのゲストＯＳから状態変化の通知を行なってもよく、種々変形して実施することができる。
【００９４】
例えば、ノートＰＣや携帯電話等のようにユーザが直接操作する機器には、ユーザが端末を閉じていて操作を行なっていない、ＡＣアダプタに接続されている、されていない、などのように、端末の利用状態に応じて、省電力のポリシーを変更したい場合がある。
本情報処理装置１ｂによれば、ユーザの利用状態に応じて、各々のデバイス２０３の省電力プロファイルを複数設定可能であり、利用状態変更の通知に応じて、複数のプロファイルを切り替え、省電力モードを再設定することが可能となる。
【００９５】
また、例えば、ゲスト仮想マシン３０内において、特定のアプリケーションが起動しているか否か等の利用状態に応じて、省電力のポリシーを変更したい場合がある。
本情報処理装置１ｂによれば、ゲスト仮想マシン３０内において、特定のアプリケーションが起動中であるか否かなどの情報を検出し、そのゲスト仮想マシン３０から省電力プロファイルの切り替えをデバイスドライバ仮想マシン３１に通知することで、省電力プロファイルを切り替えや省電力モードを再設定することが可能となる。
【００９６】
（Ｃ）第３実施形態
図１１は第３実施形態の一例としての情報処理装置１ｃの機能構成を模式的に示す図である。
本第３実施形態の情報処理装置１ｃも、第１実施形態の情報処理装置１ａと同様に、例えば、携帯電話機やＰＤＡ，パーソナルコンピュータのような情報処理装置であり、本第３実施形態においても、情報処理装置１ｃとして携帯電話機を用いた例について説明する。なお、以下、情報処理装置１ｃを単に端末という場合がある。
【００９７】
また、図中、既述の符号と同一の符号は同一もしくは略同一の部分を示しているので、その説明は省略する。
例えば、携帯電話端末においては、端末が基地局の電波の圏内にあるか否かを検知する、あるいは検知した際に通話や電子メール、ＳＭＳ（ショートメッセージングサービス）等の着信の有無を確認するために、定期的に端末と基地局間とで通信を行なっている。
【００９８】
そして、この端末と基地局との間の通信の時間間隔は、例えば、端末をユーザが使用中で、端末と基地局が通信状態にある場合と、端末をユーザが使用していない場合とで変更することが可能である。
なお、ユーザが端末を使用中である場合としては、例えば、通話中である場合や、インターネットなどのネットワークサービスを利用中である場合が相当する。又、端末をユーザが使用していない場合としては、例えば、端末を閉じている場合が相当する。
【００９９】
この端末と基地局との間の定期的な通信は、通常は、インアクティビティ値の計算と同様に、タイマ割込み管理部１０４により一定間隔で呼び出されるタイマ割り込み処理から起床される。
そして、本第３実施形態においては、タイマ割込み管理部１０４によるタイマ割込みクロックの変更に応じて、デバイス２０３へのアクセスの行なわれなかった時間の積算方法を変更する。
【０１００】
本第３実施形態の情報処理装置１ｃにおいては、第２実施形態の情報処理装置１ｂのデバイスドライバ仮想マシン３１において、タイマクロック変更通知部１０３をそなえ、その他の部分は第１実施形態の情報処理装置１ｂとほぼ同様に構成されている。
本第３実施形態の情報処理装置１ｃにおいて、タイマ割込み管理部（クロック変更部）１０４は、タイマクロック（基準タイマクロック）間隔を変更する機能（クロック変更機能）をそなえており、例えば、ユーザが端末を使用していないと判断した場合に、このクロック変更機能が、省電力クロックモードとして、上述したタイマの呼び出し間隔を長くし、処理の起床される時間間隔を延ばす。
【０１０１】
例えば、通常クロック時（通常クロックモード）に１０ｍｓ間隔であった場合に、省電力クロック時（省電力クロックモード）には２ｓ間隔にする。
このように、ユーザが端末を使用していないと判断した場合に、通常クロックモードから省電力クロックモードに移行し、タイマの呼び出し間隔を長くして、処理の起床される時間間隔を延ばすことにより、例えばＣＰＵのアイドル時間を延ばすことにつながり、より効果的に省電力を実現することができる。
【０１０２】
なお、この基準タイマクロック間隔を変更する機能は、タイマ割込み管理部１０４のかわりに、タイマクロック機構を設定するためのバックエンドドライバ１０５により実現してもよく、種々変形して実施することができる。又、上述したタイマクロックの変更処理は、管理ＯＳの指示により行なわれる。
なお、ユーザの端末の使用状態の検出や、タイマクロックの変更処理は、管理ＯＳの指示により管理ＯＳ自身あるいはタイマクロック機構を設定するためのバックエンドドライバ１０５内により行なわれる。すなわち、これらの管理ＯＳもしくはバックエンドドライバ１０５が、情報処理装置の基準タイマクロック間隔を変更するクロック変更部として機能する。
【０１０３】
タイマクロック変更通知部１０３は、タイマ割込み管理部１０４によりタイマクロックが変更されたことを検知し、バックエンドドライバ１０５の省電力管理部１１０に通知する。すなわち、このタイマクロック変更通知部１０３が、基準タイマクロック間隔が変更されたことを検出するクロック変更検出部として機能する。
管理ＯＳがタイマクロックの変更を行なう場合、このタイマ割り込み処理から起床されたタイミングで、省電力管理部１１０を持つ各々のバックエンドドライバ１０５に対して、タイマクロック変更通知部１０３からタイマクロックの変更を通知する。    
【０１０４】
この通知の方法は、例えば、各バックエンドドライバ１０５の省電力管理部１１０から参照可能なフラグとして、クロック状態を表すクロックフラグを設け、このフラグ内容をタイマクロック変更通知部１０３が書き換えることにより実現することができる。
クロックフラグとしては、例えば、０：通常クロック時（１０ｍｓ間隔），１：省電力クロック時（２ｓ間隔）とする。
【０１０５】
本第３実施形態の情報処理装置１ｃにおいては、デバイスドライバ仮想マシン３１は、タイマ割込み管理部１０４によって変更されたクロックに合わせて、各々のゲスト仮想マシン３０からデバイス２０３へのアクセスについて、アクセスの行なわれなかった時間を積算する際の計算方法を変更することができる。
具体的には、省電力管理部１１０のインアクティビティ管理部１０６が、インアクティビティ値の測定方法を変更する機能をそなえている。すなわち、インアクティビティ管理部１０６はインアクティビティ値の測定方法を変更する測定方法変更部として機能する。そして、インアクティビティ管理部１０６は、タイマクロック変更通知部１０３により基準タイマクロック間隔の変更が検出されると、インアクティビティ値の測定方法を変更する。
【０１０６】
インアクティビティ管理部１０６は、省電力クロックモードとなり、タイマクロック変更通知部１０３からタイマクロック間隔の変更が通知されると、インアクティビティ値の算出に際して１回でインクリメントする値を変更する。具体的には、タイマクロック間隔が通常クロック時からｘ倍に変更された場合に、インアクティビティ値の積算時にインクリメントする値をｘ倍に変更する。
【０１０７】
例えば、タイマクロック間隔が１０ｍｓの場合（通常クロック時）に１ずつインクリメントしていた状態から、タイマクロック間隔が２ｓに変更された場合（省電力クロック時）には、インアクティビティ管理部１０６は、一回の呼び出しでインアクティビティ値を２００ずつインクリメントするよう測定方法の変更を行なう。
すなわち、インアクティビティ管理部１０６は、タイマクロック間隔に応じて、インアクティビティ値の積算時にインクリメントする量（インクリメント量）を変更することにより、省電力管理部１１０による実デバイスステートの選択もしくは設定に対する、省電力クロックモードへ移行により生じる影響を排除する。
【０１０８】
このインアクティビティ値のインクリメント量は、例えば、マシン間共有メモリの所定領域に格納（設定）され、インアクティビティ管理部１０６は、このインクリメント量を参照して、インアクティビティ値のインクリメントを行なう。
上述の如く構成された第３実施形態の一例としての情報処理装置１ｃにおけるタイマクロックの変更処理を伴なう電力管理手法を、図１２に示すフローチャート（ステップＣ１０〜Ｃ２２０）に従って説明する。
【０１０９】
なお、ゲスト仮想マシン３０やデバイスドライバ仮想マシン３１は、仮想マシンモニタ２１により既に実行されているものとする（ゲスト仮想マシン実現ステップ，デバイスドライバ仮想マシン実現ステップ）。
例えば、端末閉状態の検出等により本情報処理装置１ｃをユーザが使用していないことが検出された場合に（検出ステップ）、未使用タイマ割込み管理部１０４の制御により割り込み信号が入力され、管理ＯＳがタイマクロックの変更処理を開始する（ステップＣ１０）。先ず、管理ＯＳは、省電力管理部１１０を有するバックエンドドライバ１０５の一覧を取得する（ステップＣ２０）。バックエンドドライバ１０５の取得は、例えば、管理ＯＳから各バックエンドドライバ１０５に対して要求信号を出力し、この要求信号に対して、省電力管理部１１０を有するバックエンドドライバ１０５だけが特定の応答信号を送信することにより、管理ＯＳにおいて一覧を取得することができる。更に、管理ＯＳは、各バックエンドドライバ１０５に接続中のゲストＯＳの一覧を取得する（ステップＣ３０）。バックエンドドライバ１０５に接続中のゲストＯＳの一覧は、例えば、ゲスト入出力制御部１１１によって取得することができる。
【０１１０】
管理ＯＳにおいて、タイマクロック変更通知部１０３が、取得したバックエンドドライバ１０５に対応する各クロックフラグを変更する（ステップＣ４０）。
その後、省電力管理部１１０が、各バックエンドドライバ１０５のインアクティビティ値の更新を開始する（ステップＣ５０）。
バックエンドドライバ１０５において、省電力管理部１１０は、バックエンドドライバ１０５に接続中のゲストＯＳの一覧を取得する（ステップＣ６０）。バックエンドドライバ１０５に接続中のゲストＯＳの一覧は、例えば、ゲスト入出力制御部１１１によって取得することができる。
【０１１１】
先ず、取得されたゲストＯＳの一覧のうち、最初のゲストＯＳが選択される（ステップＣ７０）。省電力管理部１１０は、この選択されたゲストＯＳに関して、テーブル（インアクティビティ管理テーブルＴ２及びバーチャルステート管理テーブルＴ３）の更新を開始する（ステップＣ８０）。
インアクティビティ管理部１０６は、前回テーブル更新を行なってから今回のテーブル更新のまでの間に、ゲストＯＳとデバイス２０３との間で入出力が行なわれたか否かを確認する（ステップＣ９０）。ゲストＯＳとデバイス２０３との間で入出力が行なわれていない場合には（ステップＣ９０のＮＯルート参照）、インアクティビティ管理部１０６は、次に、インアクティビティ管理テーブルＴ２におけるそのゲストＯＳにかかるインアクティビティ値が上限値（１８００００）となっているかを確認する（ステップＣ１００）。インアクティビティ値が上限値に達していない場合には（ステップＣ１００のＮＯルート参照）、インアクティビティ管理部１０６は、マシン間共有メモリ等に予め設定されているインクリメント量でインアクティビティ値をインクリメントする（ステップＣ１１０）。
【０１１２】
次に、バーチャルステート管理部１０７が、ステップＡ６０において求められたインアクティビティ値に基づいて省電力プロファイル管理テーブルＴ１を参照して、そのインアクティビティ値に対応する省電力ステートを取得する。バーチャルステート管理部１０７はこの取得した省電力ステートを仮のデバイスステートとして、バーチャルステート管理テーブルＴ３に、対象とするゲストＯＳに対応付けて登録する。これによりバーチャルステート管理テーブルＴ３の更新が行なわれる（ステップＣ１２０）。
【０１１３】
一方、前回テーブル更新を行なってから今回のテーブル更新までの間に、ゲストＯＳとデバイス２０３との間で入出力が行なわれている場合には（ステップＣ９０のＹＥＳルート参照）、インアクティビティ管理部１０６はインアクティビティ値を０にして（ステップＣ１５０）、ステップＣ１２０に移行する。
また、インアクティビティ値が上限値に達している場合にも（ステップＣ１００のＹＥＳルート参照）、ステップＣ１２０に移行する。
【０１１４】
省電力管理部１１０は、対象とするゲストＯＳについてのテーブル更新が終了したかを確認し（ステップＣ１３０）、そのテーブル更新が終了していない場合には、ステップＣ８０に戻る。
なお、図１２に示す例においては、これらのステップＣ８０〜Ｃ１３０において、インアクティビティ値が求められる。すなわち、ステップＣ８０〜Ｃ１３０が、ゲスト仮想マシン３０とデバイス２０３との間における非アクセス状態での経過時間を非アクセス時間として測定する測定ステップに相当する。
【０１１５】
対象とするゲストＯＳについてのテーブル更新が終了した場合には（ステップＣ１３０のＹＥＳルート参照）、次に、省電力管理部１１０は、ステップＣ６０において取得された一覧中の全てのゲストＯＳについてテーブル更新が終了したかを確認する（ステップＣ１４０）。
ここで、全てのゲストＯＳについてのテーブル更新が終了していない場合には（ステップＣ１４０のＮＯルート参照）、ゲストＯＳ一覧における次のゲストＯＳを新たな対象ゲストＯＳとして変更した後（ステップＣ１６０）、ステップＣ８０に戻る。
【０１１６】
全てのゲストＯＳについてのテーブル更新が終了した場合には（ステップＣ１４０のＹＥＳルート参照）、リアルステート管理部１０８が、バーチャルステート管理テーブルＴ３に登録された、各ゲストＯＳについての仮のデバイスステートの内、省電力度合いが最小のものを実デバイスステートとして決定する（ステップＣ１７０）。
このようにして実デバイスステートが決定されると、リアルステート管理部１０８が、デバイスドライバ１１２を介して、そのデバイス２０３に対して、決定された実デバイスステートを設定する。
【０１１７】
省電力管理部１１０においては、上述の如くインアクティビティ値及び省電力ステートを更新した後、タイマのクロックフラグが変更されたか否かを確認する（ステップＣ１８０：クロック変更検出ステップ）、クロックフラグが変更されていた場合には（ステップＣ１８０のＹＥＳルート参照）、マシン間共有メモリ等に設定されているインアクティビティ値のインクリメント量を変更する（ステップＣ１９０：測定方法変更ステップ）。
【０１１８】
そして、管理ＯＳは、全てのバックエンドドライバ１０５についてインアクティビティ値の更新が完了したかを確認する（ステップＣ２００）。全てのバックエンドドライバ１０５についてインアクティビティ値の更新が行なわれた場合には（ステップＣ２００のＹＥＳルート参照）、管理ＯＳはタイマクロックを変更し（ステップＣ２１０：クロック変更ステップ）、処理を終了する。
【０１１９】
タイマクロックが変更された場合、次回の呼び出し以降、インアクティビティ値のインクリメント量が変更されるのである。
第３実施形態の一例としての情報処理装置１ｃによれば、上述した第２実施形態と同様の作用効果を得ることができる。
さらに、クロックフラグが変更されていた場合に、それにインアクティビティ値のインクリメント量を変更する。これにより、次回の更新処理の呼び出し以降は、再設定されたインクリメント量を用いてインアクティビティ値が更新される。そして、変更されたクロックに合わせて、各々のゲスト仮想マシン３０からそのデバイス２０３へのアクセスについて、アクセスの行なわれなかった時間を積算する際の計算方法を変更することができる。
【０１２０】
また、一般に、仮想マシンシステムにおける仮想マシン３０へのＣＰＵ２０１の割り当ての変更や、時間のカウントなどは、ハードウェアに定期的なタイマ割り込みなどを設定し、そのタイマ割り込みのタイミングで行なわれる。そして、省電力要求の厳しい携帯電話機などの機器では、例えば、端末を閉じた状態でユーザの操作が行なわれない間は、タイマ割り込みのクロックを伸ばすことにより、ＣＰＵの電力消費量の節減を図る場合がある。
【０１２１】
本情報処理装置１ｃによれば、仮想マシンシステムにおけるタイマ割り込みクロックの変更をデバイスドライバ仮想マシン３１に通知する。そして、デバイスドライバ仮想マシン３１が、この変更されたクロックに合わせて、各々のゲスト仮想マシン３０からデバイスへ２０３のアクセスについて、アクセスの行なわれなかった時間を積算する際の計算方法を変更することができる。
【０１２２】
（Ｄ）その他
上述した各実施形態においては、情報処理装置１ａ，１ｂ，１ｃのＣＰＵ２０１が、制御プログラムを実行することにより、上述した、デバイスドライバ仮想マシン３１，ゲスト仮想マシン３０，仮想マシン管理部１０１，ユーザ状態変更監視通知部１０２，タイマクロック変更通知部１０３，タイマ割込み管理部１０４，省電力管理部１１０（インアクティビティ管理部１０６，バーチャルステート管理部１０７，リアルステート管理部１０８），ゲスト入出力制御部１１１及びデバイスドライバ１１２として機能する。
【０１２３】
なお、これらのデバイスドライバ仮想マシン３１，ゲスト仮想マシン３０，仮想マシン管理部１０１，ユーザ状態変更監視通知部１０２，タイマクロック変更通知部１０３，タイマ割込み管理部１０４，省電力管理部１１０（インアクティビティ管理部１０６，バーチャルステート管理部１０７，リアルステート管理部１０８），ゲスト入出力制御部１１１及びデバイスドライバ１１２としての機能を実現するためのプログラム（制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【０１２４】
デバイスドライバ仮想マシン３１，ゲスト仮想マシン３０，仮想マシン管理部１０１，ユーザ状態変更監視通知部１０２，タイマクロック変更通知部１０３，タイマ割込み管理部１０４，省電力管理部１１０（インアクティビティ管理部１０６，バーチャルステート管理部１０７，リアルステート管理部１０８），ゲスト入出力制御部１１１及びデバイスドライバ１１２としての機能を実現する際には、内部記憶装置（上記各実施形態ではＲＡＭ２１１やＲＯＭ２０２）に格納されたプログラムがコンピュータのマイクロプロセッサ（上記各実施形態ではＣＰＵ２０１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【０１２５】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置１ａ，１ｂ，１ｃがコンピュータとしての機能を有しているのである。
【０１２６】
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した各実施形態においては、デバイス２０３として３Ｇデバイス２０３−１，無線ＬＡＮデバイス２０３−２，カメラデバイス２０３−３及びＳＤメモリデバイス２０３−４をそなえた例を示しているが、これに限定されるものではない。すなわち、これら以外のデバイスをそなえてもよく、又、これらの少なくともいずれかをそなえなくともよく、適宜変更して実施することが出来る。
【０１２７】
同様に、上述した各実施形態においては、ハードウェアリソース２０において、ＣＰＵ２０１，ＲＡＭ２１１，ＲＯＭ２０２及び検知スイッチ２０４がそれぞれ一つずつそなえられた例を示しているが、これに限定されるものではない。すなわち、ＣＰＵ２０１，ＲＡＭ２１１，ＲＯＭ２０２及び検知スイッチ２０４の少なくともいずれかを２以上そなえてもよく、各実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０１２８】
また、上記第２実施形態においては、端末の利用状態の変更例として端末の開状態と閉状態について示しているが、これに限定されるものではない。例えば、バッテリーの残量が所定の閾値以下となることや、所定のアプリケーションが実行されたこと等を利用状態の変更として用いてもよく、種々変形して実施することができる。
また、上記第２実施形態においては、カメラデバイス２０３−３の省電力モードへ遷移を例として示したが、これに限定されるものではなく、カメラデバイス２０３−３以外のデバイスについて行なうこともできる。
【０１２９】
さらに、上述した実施形態においては、デバイスドライバ仮想マシン３１において管理ＯＳを実行し、この管理ＯＳにバックエンドドライバが内包されている例を示したが、これに限定されるものではなく種々変形して実施することができる。例えば、仮想マシンモニタ２１と管理ＯＳを一体として構成してもよく、又、管理ＯＳ内のバックエンドドライバ１０５のそれぞれを、各々が独立したデバイスドライバ仮想マシン上で実行する構成にしてもよい。
【０１３０】
また、上述した開示により本実施形態を当業者によって実施や製造を行なうことが可能である。
（Ｅ）付記
（付記１）
デバイスを備えた情報処理装置であって、
該デバイスに対して処理を行なう複数のゲスト仮想マシンと、
該複数のゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンと、
該デバイスドライバ仮想マシンを介して該デバイスにアクセスしている該複数のゲスト仮想マシンのそれぞれ関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定する測定部と、
該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を記憶する記憶部と、
測定された該非アクセス時間に基づいて該動作プロファイル情報を参照して、動作モードを決定する決定部と、
該デバイスを、該動作モードに遷移させる遷移制御部と、
を備えることを特徴とする、情報処理装置。
【０１３１】
（付記２）
該決定部が、
該デバイスを共有する該複数のゲスト仮想マシンのそれぞれに対する動作モードのうち、最も省電力度合いが小さい動作モードを選択して決定することを特徴とする、付記１記載の情報処理装置。
【０１３２】
（付記３）
該決定部は、該デバイスを共有する複数の該ゲスト仮想マシンのそれぞれに対して、各ゲスト仮想マシンが遷移可能な動作モードをそれぞれ仮の動作モードとして決定し、これらの仮の動作モードのうち最も省電力度合いが小さい仮の動作モードを、デバイス選択モードとして決定し、
前記遷移制御部は、該デバイスを、決定された該デバイス選択モードに遷移させる、
ことを特徴とする、付記２記載の情報処理装置。
【０１３３】
（付記４）
該情報処理装置の状態変更を検出する検出部をそなえるとともに、
該記憶部が、当該情報処理装置の状態に応じた該動作プロファイル情報をそなえ、
該決定部が、該検出部により当該情報処理装置の状態変更が検出された場合に、当該情報処理装置の状態に応じた該動作プロファイル情報を参照して、該動作モードを決定することを特徴とする、付記１〜３のいずれか１項に記載の情報処理装置。
【０１３４】
（付記５）
該ゲスト仮想マシンが、該検出部をそなえることを特徴とする、付記４記載の情報処理装置。
（付記６）
当該情報処理装置の基準タイマクロック間隔を変更するクロック変更部と、
該クロック変更部により該基準タイマクロック間隔が変更されたことを検出するクロック変更検出部と、
該測定部による該非アクセス時間の測定方法を変更する測定方法変更部とをそなえ、
該クロック変更検出部により該基準タイマクロック間隔の変更が検出されると、該測定方法変更部が該測定部による該非アクセス時間の測定方法を変更することを特徴とする、付記１〜５のいずれか１項に記載の情報処理装置。
【０１３５】
（付記７）
デバイスを備えた情報処理装置の制御方法であって、
該デバイスに対して処理を行なう複数のゲスト仮想マシンを実現するゲスト仮想マシン実現ステップと、
該ゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンを実現するデバイスドライバ仮想マシン実現ステップと、
該デバイスドライバ仮想マシンを介して該デバイスにアクセスしている該複数のゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうち一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定する測定ステップと、
該測定ステップにおいて測定された、該非アクセス時間に基づいて、該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を参照して、動作モードを決定する決定ステップと、
該デバイスを、決定された該動作モードに遷移させる遷移制御ステップとをそなえることを特徴とする、制御方法。
【０１３６】
（付記８）
該決定ステップにおいて、
該デバイスを共有する該複数のゲスト仮想マシンのそれぞれに対する動作モードのうち、最も省電力度合いが小さい動作モードを選択して決定することを特徴とする、付記７記載の制御方法。
【０１３７】
（付記９）
該決定ステップにおいて、
該デバイスを共有する複数の該ゲスト仮想マシンのそれぞれに対して、各ゲスト仮想マシンが遷移可能な動作モードをそれぞれ仮の動作モードとして決定し、これらの仮の動作モードのうち最も省電力度合いが小さい仮の動作モードを、デバイス選択モードとして決定し、
前記遷移制御ステップにおいて、該デバイスを、決定された該デバイス選択モードに遷移させる、
ことを特徴とする、付記８記載の制御方法。
【０１３８】
（付記１０）
該情報処理装置の状態変更を検出する検出ステップをそなえるとともに、
該決定ステップにおいて、該検出ステップにおいて当該情報処理装置の状態変更が検出された場合に、当該情報処理装置の状態に応じた該動作プロファイル情報を参照して、該動作モードを決定することを特徴とする、付記７〜９のいずれか１項に記載の制御方法。
【０１３９】
（付記１１）
当該情報処理装置の基準タイマクロック間隔を変更するクロック変更ステップと、
該クロック変更ステップにおいて該基準タイマクロック間隔が変更されたことを検出するクロック変更検出ステップと、
該測定ステップにおける該非アクセス時間の測定方法を変更する測定方法変更ステップとをそなえ、
該クロック変更検出ステップにおいて該基準タイマクロック間隔の変更が検出されると、該測定方法変更ステップにおいて該測定ステップにおける該非アクセス時間の測定方法を変更することを特徴とする、付記７〜１０のいずれか１項に記載の制御方法。
【０１４０】
（付記１２）
デバイスの制御機能をコンピュータに実行させるための制御プログラムであって、
該デバイスに対して処理を行なう複数のゲスト仮想マシンと、
該ゲスト仮想マシンによる該デバイスへのアクセス処理を代行するデバイスドライバ仮想マシンと、
該デバイスドライバ仮想マシンを介して該デバイスにアクセスしている複数の該ゲスト仮想マシンのそれぞれに関して、該複数のゲスト仮想マシンのうちの一つと該デバイスとの間における非アクセス状態での経過時間を非アクセス時間として測定し、
測定した該非アクセス時間に基づいて、該非アクセス時間と該デバイスの動作モードを表す動作モード情報とを対応付けた動作プロファイル情報を参照して、該動作モードを決定し、
該デバイスを、決定した該動作モードに遷移させる、
処理を該コンピュータに実行させることを特徴とする、制御プログラム。
【０１４１】
（付記１３）
該決定部として該コンピュータを機能させる際に、
該デバイスを共有する該複数のゲスト仮想マシンのそれぞれに対する動作モードのうち、最も省電力度合いが小さい動作モードを選択して決定させるように、該コンピュータを機能させることを特徴とする、付記１２記載の制御プログラム。
【０１４２】
（付記１４）
該決定部として該コンピュータを機能させる際に、
該デバイスを共有する該複数のゲスト仮想マシンのそれぞれに対して、各ゲスト仮想マシンが遷移可能な動作モードをそれぞれ仮の動作モードとして決定し、これらの仮の動作モードのうち最も省電力度合いが小さい仮の動作モードを、デバイス選択モードとして決定し、
前記遷移制御部は、該デバイスを、決定された該デバイス選択モードに遷移させるように、該コンピュータを機能させることを特徴とする、付記１３記載の制御プログラム。
【０１４３】
（付記１５）
該情報処理装置の状態変更を検出する検出部として、該コンピュータを機能させるとともに、
該決定部として該コンピュータを機能させる際に、該検出部により当該情報処理装置の状態変更が検出された場合に、当該情報処理装置の状態に応じた該動作プロファイル情報を参照して、該動作モードを決定させるように、該コンピュータを機能させることを特徴とする、付記１２〜１４のいずれか１項に記載の制御プログラム。
【０１４４】
（付記１６）
当該情報処理装置の基準タイマクロック間隔を変更するクロック変更部と、
該クロック変更部により該基準タイマクロック間隔が変更されたことを検出するクロック変更検出部と、
該測定部による該非アクセス時間の測定方法を変更する測定方法変更部として、該コンピュータを機能させるとともに、
該クロック変更検出部により該基準タイマクロック間隔の変更が検出されると、該測定方法変更部が該測定部による該非アクセス時間の測定方法を変更させるように、該コンピュータを機能させることを特徴とする、付記１２〜１５のいずれか１項に記載の制御プログラム。
【符号の説明】
【０１４５】
１ａ，１ｂ，１ｃ    情報処理装置
２０    ハードウェアリソース
２１    仮想マシンモニタ
３０，３０−Ａ，３０−Ｂ    ゲスト仮想マシン
１０１    仮想マシン管理部
１０２    ユーザ状態変更監視通知部
１０３    タイマクロック変更通知部
１０４    タイマ割込み管理部
１０６    インアクティビティ管理部
１０７    バーチャルステート管理部
１０８    リアルステート管理部
１１０    省電力管理部
１１１    ゲスト入出力制御部
１１２    デバイスドライバ
２０１    ＣＰＵ
２０２    ＲＯＭ
２０３，２０３−１〜２０３−４    デバイス  
２０４    検知スイッチ
２１１    ＲＡＭ
３０１，３０１−１〜３０１−４    フロントエンドドライバ
Ｔ１    省電力プロファイル管理テーブル（動作プロファイル情報）
Ｔ２    インアクティビティ管理テーブル
Ｔ３    バーチャルステート管理テーブル
【図１】
2012018515.tif 000003
【図２】
2012018515.tif 000004
【図３】
2012018515.tif 000005
【図４】
2012018515.tif 000006
【図５】
2012018515.tif 000007
【図６】
2012018515.tif 000008
【図７】
2012018515.tif 000009
【図８】
2012018515.tif 000010
【図９】
2012018515.tif 000011
【図１０】
2012018515.tif 000012
【図１１】
2012018515.tif 000013
【図１２】
2012018515.tif 000014