(57)【要約】  オペレーティングシステム（ＯＳ）の切換えを実施する方法及び機器を、本明細書で開示する。一実施形態では、複数のＯＳがコンピュータ上で同時に稼動することを可能にすることを含み、複数のＯＳのうち第１のＯＳがアクティブに稼動されている方法は、複数のＯＳのうち、次にアクティブになるべき第２のＯＳを識別すること、第１及び第２のＯＳによってアクセス可能な記憶エリアを用いて、第１のＯＳと第２のＯＳの間で情報を交換すること、休止操作を実施することによって第１のＯＳを非アクティブにさせること、並びに第２のＯＳに動作を再開させるための再開操作を実施することによって、第２のＯＳをアクティブにさせることであって、情報が、休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御することを含む。【選択図】  図１
2011507070.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法であって、前記複数のオペレーティングシステムのうち第１のオペレーティングシステムがアクティブに稼動されている方法において、
複数のオペレーティングシステムのうち、次にアクティブになるべき第２のオペレーティングシステムを識別するステップと、
前記第１及び第２のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間で情報を交換するステップと、
休止操作を実施することによって前記第１のオペレーティングシステムを非アクティブにさせるステップと、
前記第２のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第２のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含む方法。
【請求項２】
システムによって実行されると、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法を前記システムに実施させる命令を格納する１つ又は複数のコンピュータ可読記憶媒体を有する製造品であって、前記複数のオペレーティングシステムのうち第１のオペレーティングシステムがアクティブに稼動されている製造品において、前記方法が、
複数のオペレーティングシステムのうち、次にアクティブになるべき第２のオペレーティングシステムを識別するステップと、
前記第１及び第２のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間で情報を交換するステップと、
休止操作を実施することによって前記第１のオペレーティングシステムを非アクティブにさせるステップと、
前記第２のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第２のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含む、製造品。
【請求項３】
複数のオペレーティングシステムを格納するための１つ又は複数のメモリと、
現在アクティブなオペレーティングシステムを非アクティブにさせ、非アクティブなオペレーティングシステムをアクティブにさせるオペレーティングシステムスイッチャを格納するためのメモリであって、前記スイッチャが、前記複数のオペレーティングシステムによる前記１つ又は複数のメモリの複数の領域へのアクセスを可能にし、アクセスを不能にするためのメモリアクセスコントローラモジュールを備え、前記スイッチャが、前記現在アクティブなオペレーティングシステムを非アクティブにさせ、前記非アクティブなオペレーティングシステムをアクティブにさせるとき、前記メモリアクセスコントローラが、切換えモード中に１つのオペレーティングシステム以外のオペレーティングシステム用の複数のメモリエリアへのアクセスを不能にし、
個々のオペレーティングシステムが、
前記個々のオペレーティングシステムの、アクティブから非アクティブへの遷移を取り扱うための休止操作を実施するための休止コントローラと、
前記個々のオペレーティングシステムの、非アクティブからアクティブへの遷移を取り扱うための再開操作を実施するための再開コントローラとを含む、メモリと、
オペレーティングシステムの間で情報を交換するためのオペレーティングシステム間記憶エリアであって、前記記憶エリアが、前記オペレーティングシステムによってアクセス可能であり、前記情報が、それぞれ、休止及び再開コントローラによって実施される前記休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、オペレーティングシステム間記憶エリアとを具備するシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
[0001]  本出願は、同時係属出願、すなわち、本発明の共同譲受人に譲渡された、２００７年３月１３日に同時に出願された、Ｓｅｃｕｒｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｓｗｉｔｃｈｉｎｇという名称の米国特許出願第１１／７２４，０１６号明細書に関連する。
【発明の分野】
【０００２】
[0002]  本発明は、複数のＯＳの間の効率的な協調型切換えに関する。
【発明の背景】
【０００３】
[0003]  近年、人々が同一のコンピュータに複数のＯＳを載せる傾向が見られる。企業サーバの領域では、このような特徴により、ＩＴ部門は、１つのサーバを１つのＶＭに載せることができるようになり、はるかに管理がしやすくなっている。ソフトウェア開発では、様々なＯＳ及び同一ＯＳの様々なバージョンにおいてソフトウェア移植性を開発者がすぐに試すことが可能になる。パーソナルコンピューティングにおいてさえも、人々は、異なるアプリケーションをサポートし、新規ＯＳバージョンを試すために、又は単にダウンロードされたソフトウェアを試すために、複数のＯＳを使うようになっている。スマートフォンなどの組込み装置上に、人々は、異なる目的のために２つのＯＳをもっている場合がある。すなわち、１つは私的な使用のためであり、１つは業務使用のためである。
【０００４】
[0004]  マルチＯＳのための有力な技法は仮想マシン（ＶＭ）技術であるが、これは元々、メインフレームコンピュータ向けにＩＢＭによって開発された。仮想化技術は一般に、ＯＳとハードウェアとの間にある、しばしばＶＭＭ（仮想マシンモニタ）と呼ばれるソフトウェア層を利用する。ＶＭＭは、実際のハードウェアを管理し、その上で稼動するＯＳへの抽象又は仮想ハードウェアビューを提供する。ＶＭ技術の実装及び移植は、複雑な作業である。たとえば、ゲストＯＳをうまくサポートするためには、どの基底装置も、ゲストＯＳが装置にアクセスするために何らかのやり方で仮想化される必要がある。ますます多くの新規ハードウェアが日々発表されている状況で、この制約は、ＶＭベースの手法の適用性を限定する可能性がある。ＶＭ手法により、切換え速度が非常に速くなる。他の手法と比較して、この手法は、多大な開発コストを招き、特にＩ／Ｏ集約型アプリケーションに関しては、ランタイム効率が比較的低い。
【０００５】
[0005]  同時に稼動する複数のＯＳをアプリケーションが要求しない場合に、こうした問題を克服するための簡易ソリューションが存在する。マルチブートソリューションというものがある。マルチブート手法は本質的に、分割されるハードディスクを除くハードウェア資源をすべて時分割多重化する。切換えは、リブートにより行われる。ＰｏｗｅｒＱｕｅｓｔ社製のＢｏｏｔＭａｇｉｃが、このような手法の例である。この製品は、ユーザが、同一のコンピュータ上ではあるが異なるハードディスクパーティション上又は異なるハードドライブ上に複数のＯＳをインストールすることを可能にする。コンピュータが起動すると、ユーザには、ＯＳ選択候補のリストがプロンプト表示される。ユーザは、１つの候補を選択し、コンピュータは、選択されたＯＳを稼動させる。ユーザは、別のＯＳを稼動させたい場合、コンピュータをリブートし、スタートアップ中に異なる選択を行う必要がある。Ｗｉｎｄｏｗｓなど、一部のＯＳは、他のＯＳインスタンスの存在を好まず、第１のハードドライブの第１のパーティション上に常駐することを強要し得る。Ｂｏｏｔ  ｍａｇｉｃは、このような一部のＯＳにそのような錯覚を与えるために、ハードドライバ申請テーブルを修正し、一時的にＢＩＯＳさえも修正しなければならなくなる。リブートベースの全手法は、これと本質的に同様である。たとえば、何らかのコンピュータが、複数のＯＳをサポートすることができるようにするためのブート装置を選択することを可能にする。唯一の違いは、基底実装がハードウェアベースであるか、ＢＩＯＳベースであるかである。
【０００６】
[0006]  マルチブート手法は、開発コストをほとんど発生させず、そのランタイム効率は、単一ＯＳソリューションのものと同程度に高い。マルチブート手法にはただし、極度に遅い切換え速度及び扱いにくい切換えオーバーヘッドという深刻な欠点がある。マルチブートソリューションにおいてあるＯＳから別のＯＳに切り換わるのに、数十秒かかることも珍しくない。したがって、このソリューションは、異なるＯＳの間の、比較的高速であり利便性の高い切換えを必要とするアプリケーションには適していない。
【０００７】
[0007]  ＯＳ切換えの例が、「Ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ，  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ  ｓｗｉｔｃｈｉｎｇ  ｓｙｓｔｅｍ，  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ  ｍｏｕｎｔｉｎｇ  ｍｅｔｈｏｄ，  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ  ｓｗｉｔｃｈｉｎｇ  ｍｅｔｈｏｄ，  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ，  ａｎｄ  ｐｒｏｇｒａｍ  ｔｒａｎｓｍｉｓｓｉｏｎ  ａｐｐａｒａｔｕｓ」という名称の米国特許出願第ＵＳ２００１００１８７１７Ａ１号に記載されている。上記出願に記載されているＯＳ切換え手法は、複数のＯＳをサポートするために、どのハードウェア構成要素を仮想化することも試みない。ＯＳ切換えでは、全ＯＳイメージが、分割されたシステムメモリに常駐する。小型ＯＳスイッチャが、あるＯＳから別のＯＳへの切換えを可能にする。ハードウェア構成要素を仮想化するのではなく、ＯＳは、稼動する際、システムのハードウェアすべてを見渡して、所有する（システムメモリ及び記憶装置のいくつかの部分のみを管理することを除く）。この編成での切換えは、マルチブート編成での場合よりもはるかに速い。ＯＳ１からＯＳ２への切換えは、最初にＯＳ１を休止し、次いで、ＯＳ２を再開することによって遂行される。ＯＳ切換えの実装では、ＯＳに既に存在する休止／再開電源管理機能を用いる。休止プロセスは、装置状態を保存し、装置の電源を切り、再開プロセスは、装置の電源を入れ、装置状態を復元する。
【０００８】
[0008]  一方、ＯＳ切換えの実装は、ＯＳとハードウェアとの間に仮想化層も抽象化層もないので、ＶＭベースの技術よりはるかに簡単である。ＯＳはすべて、固有の速度で効率的に稼動し、新規ハードウェアサポートの問題は、個々の各ＯＳ自体に委ねられ、ＯＳスイッチャの一部ではない。
【０００９】
[0009]  ただし、現在のＯＳ切換え実装における切換え時間は依然として、ＶＭシステムにおける切換え時間よりもはるかに長い。この長い切換え時間により、一定のアプリケーションシナリオでは、ＯＳ切換えの使用が実際的でなくなっている。たとえば、ＯＳ＃１がＯＳ＃２に依拠して、暗号化されたデータを解読する場合、及びこのような復号リクエストが比較的頻繁に起こる場合、長い切換え待ち時間が原因で、ＯＳ切換えベースの実装を用いることが不可能である。
【発明の概要】
【００１０】
[0010]  オペレーティングシステム（ＯＳ）の切換えを実施する方法及び機器を、本明細書で開示する。一実施形態では、当該方法は、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にするステップを含み、複数のオペレーティングシステムのうち第１のオペレーティングシステムがアクティブに稼動されているものであって、複数のオペレーティングシステムのうち、次にアクティブになるべき第２のオペレーティングシステムを識別するステップと、第１及び第２のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、第１のオペレーティングシステムと第２のオペレーティングシステムの間で情報を交換するステップと、休止操作を実施することによって第１のオペレーティングシステムを非アクティブにさせるステップと、第２のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、第２のオペレーティングシステムをアクティブにさせるステップであって、情報が、休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含む。
【図面の簡単な説明】
【００１１】
[0011]  本発明は、以下に示す詳細な説明から、及び本発明の様々な実施形態を示す添付の図面から、より完全に理解されよう。ただし、こうした説明及び図面は、具体的な実施形態に本発明を限定するものと捉えるべきではなく、説明及び理解のためだけである。
【図１】複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にするプロセスの一実施形態を示すフロー図である。
【図２】オペレーティングシステム（ＯＳ）切換えシステムの一実施形態を示すブロック図である。
【図３】ＯＳ切換え中に使われるＯＳ間通信機構の一実施形態の内容を示す図である。
【図４Ａ】相互通信メッセージの実施形態を示す図である。
【図４Ｂ】相互通信メッセージの実施形態を示す図である。
【図４Ｃ】相互通信メッセージの実施形態を示す図である。
【図４Ｄ】相互通信メッセージの実施形態を示す図である。
【図４Ｅ】相互通信メッセージの実施形態を示す図である。
【図５】ＯＳ間メッセージインタプリタによって実施される、メッセージを解釈するプロセスの一実施形態を示すフロー図である。
【図６】再開コントローラコード内部での装置再開プロセスの一実施形態を示すフロー図である。
【図７】装置を休止するプロセスの一実施形態を示すフロー図である。
【図８】ＯＳ間メッセージジェネレータでメッセージを生成するプロセスの一実施形態を示すフロー図である。
【図９】例示的なコンピュータシステムを示すブロック図である。
【本発明の詳細な説明】
【００１２】
[0012]  複数のＯＳの間を協調して切り換える方法及び機器について記載する。ＯＳ切換えのいくつかの使用法がある。一実施形態の使用例は、２つ以上のＯＳがインストールされた携帯電話である。１つは、携帯電話のオペレータによって信頼されるＯＳであり、他のＯＳは「オープンな」ＯＳである。信頼されるＯＳと他のＯＳとの間の切換えは、優れたユーザ経験、及び復号などの特殊な機能性のサポートのために高速である。
【００１３】
[0013]  本明細書に記載する手法には、ＯＳ切換え時間の大幅な短縮を含むがそれに限定されない、数多くの利点があり、この利点により、ＯＳ切換えが、上述したような適用シナリオ向けの実用的な技術になる。
【００１４】
[0014]  以下の説明では、数多くの細部について記載して、本発明をより完全に説明する。ただし、本発明は、こうした具体的詳細なしで実施できることが、当業者には明らかであろう。他の事例では、公知の構造及び装置を、本発明を分かりにくくするのを避けるために、細部ではなくブロック図の形で示す。
【００１５】
[0015]  後に続く詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズム及び記号表現という観点で提示される。こうしたアルゴリズム記述及び表現は、データ処理分野の当業者によって、自身の作業の本質を他の当業者に最も効果的に伝えるために用いられる手段である。アルゴリズムとは、本明細書において、及び一般的には、所望の結果につながる、自己矛盾のない一連のステップであると考えられる。こうしたステップは、物理的数量の物理的処置を要求するものである。必ずしもそうではないが、普通、こうした量は、格納し、転送し、結合し、比較し、それ以外の処置をすることが可能な電気又は磁気信号の形をとる。時には、主として一般的使用のために、こうした信号をビット、値、要素、記号、キャラクタ、用語、数字などと呼ぶのが好都合であることが分かっている。
【００１６】
[0016]  ただし、こうした用語及び同様の用語はすべて、適切な物理的数量に関連づけられるべきであり、こうした数量に付与される便宜上のラベルに過ぎないことを心に留めるべきである。以下の考察から明らかなように別段の記載のない限り、説明を通して、たとえば「処理」又は「計算」又は「算出」又は「判定」又は「表示」などの用語を使用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）数量として表されるデータを操作し、コンピュータシステムメモリ、レジスタ、他のこのような情報格納装置若しくは伝送又は表示装置内の物理的数量として同様に表される他のデータに変換するコンピュータシステム、又は同様の電子計算装置のアクション及びプロセスに言及していることを理解されたい。
【００１７】
[0017]  本発明は、本明細書における操作を実施する機器にも関する。この機器は、必要とされる目的のために特別に構築することができ、若しくはコンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化され又は再構成される汎用コンピュータを備え得る。このようなコンピュータプログラムは、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、及び光磁気ディスクを含む任意のタイプのディスク、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光学カード、又は電子命令の格納に適した任意のタイプの媒体などだが、それに限定されず、コンピュータシステムバスにそれぞれ結合されるコンピュータ可読記憶媒体に格納することができる。
【００１８】
[0018]  本明細書において提示するアルゴリズム及びディスプレイは元々、特定のどのコンピュータにも他の機器にも関するものではない。様々な汎用システムを、本明細書における教示に従ってプログラムとともに使うことができ、又は必要とされる方法ステップを実施するための、より専用の機器を構築することが好都合であることが分かるであろう。こうした様々なシステム用に必要とされる構造は、以下の説明から明らかになる。さらに、本発明は、特定のどのプログラミング言語も参照して記載されない。本明細書に記載する本発明の教示を実装するのに、様々なプログラミング言語を使うことができることが理解されよう。
【００１９】
[0019]  マシン可読媒体は、マシン（たとえば、コンピュータ）によって可読な形の情報を格納し又は伝送する任意の機構も含む。たとえば、マシン可読媒体は、読出し専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置、電気、光学、音響又は他の形の伝播信号（たとえば、搬送波、赤外線信号、デジタル信号など）などを含む。
【００２０】
ＯＳ切換えの概要
[0020]  同一のコンピューティングシステム上で稼動する多数のオペレーティングシステムの間の効率的な協調型切換えをサポートするシステム及び関連方法。一実施形態では、このシステムは、ＯＳスイッチャ、ＯＳ間通信機構、各ＯＳ内部の休止コントローラ及び再開コントローラからなる。一実施形態では、各休止コントローラは、ＯＳ間通信機構にメッセージを書き込むＯＳ間メッセージジェネレータを含む。各再開コントローラは、ＯＳ間通信機構からメッセージを読み出すＯＳ間メッセージインタプリタを含む。同一のコンピューティングシステム上のＯＳは、ＯＳ間メッセージを使って、装置休止／再開プロセスをカスタマイズし、部分に分けられ又は時分割多重化されたシステム資源の割振りを調整する。
【００２１】
[0021]  本明細書における目的のために、ＯＳ切換えシステムとは、インストールされた複数のオペレーションシステムを有するコンピューティングシステムである。複数のＯＳは、同時に活動し、時分割多重化方式で順に実行することができ、システムをリブートする必要なく、ユーザリクエストに、又は予め定義されたイベントに応答して、あるＯＳから別のＯＳに切り換えることができる。各ＯＳ内には、そのＯＳからの切換えの前にシステムを休止する休止コントローラ、及びそのＯＳへの切換えの前にシステムを再開する再開コントローラがある。
【００２２】
[0022]  上述したＯＳ切換えシステムに勝る１つの改善点は、複数のＯＳの間で情報を交換するＯＳ間通信機構を含むことである。一実施形態では、ＯＳ間通信機構とは、インストールされた全ＯＳからアクセス可能であり、あるＯＳから別のＯＳへの切換え中に状態を失わないメモリ記憶装置である。
【００２３】
[0023]  ＯＳ間通信プロトコルによって、ＯＳ間通信機構を介して交換される情報の形式が定義される。各ＯＳの休止コントローラ内のＯＳ間メッセージジェネレータは、ＯＳ間通信プロトコルに準拠するメッセージをＯＳ間通信機構に書き込む。各ＯＳの再開コントローラ内のＯＳ間メッセージインタプリタは、ＯＳ間通信機構からメッセージを読み込む。
【００２４】
[0024]  各ＯＳ間メッセージは、メッセージのタイプ、目標装置又は資源、及びメッセージに特有の情報を含むが、それに限定されない情報を伝える。メッセージのタイプは、装置予約リクエストメッセージ、装置未使用メッセージ、装置状態転送メッセージ、資源再分割リクエストメッセージ、及び再分割応答メッセージを含むが、それに限定されない。こうしたメッセージについては、下でより詳しく説明する。
【００２５】
[0025]  システム内のＯＳは、ＯＳ間メッセージを介して伝えられる情報を使って、ＯＳの間を効率的に交互に切り換え、ＯＳの間で分割される又は時分割多重化される資源について再交渉する。
【００２６】
[0026]  図１は、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にするプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア（たとえば、回路構成、専用論理など）、ソフトウェア（たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される）、又は両方の組合せを含み得る処理論理によって実施される。
【００２７】
[0027]  図１を参照すると、このプロセスは、複数のオペレーティングシステムのうち、アクティブに稼動されている第１のオペレーティングシステムから始まる（処理ブロック１０１）。第１のオペレーティングシステムが現時点でアクティブである間に、処理論理は、次にアクティブになるべきである第２のオペレーティングシステムを識別する（処理ブロック１０２）。
【００２８】
[0028]  処理論理は、両方のオペレーティングシステムによってアクセス可能な記憶エリア（たとえば、ＯＳ間通信機構）を使って、第１のオペレーティングシステムと第２のオペレーティングシステムの間で情報を交換する（処理ブロック１０３）。一実施形態では、情報は、１つ又は複数のメッセージ（たとえば、ＯＳ間メッセージ）を含み、少なくとも１つのこうしたメッセージは、メッセージタイプ、少なくとも１つのメッセージの対象である装置の指示、及びメッセージタイプに関するデータを含む。一実施形態では、メッセージタイプは、装置がオペレーティングシステムによる使用のために予約されることをリクエストするための第１のタイプ、装置がオペレーティングシステムによって決して使われないことを示すための第２のタイプ、２つ以上のオペレーティングシステムの間で装置状態を転送するための第３のタイプ、資源が２つ以上のオペレーティングシステムによって分割されることをリクエストするための第４のタイプ、資源が２つ以上のオペレーティングシステムによって分割されるというリクエストに応答するための第５のタイプからなる群の１つである。一実施形態では、第１及び第２のオペレーティングシステムの少なくとも一方が、この情報を使って、第１のオペレーティングシステムと第２のオペレーティングシステムの間で分割される又は時分割多重化される資源について再交渉する。
【００２９】
[0029]  次に、処理論理は、休止操作を実施することによって、第１のオペレーティングシステムを非アクティブにさせ（処理論理１０４）、処理論理は、第２のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、第２のオペレーティングシステムをアクティブにさせる（処理論理１０５）。情報は、どの操作が休止及び再開操作の一方又は両方の一部として実施されるかを制御する。
【００３０】
[0030]  一実施形態では、休止操作は複数の操作を含み、休止操作の実施は、装置が使われていない場合、こうした操作の１つ又は複数からなるセットを実施することなく起こる。一実施形態では、再開操作は、装置用の再開ルーチンを含み、アクティブになる予定のオペレーティングシステムによる装置の使用が検出されていない限り、再開操作の実施は、装置用の再開ルーチンを呼び出すことなく行われる。
【００３１】
[0031]  一実施形態では、情報は使用情報を含む。一実施形態では、使用情報は、現在アクティブなオペレーティングシステムが装置を使ったかどうかを指定し、ここで、現在アクティブなオペレーティングシステムが装置を使わなかったことを使用情報が示した場合、休止操作は、装置に対応する休止ルーチンを実施することなく完了される。一実施形態では、使用情報は、第２のオペレーティングシステムが装置を使うかどうか指定し、ここで、第２のオペレーティングシステムが装置を使わないことを使用情報が示した場合、再開操作は、装置に対応する再開ルーチンを実施することなく実施される。
【００３２】
[0032]  一実施形態では、情報は装置状態情報を備え、情報の交換は、第１のオペレーティングシステムから第２のオペレーティングシステムへの装置状態情報の送付を含み、装置状態情報は、第１及び第２のオペレーティングシステム両方によって使われると共に第１のオペレーティングシステムと第２のオペレーティングシステムの間を切り換える際に休止されない装置に対応する。
【００３３】
[0033]  一実施形態では、再開操作の実施は、第２のオペレーティングシステムの１つ又は複数のドライバが、ハードウェア装置状態を復元すること、第２のオペレーティングシステム内のカーネルが１つ又は複数のサブシステムの操作を復元し再開し、第２のオペレーティングシステムによる通常動作を再開することを含む。一実施形態では、休止操作の実施は、１つ又は複数のサブシステム及び１つ又は複数のハードウェア装置に関連づけられた状態の保存を備える。
【００３４】
[0034]  効率的な協調型ＯＳ切換えシステムの一実施形態。構成要素、ＯＳ間通信プロトコルの詳細及びプロトコルメッセージ形式、並びにＯＳ間メッセージの取扱い及び使用法については、後で詳しく説明する。
【００３５】
ＯＳ及び切換えシステムの構成要素
[0035]  図２は、ＯＳ切換えシステムの一実施形態のブロック図である。構成要素はそれぞれ、ハードウェア（回路構成、専用論理など）、ソフトウェア（たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される）、又は両方の組合せで実装される。
【００３６】
[0036]  図２を参照すると、ＯＳスイッチャ２０１は、あるＯＳから別のＯＳへの切換えを実施するために呼び出されることができる構成要素である。
【００３７】
[0037]  一実施形態では、ＯＳ間通信機構２０２は、１組のレジスタである。一実施形態では、こうしたレジスタの順序は固定され、この順序は、全ＯＳの間で共有される。別の実施形態では、ＯＳ間通信機構２０２は、全ＯＳにとってアクセス可能なメモリの一部分である。
【００３８】
[0038]  ３つのＯＳ論理メモリブロック２０３１〜３を示してあり、それぞれが、休止コントローラ（２０４１〜３）及び再開コントローラ（２０６１〜３）を有する。この図では３つのＯＳを示しているが、ＯＳ切換えシステムは、インストールされた２つ以上のＯＳを有してもよい。また、ＯＳスイッチャ２０１は、ＯＳから独立したメモリエリア内にあるものとして図示してあるが、ＯＳ切換えコードは、ＯＳスイッチャを含む独立したメモリエリアが必要とされなくなるように、個々の各ＯＳに統合することができることが、平均的な知識を有する当業者には容易に理解可能であろう。
【００３９】
[0039]  各ＯＳ内の休止コントローラ２０４１〜３はそれぞれ、ＯＳから切り換える前にシステムを休止し、アプリケーション及び装置ドライバへの休止信号の送付、並びにいくつかの装置の電源オフなどのタスクを実施する。再開コントローラ２０４１〜３はそれぞれ、ＯＳ間通信機構２０２にＯＳ間メッセージを書き込むＯＳ間メッセージジェネレータ２０５１〜３をそれぞれ含む。
【００４０】
[0040]  各ＯＳ内の再開コントローラ（２０６１〜３）はそれぞれ、そのＯＳに切り換えた後でシステムを再開し、アプリケーション及び装置ドライバへの再開信号の送付、並びにいくつかの装置の電源オンなどのタスクを実施する。各再開コントローラ２０６１〜３は、ＯＳ間通信機構２０２からメッセージを読み込み、こうしたメッセージを取り扱うＯＳ間メッセージインタプリタ（それぞれ２０７１〜３）を含む。
【００４１】
プロトコルメッセージ形式
[0041]  ＯＳの間で交換される情報は、ＯＳ間通信機構２０２を経由する。図３は、ＯＳ切換え中のＯＳ間通信機構２０２の一実施形態の内容を示す。図３を参照すると、ＯＳ間通信機構の最初の２バイトは、２バイトの切換え記述ワード３０１を含む。このワードのＳＲＣフィールド３１０（第１バイトの上位４ビット）は、現在切り換わり中のオペレーティングシステム（これ以降、ＳＲＣ  ＯＳ）のＩＤを示す。ＤＳＴフィールド３１１（第１バイトの下位４ビット）は、それに切り換えられる予定のオペレーティングシステム（これ以降、ＤＳＴ  ＯＳ）のＩＤを示す。ＣＯＵＮＴフィールド３１２（第２バイト）は、切換え記述ワードのすぐ後に続くメッセージの数を示す。
【００４２】
[0042]  一実施形態では、各ＯＳのＩＤは、ＯＳのインストール時に割り当てられる。たとえば、第１のインストールＯＳは、０というＩＤをもち、第２のＯＳは、１というＩＤをもち、以下同様になる。
【００４３】
[0043]  切換え記述ワード３０１に続く各ＯＳ間メッセージは続いて、ＯＳ間通信機構に格納され、メッセージはそれぞれ、１又は複数バイトを使って、メッセージのタイプ、メッセージによって目標とされる装置又は資源、及びメッセージのいくつかの任意選択パラメータを記述する。
【００４４】
[0044]  一実施形態では、互いに適切に通信するために、複数のＯＳは、合意命名方式を用いて、システムの装置及び資源を識別する。一実施形態では、システムの装置は、番号０〜６２でラベルづけされ、このようなラベルづけ知識を、装置にインストールされたＯＳすべてに渡って共有する。一実施形態では、ＩＤ番号６３は、「ＡＬＬ  ＤＥＶＩＣＥＳ」用に予約される。装置には、本明細書に記載する技法の使用に先立って、開発者によって番号をつけることができる。
【００４５】
[0045]  資源に関して、番号０は、ＣＰＵ時間用ＩＤとして割り当てられ、番号１は、物理メモリ用に割り当てられる。たとえば、永続記憶装置及びネットワーク帯域幅など、他の再分割可能資源用のＩＤは、特定のプラットフォーム用ＯＳ切換えシステムの開発者によって割り当てられるために残される。
【００４６】
[0046]  一実施形態では、プロトコルは、５つのタイプのＯＳ間メッセージ、すなわち装置予約リクエストメッセージ、装置非使用メッセージ、装置状態転送メッセージ、資源再分割リクエストメッセージ、及び再分割応答メッセージを定義する。図４Ａ〜Ｅは、こうしたＯＳ間メッセージの形式の一実施形態を示し、メッセージ形式については後で説明する。
一実施形態では、装置予約リクエストメッセージ４０１は、１バイトを使う。このバイトの最上位の２ビットは、「００」にセットされる。下位６ビットは、予約されるべき装置のＩＤを示すのに使われる。ＳＲＣ  ＯＳは、装置上で休止（及びその後の再開）操作を実施したくないとき、装置予約リクエストメッセージ４０１を発行する。ＤＳＴ  ＯＳは、このリクエストを尊重するべきであり、この装置を使うべきではなく、制御の切換え先となっているＯＳにリクエストをフォワードするべきである。メッセージの装置ＩＤが６３にセットされたとき、ＤＳＴ  ＯＳは、どの装置も全く使うべきでない。
一実施形態では、装置未使用メッセージ４０２は、２バイトを使う。第１バイトの最上位の２ビットは、「０１」にセットされる。下位６ビットは、現在のＯＳによって決して使われなかった装置のＩＤを示すのに使われる。第２バイトの下位４ビット（４１１）は、装置を最後に使ったＯＳのＩＤを示すのに使われる。
一実施形態では、装置状態転送メッセージ４０３は、２つより多いバイトを使う。第１バイトの最上位の２ビットは、「１０」にセットされる。第１バイトの残りは、その状態が転送されている装置のＩＤを示すのに使われる。第２バイトの上位４ビット（４１２）は、装置を初期化しメッセージを作成したＯＳを示す。第２バイトの下位４ビット（４１３）は、第２バイトのすぐ後に続く、転送される状態の格納に使われる４バイト整数の数を示す（たとえば、ｓｔａｔｅ＿ｂｙｔｅ＿１、．．．、ｓｔａｔｅ＿ｂｙｔｅ＿ｎ）。
一実施形態では、資源再分割リクエストメッセージ４０４は、３バイトを使う。第１バイトの最上位の３ビットは、「１１０」にセットされる。ＯＳ＿ＩＤフィールド４１４（第１バイトの下位４ビット）は、リクエストを行ったＯＳを示す。ＲＥＳＯＵＲＣＥ＿ＩＤフィールド４１５（メッセージの第２バイト）は、再分割されるべき資源のＩＤを示す。ＡＭＯＵＮＴフィールド４１６（第３バイト）は、割当てし直されるべき資源の量を示す。一実施形態では、このフィールドの正確な意味は、ＯＳ切換えシステム移植チームの開発者によって定義される。たとえば、一実装形態では、割当てし直されるべき資源がＣＰＵ時間である場合、このバイトの値（ｖ）は、リクエストを行うＯＳ（ＯＳｒ）が、毎（ｖ＊１００）ミリ秒ごとにＯＳｒに切り換わるよう、他のＯＳに依頼することを示す。別の実装形態では、再分割されるべき資源が物理メモリである場合、この値（ｖ）は、ＯＳｒが他のＯＳに、ＯＳｒが連動するべきより多くの物理メモリをもつことができるように、物理メモリのｖメガバイトを解放するよう依頼することを示す。
一実施形態では、再分割応答メッセージ４０５は、３又は４バイトを使う。第１バイトの最上位の３ビットは、「１１１」にセットされる。やはり、ＯＳ＿ＩＤフィールド４１７（第１バイトの下位４ビット）は、リクエストを行ったＯＳを示す。ＲＥＳＯＵＲＣＥ＿ＩＤフィールド４１８（メッセージの第２バイト）は、再分割されるべき資源のＩＤを示す。第３バイト（４１９）及び任意選択の第４バイト（４２０）は、リクエスト側ＯＳに譲られるべき、現在のＯＳによって合意された資源の量を示す。上記のように、こうした２バイトの正確な意味は、開発者によって定義される。たとえば、一実装形態では、リクエストされた資源が物理メモリである場合、第２バイトは、リクエスト側ＯＳに譲られるメモリエリアの（１ＭＢ境界上の）開始アドレスを示し、第３バイトは、そのメモリエリアの終了アドレスを示す。
【００４７】
ＯＳ間通信メッセージの取扱い
[0047]  各ＯＳ個々の再開コントローラ内側のＯＳ間メッセージインタプリタ及び休止コントローラ内側のＯＳ間メッセージジェネレータは、ＯＳ間メッセージを取り扱う。一実施形態では、再開コントローラ及び休止コントローラは、以下のデータ構造を含むメモリエリアへの共有アクセスをもつ。
・ｍｙ＿ＩＤ：現在のＯＳのＩＤを示す変数。
・ｌａｓｔ＿ＯＳ：現在のＯＳにそこから切り換えられるＯＳのＩＤを示す変数。
・ｌａｚｙ＿ｒｅｓｕｍｅ：現在のセッション中に現在のＯＳによって初めて使われるときにのみ状態が再開される装置のリスト。
・ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓ：現在のＯＳによって予約された装置のリストを含むリスト。
・ｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓ：装置予約リクエストメッセージを含むリスト。
・ｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄ：装置状態転送メッセージを含むリスト。
・ｎｏ＿ｒｅｓｕｍｅ：再開される必要がない装置を含む一時リスト（これは部分リストである。一実施形態では、ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリストにあるものなど、このリストにない装置も再開されなくてよい）。
・ｎｅｖｅｒ＿ｕｓｅｄ：装置未使用メッセージのリスト。
・ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔｓ：資源再分割リクエストメッセージのリスト。
・ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｓｐｏｎｓｅｓ：再分割応答メッセージのリスト。
【００４８】
[0048]  一実施形態では、ＯＳ間メッセージインタプリタは、装置再開プロセスの開始の際に呼び出される。図５は、ＯＳ間メッセージインタプリタによって実施される、メッセージを解釈するプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア（たとえば、回路構成、専用論理など）、ソフトウェア（たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される）、又は両方の組合せを含み得る処理論理によって実施される。
【００４９】
[0049]  図５を参照すると、プロセスは、処理論理がＯＳ間通信機構から切換え記述ワードを読み込み、このワードのＳＲＣフィールドをｌａｓｔ＿ＯＳに割り当て、一時変数ｍｅｓｓａｇｅ＿ｃｏｕｎｔにＣＯＵＮＴフィールドを割り当てることによって始まる（処理ブロック５０２）。次いで、処理論理は、ｒｅａｄ＿ｃｏｕｎｔと呼ばれる一時変数に０を割り当てる（処理ブロック５０３）。
【００５０】
[0050]  次に、処理論理は、ｒｅａｄ＿ｃｏｕｎｔがｍｅｓｓａｇｅ＿ｃｏｕｎｔに等しいかどうか調べる（処理ブロック５０４）。等しい場合、プロセスは終了する。等しくない場合、プロセスは処理ブロック５０５に続き、ここで、処理論理は次のメッセージを読み出す。次のメッセージを読み出した後、処理論理は、次のメッセージのタイプを調べる（処理ブロック５０６）。処理論理は、次のメッセージのタイプを取得し、次いで、以下のようにメッセージタイプに基づいて切り換える。
ｉ．装置予約リクエストメッセージに対して、装置がｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリスト中にある場合、処理論理はメッセージを無視し、リストにない場合、処理論理は、装置をｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリストに入れる（処理ブロック５０７）。
ｉｉ．装置未使用メッセージに対して、メッセージの「ＬＡＳＴ＿ＯＳ」フィールドがｍｙ＿ＩＤに等しい場合、処理論理は、装置をｎｏ＿ｒｅｓｕｍｅリストに入れ、等しくない場合、処理論理は、装置をｎｅｖｅｒ＿ｕｓｅｄリストに入れる（処理ブロック５０８）。
ｉｉｉ．装置状態転送メッセージに対して、「ＯＲＩＧ＿ＯＳ」フィールドがｍｙ＿ＩＤに等しくない場合、処理論理は、メッセージをｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリストに入れる（処理ブロック５０９）。
ｉｖ．資源再分割リクエストメッセージに対して、メッセージの「ＯＳ＿ＩＤ」フィールドがｍｙ＿ＩＤに等しい場合、処理論理はメッセージを無視し、等しくない場合、処理論理は、ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔｓリストに入れる（処理ブロック５１０）。
ｖ．再分割応答メッセージに対して、メッセージの「ＯＳ＿ＩＤ」フィールドがｍｙ＿ＩＤに等しい場合、処理論理はメッセージをｎｅｗ＿ｒｅｓｏｕｒｃｅｓリストに入れ、等しくない場合、処理論理は、メッセージをｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｓｐｏｎｓｅｓリストに入れる（処理ブロック５１１）。
【００５１】
[0051]  メッセージを処理した後、処理論理は、ｒｅａｄ＿ｃｏｕｎｔを１だけ増分し、次のメッセージを読み出し（５１２）、処理ブロック５０４に遷移し、ここで、プロセスは繰り返す。
【００５２】
[0052]  図６は、再開コントローラコード内部の装置再開プロセスの一実施形態のフロー図である。このプロセスは、ハードウェア（たとえば、回路構成、専用論理など）、ソフトウェア（たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される）、又は両方の組合せを含み得る処理論理によって実施される。
【００５３】
[0053]  図６を参照すると、プロセスは、処理論理がＯＳ間メッセージインタプリタプロセスを呼び出すことで始まる（処理ブロック６０１）。次いで、処理論理は、ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリスト、ｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリスト、ｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリスト、ｌａｚｙ＿ｒｅｓｕｍｅリスト、又はｎｏ＿ｒｅｓｕｍｅリストのどれにもない装置を再開する（処理ブロック６０２）。一実施形態では、特殊なケースとして、ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリスト、ｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリスト、ｌａｚｙ＿ｒｅｓｕｍｅリスト、又はｎｏ＿ｒｅｓｕｍｅリスト中の装置が６３というＩＤ（「ＡＬＬ  ＤＥＶＩＣＥＳ」）をもつとき、再開コードは、どの装置に対しても再開操作を指揮しない。２つのＯＳのケースでは、これは、第１のＯＳによって検出される。第２のＯＳの休止と再開との間で使われる複数のＯＳがあるとき、こうしたＯＳのいずれかが装置を使った場合、第２のＯＳは、装置を再開する必要がある。ＯＳの１つが装置を使った場合、第２のＯＳは、第２のＯＳが、装置を使った最後のＯＳであることを示すＤｅｖｉｃｅ＿ｎｅｖｅｒ＿ｕｓｅｄメッセージを見る。それ以外の場合、第２のＯＳは、このようなメッセージを見ず、装置を再開する必要はない。
【００５４】
[0054]  再開される具体的装置に依存して、再開操作は、装置の状態を直接復元しても、装置を初期化し直した後で状態を復元してもよい。
【００５５】
[0055]  処理論理は、処理ブロック６０２で再開されたどの装置も、ｎｅｖｅｒ＿ｕｓｅｄリスト中にある場合はそのリストから削除する（処理ブロック６０３）。次に、ｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリスト中の各メッセージに対して、処理論理は、装置の状態をメッセージに含まれる状態にセットする（処理ブロック６０４）。処理論理は、ｎｅｗ＿ｒｅｓｏｕｒｃｅｓリスト中のメッセージを取り扱い、新たに利用可能な各資源をＯＳに知らせ、次いで、リストをクリアする（処理ブロック６０５）。たとえば、物理メモリに対する再分割応答メッセージの場合、処理論理は、新たに利用可能な物理メモリエリアのアドレス範囲を現在のＯＳに知らせる。
【００５６】
[0056]  処理論理は、任意選択で、ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔｓリスト中の資源ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔメッセージを取り扱い、妥当な場合はｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔリスト及びｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｓｐｏｎｓｅｓリストを更新することができる（処理ブロック６０６）。
【００５７】
[0057]  装置再開プロセスの残りの部分は、通常ＯＳ使用セッション中に実施される。より具体的には、装置が初めて使われ、装置がｌａｚｙ＿ｒｅｓｕｍｅリスト中にあるとき、処理論理は、装置に対して再開を実施し、装置は（予めリスト中にある場合）ｌａｚｙ＿ｒｅｓｕｍｅリスト及びｎｅｖｅｒ＿ｕｓｅｄリストから削除される（処理ブロック６０７）。また、装置が現在のセッション中に初めて使われ、装置がｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリスト中にあるとき、処理論理は、現在の装置状態を保存し、より前の休止プロセスから取得された状態をもつ装置に対して再開操作を実施する。
【００５８】
休止手順の一実施形態
[0058]  装置休止プロセスは、休止コントローラによって指揮される。図７は、装置を休止するプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア（回路構成、専用論理など）、ソフトウェア（たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される）、又は両方の組合せを含み得る処理論理によって実施される。
【００５９】
[0059]  プロセスは、処理論理がｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔｓリスト中のメッセージを任意選択で取り扱い、妥当な場合はｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔ及びｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｓｐｏｎｓｅｓリストを更新して始まる（処理ブロック７０１）。
【００６０】
[0060]  次に、現在のＯＳが他のＯＳからのより多くの資源を必要とする場合、処理論理は、ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔｓリストを更新する（処理ブロック７０２）。次いで、処理論理は、ｌａｚｙ＿ｒｅｓｕｍｅリストに残されている装置を、それらがリスト中に既にない場合は、装置未使用メッセージの「最終ＯＳ」フィールドの値としてｌａｓｔ＿ＯＳを使って、ｎｅｖｅｒ＿ｕｓｅｄリストに追加する（処理ブロック７０３）。処理論理はまた、ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリスト及びｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリストを更新する（処理ブロック７０４）。一実施形態では、現在のＯＳが開始した装置が、このような装置の状態を他のＯＳに転送したい場合、ｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリストは、ｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリストに新規メッセージを追加することによってアップデートされる。やはり処理ブロック７０４の一部として、処理論理は、ｌａｚｙ＿ｒｅｓｕｍｅリストを初期化し直し、ｎｏ＿ｒｅｓｕｍｅリストをクリアする。
その後、処理論理は、ｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリスト中にあるが現在のセッション中に使われた装置の状態を復元し（処理ブロック７０５）、ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリスト、ｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリスト、ｎｅｖｅｒ＿ｕｓｅｄリスト、又はｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリストのどれにもない各装置において休止操作を実施する（処理ブロック７０６）。一実施形態では、特殊なケースとして、６３というＩＤ（「ＡＬＬ  ＤＥＶＩＣＥＳ」）をもつ装置が前者の３つのリストのいずれかにある場合、どの装置においても休止操作は指揮されない。
最後に、処理論理は、ＯＳ間メッセージジェネレータを呼び出して、ＯＳ間通信機構にメッセージを書き込む（処理ブロック７０７）。
【００６１】
メッセージを生成するプロセスの一実施形態
[0061]  図８は、ＯＳ間メッセージジェネレータを用いてメッセージを生成するプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア（回路構成、専用論理など）、ソフトウェア（たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される）、又は両方の組合せを含み得る処理論理によって実施される。
【００６２】
[0062]  プロセスは、処理論理がＯＳ間通信機構の冒頭に切換え記述ワードを書き込み、ＳＲＣフィールドにｍｙ＿ＩＤを割り当て、宛先ＯＳが分かっている場合はＤＳＴフィールドを割り当てることで始まる。分かっていない場合、処理論理は、ｍｙ＿ＩＤにもそのフィールドをセットする（ＤＳＴ  ＯＳが分かっていないことを示す）（処理ブロック８０１）。処理論理はまた、ＣＯＵＮＴフィールドを埋めずに残しておく。
【００６３】
[0063]  次に、ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリスト中のすべての装置に対して、処理論理は、ＯＳ間通信機構に装置予約リクエストメッセージを書き込み（処理ブロック８０２）、ｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリスト中のメッセージをＯＳ間通信機構にコピーし、次いで、ｒｅｓｅｒｖｅ＿ｒｅｑｕｅｓｔｓリストをクリアする（処理ブロック８０３）。処理論理はまた、ｎｅｖｅｒ＿ｕｓｅｄリスト中のメッセージをＯＳ間通信機構にコピーし、次いで、ｎｅｖｅｒ＿ｕｓｅｄリストをクリアする（処理ブロック８０４）。同様に、処理論理は、ｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリスト中のメッセージをＯＳ間通信機構にコピーし、次いで、ｓｔａｔｅ＿ｔｒａｎｓｆｅｒｒｅｄリストをクリアする（処理ブロック８０５）。
【００６４】
[0064]  その後、処理論理は、ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔｓリスト中のすべてのメッセージをＯＳ間通信機構に書き込み、ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｑｕｅｓｔｓリストをクリアする（処理ブロック８０６）。次いで、処理論理は、ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｓｐｏｎｓｅｓリスト中のすべてのメッセージをＯＳ間通信機構に書き込み、ｒｅｐａｒｔｉｔｉｏｎ＿ｒｅｓｐｏｎｓｅｓリストをクリアする（処理ブロック８０７）。
【００６５】
[0065]  最後に、処理論理は、切換え記述ワードのＣＯＵＮＴフィールドを、ＯＳ間通信機構に書き込まれるメッセージの総数で埋める（処理論理８０８）。
【００６６】
使用ケースの例
[0066]  本明細書に記載する技法を用いるいくつかの使用ケースについて、以下で説明する。こうした使用ケースは、本発明の適用範囲のわずかな部分のみを成すことが明らかであろう。
【００６７】
[0067]  ある使用ケースでは、ＯＳ（ＯＳ１）が装置（Ｄ１）をめったに使わない場合、ＯＳ１の休止コントローラは、装置Ｄ１のＩＤをｌａｚｙ＿ｒｅｓｕｍｅリストに追加する。後で、再開プロセスがＯＳ１の再開コントローラによって実施されるとき、装置Ｄ１は、プロセス中は再開されない。そうではなく、装置Ｄ１は、セッション中に初めて使われるときに再開される。こうすることにより、再開プロセスが速くなる。
【００６８】
[0068]  第２の使用ケースでは、上記装置Ｄ１が使われず、したがって再開されることがない場合、装置Ｄ１は、上述した休止プロセスに従って、ｎｅｖｅｒ＿ｕｓｅｄリストに追加されることになるので、休止される必要はない。こうすることにより、全体としての休止プロセスの速度が高まる。
【００６９】
[0069]  さらに別の使用ケースでは、ＯＳ（ＯＳ２）の装置休止プロセスは、６３というＩＤ（「ＡＬＬ  ＤＥＶＩＣＥＳ」）をもつ装置を、ｍｙ＿ｒｅｓｅｒｖｅｄ＿ｄｅｖｉｃｅｓリストに入れ、その結果装置のどれも休止されなくなる。装置予約リクエストメッセージが続いて、ＯＳ間メッセージジェネレータによってＯＳ間通信機構に書き込まれる。続いて稼動するどのＯＳも、このメッセージを観察することになり、セッション中に最初に使われるときに装置を再開するのみであり、その休止プロセス中にその状態を復元することになる。また、こうしたＯＳはそれぞれ、次のＯＳにメッセージをフォワードすることになる。最終的に、メッセージは、ＯＳ２内のＯＳ間メッセージインタプリタによって読まれることになり、インタプリタは、再開コントローラコードに続きを知らせ、装置のどれにおいても再開操作を実施しないようにする。したがって、ＯＳ２から、及びＯＳ２へ非常に素早く切り換わることが可能である。
【００７０】
[0070]  さらに別の使用ケースでは、ＯＳ（ＯＳ３）が、ネットワーク装置を初期化し、ＩＰアドレスを取得する。ＯＳ３の休止プロセス中に、装置状態転送メッセージが、ＯＳ間通信機構に書き込まれる。メッセージのＩＮＴ＿ＣＯＵＮＴフィールドは４にセットされ、１６（４つの４バイト整数）個の状態バイトは、ネットワーク装置のＩＰアドレス、デフォルトのゲートウェイアドレス、ＤＮＳアドレス、及びサブネットマスクを含む。後続ＯＳ内のＯＳ間メッセージインタプリタは、このメッセージを読み、再開コントローラコードに続きを知らせ、ネットワーク装置の論理状態を装置上で再開操作を指揮することなくセットするようにする。
【００７１】
[0071]  さらに別の使用ケースでは、ＯＳ（ＯＳ４）が、ＯＳ間通信機構に資源再分割リクエストメッセージを書き込むが、このとき、ＲＥＳＯＵＲＣＥ＿ＩＤフィールドはＣＰＵ時間のＩＤにセットされ、ＡＭＯＵＮＴフィールドは５にセットされ、このことは、ＯＳ４が５００ミリ秒おきに実行権を得ることをリクエストすることを意味する。後続ＯＳはメッセージを読み、リクエストを尊重し、約５００ミリ秒後に元のＯＳ４に切り換わる。
【００７２】
[0072]  さらに別のシナリオでは、ＯＳの１つ、すなわちＯＳ１は、暗号化／復号に専用であり、Ｉ／Ｏ装置は使わない。別のＯＳ、すなわちＯＳ２が、暗号化のためにＯＳ１に切り換わり、次いで、元に切り換わると、ＯＳ２は、元から切り換わるとき、どのＩ／Ｏ装置も休止する必要がなく（また、元に切り換えられるとき、どのＩ／Ｏ装置も再開する必要がなく）、ＯＳ１は、Ｉ／Ｏ装置のどの再開も休止も行う必要がない。
【００７３】
[0073]  さらに別のシナリオでは、Ｗｉｎｄｏｗｓ  ＯＳなど、ＯＳの１つが、ゲーム用装置などの特殊な装置をサポートし、Ｌｉｎｕｘ  ＯＳなど、別の装置は、この特殊な装置をサポートしない。Ｗｉｎｄｏｗｓ  ＯＳがＬｉｎｕｘ  ＯＳに切り換わると、Ｗｉｎｄｏｗｓ  ＯＳは、特殊な装置を休止する必要がない。Ｌｉｎｕｘ  ＯＳから元に切り換わると、Ｗｉｎｄｏｗｓ  ＯＳは、特殊な装置を再開する必要がない。
【００７４】
[0074]  別の起こり得るシナリオでは、Ｗｉｎｄｏｗｓ  ＯＳ及びＬｉｎｕｘ  ＯＳなど、両方のＯＳが、ネットワーク装置をサポートするが、ネットワーク装置がＷｉｎｄｏｗｓ  ＯＳにおいてのみ使われ、Ｌｉｎｕｘ  ＯＳにおいては使われないような構成となることがある。この場合、Ｗｉｎｄｏｗｓ  ＯＳがＬｉｎｕｘ  ＯＳに切り換わると、Ｗｉｎｄｏｗｓ  ＯＳは、ネットワーク装置を休止する必要がない。Ｌｉｎｕｘ  ＯＳから元に切り換わると、Ｗｉｎｄｏｗｓ  ＯＳは、ネットワーク装置を再開する必要がない。
【００７５】
コンピュータシステムの例
[0075]  図９は、本明細書に記載した操作の１つ又は複数を実施することができる例示的なコンピュータシステムのブロック図である。図９を参照すると、コンピュータシステム９００は、例示的なクライアント又はサーバコンピュータシステムを備え得る。コンピュータシステム９００は、情報を伝達する通信機構又はバス９１１、及び情報を処理する、バス９１１と結合されたプロセッサ９１２を備える。プロセッサ９１２は、マイクロプロセッサを含むが、たとえば、ペンティアム（Ｐｅｎｔｉｕｍ）（商標）、ＰｏｗｅｒＰＣ（商標）、アルファ（Ａｌｐｈａ）（商標）などのマイクロプロセッサに限定されない。
【００７６】
[0076]  システム９００は、ランダムアクセスメモリ（ＲＡＭ）、又はプロセッサ９１２によって実行されるべき情報及び命令を格納する、バス９１１に結合された他の動的記憶装置９０４（メインメモリと呼ばれる）をさらに備える。メインメモリ９０４は、プロセッサ９１２による命令実行中の、一時変数又は他の中間情報の格納に使うこともできる。
【００７７】
[0077]  コンピュータシステム９００はまた、読出し専用メモリ（ＲＯＭ）並びに／又は静的情報及びプロセッサ９１２用の命令を格納する、バス９１１に結合された他の静的記憶装置９０６と、磁気ディスクや光ディスク及びそれに対応するディスクドライブなどのデータ記憶装置９０７とを備える。情報及び命令を格納するデータ記憶装置９０７は、バス９１１に結合される。
【００７８】
[0078]  コンピュータシステム９００は、コンピュータユーザに情報を表示する、バス９１１に結合された陰極線チューブ（ＣＲＴ）や液晶ディスプレイ（ＬＣＤ）などの表示装置９２１にさらに結合することができる。プロセッサ９１２に情報及びコマンド選択を伝達する、英数字及び他のキーを含む英数字入力装置９２２も、バス９１１に結合することができる。追加ユーザ入力装置は、プロセッサ９１２に方向情報及びコマンド選択を伝達し、ディスプレイ９２１上のカーソル移動を制御する、バス９１１に結合された、マウス、トラックボール、トラックパッド、スタイラス、又はカーソル方向キーなどのカーソル制御９２３である。
【００７９】
[0079]  バス９１１に結合され得る別の装置は、ハードコピー装置９２４であり、この装置は、紙、フィルム、又は同様のタイプの媒体などの媒体上での情報の刻印に使うことができる。バス９１１に結合され得る別の装置は、電話又はハンドヘルドパーム装置への通信のための有線／無線通信機能９２５である。
【００８０】
[0080]  システム９００の構成要素の任意のもの又はすべて及び関連ハードウェアを、本発明において使うことができることに留意されたい。ただし、コンピュータシステムの他の構成は、装置の一部又は全部を含み得ることが理解されよう。
【００８１】
[0081]  本発明の多くの変更及び修正が、上記説明を読んだ後で、当業者には疑いなく明らかになるであろうが、例示として示し記載される特定のどの実施形態も、限定的とみなされることは全く意図していないことを理解されたい。したがって、様々な実施形態の細部への言及は、本発明にとって本質的と考えられる特徴のみをそれ自体が引用する請求項の範囲を限定することを意図していない。
【図１】
2011507070.tif 000003
【図２】
2011507070.tif 000004
【図３】
2011507070.tif 000005
【図４Ａ】
2011507070.tif 000006
【図４Ｂ】
2011507070.tif 000007
【図４Ｃ】
2011507070.tif 000008
【図４Ｄ】
2011507070.tif 000009
【図４Ｅ】
2011507070.tif 000010
【図５】
2011507070.tif 000011
【図６】
2011507070.tif 000012
【図７】
2011507070.tif 000013
【図８】
2011507070.tif 000014
【図９】
2011507070.tif 000015
【手続補正書】
【提出日】平成22年8月19日(2010.8.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法であって、前記複数のオペレーティングシステムのうち第１のオペレーティングシステムがアクティブに稼動されている方法において、
複数のオペレーティングシステムのうち、次にアクティブになるべき第２のオペレーティングシステムを識別するステップと、
前記第１及び第２のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間で情報を交換するステップと、
休止操作を実施することによって前記第１のオペレーティングシステムを非アクティブにさせるステップと、
前記第２のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第２のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含む方法。
【請求項２】
前記情報は、１つ又は複数のメッセージを含み、さらに、前記１つ又は複数のメッセージのうち少なくとも１つのメッセージが、メッセージタイプ、前記少なくとも１つのメッセージの対象である装置の指示、及び前記メッセージタイプに関するデータを含む、請求項１に記載の方法。
【請求項３】
前記メッセージタイプが、オペレーティングシステムによる使用のために装置が予約されることをリクエストするための第１のタイプと、装置がオペレーティングシステムによって決して使われないことを示すための第２のタイプと、２つ以上のオペレーティングシステムの間で装置状態を転送するための第３のタイプと、資源が２つ以上のオペレーティングシステムによって分割されることをリクエストするための第４のタイプと、前記資源が２つ以上のオペレーティングシステムによって分割されるべきという前記リクエストに応答するための第５のタイプとからなる群の１つである、請求項２に記載の方法。
【請求項４】
前記休止操作が複数の操作を含み、さらに、前記休止操作を実施するステップが、装置が使われていない場合は前記複数の操作の１つ又は複数からなるセットを実施せずに起こる、請求項１に記載の方法。
【請求項５】
前記再開操作が、装置用の再開ルーチンを含み、さらに、１つ又は複数の先行オペレーティングシステムによって前記装置の使用が検出されていない場合、前記再開操作が、前記装置用の前記再開ルーチンをコールせずに実施される、請求項１に記載の方法。
【請求項６】
前記情報が使用情報を含む、請求項１に記載の方法。
【請求項７】
前記使用情報が、前記第１のオペレーティングシステムが装置を使ったかどうかを指定し、前記第１のオペレーティングシステムが前記装置を使わなかったことを前記使用情報が示した場合、前記休止操作が、前記装置に対応する休止ルーチンを実施せずに実施される、請求項６に記載の方法。
【請求項８】
前記使用情報が、前記第２のオペレーティングシステムが装置を使うかどうかを指定し、前記第２のオペレーティングシステムが前記装置を使わないことを前記使用情報が示した場合、前記再開操作が、前記装置に対応する再開ルーチンを実施せずに実施される、請求項６に記載の方法。
【請求項９】
前記情報が装置状態情報を含む、請求項１に記載の方法。
【請求項１０】
情報を交換するステップが、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに装置状態情報を送るステップを含み、前記装置状態情報が、前記第１及び第２のオペレーティングシステム両方によって使われ、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間を切り換えるときに休止されない装置に対応する、請求項９に記載の方法。
【請求項１１】
前記第１及び第２のオペレーティングシステムの少なくとも一方が、前記情報を使って、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間で分割される又は時分割多重化される資源について再交渉する、請求項１に記載の方法。
【請求項１２】
前記再開操作を実施するステップが、
前記第２のオペレーティングシステムの１つ又は複数のドライバが、ハードウェア装置状態を復元するステップと、
前記第２のオペレーティングシステム内のカーネルが、１つ又は複数のサブシステムの動作を復元し再開するステップと、
前記第２のオペレーティングシステムによる通常動作を再開するステップとを含む、請求項１に記載の方法。
【請求項１３】
前記休止操作を実施するステップが、１つ又は複数のサブシステム及び１つ又は複数のハードウェア装置に関連づけられた状態を保存するステップを含む、請求項１２に記載の方法。
【請求項１４】
システムによって実行されると、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法を前記システムに実施させる命令を格納する１つ又は複数のコンピュータ可読記憶媒体を有する製造品であって、前記複数のオペレーティングシステムのうち第１のオペレーティングシステムがアクティブに稼動されている製造品において、前記方法が、
複数のオペレーティングシステムのうち、次にアクティブになるべき第２のオペレーティングシステムを識別するステップと、
前記第１及び第２のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間で情報を交換するステップと、
休止操作を実施することによって前記第１のオペレーティングシステムを非アクティブにさせるステップと、
前記第２のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第２のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含む、製造品。
【請求項１５】
前記情報は、１つ又は複数のメッセージを含み、さらに、前記１つ又は複数のメッセージのうち少なくとも１つのメッセージが、メッセージタイプ、前記少なくとも１つのメッセージの対象である装置の指示、及び前記メッセージタイプに関するデータを含む、請求項１４に記載の製造品。
【請求項１６】
前記休止操作が複数の操作を含み、さらに、前記休止操作を実施するステップが、装置が使われていない場合は前記複数の操作の１つ又は複数からなるセットを実施せずに起こる、請求項１４に記載の製造品。
【請求項１７】
前記再開操作が、装置用の再開ルーチンを含み、さらに、先行オペレーティングシステムによって前記装置の使用が検出されていない場合、前記再開操作が、前記装置用の前記再開ルーチンをコールせずに実施される、請求項１４に記載の製造品。
【請求項１８】
前記情報が使用情報を含み、さらに、前記使用情報が、前記第１のオペレーティングシステムが装置を使ったかどうかを指定し、前記第１のオペレーティングシステムが前記装置を使わなかったことを前記使用情報が示した場合、前記休止操作が、前記装置に対応する休止ルーチンを実施せずに実施される、請求項１４に記載の製造品。
【請求項１９】
前記情報が、受渡し使用情報を含み、さらに、前記使用情報が、前記第２のオペレーティングシステムが装置を使うかどうかを指定し、前記第２のオペレーティングシステムが前記装置を使わないことを前記使用情報が示した場合、前記再開操作が、前記装置に対応する再開ルーチンを実施せずに実施される、請求項１４に記載の製造品。
【請求項２０】
前記情報が装置状態情報を含む、請求項１４に記載の製造品。
【請求項２１】
情報を交換するステップが、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに装置状態情報を送るステップを含み、前記装置状態情報が、前記第１及び第２のオペレーティングシステム両方によって使われ、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間を切り換えるときに休止されない装置に対応する、請求項２０に記載の製造品。
【請求項２２】
前記第１及び第２のオペレーティングシステムの少なくとも一方が、前記情報を使って、前記第１オペレーティングシステムと前記第２のオペレーティングシステムの間で分割される又は時分割多重化される資源について再交渉する、請求項１４に記載の製造品。
【請求項２３】
複数のオペレーティングシステムを格納するための１つ又は複数のメモリと、
現在アクティブなオペレーティングシステムを非アクティブにさせ、非アクティブなオペレーティングシステムをアクティブにさせるオペレーティングシステムスイッチャを格納するためのメモリであって、前記スイッチャが、前記複数のオペレーティングシステムによる前記１つ又は複数のメモリの複数の領域へのアクセスを可能にし、アクセスを不能にするためのメモリアクセスコントローラモジュールを備え、前記スイッチャが、前記現在アクティブなオペレーティングシステムを非アクティブにさせ、前記非アクティブなオペレーティングシステムをアクティブにさせるとき、前記メモリアクセスコントローラが、切換えモード中に１つのオペレーティングシステム以外のオペレーティングシステム用の複数のメモリエリアへのアクセスを不能にし、
個々のオペレーティングシステムが、
前記個々のオペレーティングシステムの、アクティブから非アクティブへの遷移を取り扱うための休止操作を実施するための休止コントローラと、
前記個々のオペレーティングシステムの、非アクティブからアクティブへの遷移を取り扱うための再開操作を実施するための再開コントローラとを含む、メモリと、
オペレーティングシステムの間で情報を交換するためのオペレーティングシステム間記憶エリアであって、前記記憶エリアが、前記オペレーティングシステムによってアクセス可能であり、前記情報が、それぞれ、休止及び再開コントローラによって実施される前記休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、オペレーティングシステム間記憶エリアとを具備するシステム。
【請求項２４】
前記休止コントローラが、１つ又は複数のメッセージを作成し、作成されたメッセージを、他の少なくとも１つのオペレーティングシステムによるアクセスのための前記記憶エリアに送るためのメッセージジェネレータを備える、請求項２３に記載のシステム。
【請求項２５】
前記再開コントローラが、前記記憶エリアからアクセスされ、他の少なくとも１つのオペレーティングシステムによって生成される１つ又は複数のメッセージを翻訳するためのメッセージインタプリタを備える、請求項２３に記載のシステム。
【国際調査報告】
2011507070.tif 000016
2011507070.tif 000017
2011507070.tif 000018