(57)【特許請求の範囲】
【請求項１】
仮想マシン電力管理機能を含むコンピュータデバイスであって、
当該コンピュータデバイスでのゲストオペレーティングシステムを有する仮想マシンの実行を管理し、前記ゲストオペレーティングシステムに１つ以上の命令を実行させる少なくとも１つのイベントを検出する仮想マシンモニタと、
前記仮想マシンモニタと結合され、前記仮想マシンがアイドル状態にあると決定し、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、前記少なくとも１つのイベントの検出に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすスマート仮想マシン電力マネージャと
を有し、
前記スマート仮想マシン電力マネージャは、当該コンピュータデバイスのスケジューラへのリクエストに基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、
前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも１つのプロセスを外すものであるコンピュータデバイス。
【請求項２】
当該コンピュータデバイスは、ポータブル電子機器である、
請求項１に記載のコンピュータデバイス。
【請求項３】
前記スマート仮想マシン電力マネージャは、所定のインターバルの間のネットワークパケットの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、
前記少なくとも１つのイベントは、ネットワーク上でのパケットの受信を含み、
当該コンピュータデバイスは、
前記仮想マシンモニタと結合され、前記ネットワーク上で受信される前記パケットを処理する受信器
を更に有する、請求項１又は２に記載のコンピュータデバイス。
【請求項４】
前記スマート仮想マシン電力マネージャは、他の所定のインターバルの間のボイスコールの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、
前記少なくとも１つのイベントは、前記ボイスコールの受信を含み、
前記受信器は、前記受信されたボイスコールを処理する、
請求項３に記載のコンピュータデバイス。
【請求項５】
前記スマート仮想マシン電力マネージャは、ユーザインタラクションの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、
前記少なくとも１つのイベントは、前記ユーザインタラクションの受信を含み、
当該コンピュータデバイスは、
前記仮想マシンモニタと結合され、前記ユーザインタラクションの受信を検出するユーザインターフェイス
を更に有する、請求項１乃至４のうちいずれか一項に記載のコンピュータデバイス。
【請求項６】
ポータブル電子機器に、
前記ポータブル電子機器で実行される仮想マシンがアイドル状態にあると決定させ、
前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、
前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも１つの命令を実行させる少なくとも１つの入力を当該ポータブル電子機器が受け取ったことを決定させ、
前記少なくとも１つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こさせる、
コンピュータプログラムであって、
前記コンピュータプログラムは更に、前記ポータブル電子機器に、
前記ポータブル電子機器のスケジューラへのリクエストに基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、
前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも１つのプロセスを外すものであるコンピュータプログラム。
【請求項７】
前記ポータブル電子機器に更に、
前記仮想マシンを生成させ、
前記生成された仮想マシンにおいてゲストオペレーティングシステムを実行させる、
請求項６に記載のコンピュータプログラム。
【請求項８】
前記仮想マシンが前記アイドル状態にあるとの決定は、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定期間の欠如の決定を含む、
請求項６又は７に記載のコンピュータプログラム。
【請求項９】
請求項６乃至８のうちいずれか一項に記載のコンピュータプログラムを記憶しているコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ処理の技術分野に概して関係があり、特に、スマート仮想マシン電力管理により仮想マシンを実行するよう動作するコンピュータデバイスに関係がある。
【背景技術】
【０００２】
本願で与えられている背景説明は、本開示の背景を一般的に示すことを目的とする。現在示されている発明者の研究は、本背景欄で記載されている限りにおいて、さもなければ出願時に先行技術と見なされ得ない本明細書の態様とともに、本開示に対する先行技術として明示的にも暗示的にも認められない。本願で特段示されない限りは、本項目で記載されているアプローチは、本開示における特許請求の範囲に対する先行技術ではなく、それらが本項目に含まれることをもって先行技術であるものと認められない。
【０００３】
コンピュータデバイスは、現実のコンピュータデバイスをエミュレートする仮想マシンを実行するよう構成されてよい。仮想マシンによるエミュレーションは、現実のコンピュータデバイスのアーキテクチャ、モデル、及び同様のものに基づき動作し、従って、現実のコンピュータデバイスと同様である仮想マシン内でのアプリケーションの実行を可能にする。然るに、仮想マシンは、アプリケーションのためのプラットフォームを提供するゲストオペレーティングシステムの実行を容易にすることができる。
【０００４】
ゲストオペレーティングシステムは、アプリケーションが仮想マシン上でアクティブでない場合でさえ、機能を実行するようコンピューティング資源を依然として消費する。例えば、ゲストオペレーティングシステムは、命令を実行するためにプロセッササイクルを必要としてよい。命令の実行は、ファーストイン（first  in）、ファーストアウト（first  out）又はラウンドロビン（round  robin）のような従来のポリシーに従ってよい。電力消費が懸案事項である現実世界のシナリオでは、そのようなポリシーは、仮想マシンを実行するコンピュータマシンのユーザにとってアクセス可能でないことある。
【図面の簡単な説明】
【０００５】
本発明の実施形態は、一例として、制限なしに、添付の図面の図において表されている。図面において、同じ参照符号は同様の要素を示す。本開示における“１つ”の実施形態への言及は、必ずしも同じ実施形態に対するものではなく、それらは少なくとも１つを意味し得る点が留意されるべきである。
【図１】様々な実施形態に従って、コンピュータデバイスで動作する仮想マシンの電力消費を管理する仮想マシン電力管理機能を含むコンピュータデバイスを表すブロック図である。
【図２】様々な実施形態に従って、仮想マシンがアイドル状態へ移行することを止めるデータを無線により受信及び送信する通信モジュールを表すブロック図である。
【図３】様々な実施形態に従って、ポータブル電子機器における仮想マシンによる電力消費を管理する仮想マシン電力管理機能を含むポータブル電子機器を表すブロック図である。
【図４】様々な実施形態に従って、スマート仮想マシン電力マネージャを含むシステムを表すブロック図である。
【図５】様々な実施形態に従って、スマート仮想マシン電力マネージャを含むシステムの他の実施形態を表すブロック図である。
【図６】様々な実施形態に従って、コンピュータデバイスにおける仮想マシンの電力消費を管理する方法を表すフロー図である。
【図７】様々な実施形態に従って、コンピュータデバイスにおける仮想マシンの電力消費を管理する方法の他の実施形態を表すフロー図である。
【発明を実施するための形態】
【０００６】
以下の詳細な説明では、本願の一部を形成する添付の図面が参照される。同じ参照符号は全体を通して同じ部分を示し、実施され得る実施形態が実例として示される。他の実施形態が利用可能であり、構造的又は論理的な変更は、本開示の適用範囲から逸脱することなしに行われ得る点が理解されるべきである。従って、以下の詳細な説明は、限定の意味で解釈されるべきではなく、実施形態の適用範囲は、添付の特許請求の範囲及びそれらの均等によって定義される。
【０００７】
様々な動作は、請求される対象を理解するのに最も有用である様態において、複数の別個のアクション又は動作として順に記載されてよい。なお、記載の順序は、それら動作が必然的に順序に依存することを暗示するように解釈されるべきではない。特に、それらの動作は、提示の順序において実行されなくてよい。記載されている動作は、記載されている実施形態とは異なる順序で実施されてよい。様々な付加的な動作が実行されてよく、且つ／あるいは、記載されている動作は、更なる実施形態では省略されてよい。
【０００８】
本開示のために、「Ａ又はＢ」及び「Ａ及び／又はＢ」との言い回しは、（Ａ）、（Ｂ）、又は（Ａ及びＢ）を意味する。本開示のために、「Ａ、Ｂ、及び／又はＣ」との言い回しは、（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）、又は（Ａ、Ｂ、及びＣ）を意味する。
【０００９】
本明細書は、「（１つの）実施形態において」又は「（複数の）実施形態において」との表現を使用することがある。これらの表現は、同じ又は異なった実施形態の１つ以上に夫々言及してよい。更に、本開示の実施形態に対して使用される語「有する（comprising）」、「含む（including）」、「有する（having）」、及び同様の語は同義である。
【００１０】
本願で使用されるように、語「モジュール」及び／又は「ロジック」は、１つ以上のソフトウェア又はファームウェアを実行する特定用途向け集積回路（ＡＳＩＣ；Application  Specific  Integrated  Circuit）、電子回路、プロセッサ（共有、専用、又はグループ）、及び／又はメモリ（共有、専用、又はグループ）、組み合わせ論理回路、且つ／あるいは、記載されている機能を提供する他の適切なハードウェアコンポーネントに言及し、又はその部分であり、又はそれを含んでよい。
【００１１】
本願で記載されるように、コンピュータデバイスは、仮想マシンを実行するよう構成されてよい。様々な実施形態において、コンピュータデバイスは、ポータブル電子機器のような、相当に制限された資源（例えば、画面サイズ、バッテリ電源、及び同様のもの）を含む種類のものであってよい。コンピュータデバイスは、仮想マシンモニタ又はハイパーバイザ（hypervisor）のような、仮想マシンを管理する１つ以上のコンポーネントを含んでよい。コンピュータデバイスの資源を節約するよう、コンピュータデバイスは仮想マシン電力管理機能を含んでよい。仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンを“フリーズ（freeze）”すること、すなわち、仮想マシンによって消費されるプロセッササイクルの低減を引き起こすこと、を可能にしてよい。これに対して、仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンを“アンフリーズ（unfreeze）”すること、すなわち、仮想マシンによって消費されるプロセッササイクルの増大を引き起こすこと、を可能にしてよい。
【００１２】
様々な実施形態において、仮想マシン電力管理機能は、仮想マシンの状態に作用する１つ以上のイベントを条件としてよい。一実施形態において、コンピュータデバイスは、仮想マシンがフォアグラウンド（foreground）状態にもはやない場合に、仮想マシンをフリーズしてよい。例えば、コンピュータデバイスは、ユーザからの入力、又はコンピュータデバイスのホストオペレーティングシステムからのイベントのような、仮想マシンをコンピュータデバイスでフォアグラウンド状態からバックグラウンド（background）状態へ移行させるイベントを検出してよい。仮想マシンがフォアグラウンド状態にもはやない場合に、仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンをフリーズすることを可能にしてよい。他のイベントが仮想マシンをバックグラウンド状態からフォアグラウンド状態へ移行させるならば、仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンをアンフリーズすることを可能にしてよい。
【００１３】
いくつかの実施形態に従って、コンピュータデバイスは、仮想マシンがアイドル状態にある場合に、仮想マシンをフリーズしてよい。例えば、コンピュータデバイスは、仮想マシンとの検出されるユーザインタラクションの欠如、仮想マシンのためのデータパケットの受信の欠如、又は仮想マシンのためのボイスコールの受信の欠如のような、１つ以上のイベントの欠如により、仮想マシンがアイドル状態にあると決定してよい。仮想マシンに関連する少なくとも１つのイベントに応答して、コンピュータデバイスは仮想マシンをアンフリーズしてよく、それにより、仮想マシンは、イベントを扱う１つ以上のプロセスを実行してよい。例えば、仮想マシンに向けられたネットワークパケット又はユーザインタラクションはコンピュータデバイスによって検出されてよく、これに対して、コンピュータデバイスは仮想マシンをアンフリーズしてよく、それにより、仮想マシンは、ネットワークパケットを処理すること、ユーザインタラクションに応答すること、又は同様のことを行ってよい。
【００１４】
最初に図１から始めると、ブロック図は、様々な実施形態に従って、コンピュータデバイスで動作する仮想マシンによる電力消費を管理する仮想マシン電力管理機能を含むコンピュータデバイス１００を示す。様々な実施形態において、コンピュータデバイス１００は、本開示の仮想マシン電力管理機能を除いて、ネットブック、タブレットコンピュータ、手持ち式コンピュータデバイス、手持ち式ウェブ対応機器、ゲーム機、携帯電話機、スマートフォン、電子ブックリーダー、パーソナルデジタルアシスタント、又は同様のもののような、仮想マシンを操作及び管理するよう構成された如何なるタイプのポータブルコンピュータデバイスであってもよい。
【００１５】
コンピュータデバイス１００は、電源１０５、メインメモリ１１０、ストレージ１２０、プロセッサ１１８、ユーザインターフェイス１２２、ディスプレイ１２４、及び通信モジュール１３０を含んでよいが、それらに限られない。特に、メモリ１１０は、以下でより十分に記載されるように、仮想マシン１１５による電力消費を管理して、コンピュータデバイス１００の電力消費を削減するよう構成されるスマート仮想マシン電力マネージャ１１１を含んでよい。それらのコンポーネントは、バス１１９を通じて通信上結合されてよい。バス１１９は、コンピュータデバイス１００内でデータを転送するよう構成された如何なるサブシステムであってもよい。バス１１９は、複数のコンピュータバスとともに、コンピュータデバイス１００内でデータを転送するよう構成された追加回路を含んでよい。
【００１６】
他のコンピュータデバイス（図示せず。）とデータをやり取りするよう、コンピュータデバイス１００は通信モジュール１３０を含んでよい。通信モジュール１３０は、外部のコンピュータデバイスからネットワーク（図示せず。）にわたってデータを受け入れて、コンピュータデバイス１００によって処理されるようにしてよい。通信モジュール１３０は、パブリック若しくはプライベートネットワーク、種々のタイプのネットワークの組み合わせ、ローカルエリアネットワーク（local  area  network）（“ＬＡＮ”）、インターネットのようなワイドエリアネットワーク（wide  area  network）（“ＷＡＮ”）、パーソナルエリアネットワーク（personal  area  network）（“ＰＡＮ”）、ピア・ツー・ピアネットワーク、無線セルラーネットワーク（例えば、セルラーデータネットワーク）、公衆交換電話網（public  switched  telephone  network）（“ＰＳＴＮ”）、又はそれらの組み合わせのような複数のネットワーク上で通信するよう構成されてよい。よって、通信モジュール１３０は、データ（例えば、ネットワークパケット）及び／又はボイスコール（例えば、アナログボイスデータ）を通信するよう構成されてよい。通信モジュール１３０は、ハードウェア、ソフトウェア、又は両者の組み合わせにおいて実装されてよく、例えば、ネットワークカード、ネットワークアクセスコントローラ、及び／又は他のネットワークインターフェイスコントローラのようなコンポーネントを含んでよい。通信モジュール１３０は、コンピュータデバイス１００のための命令を実行するプロセッサ１１８と通信上結合されている。一実施形態において、プロセッサ１１８は、通信モジュール１３０のための命令のいくつか又は全てを実行する。
【００１７】
データを受信する追加手段として、コンピュータデバイス１００は、ユーザからの入力を受けるユーザインターフェイス１２２を含んでよい。ユーザインターフェイス１２２は、種々の実施形態に従って、ユーザが様々な手段を通じてコンピュータデバイス１００と対話することを可能にしてよい。例えば、ユーザインターフェイス１２２は、グラフィカルユーザインターフェイスとしてディスプレイ１２４上で又はコマンドラインインターフェイスを通じてユーザに提示されてよい。ユーザ入力を受けるよう、ユーザインターフェイス１２２は、ハードウェア、ソフトウェア、又は両者の組み合わせにおいて実装されてよく、ユーザ入力に適した１つ以上のハードウェアデバイス（例えば、キーボード、マウス、タッチスクリーン、又はジェスチャ認識）を含んでよく、あるいは、それと通信上結合されてよい。更に、プロセッサ１１８は、ユーザインターフェイス１２２のための命令のいくつか又は全てを実行してよい。
【００１８】
プロセッサ１１８は、メインメモリ１１０からの命令のような、命令を実行するのに適した如何なるプロセッサであってもよい。然るに、プロセッサ１１８は、例えば、中央演算処理装置（central  processing  unit）（“ＣＰＵ”）、マイクロプロセッサ、又は他の同様のプロセッサであってよい。いくつかの実施形態において、プロセッサ１１８は、専用プロセッサ（例えば、グラフィクス処理ユニット）、ネットワークプロセッサ、又はコンピュータデバイス１００の動作を実行するのに適したあらゆるプロセッサのような、複数のプロセッサを含む。様々な実施形態において、プロセッサ１１８は複数のプロセッサを含んでよい。一実施形態において、プロセッサ１１８は、複数のＣＰＵ（例えば、コア）を備えたマルチコアプロセッサであってよい。
【００１９】
プロセッサ１１８にはメインメモリ１１０が結合されている。メインメモリ１１０は、短期及び長期の両方の記憶を提供してよく、実際上、いくつかのユニット（プロセッサ１１８に位置するユニットを含む。）に分けられてよい。メインメモリ１１０は、静的ランダムアクセスメモリ（static  random  access  memory）（“ＳＲＡＭ”）及び／又は動的ランダムアクセスメモリ（dynamic  random  access  memory）（“ＤＲＡＭ”）のように揮発性であってよく、コンピュータにより読み出し可能な命令、データ構造、ソフトウェアアプリケーション、及びコンピュータデバイス１００のための他のデータの記憶を（少なくとも一時的に）提供してよい。そのようなデータはストレージ１２０からロードされてよい。メインメモリ１１０は、プロセッサ１１８に位置するキャッシュのような、キャッシュメモリも含んでよい。メインメモリ１１０は、プロセッサ１１８によって実行されるべき要素１１１〜１１６に関連した命令、すなわち、仮想マシン電力管理機能を提供する上記のスマート仮想マシン電力マネージャ１１１、仮想マシン１１５を管理する仮想マシンモニタ（virtual  machine  monitor）（“ＶＭＭ”）１１２、ホストオペレーティングシステム１１４、仮想マシン１１５、ゲストオペレーティングシステム１１６を含んでよいが、それらに限られない。
【００２０】
様々な実施形態において、ホストオペレーティングシステム１１４は、スマート仮想マシン電力マネージャ１１１、仮想マシンモニタ１１２、仮想マシン１１５、及び／又はゲストオペレーティングシステム１１６によって提供される命令のような、命令の実行を開始するよう構成されてよい。特に、ホストオペレーティングシステム１１４は、スマート仮想マシン電力マネージャ１１１，仮想マシンモニタ１１２、及び／又は仮想マシン１１５を実行するためのプラットフォームとなるよう構成されてよい。ホストオペレーティングシステム１１４は、スレッディング（threading）、資源管理、データ記憶制御、及び他の同様の機能性を含め、コンピュータデバイス１００のコンポーネントにわたって他の動作を実行するよう構成されてよい。様々な実施形態において、ホストオペレーティングシステム１１４及び／又はＶＭＭ１１２は、コンピュータデバイス１００に関連する様々な電力状態を管理する回路を含んでよいオペレーティングシステム電力管理（operating  system  power  management）（“ＯＳＰＭ”）を含み、且つ／あるいは、それと通信上結合されてよい。
【００２１】
ＶＭＭ１１２は、ハイパーバイザとして実装されてもよく、仮想マシンを生成、管理、実行、及び／又は終了するよう動作してよい。様々な実施形態において、ＶＭＭ１１２は、ネイティブ（native）、アンホスト（unhosted）、及び／又はベアメタル（bare  metal）としても知られるＴｙｐｅ１であってよい。そのような実施形態では、ＶＭＭ１１２は、コンピュータデバイス１００のハードウェア（例えば、メインメモリ１１０及びプロセッサ１１８）において直接に実行されてよい。然るに、ＶＭＭ１１２は、仮想マシン１１５及び／又はゲストオペレーティングシステム１１６を管理しながらそのようなハードウェアを制御するよう動作してよい。一実施形態において、ホストオペレーティングシステム１１４は、サービスオペレーティングシステム、ドライバドメイン、又は特権（privileged）仮想マシンであってよい。例えば、このとき、ホストオペレーティングシステム１１４はＶＭＭ１１２で実行される。他の実施形態に従って、ホストオペレーティングシステム１１４の動作及び機能性は、コンピュータデバイス１００のハードウェアにおいて直接に実行されるＴｙｐｅ１ハイパーバイザで見られるように、ＶＭＭ１１２と一体化されてよい。他の実施形態では、ＶＭＭ１１２は、ホスト（hosted）としても知られるＴｙｐｅ２であってよい。Ｔｙｐｅ２の実施形態では、ＶＭＭ１１２は、ホストオペレーティングシステム１１４によって実行されてよい（例えば、ＶＭＭ１１２は、ホストオペレーティングシステム１１４に含まれるか、あるいは、それと通信上結合されてよい。）。図１で表されるように、ＶＭＭ１１２は、プロセッサ１１８によって実行されるメインメモリ１１０内の命令であってよい。なお、ＶＭＭ１１２は、他の実施形態ではファームウェア及び／又はハードウェアであってよい。
【００２２】
ＶＭＭ１１２は、例えば、ゲストオペレーティングシステム１１６によって消費される資源のスケジューリング（例えば、プロセッサ１１８のサイクル）を制御することによって、仮想マシン１１５を管理してよい。実施形態に従って、ＶＭＭ１１２は、仮想マシン１１５のために資源を割り当てるよう構成された１つ以上のコンポーネントを含んでよく、あるいは、それらと通信上結合されてよい。例えば、ＶＭＭ１１２は、スケジューラ（図示せず。）及び／又はメモリマネージャ（図示せず。）を含むか、あるいは、それらと通信上結合されてよい。スケジューラは、例えば、スケジューリングポリシー及び／又は資源利用可能性に基づき、１つ以上のプロセス（例えば、スレッド）のための時間スロットを割り当ててよい。同様に、メモリマネージャは、メモリ（例えば、メインメモリ１１０）のためのリクエストを処理し、例えば、メモリ割り当てポリシー及び／又は資源利用可能性に基づき、メモリを割り当てる。
【００２３】
仮想マシン１１５は、物理コンピュータデバイスのエミュレーション（例えば、コンピュータデバイス１００と同様のコンピュータデバイスのエミュレーション）であってよい。従って、仮想マシン１１５は、物理コンピュータデバイスと同様のアーキテクチャ及び機能性を備えてよい。仮想マシン１１５は、性能、安全性、電力及び／又は簡単さのような様々な目的のために準仮想化（paravirtualization）において見られるように、仮想化ソフトウェアコンポーネントを使用するよう拡張してよい。そのために、ゲストオペレーティングシステム１１６は仮想マシン１１５で実行されてよい。ゲストオペレーティングシステム１１６は、ホストオペレーティングシステム１１４と同様であって、且つ／あるいは、同様の機能を実行してよい。なお、ゲストオペレーティングシステム１１６は、ホストオペレーティングシステム１１４とは異なるタイプであってよい。例えば、ゲストオペレーティングシステム１１６は、ホストオペレーティングシステム１１４とは異なるスキームに従って、資源、メモリ割り当て、及び同様のことを管理してよい。様々な実施形態において、ゲストオペレーティングシステム１１６は、Ｃステート（すなわち、プロセッサ動作状態）、Ｐステート（すなわち、プロセッサ実行状態）、Ｄステート（すなわち、デバイス状態）、及び／又はＴステート（すなわち、プロセッサスロットリング（throttling）状態）のような、１つ以上の仮想電力状態を要求するよう構成されてよい。一実施形態において、電力状態は、Ｓ０ｉ１及び／又はＳ０ｉ３のような、システム・オン・ア・チップ（system-on-a-chip）に関連してよい。Ｓ０ｉ１ステートは、ディスプレイ１２４がオンであるがユーザがデバイスと積極的に対話しておらず、比較的微量の電力が消費される（例えば、ミリワット範囲）場合に使用されてよく、マイクロ秒で入退場され得る。Ｓ０ｉ３ステートは、ディスプレイ１２４がオフであり、比較的少量の電力が消費される（例えば、マイクロワット範囲）場合に使用されてよく、ミリ秒で入退場され得る。ゲストオペレーティングシステム１１６のＣ、Ｐ、Ｄ、及び／又はＴステートは、物理コンピュータデバイス１００のＣ、Ｐ、Ｄ、及び／又はＴステートと同じでなくてよい。例えば、ゲストオペレーティングシステム１１６はＣ０又はＣ１ステートでしか動作しなくてよく、物理コンピュータデバイス１００は、Ｃ０又は、Ｃ１〜Ｃ９のような、より深いＣステートで動作してよい。代替の実施形態では、ゲストオペレーティングシステム１１６は、物理コンピュータデバイス１００によって実装されることから離れる異なった概念の電力状態を実装してよい。更に別の実施形態では、ゲストオペレーティングシステム１１６は、異なる電力状態の動作を要求するようＶＭＭ１１２と協働するために準仮想化を使用してよい。ゲストオペレーティングシステム１１６は仮想マシン１１５で動作するので、１つ以上の仮想電力状態のための１つ以上のリクエストはプロセッサ１１８に対するものであっても、ＶＭＭ１１２によって管理されてよい。
【００２４】
様々な実施形態において、コンピュータデバイス１００は複数の仮想マシンを含んでよい。追加の仮想マシンは、仮想マシン１１５と同様のアーキテクチャ及び機能性を備えてよい。更に、ゲストオペレーティングシステム１１６と同様である追加のゲストオペレーティングシステムは、追加の仮想マシンで実行されてよい。
【００２５】
オペレーティングシステムとして、ゲストオペレーティングシステム１１６は、例えば、アプリケーション、ユーザ入力、ネットワーク通信、及び同様のものに関連する命令の実行を引き起こしてよい。様々な実施形態に従って、ゲストオペレーティングシステム１１６は、ユーザインターフェイス１２２で受け取られたユーザ入力に応答して、命令を実行してよい。加えて、ゲストオペレーティングシステム１１６は、ネットワーク上で受信されて通信モジュール１３０で処理された１つ以上のデータパケットに応答して、命令を実行してよい。特に、コンピュータデバイス１００がポータブル通信デバイス（例えば、スマートフォン）である実施形態では、ゲストオペレーティングシステム１１６は、ボイスコールに応答して、例えば、通信モジュール１３０で処理された受信されたアナログボイスデータに応答して、命令を実行するよう構成されてよい。様々な実施形態において、ゲストオペレーティングシステム１１６による命令の実行は、ゲストオペレーティングシステム１１６が、例えば、より低いＣステート（例えば、Ｃ１ステート）を要求すること及び／又はアイドルとして仮想マシンモニタ１１２に現れることによって、アイドル状態に入ること、を阻止してよい。
【００２６】
様々な実施形態において、ゲストオペレーティングシステム１１６を備える仮想マシン１１５を含む、各自のゲストオペレーティングシステムを備える複数の仮想マシンは、メインメモリ１１０に含まれてよい。そのような実施形態において、ＶＭＭ１１２は、複数の仮想マシンの夫々の生成及び実行を管理するよう構成されてよい。例えば、ＶＭＭ１１２は、スケジューリングポリシーに従って複数の仮想マシンの夫々に物理資源（例えば、プロセッサ１１８のサイクル）を割り当ててよい。
【００２７】
実施形態において、コンピュータデバイス１００はスマート仮想マシン電力マネージャ１１１を含んでよい。本願ではメインメモリ１１０において表されているが、スマート仮想マシン電力マネージャ１１１は、ハードウェア、ソフトウェア、ファームウェア、又は組み合わせにおいて実装されてよい。実施形態に従って、コンピュータデバイス１００での仮想化動作は、電源１０５（例えば、バッテリ又は他のポータブル電源）のようなコンピュータデバイス１００の１つ以上の資源にとって高価であり得る。スマート仮想マシン電力マネージャ１１１は、電源１０５のようなコンピュータデバイス１００の１つ以上の資源を節約するよう試みるように構成されてよい。この節約を達成するよう、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５に関連する命令の実行に影響を及ぼしてよい。
【００２８】
スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５及び／又はゲストオペレーティングシステム１１６と通信上結合されてよい。様々な実施形態において、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５をフリーズすることによって、コンピュータデバイス１００の資源（例えば、電源１０５）を節約するよう構成されてよい。実施形態において、スマート仮想マシン電力マネージャ１１１によって仮想マシン１１５をフリーズすることは、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減を引き起こす。仮想マシン１１５によって消費されるプロセッサ１１８のサイクルのこの低減は、例えば、例えば、仮想マシン１１５のゲストオペレーティングシステム１１６によって実行される１つ以上のプロセスの一時停止若しくは終了による、及び／又は仮想マシン１１５に関連するインタラプトの周波数の低減によるような、仮想マシン１１５を通じてゲストオペレーティングシステム１１６によって消費されるプロセッサ１１８のサイクルの低減であってよい。仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減は、低電力Ｃステート（例えば、Ｃ７ステート）の駐留を増やし、且つ／あるいは、より深いＣステート（例えば、Ｃ９）へのプロセッサ１１８のエントリを助けることができる。これにより、プロセッサ１１８による電力消費は削減され得る。例えば、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減は、仮想マシン１１５に関連するインタラプトの周波数の低減を有してよく、これにより、低電力状態へ（Ｃ１からＣ７へ）のプロセッサ１１８のエントリを容易にすることができる。
【００２９】
相応に、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５をアンフリーズするよう構成されてよい。実施形態において、スマート仮想マシン電力マネージャ１１１によって仮想マシン１１５をアンフリーズすることは、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの増大を引き起こす。仮想マシン１１５によって消費されるプロセッサ１１８のサイクルのこの増大は、例えば、仮想マシン１１５のゲストオペレーティングシステム１１６によって実行されるべき１つ以上のプロセス（例えば、プロセッサ１１８のサイクルの低減に基づき一時停止若しくは終了されていた１つ以上のプロセス）の再開又は続行による、及び／又は仮想マシン１１５に関連するインタラプトの周波数の増大によるような、仮想マシン１１５を通じてゲストオペレーティングシステム１１６によって消費されるプロセッサ１１８のサイクルの増大であってよい。コンピュータデバイス１００が複数の仮想マシンを含む実施形態では、スマート仮想マシン電力マネージャ１１１は、本願で記載されるのと同様にして、１つ以上の追加の仮想マシン及び／又はゲストオペレーティングシステムをフリーズ及び／又はアンフリーズするよう構成されてよい。
【００３０】
実施形態に従って、スマート仮想マシン電力マネージャ１１１はＶＭＭ１１２と通信上結合されてよい。ＶＭＭ１１２は、物理資源の割り当てによることを含め、仮想マシン１１５を管理するよう構成され得るので、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減を引き起こすようＶＭＭ１１２へリクエストを発してよい。一実施形態において、このリクエストは、ＶＭＭ１１２に、スケジューラが物理資源を仮想マシン１１５に割り当てることを阻止させてよい。ＶＭＭ１１２がハイパーバイザである実施形態では、スマート仮想マシン電力マネージャ１１１からハイパーバイザ１１２へのリクエストはハイパーコール（hypercall）であってよい。多くの実施形態では、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減を引き起こすためのスマート仮想マシン電力マネージャ１１１からのリクエストは、ホストオペレーティングシステム１１４による相応の動作なしでＶＭＭ１１２に向けられてよい。そのような実施形態では、ＶＭＭ１１２はＴｙｐｅ１（例えば、ネイティブ、アンホスト、及び／又はベアメタル）であってよい。
【００３１】
一実施形態において、スマート仮想マシン電力マネージャ１１１は、ホストオペレーティングシステム１１４への１つ以上のリクエストに基づき、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減を引き起こしてよい。ホストオペレーティングシステム１１４は、例えば、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減を引き起こすためのスマート仮想マシン電力マネージャ１１１からの１つ以上のリクエストを受けるよう構成されたプロトコルを含み及び／又はインターフェイスを提示するアプリケーションプログラミングインターフェイス（application  programming  interface）（“ＡＰＩ”）を含んでよい。様々な実施形態において、ホストオペレーティングシステム１１４は、ＶＭＭ１１２を含むか、又はそれと通信上結合されてよく、それにより、ホストオペレーティングシステム１１４は、仮想マシン１１５の管理及び実行に関与してよい。そのような実施形態では、スマート仮想マシン電力マネージャ１１１は、ホストオペレーティングシステム１１４へ、例えば、ホストオペレーティングシステム１１４に含まれるか又はそれと通信上結合されるスケジューラへ、リクエストを発してよく、ホストオペレーティングシステム１１４は、仮想マシン１１５に関連する資源割り当て（例えば、プロセッサ１１８のサイクル）を低減（又は終了）してよい。スマート仮想マシン電力マネージャ１１１が、ホストオペレーティングシステム１１４へのリクエストを介して、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減を引き起こすよう構成される多くの実施形態では、ＶＭＭ１１２はＴｙｐｅ２（例えば、ホスト）であってよい。
【００３２】
様々な実施形態において、ＶＭＭ１１２は、仮想マシン１１５をコンピュータデバイス１００においてフォアグラウンド状態からバックグラウンド状態へ移行させるよう構成されてよい。例えば、ホストオペレーティングシステム１１４及び／又はそれによって実行されるアプリケーションは、バックグラウンド状態からフォアグラウンド状態へ移行してよい。実施形態に従って、ＶＭＭ１１２は、ＶＭＭ１１２をフォアグラウンド状態からバックグラウンド状態へ移行させるユーザインターフェイス１２２を通じた入力を検出してよい。例えば、ＶＭＭ１１２は、仮想マシン１１５をフォアグラウンド状態からバックグラウンド状態へ移行させることに関連するユーザインターフェイス１２２を通じたジェスチャの認識又はタクティルボタンの押下を検出してよい。これに応答して、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５がコンピュータデバイス１００のフォアグラウンド状態にもはやないとの検出、例えば、仮想マシン１１５がバックグラウンド状態にあるか、又はフォアグラウンド状態からバックグラウンド状態へ移行しているとの検出に基づき、仮想マシン１１５によって消費されるプロセッサ１１８のサイクルの低減を引き起こすよう構成されてよい。
【００３３】
様々な実施形態において、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５がアイドル状態にあると決定するよう構成されてよい。実施形態に従って、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５のためのイベントの欠如を検出してよい。例えば、スマート仮想マシン電力マネージャ１１１は、ユーザインターフェイス１２２を通じて検出されるべきジェスチャの認識の欠如及び／又はタクティルボタンの押下の欠如のような、仮想マシン１１５のためにＶＭＭ１１２によって検出されるユーザ入力の欠如に基づき、仮想マシン１１５がアイドル状態にあると決定してよい。他の例では、スマート仮想マシン電力マネージャ１１１は、通信モジュール１３０を通じたデータパケット及び／又はアナログボイスデータの受信の欠如のような、仮想マシン１１５のためのＶＭＭ１１２によって検出される通信イベントの欠如に基づき、仮想マシン１１５がアイドル状態にあると決定してよい。他の実施形態では、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５がより不活発な電力状態を要求すること（例えば、ゲストオペレーティングシステム１１６は、より深いＣステートを要求してよい。）及び／又は仮想マシン１１５が所定の量若しくは割合の時間（例えば、Ｃ１、すなわち、より不活発な電力状態について、少なくとも９５パーセントの駐留比）の間より不活発な電力状態にあることを決定してよい。第３の実施形態では、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５がフォアグラウンド状態にもはやない場合に、仮想マシン１１５がアイドル状態にあると決定してよい。
【００３４】
相応に、スマート仮想マシン電力マネージャ１１１は、プロセッサ１１８のサイクルの増大を引き起こしてよい。一実施形態において、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５がバックグラウンド状態にもはやないとの検出に基づき、プロセッサ１１８のサイクルの増大を引き起こしてよい。他の実施形態では、スマート仮想マシン電力マネージャ１１１は、仮想マシン１１５がもはやアイドル状態でないとの検出に基づき、プロセッサ１１８のサイクルの増大を引き起こしてよい。例えば、ＶＭＭ１１２は、ユーザ入力、通信イベント、及び／又はより活発な電力状態のためのリクエスト（例えば、Ｃ０ステートのリクエスト）を受け取ってよい。
【００３５】
仮想マシン１１５（及び／又は他の仮想マシン）に起因したプロセッサ１１８のサイクルの低減に伴って、ホストオペレーティングシステム１１４に関連するＯＳＰＭ（図示せず。）は１つ以上の動作を変化させてよい。例えば、ＯＳＰＭは、１つ以上の仮想マシン（仮想マシン１１５を含む。）がアイドル状態にあると決定される場合に、コンピュータデバイス１００を、プロセッサ１１８のためのＣ９ステートのような、より深い電力状態へと移行させてよい。１つ以上の仮想マシン（仮想マシン１１５を含む。）がフリーズされる場合に、１つ以上の仮想マシン（仮想マシン１１５を含む。）によって消費される入力／出力（input/output）（“Ｉ／Ｏ”）資源（例えば、カメラデバイス、ブロックデバイス、など）は低減され、更には、ＯＳＰＭによって低電力状態（例えば、Ｄ３）へ移行されてよい。
【００３６】
図２に関して、ブロック図は、様々な実施形態に従って、仮想マシンがアイドル状態へ移行することを阻止することができるコンピュータデバイス間のファイルの無線による受信及び送信のための通信モジュール２００を表す。通信モジュール２００は、図１の通信モジュール１３０であってよく、あるいは、それに含まれてよい。通信モジュール２００は、図示されるように互いと結合されている送信器回路２０５、受信器回路２１０、通信回路２１５、及び／又は１つ以上のアンテナ２２０を含んでよいが、それらに限られない。
【００３７】
簡潔に、通信回路２１５は、通信モジュール２００から／への信号の無線通信を助けるようアンテナ２２０と結合されてよい。通信回路２１５の動作は、フィルタリング、増幅、記憶、変調、復調、変換、等を含んでよいが、それらに限られない。
【００３８】
送信器回路２０５は、通信回路２１５と結合されてよく、アンテナ２２０による送信のために通信回路２１５へ信号を供給するよう構成されてよい。様々な実施形態において、送信器回路２０５は、様々な信号処理動作を信号に対して与えて、通信回路２１５への信号に適切な特性を与えるよう構成されてよい。いくつかの実施形態において、送信器回路２０５は、仮想マシンに関連する１つ以上のデータパケット及び／又はアナログボイスデータを無線により送信するよう構成されてよい。送信器回路２０５のそのような働きは、仮想マシンがアイドル状態にあると決定されないようにしてよい。
【００３９】
送信器回路２０５は、通信回路２１５による送信のための信号（例えば、通信モジュール２００と通信上結合される仮想マシン（図示せず。）からの信号）を受信するよう構成されてよい。いくつかの実施形態において、送信器回路２０５は、信号を生成するよう構成されてよい。更に、送信器回路２０５は、通信回路２１５による送信の前に、様々な信号をスクランブル、多重化、及び／又は変調するよう構成されてよい。
【００４０】
受信器回路２１０は、通信回路２１５と結合されてよく、１つ以上のアンテナ２２０によって検出される信号のような、通信回路２１５のための及び／又はそれからの信号を受信するよう構成されてよい。いくつかの実施形態において、受信器回路２１０は、信号を、生成し、適応させ、又は別なふうに変更するよう構成されてよい。更に、受信器回路２１０は、受信された信号を、仮想マシンのような、通信モジュール２００と通信上結合された他のモジュール又はコンポーネント（図示せず。）へ送出するよう構成されてよい。それにより、通信モジュール２００を有するデバイスの外から受信されるデータは、そのデータを当該デバイスで利用してよい。いくつかの実施形態において、受信器回路２１０は、仮想マシンに関連する１つ以上のデータパケット及び／又はアナログボイスデータを受信してよい。受信器回路２１０のそのような働きは、仮想マシンがアイドル状態にあると決定されないようにしてよい。結果として、仮想マシンは電力を消費し続ける。これは、例えば、ポータブルコンピュータデバイスにとって、好ましくない。
【００４１】
通信回路２１５、送信器回路２０５、及び／又は受信器回路２１０のうちのいくつか又は全ては、例えば、通信チップに含まれ、且つ／あるいは、印刷回路基板と通信上結合されてよい。
【００４２】
図３は、様々な実施形態に従って、仮想マシンによる電力消費を管理する仮想マシン電力管理機能を含むポータブル電子機器３００のブロック図を示す。ポータブル電子機器３００は、図１のコンピュータデバイス１００であってよく、あるいは、それに含まれてよい。然るに、仮想マシン３０５は仮想マシン１１５であってよく、ゲストオペレーティングシステム３１０はゲストオペレーティングシステム１１６であってよく、且つ／あるいは、ホストオペレーティングシステム３１５はホストオペレーティングシステム１１４であってよい。
【００４３】
ポータブル電子機器３００は、ディスプレイ３０２での複数の要素の同時の提示を制限し得る１つ以上の特性を特色としてよい。例えば、ディスプレイ３０２のサイズは、相当に制限されたサイズであってよく、プロセッサ（図示せず。）は、相当に制限されたパワーを有してよく、メモリ（図示せず。）は、相当に制限されたサイズを有してよく、且つ／あるいは、電源は、相当に制限された容量を有してよい。それにより、ポータブル電子機器３００の性能は、ただ１つの要素がフォアグラウンド状態にある場合に改善され得る。実施形態において、仮想マシン３０５又はホストオペレーティングシステム３１５の一方は、ポータブル電子機器３００でのフォアグラウンド状態にあってよい。実施形態において、フォアグラウンド状態は、そのフォアグラウンドのオペレーティングシステム（すなわち、ホストオペレーティングシステム３１５又はゲストオペレーティングシステム３１０）によって発せられた命令がスケジューラ（図示せず。）における高い優先度、例えば、ディスプレイ３０２上での最も上のウインドウや、焦点を有するコンポーネント（例えば、ジェスチャ認識ディスプレイ３０２を通じて入力を受けるよう選択されたオペレーティングシステムのウインドウ）、に関連付けられることを示してよい。残りの要素（例えば、フォアグラウンド状態にないオペレーティングシステム３１０、３１５のうちの他方）はバックグラウンド状態にある。
【００４４】
表されている実施形態では、仮想マシン３０５はフォアグラウンド状態にあってよい。これにより、ゲストオペレーティングシステム３１０は、ディスプレイ３０２上で提示され及び／又は焦点を有してよい。よって、ホストオペレーティングシステム３１５はバックグラウンド状態にあってよい。様々な実施形態において、イベント又はその欠如は、仮想マシン３０５をフォアグラウンド状態からバックグラウンド状態へ移行させてよい（例えば、ホストオペレーティングシステム３１５をフォアグラウンド状態へ移行させるためであるユーザ入力（例えば、タクティルボタン３２０の選択）の検出、及び／又は仮想マシン３０５のためのネットワーク通信のような活動の欠如）。そのような実施形態では、ゲストオペレーティングシステム３１０は、ディスプレイ３０２においてもはや焦点を有さなくてよい。それに応答して、ポータブル電子機器３００の仮想マシン電力管理機能は、仮想マシン３０５によって消費されるプロセッササイクルの低減を引き起こしてよい（例えば、ゲストオペレーティングシステム３１０によって発せられる命令に基づき消費されるプロセッササイクルは一時停止又は終了されてよく、且つ／あるいは、仮想マシン３０５に関連するインタラプトの周波数は低減又は完全に削除されてよい。）。相応に、ポータブル電子機器３００の仮想マシン電力管理機能は、仮想マシン３０５がバックグラウンド状態からフォアグラウンド状態へ移行すべき場合に、仮想マシン３０５によって消費されるプロセッササイクル（ゲストオペレーティングシステム３１０によって発せられる命令に基づき消費されるプロセッササイクル）の増大を引き起こしてよい。
【００４５】
図４に関して、ブロック図は、様々な実施形態に従って、スマート仮想マシン電力マネージャ４２１を含むシステム４００を示す。システム４００は、図１のコンピュータデバイス１００に含まれてよい。然るに、仮想マシン４３０は仮想マシン１１５であってよく、ゲストオペレーティングシステム４３２はゲストオペレーティングシステム１１６であってよく、ホストオペレーティングシステム４１０はホストオペレーティングシステム１１４であってよく、スマート仮想マシン電力マネージャ４２１はスマート仮想マシン電力マネージャ１１１であってよく、且つ／あるいは、ＶＭＭ４４０はＶＭＭ１１２であってよい。様々な実施形態に従って、システム４００は、仮想マシン４３０による完全仮想化、準仮想化、ハードウェア支援仮想化であってよい。
【００４６】
実施形態において、システム４００のホストオペレーティングシステム４１０は、ホストオペレーティングシステムカーネル（“カーネル”）４２０を含んでよく、且つ／あるいは、それと通信上結合されてよい。カーネル４２０は、例えば、システム４００のハードウェア（図示せず。）（例えば、プロセッサ、メモリ、及び同様のもの）のための１つ以上の命令へとリクエストを変換することによって、システム４００のコンポーネントから受信される１つ以上のリクエストを管理するよう構成されてよい。
【００４７】
更に、システム４００はスケジューラ４４１を含んでよい。スケジューラ４４１は、ＶＭＭ４４０に含まれるか、又はそれへ通信上結合されてよい（なお、他の実施形態では、スケジューラ４４１はホストオペレーティングシステム４１０に含まれてよい。）。１つ以上のスレッド又はプロセスを実行する１つ以上の命令が受信される場合に、スケジューラ４４１は１つ以上のスレッド又はプロセスをキューに加えてよい。スケジューラ４４１は、ゲストオペレーティングシステム４３２に関連するスレッド又はプロセスのような、１つ以上のプロセスサイクルを消費すべきスレッド又はプロセスを選択してよい。スケジューラ４４１は、例えば、レイテンシー、公平性（例えば、スレッド若しくはプロセス優先度）、スループット、及び／又は待ち時間を考慮する所定のスケジューリングアルゴリズムに従って動作してよい。
【００４８】
実施形態に従って、ゲストオペレーティングシステム４３２は、システム４００のハードウェアを要求する１つ以上のスレッド又はプロセスのための１つ以上の命令を発してよい。１つ以上の命令は、カーネル４２０で受け取られ、スケジューラによって、ハードウェアアクセスが一貫して管理され得るようにスケジューリングされてよい。スマート仮想マシン電力マネージャ４２１は、カーネル４２０に含まれてよく、あるいは、それと通信上結合されてよく、それら１つ以上の命令のインジケーションを受け取ってよい。加えて、スマート仮想マシン電力マネージャ４２１は、フォアグラウンド状態からバックグラウンド状態への仮想マシン４３０の移行の検出、ゲストオペレーティングシステム４３２のためのユーザ入力の検出、ゲストオペレーティングシステム４３２に関連する通信イベント（例えば、データパケットの受信及び／又はアナログボイスデータの通信）の検出、及び／又はゲストオペレーティングシステム４３２の電力状態の検出のような、ゲストオペレーティングシステム４３２に関連する１つ以上のイベントのインジケーションをＶＭＭ４４０から受け取ってよい。
【００４９】
様々な実施形態において、スマート仮想マシン電力マネージャ４２１は、イベントのインジケーションを受け取るか、あるいは、仮想マシン４３０がフリーズされるべきであるとスマート仮想マシン電力マネージャ４２１に決定させるイベントの欠如に基づき、仮想マシン４３０がアイドル状態にあると決定してよい。従って、スマート仮想マシン電力マネージャ４２１は、仮想マシン４３０に関連する１つ以上のスレッド又はプロセスをキューから除外するようスケジューラ４４１に伝えてよい。仮想マシン４３０に関連する１つ以上のスレッド又はプロセスはスケジューラ４４１によってもはや選択され得ないので、仮想マシン４３０によって消費されるプロセッササイクルの量は低減されてよく、実際上、完全に削除されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ４２１は、ゲストオペレーティングシステム４３２に関連する１つ以上の命令がスケジューラ４４１に１つ以上のスレッド又はプロセスをキューに加えさせることを阻止してよい。
【００５０】
相応に、スマート仮想マシン電力マネージャ４２１は、イベントのインジケーションを受け取るか、あるいは、仮想マシン４３０がアンフリーズされるべきであるとスマート仮想マシン電力マネージャに決定させるイベントの検出に基づき、仮想マシン４３０がもはやアイドル状態にないと決定してよい。従って、スマート仮想マシン電力マネージャ４２１は、仮想マシン４３０に関連する１つ以上のスレッド又はプロセスをキューに加えることを開始又は再開するようスケジューラ４４１に伝えてよい。仮想マシン４３０に関連する１つ以上のスレッド又はプロセスはスケジューラ４４１によって選択され得るので、仮想マシン４３０によって消費されるプロセッササイクルの量は増大されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ４２１は、ゲストオペレーティングシステム４３２に関連する１つ以上の命令がスケジューラ４４１に１つ以上のスレッド又はプロセスをキューに加えさせることを可能にしてよい。
【００５１】
実施形態に従って、スマート仮想マシン電力マネージャ４２１による仮想マシン４３０のフリーズは、ゲストオペレーティングシステム４３２に関連する１つ以上のタイマに作用してよい。仮想マシン４３０によって消費されるプロセッササイクルの低減に関連して、スマート仮想マシン電力マネージャ４２１は、ゲストオペレーティングシステム４３２に、プログラム可能インターバルタイマ、時間スタンプカウンタ、及び／又は高精度イベントタイマ、実時間クロック、及び／又は他のウォールクロックのような、１つ以上のタイマを作動又はインクリメントすることを中止又は一時停止させてよい。スマート仮想マシン電力マネージャ４２１がアンフリーズする場合、すなわち、仮想マシン４３０によって消費されるプロセッササイクルの増大を引き起こす場合に、スマート仮想マシン電力マネージャ４２１は、ゲストオペレーティングシステム４３２に１つ以上のタイマを調整及び／又は再開させてよい。例えば、実時間クロックは、ホストオペレーティングシステム４１０に関連する実時間クロックと一致するように調整されてよい。
【００５２】
図５に関して、ブロック図は、様々な実施形態に従って、スマート仮想マシン電力マネージャ５２１を含むシステム５００を示す。システム５００は、図４のシステム４００の他の実施形態を含んでよい。然るに、仮想マシン５３０は仮想マシン４３０であってよく、ゲストオペレーティングシステム５３２はゲストオペレーティングシステム４３２であってよく、ホストオペレーティングシステム５１０はホストオペレーティングシステム４１０であってよく、スマート仮想マシン電力マネージャ５２１はスマート仮想マシン電力マネージャ４２１であってよく、且つ／あるいは、ＶＭＭ５４０はＶＭＭ４４０であってよい。
【００５３】
様々な実施形態において、ゲストオペレーティングシステム５３２は、エミュレートされたネイティブデバイスドライバ５３６を含んでよい。エミュレートされたネイティブデバイスドライバ５３６は、ゲストオペレーティングシステム５３２から命令を受信、例えば、読み出し及び／又は書き込みしてよい。更に、ゲストオペレーティングシステム５３２は、ゲストオペレーティングシステム５３２に１つ以上の一般的な仮想デバイスへのアクセスを提供する１つ以上のフロントエンドドライバ５３５を含んでよい。実施形態において、ゲストオペレーティングシステム５３２からの命令は、１つ以上のフロントエンドドライバ５３５へ発せられてよく、ゲストオペレーティングシステム５３２からの命令のバイナリ変換及び／又はネイティブ実行を可能にし得るバックエンドサービス５２２及び／又はデバイスモデル５１１によって管理される。よって、たとえ仮想化（又は準仮想化）されたとしても、ゲストオペレーティングシステム５３２は、通信イベント及び／又はユーザ入力の検出のような１つ以上のイベントを受信し及び／又はそれらに応答するよう構成されてよい。バックエンドサービス５２２を通じて、フロントエンドドライバ５３５を通じてゲストオペレーティングシステム５３２によって発せられた１つ以上の命令は、スケジューラ５４１のキューに加えられてよい。従って、１つ以上のプロセッササイクルは、命令がネイティブデバイスドライバ５３６（例えば、システム５００の物理ハードウェア）に対して実行されるようにすることができる。
【００５４】
スマート仮想マシン電力マネージャ５２１は、イベントの受信又はイベントへの応答のような、バックエンドサービス５２２によって管理される１つ以上の命令のインジケーションを受け取ってよい。様々な実施形態において、スマート仮想マシン電力マネージャ５２１は、イベントのインジケーションを受け取るか、あるいは、バックエンドサービス５２２によって示される信号に基づくイベントの欠如に基づき、仮想マシン５３０がアイドル状態にあると決定してよい。これに応答して、スマート仮想マシン電力マネージャ５２１は、仮想マシン５３０がフリーズされるべきであると決定してよい。従って、スマート仮想マシン電力マネージャ５２１は、仮想マシン５３０に関連する１つ以上のスレッド又はプロセスをキューから除外するようスケジューラ５４１に伝えてよい。仮想マシン５３０に関連する１つ以上のスレッド又はプロセスはスケジューラ５４１によってもはや選択され得ないので、仮想マシン５３０によって消費されるプロセッササイクルの量は低減されてよく、実際上、完全に削除されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ５２１は、ゲストオペレーティングシステム５３２に関連する１つ以上の命令がスケジューラ５４１に１つ以上のスレッド又はプロセスをキューに加えさせることを阻止してよい。
【００５５】
相応に、スマート仮想マシン電力マネージャ５２１は、イベントのインジケーションを受け取るか、あるいは、バックエンドサービス５２２によって示される信号に基づき、仮想マシン５３０がもはやアイドル状態にないと決定してよい。これに応答して、スマート仮想マシン電力マネージャ５２１は、仮想マシン５３０がアンフリーズされるべきであると決定してよい。従って、スマート仮想マシン電力マネージャ５２１は、仮想マシン５３０に関連する１つ以上のスレッド又はプロセスをキューに加えることを開始又は再開するようスケジューラ５４１に伝えてよい。仮想マシン５３０に関連する１つ以上のスレッド又はプロセスはスケジューラ５４１によって選択され得るので、仮想マシン５３０によって消費されるプロセッササイクルの量は増大されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ５２１は、ゲストオペレーティングシステム５３２に関連する１つ以上の命令がスケジューラ５４１に１つ以上のスレッド又はプロセスをキューに加えさせることを可能にしてよい。
【００５６】
図６に関して、フロー図は、様々な実施形態に従って、仮想マシンの電力消費を管理する方法６００を表す。方法６００は、図１のコンピュータデバイス１００のような、コンピュータデバイスによって実施されてよい。図６は複数の順次的な動作を表すが、当業者に明らかなように、方法６００の１つ以上の動作は、入れ換えられ、且つ／あるいは、同時に実施されてよい。
【００５７】
最初に、方法６００は、仮想マシンをフォアグラウンドからバックグラウンドへ移動させる第１の予め定義されたイベントを検出する動作６０５を含んでよい。一実施形態において、この第１の予め定義されたイベントは、例えば、タクティルボタンの押下及び／又はジェスチャの認識のような、ユーザインタラクションの検出であってよい。第１の予め定義されたイベントの検出に基づき、方法６００は、仮想マシンによって消費されるプロセッササイクルの低減を引き起こす動作６１０を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、仮想マシンがフォアグラウンドにもはやない場合に低減されてよい。実施形態において、動作６１０は、仮想マシンに関連するインタラプトの周波数を低減することを有してよい。これは、低電力状態へ（例えば、Ｃ１からＣ７へ）のプロセッサのエントリを容易にすることができる。
【００５８】
実施形態において、方法６００は、仮想マシンをバックグラウンドからフォアグラウンドへ移動させる第２の予め定義されたイベントを検出する動作６１５を含んでよい。一実施形態において、この第２の予め定義されたイベントは、例えば、タクティルボタンの押下及び／又はジェスチャの認識のような、ユーザインタラクションの検出であってよい。第２の予め定義されたイベントの検出に基づき、方法６００は、仮想マシンによって消費されるプロセッササイクルの増大を引き起こす動作６２０を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、仮想マシンがバックグラウンドにもはやない場合に増大されてよい。
【００５９】
図７を参照すると、フロー図は、様々な実施形態に従って、仮想マシンの電力消費を管理する方法７００を表す。方法７００は、図１のコンピュータデバイス１００のような、コンピュータデバイスによって実施されてよい。図７は複数の順次的な動作を表すが、当業者に明らかなように、方法７００の１つ以上の動作は、入れ換えられ、且つ／あるいは、同時に実施されてよい。
【００６０】
実施形態において、方法７００は、仮想マシンを生成する動作７０５を含んでよい。それに対して更に、方法７００は、仮想マシンにおいてゲストオペレーティングシステムを実行する動作７１０を含んでよい。動作７１５は、仮想マシンがアイドル状態にあると決定することを含んでよい。様々な実施形態に従って、動作７１５は、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定時間の間の欠如（例えば、Ｃ１、すなわち、より不活発な電力状態について、少なくとも９５％のゲストオペレーティングシステムに関連した駐留比）を決定することに関連した動作を含んでよい。他の実施形態では、動作７１５は、より不活発な電力状態のための１つ以上のリクエストをゲストオペレーティングシステムから受信することに関連した動作を含んでよい（例えば、ゲストオペレーティングシステムはＣ１ステートを要求してよい。）。一実施形態において、動作７１５は、仮想マシンがフォアグラウンド状態にもはやなく、従って、アイドル状態にあると決定することに関連した動作を含んでよい。仮想マシンがアイドル状態にあるとの決定に基づき、方法７００は、仮想マシンによって消費されるプロセッササイクルの低減を引き起こす動作７２０を含んでよい。この動作７２０は、仮想マシンに関連するインタラプト周波数を低減（削除）すること及び／又は実行のためにスケジューリングされた１つ以上のスレッドを一時停止若しくは終了することに関連した動作を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、仮想マシンがアイドル状態にある場合に低減されてよい。実施形態において、動作７２０は、仮想マシンに関連するインタラプトの周波数を低減することを有してよい。これは、低電力状態へ（例えば、Ｃ１からＣ７へ）のプロセッサのエントリを容易にすることができる。
【００６１】
実施形態において、方法７００は、仮想マシンで実行されるゲストオペレーティングシステムに少なくとも１つの命令を実行させる少なくとも１つの入力が受け取られたことを決定する動作７２５を含んでよい。一実施形態において、この少なくとも１つの入力は、例えば、ユーザインタラクション（タクティルボタンの押下及び／又はジェスチャの認識）、ネットワークイベント（ネットワークデータパケットの受信及び／又はアナログボイスデータの受信）、及び／又はより活発な電力状態の要求（例えば、Ｃ０電力状態の要求）であってよい。少なくとも１つの入力が受け取られたとの決定に基づき、方法７００は、仮想マシンによって消費されるプロセッササイクルの増大を引き起こす動作７３０を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、例えば、仮想マシンに関連する１つ以上のスレッドを再開若しくは続行すること、及び／又は仮想マシンに関連するインタラプトを増やすこと（例えば、再開若しくは続行すること）によって、仮想マシンがアイドル状態にもはやない場合に増大されてよい。
【００６２】
様々な実施形態において、例１は、仮想マシン電力管理機能を含むコンピュータデバイスであって、当該コンピュータデバイスでの仮想マシンの実行を管理し、前記仮想マシンをフォアグラウンド状態からバックグラウンド状態へ移行させる仮想マシンモニタと、前記仮想マシンモニタと結合され、前記仮想マシンが前記フォアグラウンド状態にもはやないことを検出し、前記仮想マシンが前記フォアグラウンド状態にもはやないとの検出に応答して、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすスマート仮想マシン電力マネージャとを有するコンピュータデバイスであってよい。例２は、例１のコンピュータデバイスであって、当該コンピュータデバイスはポータブル電子機器である、コンピュータデバイスを含んでよい。例３は、例１のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンのゲストオペレーティングシステムによるプロセッササイクル消費の低減を引き起こすことを通じて、又は前記仮想マシンに関連するインタラプトの周波数の低減を通じて、前記仮想マシンによって引き起こされるプロセッササイクルの低減を引き起こす、コンピュータデバイスを含んでよい。例４は、例３のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記ゲストオペレーティングシステムによるあらゆる命令の実行の阻止を通じて、前記仮想マシンの前記ゲストオペレーティングシステムによるプロセッササイクル消費の低減を引き起こす、コンピュータデバイスを含んでよい。例５は、例１乃至４のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンが前記バックグラウンド状態にもはやないと検出し、前記仮想マシンが前記バックグラウンド状態にもはやないとの検出に応答して、前記仮想マシンによって引き起こされるプロセッササイクルの増大を引き起こす、コンピュータデバイスを含んでよい。例６は、例５のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンのゲストオペレーティングシステムによって実行される１つ以上のプロセスの一時停止又は終了によって、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、更に、前記スマート仮想マシン電力マネージャが、前記低減の前に前記仮想マシンの前記ゲストオペレーティングシステムによって実行されるべきであった前記１つ以上のプロセスの続行又は再開によって、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こす、コンピュータデバイスを含んでよい。例７は、例１乃至４のうちいずれかのコンピュータデバイスであって、前記仮想マシンモニタがハイパーバイザであり、前記スマート仮想マシン電力マネージャが、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすために前記ハイパーバイザへのハイパーコールを使用する、コンピュータデバイスを含んでよい。例８は、例１乃至４のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、ユーザ入力の検出に基づき、前記仮想マシンが前記フォアグラウンド状態にもはやないと検出する、コンピュータデバイスを含んでよい。例９は、例８のコンピュータデバイスであって、前記仮想マシンモニタが、ユーザインターフェイスを通じて前記ユーザ入力を検出し、該ユーザ入力に応答して前記仮想マシンを前記フォアグラウンド状態から前記バックグラウンド状態へ移行させ、当該コンピュータデバイスが、前記仮想マシンと結合された、当該コンピュータデバイスへの前記ユーザ入力を検出する前記ユーザインターフェイスを更に有する、コンピュータデバイスを含んでよい。例１０は、例９のコンピュータデバイスであって、前記ユーザインターフェイスがタッチスクリーン、タクティルボタン、又はジェスチャ認識デバイスである、コンピュータデバイスを含んでよい。
【００６３】
様々な実施形態において、例１１は、仮想マシン電力管理機能を含むコンピュータデバイスであって、当該コンピュータデバイスでのゲストオペレーティングシステムを有する仮想マシンの実行を管理し、前記ゲストオペレーティングシステムに１つ以上の命令を実行させる少なくとも１つのイベントを検出する仮想マシンモニタと、前記仮想マシンモニタと結合され、前記仮想マシンがアイドル状態にあると決定し、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、前記少なくとも１つのイベントの検出に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすスマート仮想マシン電力マネージャとを有するコンピュータデバイスであってよい。例１２は、例１１のコンピュータデバイスであって、当該コンピュータデバイスがポータブル電子機器である、コンピュータデバイスを含んでよい。例１３は、例１１のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、当該コンピュータデバイスのスケジューラへのリクエストに基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも１つのプロセスを外すものである、コンピュータデバイスを含んでよい。例１４は、例１１のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンが当該コンピュータデバイスでのフォアグラウンド状態にあるとき、前記仮想マシンが前記アイドル状態にあると決定する、コンピュータデバイスを含んでよい。例１５は、例１１乃至１４のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンをバックグラウンド状態へ移行させる命令に基づき、前記仮想マシンが前記アイドル状態にあると決定する、コンピュータデバイスを含んでよい。例１６は、例１１乃至１４のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、所定のインターバルの間のネットワークパケットの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、前記少なくとも１つのイベントは、ネットワーク上でのパケットの受信を含み、当該コンピュータデバイスは、前記仮想マシンモニタと結合された、前記ネットワーク上で受信される前記パケットを処理する受信器を更に有する、コンピュータデバイスを含んでよい。例１７は、例１６のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、他の所定のインターバルの間のボイスコールの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、前記少なくとも１つのイベントは、前記ボイスコールの受信を含み、前記受信器は、前記受信されたボイスコールを処理する、コンピュータデバイスを含んでよい。例１８は、例１１乃至１４のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、ユーザインタラクションの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、前記少なくとも１つのイベントは、前記ユーザインタラクションの受信を含み、当該コンピュータデバイスは、前記仮想マシンモニタと結合された、前記ユーザインタラクションの受信を検出するユーザインターフェイスを更に有する、コンピュータデバイスを含んでよい。例１９は、例１１乃至１４のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記ゲストオペレーティングシステムによって示される仮想Ｃステートに基づき、前記仮想マシンが前記アイドル状態にあると決定する、コンピュータデバイスを含んでよい。
【００６４】
様々な実施形態において、例２０は、コンピュータデバイスによって実行可能な命令を有する１つ以上の非一時的なコンピュータシステム可読媒体であって、前記命令は、コンピュータデバイスによる実行に応答して、該コンピュータデバイスに、当該コンピュータデバイスで動作する仮想マシンを当該コンピュータデバイスのフォアグラウンドから当該コンピュータデバイスのバックグラウンドへ移動させる第１の予め定義されたイベントを検出させ、前記第１の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、前記仮想マシンを前記バックグラウンドから前記フォアグラウンドへ移動させる第２の予め定義されたイベントを検出させ、前記第２の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こさせる、コンピュータシステム可読媒体であってよい。例２１は、例２０の１つ以上の非一時的なコンピュータシステム可読媒体であって、前記コンピュータデバイスがスマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤー、又はラップトップコンピュータである、コンピュータシステム可読媒体を含んでよい。例２２は、例２０又は２１の１つ以上の非一時的なコンピュータシステム可読媒体であって、前記第１の予め定義されたイベントが、ポータブル電子機器のユーザインターフェイスとの第１のユーザインタラクションの受信であり、前記第２の予め定義されたイベントが、前記ユーザインターフェイスとの第２のユーザインタラクションの受信である、コンピュータシステム可読媒体を含んでよい。
【００６５】
様々な実施形態において、例２３は、コンピュータデバイスによって実行可能な命令を有する１つ以上の非一時的なコンピュータシステム可読媒体であって、前記命令は、ポータブル電子機器による実行に応答して、該ポータブル電子機器に、当該ポータブル電子機器で実行される仮想マシンがアイドル状態にあると決定させ、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも１つの命令を実行させる少なくとも１つの入力を当該ポータブル電子機器が受け取ったことを決定させ、前記少なくとも１つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こさせる、コンピュータシステム可読媒体であってよい。例２４は、例２３の１つ以上の非一時的なコンピュータシステム可読媒体であって、前記命令は、前記ポータブル電子機器による実行に応答して、該ポータブル電子機器に、前記仮想マシンを生成させ、前記生成された仮想マシンにおいてゲストオペレーティングシステムを実行させる、コンピュータシステム可読媒体を含んでよい。例２５は、例２３又は２４の１つ以上の非一時的なコンピュータシステム可読媒体であって、前記仮想マシンが前記アイドル状態にあるとの決定が、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定期間の欠如の決定を含む、コンピュータシステム可読媒体を含んでよい。
【００６６】
様々な実施形態において、例２６は、仮想マシン電力管理機能を実施するコンピュータ実装方法であって、コンピュータデバイスによって、該コンピュータデバイスで動作する仮想マシンを当該コンピュータデバイスのフォアグラウンドから当該コンピュータデバイスのバックグラウンドへ移動させる第１の予め定義されたイベントを検出するステップと、前記コンピュータデバイスによって、前記第１の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすステップと、前記コンピュータデバイスによって、前記仮想マシンを前記バックグラウンドから前記フォアグラウンドへ移動させる第２の予め定義されたイベントを検出するステップと、前記コンピュータデバイスによって、前記第２の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすステップとを有する方法であってよい。例２７は、例２６のコンピュータ実装方法であって、前記コンピュータデバイスがスマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤー、又はラップトップコンピュータである、方法を含んでよい。例２８は、例２６のコンピュータ実装方法であって、前記第１の予め定義されたイベントが、ポータブル電子機器のユーザインターフェイスとの第１のユーザインタラクションの受信であり、前記第２の予め定義されたイベントが、前記ユーザインターフェイスとの第２のユーザインタラクションの受信である、方法を含んでよい。例２９は、例２６乃至２８のうちいずれかのコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記コンピュータデバイスによって、前記仮想マシンのゲストオペレーティングシステムによって実行される１つ以上のプロセスを一時停止することを有する、方法を含んでよい。例３０は、例２６乃至２８のうちいずれかのコンピュータ実装方法であって、前記プロセッササイクルの増大を引き起こすステップが、前記コンピュータデバイスによって、前記プロセッササイクルの低減を引き起こすステップの前に前記仮想マシンのゲストオペレーティングシステムによって実行されるべきであった１つ以上のプロセスを再開することを有する、方法を含んでよい。例３１は、例２６乃至２８のうちいずれかのコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記コンピュータデバイスによって、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすために当該コンピュータデバイスに関連するハイパーバイザへのハイパーコールを使用することを有する、方法を含んでよい。
【００６７】
様々な実施形態において、例３２は、仮想マシン電力管理機能を実施するコンピュータ実装方法であって、ポータブル電子機器によって、仮想マシンがアイドル状態にあると決定するステップと、前記ポータブル電子機器によって、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすステップと、前記ポータブル電子機器によって、前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも１つの命令を実行させる少なくとも１つの入力を受け取るステップと、前記ポータブル電子機器によって、前記少なくとも１つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすステップとを有する方法であってよい。例３３は、例３２のコンピュータ実装方法であって、前記ポータブル電子機器によって前記仮想マシンを生成するステップと、前記ポータブル電子機器によって、前記生成された仮想マシンにおいてゲストオペレーティングシステムを実行するステップとを更に有する方法を含んでよい。例３４は、例３２又は３３のコンピュータ実装方法であって、前記仮想マシンが前記アイドル状態にあると決定するステップが、前記ポータブル電子機器によって、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定期間の欠如を決定すること有する、方法を含んでよい。例３５は、例３２又は３３のコンピュータ実装方法であって、前記仮想マシンが前記アイドル状態にあると決定するステップが、前記ポータブル電子機器によって、前記仮想マシンがフォアグラウンドにもはやないと決定することを有する、方法を含んでよい。例３６は、例３２又は３２のコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記ポータブル電子機器によって、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすために、当該ポータブル電子機器に関連するハイパーバイザへのハイパーコールを使用することを有する、方法を含んでよい。例３７は、例３２又は３３のコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記ポータブル電子機器によって、該ポータブル電子機器に関連するスケジューラへのリクエストを使用することを有し、前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも１つのプロセスを外すものである、方法を含んでよい。例３８は、例３２又は３３のコンピュータ実装方法であって、前記ポータブル電子機器がスマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤー、又はラップトップコンピュータである、方法を含んでよい。
【００６８】
様々な実施形態において、例３９は、コンピュータデバイスで動作する仮想マシンを前記コンピュータデバイスのフォアグラウンドから前記コンピュータデバイスのバックグラウンドへ移動させる第１の予め定義されたイベントを検出する手段と、前記第１の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こす手段と、前記仮想マシンを前記バックグラウンドから前記フォアグラウンドへ移動させる第２の予め定義されたイベントを検出する手段と、前記第２の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こす手段とを有する装置であってよい。
【００６９】
様々な実施形態において、例４０は、ポータブル電子機器に関連する仮想マシンがアイドル状態にあると決定する手段と、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費される前記ポータブル電子機器のプロセッササイクルの低減を引き起こす手段と、前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも１つの命令を実行させる少なくとも１つの入力を受け取る手段と、前記少なくとも１つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費される前記ポータブル電子機器のプロセッササイクルの増大を引き起こす手段とを有する装置であってよい。
【００７０】
前述の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作の符号表現及びアルゴリズムに関して示されてきた。それらのアルゴリズム記述及び表現は、当業者によって自身の作業の実体を他の当業者に最も効果的に伝えるために使用される方法である。アルゴリズムは、ここでは、一般的に、所望の結果を生じさせる動作のセルフコンシステントシーケンスであると考えられる。動作は、物理量の物理的な操作を必要とするものである。
【００７１】
なお、それら及び同様の語の全ては、適切な物理量に関連付けられるべきであり、それらの量に適用される都合の良いラベルにすぎない点が留意されるべきである。特段具体的に述べられない限り、前述の開示から明らかなように、本明細書の全体を通して、以下特許請求の範囲で示されているような用語を用いた議論は、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されるデータを処理して、コンピュータシステムメモリ若しくはレジスタ又は他のそのような情報記憶、伝送若しくは表示デバイス内の物理量として同様に表される他のデータへと変換するコンピュータシステム又は同様の電子コンピュータデバイスのアクション及びプロセスを指すと認識される。
【００７２】
本発明の実施形態は、本願で記載される動作を実施する装置にも関係がある。そのようなコンピュータプログラムは非一時的なコンピュータ可読媒体に記憶される。機械可読媒体は、機械（例えば、コンピュータ）によって読み出し可能な形で情報を記憶する如何なるメカニズムも含む。例えば、機械可読（例えば、コンピュータ可読）媒体は、機械（例えば、コンピュータ）可読記憶媒体（例えば、リードオンリーメモリ（“ＲＯＭ”）、ランダムアクセスメモリ（“ＲＡＭ”）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス）を含む。
【００７３】
図面において表されているプロセス又は方法は、ハードウェア（例えば、回路、専用ロジック、など）、ソフトウェア（例えば、非一時的なコンピュータ可読媒体において具現される。）、又は両者の組み合わせを有する処理ロジックによって実施され得る。プロセス又は方法は、いくつかの順次的な動作に関して先に記載されているが、当然ながら、記載されている動作は、異なる順序で実施され得る。更に、いくつかの動作は、順次的にというよりも、むしろ並行して、実施され得る。
【００７４】
本発明の実施形態は、如何なる特定のプログラミング言語に関しても記載されない。様々なプログラミング言語が、本願で記載される本発明の実施形態の教示を実施するために使用され得ると認識されるだろう。
【００７５】
前述の明細書において、本発明の実施形態は、その具体的な例となる実施形態を参照して記載されてきた。様々な変更が、以下の特許請求の範囲で示されている本発明の広い主旨及び適用範囲から逸脱することなしに、それらの実施形態に対して行われてよいことは明らかである。明細書及び図面は、然るに、限定の意味というよりも、むしろ例示の意味で考えられるべきである。
【図１】
0006339240.tif 000002
【図２】
0006339240.tif 000003
【図３】
0006339240.tif 000004
【図４】
0006339240.tif 000005
【図５】
0006339240.tif 000006
【図６】
0006339240.tif 000007
【図７】
0006339240.tif 000008