(57)【特許請求の範囲】
【請求項１】
マルチオペレーティングシステムデバイスにおける複数の動作をサポートする機器と、
各々がオペレーティングシステム選択エージェントを有する少なくとも２つのオペレーティングシステムと、
前記少なくとも２つのオペレーティングシステムの各々に対応し、前記機器と前記少なくとも２つのオペレーティングシステムとの間のインタラクションを容易にするカーネルと、
オペレーティングシステム選択エージェントから受信された命令に基づいて前記少なくとも２つのオペレーティングシステムのうちの少なくとも１つの動作状態を制御するための少なくとも１つのカーネルモードコントローラを有する仮想マシンマネージャと
を備え、
前記少なくとも２つのオペレーティングシステムは、前記マルチオペレーティングシステムデバイスにおいてロードされた少なくとも１つのフォアグラウンドオペレーティングシステムおよびバックグラウンドオペレーティングシステムを有し、
少なくとも１つのオペレーティングシステム選択エージェントは、前記フォアグラウンドオペレーティングシステムを変更するトリガを感知するためのものであり、
前記動作状態を制御するための前記カーネルモードコントローラは、信号を少なくとも１つのカーネルに送信するためのものであり、
前記フォアグラウンドオペレーティングシステムの前記オペレーティングシステム選択エージェントは、前記トリガを感知したことに応じてメッセージを前記カーネルモードコントローラに送信するためのものであり、
前記カーネルモードコントローラは、
前記メッセージの受信に応じて、前記フォアグラウンドオペレーティングシステムをバックグラウンドに移行させる第１の信号を、前記フォアグラウンドオペレーティングシステムに対応する前記カーネルに送信するためのものであり、
前記バックグラウンドオペレーティングシステムをフォアグラウンドに移行させる第２の信号を、前記バックグラウンドオペレーティングシステムに対応する前記カーネルに送信するためのものである
マルチオペレーティングシステムデバイス。
【請求項２】
前記トリガは、イベント、コマンド、ハードウェアベースのユーザインターフェース、およびソフトウェアベースのユーザインターフェースのうちの少なくとも１つにより生成される、請求項１に記載のマルチオペレーティングシステムデバイス。
【請求項３】
前記少なくとも１つのオペレーティングシステム選択エージェントは、前記フォアグラウンドオペレーティングシステムを前記バックグラウンドに移行させ、前記バックグラウンドオペレーティングシステムを前記フォアグラウンドに移行させる命令を少なくとも前記カーネルモードコントローラに更に送信するためのものである、請求項１または２に記載のマルチオペレーティングシステムデバイス。
【請求項４】
前記第１の信号および前記第２の信号の少なくとも一方は、仮想パワーボタン信号である、請求項１から３のいずれか一項に記載のマルチオペレーティングシステムデバイス。
【請求項５】
前記フォアグラウンドオペレーティングシステムに対応する前記カーネルは、少なくとも１つのドライバを有し、
前記フォアグラウンドオペレーティングシステムに対応する前記カーネルは、前記第１の信号を受信すると、前記少なくとも１つのドライバに基づいて、現在の機器の状態を保存させて前記機器に対する制御を解放させる、請求項１から４のいずれか一項に記載のマルチオペレーティングシステムデバイス。
【請求項６】
前記フォアグラウンドオペレーティングシステムに対応する前記カーネルは、更に、前記フォアグラウンドオペレーティングシステムを前記バックグラウンドにおいて依然としてアクティブな状態にさせる、請求項５に記載のマルチオペレーティングシステムデバイス。
【請求項７】
前記バックグラウンドオペレーティングシステムに対応する前記カーネルは、少なくとも１つのドライバを有し、
前記バックグラウンドオペレーティングシステムに対応する前記カーネルは、前記第２の信号を受信すると、前記少なくとも１つのドライバに基づいて、保存された機器の状態を復元させて前記機器を制御させる、請求項１から６のいずれか一項に記載のマルチオペレーティングシステムデバイス。
【請求項８】
前記バックグラウンドオペレーティングシステムに対応する前記カーネルは、更に、前記バックグラウンドオペレーティングシステムを前記フォアグラウンドに移動させる、請求項７に記載のマルチオペレーティングシステムデバイス。
【請求項９】
少なくとも１つのカーネルは、前記機器にアクセスするための前記少なくとも２つのオペレーティングシステムにより共有されるドライバを有する、請求項１から８のいずれか一項に記載のマルチオペレーティングシステムデバイス。
【請求項１０】
前記カーネルモードコントローラは、前記第１の信号が送信されてから設定された時間遅延の後に、前記第２の信号を送信するためのものである、請求項１から９のいずれか一項に記載のマルチオペレーティングシステムデバイス。
【請求項１１】
前記カーネルモードコントローラは、前記第１の信号が送信されてから前記フォアグラウンドオペレーティングシステムに基づいて前記機器に対する制御が解放されたとの確認を受信した後に、前記第２の信号を送信するためのものである、請求項１から９のいずれか一項に記載のマルチオペレーティングシステムデバイス。
【請求項１２】
デバイス上で各々がオペレーティングシステム選択エージェントを有する複数のオペレーティングシステムの間を移動する方法であって、
フォアグラウンドオペレーティングシステムの前記オペレーティングシステム選択エージェントにおいて、前記フォアグラウンドオペレーティングシステムを変更するトリガを感知したことに応じて、メッセージをカーネルモードコントローラに送信する段階と、
少なくとも１つの前記カーネルモードコントローラを含む仮想マシンマネージャにおいて前記フォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへと移行する前記メッセージを受信する段階と、
前記カーネルモードコントローラから前記フォアグラウンドオペレーティングシステムに対応するカーネルに第１の信号を送信して、前記フォアグラウンドオペレーティングシステムを非アクティブにさせる段階と、
前記カーネルモードコントローラから前記バックグラウンドオペレーティングシステムに対応するカーネルに第２の信号を送信して、前記バックグラウンドオペレーティングシステムをアクティブにさせる段階とを備える、方法。
【請求項１３】
前記第１の信号および前記第２の信号の少なくとも一方は、仮想パワーボタン信号である、請求項１２に記載の方法。
【請求項１４】
前記フォアグラウンドオペレーティングシステムに対応する前記カーネルにおいて前記第１の信号を受信する段階と、
前記カーネルにおける少なくとも１つのドライバに基づいて、前記少なくとも１つのドライバにより制御される前記デバイス内の機器の現在の状態を保存させる段階と、
前記少なくとも１つのドライバに基づいて、前記機器に対する制御を解放させる段階とを更に備える、請求項１２または１３に記載の方法。
【請求項１５】
前記フォアグラウンドオペレーティングシステムを非アクティブにさせることに代えて、前記フォアグラウンドオペレーティングシステムをバックグラウンドにおいてアクティブな状態のままにさせる段階を更に備える、請求項１４に記載の方法。
【請求項１６】
前記バックグラウンドオペレーティングシステムに対応する前記カーネルにおいて前記第２の信号を受信する段階と、
前記カーネルにおける少なくとも１つのドライバに基づいて、前記少なくとも１つのドライバにより制御される前記デバイス内の機器の保存された状態を復元させる段階と、
前記少なくとも１つのドライバに基づいて、前記機器を制御させる段階とを更に備える、請求項１２から１５のいずれか一項に記載の方法。
【請求項１７】
前記バックグラウンドオペレーティングシステムをフォアグラウンドに移動させる段階を更に備える、請求項１６に記載の方法。
【請求項１８】
少なくとも１つのデバイスを備え、
請求項１２から１７のいずれか一項に記載の方法を実行するように構成される、システム。
【請求項１９】
請求項１２から１７のいずれか一項に記載の方法を実行するように構成される、チップセット。
【請求項２０】
コンピュータにより実行されると、前記コンピュータに請求項１２から１７のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項２１】
複数のオペレーティングシステムに関係する動的な再割り当てに基づいたマルチオペレーティングデバイスであるデバイスであって、
請求項１２から１７のいずれか一項に記載の方法を実行するように構成される、デバイス。
【請求項２２】
請求項１２から１７のいずれか一項に記載の方法を実行する手段を備える、デバイス。
【請求項２３】
請求項２０に記載のコンピュータプログラムを格納する、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子デバイスに関し、より具体的には、デバイスをリブートすることを必要とせずに複数の異なるオペレーティングシステム間を迅速に移動することができるデバイスに関する。
【背景技術】
【０００２】
デバイスは、デバイス内の機器の動作を容易にするオペレーティングシステム（ＯＳ）を備える場合がある。例えばＯＳは、機器用の様々なドライバ、ファイル取扱および処理ユーティリティ、デバイスとのユーザインタラクションを容易にし得るユーザインターフェースソフトウェア等を備え得る。これはデバイスが機能するのに必要とされる全てであるので、デバイスは従来、１つのＯＳのみを備えていた。しかし、様々なソースから様々な異なる複数のタイプのオペレーティングシステムを導入することで、マルチオペレーティングシステムデバイスに対する関心が生じてきた。例えば、モバイルコンピューティングデバイスのユーザは、デバイスが（例えば、外部電源および有線ネットワークにより）定置状態で用いられる場合にはより信頼性の高いＯＳを使用することを希望する場合があり、デバイスが移動式である場合にはより効率的にされて、電力効率の良い等のＯＳに切り替える場合がある。このように、ユーザは、完全に異なる複数の動作シナリオでデバイスの全ての機能を活用することがある。
【０００３】
デバイス内で２つ以上のＯＳを使用することは一見したところ有益であり得るが、そのようなシステムの実際の実装が現在、問題となっている。既存の複数の解決法は、都合よくあるＯＳから別のＯＳへと移行することを可能にしない。これらの解決法は例えば、別のＯＳへと移動するときに、デバイスがリブートされてあるＯＳから別のものに変更され、あるＯＳのアクティビティを完全に中断すること等を必要とする場合がある。結果として、ユーザには、２つ以上のＯＳの使用をわずらわしいものとする遅延および／または望ましくない制約がもたらされる。また、１つのオペレーティングシステムのインスタンスが別のＯＳ内で事実上実行されて、それにより２つ以上のＯＳがデバイス内で同時にアクティブとなることを可能にすることはできるであろう。そのような解決法は、複数の異なるオペレーティングシステム間を迅速に移動する柔軟性を提供し得るが、全てのオペレーティングシステムが受け入れ可能な形で実行するようにこの解決法を実装するのに必要とされる処理および電力リソースは、特定の実装に対しては適切なものとならず、処理能力および／またはバッテリ寿命が懸念事項となる（例えば、モバイル通信および／またはコンピューティングデバイス）。
【図面の簡単な説明】
【０００４】
特許請求される主題の様々な実施形態における複数の特徴および利点は、図面を参照して以下の詳細な説明が進行するにつれて明らかとなるであろう。同一の符号は、同一の部分を指す。
【図１】本開示の少なくとも一実施形態によるマルチＯＳデバイスに対する動的な再割り当てのために構成された例示的なデバイスを図示する。
【図２】本開示の少なくとも一実施形態による、使用可能なデバイスのための例示的な構成を図示する。
【図３】本開示の少なくとも一実施形態による動的な再割り当ての例を図示する。
【図４】本開示の少なくとも一実施形態によるマルチＯＳデバイスに対する動的な再割り当ての複数の例示的な動作を図示する。以下の詳細な説明は、例示的な複数の実施形態を参照して進行するが、それらの多くの代替形態、変更形態、および変形形態が当業者には明らかであろう。
【発明を実施するための形態】
【０００５】
本願は、マルチＯＳデバイスに対する動的な再割り当てを対象とする。一実施形態においてデバイスは、例えば、デバイス動作をサポートするための機器と、少なくとも２つのオペレーティングシステムと、ＯＳ、機器、および仮想マシンマネージャ（ＶＭＭ）との間にインターフェースを提供する各ＯＳのためのカーネルとを備え得る。各ＯＳにおける複数のＯＳ選択エージェントは、ＶＭＭ内のカーネルモードコントローラ（ＫＭＣ）と更にインタラクトし得る。動作の一例において、フォアグラウンドＯＳにおけるＯＳ選択エージェントは、バックグラウンドＯＳをフォアグラウンドに移動させる命令を受信し得る。次にＯＳ選択エージェントは、ＫＭＣにメッセージを送信して、フォアグラウンドＯＳがバックグラウンドに移行すべきであり、バックグラウンドＯＳがフォアグラウンドに移行すべきであると命令し得る。ＫＭＣは、複数の信号（例えば、仮想パワーボタン信号）をフォアグラウンドおよびバックグラウンドオペレーティングシステムのカーネルに送信して変更を開始し得る。例えば、複数の信号は、フォアグラウンドＯＳカーネルにおける少なくとも１つのドライバに現在の機器の状態を保存させて、機器に対する制御を解放しつつ、バックグラウンドＯＳカーネルにおける少なくとも１つのドライバに、保存された機器の状態を復元させて機器を制御させることもできる。次にフォアグラウンドＯＳは、バックグラウンドで継続して実行され得るが、バックグラウンドＯＳはフォアグラウンドに移動する。
【０００６】
一実施形態において、マルチＯＳデバイスは、例えば、デバイス内の複数の動作をサポートする機器と、少なくとも２つのオペレーティングシステムと、少なくとも２つのオペレーティングシステムおよびＶＭＭの各々に対応する複数のカーネルとを備え得る。少なくとも２つのオペレーティングシステムは各々、ＯＳ選択エージェントを含み得る。これらのカーネルは、機器と少なくとも２つのオペレーティングシステムとの間のインタラクションを容易にし得る。ＶＭＭは、ＯＳ選択エージェントから受信された命令に基づいて、少なくとも２つのオペレーティングシステムのうちの少なくとも１つの動作状態を制御する少なくとも１つのＫＭＣを備え得る。
【０００７】
一実施形態において、少なくとも２つのオペレーティングシステムは、デバイスにロードされた少なくとも１つのフォアグラウンドＯＳおよびバックグラウンドＯＳを備える。少なくとも１つのＯＳ選択エージェントは、フォアグラウンドオペレーティングシステムを変更するトリガを感知し得、トリガは、イベント、コマンド、ハードウェアベースのユーザインターフェース、またはソフトウェアベースのユーザインターフェースのうちの少なくとも１つにより生成される。少なくとも１つのＯＳ選択エージェントは、少なくともＫＭＣに命令を更に送信して、フォアグラウンドＯＳをバックグラウンドに移行させ、バックグラウンドＯＳをフォアグラウンドに移行させ得る。動作状態を制御するＫＭＣは、少なくとも１つのカーネルに信号を送信するＫＭＣを備える。信号は例えば、仮想パワーボタン信号であってもよい。
【０００８】
同一または異なる実施形態において、フォアグラウンドＯＳに対応するカーネルは、少なくとも１つのドライバを備え得、フォアグラウンドＯＳに対応するカーネルは、信号を受信したときに少なくとも１つのドライバに現在の機器の状態を保存させ、機器に対する制御を解放する。フォアグラウンドＯＳに対応するカーネルは更に、フォアグラウンドＯＳをバックグラウンドで依然としてアクティブな状態にさせ得る。バックグラウンドＯＳに対応するカーネルは、少なくとも１つのドライバを備え得、バックグラウンドＯＳに対応するカーネルは、信号を受信したときに少なくとも１つのドライバに保存された機器の状態を復元させ、機器を制御させる。バックグラウンドＯＳに対応するカーネルは更に、バックグラウンドオペレーティングシステムをフォアグラウンドに移動させ得る。一実施形態において、少なくとも１つのカーネルは、機器にアクセスする少なくとも２つのオペレーティングシステムにより共有されたドライバを備え得る。本開示に即した、デバイス上で複数のオペレーティングシステム間を移動する例示的な方法は、少なくとも１つのＫＭＣを備えたＶＭＭにおいてフォアグラウンドＯＳからバックグラウンドＯＳへと移行する要求を受信する段階と、ＫＭＣからフォアグラウンドＯＳに対応するカーネルに信号を送信してフォアグラウンドオペレーティングシステムを非アクティブにさせる段階と、ＫＭＣからフォアグラウンドＯＳに対応するカーネルへと信号を送信して、バックグラウンドオペレーティングシステムをアクティブにさせる段階とを備え得る。
【０００９】
図１は、本開示の少なくとも一実施形態によるマルチＯＳデバイスに対する動的な再割り当てのために構成された例示的なデバイス１００を図示する。デバイス１００の複数の例は、グーグルコーポレーションのアンドロイド（登録商標）ＯＳ、アップルコーポレーションのｉＯＳ（登録商標）、マイクロソフトコーポレーションのウィンドウズ（登録商標）ＯＳ、アップルコーポレーションのＭａｃ  ＯＳ、リナックス（登録商標）ファウンデーションのタイゼンＯＳ、モジラプロジェクトのファイヤフォックスＯＳ、ブラックベリコーポレーションのブラックベリ（登録商標）ＯＳ、ヒューレットパッカードコーポレーションのパーム（登録商標）ＯＳ、シンビアンファウンデーションのシンビアン（登録商標）ＯＳ等に基づくセルラハンドセットまたはスマートフォンのようなモバイル通信デバイス、アップルコーポレーションのｉＰａｄ（登録商標）、マイクロソフトコーポレーションのサーフェス（登録商標）、サムスンコーポレーションのギャラクシータブ（登録商標）、アマゾンコーポレーションのキンドルファイヤ（登録商標）等のタブレットコンピュータのようなモバイルコンピューティングデバイス、インテルコーポレーションにより製造される低電力チップセットを含むウルトラブック（登録商標）、ネットブック、ノートブック、ラップトップ、パームトップ等、インテルコーポレーションのネクスト・ユニット・オブ・コンピューティング（ＮＵＣ）プラットフォーム等のデスクトップコンピュータ、サーバ、スマートテレビ、スモールフォームファクタコンピューティングソリューション（例えば、空間が限定されたアプリケーション、ＴＶセットトップボックス等）のような通常、固定したコンピューティングデバイスを備え得るが、これらに限定されない。デバイス１００は、例えば、機器１０２と、ＶＭＭ１０４と、ＯＳ１０６Ａ、ＯＳ１０６Ｂ...ＯＳ１０６ｎ（集合的に「ＯＳ１０６Ａ...ｎ」）等の複数のオペレーティングシステムと、ＯＳ１０６Ａに対応するカーネル１０８Ａ、ＯＳ１０６Ｂに対応するカーネル１０８Ｂ...ＯＳ１０６ｎに対応するカーネル１０８ｎ（集合的に「カーネル１０８Ａ...ｎ」）のような複数のオペレーティングシステムの各々に対応するカーネルとを備え得る。３つのオペレーティングシステム１０６Ａ...ｎがデバイス１００において図示されているが、本開示に即した複数の実施形態は、３つのオペレーティングシステムのみに限定されず、例えばデバイス１００の機能に応じて、例えば２つのオペレーティングシステムのみ、または４つ以上のオペレーティングシステムを含み得る。
【００１０】
機器１０２は例えば、デバイス１００内にあるか、またはデバイス１００に少なくとも結合されたハードウェアを備え得、当該ハードウェアは、様々な機能性をサポートし、容易にすることなどをなし得る。いくつかの機器１０２は、ＯＳ１０６Ａ...ｎの間で切り替えることを試みる場合にはより問題となり得る。例えば、レイテンシに敏感であり、および／またはパフォーマンスインテンシブな機器１０２は、ＯＳ１０６Ａ...ｎの間で切り替えることの抵抗物となり得る。具体的には、既存のマルチＯＳスイッチングソリューションにより引き起こされる離脱、遅延、再接続等は、レイテンシに敏感であり、および／またはパフォーマンスインテンシブな機器１０２に機能不良を生じさせ、デバイス１００の他の箇所等で機能不良を生じさせ得る。デバイス１００の内部に存在し得るか、またはこれに結合され得るレイテンシに敏感な機器１０２の複数の例としては、通信インターフェース、メモリインターフェース、タッチコントローラ、センサ等が挙げられ得るが、これらに限定されない。
【００１１】
デバイス１００の内部に存在し得るか、またはこれに結合され得るパフォーマンスインテンシブな機器１０２の複数の例としては、グラフィクスコントローラ、媒体処理エンジン、オーディオ／ビデオキャプチャ機器等のようなユーザインターフェース（ＵＩ）装置が挙げられ得るが、これらに限定されない。
【００１２】
ＯＳ１０６Ａ...ｎは、デバイス１００において機器１０２の動作を管理するように構成され得るソフトウェアの複数の集合体を備え得る。ＯＳ１０６Ａ...ｎは販売会社により製造されてもよく、自由な使用のためのユーザコミュニティ（例えば、「オープンソース」）によりコンパイルされてもよく、あるいはプライベート／公共モデルのハイブリッドであってもよい。ＯＳ１０６Ａ...ｎの複数の例としては、マイクロソフトコーポレーションのディスクオペレーティングシステム（ＤＯＳ）、ウィンドウズ（登録商標）、ＩＯ、アンドロイド、オープングループのＵｎｉｘ（登録商標）ＯＳ、（例えば、様々な公共および営利目的の双方の流通を含む）リナックス（登録商標）ファウンデーションのＬｉｎｕｘ（登録商標）ＯＳ、ジョリクラウドのジョリクラウドＯＳ等が挙げられ得るが、これらに限定されない。ＯＳ１０６Ａ...ｎは、カーネル１０８Ａ...ｎに関連付けられ得る。カーネル１０８Ａ...ｎは、ＯＳ１０６Ａ...ｎと機器１０２との間のインターフェースとして機能し得る複数のソフトウェアリソースを備える。各カーネル１０８Ａ...ｎは、機器１０２を動作させるための少なくとも１つのドライバを備え得る。デバイス１００の通常の動作中に、ＯＳ１０６Ａ...ｎは、機器１０２における様々なハードウェアリソースにアクセスするべくシステムの呼び出しを行い得る。カーネル１０８Ａ...ｎは、これらの呼び出しを管理して、呼び出しを機器１０２内の適切なハードウェアに割り当て得る。
【００１３】
デバイス１００のＶＭＭ１０４は、少なくとも１つの仮想マシン（ＶＭ）がデバイス１００内で動作し得るように「仮想化」され得る。ＶＭは、デバイスハードウェアのソフトウェアベースのエミュレーションであってもよい。仮想化は、２つ以上のＶＭが単一のハードウェアプラットフォーム上で動作することができ得る点で有益であり得る。更に、仮想化は、ＯＳがデバイス上の複数のリソースにアクセスし得るインターフェースを標準化し得、従ってＯＳが特定のデバイスに基づいてデバイスハードウェアにアクセスするインターフェースをカスタマイズする必要性を省く。更に、仮想化により、物理的ハードウェアが利用可能となり得ない場合にソフトウェアが動作することを可能にし、また１つのＶＭにおけるソフトウェアのクラッシュがデバイス動作全体に影響しないようにデバイスの他のソフトウェアから分離されることを可能にし得る。一実施形態において、ＶＭＭ１０４は、デバイス１００上で実行される少なくとも１つのＶＭの動作を管理し得る。ＶＭＭ１０４は、複数のハードウェアリソースへのアクセスを管理することによりデバイス１００における安定性およびセキュリティを維持するのに役立ち得る。ＶＭＭ１０４は、デバイス１００におけるＯＳ１０６Ａ...ｎよりも高いレベルのセキュリティで動作し、従ってＯＳ１０６Ａ...ｎにおいて動作し得るいずれの悪意のあるソフトウェア（例えばマルウェア）からも攻撃を受けるようにはなり得ない。
【００１４】
一実施形態において、ＯＳ１０６Ａは、ＯＳ選択エージェント１１０Ａを備え得、ＯＳ１０６Ｂは、ＯＳ選択エージェント１１０Ｂを備え得、ＯＳ１０６ｎは、ＯＳ選択エージェント１１０ｎ（集合的に「ＯＳ選択エージェント１１０Ａ...ｎ」）を備え得る。ＯＳ選択エージェント１１０Ａ...ｎは、どのＯＳ１０６Ａ...ｎがフォアグラウンドにあるかを変更する複数のトリガを感知するべく、ＯＳ１０６Ａ...ｎのバックグラウンドで実行されるプログラムであってもよい。一実施形態において、ＯＳ選択エージェント１１０Ａ...ｎは、アンドロイドＯＳにおいて存在するような「ウェイクロック」を備え得、特定のＯＳ１０６Ａ...ｎがバックグラウンドにおいて動作する場合に、ＯＳ選択エージェント１１０Ａ...ｎがＳ３スリープ状態（例えば、完全に非アクティブ状態）にされるのを防止する。例えば、トリガは、デバイス１００におけるイベント、コマンド、またはハードウェアベースまたはソフトウェアベースのユーザインターフェースとのインタラクションにより生成され得る。例えば、ユーザは、フォアグラウンドＯＳ（例えば、ユーザがインタラクトし得るＯＳ１０６Ａ...ｎ）をバックグラウンドＯＳ（例えば、現在フォアグラウンドにない別のＯＳ１０６Ａ...ｎ）に代えることを希望する場合があり、ハードウェアベースまたはソフトウェアベースのボタンとのインタラクトに進んで変更を生じさせ得る。フォアグラウンドＯＳを自動的に変更させるイベントまたはコマンドを生成することも可能であり得る。
【００１５】
少なくとも１つのＯＳ選択エージェント１１０Ａ...ｎは、ＶＭＭ１０４におけるＫＭＣ１１２にメッセージを送信し得る。ＶＭＭ１０４は、ＫＭＣ１１２が存在する適切な位置（例えば、適切なレベルのセキュリティがあるアクセス可能な位置）を専ら提供し、ＫＭＣ１１２は、本開示に即したデバイス１００内の他の複数の位置に存在し得ることに留意することが重要である。ＫＭＣ１１２は、フォアグラウンドＯＳおよびバックグラウンドＯＳに対応するカーネル１０８Ａ...ｎに信号を送信することにより、少なくとも１つのＯＳ１０６Ａ...ｎの状態を制御し得る。一実施形態において、信号は、パワーダウンデバイス１００のアクションを実質的に模倣する「仮想パワーボタン」信号であってもよい。仮想パワーボタン信号は、標準の電力ボタンをエミュレートしてもよく、または一実施形態においてＯＳ１０６Ａ...ｎの移行に関連付けられた特定の動作を生じさせるようにカスタマイズされてもよい。これらの信号は、フォアグラウンドＯＳがバックグラウンドで継続して実行されることを可能にし、バックグラウンドＯＳがフォアグラウンドに移動することを可能にする様々なアクティビティを、フォアグラウンドＯＳおよびバックグラウンドＯＳに対応するカーネル１０８Ａ...ｎに実行させ得る。これらのアクティビティは、フォアグラウンドＯＳが機器１０２に対する制御をバックグラウンドＯＳに譲渡して、フォアグラウンドに移動し得るように、カーネル１０８Ａ...ｎにおいて少なくとも１つのドライバの動作状態を変更することを含んでもよい。これらのアクティビティのより具体的な例は、図３に関連して更に検討される。
【００１６】
図２は、本開示の少なくとも一実施形態による、使用可能なデバイス１００'のための例示的な構成を図示する。具体的には、デバイス１００'は、図１に開示されるもの等の例示的な機能を実行することができ得る。しかし、デバイス１００'は、本開示に即した複数の実施形態において使用可能な例示的装置としてのみ意図されており、これら様々な実施形態を実装のいずれの特定の態様にも限定することを意図していない。
【００１７】
デバイス１００'は例えば、複数のデバイス動作を管理するように構成されたシステムモジュール２００を備え得る。システムモジュール２００は例えば、処理モジュール２０２、メモリモジュール２０４、電力モジュール２０６、ユーザインターフェースモジュール２０８、および通信インターフェースモジュール２１０を含み得る。デバイス１００'は、通信モジュール２１２、ＶＭＭ１０４'、およびＯＳ選択エージェント１１０Ａ...ｎ'も含み得る。通信モジュール２１２、ＶＭＭ１０４'、およびＯＳ選択エージェント１１０Ａ...ｎ'は、システムモジュール２００とは別個のものとして図示されているが、図２に示される例示的な実装は、説明のためにのみ提供されている。通信モジュール２１２、ＶＭＭ１０４'、およびＯＳ選択エージェント１１０Ａ...ｎ'に関連付けられた機能のいくつかまたは全てが、システムモジュール２００に組み込まれ得る。
【００１８】
デバイス１００'において、処理モジュール２０２は、別個のコンポーネントに位置する１または複数のプロセッサと、または代替的に単一のコンポーネント（例えば、システムオンチップ（ＳｏＣ）構成）において実施される１または複数のプロセッシングコアと、任意のプロセッサ関連のサポート回路（例えば、ブリッジインターフェース等）を備え得る。例示的な複数のプロセッサとしては、Ｐｅｎｔｉｕｍ（登録商標）、Ｘｅｏｎ、Ｉｔａｎｉｕｍ、Ｃｅｌｅｒｏｎ、Ａｔｏｍ、Ｃｏｒｅ  ｉシリーズ製品ファミリにおけるものを含むインテルコーポレーション、Ａｄｖａｎｃｅｄ  ＲＩＳＣ（例えば、縮小命令セットコンピューティング）Ｍａｃｈｉｎｅ、または「ＡＲＭ」プロセッサ等から入手可能な様々なｘ８６ベースのマイクロプロセッサが挙げられ得るが、これらに限定されない。サポート回路の例としては、処理モジュール２０２が、デバイス１００'において異なるスピードで、異なるバス上などで動作し得る他の複数のシステムコンポーネントとインタラクトし得るインターフェースを提供するように構成されたチップセット（例えば、インテルコーポレーションから入手可能なノースブリッジ、サウスブリッジ等）が挙げられ得る。サポート回路に一般に関連付けられた機能のいくつかまたは全ては、プロセッサ（例えば、インテルコーポレーションから入手可能なＳａｎｄｙ  Ｂｒｉｄｇｅファミリのプロセッサ等）と同一の物理的パッケージにも含まれ得る。
【００１９】
処理モジュール２０２は、デバイス１００'において様々な命令を実行するように構成され得る。複数の命令としては、処理モジュール２０２にデータの読み取り、データの書き込み、データの処理、データのフォーミュレート、データの転換、データの変換等に関連する複数のアクティビティを実行させるように構成されたプログラムコードが挙げられ得る。情報（例えば、命令、データ等）は、メモリモジュール２０４に格納され得る。メモリモジュール２０４は、固定またはリムーバブルフォーマットのランダムアクセスメモリ（ＲＡＭ）またはリードオンリメモリ（ＲＯＭ）を備え得る。ＲＡＭとしては、例えばスタティックＲＡＭ（ＳＲＡＭ）またはダイナミックＲＡＭ（ＤＲＡＭ）等、デバイス１００'の動作中に情報を保持するように構成された揮発性メモリが挙げられ得る。ＲＯＭとしては、ＢＩＯＳ、ＵＥＦＩ等に基づいて、デバイス１００'が起動されると命令を提供するように構成された不揮発性（ＮＶ）メモリモジュール、電子的プログラマブルＲＯＭ（ＥＰＲＯＭ）、フラッシュ等のようなプログラマブルメモリが挙げられ得る。他の固定／リムーバブルメモリとしては、例えばフロッピー（登録商標）ディスク、ハードドライブ等のような磁気メモリ、ソリッドステートフラッシュメモリ（例えば、組み込みマルチメディアカード（ｅＭＭＣ）等）のような電子メモリ、リムーバブルメモリカードもしくはスティック（例えば、マイクロストレージデバイス（μＳＤ）、ＵＳＢ等）、コンパクトディスクベースのＲＯＭ（ＣＤ−ＲＯＭ）、デジタルビデオディスク（ＤＶＤ）、ブルーレイディスク等のような光メモリが挙げられ得るが、これらに限定されない。
【００２０】
電力モジュール２０６としては、内部電源（例えば、バッテリ、燃料電池等）および／または外部電源（例えば、電子機械的もしくは太陽発電機、パワーグリッド、燃料電池等）、ならびにデバイス１００'に動作するのに必要とされる電力を供給するように構成された関連回路が挙げられ得る。ユーザインターフェースモジュール２０８は、ユーザが、例えば様々な入力メカニズム（例えば、マイク、スイッチ、ボタン、ノブ、キーボード、スピーカ、タッチ感応表面、画像をキャプチャし、および／または近接、距離、動き、ジェスチャ、方向等を感知するように構成された１または複数のセンサ）、ならびに様々な出力メカニズム（例えば、スピーカ、ディスプレイ、点灯／点滅インジケータ、振動や動き用の電子機械コンポーネント等）など、デバイス１００'とインタラクトすることを可能にするハードウェアおよび／またはソフトウェアを含み得る。ユーザインターフェースモジュール２０８におけるハードウェアは、デバイス１００'内に組み込まれてもよく、および／または有線または無線通信媒体を介してデバイス１００'に結合されてもよい。
【００２１】
通信インターフェースモジュール２１０は、通信モジュール２１２のためのパケットルーティングおよび他の複数の制御機能を管理するように構成され得る。通信モジュール２１２は、有線および／または無線通信をサポートするように構成された複数のリソースを含み得る。いくつかの例において、デバイス１００'は、（例えば、有線プロトコルおよび／または無線受信機用の別個の物理インターフェースモジュールを含む）２つ以上の通信モジュール２１２を備え得、これら全ては、集中通信インターフェースモジュール２１０により管理される。有線通信としては、例えばイーサネット（登録商標）、ユニバーサルシリアルバス（ＵＳＢ）、ファイヤーワイヤ、デジタルビデオインターフェース（ＤＶＩ）、高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））等のような直列および並列に配線された媒体が挙げられ得る。無線通信としては、例えば、近接無線媒体（例えば、近距離無線通信（ＮＦＣ）規格、赤外線（ＩＲ）等に基づいたような無線周波数（ＲＦ））、短距離無線媒体（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷＬＡＮ、Ｗｉ−Ｆｉ等）、長距離無線媒体（例えば、セルラ広域無線通信技術、衛星に基づく通信等）、または音波による電子通信が挙げられ得る。一実施形態において、通信インターフェースモジュール２１０は、通信モジュール２１２においてアクティブな複数の無線通信が互いに干渉するのを防止するように構成され得る。この機能を実行するときに、通信インターフェースモジュール２１０は、例えば送信を待っている複数のメッセージの相対的優先順位に基づいて通信モジュール２１２に対する複数のアクティビティをスケジューリングしてもよい。図２に開示される実施形態は、通信モジュール２１２とは別個の通信インターフェースモジュール２１０を図示するが、通信インターフェースモジュール２１０および通信モジュール２１２の機能が同一のモジュール内に組み込まれることも可能であり得る。
【００２２】
図２に開示される例において、ＯＳ選択エージェント１１０Ａ...ｎ'は、少なくともユーザインターフェースモジュール２０８およびＶＭＭ１０４'におけるＫＭＣ１１２'とインタラクトするように構成され得る。ＶＭＭ１０４'は、少なくともＯＳ選択エージェント１１０Ａ...ｎ'およびメモリモジュール２０２とインタラクトするように構成され得る。動作例において、ユーザは、ユーザインターフェースモジュール２０８における複数のハードウェアベースのコンポーネント（例えば、ハードウェアボタン、スイッチ等）またはソフトウェアベースのコンポーネント（例えば、スクリーンボタン、アイコン等）とインタラクトして、デバイス１００'のバックグラウンドにあるＯＳ１０６Ａ...ｎをフォアグラウンドに移動させ得る。ＯＳ１０６Ａ...ｎにおける少なくとも１つのＯＳ選択エージェント１１０Ａ...ｎ'は、ユーザインターフェースモジュール２０２とのユーザインタラクションを感知し得、次にＫＭＣ１１２'に命令を送信し得る。次にＫＭＣ１１２'は、少なくとも１つの信号（例えば、仮想パワーボタン信号）をメモリモジュール２０４内に存在するカーネル１０８Ａ...ｎに送信して、フォアグラウンド／バックグラウンドＯＳの移行を生じさせ得る。
【００２３】
図３は、本開示の少なくとも一実施形態による動的な再割り当ての例を図示する。図３は、フォアグラウンドＯＳ１０６Ａをバックグラウンドに移行させ、バックグラウンドＯＳ１０６Ｂをフォアグラウンドに移行させるときに行われ得る例示的な動作を開示する。例えば、ＯＳ選択エージェント１１０Ａは、移行トリガを感知し得、次にメッセージをＶＭＭ１０４におけるＫＭＣ１１２に送信し、ＯＳ１０６Ｂがデバイス１００においてフォアグラウンドに移行するべきことを命令し得る。メッセージ３００の受信に応答して、ＫＭＣ１１２は次に仮想パワーボタン信号３０２をカーネル１０８Ａ'に送信し得る。機器１０２に対する制御を譲渡する前に、仮想パワーボタン信号３０２は３０６に示されるように、複数のデバイスドライバ３０４Ａに機器１０２の現在の状態を保存させ得る。機器１０２の現在の状態の保存は、通常のパワーダウン手順によれば慣例的であり得る。ＫＭＣ１１２は３０８に示されるように、仮想パワーボタン信号をカーネル１０８Ｂ'にも送信し得る。カーネル１０８Ｂ'への仮想パワーボタン信号３０８の送信は、例えば、設定された時間遅延の後、仮想パワーボタン信号３０２の受信または機器１０２に対する制御の解放がカーネル１０８Ａ'により確認された後等に、仮想パワーボタン信号３０２と実質的に同時に行われ得る。仮想パワーボタン３０８は３１０に示されるように、複数のデバイスドライバ３０４Ｂに機器１０２の既に保存された状態を復元させ、機器１０２に対する制御を開始（または再開）させ得る。３１０に示すように既に保存された状態を復元することは、複数のデバイスドライバ３０４Ｂが機器１０２を制御していた最後の状態に対応する複数のデバイスドライバ３０４Ｂにおける複数の設定を復元することを含み得る。複数のデバイスドライバ３０４Ｂを復元した後、ＯＳ１０６Ｂは３１２に示されるように、デバイス１００のフォアグラウンドにおける複数の動作を開始（または再開）し得る。ＯＳ１０６Ａは、デバイス１００のバックグラウンドにおいて継続してアクティブであり得る。具体的には、ＯＳ１０６Ａは機器１０２にアクセスすることなく、可能な限り通常モードでなおも継続して動作し得る。従って、フォアグラウンドとバックグラウンドＯＳ１０６Ａ...ｎとの間の移行は、比較的迅速に進行し得る。バックグラウンドＯＳ１０６Ａ...ｎは、完全には休止（例えば、スリープ状態）していないからである。
【００２４】
一実施形態において、ＫＭＣ１１２は、フォアグラウンドからバックグラウンドＯＳ１０６Ａ...ｎへの変更を迅速に容易にするべく、フォアグラウンドおよびバックグラウンドＯＳ１０６Ａ...ｎを追跡し続け得る。更に、いくつかのデバイスドライバ３０４Ａおよび／または３０４Ｂは、ＯＳ１０６Ａ...ｎの間で共有され得る。例えば、複数のデバイスドライバ３０４Ａはネイティブドライバ（例えば、アンドロイドＯＳに関連付けられる）として機能し得るが、複数のデバイスドライバ３０４Ｂは、パススルードライバ（例えば、ウィンドウズ（登録商標）オペレーティングシステムに関連付けられる）として機能し得る。ＯＳ１０６Ｂが機器１０２にアクセスする（例えば、ネットワーク通信、データストレージ等にアクセスする）ように要求される場合、複数のデバイスドライバ３０４Ｂ（例えば、「フロントエンド」ドライバとして機能する）は、アクセスを容易にする複数のデバイスドライバ３０４Ａ（例えば、「バックエンド」ドライバとして機能する）に依存し得る。
【００２５】
図４は、本開示の少なくとも一実施形態によるマルチＯＳデバイスに対する動的な再割り当ての複数の例示的な動作を図示する。図４に示される複数の例示的な動作は、デバイス内におけるＶＭＭ内部のＫＭＣの視点からのものであり得る。動作４００において、（例えば、少なくとも１つのＯＳ選択エージェントからのＫＭＣにおいて）要求が受信され、フォアグラウンドＯＳをバックグラウンドＯＳに代え得る。動作４０２において、移行要求を受信すると、信号（例えば、仮想パワーボタン信号）は、（例えば、ＫＭＣにより）フォアグラウンドカーネルに送信され得る。仮想パワーボタン信号は、フォアグラウンドカーネルにおける複数のデバイスドライバに現在の機器の状態を少なくとも保存させ、機器に対する制御を解放させ得る。次に別の仮想パワーボタン信号が動作４０４においてバックグラウンドＯＳに送信され得、第２の仮想パワーボタンは、バックグラウンドＯＳにおける少なくとも複数のデバイスドライバに既に保存された機器を復元させ、機器の制御を開始させる。仮想パワーボタン信号を送信した結果として、フォアグラウンドＯＳは、バックグラウンドに移行し得、バックグラウンドＯＳは、フォアグラウンドに移行し得る。
【００２６】
図４は一実施形態による複数の動作を図示するが、図４に図示される複数の動作の全てが複数の他の実施形態に必要であるわけではないことを理解されたい。現に、本開示の複数の他の実施形態において、図４に図示される複数の動作および／または本明細書で説明される複数の他の動作が図面のいずれかにおいて具体的に示されない態様で組み合わされるが、本開示となおも完全に一致し得ることが本明細書において十分に企図されている。従って、ある図面に正確に示されていない複数の特徴および／または動作を対象とする特許請求の範囲が本開示の範囲および内容の中にあるとみなされる。
【００２７】
本願および特許請求の範囲において用いられるように、「および／または」という用語で接続される複数の項目の一覧は、列挙された複数の項目の任意の組み合わせを意味し得る。例えば、「Ａ、Ｂ、および／またはＣ」という文言は、Ａ、Ｂ、Ｃ、ＡおよびＢ、ＡおよびＣ、ＢおよびＣ、またはＡ、ＢおよびＣを意味し得る。本願および特許請求の範囲において用いられるように、「のうちの少なくとも１つ」という用語で接続された複数の項目の一覧は、列挙された複数の用語の任意の組み合わせを意味し得る。例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つ」という文言は、Ａ、Ｂ、Ｃ、ＡおよびＢ、ＡおよびＣ、ＢおよびＣ、またはＡ、ＢおよびＣを意味し得る。
【００２８】
本明細書の任意の実施形態において用いられるように、「モジュール」という用語は、前述の複数の動作のいずれかを実行するように構成されたソフトウェア、ファームウェア、および／または回路を指し得る。ソフトウェアは、非一時的コンピュータ可読ストレージ媒体上に記録されたソフトウェアパッケージ、コード、命令、命令セット、および／またはデータとして実施され得る。ファームウェアは、メモリデバイス内にハードコーディングされた（例えば、不揮発性の）コード、命令もしくは命令セット、および／またはデータとして実施され得る。  本明細書の任意の実施形態において用いられる「回路」は、例えば単体または任意の組み合わせでハードワイヤード回路、１または複数の個別の命令プロセッシングコアを有するコンピュータプロセッサのようなプログラマブル回路、ステートマシン回路、および／またはプログラマブル回路により実行される複数の命令を格納するファームウェアを備え得る。モジュールは、集合的または個別に、例えば、集積回路（ＩＣ）、システムオンチップ（ＳｏＣ）、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォン等、より大きなシステムの一部を形成する回路として実施されてもよい。
【００２９】
本明細書に説明される複数の動作のいずれも、１または複数のプロセッサにより実行されると、複数の方法を実行する命令を個別にまたは組み合わせて格納した１または複数のストレージ媒体（例えば、非一時的ストレージ媒体）を含むシステムに実装され得る。ここではプロセッサは、例えばサーバＣＰＵ、モバイルデバイスＣＰＵ、および／または他のプログラマブル回路を含み得る。また、本明細書において説明される複数の動作は、２つ以上の異なる物理的位置にある処理構造物のような複数の物理デバイス全体にわたり分散され得ることを意図される。ストレージ媒体としては、任意のタイプの有形媒体、例えばハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクトディスク（ＣＤ−ＲＷ）および磁気光ディスクを含む任意のタイプのディスク、リードオンリメモリ（ＲＯＭ）、ダイナミックおよびスタティックＲＡＭ等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、ソリッドステートディスク（ＳＳＤ）、組み込みマルチメディアカード（ｅＭＭＣ）、セキュアデジタル入力／出力（ＳＤＩＯ）カード、磁気もしくは光カード等の半導体デバイス、または複数の電子命令を格納するのに好適な任意のタイプの媒体が挙げられ得る。複数の他の実施形態は、プログラミング可能な制御デバイスにより実行されるソフトウェアモジュールとして実装され得る。
【００３０】
このように、本願はマルチＯＳデバイスに対する動的な再割り当てを対象とする。例示的なデバイスは、機器と、少なくとも２つのオペレーティングシステムと、ＯＳ、機器、および仮想マシンマネージャ（ＶＭＭ）の間にインターフェースを提供する各ＯＳ用のカーネルとを備え得る。各ＯＳにおける複数のＯＳ選択エージェントは、ＶＭＭ内のカーネルモードコントローラ（ＫＭＣ）とインタラクトし得る。例えば、ＯＳ選択エージェントは、フォアグラウンドＯＳをバックグラウンドに移行させ、バックグラウンドＯＳをフォアグラウンドに移行させるようにＫＭＣに命令するメッセージを送信し得る。ＫＭＣは、フォアグラウンドおよびバックグラウンドオペレーティングシステムのカーネルに信号を送信して、フォアグラウンドＯＳカーネルにおける少なくとも１つのドライバに現在の機器の状態を保存させて機器に対する制御を解放させつつ、バックグラウンドＯＳカーネルにおける少なくとも１つのドライバに機器の状態を復元させて機器に対する制御を行うようにもさせ得る。
【００３１】
以下の例は、更なる複数の実施形態に関する。本開示の以下の例は、以下に提供されるように、デバイス、方法、実行されるときに機械に方法に基づいた動作を実行させる複数の命令を格納する少なくとも１つの機械可読媒体、マルチＯＳデバイスに対する動的な再割り当てのための方法および／またはシステムに基づいた複数の動作を実行するための手段等の主題を含み得る。
【００３２】
例１によれば、マルチオペレーティングシステムデバイスが提供される。デバイスは、デバイスにおける複数の動作をサポートする機器と、各々がオペレーティングシステム選択エージェントを有する少なくとも２つのオペレーティングシステムと、少なくとも２つのオペレーティングシステムの各々に対応し、機器と少なくとも２つのオペレーティングシステムとの間のインタラクションを容易にするカーネルと、オペレーティングシステム選択エージェントから受信された命令に基づいて少なくとも２つのオペレーティングシステムのうちの少なくとも１つの動作状態を制御する少なくとも１つのカーネルモードコントローラを有する仮想マシンマネージャとを備え得る。
【００３３】
例２は、例１の複数の要素を含み得、少なくとも２つのオペレーティングシステムは、デバイスにおいてロードされた少なくとも１つのフォアグラウンドオペレーティングシステムおよびバックグラウンドオペレーティングシステムを有する。
【００３４】
例３は、例２の複数の要素を含み得、少なくとも１つのオペレーティングシステム選択エージェントは、フォアグラウンドオペレーティングシステムを変更するトリガを感知し、トリガは、イベント、コマンド、ハードウェアベースのユーザインターフェース、およびソフトウェアベースのユーザインターフェースのうちの少なくとも１つにより生成される。
【００３５】
例４は、例３の複数の要素を含み得、ハードウェアベースのユーザインターフェースは、少なくともハードウェアボタンを備える。
【００３６】
例５は、例３〜４のいずれかの複数の要素を含み得、少なくとも１つのオペレーティングシステム選択エージェントは、フォアグラウンドオペレーティングシステムをバックグラウンドに移行させ、バックグラウンドオペレーティングシステムをフォアグラウンドに移行させる命令を少なくともカーネルモードコントローラに更に送信する。
【００３７】
例６は、例２〜４のいずれかの複数の要素を含み得、少なくとも１つのオペレーティングシステム選択エージェントは、フォアグラウンドオペレーティングシステムを変更するトリガを感知し、トリガは、イベント、コマンド、ハードウェアベースのユーザインターフェース、およびソフトウェアベースのユーザインターフェースのうちの少なくとも１つにより生成され、フォアグラウンドオペレーティングシステムをバックグラウンドに移行させ、バックグラウンドオペレーティングシステムをフォアグラウンドに移行させる命令を少なくともカーネルモードコントローラに送信する。
【００３８】
例７は、例２〜４のいずれかの複数の要素を含み得、動作状態を制御するカーネルモードコントローラは、信号を少なくとも１つのカーネルに送信するカーネルモードコントローラを含む。
【００３９】
例８は、例７の複数の要素を含み得、信号は、仮想パワーボタン信号である。
【００４０】
例９は、例７の複数の要素を含み得、フォアグラウンドオペレーティングシステムに対応するカーネルは、少なくとも１つのドライバを有し、フォアグラウンドオペレーティングシステムに対応するカーネルは、信号を受信すると、少なくとも１つのドライバに現在の機器の状態を保存させて機器に対する制御を解放させる。
【００４１】
例１０は、例９の複数の要素を含み得、フォアグラウンドオペレーティングシステムに対応するカーネルは、更に、フォアグラウンドオペレーティングシステムをバックグラウンドにおいて依然としてアクティブな状態にさせる。
【００４２】
例１１は、例９の複数の要素を含み得、カーネルモードコントローラは更に、第１の信号をフォアグラウンドオペレーティングシステムに送信し、第２の信号をバックグラウンドオペレーティングシステムに送信する。
【００４３】
例１２は、例１１の複数の要素を含み得、カーネルモードコントローラは、第１の信号を送信した後、またはフォアグラウンドオペレーティングシステムが機器に対する制御を解放したとの確認を受信した後の遅延のうちの少なくとも１つの後に第２の信号を更に送信する。
【００４４】
例１３は、例７の複数の要素を含み得、フォアグラウンドオペレーティングシステムに対応するカーネルは、少なくとも１つのドライバを有し、フォアグラウンドオペレーティングシステムに対応するカーネルは、信号を受信すると、少なくとも１つのドライバに現在の機器の状態を保存させて機器に対する制御を解放させ、フォアグラウンドオペレーティングシステムをバックグラウンドにおいて依然としてアクティブな状態にさせる。
【００４５】
例１４は、例７の複数の要素を含み得、バックグラウンドオペレーティングシステムに対応するカーネルは、少なくとも１つのドライバを有し、バックグラウンドオペレーティングシステムに対応するカーネルは、信号を受信すると、少なくとも１つのドライバに保存された機器の状態を復元させて機器を制御させる。
【００４６】
例１５は、例１４の複数の要素を含み得、バックグラウンドオペレーティングシステムに対応するカーネルは、更に、バックグラウンドオペレーティングシステムをフォアグラウンドに移動させる。
【００４７】
例１６は、例７の複数の要素を含み得、バックグラウンドオペレーティングシステムに対応するカーネルは、少なくとも１つのドライバを有し、バックグラウンドオペレーティングシステムに対応するカーネルは、信号を受信すると、少なくとも１つのドライバに保存された機器の状態を復元させて機器を制御させ、バックグラウンドオペレーティングシステムをフォアグラウンドに移動させる。
【００４８】
例１７は、例１〜４のいずれかの複数の要素を含み得、少なくとも１つのカーネルは、機器にアクセスするための少なくとも２つのオペレーティングシステムにより共有されるドライバを有する。
【００４９】
例１８によれば、デバイス上の複数のオペレーティングシステムの間を移動する方法が提供される。本方法は、少なくとも１つのカーネルモードコントローラを含む仮想マシンマネージャにおいてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへと移行する要求を受信する段階と、カーネルモードコントローラからフォアグラウンドオペレーティングシステムに対応するカーネルに信号を送信して、フォアグラウンドオペレーティングシステムを非アクティブにさせる段階と、カーネルモードコントローラからフォアグラウンドオペレーティングシステムに対応するカーネルに信号を送信して、バックグラウンドオペレーティングシステムをアクティブにさせる段階とを備える。
【００５０】
例１９は、例１８の複数の要素を含み得、信号は、仮想パワーボタン信号である。
【００５１】
例２０は、例１８〜１９のいずれかの複数の要素を含み得、フォアグラウンドオペレーティングシステムに対応するカーネルにおいて信号を受信する段階と、カーネルにおける少なくとも１つのドライバに、ドライバにより制御されるデバイス内の機器の現在の状態を保存させる段階と、少なくとも１つのドライバに機器に対する制御を解放させる段階とを更に備え得る。
【００５２】
例２１は、例２０の複数の要素を含み得、フォアグラウンドオペレーティングシステムをバックグラウンドにおいて依然としてアクティブな状態にさせる段階を更に備え得る。
【００５３】
例２２は、例２０の複数の要素を含み得、カーネルモードコントローラからバックグラウンドオペレーティングシステムに対応するカーネルに信号を送信する前に遅延させる段階を更に備え得、遅延は、フォアグラウンドオペレーティングシステムに対応するカーネルに信号を送信した後、またはフォアグラウンドオペレーティングシステムが機器に対する制御を解放したとの確認を受信した後の期間のうち少なくとも１つに基づく。
【００５４】
例２３は、例１８〜１９のいずれかの複数の要素を含み得、フォアグラウンドオペレーティングシステムに対応するカーネルにおいて信号を受信する段階と、カーネルにおける少なくとも１つのドライバに、ドライバにより制御されるデバイス内の機器の現在の状態を保存させる段階と、少なくとも１つのドライバに機器に対する制御を解放させる段階と、フォアグラウンドオペレーティングシステムをバックグラウンドにおいて依然としてアクティブな状態にさせる段階とを更に備え得る。
【００５５】
例２４は、例１８〜１９のいずれかの複数の要素を含み得、バックグラウンドオペレーティングシステムに対応するカーネルにおいて信号を受信する段階と、カーネルにおける少なくとも１つのドライバに、ドライバにより制御されるデバイス内の機器の現在の状態を保存させる段階と、少なくとも１つのドライバに機器を制御させる段階とを更に備え得る。
【００５６】
例２５は、例２４の複数の要素を含み得、バックグラウンドオペレーティングシステムをフォアグラウンドに移動させる段階を更に備え得る。
【００５７】
例２６は、例１８〜１９のいずれかの複数の要素を含み得、バックグラウンドオペレーティングシステムに対応するカーネルにおいて信号を受信する段階と、カーネルにおける少なくとも１つのドライバに、ドライバにより制御されるデバイス内の機器の現在の状態を保存させる段階と、少なくとも１つのドライバに機器を制御させる段階と、バックグラウンドオペレーティングシステムをフォアグラウンドに移動させる段階とを更に備える。
【００５８】
例２７によれば、少なくとも１つのデバイスを含むシステムが提供され、システムは、上記の例１８〜２６のいずれかの方法を実行するように配置されている。
【００５９】
例２８によれば、上記の例１８〜２６のいずれかの方法を実行するように配置されたチップセットが提供される。
【００６０】
例２９によれば、コンピューティングデバイス上で実行されることに応答してコンピューティングデバイスに上記の例１８〜２６のいずれかの方法を実行させる複数の命令を含む、少なくとも１つの機械可読媒体が提供される。
【００６１】
例３０によれば、複数のマルチＯＳデバイスに対する動的な再割り当てのために構成されたデバイスであって、上記の例１８〜２６のいずれかの方法を実行するように配置される、デバイスが提供される。
【００６２】
例３１によれば、デバイス上の複数のオペレーティングシステムの間を移動するためのシステムが提供される。本システムは、少なくとも１つのカーネルモードコントローラを含む仮想マシンマネージャにおいてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへと移行する要求を受信する手段と、カーネルモードコントローラからフォアグラウンドオペレーティングシステムに対応するカーネルに信号を送信して、フォアグラウンドオペレーティングシステムを非アクティブにさせる手段と、カーネルモードコントローラからフォアグラウンドオペレーティングシステムに対応するカーネルに信号を送信して、バックグラウンドオペレーティングシステムをアクティブにさせる手段とを備える。
【００６３】
例３２は、例３１の複数の要素を含み得、信号は、仮想パワーボタン信号である。
【００６４】
例３３は、例３１〜３２のいずれかの複数の要素を含み得、フォアグラウンドオペレーティングシステムに対応するカーネルにおいて信号を受信する手段と、カーネルにおける少なくとも１つのドライバに、ドライバにより制御されるデバイス内の機器の現在の状態を保存させる手段と、少なくとも１つのドライバに機器に対する制御を解放させる手段とを更に備え得る。
【００６５】
例３４は、例３３の複数の要素を含み得、フォアグラウンドオペレーティングシステムをバックグラウンドにおいて依然としてアクティブな状態にさせる手段を更に備え得る。
【００６６】
例３５は、例３１〜３２のいずれかの複数の要素を含み得、バックグラウンドオペレーティングシステムに対応するカーネルにおいて信号を受信する手段と、カーネルにおける少なくとも１つのドライバに、ドライバにより制御されるデバイス内の機器の現在の状態を保存させる手段と、少なくとも１つのドライバに機器を制御させる手段とを更に備え得る。
【００６７】
例３６は、例３５の複数の要素を含み得、バックグラウンドオペレーティングシステムをフォアグラウンドに移動させる手段を更に備え得る。
【００６８】
本明細書において使用されている用語および表現は説明の用語であって、限定の用語ではなく、そのような用語および表現を用いる際に示され、説明される特徴（またはその一部）のいずれの均等物も除外する意図はなく、様々な変更形態が特許請求の範囲内において可能であることを理解されたい。従って、特許請求の範囲がそのような全ての均等物を包含することが意図される。
【図１】
0006415581.tif 000002
【図２】
0006415581.tif 000003
【図３】
0006415581.tif 000004
【図４】
0006415581.tif 000005