(57)【要約】  本明細書では、セキュアなオペレーティングシステムスイッチングのための方法及び装置を開示する。一実施形態では、本方法は、複数のオペレーティングシステムのうちの次にアクティブになる第２のオペレーティングシステムを特定するステップと、第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせるステップと、第２のオペレーティングシステムにアクティブにならせるステップと、を含む。【選択図】  図１
2009530715.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムがコンピュータ上で同時に動作することを可能にするための方法であって、前記複数のオペレーティングシステムのうちの第１のオペレーティングシステムが現在アクティブであり、該方法は、
複数のオペレーティングシステムのうちの次にアクティブになる第２のオペレーティングシステムを特定するステップと、
前記第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに前記第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせるステップと、
前記第２のオペレーティングシステムにアクティブにならせるステップと、
を含む方法。
【請求項２】
命令を保存する一以上のコンピュータ可読記憶媒体を有する製造品であって、該命令が、システムによる実行時に、該システムに、複数のオペレーティングシステムがコンピュータ上で同時に動作することを可能にするための方法を実行させ、前記複数のオペレーティングシステムのうち第１のオペレーティングシステムが現在アクティブであり、該方法は、
複数のオペレーティングシステムのうちの次にアクティブになる第２のオペレーティングシステムを特定するステップと、
前記第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに前記第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせるステップと、
前記第２のオペレーティングシステムにアクティブにならせるステップと、
を含む、製造品。
【請求項３】
ＣＰＵと、
複数のオペレーティングシステムによる複数の領域へのアクセスを可能にし、及び不可能にするためのメモリアクセスコントローラモジュールを有するオペレーティングシステムスイッチャを記憶するメモリと、
を備え、
前記スイッチャが現在アクティブなオペレーティングシステムに非アクティブにならせ、一つのオペレーティングシステムにアクティブにならせるスイッチングモード中は、前記メモリアクセスコントローラが、前記一つのオペレーティングシステム以外のオペレーティングシステムによる複数のメモリ領域へのアクセスを不可能にする、
システム。
【請求項４】
ＯＳが別のＯＳのメモリを読むことを防止するため、及びＯＳが別のＯＳ又はシステムをクラッシュさせることを防止するために、ＯＳ間のセキュアな分離を維持するＯＳスイッチャを使用して、セキュアなオペレーティングシステムスイッチングを実行するステップを含む、方法。
【発明の詳細な説明】
【優先権】
【０００１】
[0001]本特許出願は、２００６年３月１６日に出願された「Ｓｅｃｕｒｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｓｗｉｔｃｈｉｎｇ」と題する対応の仮特許出願第６０／７８３２８６号の優先権を主張するものであり、同仮特許出願を参照することによって援用するものである。
【発明の分野】
【０００２】
[0002]本発明は、コンピュータシステムのオペレーティングシステムの分野に関するものであり、より詳細には、本発明は、コンピュータシステムにおけるオペレーティングシステムの使用のスイッチング（切り替え）に関するものである。
【発明の背景】
【０００３】
[0003]コンピュータシステムは、例えば、ＣＰＵ、ＲＡＭ、ディスク、キーボード、モニタ、及びシリアルポートといった多くのハードウェアコンポーネントから成る。幾つかの他のものは、若干、より抽象的であるが、割り込み、ＰＣＩバスといったように、ＯＳの動作に等しく関係がある。
【０００４】
[0004]システムにおいて動作するＯＳがただ一つしか存在しない場合には、そのＯＳが、システム内の全てのハードウェアコンポーネントを認識し、所有し、管理する。
【０００５】
[0005]近年、人々は、同じコンピュータに二つ以上のオペレーティングシステム（ＯＳ）を入れるようになっている。エンタープライズサーバの領域では、そのような特徴が、一つのサーバを一つのＶＭとすることを可能にし、はるかに優れた管理可能性をもたらしている。ソフトウェア開発では、そのような特徴によって、開発者が様々なＯＳ及び同じＯＳの様々なバージョンのソフトウェア移植性を迅速に試すことが可能になっている。パーソナルコンピューティングにおいてさえも、人々は、異なるアプリケーションをサポートしたり、新しいＯＳバージョンを試すために、又は、ダウンロードしたソフトウェアを試験するためにさえも、複数のＯＳを使用している。スマートフォンのような組み込みデバイスでは、人々は、私的利用に一つ、仕事用に一つと、異なる目的のために二つのＯＳをもつことができる。
【０００６】
[0006]マルチＯＳ用の優勢な技法は、仮想マシン（ＶＭ）技術であり、これは元来、メインフレームコンピュータ用にＩＢＭによって開発されたものである。近年、ＶＭＷといった新製品及び研究プロジェクトを含むＶＭ技術への関心が再燃している。それらは、良好なセキュリティ及び分離を提供するものである。しかしながら、それらは一般に、パフォーマンス低下という難点を伴う。ある研究は、ＶＭ技法が、アプリケーションによって１０％から８０％の間の何れかパーセンテージで、アプリケーションをスローダウンさせ得ることを示している。
【０００７】
[0007]加えて、ＶＭ技術の実装及び移植は複雑である。例えば、ゲストＯＳを良好にサポートするため、全ての配下にあるデバイスは、ゲストＯＳによるアクセスのために、何らかの方法で仮想化される必要がある。日々出現する新しいハードウェアのリストが大きくなるにつれて、この制約は、ＶＭベースのアプローチの適用性を制限しかねない。
【０００８】
[0008]同時に動作する複数のＯＳを必要としないアプリケーションシナリオの場合には、これらの問題をもたない単純な解決策が存在する。ＧＮＵ．ｏｒｇによるＧＲＵＢ及びＰｏｗｅｒ−Ｑｕｅｓｔ（Ｓｙｍａｎｔｅｃ）によるＢｏｏｔＭａｇｉｃのようなマルチブート（ｍｕｌｔｉ−ｂｏｏｔ）ソリューションが存在する。幾つかのハードウェアスワップ及び手動選択方式も存在しており、これらは、人に異なるブートデバイスを選択させ、同じコンピュータ上で動作する複数のＯＳを効果的に使用可能にする。残念ながら、低速で負荷の大きいスイッチングプロセスは、その応用の範囲を制限する。
【０００９】
[0009]ＯＳスイッチングは、複数のＯＳをサポートするための別の代替策である。オペレーティングシステム（ＯＳ）スイッチングは、複数のオペレーティングシステム（ＯＳ）が、同じコンピュータ上で同時に動作することを可能にする技法である。一実施形態では、各ＯＳが、システムメモリ及びストレージの一部を所有し、交替して動作する。一実施形態では、一つのＯＳから別のＯＳへのスイッチングが、電力管理モジュールにおける中断（ｓｕｓｐｅｎｄ）／再開（ｒｅｓｕｍｅ）機能を変更することによって達成される。
【００１０】
[0010]複数のＯＳが同時に動作する場合、一つの根本的な問題は、各ハードウェアコンポーネントを各ＯＳにどのようにエキスポートするかである。排他的分割（ｅｘｃｌｕｓｉｖｅ  ｐａｒｔｉｔｉｏｎ）、時分割多重化、及び抽象化という、三つの根本的に異なる技法が存在する。排他的分割では、ハードウェアコンポーネントは、一つのＯＳに排他的に属し、システム内の他の如何なるＯＳによっても決してアクセスされない。例えば、メモリを、半分に２分割することができ、二つのＯＳの各々は、一方の半分を所有する。別の例として、一つのＯＳにイーサネットコントローラを割り当てることができ、他のＯＳは、イーサネットにアクセスしないか、又はオーナＯＳとの対話を通して間接的にアクセスする。時分割多重化では、どの時点においても、一つのＯＳが、ハードウェアコンポーネントを所有し、それを排他的に管理する。しかしながら、ときどき、オーナシップ（所有権）が、一つのＯＳから別のＯＳにスイッチし得る。ＣＰＵは、通常、このようにして共用される。抽象化では、ＯＳは、実物のハードウェアコンポーネントを認識せず、管理しないが、代わりに、ソフトウェアの別のレイヤを介してハードウェアにアクセスする。仮想化は、抽象化の特別な形態であり、仮想化では、抽象化ソフトウェアのインタフェースが、典型的な関数呼び出しインタフェースの代わりに、従来のデバイスのように見える。
【００１１】
[0011]マルチＯＳソリューションは、上記の技法の組み合わせを使用することができる。同じハードウェアコンポーネントの場合であっても、異なる技法を組み合わせることが可能である。例えば、イーサネットコントローラは、一つのＯＳに排他的に属することができる。このＯＳ内のアプリケーションが仮想イーサネットコントローラを実施し、それらを他のＯＳにエキスポートする場合、他のＯＳは、仮想イーサネットコントローラの抽象インタフェースを介してイーサネットコントローラに間接的にアクセスすることができる。
【００１２】
[0012]ＶＭベースのマルチＯＳソリューションは、大部分のハードウェアコンポーネントを管理するために、抽象化又は仮想化を利用する。他方、マルチブートソリューションは、システム全体に対して、リブートによる時分割多重化を使用する。
【００１３】
[0013]ＯＳスイッチング技法の一例が、２００１年８月３０日に出願された「Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ，Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｓｗｉｔｃｈｉｎｇ  Ｓｙｓｔｅｍ，Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｍｏｕｎｔｉｎｇ  Ｍｅｔｈｏｄ，Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｓｗｉｔｃｈｉｎｇ  Ｍｅｔｈｏｄ，Ｓｔｏｒａｇｅ  Ｍｅｄｉｕｍ，ａｎｄ  Ｐｒｏｇｒａｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ａｐｐａｒａｔｕｓ」と題する米国特許出願第２００１００１８７１７Ａ１号に記載されており、当該出願では、複数のＯＳが、どのハードウェアコンポーネントの仮想化も試みることなくサポートされる。
【００１４】
[0014]米国出願第２００１００１８７１７Ａ１号に記載されているような既存のＯＳスイッチングソリューションは、複数のＯＳ間の強力な分離を提供しない。ＯＳスイッチングに伴う一つの問題は、ＯＳ間の強力な分離及び保護の欠落であり、それは、メモリ分離（ｍｅｍｏｒｙ  ｉｓｏｌａｔｉｏｎ）の欠落、及び強制制御転送（ｆｏｒｃｅｄ  ｃｏｎｔｒｏｌ  ｔｒａｎｓｆｅｒ）の欠落として露呈される。より具体的には、メモリ分離の欠落に関して、全てのＯＳは、同じ物理メモリを共用する。ＯＳカーネルは、特権モードで動作するとき、如何なるメモリ内容でも変更することが可能であり、これには、他のＯＳ及びＯＳスイッチャ（ＯＳ  ｓｗｉｔｃｈｅｒ）に属するメモリ内容が含まれる。ＯＳカーネルがそのようなことを行った場合、バグ又は悪意のあるウイルスによって、他のＯＳが、更にはシステム全体さえもが、クラッシュする。また、強制制御転送の欠落に関しては、上述の実施形態は、現在アクティブなＯＳがＣＰＵを放棄することを信頼しており、ＯＳスイッチを実行するためにＯＳスイッチャを開始する。可能性として、バグのあるＯＳ又は悪意をもってハッキングされたＯＳは、ＯＳスイッチャを開始し得ないことがある。結果として、他のＯＳは、システム全体がシャットダウンされ、リブートされるまで、事実上、永久に中断されたままである。したがって、ＯＳスイッチングのこれらの実施は、主としてメモリ分離及び強制制御移行の欠落に起因するセキュリティホールを有する。
【発明の概要】
【００１５】
[0015]本明細書では、セキュア（安全）なオペレーティングシステムスイッチングのための方法及び装置を開示する。一実施形態では、本方法は、複数のオペレーティングシステムのうちの次にアクティブになるべき第２のオペレーティングシステムを特定するステップと、第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせるステップと、第２のオペレーティングシステムにアクティブにならせるステップと、を含む。
【００１６】
[0016]本発明は、以下の詳細な説明から、また本発明の様々な実施形態についての添付の図面からより完全に理解されようが、それらは、本発明を具体的な実施形態に限定するものと見なされるべきではなく、もっぱら説明及び理解のためのものと見なされるべきである。
【本発明の詳細な説明】
【００１７】
[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]セキュアなＯＳスイッチングは、ＩｎｔｅｌのＶＴ（仮想化技術）、すなわち、ＶＴ−ｘと呼ばれる、Ｉｎｔｅｌ  ＩＡ−３２用のＶＴの特別のバージョンを用いて実施することができる。一般に、仮想マシンモニタ（ＶＭＭ）の適切な実施を用いれば、如何なる変更もなく、レガシＩＡ−３２互換ＯＳを実行することが可能である。セキュアなＯＳスイッチングのために使用されるＶＴ−ｘの幾つかの機能は、以下のとおりである。
・ＶＭＸルート動作及び非ルート動作  −  全てのレガシ機能を維持しながら、ＶＴ−ｘ対応ＣＰＵは、ルート動作（ｒｏｏｔ  ｏｐｅｒａｔｉｏｎ）及び非ルート動作（ｎｏｎ−ｒｏｏｔ  ｏｐｅｒａｔｉｏｎ）と呼ばれる二つの異なる動作モードを有する。一般に、ＶＭＭは、ルート動作モードで動作し、一方、ゲストＯＳは、非ルート動作で動作する。動作モードの遷移を容易にするため、様々な命令が追加される。加えて、非ルート動作からルート動作モードに自動的に移行するために、多くの構成可能条件が定義される。
・例外ビットマップ  −  一実施形態では、ルート動作（すなわちＶＭＭ）へのトラップを引き起こすゲストＯＳにおける例外の種類を表す３２ビットフィールド。
・ＩＯビットマップアドレス  −  サイズが８ＫＢのメモリ領域であり、その各ビットは、ＩＯ空間内の一つの３２バイト領域に対応する。対応するビットが１に設定され、「アクティブＩＯマップ」ビットも１である場合、３２バイトＩＯ領域へのアクセスは、ゲストＯＳがＶＭＭへのトラップを引き起こす原因となる。
・メモリ管理−ゲストＯＳが当該ゲストＯＳに属さないメモリにアクセスできないことを保証するため、ＶＴ−ｘは、この目標を達成するために協働する一連の機能を導入する。例えば、ＣＲ３は、ページテーブルのルートの物理アドレスを保持する制御レジスタである。ゲストＯＳによるＣＲ３を変更しようとするどのような試みも、ＶＭＭへのトラップを引き起こす。そこから、ＶＭＭは、ゲストＯＳにシャドウページテーブル（ｓｈａｄｏｗ  ｐａｇｅ  ｔａｂｌｅ）を提供することができ、シャドウページテーブルの操作は常に、ＶＭＭによって追跡され、チェックされる。
【００７３】
[0082]ＶＴ−ｘを用いたＯＳスイッチングでは、強力なセキュリティ及び複数のＯＳ間の分離を達成するための多くの可能な方法が存在する。一実施形態では、レガシモードは、ＶＴ−ｘの非ルート動作モードにマップされ、一方、スイッチャコードは、ルート動作モード（具体的にはリング０）で実施される。レガシモードにおけるＯＳの継続的動作を保証するため、ＯＳスイッチャにおいて、ＣＰＵＩＤ、ＭＯＶ等にための命令エミュレーションを含むある種のエミュレーションが実施される。
【００７４】
[0083]ページングベースのオペレーティングシステムの場合、そのＯＳに属さないメモリへのアクセスを防止するため、シャドウページテーブル機構が使用される。
【００７５】
[0084]ＯＳは、最初にＣＲ３の設定を通して、ページテーブルを設定するとき又はページテーブルエントリを変更するときに、ルート動作モードへのトラップを引き起こし、そのモードにおいて、ＯＳスイッチャは、シャドウページテーブルと呼ばれるページテーブルのコピーを作成することができる。ＯＳに属さない物理ページにページテーブルエントリがマップされないことを確認するため、全てのテーブルエントリが検証される。また、ページテーブルがページテーブルに含まれる場合、ページテーブルエントリは、シャドウページテーブル内で読み取り専用となるように変更される。ＯＳに復帰する前に、ＣＲ３を設定するため、シャドウページテーブルが使用される。その後、ＯＳが何れかのテーブルエントリを変更しようと試みると、ページテーブル領域は「読み取り」専用としてマップされているので、ＯＳスイッチャへのトラップが発生する。ＯＳスイッチャは、変更を検証することができ、その変更を元のページテーブル及びシャドウページテーブルに伝える。その後、ＯＳスイッチャは、通常の実行を再開する。ページテーブルエントリの不断のチェック及び検証を通して、ＯＳスイッチャは、ＯＳがそのＯＳに属さないメモリ領域にアクセスしないことを保証する。
【００７６】
[0085]上に説明したように、強制制御転送の鍵は、ポリシー実施ハードウェアを特定することである。ひとたび特定されると、ポリシー実施ハードウェアがＯＳによって変更され得ないことを確認するための動作、及び割り込みがＯＳスイッチャに安全に送り届けられることを保証するための動作が実行される。
【００７７】
[0086]ＩＡ−３２システムでは、ＯＳは、ＩＯ命令又はメモリマップＩＯ動作を介してデバイスにアクセスすることができる。ポリシー実施デバイスが、ＩＯ命令を介してアクセスされる場合、ＯＳスイッチャは、ゲストＯＳがＩＯ空間内の対応する領域に対して読み取り又は書き込みを行えないように、ＩＯビットマップアドレスを設定する。デバイスが、メモリマッピングを介してアクセスされる場合、メモリ分離に関して上で説明されたのと同様に、ＯＳスイッチャは、ポリシー実施デバイスがどのＯＳからもアクセス可能でないように、これらのデバイスがどのＯＳにもマップされないことを確認するためのチェックを行う。
【００７８】
[0087]ポリシー実施デバイスに関する割り込みは、全ての割り込みをＯＳスイッチャに転送することによって、ＯＳスイッチャに安全に送り届けられる。ＯＳスイッチャが関与しない割り込みの場合、ＯＳスイッチャは、それらを現在アクティブなＯＳに転送する。さもなければ、ＯＳスイッチャが、その割り込みを適切に処理する。
【００７９】
[0088]割り込み伝達及びデバイスアクセスの安全性を確保するため、ＣＰＵとポリシー実施デバイスの間に存在するどの中間デバイスも同様に、おそらくはポリシー実施デバイスを保護するのと同じ方式を使用して、ゲストＯＳから保護される。
【００８０】
＜セキュアな排他的分割＞
[0089]ＯＳスイッチングの一実施形態では、全てのハードウェアリソースが、アクティブＯＳにエクスポーズされる。幾つかは時分割多重化され、幾つかは分割される。メモリ分割及び排他的区分割等の部分分割は、ＯＳの協力を必要とする。ＴｒｕｓｔＺｏｎｅ及びＶＴ−ｘ等の新しいハードウェア機能を用いれば、そのような分割が可能になる。イーサネットコントローラ等の他のハードウェアリソースに対して分割を実施することも、等しく実現可能である。例えば、イーサネットコントローラが排他的に一つのＯＳに所属する場合、オーナＯＳだけがイーサネットコントローラにアクセスできるようにイーサネットコントローラへのアクセスを制御するために、ＴｒｕｓｔＺｏｎｅの保護コントローラが使用でき、又はＶＴ−ｘを用いたページエントリ確認を使用することができる。
【００８１】
＜コンピュータシステムの例＞
[0090]図７は、本明細書で説明した一以上の動作を実行し得る例示的なコンピュータシステムのブロック図である。以下、図７を参照する。コンピュータシステム７００は、例示的なクライアント又はサーバコンピュータシステムを備え得る。コンピュータシステム７００は、情報を伝達するための通信機構すなわちバス７１１と、バス７１１と結合された、情報を処理するためのプロセッサ７１２と、を備えている。プロセッサ７１２は、例えば、Ｐｅｎｔｉｕｍ（商標）、ＰｏｗｅｒＰＣ（商標）、Ａｌｐｈａ（商標）等のマイクロプロセッサを含むが、マイクロプロセッサに限定されない。
【００８２】
[0091]システム７００は、バス７１１に結合された、情報及びプロセッサ７１２によって実行される命令を保存するためのランダムアクセスメモリ（ＲＡＭ）又は他の動的記憶デバイス７０４（メインメモリと呼ばれる）を更に備えている。メインメモリ７０４はまた、プロセッサ７１２による命令の実行中に、一時変数又は他の中間情報を保存するために使用されてもよい。
【００８３】
[0092]コンピュータシステム７００は、バス７１１に結合された、静的情報及びプロセッサ７１２用の命令を保存するためのリードオンリメモリ（ＲＯＭ）及び／又は他の静的記憶デバイス７０６と、磁気ディスク又は光ディスク及び対応するディスクドライブ等のデータ記憶デバイス７０７も備えている。データ記憶デバイス７０７は、情報及び命令を保存するためにバス７１１に結合される。
【００８４】
[0093]コンピュータシステム７００は、バス７１１に結合された、情報をコンピュータユーザに表示するためのブラウン管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）等の表示デバイス７２１に、更に結合されていてもよい。英数字及び他のキーを含む英数字入力デバイス７２２も、情報及びコマンド選択をプロセッサ７１２に伝達するためにバス７１１に結合されていてもよい。付加的なユーザ入力デバイスは、指示情報及びコマンド選択をプロセッサ７１２に伝達するため、並びにディスプレイ７２１上でのカーソルの動きを制御するためにバス７１１に結合される、マウス、トラックボール、トラックパッド、スタイラス、又はカーソル方向キー等の、カーソル制御７２３である。
【００８５】
[0094]バス７１１に結合できる別のデバイスは、ハードコピーデバイス７２４であり、紙、フィルム等の媒体、又は類似のタイプの媒体上に情報を記録（ｍａｒｋ）するために使用できる。バス７１１に結合できる別のデバイスは、電話又はハンドヘルドパームデバイスと通信を行うための有線／無線通信機能７２５である。
【００８６】
[0095]システム７００のコンポーネント及び関連ハードウェアの何れか又は全てが、本発明において使用され得ることに留意されたい。しかし、コンピュータシステムの他の構成は、それらデバイスの幾つか又は全てを含み得ることが理解できよう。
【００８７】
[0096]上記の説明を読んだ後、本発明の多くの代替及び変更が当業者には明らかになるであろうが、図によって示し、説明した如何なる具体的な実施形態も、決して限定的に考えられることを意図していないことを理解されたい。したがって、様々な実施形態の細部への言及は、本発明にとって必須と考えられる特徴だけをそれ自体が列挙する特許請求の範囲を限定することを意図していない。
【図面の簡単な説明】
【００８８】
【図１】二つのＯＳ間でＯＳスイッチングを実行するためのＯＳスイッチング疑似コードの一実施形態を示す図である。
【図２】ＯＳ間でのスイッチングの際に強制ＯＳスイッチが発生した場合の一般的なシナリオを説明する疑似コードを示す図である。
【図３】図２に示した強制ＯＳスイッチングを示す図である。
【図４】複数のオペレーティングシステムがコンピュータ上で同時に動作できるようにするためのプロセスの一実施形態のフローチャートである。
【図５】遅延ポリシーを用いる強制ＯＳスイッチングを実行するための疑似コードを示す図である。
【図６】図５に示した強制ＯＳスイッチングのシナリオを示す図である。
【図７】例示的なコンピュータシステムのブロック図である。
【図８】メモリアクセスコントローラの一実施形態のブロック図である。
【図９】スイッチポリシー実施装置の一実施形態のブロック図である。
【図１】
2009530715.tif 000003
【図２】
2009530715.tif 000004
【図３】
2009530715.tif 000005
【図４】
2009530715.tif 000006
【図５】
2009530715.tif 000007
【図６】
2009530715.tif 000008
【図７】
2009530715.tif 000009
【図８】
2009530715.tif 000010
【図９】
2009530715.tif 000011
【手続補正書】
【提出日】平成20年10月28日(2008.10.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムがコンピュータ上で同時に動作することを可能にするための方法であって、前記複数のオペレーティングシステムのうちの第１のオペレーティングシステムが現在アクティブであり、該方法は、
複数のオペレーティングシステムのうちの次にアクティブになる第２のオペレーティングシステムを特定するステップと、
前記第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに前記第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせるステップと、
前記第２のオペレーティングシステムにアクティブにならせるステップと、
を含む方法。
【請求項２】
前記第２のオペレーティングシステムにアクティブにならせるステップが、前記第２のオペレーティングシステムに動作を再開させるために、前記第２のオペレーティングシステムのための再開動作を実行するステップを含む、請求項１に記載の方法。
【請求項３】
強制スイッチングイベントが発生したことを決定するステップであって、次にアクティブになる一つのオペレーティングシステムを特定するステップが、前記強制スイッチングイベントが発生したことの決定に応答して発生する、該ステップと、
強制制御転送を実行するステップと、
を更に含む、請求項１に記載の方法。
【請求項４】
現在アクティブなオペレーティングシステムが、非アクティブになることに失敗し、前記一つのオペレーティングシステムがアクティブになることを可能にし損ねた後に、前記強制スイッチングイベントが発生する、請求項３に記載の方法。
【請求項５】
オペレーティングシステムスイッチングイベントに応答して、オペレーティングシステムスイッチングを開始するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記オペレーティングシステムスイッチングイベントが、ユーザイベントである、請求項５に記載の方法。
【請求項７】
前記オペレーティングシステムスイッチングイベントが、スイッチングボタンが押下されたことに応答して発生される、請求項５に記載の方法。
【請求項８】
前記スイッチングボタンは、前記複数のオペレーティングシステムが変更できない状態と、前記複数のオペレーティングシステムがブロックできない一以上の割り込みとを有するセキュアデバイスとして、マップされる、請求項７に記載の方法。
【請求項９】
タイマが所定の時間に達した後に、前記スイッチングイベントが発生され、前記タイマが、前記スイッチングボタンが押下されたことに応答して動作するトリガである、請求項７に記載の方法。
【請求項１０】
前記第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに前記第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせる前記ステップが、前記第２のオペレーティングシステムによってアクセス可能な非セキュアなメモリと、前記第２のオペレーティングシステムからアクセス可能でないセキュアなメモリとに、メモリを静的に分割するステップを含む、請求項１に記載の方法。
【請求項１１】
前記セキュアなメモリ及び非セキュアなメモリが、一つのチップ上のメモリの部分を含む、請求項１０に記載の方法。
【請求項１２】
前記複数のオペレーティングシステムのうちの前記第２のオペレーティングシステム以外の一以上のオペレーティングシステムによるメモリアクセス違反について監視を行うステップを更に含む、請求項１に記載の方法。
【請求項１３】
前記第２のオペレーティングシステムが再開動作を実行するステップを更に含む、請求項１に記載の方法。
【請求項１４】
前記第２のオペレーティングシステムが再開動作を実行する前記ステップは、
前記第２のオペレーティングシステムの一以上のドライバが、ハードウェアデバイス状態を復元するステップと、
前記第２のオペレーティングシステムのカーネルが、一以上のサブシステムを復元し、該一以上のサブシステムの動作を再開するステップと、
前記第２のオペレーティングシステムによって通常動作を再開するステップと、
を含む、請求項１３に記載の方法。
【請求項１５】
現在アクティブなオペレーティングシステムから前記第２のオペレーティングシステムにスイッチするための指示を受け取るステップと、
前記現在アクティブなオペレーティングシステムが前記現在アクティブなオペレーティングシステムに関連する状態を退避するステップと、
を更に含む、請求項１３に記載の方法。
【請求項１６】
前記指示を受け取るステップが、ユーザアクション又はオペレーティングシステムイベントに応答したものである、請求項１５に記載の方法。
【請求項１７】
前記第１のオペレーティングシステムが中断動作を実行するステップを更に含む、請求項１に記載の方法。
【請求項１８】
前記第１のオペレーティングシステムが中断動作を実行する前記ステップは、一以上のサブシステム及び一以上のハードウェアデバイスに関連する状態を退避するステップを含む、請求項１７に記載の方法。
【請求項１９】
命令を記憶する一以上のコンピュータ可読記憶媒体を有する製造品であって、該命令が、システムによる実行時に、該システムに、複数のオペレーティングシステムがコンピュータ上で同時に動作することを可能にするための方法を実行させ、前記複数のオペレーティングシステムのうち第１のオペレーティングシステムが現在アクティブであり、該方法は、
複数のオペレーティングシステムのうちの次にアクティブになる第２のオペレーティングシステムを特定するステップと、
前記第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに前記第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせるステップと、
前記第２のオペレーティングシステムにアクティブにならせるステップと、
を含む、製造品。
【請求項２０】
前記第２のオペレーティングシステムにアクティブにならせる前記ステップが、前記第２のオペレーティングシステムに動作を再開させるために、前記第２のオペレーティングシステムのための再開動作を実行するステップを含む、請求項１９に記載の製造品。
【請求項２１】
強制スイッチングイベントが発生したことを決定するステップであって、次にアクティブになる一つのオペレーティングシステムを特定するステップが、前記強制スイッチングイベントが発生したことの決定に応答して発生する、該ステップと、
強制制御転送を実行するステップと、
を更に含む、請求項１９に記載の製造品。
【請求項２２】
現在アクティブなオペレーティングシステムが、非アクティブになることに失敗し、前記一つのオペレーティングシステムがアクティブになることを可能にし損ねた後に、前記強制スイッチングイベントが発生する、請求項２１に記載の製造品。
【請求項２３】
オペレーティングシステムスイッチングイベントに応答して、オペレーティングシステムスイッチングを開始するステップを更に含み、
前記オペレーティングシステムスイッチングイベントが、スイッチングボタンが押下されたことに応答して発生され、更に、前記複数のオペレーティングシステムが変更できない状態と、前記複数のオペレーティングシステムがブロックできない一以上の割り込みとを有するセキュアデバイスとして、前記スイッチングボタンがマップされる、
請求項１９に記載の製造品。
【請求項２４】
前記第２のオペレーティングシステムがアクティブになったならば、メモリアクセスコントローラに前記第２のオペレーティングシステム用のメモリの部分への排他的アクセスを可能にさせる前記ステップが、前記第２のオペレーティングシステムによってアクセス可能な非セキュアなメモリと、前記第２のオペレーティングシステムからアクセス可能でないセキュアなメモリとに、メモリを静的に分割するステップを含む、請求項１９に記載の製造品。
【請求項２５】
前記第２のオペレーティングシステムが再開動作を実行するステップを更に含む、請求項１９に記載の製造品。
【請求項２６】
現在アクティブなオペレーティングシステムから前記第２のオペレーティングシステムにスイッチするための指示を受け取るステップと、
前記現在アクティブなオペレーティングシステムが、該現在アクティブなオペレーティングシステムに関連する状態を退避するステップと、
を更に含む、請求項２５に記載の製造品。
【請求項２７】
前記指示を受け取るステップが、ユーザアクション又はオペレーティングシステムイベントに応答したものである、請求項２６に記載の製造品。
【請求項２８】
ＣＰＵと、
複数のオペレーティングシステムによる複数の領域へのアクセスを可能にし、及び不可能にするためのメモリアクセスコントローラモジュールを有するオペレーティングシステムスイッチャを記憶するメモリと、
を備え、
前記スイッチャが現在アクティブなオペレーティングシステムに非アクティブにならせ、一つのオペレーティングシステムにアクティブにならせるスイッチングモード中は、前記メモリアクセスコントローラが、前記一つのオペレーティングシステム以外のオペレーティングシステムによる複数のメモリ領域へのアクセスを不可能にする、
システム。
【請求項２９】
前記オペレーティングシステムスイッチャが、スイッチポリシー実施モジュールを更に備える、請求項２８に記載のシステム。
【請求項３０】
スイッチポリシー実施コードを記憶するコンピュータ可読媒体を更に備え、
前記スイッチポリシー実施モジュールが、
前記スイッチポリシー実施コードを実行する処理デバイスと、
一以上のイベントを発生するスイッチポリシー実施ハードウェアと、
スイッチング要求及び前記ポリシー実施ハードウェアによって発生されたイベントを、前記スイッチポリシー実施コードの実行によって処理するための前記処理デバイスに転送するイベントルータコントローラと、
を備える、請求項２８に記載のシステム。
【請求項３１】
前記スイッチポリシー実施ハードウェアの状態、及び前記イベントルータコントローラによって実行される転送が、前記複数のオペレーティングシステムの何れによっても変更可能ではない、請求項３０に記載のシステム。
【請求項３２】
前記メモリアクセスコントローラが、違反についてメモリアクセスの監視を行う、請求項２９に記載のシステム。
【請求項３３】
ＯＳが別のＯＳのメモリを読むことを防止するため、及びＯＳが別のＯＳ又はシステムをクラッシュさせることを防止するために、ＯＳ間のセキュアな分離を維持するＯＳスイッチャを使用して、セキュアなオペレーティングシステムスイッチングを実行するステップを含む、方法。
【請求項３４】
第１のオペレーティングシステムによって専用される部分と、前記第２のオペレーティングシステムによって専用される部分とにメモリを分割するステップを更に含む、請求項３３に記載の方法。
【国際調査報告】
2009530715.tif 000012
2009530715.tif 000013