(57)【特許請求の範囲】
【請求項１】
マルチオペレーティングシステム装置であって、
装置におけるオペレーションをサポートするための機器と、
前記機器の少なくとも１つの部分とインタラクションする少なくとも２つのオペレーティングシステムと、
少なくとも一つのアクセス分離モジュールを含むファームウェアと、
を含み、
前記アクセス分離モジュールは、
前記機器を発見し、
前記少なくとも２つのオペレーティングシステムとの前記機器のプロスペクティブまたはリフレクティブな関係に基づいて、前記機器と前記少なくとも２つのオペレーティングシステムとの間に関係が存在するかを判断し、
前記少なくとも２つのオペレーティングシステムとソフトウェアで発見できない関係にあるものと判断されたあらゆる機器を宣言し、
前記少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な前記装置における前記機器の前記部分を決定する、
装置。
【請求項２】
前記機器の前記部分を決定する前記アクセス分離モジュールは、前記装置の活性化に続いて、前記少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと前記機器を区分化するためのアクセス分離モジュール、を含む、
請求項１に記載の装置。
【請求項３】
前記機器の前記部分を決定する前記アクセス分離モジュールは、前記少なくとも２つのオペレーティングシステムが前記機器を発見できるようにする前記ファームウェアにおける機能性を非活性化するためのアクセス分離モジュール、を含む、
請求項２に記載の装置。
【請求項４】
前記機器の前記部分を決定する前記アクセス分離モジュールは、前記少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成するためのアクセス分離モジュール、を含み、
前記テーブルは、前記装置の活性化の後で、前記少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な前記機器の一部分の識別子を少なくとも含んでいる、
請求項３に記載の装置。
【請求項５】
前記少なくとも２つのオペレーティングシステムは、前記テーブルによって特定された前記機器の前記部分を使用して、前記装置の中へロードされ、そして、同時に動作する、
請求項４に記載の装置。
【請求項６】
前記機器は、前記少なくとも２つのオペレーティングシステムに対応するデータが保管されたメモリを含んでいる少なくとも１つのメモリモジュールを含む、
請求項１に記載の装置。
【請求項７】
前記少なくとも２つのオペレーティングシステムは、フォアグラウンドオペレーティングシステムとバックグラウンドオペレーティングシステムを含み、
前記アクセス分離モジュールは、さらに、前記フォアグラウンドオペレーティングシステムから前記バックグラウンドオペレーティングシステムへ移行するトリガーを検出する、
請求項６に記載の装置。
【請求項８】
前記アクセス分離モジュールは、さらに、前記トリガーを検出すると、前記フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定し、かつ、前記フォアグラウンドオペレーティングシステムによって使用されるように決定されたメモリの前記部分を前記バックグラウンドオペレーティングシステムに対してアクセスできないようにする、
請求項７に記載の装置。
【請求項９】
前記アクセス分離モジュールは、メモリの前記部分に対するアクセスを防止するために、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つを行う、
請求項８に記載の装置。
【請求項１０】
前記アクセス分離モジュールは、暗号化鍵を生成して、前記フォアグラウンドオペレーティングシステムによって使用されるメモリの前記部分を暗号化するために前記鍵を使用し、かつ、前記機器のセキュアメモリの中に前記鍵を保管する、
請求項８に記載の装置。
【請求項１１】
前記アクセス分離モジュールは、さらに、前記セキュアメモリから第２暗号化鍵を取得して、前記バックグラウンドオペレーティングシステムによって使用されるメモリの部分を復号化するために前記第２暗号化鍵を使用し、かつ、前記フォアグラウンドオペレーティングシステムを前記バックグラウンドオペレーティングシステムによって置き換えさせる、
請求項１０に記載の装置。
【請求項１２】
一つの装置においてマルチオペレーティングシステムに適合する方法であって、
装置においてファームウェア介入を要求するイベントを検出するステップと、
前記装置の中に存在する機器を決定するステップと、
前記少なくとも２つのオペレーティングシステムとの前記機器のプロスペクティブまたはリフレクティブな関係に基づいて、前記機器と前記装置の中に存在している少なくとも２つのオペレーティングシステムとの間の関係を決定するステップと、
前記少なくとも２つのオペレーティングシステムとソフトウェアで発見できない関係にあるものと判断されたあらゆる機器を宣言するステップと、
前記少なくとも２つのオペレーティングシステムそれぞれによる使用のために前記機器の少なくとも１つの部分を分離するステップと、
を含む、方法。
【請求項１３】
前記イベントを検出するステップは、前記装置の活性化を検出するステップ、または、前記装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するステップ、のうち少なくとも１つを含んでいる、
請求項１２に記載の方法。
【請求項１４】
前記装置における前記機器を決定するステップは、前記少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと前記機器を区分化するステップ、
を含む、請求項１３に記載の方法。
【請求項１５】
前記機器と前記少なくとも２つのオペレーティングシステムとの間の関係を決定するステップは、
前記少なくとも２つのオペレーティングシステムが前記機器を発見できるようにする前記ファームウェアにおける機能性を非活性化するステップ、および、
前記少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成するステップであり、前記テーブルは、前記装置の活性化の後で、前記少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な前記機器の一部分の識別子を少なくとも含んでいる、ステップ、
を含む、請求項１４に記載の方法。
【請求項１６】
前記少なくとも２つのオペレーティングシステムそれぞれによる使用のために前記機器の少なくとも１つの部分を分離するステップは、前記少なくとも２つのオペレーティングシステムが、前記テーブルによって特定された前記機器の前記部分を使用して、前記装置の中へロードされ、そして、同時に動作できるようにするステップ、
を含む、請求項１５に記載の方法。
【請求項１７】
前記機器と前記少なくとも２つのオペレーティングシステムとの間の関係を決定するステップは、
少なくとも前記フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定するステップ、
を含む、請求項１３に記載の方法。
【請求項１８】
前記少なくとも２つのオペレーティングシステムそれぞれによる使用のために前記機器の少なくとも１つの部分を分離するステップは、
前記移行の以前に、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つによって、もしくは、前記フォアグラウンドオペレーティングシステムによって使用されるメモリの前記部分を暗号化することによって、少なくとも前記フォアグラウンドオペレーティングシステムによって使用されるメモリの前記部分を、前記バックグラウンドオペレーティングシステムに対してアクセスできないようにするステップ、
を含む、請求項１７に記載の方法。
【請求項１９】
少なくとも１つの装置を含むシステムであって、
請求項１２乃至１８いずれか一項に記載の方法を実行するように構成されている、
システム。
【請求項２０】
請求項１２乃至１８いずれか一項に記載の方法を実行するように構成されている、
チップセット。
【請求項２１】
コンピューティングデバイス上で実行されると、請求項１２乃至１８いずれか一項に記載の方法を前記コンピューティングデバイスに実行させる、複数のインストラクションを含む、
コンピュータプログラム。
【請求項２２】
マルチオペレーティングシステム装置に対するアクセス分離のために構成された装置であって、
請求項１２乃至１８いずれか一項に記載の方法を実行するように構成されている、
装置。
【請求項２３】
請求項１２乃至１８いずれか一項に記載の方法を実行するための手段を有する、
装置。
【請求項２４】
請求項２１に記載のコンピュータプログラムを記憶した、
コンピュータで読取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置に関する。より特定的には、複数のオペレーティングシステムの同時オペレーション及び/又はスイッチング挙動を管理するための装置に関する。
【背景技術】
【０００２】
装置（ｄｅｖｉｃｅ）は、その装置内の機器（ｅｑｕｉｐｍｅｎｔ）のオペレーションを促進するためのオペレーティングシステム（ＯＳ）を含んでよい。例えば、ＯＳは、機器のための種々のドライバ、ファイルハンドリングと処理ユーティリティ、装置とのユーザインタラクションを促進し得るユーザインターフェイスソフトウェア、等を含んでよい。装置は、これが装置が機能するために必要な全てであるように、従来からただ一つのＯＳを含んでいる。しかしながら、いろいろなソースからのさまざまな異なるタイプのオペレーティングシステムの導入は、マルチオペレーティングシステム装置への興味を生成してきた。例えば、モバイルコンピューティングデバイスのユーザは、デバイスが静止したやり方（例えば、外部電源と有線ネットワークを使用）において使用されているときには、よりロバスト（ｒｏｂｕｓｔ）なＯＳの使用を望んでよく、そして、装置がモバイルであるときには、より合理化され、電力消費効率のよいＯＳに切り換えてよい。代替的に、「クラウド（”ｃｌｏｕｄ”）」コンピューティングソリューション（例えば、リモートプロセッシング、リモートストレージ、等といったサービスを提供することができる少なくとも１つの装置）に対する興味の増加は、デバイスをスケーラブル（ｓｃａｌａｂｌｅ）なプロセッシングソリューションのためのコンピューティングに係るより小さなユニットへと分解する（ｂｒｅａｋ  ｄｏｗｎ）ことができる必要性を創成した。いずれにしても、複数のオペレーティングシステムを個別に、または、同時に実行する能力は、望ましい能力である。
【０００３】
一つの装置において一つ以上のＯＳを使用することは一面では有益であり得る一方で、そうしたシステムの実際の実施は、現在では問題がある。既存のソリューションでは、適切なやり方で一つのＯＳから別のＯＳへ移行すること、または、複数のオペレーティングシステムを同時に実行することができない。代わりに、装置は、一時に一つのＯＳだけを実行し得るものであり、ＯＳのコンフィグレーション、等を変更するためにはリブートが必要である。結果として生じる遅延、及び/又は、望ましくないオペレーションの制限が、一つ以上のＯＳの使用を難儀なものにし得る。一つのオペレーティングシステムについて、別のＯＳの中で仮想的に実行することも可能であり得る。それにより、一つの装置において一つ以上のＯＳが同時に動作できるものである。そういったソリューションは、一つ以上のＯＳを同時に実行し、または、異なるオペレーティングシステム間を迅速に移動する柔軟性を提供し得る一方で、このソリューションを実施するために必要な処理及び/又は電力リソースが、それぞれのＯＳが許容可能なやり方で実行されるためには、所定の実施を適切なものとしない。例えば、処理パワー及び/又はバッテリー寿命が問題であり（例えば、モバイル通信及び/又はコンピューティングデバイス）、同時に実行されている複数のオペレーティングシステムについて十分なリソース、セキュリティ、及び/又は、安定性を提供するために、一つの装置において機器を細分する要求がある。
【図面の簡単な説明】
【０００４】
請求される技術的事項の種々の実施例に係る特徴および利点は、以降の詳細な説明が進行するにつれて、そして、図面を参照することで明らかになろう。図面では、類似の数字は類似のパーツを示している。
【図１】図１は、本発明開示の少なくとも１つの実施例に従って、マルチオペレーティングシステム装置について、アクセス分離のために構成された一つの装置例を示している。
【図２】図２は、本発明開示の少なくとも１つの実施例に従って、利用可能な装置のための一つのコンフィグレーション例を示している。
【図３】図３は、本発明開示の少なくとも１つの実施例に従って、マルチオペレーティングシステム装置について、アクセス分離のためのオペレーション例を示している。
【図４】図４は、本発明開示の少なくとも１つの実施例に従って、選択的な機器レポーティングを介した機器分離の一つの例を示している。
【図５】図５は、本発明開示の少なくとも１つの実施例に従って、選択的な機器レポーティングを介した機器分離のためのオペレーション例を示している。
【図６】図６は、本発明開示の少なくとも１つの実施例に従って、メモリロックアウトを介した機器分離の一つの例を示している。
【図７】図７は、本発明開示の少なくとも１つの実施例に従って、メモリロックアウトを介した機器分離のためのオペレーション例を示している。
【図８】図８は、本発明開示の少なくとも１つの実施例に従って、メモリ暗号化を介した機器分離の一つの例を示している。
【図９】図９は、本発明開示の少なくとも１つの実施例に従って、メモリ暗号化を介した機器分離のためのオペレーション例を示している。
【０００５】
以降の詳細な説明は、説明的な実施例に対して行われる参照と共に進行するが、多くの代替、変更、および変形が当業者にとっては明らかであろう。
【発明を実施するための形態】
【０００６】
本アプリケーションは、マルチオペレーティングシステム装置に対するアクセス分離に向けられている。一般的に、装置は、装置において同時に動作している一つ以上のオペレーティングシステム（ＯＳ）を収容し、または、一つのＯＳから別のものへ移行するように、ファームウェア（例えば、持続性メモリにおけるプログラムコード）を使用して構成されてよい。一つの実施例においては、ファームウェアにおけるアクセス分離モジュール（ａｃｃｅｓｓ  ｉｓｏｌａｔｉｏｎ  ｍｏｄｕｌｅ、ＡＩＭ）が、装置の活性化（ａｃｔｉｖａｔｉｏｎ）に従う装置の機器コンフィグレーションを決定し、そして、次に、複数のオペレーティングシステムによる使用のために機器を区分化してよい。ＡＩＭは、次に、機器検出サービスをディセーブル（ｄｉｓａｂｌｅ）にし、そして、カスタマイズされたテーブルを使用してそれぞれのＯＳに対して機器の少なくとも一部分を割り当ててよい。オペレーティングシステム間を移行するときに、ＡＩＭは、一つのＯＳに対応する情報が他のものについてアクセス可能でないことを保証するのを手助けし得る。例えば、ＡＩＭは、フォアグラウンドＯＳがバックグラウンドＯＳによって置き換えられるときを検出し、そして、バックグラウンドＯＳがアクティブになる以前にフォアグラウンドＯＳのファイルをプロテクトし得る。プロテクションの例は、バックグラウンドＯＳに対してアクセス可能でないように、バックグラウンドＯＳによって使用されるメモリをロックアウトすること、バックグラウンドＯＳがアクティブになる以前にフォアグラウンドＯＳによって使用されるメモリを暗号化すること、等を含んでよい。暗号化は、ＯＳにおいてアクティブな害のあるプログラム（例えば、マルウェア）によってアクセスされることから鍵を保護するために、セキュアメモリ（ｓｅｃｕｒｅ  ｍｅｍｏｒｙ）の中に鍵を保管することを含んでよい。
【０００７】
一つの実施例において、マルチオペレーティングシステム装置は、例えば、機器、少なくとも２つのオペレーティングシステム、およびファームウェアを含んでよい。機器は、装置におけるオペレーションをサポートするためのものであってよい。少なくとも２つのオペレーティングシステムは、装置の少なくとも一部分とインタラクションしてよい。ファームウェアは、少なくとも１つのＡＩＭを含んでよく、少なくとも２つのオペレーティングシステムのそれぞれに対してアクセス可能な、装置における機器の部分を決定する。
【０００８】
例えば、機器の部分を決定するＡＩＭは、装置の活性化に続いて、少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するＡＩＭを含んでよい。機器の部分を決定するＡＩＭは、少なくとも２つのオペレーティングシステムが機器を発見することができるようにするファームウェアにおける機能性を非活性化するＡＩＭを含んでよい。加えて、機器の部分を決定するＡＩＭは、さらに、少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成するＡＩＭを含んでよく、テーブルは、装置の活性化に続いて、少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。少なくとも２つのオペレーティングシステムは、次に、装置の中へロードされ、そして、テーブルによって特定された機器の部分を利用して同時に動作し得る。
【０００９】
一つの実施例において、機器は、少なくとも２つのオペレーティングシステムに対応するデータセットが保管されたメモリを含む、少なくとも１つのメモリモジュールを含んでよい。少なくとも２つのオペレーティングシステムは、フォアグラウンドオペレーティングシステムとバックグラウンドオペレーティングシステムとを含んでよく、アクセス分離モジュールは、さらに、フォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するトリガーを検出する。ＡＩＭは、さらに、トリガーを検出すると、フォアグラウンドオペレーティングシステムによって使用されるメモリの一部分を決定し、そして、フォアグラウンドオペレーティングシステムによって使用されるべきものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにする。フォアグラウンドオペレーティングシステムによって使用されるべきものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするＡＩＭは、レジスタ設定のアジャストまたはロックダウン（ｌｏｃｋ  ｄｏｗｎ）のうち少なくとも１つに対して、メモリのその部分に対するあらゆるアクセスを防止するＡＩＭを含んでよい。フォアグラウンドオペレーティングシステムによって使用されるべきものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするＡＩＭは、暗号鍵を生成し、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化するために鍵を使用し、そして、機器のセキュアメモリの中に鍵を保管するＡＩＭを含んでよい。そのうえ、ＡＩＭは、さらに、セキュアメモリから第２暗号鍵を獲得し、バックグラウンドオペレーティングシステムによって使用されるメモリの部分を復号するために第２の鍵を使用し、そして、フォアグラウンドオペレーティングシステムをバックグラウンドオペレーティングシステムによって置き換えさせる。
【００１０】
本発明開示と合致する装置において複数のオペレーティングシステムを収容するための方法は、例えば、装置においてファームウェアの介入（ｉｎｔｅｒｖｅｎｔｉｏｎ）を必要とするイベントを検出すること、装置の中に存在する機器を決定すること、機器と装置の中に存在する２つのオペレーティングシステムとの間の関係を決定すること、そして、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離すること、を含んでよい。
【００１１】
イベントを検出することは、例えば、装置の活性化、または、装置におけるフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するためのトリガーのうち少なくとも１つを検出することを含んでよい。装置における機器を決定することは、少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化することを含んでよい。一つの実施例において、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定することは、少なくとも２つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化すること、そして、少なくとも２つのオペレーティングシステムそれぞれに対応しているテーブルを生成することを含んでよく、テーブルは、装置の活性化に続いて、少なくとも２つのオペレーティングシステムそれぞれによってアクセス可能な機器の一部分の識別子を少なくとも含んでいる。少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離することは、少なくとも２つのオペレーティングシステムを装置の中へロードし、そして、テーブルによって特定された機器の部分を同時に利用して動作できるようにすることを含んでよい。別の実施例において、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定することは、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの一部分を決定することを含んでよい。少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離することは、移行の以前に、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにすることを含んでよい。メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つによるもの、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによるものである。同一または異なる実施例においては、少なくとも１つのマシンで読取り可能な記録媒体が、個々に又は組み合わせにおいて、記録されたインストラクションを有している。一つまたはそれ以上のプロセッサによって実行されると、装置において複数のオペレーティングシステムを収容するために以降のオペレーションを結果として生じるインストラクションは、装置においてファームウェアの介入を必要とするイベントを検出すること、装置の中に存在する機器を決定すること、機器と装置の中に存在する２つのオペレーティングシステムとの間の関係を決定すること、そして、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離すること、を含んでよい。媒体の実施例は、さらに、方法の実施例と同様な実施例の特徴を含み得る。
【００１２】
図１は、本発明開示の少なくとも１つの実施例に従って、マルチオペレーティングシステム装置について、アクセス分離のために構成された一つの装置例を示している。装置１００の例は、これらに限定されるわけではないが、以下のものを含んでよい。Ａｎｄｒｏｉｄ（Ｒ）ＯＳ、Ｗｉｎｄｏｗｓ（Ｒ）ＯＳ、Ｍａｃ  ＯＳ、Ｔｉｚｅｎ  ＯＳ、  Ｆｉｒｅｆｏｘ  ＯＳ、Ｂｌａｃｋｂｅｒｒｙ（Ｒ）ＯＳ、Ｐａｌｍ（Ｒ）ＯＳ、Ｓｙｍｂｉａｎ（Ｒ）ＯＳ、等に基づくセルラハンドセットまたはスマートフォンといったモバイル通信機器、ｉＰａｄ（Ｒ）、Ｓｕｒｆａｃｅ（Ｒ）、Ｇａｌａｘｙ  Ｔａｂ（Ｒ）、Ｋｉｎｄｌｅ  Ｆｉｒｅ（Ｒ）、等のようなタブレットコンピュータといったモバイルコンピューティングデバイス、インテル社により製造される低電力チップセットを含んでいるＵｌｔｒａｂｏｏｋ（Ｒ）、ネットブック、ノートブック、ラップトップ、パームトップ、等、デスクトップコンピュータといった典型的な静止型のコンピューティングデバイス、サーバ、スマートテレビ、インテル社からのＮｅｘｔ  Ｕｎｉｔ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ（ＮＵＣ）プラットフォームのようなスモールフォームファクタコンピューティングソリューション（例えば、限られた空間のアプリケーション、ＴＶセットトップボックス、等）である。装置１００は、例えば、少なくとも、ファームウェア１０２、機器（ｅｑｕｉｐｍｅｎｔ）１０４、および、ＯＳ  １０６Ａ、ＯＳ  １０６Ｂ、・・・、ＯＳ  １０６ｎ（まとめて、「ＯＳ  １０６Ａ・・・ｎ」）といった複数のオペレーティングシステムを含んでよい。装置１００においては３つのＯＳ  １０６Ａ・・・ｎが示されているだけであるが、本発明開示に合致する実施例は、３つのオペレーティングシステムだけに限定されるものではなく、例えば、装置１００の性能に応じて、それ以下または以上のものを含んでよい。
【００１３】
ファームウェア１０２は、例えば、装置１００における不揮発性（ＮＶ）メモリの中に保管された、ソフトウェアコード、プログラム、データ、等を含んでよい。例えば、読み出し専用メモリ（ＲＯＭ）は、装置１００が動作化（例えば、電源なし状態からの電源アップ、電源あり状態からのリブート、等）されたときにメモリの中へロードされる情報を用いて符号化（ｅｎｃｏｄｅ）されてよい。装置１００のメモリの中へロードされる情報は、例えば、ＯＳ  １０６Ａ・・・ｎと機器１０４との間のインターフェイスを提供するための少なくとも１つのカーネル、装置１００の中で少なくとも１つの仮想マシン（ＶＭ）のオペレーションを管理するための仮想マシンマネージャ（ＶＭＭ）または「ハイパーバイザ（”ｈｙｐｅｒｖｉｓｏｒ”）」、ドライバ、ユーティリティ、セキュリティプログラム、等を含んでよい。ファームウェア１０２によってロードされるプログラムは、セキュリティ検証に供するものであってよく、そして、従って、装置１００における他のソフトウェア（例えば、ＯＳ  １０６Ａ・・・ｎ）よりも高い特権（ｐｒｉｖｉｌｅｇｅ）においてオペレーションしてよい。ファームウェア１０２によってロードされる少なくとも１つのプログラムは、ＡＩＭ  １０８であってよい。一般的に、ＡＩＭ  １０８は、ＯＳ  １０６Ａ・・・ｎのオペレーションとインタラクションを促進し得る。ＡＩＭ１０８は、例えば、それぞれのＯＳ  １０６Ａ・・・ｎによって機器１０４の部分がどのようにアクセスされ得るかをコントロールし得る。ＡＩＭ１０８によって実行され得るアクティビティの例が、図３−図９に関して説明される。
【００１４】
機器１０４は、装置１００の中のハードウェアを含んでよく、もしくは、少なくとも装置１００に対して接続されてよい。種々のオペレーティングシステムをサポート及び/又は促進し得るものである。機器１０４は、装置１００のオペレーションに対してよりコア（ｃｏｒｅ）なシステム（例えば、プロセッサ、メモリ、バスインターフェイス、入力／出力（Ｉ／Ｏ）、等）を含んでよい。ユーザインターフェイスハードウェア、外部通信のための有線及び/又は無線ハードウェア、等といった、周辺システムも同様である。一つの実施例において、ＡＩＭ１０８は、機器１０４の少なくとも一部分を分離してよい。例えば、ＯＳ  １０６Ａに対してアクセス可能な機器１０４Ａ、ＯＳ  １０６Ｂに対してアクセス可能な機器１０４Ｂ、・・・、ＯＳ  １０６ｎに対してアクセス可能な機器１０４ｎ（まとめて、「機器  １０４Ａ・・・ｎ」）、といったものである。分離は、ここにおいて参照されるように、プログラムに従ったコントロールが確立され得ることを示しており、機器  １０４Ａ・・・ｎが、対応するＯＳ  １０６Ａ・・・ｎだけによって成功裡にアクセスされるようにできる（例えば、読み出し及び/又は書き込まれるデータ、実行されるコマンド、等）。別のＯＳ  １０６Ａ・・・ｎによるアクセスの試み（ａｔｔｅｍｐｔ）は、ブロックされている試み、生成されているエラー、または、（例えば、データ暗号化のせいで）理解できないデータのリターン、のうち少なくとも１つを結果として生じ得る。
【００１５】
ＯＳ  １０６Ａ・・・ｎは、装置１００において機器１０４のオペレーションを管理するように構成され得るソフトウェアの集合を含んでよい。ＯＳ  １０６Ａ・・・ｎは、販売のための会社によって製造されるか、自由な使用のためのユーザコミュニティ（例えば、「オープンソース」（”ｏｐｅｎ−ｓｏｕｒｃｅ”））によってコンパイルされるか、または、プライベート／パブリックモデルのハイブリッドであってよい。ＯＳ  １０６Ａ・・・ｎの実施例は、これらに限定されるわけではないが、以下のものを含んでよい。ディスクオペレーティングシステム（ＤＯＳ）、Ｗｉｎｄｏｗｓ、ＩＯｓ、Ａｎｄｒｏｉｄ、Ｕｎｉｘ、Ｌｉｎｕｘ（登録商標）（例えば、公共および営利的な配布の両方を含んでいる）、Ｊｏｌｉｃｌｏｕｄ、等である。ＯＳ  １０６Ａ・・・ｎは、少なくとも１つのカーネルと関連付けられてよい。カーネルは、ＯＳ  １０６Ａ・・・ｎと機器１０４との間のインターフェイスとして動作し得るソフトウェアリソースを含んでよい。例えば、カーネルは、機器１０４をオペレーションするために使用され得る少なくとも１つのドライバを含んでよい。オペレーションの最中に、ＯＳ  １０６Ａ・・・ｎは、機器１０４における種々のハードウェアリソースにアクセスするためのシステムコールをなし得る。カーネルは、これらのコールを管理して、機器１０４の中の適切なハードウェアに対してコールを割り当て得る。ＯＳ  １０６Ａ・・・ｎは、装置１００において、単独で（例えば、一度に一つ）、もしくは、同時にオペレーションし得る。両方のオペレーションシナリオの実施例が、図３−図９に関して説明される。
【００１６】
図２は、本発明開示の少なくとも１つの実施例に従って、利用可能な装置１００’のための一つのコンフィグレーション例を示している。特に、装置１００’は、図１において開示されたような機能性の例を実施することが可能であり得る。しかしながら、装置１００’は、本発明開示と合致する実施例において使用可能な装置の一つの例を意味するだけであり、そして、これらの様々な例を実施に係るあらゆる特定のやり方に限定することを意味するものではない。
【００１７】
装置１００’は、例えば、装置オペレーションを管理するように構成されているシステムモジュール２００を含んでよい。システムモジュール２００は、例えば、処理モジュール２０２、メモリモジュール２０４、電力モジュール２０６、ユーザインターフェイスモジュール２０８、および通信インターフェイスモジュール２１０を含んでよい。装置１００’は、また、通信モジュール２１２も含んでよい。通信モジュール２１２は、システムモジュール２００から分離しているものとして説明されてきたが、図２において示される実施例は、説明目的のためだけに示されてきたものである。通信モジュール２１２に関連する機能性のいくつか又は全ては、または、システムモジュール２００の中へ包含されることもできる。
【００１８】
装置１００’において、処理モジュール２０２は、別個のコンポーネントの中に置かれた一つまたはそれ以上のプロセッサ、または代替的に、一つのコンポーネントの中（例えば、システムオンチップ（ＳｏＣ）構成の中）にエンベッドされた一つまたはそれ以上の処理チップ、および、あらゆるプロセッサ関連のサポート回路（例えば、インターフェイスのブリッジ、等）を含んでよい。プロセッサの例は、これらに限定されるわけではないが、インテル社から利用可能な種々のｘ８６ベースのマイクロプロセッサを含んでよく、Ｐｅｎｔｉｕｍ、Ｘｅｏｎ、Ｉｔａｎｉｕｍ、Ｃｅｌｅｒｏｎ、Ａｔｏｍ、Ｃｏｒｅ  ｉシリーズ製品、Ａｄｖａｎｃｅｄ  ＲＩＳＣ（例えば、縮小命令セットコンピューティング）マシン、または、”ＡＲＭ”プロセッサ、等におけるものを含んでいる。サポート回路の例は、処理モジュール２０２が、それを通じて、装置１００’において、異なるスピード、異なるバス上、等において動作している他のシステムコンポーネントとインタラクションし得るインターフェイスを提供するように構成されたチップセット（例えば、インテル社から利用可能なＮｏｒｔｈｂｒｉｄｇｅ、Ｓｏｕｔｈｂｒｉｄｇｅ、等）を含んでよい。サポート回路と一般的に関連するいくつかの又は全ての機能性も、また、プロセッサとして同一の物理的なパッケージの中に含まれてよい（例えば、インテル社から利用可能なプロセッサのＳａｎｄｙ  Ｂｒｉｄｇｅファミリーの中といったもの）。
【００１９】
処理モジュール２０２は、装置１００’において種々のインストラクションを実行するように構成されてよい。インストラクションは、データ読み出し、データ書き込み、データ処理、データ形成、データ変換、データ転換、等に関するアクティビティを処理モジュール２０２に実行させるように構成されたプログラムコードを含んでよい。情報（例えば、インストラクション、データ、等）は、メモリモジュール２０４の中に保管されてよい。メモリモジュール２０４は、固定またはリムーバブルなフォーマットにおいてランダムアクセスメモリ（ＲＡＭ）またはＲＯＭを含んでよい。ＲＡＭは、例えば、スタティックＲＡＭ（ＳＲＡＭ）またはダイナミックＲＡＭ（ＤＲＡＭ）といった、装置１００’のオペレーションの最中に情報を保持するように構成された揮発性メモリを含んでよい。ＲＯＭは、装置１００’が動作化されたときにインストラクションを提供するように、Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ（ＢＩＯＳ）、Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ（ＵＥＦＩ）、等を使用して、構成されたＮＶメモリ、電気的プログラム可能ＲＯＭ（ＥＰＲＯＭ）といったプログラマブルメモリ、フラッシュ、等を含んでよい。他の固定／リムーバブルなメモリは、これらに限定されるわけではないが、以下のものを含んでよい。例えば、フロッピー（登録商標）ディスク、ハードドライブ、等といった、磁気メモリ、半導体フラッシュメモリ（例えば、ｅｍｂｅｄｄｅｄ  ｍｕｌｔｉｍｅｄｉａ  ｃａｒｄ（ｅＭＭＣ）、等）といった電子メモリ、リムーバブルメモリカードまたはスティック（例えば、ｍｉｃｒｏ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ（ｕＳＤ）、ＵＳＢ、等）、ｃｏｍｐａｃｔ  ｄｉｓｃ−ｂａｓｅｄ  ＲＯＭ（ＣＤ−ＲＯＭ）、Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｋ（ＤＶＤ）、Ｂｌｕ−Ｒａｙ（登録商標）  Ｄｉｓｋ、等、である。
【００２０】
電力モジュール２０６は、内部電源（例えば、バッテリー、フュエルセル（ｆｕｅｌ  ｃｅｌｌ）、等）、及び/又は、外部電源（例えば、エレクトロメカニカルまたは太陽発電機、パワーグリッド（ｐｏｗｅｒ  ｇｒｉｄ）、フュエルセル、等）、および、動作のために必要な電力を装置１００’に提供するように構成された関連回路を含んでよい。ユーザインターフェイスモジュール２０８は、ユーザが装置１００’とインタラクションできるようにするためのハードウェア及び/又はソフトウェアを含んでよい。例えば、種々の入力メカニズム（例えば、マイクロフォン、スイッチ、ボタン、ノブ、キーボード、スピーカ、タッチ感応サーフェス、画像をキャプチャし、及び/又は、近傍、距離、動作、ジェスチャ、向き、等を検知するように構成された一つまたはそれ以上のセンサ）、および、種々の出力メカニズム（例えば、スピーカ、ディスプレイ、ライト／フラッシュ（ｌｉｇｈｔｅｄ／ｆｌａｓｈｉｎｇ）インジケータ、振動、動作、等に対するエレクトロメカニカルコンポーネント）といったものである。
【００２１】
通信インターフェイスモジュール２１０は、パケットルーティング（ｒｏｕｔｉｎｇ）および通信モジュール２１２のための他のコントロール機能を管理するように構成されてよく、有線及び/又は無線通信をサポートするように構成されたリソースを含んでよい。いくつかのインスタンスにおいて、装置１００’は、一つまたはそれ以上の通信モジュール２１２（例えば、有線プロトコル及び/又は無線ラジオのための別個の物理的なインターフェイスモジュールを含む）を含んでよく、集中化された通信インターフェイスモジュール２１０によって全てが管理される。有線通信は、シリアルおよびパラレル有線媒体を含んでよい。例えば、Ｅｔｈｅｒｎｅｔ、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）、Ｆｉｒｅｗｉｒｅ、Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｉｎｔｅｒｆａｃｅ（ＤＶＩ）、Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ（ＨＤＭＩ（登録商標）、等といったものである。無線通信は、例えば、近接（ｃｌｏｓｅ−ｐｒｏｘｉｍｉｔｙ）無線媒体（例えば、Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ（ＮＦＣ）標準に基づくといったラジオ周波数（ＲＦ）、赤外線（ＩＲ）、等）、近距離無線媒体（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷＬＡＮ、Ｗｉ−Ｆｉ、等）、遠距離無線媒体（例えば、セルラ広域ラジオ通信技術、衛星ベースの通信、等）、または、音波を介した電気的通信を含んでよい。一つの実施例において、通信インターフェイスモジュール２１０は、通信モジュール２１２においてアクティブな無線通信がお互いに干渉するのを妨げるように構成されてよい。この機能の実行において、通信インターフェイスモジュール２１０は、例えば、送信を待っているメッセージの相対的な優先度に基づいて、通信モジュール２１２のためのアクティビティをスケジュールしてよい。図２において開示される実施例は、通信モジュール２１２から分離している通信インターフェイスモジュール２１０を示しているが、通信インターフェイスモジュール２１０と通信モジュール２１２の機能性が同一のモジュールの中に組み込まれることも可能である。
【００２２】
図２において開示される実施例において、メモリモジュール２０は、ファームウェア１０２’を含んでよく（例えば、メモリモジュール２０４の中のＮＶメモリに保管される）、ＡＩＭ１０８’を含んでよい。オペレーションの一つの実施例において、ファームウェア１０２’は、装置１００’が動作化されるとＲＡＭメモリの中にロードされ得る情報を含んでよい。この情報をロードすることは、マルウェア（ｍａｌｗａｒｅ）がロードされないことを保証するための検証（例えば、測定）を含んでよい。ＡＩＭ１０８’は、ＲＡＭの中へロードされる情報の一部であってよく、そして、ＯＳ  １０６Ａ・・・ｎに関するイベントについて装置１００’におけるオペレーションをモニタしてよい。イベントの例は、装置１００’の動作化、ＯＳ  １０６Ａ・・・ｎを装置１００’の中へロードすること、フォアグラウンドＯＳ  １０６Ａ・・・ｎからバックグラウンドＯＳ  １０６Ａ・・・ｎへ移行するためのトリガー、等を含んでよい。イベントを検出すると、ＡＩＭ１０８’は、機器１０４の少なくとも一部分の分離に関するオペレーションを実行してよい。機器は、例えば、図２において開示されるように、モジュール２００から２１２までに関連する機器である。
【００２３】
図３は、本発明開示の少なくとも１つの実施例に従って、マルチオペレーティングシステム装置について、アクセス分離のためのオペレーション例を示している。図３において開示されるオペレーション例は、本発明開示と合致する種々の実施例が基づく、基本フレームワーク（ｂａｓｉｃ  ｆｒａｍｅｗｏｒｋ）として役立ち得る。オペレーション３００においては、装置１００においてファームウェア１０２による介入（例えば、ＡＩＭ１０８によるもの）を必要とするイベントが検出されてよい。イベントの例は、装置１００’の動作化、フォアグラウンドＯＳ  １０６Ａ・・・ｎからバックグラウンドＯＳ  １０６Ａ・・・ｎへ移行するためのトリガー、等を含んでよい。装置１００における機器１０４が、次に、オペレーション３０２において決定される。機器１０４を決定することは、例えば、装置１００の中に組み込まれた、及び/又は、接続されたハードウェアを発見することを含んでよい。オペレーション３０２において機器１０４が決定された後で、次に、オペレーション３０４において、機器１０４のＯＳ  １０６Ａ・・・ｎに対する関係が決定されてよい。例えば、オペレーション３０４においては、機器１０４の少なくとも一部分がＯＳ  １０６Ａ・・・ｎそれぞれと関連付けされてよい。この関連付けは、プロスペクティブ（ｐｒｏｓｐｅｃｔｉｖｅ）ベースで（例えば、装置１００の初期化の最中であるが、ＯＳ  １０６Ａ・・・ｎをロードする以前）、または、リフレクティブ（ｒｅｆｌｅｃｔｉｖｅ）ベースで（例えば、ＯＳ  １０６Ａ・・・ｎによって実際に使用されていた装置１００におけるリソースに基づいて）作成されてよい。関連付けにより、機器１０４の少なくとも一部分が、オペレーション３６において分離され得る。例えば、別のＯＳ  １０６Ａ・・・ｎからの干渉（ｉｎｔｅｒｆｅｒｅｎｃｅ）に対する懸念なしに、それぞれのオペレーティングシステムが機器１０４の一つのセットにアクセスし得るように、機器１０４の部分は分離されてよい。
【００２４】
図４は、本発明開示の少なくとも１つの実施例に従って、選択的な機器レポーティング（ｓｅｌｅｃｔｉｖｅ  ｅｑｕｉｐｍｅｎｔ  ｒｅｐｏｒｔｉｎｇ）を介した機器分離の一つの例を示している。クラウドコンピューティングのようなオペレーションシナリオにおいて、装置１００は、相当なリソースを有しているサービスといった固定のコンピューティングデバイスであってよい。例えば、一つの装置１００が、それぞれが複数のコアを含んでいる複数のプロセッサ、複数の大容量データストレージコンポーネント、大量のＲＡＭメモリ、等を含んでよく、一つのＯＳ  １０６Ａ・・・ｎによって効果的に利用されるよりも多くのコンピューティングパワーを結果として生じている。結果として、装置１００をより小さなコンピューティングユニットにフレキシブルに分割できるようにする要求が存在する。クラウドコンピューティングのシナリオでは、機器１０４を装置１００において同時に動作し得る異なるＯＳ  １０６Ａ・・・ｎへフレキシブルに分配する機能により、クラウドリソースプロバイダは、ソフトウェアベースのＯＳ−ｉｎ−ＯＳまたは仮想化ソリューションに係る追加のオーバーヘッドなしに、クラウドユーザによって必要とされるプロセッサ、ストレージ、等のリソースを区分けすることができる。このタイプのフレキシビリティは、ラックスケールアーキテクチャ（ｒａｃｋ−ｓｃａｌｅ−ａｒｃｈｉｔｅｃｔｕｒｅ、ＲＳＡ）コンピューティングを実施するために必要とされるモジュール性（ｍｏｄｕｌａｒｉｔｙ）を提供し得る。ＲＳＡコンピューティングにおいては、個々のサーバに係るラック全体が、効率を増加し、発熱を低減する、等のために、電力、冷却、処理、メモリ、等といったリソースを共有し得る。
【００２５】
一つの実施例においては、ＵＥＦＩベースのファームウェア１０２において利用可能なＡｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＣＰＩ）ハードウェア列挙（ｅｎｕｍｅｒａｔｉｏｎ）が、ハードウェア分離を実施するために使用されてよく、そこでは、機器１０４Ａ・・・ｎがＯＳ  １０６Ａ・・・ｎへ割り当てられる方法がコントロールされ得る。これは、ＡＣＰＩが、ソフトウェア発見可能（ｓｏｆｔｗａｒｅ−ｄｉｓｃｏｖｅｒａｂｌｅ）でないシステムトポロジ（ｓｙｓｔｅｍ  ｔｏｐｏｌｏｇｙ）のエレメントを宣言する（ｄｅｃｌａｒｅ）からである。ＵＥＦＩ  ＧｅｔＭｅｍｏｒｙＭａｐオペレーションに沿ったこの機能により、装置は、それぞれのＯＳ  １０６Ａ・・・ｎに対して選択的に割り当てられ、そして、通信することができる。一つの実施例において、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）コンフィグレーション空間は、ＯＳ  １０６Ａ・・・ｎがＰＣＩスロットにプラグインされた機器の自動コンフィグレーションを実行できるが、機器の部分１０４Ａ・・・ｎへの機器１０４の分離が上書き（ｏｖｅｒｒｉｄｅ）され得ないように、ディセーブル（ｄｉｓａｂｌｅ）される必要がある。
【００２６】
レポートされた選択的な機器を介する機器の分離に係る一つの例が、図４における４００において開示されている。機器１０４’は、装置１００について一つのハードウェアコンフィグレーションを開示する。例えば、処理モジュール２０２’は、複数のプロセッサＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵ４、およびＣＰＵ５（まとめて、「ＣＰＵ１・・・５」）を含んでよい。メモリモジュール２０４’は、１０ＧＢセクションへと分割され得る３０ＧＢの物理的ＲＡＭメモリを含んでよい。通信モジュール２１２’は、複数の有線または無線インターフェイスを含んでよく、インターフェイス１、インターフェイス２、およびインターフェイス３（まとめて、「インターフェイス１・・・５」）を含んでいる。機器１０４’が、他の分割可能なハードウェアを含んでよいことを知ることは重要である。複数の分割可能なプロセッサコアを含んでいるＣＰＵ１・・・５それぞれといったものである。機器１０４’のコンフィグレーションは、ここにおいては、説明のためだけに示されるものである。
【００２７】
機器１０４Ａ’と１０４Ｂ’は、一つの物理的装置１００の中に複数の論理的装置（ｌｏｇｉｃａｌ  ｄｅｖｉｃｅ）を形成するために、どのように機器１０４’が分割され得るかを示している。例えば、機器１０４Ａ’は、ＯＳ  １０６Ａに対してレポートされてよく、そして、ＣＰＵ１とＣＰＵ４、ＲＡＭメモリの最初の１０ＧＢ、および通信インターフェイス１だけを含んでよい。従って、ＯＳ  １０６Ａは、機器１０４Ａ’において特定されたリソースによって定義された論理的装置の境界の中で、装置１００において動作し得る。同様に、機器１０４Ｂ’は、ＯＳ  １０６Ｂに対してレポートされてよい。結果として、ＯＳ  １０６Ｂは、ＣＰＵ３とＣＰＵ５、ＲＡＭメモリの２番目の１０ＧＢ、および通信インターフェイス３を含む論理的装置の境界の中で動作し得る。機器１０４Ａ・・・ｎの部分が、それぞれ後続のＯＳ  １０６Ａ・・・ｎに対して同様に定義されてよい。このようにして、一つ以上のＯＳ  １０６Ａ・・・ｎは、干渉することなく装置１００において同時に動作し得る。ＯＳ  １０６Ａ・・・ｎが、機器１０４の中で同一のハードウェアを使用していないからである（例えば、それぞれのＯＳ  １０６Ａ・・・ｎは、異なる機器１０４Ａ・・・ｎを使用する）。このように動作することによって、全ての機器１０４が、アクセスされることができる。特には、一つのＯＳ  １０６Ａ・・・ｎが、大きな装置１００（例えば、クラウドサーバ）における全ての機器１０４にアクセスする機能を有しない場合である。
【００２８】
図５は、本発明開示の少なくとも１つの実施例に従って、選択的な機器レポーティングを介した機器分離のためのオペレーション例を示している。図５において開示される例は、図３において示されたオペレーションをさらに変更する。図４において示された例に従って起こり得るオペレーションに係る現在のより特定的な例によるものである。オペレーション３００’において、検出され得るイベントは、装置１００の初期化（または、再度の初期化）である（オペレーション５００）。オペレーション３０２’における決定機器（ｄｅｔｅｒｍｉｎｉｎｇ  ｅｑｕｉｐｍｅｎｔ）１０３は、例えば、装置１００の中のリソースパーティション（ｒｅｓｏｕｒｃｅ  ｐａｒｔｉｔｉｏｎ）におけるセットアップオプションを読み込むことを含んでよい（オペレーション５０２）。セットアップオプションは、装置１００について一般的な機器コンフィグレーションを指定してよい。固定のＡＣＰＩ記述テーブル（ＦＡＤＴ）においてＣＰＵリソース（例えば、プロセッサ及び/又はコア）を分割するために、オペレーション５０４において使用され得るものである。例えば、ＦＡＤＴにおけるそれぞれのエントリーは、唯一のａｄｖａｎｃｅｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｉｎｔｅｒｒｕｐｔ  ｃｏｎｔｒｏｌｌｅｒ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ（ＡＰＩＣ  ＩＤ）を用いて論理的ＣＰＵ  リソースを定義してよい。オペレーション５０６において、機器１０４におけるメモリリソースは、メモリマップの中で分割されてよい。例としてＵＥＦＩを使用することで、メモリコンフィグレーション情報をＯＳ  １０６Ａ・・・ｎに対して渡すために、ＥＦＩ＿ＭＥＭＯＲＹ＿ＭＡＰが使用されてよい。メモリ分割化の後に、オペレーション５０８における、ＥＦＩ装置の列挙、および、Ｉ／ＯとメモリマップドＩ／Ｏ（ＭＭＩＯ）を少なくとも１つのＰＣＩベースアドレスレジスタ（ＢＡＲ）に割り当てることが続いてよい。
【００２９】
オペレーション３０２’における機器１０４の決定に続いて、オペレーション３０４’において、ＯＳ  １０６Ａ・・・ｎに対する機器１０４の関係が決定されてよい。例えば、オペレーション５１０において、ＰＣＩ装置は、区別された（ｄｉｆｆｅｒｅｎｔｉａｔｅｄ）システム記述テーブル（ＤＳＤＴ）においてＡＣＰＩデバイスとして割り当てられてよい。例えば、処理およびメモリリソースをレポートすることに加えて、機器１０４は、また、ＤＳＤＴ名前空間を使用しているＯＳ  １０６Ａ・・・ｎに対するＡＣＰＩデバイス（例えば、ＡＣＰＩタイマー、ＡＣＰＩパワーボタン、等）としてレポートされてもよい。本発明開示と合致して、ＤＳＤＴリソースレポートメカニズムは、また、ＡＣＰＩデバイスとしてＰＣＩデバイスをレポートするため（例えば、ＰＣＩデバイスがＯＳ１０６Ａ・・・ｎによって自動的にコンフィグレーションされることを妨げるため）に使用されてよく、そして、ＩＯ／ＭＭＩＯ  ＢＡＲリソースをレポートするためにＣＲＳ方法（例えば、リソース方法に対して接続リソースを加えるためのＡＣＰＩマクロ）が使用されてよい。ＡＣＰＩテーブルにおいてＰＣＩデバイスを列挙するためのコードの例は、以下を含んでよい。
OperatingRegion(BAR0,SystemMemory,0xC8000000,0x20000)
OperatingRegion(BAR1,SystemIo,0x8000,0x20)
Device(B1D2)
{
Name(_HID,"80860003")//PCI-assigned  device  identifier
Method(_CRS,0x0,NotSerialized)
{
…………………
Return  BAR0;
…………………
Return  BAR1;
…………………
}
【００３０】
オペレーション５１０においてＡＣＰＩデバイスとしてＰＣＩデバイスがレポートされることに続いて、オペレーション５１２において、ＰＣＩコンフィグレーション空間がディセーブルされてよい。ＯＳ  １０６Ａ・・・ｎが、機器１０４におけるＰＣＩデバイスを自動的に発見できること妨げるためである。機器１０４は、次に、オペレーション３０６’において、機器の部分１０４Ａ・・・ｎへと分離されてよい。そこでは、例えば、オペレーション５１４において、それぞれのＯＳ  １０６Ａ・・・ｎに対してカスタムＡＣＰＩテーブルが生成されてよい。それぞれのＡＣＰＩテーブルにおいて特定されたリソースは、種々のやり方で決定されてよい。例えば、システムオペレータによる手動コンフィグレーション（例えば、ファームウェア１０２またはＯＳ  １０６Ａ・・・ｎにおけるユーザインターフェイスを介するもの）、ＡＩＭ１０８または装置１００における他のシステムによって自動的に、装置２００の外部に存在しているコントロールシステムによってファームウェアにおいて自動的になされること、等を含んでいる。ＯＳ  １０６Ａ・・・ｎは、次に、オペレーション５１６において、ブートすることが許されてよい。それぞれのＯＳ  １０６Ａ・・・ｎは、オペレーション５１４において生成された対応するカスタムＡＣＰＩテーブルを使用してよく、カスタムＡＣＰＩテーブルは、オペレーションの最中にそれぞれのＯＳ  １０６Ａ・・・ｎがアクセスすることを許された機器の部分１０４Ａ・・・ｎを記述している。このようにして、一つ以上のＯＳ  １０６Ａ・・・ｎは、お互いに干渉することなく装置１００において同時に動作し得る。それぞれのＯＳ  １０６Ａ・・・ｎによってアクセスされ得る機器の部分１０４Ａ・・・ｎが、分離されているからである（例えば、オーバーラップしない）。
【００３１】
一つの実施例においては、割り込み配送（ｉｎｔｅｒｒｕｐｔ  ｄｅｌｉｖｅｒｙ）が。ＡＣＰＩテーブルによって定義された複数の論理的装置における複数のＯＳ  １０６Ａ・・・ｎに係る同時のオペレーションに適合するように変更されてよい。既存のシステムにおける割り込み配送については、複数の割り込みリソースと割り込みコントローラが存在し得る。本発明開示に合致して、それぞれの論理的装置が割り込みメカニズムを適切に使用することを保証するために、割り込みコントローラが、機器１０４Ａ・・・ｎの異なる部分に対して割り当てられてよい。それぞれのＣＰＵがローカルＡＰＣＩタイマーを有し得るので、それぞれの論理的装置がＯＳタスクスケジューリングのためのタイマー割り込みを有することを保証することができる。一つの実施例において、一つの論理的装置は、ユーザインターフェイスモジュール２０８にアクセスし得る（例えば、ディスプレイ、ユーザ入力、等）、一方で、他の装置がヘッドレス（ｈｅａｄｌｅｓｓ）であり得る（例えば、装置１００においてユーザインターフェイス機能がない）。しかしながら、機器１０４が２つのグラフィックコントローラを有する場合は、一つ以上の論理的装置にユーザインターフェイス機能を与えることが可能であり、それによりユーザ体験（ｕｓｅｒ  ｅｘｐｅｒｉｅｎｃｅ）が改善される。
【００３２】
図６は、本発明開示の少なくとも１つの実施例に従って、メモリロックアウト（ｍｅｍｏｒｙ  ｌｏｃｋｏｕｔ）を介した機器分離の一つの例を示している。図５の実施例が装置１００におけるＯＳ  １０６Ａ・・・ｎの同時オペレーションを開示している一方で、図６と図８において開示される実施例は、装置１００における異なるＯＳ  １０６Ａ・・・ｎ間での移行を取り扱うものである。例えば、装置１００は、少なくともフォアグラウンドＯＳ（例えば、ＯＳ  １０６Ａ）とバックグラウンドＯＳ（例えば、ＯＳ  １０６Ｂ）を含んでよい。既存のマルチＯＳソリューションは、デュアルブート（ｄｕａｌ−ｂｏｏｔｉｎｇ）またはＯＳ  １０６Ａ・・・ｎのインスタンスをお互いの中で実行するためにファームウェア１０２を構成することを採用している。これらのオプションの両方は、問題を含んでいる。デュアルブートは、ＯＳ  １０６Ａと１０６Ｂとの間を移行するために装置１００の再始動（ｒｅｓｔａｒｔ）を必要とする。リブートを必要とすることは時間がかかり、そして、ユーザ体験に否定的なインパクトを与えてしまう。ＯＳ  １０６Ａ・・・ｎのインスタンスをお互いの中で実行することは、より反応がよいソリューションであるが、大量のメモリと処理のオーバーヘッドを生じて全般的なシステムパフォーマンスをスローダウンし得る。本発明開示に合致して、装置１００のリソースについて相当な重荷（ｂｕｒｄｅｎ）を課すことなく、ＯＳ  １０６Ａ・・・ｎ間の迅速なスイッチを促進し得る実施例が図６−図８に示されている。
【００３３】
ＡＣＰＩ標準は、４つのグローバル（Ｇｘ）状態と６つのスリープ（Ｓｘ）状態を定義している。スリープ状態Ｓ０からＳ５は、装置１００における異なるレベルのアクティビティを定めている。例えば、Ｓ０状態は、装置１００が完全にアクティブであるときを表しており、一方で、Ｓ５状態は、装置１００が「ソフトオフ（”ｓｏｆｔ  ｏｆｆ”）」状態にあるときである。そこでは、装置１００が、電源がいまだに供給されていることを除いて全体的に非アクティブ（ｉｎａｃｔｉｖｅ）である。これら全ての種々のスリープ状態のうち、Ｓ３または「スタンバイ（”ｓｔａｎｂｙ”）」状態は、装置１００におけるアクティビティがサスペンドされ、一方でＲＡＭメモリは保持されている状態を対象とする。Ｓ４または「ハイバネーション（”ｈｉｂｅｒｎａｔｉｏｎ”）」状態に入ると、ＲＡＭの現在の状態がディスクに保管される。一つのＯＳから別のＯＳにスイッチするときには、装置１００をＳ３状態の中に置くことが有利であり得る。フォアグラウンドＯＳ  １０６ＡとバックグラウンドＯＳ  １０６Ｂの両方についてＲＡＭ状態が保持されており、ディスクからＲＡＭ状態をロードする必要なしに、一方から他方へ迅速に移行することができる。そうした機能性は、ＵＥＦＩベースのファームウェア１０２に対して追加されてよく、装置１００は、トリガーイベントの発生の際に、装置をＳ３スリープ状態に入れることができ、そして、Ｓ３スリープ状態から再開（ｒｅｓｕｍｅ）する際には、フォアグラウンドＯＳ  １０６ＡからバックグラウンドＯＳ  １０６Ｂへ移行することができる。ユーザに対しては、移行がほとんど即座に生じているように見られ、ユーザ満足度を大いに高めている。
【００３４】
しかしながら、このやり方におけるＯＳ  １０６Ａ・・・ｎ間の移行の利点は、また、責任（ｌｉａｂｉｌｉｔｙ）でもあり得る。フォアグラウンドＯＳ  １０６ＡとバックグラウンドＯＳ  １０６Ｂの両方がＲＡＭメモリの中に保持されているので、Ｓ３スリープ状態において移行が迅速に生じ得る。しかしながら、このことは、また、フォアグラウンドＯＳ  １０６Ａからメモリに中に保管された情報はバックグラウンドＯＳ  １０６Ｂによってアクセスされることに対して脆弱であることも意味している。その逆も同様である。例えば、フォアグラウンドＯＳ  １０６Ａにおけるマルウェアは、バックグラウンドＯＳ  １０６Ｂのオペレーションについて重要なデータ、装置１００に関する機密情報、装置１００のユーザに関する機密情報、等にアクセスすることが可能であり得る。この脆弱性を取り扱うために、メモリコンフィグレーション（例えば、アドレスマッピング）メカニズムを活用することが可能であり得る。例えば、ＯＳスイッチメモリマップレジスタとしていくつかのマイクロプロセッサアーキテクチャ（例えば、インテルＸｅｏｎマイクロプロセッサ）において利用可能な、ソースアドレスデコーダ（ＳＡＤ）およびターゲットアドレスデコード（ＴＡＤ）メカニズム、といったものである。例えば、ＳＡＤおよびＴＡＤレジスタは、メモリにおけるアドレス範囲の開始（ｓｔａｒｔ）と終了（ｅｎｄ）をコントロールし得る。例えば、終了アドレスが開始アドレスより小さい状況は、無効なエントリーを示し得る。ＯＳ切り替えの最中のメモリのアクセシビリティ（ａｃｃｅｓｓｉｂｉｌｉｔｙ）をコントロールするために特定的にカスタムレジスタ（例えば、カスタムＯＳスイッチメモリマップレジスタ）を作成することも可能であり得る。これらのメモリコンフィグレーション機能は、フォアグラウンドＯＳ  １０６ＡまたはバックグラウンドＯＳ  １０６Ｂのいずれがアクティブであるかに基づいて、メモリアクセスをカスタマイズするようにシステムメモリのアドレス可能空間を変更するために使用され得る。結果として、フォアグラウンドＯＳ  １０６Ａは、バックグラウンドＯＳ  １０６Ｂに対応する情報を含んでいるメモリ領域にアクセスすることができないであろう。その逆もまた同様である。
【００３５】
メモリロックアウトを介した機器分離の一つの例が、図６の中での６００において示されている。グローバルシステムアドレスマップ６０２の例は、装置１００が、５ＧＢの利用可能なメモリを含んでおり、０から３ＧＢまでがロー（ｌｏｗ）システムメモリであり、３から４ＧＢまでがローＭＩＭＯメモリであり、そして、４から５ＧＢまでがハイ（ｈｉｇｈ）システムメモリである。６０２Ａの例は、利用可能なメモリがどのようにフォアグラウンドＯＳ  １０６Ａに対して表われ得るかを示しており、一方、６０２Ｂの例は、アクティブなときにバックグラウンドＯＳ  １０６Ｂに対して利用可能であり得るメモリを表わしている。６０２Ａの例において、システムアドレス可能メモリ空間は、１ＧＢまでと２ＧＢ以降のメモリがアクセス可能であること示すように変更されてよい。１ＧＢと２ＧＢとの間のメモリ空間は、例えば、バックグラウンドＯＳ  １０６Ｂのためにリザーブされてよい。一方で、６０２の例は、バックグラウンドＯＳ  １０６Ｂが、３ＧＢと４ＧＢとの間のメモリと同様、１ＧＢと２ＧＢとの間のメモリだけにアクセスし得ることを開示している。一つの実施例において、３ＧＢから４ＧＢのアクセス範囲におけるメモリは、装置１００における機器１０４（例えば、ハードウェアデバイス）に対してマップし得る。このように、３ＧＢから４ＧＢのアドレス範囲におけるメモリは、機器１０４をコントロールするために、フォアグラウンドＯＳ  １０６ＡとバックグラウンドＯＳ  １０６Ｂの両方によって使用され得るものである。
【００３６】
６０２Ａの例に示されるように、１ＧＢと２ＧＢとの間のメモリ領域は、フォアグラウンドＯＳ  １０６Ａに対して見えないものであり、そして、従って、フォアグラウンドＯＳ  １０６Ａにおいて実行されているプログラムについては、メモリにおけるこの領域にアクセスするように試みる理由が存在しないであろう。しかしながら、フォアグラウンドＯＳ  １０６Ａにおいて動作しているマルウェアについては、プロテクションスキームの観点で、いまだにメモリが装置１００の中に存在していると仮定することに基づいて、メモリのブロックアウトされた領域にいまだにアクセスすることが可能であり得る。一つの実施例においては、ブロックアウトされたメモリ領域にアクセスするためのあらゆる試みは、少なくともアクセスを停止することによって、厄介者（ｂａｄ  ａｃｔｏｒ）を捕え得る。さらに、システムにアクセスの試みを通知するエラーが生成されてよく、及び/又は、ＯＳ  １０６Ａにおけるいくつか又は全てのアクティビティが、さらなるアクセスの試みを防ぐために停止されてよい。
【００３７】
図７は、本発明開示の少なくとも１つの実施例に従って、メモリロックアウトを介した機器分離のためのオペレーション例を示している。オペレーション３００’’においてファームウェアの介入を必要とするイベントを検出することは、ＯＳスイッチトリガーを検出すること（オペレーション７００）を含んでよい。ＯＳスイッチトリガーの例は、手動開始（ｍａｎｕａｌ−ｉｎｉｔｉａｔｅｄ）イベント（例えば、ユーザインターフェイスのインタラクション）、または、自動化イベント（例えば、現在アクティブなＯＳ  １０６Ａ・・・ｎ、Ｓ３スリープ状態に入っている装置１００、等において実行しているアプリケーションからのもの）を含んでよい。ユーザインターフェイスのインタラクションは、例えば、ハードウェアベースのコントロール（例えば、ハードウェアボタン）、または、ソフトウェアベースのコントロール（例えば、グラフィカルインターフェイスにおいて表示されるボタン）の作動（ａｃｔｕａｔｉｏｎ）を含んでよい。ＯＳスイッチトリガーにかかわらず、装置１００は、Ｓ３スリープ状態に入ってよく、そして、再開の際に、機器を決定することに関与してよい３０２’’。例えば、オペレーション７０２において、ハードウェア（例えば、機器１０４）が初期化されてよい。ハードウェアの初期化の後に、オペレーション７０４におけるメモリトレーニング（ｍｅｍｏｒｙ  ｔｒａｉｎｉｎｇ）が続いてよい。メモリトレーニングは、例えば、装置の初期化の最中に装置１００に対する全体のメモリアドレスマッピング（例えば、ＳＡＤ／ＴＡＤレジスタ設定及び他の関連するレジスタを含んでいるもの）を決定するファームウェア１０２（例えば、ＡＩＸ１０８）を含んでよい。ＡＩＭ１０８は、次に、メモリマッピングをＮＶメモリ（例えば、ＵＥＦＩ変数として）の中に保管させ、そして、また、メモリパーティションコンフィグレーションを記録してもよい。フォアグラウンドＯＳ  １０６Ａが０〜１ＧＢ、２〜３ＧＢ、および４〜５ＧＢを使用し、一方で、バックグラウンドＯＳ  １０６Ｂは１〜２ＧＢメモリだけを使用している、といったものである。ＮＶメモリの中に保管されたメモリマップ情報は、次に、例えば、フォアグラウンドＯＳ  １０６ＡからバックグラウンドＯＳ  １０６Ｂへ移行するときに、参照のために使用されてよい。
【００３８】
オペレーション３０４’’においてＯＳ関係（ＯＳ  ｒｅｌａｔｉｏｎｓｈｉｐ）に対する機器を決定することは、例えば、オペレーション７０６においてフォアグラウンドへ移動しているＯＳ  １０６Ａ・・・ｎ（例えば、バックグラウンドＯＳ  １０６Ｂ）を決定すること、そして、次に、オペレーション７０８においてメモリマップを計算することを含んでよい。オペレーション７０６においてフォアグラウンドへ移行するＯＳ  １０６Ａ・・・ｎを決定することは、例えば、装置１００が２つ以上のオペレーションを含み得るシナリオにおいて重要であり得る。メモリマップを計算することは、例えば、バックグラウンドへ移行するフォアグラウンドＯＳ  １０６Ａおよびフォアグラウンドへ移行するバックグラウンドＯＳ  １０６Ｂに基づいてレジスタ設定を少なくとも決定することを含んでよい。従って、新たなメモリマップは、ＯＳ  １０６Ｂに対応するメモリの中の領域をアクセス可能にし、一方で、ＯＳ  １０６Ａに対応するメモリの中の領域をアクセス不可にする。オペレーション３０６’’においてＯＳの移行に基づいて機器を分離することは、次に、オペレーション７０８において計算されたメモリマップに基づいてメモリコンフィグレーションを変更することを含んでよい。例えば、オペレーション７１０において、アクセスは、新たなフォアグラウンドＯＳ（例えば、ＯＳ  １０６Ｂ）に対応するメモリ領域に対してオープンであり、一方で、オペレーション７１２においてバックグラウンドへ移行するＯＳ  １０６Ａに対応するメモリ領域に対してはブロックされてよい。装置１００におけるＳ３スリープ状態からのオペレーション再開は、次に、オペレーション７１４において完了され得る。ＯＳ  １０６Ｂが新たなフォアグラウンドＯＳになるところである。
【００３９】
図８は、本発明開示の少なくとも１つの実施例に従って、メモリ暗号化を介した機器分離の一つの例を示している。図６と図７において開示された実施例と同様に、図８と図９も、また、ＯＳ  １０６Ａ・・・ｎに関連するメモリ領域を別のＯＳ  １０６Ａ・・・ｎによるアクセスから保護することに関する。しかしながら、この実施例は、例えば、ハードウェアメモリデコードメカニズムをコントロールするハードウェアベースのロックアウトソリューションとは対照的に、ソフトウェアベースの暗号化ソリューションを示している。両方のソリューションが同一タイプの機能性を提供する一方で、ハードウェアベースのロックアウトソリューションは、現在ではサーバクラスのマイクロプロセッサにおいてだけ利用可能な所定のハードウェアコンフィグレーション機能を使用してよい。例えば、パーソナルコンピュータ（ＰＣ）、タブレットコンピュータ、モバイル通信デバイス、等において使用されるマイクロプロセッサは、これらのコンフィグレーション機能を未だに含んでいない。そして、従って、図８と図９は、より幅広い種類の装置１００に対して適用可能な暗号化ソリューションを示している。
【００４０】
８００においては、メモリ暗号化を介した機器分離の一つの例が示されている。８０２においては、基本メモリコンフィグレーションが示されており、そして、例えば、ＯＳ  １０６Ａによって使用されるメモリ領域、ＯＳ  １０６Ｂによって利用されるメモリ領域、およびシステム管理ＲＡＭ（ＳＭＲＡＭ）８０４を含んでよい。ＳＭＲＡＭ８０４は、例えば、ファームウェア１０２（例えば、ＡＩＭ１０８）についてだけアクセス可能なセキュアメモリを含んでよい。８０４においては、フォアグラウンドＯＳ  １０６ＡからバックグラウンドＯＳ  １０６Ｂへの移行の一つの例が示されている。フォアグラウンドＯＳ  １０６Ａによって使用されるメモリ領域の初期状態は、読み出し可能（例えば、平文）であってよく、一方で、バックグラウンドＯＳ  １０６Ｂによって使用されるメモリ領域は、暗号化されてよい。ＳＭＲＡＭ８０４は、隠されていてよい（例えば、ＡＩＭ１０８によってだけアクセスされ得るからである）。８０６において、移行における最初のオペレーションが示されており、そこでは、装置がＳ３スリープ状態から再開した後で、ＡＩＭ１０８は、フォアグラウンドＯＳ  １０６Ａによって使用されるメモリ領域を暗号化されるようにしてよい。例えば、ＯＳ  １０６ＡおよびＯＳ  １０６Ｂによって使用されるメモリ領域を暗号化し、かつ、認証するために、Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号アルゴリズムが、Ｇａｌｏｉｓ  Ｃｏｕｎｔｅｒ  Ｍｏｄｅ（ＧＣＭ）暗号と共に使用されてよい。ＡＥＳ−ＣＧＭのパフォーマンスは所定のマイクロプロセッサ（例えば、インテル社により提供される少なくともいくつかのマイクロプロセッサ）によってブーストされ得る。マイクロプロセッサは、ＡＥＳ  Ｎｅｗ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ（ＡＥＳ−ＮＩ）を含んでおり、ｃａｒｒｙ−ｌｅｓｓ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｉｎｓｔｒｕｃｔｉｏｎ（ＰＣＬＭＵＬＱＤＱ）に沿っており、ＡＥＳ−ＧＣＭアルゴリズムの全体的なパフォーマンスをブーストし得るものである。
【００４１】
フォアグラウンドＯＳ  １０６Ａによって使用されるメモリ領域の暗号化に続いて、暗号化を実行するために使用される鍵（ｋｅｙ）が保護預かりのためにＳＭＲＡＭ８０４の中に保管されてよい（例えば、ＳＭＲＡＭ８０４はＡＩＭ１０８にだけアクセス可能であるため）。図８で８０８において示されるオペレーションは、８０６において生じるそうしたオペレーションの後に続いてよく、フォアグラウンドへ移行するＯＳ（例えば、ＯＳ  １０６Ｂ）によって使用されるメモリ領域を復号化する。例えば、ＡＩＭ１０８は、バックグラウンドＯＳ  １０６Ｂによって使用されるメモリ領域を暗号化するために以前に利用された鍵を取り戻してよく、そして、次に、ＯＳ  １０６Ｂがフォアグラウンドへ移行する際にメモリのこの領域を復号化してよい。復号化は、ＯＳ  １０６Ｂによって使用されるメモリ領域が破損していないことを保証するための認証オペレーションを含んでよい。例えば、フォアグラウンドＯＳ  １０６Ａにおけるプログラム（例えば、マルウェア）が、バックグラウンドＯＳ  １０６Ｂによって使用されるメモリ領域に対して未だに書き込まれることがあり、そして、この書き込みアクティビティは、オペレーションを破壊し得るであろうデータをメモリの暗号化された領域の中に挿入し得る。認証は、復号化されたメモリ領域が、暗号化されたオリジナルなものと一致することを保証するのを手助けする。認証が失敗した場合には、移行が停止され、そして、フォアグラウンドにおいてはフォアグラウンドＯＳ  １０６Ｂが再開し得る。認証が成功であれば、メモリは、新たなフォアグラウンドＯＳである、ＯＳ  １０６Ｂが、ファイルを含んでいる領域を自由にアクセスし得る状態にあってよく、一方で、今やバックグラウンドにおける、ＯＳ  １０６Ａのためのデータを含んでいる領域が暗号化される。暗号化は、ＯＳ  １０６Ａに対応するメモリにおける領域がアクセスされることを妨げないが、読み出しアクセス試みから戻されたあらゆるデータは理解不能であろう。
【００４２】
図９は、本発明開示の少なくとも１つの実施例に従って、メモリ暗号化を介した機器分離のためのオペレーション例を示している。オペレーション３００’’’においてファームウェア介入を要求するイベントを検出することは、例えば、オペレーション９００においてＯＳスイッチトリガーを検出することを含んでよい。図７におけるオペレーション７００に関して説明されたスイッチトリガーの例も、また、ここにおいて適用可能である。オペレーション３０２’’’において機器を決定することは、例えば、オペレーション９０２において、Ｓ３スリープ状態からの再開後にハードウェア（例えば、機器１０４）を初期化することを含んでよく、オペレーション９０４における、現在のメモリマップを決定するためのメモリトレーニングが後に続く。オペレーション９０３および９０４の例は、図７において、オペレーション７０２と７０４、それぞれに関して、以前に説明されてきた。同様に、オペレーション３０４’’’においてＯＳ関係に対する機器を決定することは、例えば、オペレーション９０６においてフォアグラウンドへ移動しているＯＳを少なくとも決定すること、そして、オペレーション９０８においてメモリマップを計算することを含んでよい。これらの実施例は、オペレーション７０６と７０８に関して、それぞれに、図７において以前に説明されたものである。
【００４３】
オペレーション３０４’’’は、さらに、オペレーション９１０を含んでよく、そこでは、ファームウェア１０２（例えば、ＡＩＭ１０８）が、フォアグラウンドＯＳ  １０６Ａによって使用されるメモリ領域を暗号化するための新たな鍵を生成してよい。オペレーション３０６’’’において、フォアグラウンドへ移行しているＯＳに基づいて機器を分離することは、次に、例えば、オペレーション９１０において生成された鍵を使用して、オペレーション９１２において、フォアグラウンドＯＳ  １０６Ａによって使用されるメモリ領域を暗号化すること、および、次に、鍵をセキュアストレージの中に（例えば、ＳＭＲＡＭ８０４の中に）保管することを含んでよい。オペレーション９１４においては、バックグラウンドＯＳ  １０６Ｂによって使用されるメモリ領域を暗号化するために以前に使用された鍵が、セキュアストレージから取り戻されてよく、そして、オペレーション９１６において、バックグラウンドＯＳ  １０６Ｂによって使用されるメモリ領域を復号化するために使用されてよい。一つの実施例において、オペレーション９１６は、バックグラウンドＯＳ  １０６Ｂによって使用されるメモリ領域が破損していないことを保証するために認証を含んでよい。オペレーション９１６において、バックグラウンドＯＳ  １０６Ｂによって使用されるメモリ領域に係るコンテンツが認証され得ない場合には、次に、移行が失敗し、そして、ＯＳ  １０６Ａがフォアグラウンドに保持されてよい。認証が成功である場合には、次に、オペレーション９１８において、バックグラウンドＯＳ  １０６Ｂがフォアグラウンドへ移行し、かつ、フォアグラウンドＯＳ  １０６Ａがバックグラウンドへ移行してよい。
【００４４】
図３、図５、図７および図９は、異なる実施例に従ってオペレーションを示しているが、他の実施例については、図３、図５、図７および図９において示された必ずしも全てのオペレーションが必要とされないことが理解されよう。実際には、本発明開示の他の実施例においては、図３、図５、図７および図９で示されたオペレーション及び/又はここにおいて説明された他のオペレーションが、あらゆる図面において特定的に示されていないやり方であるが、それでも本発明開示と完全に合致するやり方において、組み合わされてよいことが、ここにおいて完全に熟考されている。従って、一つの図面において厳密には示されていない機能及び/又はオペレーションに向けられた請求項は、本発明開示の範囲およびコンテンツの中にあるものと考えられる。
【００４５】
この明細書および請求項において使用されるように、「及び/又は（”ａｎｄ／ｏｒ”）」によって結合されたアイテムのリストは、リストされたアイテムのあらゆる組み合わせを意味し得るものである。例えば、フレーズ「Ａ、Ｂ、及び/又はＣ」は、Ａ、Ｂ、Ｃ、ＡとＢ、ＡとＣ、ＢとＣ、または、ＡとＢとＣ、を意味し得る。この明細書および請求項において使用されるように、「少なくとも１つの（”ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ”）」によって結合されたアイテムのリストは、リストされた用語のあらゆる組み合わせを意味し得るものである。例えば、フレーズ「Ａ、Ｂ、またはＣのうち少なくとも１つ」は、Ａ、Ｂ、Ｃ、ＡとＢ、ＡとＣ、ＢとＣ、または、ＡとＢとＣ、を意味し得る。
【００４６】
ここにおいてあらゆる実施例において使用されるように、用語「モジュール（”ｍｏｄｕｌｅ”）」は、上記のあらゆるオペレーションを実施するように構成されたソフトウェア、ファームウェア、及び/又は回路を参照してよい。ソフトウェアは、コンピュータで読取り可能な固定の記録媒体上に記録されたソフトウェアパッケージ、コード、インストラクション、インストラクションセット、及び/又はデータとして具体化されてよい。ファームウェアは、メモリデバイスの中にハードコードされた（ｈａｒｄ−ｃｏｄｅｄ）（例えば、不揮発性の）コード、インストラクションまたはインストラクションセット、及び/又はデータとして具体化されてよい。「回路”ｃｉｒｃｕｉｔｒｙ”」は、ここにおけるあらゆる実施例において使用されるように、例えば、単独もしくはあらゆる組み合わせにおいて、ハードワイヤード（ｈａｒｄｗｉｒｅｄ）回路、一つまたはそれ以上の個別のインストラクション処理コアを含んでいるコンピュータプロセッサといったプログラマブル回路、状態機械回路、及び/又は、プログラマブル回路によって実行されるインストラクションを保管するファームウェア、を含んでよい。モジュールは、集合的または個別的に、より大きなシステムの一部分を形成する回路として具体化されてよい。例えば、集積回路（ＩＣ）、システムオンチップ（ＳｏＣ）、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、等である。
【００４７】
ここにおいて説明されたあらゆるオペレーションは、一つまたはそれ以上のプロセッサによって実行されるときに本方法を実行するインストラクションを、個別もしくはあらゆる組み合わせにおいて、保管している一つまたはそれ以上の記録媒体（例えば、固定の記録媒体）を含むシステムにおいて実施されてよい。ここで、プロセッサは、例えば、サーバＣＰＵ、モバイルデバイスＣＰＵ、及び/又は他のプログラマブル回路を含んでよい。また、ここにおいて説明されたオペレーションは、一つ以上の異なる物理的な場所にある処理構成（ｐｒｏｃｅｓｓｉｎｇ  ｓｔｒｕｃｔｕｒｅ）といった、複数の物理的装置にわたり分配されてよいことも意図されている。記録媒体は、あらゆるタイプの有形の媒体を含んでよい。例えば、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、再書き込み可能コンパクトディスク（ＣＤ−ＲＷ）、および光磁気ディスクを含むあらゆるタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ダイナミックおよびスタティックＲＡＭといったランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、といった半導体デバイス、半導体ディスク（ＳＳＤ）、エンベッドマルチメディアカード（ｅＭＭＣ）、セキュアデジタル入力／出力（ＳＤＩＯ）カード、磁気または光カード、もしくは、電子的インストラクションを保管するために適切なあらゆるタイプの媒体、である。
【００４８】
従って、本アプリケーションは、マルチオペレーティングシステム装置に対するアクセス分離に向けられている。一般的に、装置は、ファームウェアを使用して、装置において同時に動作している一つ以上のオペレーティングシステム（ＯＳ）を適合し、または、一つのＯＳから別のものへ移行するように構成されてよい。ファームウェアにおけるアクセス分離モジュール（ＡＩＭ）は、デバイス機器コンフィグレーションを決定し、かつ、複数のオペレーティングシステムによる使用のために機器を分割してよい。ＡＩＭは、ＯＳベースの機器検出（ｅｑｕｉｐｍｅｎｔ  ｓｅｎｓｉｎｇ）をディセーブルしてよく、そして、カスタマイズされたテーブルを使用してそれぞれのＯＳに対して機器の少なくとも一部分を割り当ててよい。オペレーティングシステム間での移行のときに、ＡＩＭは、一つのＯＳからの情報は他のものに対してアクセス可能でないことを保証するのを手助けし得る。例えば、ＡＩＭは、フォアグラウンドＯＳがバックグラウンドＯＳによって置き換えられるときを検出することができ、そして、バックグラウンドＯＳがアクティブになる以前に、フォアグラウンドＯＳのファイルを保護し得る（例えば、ロックアウトまたは暗号化）。
【００４９】
以降の例は、さらなる実施例に関するものである。本発明開示の以降の実施例は、装置、方法、実行されると本方法に基づいたアクトをマシンに実行させるインストラクションを保管している少なくとも１つのマシンで読取り可能な媒体、本方法に基づいてアクトを実行するための手段、及び/又は、以降に提供されるように、マルチオペレーティングシステム装置に対するアクセス分離のためのシステム、といった技術的事項を含んでよい。
【００５０】
実施例１に従って、マルチオペレーティングシステム装置が提供される、装置は、装置におけるオペレーティングシステムをサポートするための機器と、機器の少なくとも１つの部分とインタラクションする少なくとも２つのオペレーティングシステムと、少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な装置における機器の部分を決定するためのアクセス分離モジュールを少なくとも含むファームウェアを含む。
【００５１】
実施例２は、実施例１に係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、装置の活性化に続いて、少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するためのアクセス分離モジュールを含む。
【００５２】
実施例３は、実施例２に係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、少なくとも２つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するためのアクセス分離モジュールを含む。
【００５３】
実施例４は、実施例３に係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成するためのアクセス分離モジュールを含み、テーブルは、装置活性化の後で、少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【００５４】
実施例５は、実施例３に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムは、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作する。
【００５５】
実施例６は、実施例１乃至５のいずれかに係るエレメントを含んでよく、機器は、少なくとも２つのオペレーティングシステムに対応するデータが保管されたメモリを含んでいる少なくとも１つのメモリモジュールを含む。
【００５６】
実施例７は、実施例６に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムは、フォアグラウンドオペレーティングシステムとバックグラウンドオペレーティングシステムを含み、アクセス分離は、さらに、フォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するトリガーを検出する。
【００５７】
実施例８は、実施例７に係るエレメントを含んでよく、アクセス分離モジュールは、さらに、トリガーを検出すると、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定し、かつ、フォアグラウンドオペレーティングシステムによって使用されるように決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにする。
【００５８】
実施例９は、実施例８に係るエレメントを含んでよく、フォアグラウンドオペレーティングシステムによって使用されるものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするアクセス分離モジュールは、メモリの部分に対するアクセスを防止するためにメモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つを行う、アクセス分離モジュールを含む。
【００５９】
実施例１０は、実施例８に係るエレメントを含んでよく、フォアグラウンドオペレーティングシステムによって使用されるものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするアクセス分離モジュールは、暗号化鍵を生成して、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化するために鍵を使用し、かつ、機器のセキュアメモリの中に鍵を保管する。
【００６０】
実施例１１は、実施例１０に係るエレメントを含んでよく、アクセス分離モジュールは、さらに、セキュアメモリから第２暗号化鍵を取得して、バックグラウンドオペレーティングシステムによって使用されるメモリの部分を復号化するために第２暗号化鍵を使用し、かつ、フォアグラウンドオペレーティングシステムをバックグラウンドオペレーティングシステムによって置き換えさせる。
【００６１】
実施例１２は、実施例１乃至５のいずれかに係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、装置の活性化に続いて、少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化し、少なくとも２つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化し、かつ、少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成する。テーブルは、装置活性化の後で、少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【００６２】
実施例１３は、実施例１２に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムは、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作する。
【００６３】
実施例１４は、実施例１に係るエレメントを含んでよく、機器は、少なくとも２つのオペレーティングシステムに対応するデータが保管されたメモリを含んでいる少なくとも１つのメモリモジュールを含む。
【００６４】
実施例１５は、実施例１４に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムは、フォアグラウンドオペレーティングシステムとバックグラウンドオペレーティングシステムを含み、アクセス分離モジュールは、さらに、フォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するトリガーを検出する。
【００６５】
実施例１６は、実施例１５に係るエレメントを含んでよく、アクセス分離モジュールは、さらに、トリガーを検出すると、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定し、かつ、フォアグラウンドオペレーティングシステムによって使用されるように決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにする。メモリの部分に対するアクセスを防止するために、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つを行うこと、もしくは、暗号化鍵を生成して、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化するために鍵を使用し、かつ、機器のセキュアメモリの中に鍵を保管すること、によるものである。
【００６６】
実施例１７に従って、一つの装置においてマルチオペレーティングシステムに適合する方法が提供される。本方法は、装置においてファームウェア介入を要求するイベントを検出するステップと、装置の中に存在する機器を決定するステップと、機器と装置の中に存在している少なくとも２つのオペレーティングシステムとの間の関係を決定するステップと、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するステップと、を含む。
【００６７】
実施例１８は、実施例１７に係るエレメントを含んでよく、イベントを検出するステップは、装置の活性化を検出するステップ、または、装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するステップ、のうち少なくとも１つを含んでいる。
【００６８】
実施例１９は、実施例１８に係るエレメントを含んでよく、装置における機器を決定するステップは、少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するステップ、を含む。
【００６９】
実施例２０は、実施例１９に係るエレメントを含んでよく、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定するステップは、少なくとも２つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するステップ、および、少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成するステップ、を含む。テーブルは、装置活性化の後で、少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【００７０】
実施例２１は、実施例２０に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するステップは、少なくとも２つのオペレーティングシステムが、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作できるようにするステップ、を含む。
【００７１】
実施例２２は、実施例１８乃至２１のいずれかに係るエレメントを含んでよく、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定するステップは、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定するステップ、を含む。
【００７２】
実施例２３は、実施例２２に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するステップは、移行の以前に、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つによって、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによって、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を、バックグラウンドオペレーティングシステムに対してアクセスできないようにするステップ、を含む。
【００７３】
実施例２４に従って、上記の実施例１７乃至２３のいずれかの方法を実行するように構成されたチップセットが提供される。
【００７４】
実施例２５に従って、少なくとも１つの装置を含むシステムが提供される。システムは、上記の実施例１７乃至２３のいずれかの方法を実行するように構成されている。
【００７５】
実施例２６に従って、マルチオペレーティングシステム装置に対するアクセス分離のために構成された装置が提供される。装置は、上記の実施例１７乃至２３のいずれかの方法を実行するように構成されている。
【００７６】
実施例２７に従って、一つまたはそれ以上のプロセッサによって実行されると、一つの装置においてマルチオペレーティングシステムに適合するための以下のオペレーションを結果として生じるインストラクションが、個々に又は組み合わせにおいて、保管された少なくとも１つのマシンで読取り可能な記録媒体が提供される。装置においてファームウェア介入を要求するイベントを検出するステップと、装置の中に存在する機器を決定するステップと、機器と装置の中に存在している少なくとも２つのオペレーティングシステムとの間の関係を決定するステップと、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するステップと、を含むものである。
【００７７】
実施例２８は、実施例２７に係るエレメントを含んでよく、イベントを検出するステップは、装置の活性化を検出するステップ、または、装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するステップ、のうち少なくとも１つを含んでいる。
【００７８】
実施例２９は、実施例２８に係るエレメントを含んでよく、装置における機器を決定するステップは、少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するステップ、を含む。
【００７９】
実施例３０は、実施例２９に係るエレメントを含んでよく、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定するステップは、少なくとも２つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するステップ、および、少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成するステップ、を含む。テーブルは、装置活性化の後で、少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【００８０】
実施例３１は、実施例３０に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するステップは、少なくとも２つのオペレーティングシステムが、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作できるようにするステップ、を含む。
【００８１】
実施例３２は、実施例２８乃至３１のいずれかに係るエレメントを含んでよく、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定するステップは、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定するステップ、を含む。
【００８２】
実施例３３は、実施例３２に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するステップは、移行の以前に、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つによって、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによって、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を、バックグラウンドオペレーティングシステムに対してアクセスできないようにするステップ、を含む。
【００８３】
実施例３４に従って、一つの装置においてマルチオペレーティングシステムに適合するためのシステムが提供される。本システムは、装置においてファームウェア介入を要求するイベントを検出するための手段と、装置の中に存在する機器を決定するための手段と、機器と装置の中に存在している少なくとも２つのオペレーティングシステムとの間の関係を決定するための手段と、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するための手段と、を含む。
【００８４】
実施例３５は、実施例３４に係るエレメントを含んでよく、イベントを検出するための手段は、装置の活性化を検出するための手段、または、装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するための手段、のうち少なくとも１つを含んでいる。
【００８５】
実施例３６は、実施例３５に係るエレメントを含んでよく、装置における機器を決定するための手段は、少なくとも２つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するための手段、を含む。
【００８６】
実施例３７は、実施例３６に係るエレメントを含んでよく、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定するための手段は、少なくとも２つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するための手段、および、少なくとも２つのオペレーティングシステムそれぞれに対応するテーブルを生成するための手段、を含む。テーブルは、装置活性化の後で、少なくとも２つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【００８７】
実施例３８は、実施例３７に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するための手段は、少なくとも２つのオペレーティングシステムが、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作できるようにするための手段、を含む。
【００８８】
実施例３９は、実施例３５乃至３８のいずれかに係るエレメントを含んでよく、機器と少なくとも２つのオペレーティングシステムとの間の関係を決定するための手段は、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定するための手段、を含む。
【００８９】
実施例４０は、実施例３９に係るエレメントを含んでよく、少なくとも２つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも１つの部分を分離するための手段は、移行の以前に、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも１つによって、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによって、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を、バックグラウンドオペレーティングシステムに対してアクセスできないようにするための手段、を含む。
【００９０】
ここにおいて使用されてきた用語と表現は、説明に係る用語として使用されており、限定するものではない。そうした用語と表現の使用においては、示され、かつ、説明された特徴に係るあらゆる均等物（または、それらの部分）を排除する意図は存在しない。そして、請求の範囲内において種々の変更が可能であることが理解される。従って、請求項は、そうした均等物の全てをカバーするように意図されているものである。
【図１】
0006466476.tif 000002
【図２】
0006466476.tif 000003
【図３】
0006466476.tif 000004
【図４】
0006466476.tif 000005
【図５】
0006466476.tif 000006
【図６】
0006466476.tif 000007
【図７】
0006466476.tif 000008
【図８】
0006466476.tif 000009
【図９】
0006466476.tif 000010