(58)【調査した分野】(Int.Cl.,DB名)
前記機器の前記部分を決定する前記アクセス分離モジュールは、前記装置の活性化に続いて、前記少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと前記機器を区分化するためのアクセス分離モジュール、を含む、
請求項1に記載の装置。
前記機器の前記部分を決定する前記アクセス分離モジュールは、前記少なくとも2つのオペレーティングシステムが前記機器を発見できるようにする前記ファームウェアにおける機能性を非活性化するためのアクセス分離モジュール、を含む、
請求項2に記載の装置。
前記機器の前記部分を決定する前記アクセス分離モジュールは、前記少なくとも2つのオペレーティングシステムそれぞれに対応するテーブルを生成するためのアクセス分離モジュール、を含み、
前記テーブルは、前記装置の活性化の後で、前記少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な前記機器の一部分の識別子を少なくとも含んでいる、
請求項3に記載の装置。
前記少なくとも2つのオペレーティングシステムは、前記テーブルによって特定された前記機器の前記部分を使用して、前記装置の中へロードされ、そして、同時に動作する、
請求項4に記載の装置。
前記アクセス分離モジュールは、さらに、前記トリガーを検出すると、前記フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定し、かつ、前記フォアグラウンドオペレーティングシステムによって使用されるように決定されたメモリの前記部分を前記バックグラウンドオペレーティングシステムに対してアクセスできないようにする、
請求項7に記載の装置。
前記アクセス分離モジュールは、メモリの前記部分に対するアクセスを防止するために、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも1つを行う、
請求項8に記載の装置。
前記アクセス分離モジュールは、暗号化鍵を生成して、前記フォアグラウンドオペレーティングシステムによって使用されるメモリの前記部分を暗号化するために前記鍵を使用し、かつ、前記機器のセキュアメモリの中に前記鍵を保管する、
請求項8に記載の装置。
前記アクセス分離モジュールは、さらに、前記セキュアメモリから第2暗号化鍵を取得して、前記バックグラウンドオペレーティングシステムによって使用されるメモリの部分を復号化するために前記第2暗号化鍵を使用し、かつ、前記フォアグラウンドオペレーティングシステムを前記バックグラウンドオペレーティングシステムによって置き換えさせる、
請求項10に記載の装置。
前記イベントを検出するステップは、前記装置の活性化を検出するステップ、または、前記装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するステップ、のうち少なくとも1つを含んでいる、
請求項12に記載の方法。
前記少なくとも2つのオペレーティングシステムそれぞれによる使用のために前記機器の少なくとも1つの部分を分離するステップは、前記少なくとも2つのオペレーティングシステムが、前記テーブルによって特定された前記機器の前記部分を使用して、前記装置の中へロードされ、そして、同時に動作できるようにするステップ、
を含む、請求項15に記載の方法。
コンピューティングデバイス上で実行されると、請求項12乃至18いずれか一項に記載の方法を前記コンピューティングデバイスに実行させる、複数のインストラクションを含む、
コンピュータプログラム。
【発明を実施するための形態】
【0006】
本アプリケーションは、マルチオペレーティングシステム装置に対するアクセス分離に向けられている。一般的に、装置は、装置において同時に動作している一つ以上のオペレーティングシステム(OS)を収容し、または、一つのOSから別のものへ移行するように、ファームウェア(例えば、持続性メモリにおけるプログラムコード)を使用して構成されてよい。一つの実施例においては、ファームウェアにおけるアクセス分離モジュール(access isolation module、AIM)が、装置の活性化(activation)に従う装置の機器コンフィグレーションを決定し、そして、次に、複数のオペレーティングシステムによる使用のために機器を区分化してよい。AIMは、次に、機器検出サービスをディセーブル(disable)にし、そして、カスタマイズされたテーブルを使用してそれぞれのOSに対して機器の少なくとも一部分を割り当ててよい。オペレーティングシステム間を移行するときに、AIMは、一つのOSに対応する情報が他のものについてアクセス可能でないことを保証するのを手助けし得る。例えば、AIMは、フォアグラウンドOSがバックグラウンドOSによって置き換えられるときを検出し、そして、バックグラウンドOSがアクティブになる以前にフォアグラウンドOSのファイルをプロテクトし得る。プロテクションの例は、バックグラウンドOSに対してアクセス可能でないように、バックグラウンドOSによって使用されるメモリをロックアウトすること、バックグラウンドOSがアクティブになる以前にフォアグラウンドOSによって使用されるメモリを暗号化すること、等を含んでよい。暗号化は、OSにおいてアクティブな害のあるプログラム(例えば、マルウェア)によってアクセスされることから鍵を保護するために、セキュアメモリ(secure memory)の中に鍵を保管することを含んでよい。
【0007】
一つの実施例において、マルチオペレーティングシステム装置は、例えば、機器、少なくとも2つのオペレーティングシステム、およびファームウェアを含んでよい。機器は、装置におけるオペレーションをサポートするためのものであってよい。少なくとも2つのオペレーティングシステムは、装置の少なくとも一部分とインタラクションしてよい。ファームウェアは、少なくとも1つのAIMを含んでよく、少なくとも2つのオペレーティングシステムのそれぞれに対してアクセス可能な、装置における機器の部分を決定する。
【0008】
例えば、機器の部分を決定するAIMは、装置の活性化に続いて、少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するAIMを含んでよい。機器の部分を決定するAIMは、少なくとも2つのオペレーティングシステムが機器を発見することができるようにするファームウェアにおける機能性を非活性化するAIMを含んでよい。加えて、機器の部分を決定するAIMは、さらに、少なくとも2つのオペレーティングシステムそれぞれに対応するテーブルを生成するAIMを含んでよく、テーブルは、装置の活性化に続いて、少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。少なくとも2つのオペレーティングシステムは、次に、装置の中へロードされ、そして、テーブルによって特定された機器の部分を利用して同時に動作し得る。
【0009】
一つの実施例において、機器は、少なくとも2つのオペレーティングシステムに対応するデータセットが保管されたメモリを含む、少なくとも1つのメモリモジュールを含んでよい。少なくとも2つのオペレーティングシステムは、フォアグラウンドオペレーティングシステムとバックグラウンドオペレーティングシステムとを含んでよく、アクセス分離モジュールは、さらに、フォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するトリガーを検出する。AIMは、さらに、トリガーを検出すると、フォアグラウンドオペレーティングシステムによって使用されるメモリの一部分を決定し、そして、フォアグラウンドオペレーティングシステムによって使用されるべきものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにする。フォアグラウンドオペレーティングシステムによって使用されるべきものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするAIMは、レジスタ設定のアジャストまたはロックダウン(lock down)のうち少なくとも1つに対して、メモリのその部分に対するあらゆるアクセスを防止するAIMを含んでよい。フォアグラウンドオペレーティングシステムによって使用されるべきものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするAIMは、暗号鍵を生成し、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化するために鍵を使用し、そして、機器のセキュアメモリの中に鍵を保管するAIMを含んでよい。そのうえ、AIMは、さらに、セキュアメモリから第2暗号鍵を獲得し、バックグラウンドオペレーティングシステムによって使用されるメモリの部分を復号するために第2の鍵を使用し、そして、フォアグラウンドオペレーティングシステムをバックグラウンドオペレーティングシステムによって置き換えさせる。
【0010】
本発明開示と合致する装置において複数のオペレーティングシステムを収容するための方法は、例えば、装置においてファームウェアの介入(intervention)を必要とするイベントを検出すること、装置の中に存在する機器を決定すること、機器と装置の中に存在する2つのオペレーティングシステムとの間の関係を決定すること、そして、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離すること、を含んでよい。
【0011】
イベントを検出することは、例えば、装置の活性化、または、装置におけるフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するためのトリガーのうち少なくとも1つを検出することを含んでよい。装置における機器を決定することは、少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化することを含んでよい。一つの実施例において、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定することは、少なくとも2つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化すること、そして、少なくとも2つのオペレーティングシステムそれぞれに対応しているテーブルを生成することを含んでよく、テーブルは、装置の活性化に続いて、少なくとも2つのオペレーティングシステムそれぞれによってアクセス可能な機器の一部分の識別子を少なくとも含んでいる。少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離することは、少なくとも2つのオペレーティングシステムを装置の中へロードし、そして、テーブルによって特定された機器の部分を同時に利用して動作できるようにすることを含んでよい。別の実施例において、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定することは、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの一部分を決定することを含んでよい。少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離することは、移行の以前に、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにすることを含んでよい。メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも1つによるもの、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによるものである。同一または異なる実施例においては、少なくとも1つのマシンで読取り可能な記録媒体が、個々に又は組み合わせにおいて、記録されたインストラクションを有している。一つまたはそれ以上のプロセッサによって実行されると、装置において複数のオペレーティングシステムを収容するために以降のオペレーションを結果として生じるインストラクションは、装置においてファームウェアの介入を必要とするイベントを検出すること、装置の中に存在する機器を決定すること、機器と装置の中に存在する2つのオペレーティングシステムとの間の関係を決定すること、そして、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも一部分を分離すること、を含んでよい。媒体の実施例は、さらに、方法の実施例と同様な実施例の特徴を含み得る。
【0012】
図1は、本発明開示の少なくとも1つの実施例に従って、マルチオペレーティングシステム装置について、アクセス分離のために構成された一つの装置例を示している。装置100の例は、これらに限定されるわけではないが、以下のものを含んでよい。Android
(R)OS、Windows
(R)OS、Mac OS、Tizen OS、 Firefox OS、Blackberry
(R)OS、Palm
(R)OS、Symbian
(R)OS、等に基づくセルラハンドセットまたはスマートフォンといったモバイル通信機器、iPad
(R)、Surface
(R)、Galaxy Tab
(R)、Kindle Fire
(R)、等のようなタブレットコンピュータといったモバイルコンピューティングデバイス、インテル社により製造される低電力チップセットを含んでいるUltrabook
(R)、ネットブック、ノートブック、ラップトップ、パームトップ、等、デスクトップコンピュータといった典型的な静止型のコンピューティングデバイス、サーバ、スマートテレビ、インテル社からのNext Unit of Computing(NUC)プラットフォームのようなスモールフォームファクタコンピューティングソリューション(例えば、限られた空間のアプリケーション、TVセットトップボックス、等)である。装置100は、例えば、少なくとも、ファームウェア102、機器(equipment)104、および、OS 106A、OS 106B、・・・、OS 106n(まとめて、「OS 106A・・・n」)といった複数のオペレーティングシステムを含んでよい。装置100においては3つのOS 106A・・・nが示されているだけであるが、本発明開示に合致する実施例は、3つのオペレーティングシステムだけに限定されるものではなく、例えば、装置100の性能に応じて、それ以下または以上のものを含んでよい。
【0013】
ファームウェア102は、例えば、装置100における不揮発性(NV)メモリの中に保管された、ソフトウェアコード、プログラム、データ、等を含んでよい。例えば、読み出し専用メモリ(ROM)は、装置100が動作化(例えば、電源なし状態からの電源アップ、電源あり状態からのリブート、等)されたときにメモリの中へロードされる情報を用いて符号化(encode)されてよい。装置100のメモリの中へロードされる情報は、例えば、OS 106A・・・nと機器104との間のインターフェイスを提供するための少なくとも1つのカーネル、装置100の中で少なくとも1つの仮想マシン(VM)のオペレーションを管理するための仮想マシンマネージャ(VMM)または「ハイパーバイザ(”hypervisor”)」、ドライバ、ユーティリティ、セキュリティプログラム、等を含んでよい。ファームウェア102によってロードされるプログラムは、セキュリティ検証に供するものであってよく、そして、従って、装置100における他のソフトウェア(例えば、OS 106A・・・n)よりも高い特権(privilege)においてオペレーションしてよい。ファームウェア102によってロードされる少なくとも1つのプログラムは、AIM 108であってよい。一般的に、AIM 108は、OS 106A・・・nのオペレーションとインタラクションを促進し得る。AIM108は、例えば、それぞれのOS 106A・・・nによって機器104の部分がどのようにアクセスされ得るかをコントロールし得る。AIM108によって実行され得るアクティビティの例が、
図3−
図9に関して説明される。
【0014】
機器104は、装置100の中のハードウェアを含んでよく、もしくは、少なくとも装置100に対して接続されてよい。種々のオペレーティングシステムをサポート及び/又は促進し得るものである。機器104は、装置100のオペレーションに対してよりコア(core)なシステム(例えば、プロセッサ、メモリ、バスインターフェイス、入力/出力(I/O)、等)を含んでよい。ユーザインターフェイスハードウェア、外部通信のための有線及び/又は無線ハードウェア、等といった、周辺システムも同様である。一つの実施例において、AIM108は、機器104の少なくとも一部分を分離してよい。例えば、OS 106Aに対してアクセス可能な機器104A、OS 106Bに対してアクセス可能な機器104B、・・・、OS 106nに対してアクセス可能な機器104n(まとめて、「機器 104A・・・n」)、といったものである。分離は、ここにおいて参照されるように、プログラムに従ったコントロールが確立され得ることを示しており、機器 104A・・・nが、対応するOS 106A・・・nだけによって成功裡にアクセスされるようにできる(例えば、読み出し及び/又は書き込まれるデータ、実行されるコマンド、等)。別のOS 106A・・・nによるアクセスの試み(attempt)は、ブロックされている試み、生成されているエラー、または、(例えば、データ暗号化のせいで)理解できないデータのリターン、のうち少なくとも1つを結果として生じ得る。
【0015】
OS 106A・・・nは、装置100において機器104のオペレーションを管理するように構成され得るソフトウェアの集合を含んでよい。OS 106A・・・nは、販売のための会社によって製造されるか、自由な使用のためのユーザコミュニティ(例えば、「オープンソース」(”open−source”))によってコンパイルされるか、または、プライベート/パブリックモデルのハイブリッドであってよい。OS 106A・・・nの実施例は、これらに限定されるわけではないが、以下のものを含んでよい。ディスクオペレーティングシステム(DOS)、Windows、IOs、Android、Unix、Linux(登録商標)(例えば、公共および営利的な配布の両方を含んでいる)、Jolicloud、等である。OS 106A・・・nは、少なくとも1つのカーネルと関連付けられてよい。カーネルは、OS 106A・・・nと機器104との間のインターフェイスとして動作し得るソフトウェアリソースを含んでよい。例えば、カーネルは、機器104をオペレーションするために使用され得る少なくとも1つのドライバを含んでよい。オペレーションの最中に、OS 106A・・・nは、機器104における種々のハードウェアリソースにアクセスするためのシステムコールをなし得る。カーネルは、これらのコールを管理して、機器104の中の適切なハードウェアに対してコールを割り当て得る。OS 106A・・・nは、装置100において、単独で(例えば、一度に一つ)、もしくは、同時にオペレーションし得る。両方のオペレーションシナリオの実施例が、
図3−
図9に関して説明される。
【0016】
図2は、本発明開示の少なくとも1つの実施例に従って、利用可能な装置100’のための一つのコンフィグレーション例を示している。特に、装置100’は、
図1において開示されたような機能性の例を実施することが可能であり得る。しかしながら、装置100’は、本発明開示と合致する実施例において使用可能な装置の一つの例を意味するだけであり、そして、これらの様々な例を実施に係るあらゆる特定のやり方に限定することを意味するものではない。
【0017】
装置100’は、例えば、装置オペレーションを管理するように構成されているシステムモジュール200を含んでよい。システムモジュール200は、例えば、処理モジュール202、メモリモジュール204、電力モジュール206、ユーザインターフェイスモジュール208、および通信インターフェイスモジュール210を含んでよい。装置100’は、また、通信モジュール212も含んでよい。通信モジュール212は、システムモジュール200から分離しているものとして説明されてきたが、
図2において示される実施例は、説明目的のためだけに示されてきたものである。通信モジュール212に関連する機能性のいくつか又は全ては、または、システムモジュール200の中へ包含されることもできる。
【0018】
装置100’において、処理モジュール202は、別個のコンポーネントの中に置かれた一つまたはそれ以上のプロセッサ、または代替的に、一つのコンポーネントの中(例えば、システムオンチップ(SoC)構成の中)にエンベッドされた一つまたはそれ以上の処理チップ、および、あらゆるプロセッサ関連のサポート回路(例えば、インターフェイスのブリッジ、等)を含んでよい。プロセッサの例は、これらに限定されるわけではないが、インテル社から利用可能な種々のx86ベースのマイクロプロセッサを含んでよく、Pentium、Xeon、Itanium、Celeron、Atom、Core iシリーズ製品、Advanced RISC(例えば、縮小命令セットコンピューティング)マシン、または、”ARM”プロセッサ、等におけるものを含んでいる。サポート回路の例は、処理モジュール202が、それを通じて、装置100’において、異なるスピード、異なるバス上、等において動作している他のシステムコンポーネントとインタラクションし得るインターフェイスを提供するように構成されたチップセット(例えば、インテル社から利用可能なNorthbridge、Southbridge、等)を含んでよい。サポート回路と一般的に関連するいくつかの又は全ての機能性も、また、プロセッサとして同一の物理的なパッケージの中に含まれてよい(例えば、インテル社から利用可能なプロセッサのSandy Bridgeファミリーの中といったもの)。
【0019】
処理モジュール202は、装置100’において種々のインストラクションを実行するように構成されてよい。インストラクションは、データ読み出し、データ書き込み、データ処理、データ形成、データ変換、データ転換、等に関するアクティビティを処理モジュール202に実行させるように構成されたプログラムコードを含んでよい。情報(例えば、インストラクション、データ、等)は、メモリモジュール204の中に保管されてよい。メモリモジュール204は、固定またはリムーバブルなフォーマットにおいてランダムアクセスメモリ(RAM)またはROMを含んでよい。RAMは、例えば、スタティックRAM(SRAM)またはダイナミックRAM(DRAM)といった、装置100’のオペレーションの最中に情報を保持するように構成された揮発性メモリを含んでよい。ROMは、装置100’が動作化されたときにインストラクションを提供するように、Basic Input/Output System(BIOS)、Unified Extensible Firmware Interface(UEFI)、等を使用して、構成されたNVメモリ、電気的プログラム可能ROM(EPROM)といったプログラマブルメモリ、フラッシュ、等を含んでよい。他の固定/リムーバブルなメモリは、これらに限定されるわけではないが、以下のものを含んでよい。例えば、フロッピー(登録商標)ディスク、ハードドライブ、等といった、磁気メモリ、半導体フラッシュメモリ(例えば、embedded multimedia card(eMMC)、等)といった電子メモリ、リムーバブルメモリカードまたはスティック(例えば、micro storage device(uSD)、USB、等)、compact disc−based ROM(CD−ROM)、Digital Video Disk(DVD)、Blu−Ray(登録商標) Disk、等、である。
【0020】
電力モジュール206は、内部電源(例えば、バッテリー、フュエルセル(fuel cell)、等)、及び/又は、外部電源(例えば、エレクトロメカニカルまたは太陽発電機、パワーグリッド(power grid)、フュエルセル、等)、および、動作のために必要な電力を装置100’に提供するように構成された関連回路を含んでよい。ユーザインターフェイスモジュール208は、ユーザが装置100’とインタラクションできるようにするためのハードウェア及び/又はソフトウェアを含んでよい。例えば、種々の入力メカニズム(例えば、マイクロフォン、スイッチ、ボタン、ノブ、キーボード、スピーカ、タッチ感応サーフェス、画像をキャプチャし、及び/又は、近傍、距離、動作、ジェスチャ、向き、等を検知するように構成された一つまたはそれ以上のセンサ)、および、種々の出力メカニズム(例えば、スピーカ、ディスプレイ、ライト/フラッシュ(lighted/flashing)インジケータ、振動、動作、等に対するエレクトロメカニカルコンポーネント)といったものである。
【0021】
通信インターフェイスモジュール210は、パケットルーティング(routing)および通信モジュール212のための他のコントロール機能を管理するように構成されてよく、有線及び/又は無線通信をサポートするように構成されたリソースを含んでよい。いくつかのインスタンスにおいて、装置100’は、一つまたはそれ以上の通信モジュール212(例えば、有線プロトコル及び/又は無線ラジオのための別個の物理的なインターフェイスモジュールを含む)を含んでよく、集中化された通信インターフェイスモジュール210によって全てが管理される。有線通信は、シリアルおよびパラレル有線媒体を含んでよい。例えば、Ethernet、Universal Serial Bus(USB)、Firewire、Digital Video Interface(DVI)、High−Definition Multimedia Interface(HDMI(登録商標)、等といったものである。無線通信は、例えば、近接(close−proximity)無線媒体(例えば、Near Field Communication(NFC)標準に基づくといったラジオ周波数(RF)、赤外線(IR)、等)、近距離無線媒体(例えば、Bluetooth(登録商標)、WLAN、Wi−Fi、等)、遠距離無線媒体(例えば、セルラ広域ラジオ通信技術、衛星ベースの通信、等)、または、音波を介した電気的通信を含んでよい。一つの実施例において、通信インターフェイスモジュール210は、通信モジュール212においてアクティブな無線通信がお互いに干渉するのを妨げるように構成されてよい。この機能の実行において、通信インターフェイスモジュール210は、例えば、送信を待っているメッセージの相対的な優先度に基づいて、通信モジュール212のためのアクティビティをスケジュールしてよい。
図2において開示される実施例は、通信モジュール212から分離している通信インターフェイスモジュール210を示しているが、通信インターフェイスモジュール210と通信モジュール212の機能性が同一のモジュールの中に組み込まれることも可能である。
【0022】
図2において開示される実施例において、メモリモジュール20は、ファームウェア102’を含んでよく(例えば、メモリモジュール204の中のNVメモリに保管される)、AIM108’を含んでよい。オペレーションの一つの実施例において、ファームウェア102’は、装置100’が動作化されるとRAMメモリの中にロードされ得る情報を含んでよい。この情報をロードすることは、マルウェア(malware)がロードされないことを保証するための検証(例えば、測定)を含んでよい。AIM108’は、RAMの中へロードされる情報の一部であってよく、そして、OS 106A・・・nに関するイベントについて装置100’におけるオペレーションをモニタしてよい。イベントの例は、装置100’の動作化、OS 106A・・・nを装置100’の中へロードすること、フォアグラウンドOS 106A・・・nからバックグラウンドOS 106A・・・nへ移行するためのトリガー、等を含んでよい。イベントを検出すると、AIM108’は、機器104の少なくとも一部分の分離に関するオペレーションを実行してよい。機器は、例えば、
図2において開示されるように、モジュール200から212までに関連する機器である。
【0023】
図3は、本発明開示の少なくとも1つの実施例に従って、マルチオペレーティングシステム装置について、アクセス分離のためのオペレーション例を示している。
図3において開示されるオペレーション例は、本発明開示と合致する種々の実施例が基づく、基本フレームワーク(basic framework)として役立ち得る。オペレーション300においては、装置100においてファームウェア102による介入(例えば、AIM108によるもの)を必要とするイベントが検出されてよい。イベントの例は、装置100’の動作化、フォアグラウンドOS 106A・・・nからバックグラウンドOS 106A・・・nへ移行するためのトリガー、等を含んでよい。装置100における機器104が、次に、オペレーション302において決定される。機器104を決定することは、例えば、装置100の中に組み込まれた、及び/又は、接続されたハードウェアを発見することを含んでよい。オペレーション302において機器104が決定された後で、次に、オペレーション304において、機器104のOS 106A・・・nに対する関係が決定されてよい。例えば、オペレーション304においては、機器104の少なくとも一部分がOS 106A・・・nそれぞれと関連付けされてよい。この関連付けは、プロスペクティブ(prospective)ベースで(例えば、装置100の初期化の最中であるが、OS 106A・・・nをロードする以前)、または、リフレクティブ(reflective)ベースで(例えば、OS 106A・・・nによって実際に使用されていた装置100におけるリソースに基づいて)作成されてよい。関連付けにより、機器104の少なくとも一部分が、オペレーション36において分離され得る。例えば、別のOS 106A・・・nからの干渉(interference)に対する懸念なしに、それぞれのオペレーティングシステムが機器104の一つのセットにアクセスし得るように、機器104の部分は分離されてよい。
【0024】
図4は、本発明開示の少なくとも1つの実施例に従って、選択的な機器レポーティング(selective equipment reporting)を介した機器分離の一つの例を示している。クラウドコンピューティングのようなオペレーションシナリオにおいて、装置100は、相当なリソースを有しているサービスといった固定のコンピューティングデバイスであってよい。例えば、一つの装置100が、それぞれが複数のコアを含んでいる複数のプロセッサ、複数の大容量データストレージコンポーネント、大量のRAMメモリ、等を含んでよく、一つのOS 106A・・・nによって効果的に利用されるよりも多くのコンピューティングパワーを結果として生じている。結果として、装置100をより小さなコンピューティングユニットにフレキシブルに分割できるようにする要求が存在する。クラウドコンピューティングのシナリオでは、機器104を装置100において同時に動作し得る異なるOS 106A・・・nへフレキシブルに分配する機能により、クラウドリソースプロバイダは、ソフトウェアベースのOS−in−OSまたは仮想化ソリューションに係る追加のオーバーヘッドなしに、クラウドユーザによって必要とされるプロセッサ、ストレージ、等のリソースを区分けすることができる。このタイプのフレキシビリティは、ラックスケールアーキテクチャ(rack−scale−architecture、RSA)コンピューティングを実施するために必要とされるモジュール性(modularity)を提供し得る。RSAコンピューティングにおいては、個々のサーバに係るラック全体が、効率を増加し、発熱を低減する、等のために、電力、冷却、処理、メモリ、等といったリソースを共有し得る。
【0025】
一つの実施例においては、UEFIベースのファームウェア102において利用可能なAdvanced Configuration and Power Interface(ACPI)ハードウェア列挙(enumeration)が、ハードウェア分離を実施するために使用されてよく、そこでは、機器104A・・・nがOS 106A・・・nへ割り当てられる方法がコントロールされ得る。これは、ACPIが、ソフトウェア発見可能(software−discoverable)でないシステムトポロジ(system topology)のエレメントを宣言する(declare)からである。UEFI GetMemoryMapオペレーションに沿ったこの機能により、装置は、それぞれのOS 106A・・・nに対して選択的に割り当てられ、そして、通信することができる。一つの実施例において、ペリフェラルコンポーネントインターコネクト(PCI)コンフィグレーション空間は、OS 106A・・・nがPCIスロットにプラグインされた機器の自動コンフィグレーションを実行できるが、機器の部分104A・・・nへの機器104の分離が上書き(override)され得ないように、ディセーブル(disable)される必要がある。
【0026】
レポートされた選択的な機器を介する機器の分離に係る一つの例が、
図4における400において開示されている。機器104’は、装置100について一つのハードウェアコンフィグレーションを開示する。例えば、処理モジュール202’は、複数のプロセッサCPU1、CPU2、CPU3、CPU4、およびCPU5(まとめて、「CPU1・・・5」)を含んでよい。メモリモジュール204’は、10GBセクションへと分割され得る30GBの物理的RAMメモリを含んでよい。通信モジュール212’は、複数の有線または無線インターフェイスを含んでよく、インターフェイス1、インターフェイス2、およびインターフェイス3(まとめて、「インターフェイス1・・・5」)を含んでいる。機器104’が、他の分割可能なハードウェアを含んでよいことを知ることは重要である。複数の分割可能なプロセッサコアを含んでいるCPU1・・・5それぞれといったものである。機器104’のコンフィグレーションは、ここにおいては、説明のためだけに示されるものである。
【0027】
機器104A’と104B’は、一つの物理的装置100の中に複数の論理的装置(logical device)を形成するために、どのように機器104’が分割され得るかを示している。例えば、機器104A’は、OS 106Aに対してレポートされてよく、そして、CPU1とCPU4、RAMメモリの最初の10GB、および通信インターフェイス1だけを含んでよい。従って、OS 106Aは、機器104A’において特定されたリソースによって定義された論理的装置の境界の中で、装置100において動作し得る。同様に、機器104B’は、OS 106Bに対してレポートされてよい。結果として、OS 106Bは、CPU3とCPU5、RAMメモリの2番目の10GB、および通信インターフェイス3を含む論理的装置の境界の中で動作し得る。機器104A・・・nの部分が、それぞれ後続のOS 106A・・・nに対して同様に定義されてよい。このようにして、一つ以上のOS 106A・・・nは、干渉することなく装置100において同時に動作し得る。OS 106A・・・nが、機器104の中で同一のハードウェアを使用していないからである(例えば、それぞれのOS 106A・・・nは、異なる機器104A・・・nを使用する)。このように動作することによって、全ての機器104が、アクセスされることができる。特には、一つのOS 106A・・・nが、大きな装置100(例えば、クラウドサーバ)における全ての機器104にアクセスする機能を有しない場合である。
【0028】
図5は、本発明開示の少なくとも1つの実施例に従って、選択的な機器レポーティングを介した機器分離のためのオペレーション例を示している。
図5において開示される例は、
図3において示されたオペレーションをさらに変更する。
図4において示された例に従って起こり得るオペレーションに係る現在のより特定的な例によるものである。オペレーション300’において、検出され得るイベントは、装置100の初期化(または、再度の初期化)である(オペレーション500)。オペレーション302’における決定機器(determining equipment)103は、例えば、装置100の中のリソースパーティション(resource partition)におけるセットアップオプションを読み込むことを含んでよい(オペレーション502)。セットアップオプションは、装置100について一般的な機器コンフィグレーションを指定してよい。固定のACPI記述テーブル(FADT)においてCPUリソース(例えば、プロセッサ及び/又はコア)を分割するために、オペレーション504において使用され得るものである。例えば、FADTにおけるそれぞれのエントリーは、唯一のadvanced programmable interrupt controller identification(APIC ID)を用いて論理的CPU リソースを定義してよい。オペレーション506において、機器104におけるメモリリソースは、メモリマップの中で分割されてよい。例としてUEFIを使用することで、メモリコンフィグレーション情報をOS 106A・・・nに対して渡すために、EFI_MEMORY_MAPが使用されてよい。メモリ分割化の後に、オペレーション508における、EFI装置の列挙、および、I/OとメモリマップドI/O(MMIO)を少なくとも1つのPCIベースアドレスレジスタ(BAR)に割り当てることが続いてよい。
【0029】
オペレーション302’における機器104の決定に続いて、オペレーション304’において、OS 106A・・・nに対する機器104の関係が決定されてよい。例えば、オペレーション510において、PCI装置は、区別された(differentiated)システム記述テーブル(DSDT)においてACPIデバイスとして割り当てられてよい。例えば、処理およびメモリリソースをレポートすることに加えて、機器104は、また、DSDT名前空間を使用しているOS 106A・・・nに対するACPIデバイス(例えば、ACPIタイマー、ACPIパワーボタン、等)としてレポートされてもよい。本発明開示と合致して、DSDTリソースレポートメカニズムは、また、ACPIデバイスとしてPCIデバイスをレポートするため(例えば、PCIデバイスがOS106A・・・nによって自動的にコンフィグレーションされることを妨げるため)に使用されてよく、そして、IO/MMIO BARリソースをレポートするためにCRS方法(例えば、リソース方法に対して接続リソースを加えるためのACPIマクロ)が使用されてよい。ACPIテーブルにおいてPCIデバイスを列挙するためのコードの例は、以下を含んでよい。
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;
…………………
}
【0030】
オペレーション510においてACPIデバイスとしてPCIデバイスがレポートされることに続いて、オペレーション512において、PCIコンフィグレーション空間がディセーブルされてよい。OS 106A・・・nが、機器104におけるPCIデバイスを自動的に発見できること妨げるためである。機器104は、次に、オペレーション306’において、機器の部分104A・・・nへと分離されてよい。そこでは、例えば、オペレーション514において、それぞれのOS 106A・・・nに対してカスタムACPIテーブルが生成されてよい。それぞれのACPIテーブルにおいて特定されたリソースは、種々のやり方で決定されてよい。例えば、システムオペレータによる手動コンフィグレーション(例えば、ファームウェア102またはOS 106A・・・nにおけるユーザインターフェイスを介するもの)、AIM108または装置100における他のシステムによって自動的に、装置200の外部に存在しているコントロールシステムによってファームウェアにおいて自動的になされること、等を含んでいる。OS 106A・・・nは、次に、オペレーション516において、ブートすることが許されてよい。それぞれのOS 106A・・・nは、オペレーション514において生成された対応するカスタムACPIテーブルを使用してよく、カスタムACPIテーブルは、オペレーションの最中にそれぞれのOS 106A・・・nがアクセスすることを許された機器の部分104A・・・nを記述している。このようにして、一つ以上のOS 106A・・・nは、お互いに干渉することなく装置100において同時に動作し得る。それぞれのOS 106A・・・nによってアクセスされ得る機器の部分104A・・・nが、分離されているからである(例えば、オーバーラップしない)。
【0031】
一つの実施例においては、割り込み配送(interrupt delivery)が。ACPIテーブルによって定義された複数の論理的装置における複数のOS 106A・・・nに係る同時のオペレーションに適合するように変更されてよい。既存のシステムにおける割り込み配送については、複数の割り込みリソースと割り込みコントローラが存在し得る。本発明開示に合致して、それぞれの論理的装置が割り込みメカニズムを適切に使用することを保証するために、割り込みコントローラが、機器104A・・・nの異なる部分に対して割り当てられてよい。それぞれのCPUがローカルAPCIタイマーを有し得るので、それぞれの論理的装置がOSタスクスケジューリングのためのタイマー割り込みを有することを保証することができる。一つの実施例において、一つの論理的装置は、ユーザインターフェイスモジュール208にアクセスし得る(例えば、ディスプレイ、ユーザ入力、等)、一方で、他の装置がヘッドレス(headless)であり得る(例えば、装置100においてユーザインターフェイス機能がない)。しかしながら、機器104が2つのグラフィックコントローラを有する場合は、一つ以上の論理的装置にユーザインターフェイス機能を与えることが可能であり、それによりユーザ体験(user experience)が改善される。
【0032】
図6は、本発明開示の少なくとも1つの実施例に従って、メモリロックアウト(memory lockout)を介した機器分離の一つの例を示している。
図5の実施例が装置100におけるOS 106A・・・nの同時オペレーションを開示している一方で、
図6と
図8において開示される実施例は、装置100における異なるOS 106A・・・n間での移行を取り扱うものである。例えば、装置100は、少なくともフォアグラウンドOS(例えば、OS 106A)とバックグラウンドOS(例えば、OS 106B)を含んでよい。既存のマルチOSソリューションは、デュアルブート(dual−booting)またはOS 106A・・・nのインスタンスをお互いの中で実行するためにファームウェア102を構成することを採用している。これらのオプションの両方は、問題を含んでいる。デュアルブートは、OS 106Aと106Bとの間を移行するために装置100の再始動(restart)を必要とする。リブートを必要とすることは時間がかかり、そして、ユーザ体験に否定的なインパクトを与えてしまう。OS 106A・・・nのインスタンスをお互いの中で実行することは、より反応がよいソリューションであるが、大量のメモリと処理のオーバーヘッドを生じて全般的なシステムパフォーマンスをスローダウンし得る。本発明開示に合致して、装置100のリソースについて相当な重荷(burden)を課すことなく、OS 106A・・・n間の迅速なスイッチを促進し得る実施例が
図6−
図8に示されている。
【0033】
ACPI標準は、4つのグローバル(Gx)状態と6つのスリープ(Sx)状態を定義している。スリープ状態S0からS5は、装置100における異なるレベルのアクティビティを定めている。例えば、S0状態は、装置100が完全にアクティブであるときを表しており、一方で、S5状態は、装置100が「ソフトオフ(”soft off”)」状態にあるときである。そこでは、装置100が、電源がいまだに供給されていることを除いて全体的に非アクティブ(inactive)である。これら全ての種々のスリープ状態のうち、S3または「スタンバイ(”stanby”)」状態は、装置100におけるアクティビティがサスペンドされ、一方でRAMメモリは保持されている状態を対象とする。S4または「ハイバネーション(”hibernation”)」状態に入ると、RAMの現在の状態がディスクに保管される。一つのOSから別のOSにスイッチするときには、装置100をS3状態の中に置くことが有利であり得る。フォアグラウンドOS 106AとバックグラウンドOS 106Bの両方についてRAM状態が保持されており、ディスクからRAM状態をロードする必要なしに、一方から他方へ迅速に移行することができる。そうした機能性は、UEFIベースのファームウェア102に対して追加されてよく、装置100は、トリガーイベントの発生の際に、装置をS3スリープ状態に入れることができ、そして、S3スリープ状態から再開(resume)する際には、フォアグラウンドOS 106AからバックグラウンドOS 106Bへ移行することができる。ユーザに対しては、移行がほとんど即座に生じているように見られ、ユーザ満足度を大いに高めている。
【0034】
しかしながら、このやり方におけるOS 106A・・・n間の移行の利点は、また、責任(liability)でもあり得る。フォアグラウンドOS 106AとバックグラウンドOS 106Bの両方がRAMメモリの中に保持されているので、S3スリープ状態において移行が迅速に生じ得る。しかしながら、このことは、また、フォアグラウンドOS 106Aからメモリに中に保管された情報はバックグラウンドOS 106Bによってアクセスされることに対して脆弱であることも意味している。その逆も同様である。例えば、フォアグラウンドOS 106Aにおけるマルウェアは、バックグラウンドOS 106Bのオペレーションについて重要なデータ、装置100に関する機密情報、装置100のユーザに関する機密情報、等にアクセスすることが可能であり得る。この脆弱性を取り扱うために、メモリコンフィグレーション(例えば、アドレスマッピング)メカニズムを活用することが可能であり得る。例えば、OSスイッチメモリマップレジスタとしていくつかのマイクロプロセッサアーキテクチャ(例えば、インテルXeonマイクロプロセッサ)において利用可能な、ソースアドレスデコーダ(SAD)およびターゲットアドレスデコード(TAD)メカニズム、といったものである。例えば、SADおよびTADレジスタは、メモリにおけるアドレス範囲の開始(start)と終了(end)をコントロールし得る。例えば、終了アドレスが開始アドレスより小さい状況は、無効なエントリーを示し得る。OS切り替えの最中のメモリのアクセシビリティ(accessibility)をコントロールするために特定的にカスタムレジスタ(例えば、カスタムOSスイッチメモリマップレジスタ)を作成することも可能であり得る。これらのメモリコンフィグレーション機能は、フォアグラウンドOS 106AまたはバックグラウンドOS 106Bのいずれがアクティブであるかに基づいて、メモリアクセスをカスタマイズするようにシステムメモリのアドレス可能空間を変更するために使用され得る。結果として、フォアグラウンドOS 106Aは、バックグラウンドOS 106Bに対応する情報を含んでいるメモリ領域にアクセスすることができないであろう。その逆もまた同様である。
【0035】
メモリロックアウトを介した機器分離の一つの例が、
図6の中での600において示されている。グローバルシステムアドレスマップ602の例は、装置100が、5GBの利用可能なメモリを含んでおり、0から3GBまでがロー(low)システムメモリであり、3から4GBまでがローMIMOメモリであり、そして、4から5GBまでがハイ(high)システムメモリである。602Aの例は、利用可能なメモリがどのようにフォアグラウンドOS 106Aに対して表われ得るかを示しており、一方、602Bの例は、アクティブなときにバックグラウンドOS 106Bに対して利用可能であり得るメモリを表わしている。602Aの例において、システムアドレス可能メモリ空間は、1GBまでと2GB以降のメモリがアクセス可能であること示すように変更されてよい。1GBと2GBとの間のメモリ空間は、例えば、バックグラウンドOS 106Bのためにリザーブされてよい。一方で、602の例は、バックグラウンドOS 106Bが、3GBと4GBとの間のメモリと同様、1GBと2GBとの間のメモリだけにアクセスし得ることを開示している。一つの実施例において、3GBから4GBのアクセス範囲におけるメモリは、装置100における機器104(例えば、ハードウェアデバイス)に対してマップし得る。このように、3GBから4GBのアドレス範囲におけるメモリは、機器104をコントロールするために、フォアグラウンドOS 106AとバックグラウンドOS 106Bの両方によって使用され得るものである。
【0036】
602Aの例に示されるように、1GBと2GBとの間のメモリ領域は、フォアグラウンドOS 106Aに対して見えないものであり、そして、従って、フォアグラウンドOS 106Aにおいて実行されているプログラムについては、メモリにおけるこの領域にアクセスするように試みる理由が存在しないであろう。しかしながら、フォアグラウンドOS 106Aにおいて動作しているマルウェアについては、プロテクションスキームの観点で、いまだにメモリが装置100の中に存在していると仮定することに基づいて、メモリのブロックアウトされた領域にいまだにアクセスすることが可能であり得る。一つの実施例においては、ブロックアウトされたメモリ領域にアクセスするためのあらゆる試みは、少なくともアクセスを停止することによって、厄介者(bad actor)を捕え得る。さらに、システムにアクセスの試みを通知するエラーが生成されてよく、及び/又は、OS 106Aにおけるいくつか又は全てのアクティビティが、さらなるアクセスの試みを防ぐために停止されてよい。
【0037】
図7は、本発明開示の少なくとも1つの実施例に従って、メモリロックアウトを介した機器分離のためのオペレーション例を示している。オペレーション300’’においてファームウェアの介入を必要とするイベントを検出することは、OSスイッチトリガーを検出すること(オペレーション700)を含んでよい。OSスイッチトリガーの例は、手動開始(manual−initiated)イベント(例えば、ユーザインターフェイスのインタラクション)、または、自動化イベント(例えば、現在アクティブなOS 106A・・・n、S3スリープ状態に入っている装置100、等において実行しているアプリケーションからのもの)を含んでよい。ユーザインターフェイスのインタラクションは、例えば、ハードウェアベースのコントロール(例えば、ハードウェアボタン)、または、ソフトウェアベースのコントロール(例えば、グラフィカルインターフェイスにおいて表示されるボタン)の作動(actuation)を含んでよい。OSスイッチトリガーにかかわらず、装置100は、S3スリープ状態に入ってよく、そして、再開の際に、機器を決定することに関与してよい302’’。例えば、オペレーション702において、ハードウェア(例えば、機器104)が初期化されてよい。ハードウェアの初期化の後に、オペレーション704におけるメモリトレーニング(memory training)が続いてよい。メモリトレーニングは、例えば、装置の初期化の最中に装置100に対する全体のメモリアドレスマッピング(例えば、SAD/TADレジスタ設定及び他の関連するレジスタを含んでいるもの)を決定するファームウェア102(例えば、AIX108)を含んでよい。AIM108は、次に、メモリマッピングをNVメモリ(例えば、UEFI変数として)の中に保管させ、そして、また、メモリパーティションコンフィグレーションを記録してもよい。フォアグラウンドOS 106Aが0〜1GB、2〜3GB、および4〜5GBを使用し、一方で、バックグラウンドOS 106Bは1〜2GBメモリだけを使用している、といったものである。NVメモリの中に保管されたメモリマップ情報は、次に、例えば、フォアグラウンドOS 106AからバックグラウンドOS 106Bへ移行するときに、参照のために使用されてよい。
【0038】
オペレーション304’’においてOS関係(OS relationship)に対する機器を決定することは、例えば、オペレーション706においてフォアグラウンドへ移動しているOS 106A・・・n(例えば、バックグラウンドOS 106B)を決定すること、そして、次に、オペレーション708においてメモリマップを計算することを含んでよい。オペレーション706においてフォアグラウンドへ移行するOS 106A・・・nを決定することは、例えば、装置100が2つ以上のオペレーションを含み得るシナリオにおいて重要であり得る。メモリマップを計算することは、例えば、バックグラウンドへ移行するフォアグラウンドOS 106Aおよびフォアグラウンドへ移行するバックグラウンドOS 106Bに基づいてレジスタ設定を少なくとも決定することを含んでよい。従って、新たなメモリマップは、OS 106Bに対応するメモリの中の領域をアクセス可能にし、一方で、OS 106Aに対応するメモリの中の領域をアクセス不可にする。オペレーション306’’においてOSの移行に基づいて機器を分離することは、次に、オペレーション708において計算されたメモリマップに基づいてメモリコンフィグレーションを変更することを含んでよい。例えば、オペレーション710において、アクセスは、新たなフォアグラウンドOS(例えば、OS 106B)に対応するメモリ領域に対してオープンであり、一方で、オペレーション712においてバックグラウンドへ移行するOS 106Aに対応するメモリ領域に対してはブロックされてよい。装置100におけるS3スリープ状態からのオペレーション再開は、次に、オペレーション714において完了され得る。OS 106Bが新たなフォアグラウンドOSになるところである。
【0039】
図8は、本発明開示の少なくとも1つの実施例に従って、メモリ暗号化を介した機器分離の一つの例を示している。
図6と
図7において開示された実施例と同様に、
図8と
図9も、また、OS 106A・・・nに関連するメモリ領域を別のOS 106A・・・nによるアクセスから保護することに関する。しかしながら、この実施例は、例えば、ハードウェアメモリデコードメカニズムをコントロールするハードウェアベースのロックアウトソリューションとは対照的に、ソフトウェアベースの暗号化ソリューションを示している。両方のソリューションが同一タイプの機能性を提供する一方で、ハードウェアベースのロックアウトソリューションは、現在ではサーバクラスのマイクロプロセッサにおいてだけ利用可能な所定のハードウェアコンフィグレーション機能を使用してよい。例えば、パーソナルコンピュータ(PC)、タブレットコンピュータ、モバイル通信デバイス、等において使用されるマイクロプロセッサは、これらのコンフィグレーション機能を未だに含んでいない。そして、従って、
図8と
図9は、より幅広い種類の装置100に対して適用可能な暗号化ソリューションを示している。
【0040】
800においては、メモリ暗号化を介した機器分離の一つの例が示されている。802においては、基本メモリコンフィグレーションが示されており、そして、例えば、OS 106Aによって使用されるメモリ領域、OS 106Bによって利用されるメモリ領域、およびシステム管理RAM(SMRAM)804を含んでよい。SMRAM804は、例えば、ファームウェア102(例えば、AIM108)についてだけアクセス可能なセキュアメモリを含んでよい。804においては、フォアグラウンドOS 106AからバックグラウンドOS 106Bへの移行の一つの例が示されている。フォアグラウンドOS 106Aによって使用されるメモリ領域の初期状態は、読み出し可能(例えば、平文)であってよく、一方で、バックグラウンドOS 106Bによって使用されるメモリ領域は、暗号化されてよい。SMRAM804は、隠されていてよい(例えば、AIM108によってだけアクセスされ得るからである)。806において、移行における最初のオペレーションが示されており、そこでは、装置がS3スリープ状態から再開した後で、AIM108は、フォアグラウンドOS 106Aによって使用されるメモリ領域を暗号化されるようにしてよい。例えば、OS 106AおよびOS 106Bによって使用されるメモリ領域を暗号化し、かつ、認証するために、Advanced Encryption Standard(AES)暗号アルゴリズムが、Galois Counter Mode(GCM)暗号と共に使用されてよい。AES−CGMのパフォーマンスは所定のマイクロプロセッサ(例えば、インテル社により提供される少なくともいくつかのマイクロプロセッサ)によってブーストされ得る。マイクロプロセッサは、AES New Instruction set(AES−NI)を含んでおり、carry−less multiplication instruction(PCLMULQDQ)に沿っており、AES−GCMアルゴリズムの全体的なパフォーマンスをブーストし得るものである。
【0041】
フォアグラウンドOS 106Aによって使用されるメモリ領域の暗号化に続いて、暗号化を実行するために使用される鍵(key)が保護預かりのためにSMRAM804の中に保管されてよい(例えば、SMRAM804はAIM108にだけアクセス可能であるため)。
図8で808において示されるオペレーションは、806において生じるそうしたオペレーションの後に続いてよく、フォアグラウンドへ移行するOS(例えば、OS 106B)によって使用されるメモリ領域を復号化する。例えば、AIM108は、バックグラウンドOS 106Bによって使用されるメモリ領域を暗号化するために以前に利用された鍵を取り戻してよく、そして、次に、OS 106Bがフォアグラウンドへ移行する際にメモリのこの領域を復号化してよい。復号化は、OS 106Bによって使用されるメモリ領域が破損していないことを保証するための認証オペレーションを含んでよい。例えば、フォアグラウンドOS 106Aにおけるプログラム(例えば、マルウェア)が、バックグラウンドOS 106Bによって使用されるメモリ領域に対して未だに書き込まれることがあり、そして、この書き込みアクティビティは、オペレーションを破壊し得るであろうデータをメモリの暗号化された領域の中に挿入し得る。認証は、復号化されたメモリ領域が、暗号化されたオリジナルなものと一致することを保証するのを手助けする。認証が失敗した場合には、移行が停止され、そして、フォアグラウンドにおいてはフォアグラウンドOS 106Bが再開し得る。認証が成功であれば、メモリは、新たなフォアグラウンドOSである、OS 106Bが、ファイルを含んでいる領域を自由にアクセスし得る状態にあってよく、一方で、今やバックグラウンドにおける、OS 106Aのためのデータを含んでいる領域が暗号化される。暗号化は、OS 106Aに対応するメモリにおける領域がアクセスされることを妨げないが、読み出しアクセス試みから戻されたあらゆるデータは理解不能であろう。
【0042】
図9は、本発明開示の少なくとも1つの実施例に従って、メモリ暗号化を介した機器分離のためのオペレーション例を示している。オペレーション300’’’においてファームウェア介入を要求するイベントを検出することは、例えば、オペレーション900においてOSスイッチトリガーを検出することを含んでよい。
図7におけるオペレーション700に関して説明されたスイッチトリガーの例も、また、ここにおいて適用可能である。オペレーション302’’’において機器を決定することは、例えば、オペレーション902において、S3スリープ状態からの再開後にハードウェア(例えば、機器104)を初期化することを含んでよく、オペレーション904における、現在のメモリマップを決定するためのメモリトレーニングが後に続く。オペレーション903および904の例は、
図7において、オペレーション702と704、それぞれに関して、以前に説明されてきた。同様に、オペレーション304’’’においてOS関係に対する機器を決定することは、例えば、オペレーション906においてフォアグラウンドへ移動しているOSを少なくとも決定すること、そして、オペレーション908においてメモリマップを計算することを含んでよい。これらの実施例は、オペレーション706と708に関して、それぞれに、
図7において以前に説明されたものである。
【0043】
オペレーション304’’’は、さらに、オペレーション910を含んでよく、そこでは、ファームウェア102(例えば、AIM108)が、フォアグラウンドOS 106Aによって使用されるメモリ領域を暗号化するための新たな鍵を生成してよい。オペレーション306’’’において、フォアグラウンドへ移行しているOSに基づいて機器を分離することは、次に、例えば、オペレーション910において生成された鍵を使用して、オペレーション912において、フォアグラウンドOS 106Aによって使用されるメモリ領域を暗号化すること、および、次に、鍵をセキュアストレージの中に(例えば、SMRAM804の中に)保管することを含んでよい。オペレーション914においては、バックグラウンドOS 106Bによって使用されるメモリ領域を暗号化するために以前に使用された鍵が、セキュアストレージから取り戻されてよく、そして、オペレーション916において、バックグラウンドOS 106Bによって使用されるメモリ領域を復号化するために使用されてよい。一つの実施例において、オペレーション916は、バックグラウンドOS 106Bによって使用されるメモリ領域が破損していないことを保証するために認証を含んでよい。オペレーション916において、バックグラウンドOS 106Bによって使用されるメモリ領域に係るコンテンツが認証され得ない場合には、次に、移行が失敗し、そして、OS 106Aがフォアグラウンドに保持されてよい。認証が成功である場合には、次に、オペレーション918において、バックグラウンドOS 106Bがフォアグラウンドへ移行し、かつ、フォアグラウンドOS 106Aがバックグラウンドへ移行してよい。
【0044】
図3、
図5、
図7および
図9は、異なる実施例に従ってオペレーションを示しているが、他の実施例については、
図3、
図5、
図7および
図9において示された必ずしも全てのオペレーションが必要とされないことが理解されよう。実際には、本発明開示の他の実施例においては、
図3、
図5、
図7および
図9で示されたオペレーション及び/又はここにおいて説明された他のオペレーションが、あらゆる図面において特定的に示されていないやり方であるが、それでも本発明開示と完全に合致するやり方において、組み合わされてよいことが、ここにおいて完全に熟考されている。従って、一つの図面において厳密には示されていない機能及び/又はオペレーションに向けられた請求項は、本発明開示の範囲およびコンテンツの中にあるものと考えられる。
【0045】
この明細書および請求項において使用されるように、「及び/又は(”and/or”)」によって結合されたアイテムのリストは、リストされたアイテムのあらゆる組み合わせを意味し得るものである。例えば、フレーズ「A、B、及び/又はC」は、A、B、C、AとB、AとC、BとC、または、AとBとC、を意味し得る。この明細書および請求項において使用されるように、「少なくとも1つの(”at least one of”)」によって結合されたアイテムのリストは、リストされた用語のあらゆる組み合わせを意味し得るものである。例えば、フレーズ「A、B、またはCのうち少なくとも1つ」は、A、B、C、AとB、AとC、BとC、または、AとBとC、を意味し得る。
【0046】
ここにおいてあらゆる実施例において使用されるように、用語「モジュール(”module”)」は、上記のあらゆるオペレーションを実施するように構成されたソフトウェア、ファームウェア、及び/又は回路を参照してよい。ソフトウェアは、コンピュータで読取り可能な固定の記録媒体上に記録されたソフトウェアパッケージ、コード、インストラクション、インストラクションセット、及び/又はデータとして具体化されてよい。ファームウェアは、メモリデバイスの中にハードコードされた(hard−coded)(例えば、不揮発性の)コード、インストラクションまたはインストラクションセット、及び/又はデータとして具体化されてよい。「回路”circuitry”」は、ここにおけるあらゆる実施例において使用されるように、例えば、単独もしくはあらゆる組み合わせにおいて、ハードワイヤード(hardwired)回路、一つまたはそれ以上の個別のインストラクション処理コアを含んでいるコンピュータプロセッサといったプログラマブル回路、状態機械回路、及び/又は、プログラマブル回路によって実行されるインストラクションを保管するファームウェア、を含んでよい。モジュールは、集合的または個別的に、より大きなシステムの一部分を形成する回路として具体化されてよい。例えば、集積回路(IC)、システムオンチップ(SoC)、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、等である。
【0047】
ここにおいて説明されたあらゆるオペレーションは、一つまたはそれ以上のプロセッサによって実行されるときに本方法を実行するインストラクションを、個別もしくはあらゆる組み合わせにおいて、保管している一つまたはそれ以上の記録媒体(例えば、固定の記録媒体)を含むシステムにおいて実施されてよい。ここで、プロセッサは、例えば、サーバCPU、モバイルデバイスCPU、及び/又は他のプログラマブル回路を含んでよい。また、ここにおいて説明されたオペレーションは、一つ以上の異なる物理的な場所にある処理構成(processing structure)といった、複数の物理的装置にわたり分配されてよいことも意図されている。記録媒体は、あらゆるタイプの有形の媒体を含んでよい。例えば、ハードディスク、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク読み出し専用メモリ(CD−ROM)、再書き込み可能コンパクトディスク(CD−RW)、および光磁気ディスクを含むあらゆるタイプのディスク、読み出し専用メモリ(ROM)、ダイナミックおよびスタティックRAMといったランダムアクセスメモリ(RAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリ、といった半導体デバイス、半導体ディスク(SSD)、エンベッドマルチメディアカード(eMMC)、セキュアデジタル入力/出力(SDIO)カード、磁気または光カード、もしくは、電子的インストラクションを保管するために適切なあらゆるタイプの媒体、である。
【0048】
従って、本アプリケーションは、マルチオペレーティングシステム装置に対するアクセス分離に向けられている。一般的に、装置は、ファームウェアを使用して、装置において同時に動作している一つ以上のオペレーティングシステム(OS)を適合し、または、一つのOSから別のものへ移行するように構成されてよい。ファームウェアにおけるアクセス分離モジュール(AIM)は、デバイス機器コンフィグレーションを決定し、かつ、複数のオペレーティングシステムによる使用のために機器を分割してよい。AIMは、OSベースの機器検出(equipment sensing)をディセーブルしてよく、そして、カスタマイズされたテーブルを使用してそれぞれのOSに対して機器の少なくとも一部分を割り当ててよい。オペレーティングシステム間での移行のときに、AIMは、一つのOSからの情報は他のものに対してアクセス可能でないことを保証するのを手助けし得る。例えば、AIMは、フォアグラウンドOSがバックグラウンドOSによって置き換えられるときを検出することができ、そして、バックグラウンドOSがアクティブになる以前に、フォアグラウンドOSのファイルを保護し得る(例えば、ロックアウトまたは暗号化)。
【0049】
以降の例は、さらなる実施例に関するものである。本発明開示の以降の実施例は、装置、方法、実行されると本方法に基づいたアクトをマシンに実行させるインストラクションを保管している少なくとも1つのマシンで読取り可能な媒体、本方法に基づいてアクトを実行するための手段、及び/又は、以降に提供されるように、マルチオペレーティングシステム装置に対するアクセス分離のためのシステム、といった技術的事項を含んでよい。
【0050】
実施例1に従って、マルチオペレーティングシステム装置が提供される、装置は、装置におけるオペレーティングシステムをサポートするための機器と、機器の少なくとも1つの部分とインタラクションする少なくとも2つのオペレーティングシステムと、少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な装置における機器の部分を決定するためのアクセス分離モジュールを少なくとも含むファームウェアを含む。
【0051】
実施例2は、実施例1に係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、装置の活性化に続いて、少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するためのアクセス分離モジュールを含む。
【0052】
実施例3は、実施例2に係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、少なくとも2つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するためのアクセス分離モジュールを含む。
【0053】
実施例4は、実施例3に係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、少なくとも2つのオペレーティングシステムそれぞれに対応するテーブルを生成するためのアクセス分離モジュールを含み、テーブルは、装置活性化の後で、少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【0054】
実施例5は、実施例3に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムは、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作する。
【0055】
実施例6は、実施例1乃至5のいずれかに係るエレメントを含んでよく、機器は、少なくとも2つのオペレーティングシステムに対応するデータが保管されたメモリを含んでいる少なくとも1つのメモリモジュールを含む。
【0056】
実施例7は、実施例6に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムは、フォアグラウンドオペレーティングシステムとバックグラウンドオペレーティングシステムを含み、アクセス分離は、さらに、フォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するトリガーを検出する。
【0057】
実施例8は、実施例7に係るエレメントを含んでよく、アクセス分離モジュールは、さらに、トリガーを検出すると、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定し、かつ、フォアグラウンドオペレーティングシステムによって使用されるように決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにする。
【0058】
実施例9は、実施例8に係るエレメントを含んでよく、フォアグラウンドオペレーティングシステムによって使用されるものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするアクセス分離モジュールは、メモリの部分に対するアクセスを防止するためにメモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも1つを行う、アクセス分離モジュールを含む。
【0059】
実施例10は、実施例8に係るエレメントを含んでよく、フォアグラウンドオペレーティングシステムによって使用されるものと決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにするアクセス分離モジュールは、暗号化鍵を生成して、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化するために鍵を使用し、かつ、機器のセキュアメモリの中に鍵を保管する。
【0060】
実施例11は、実施例10に係るエレメントを含んでよく、アクセス分離モジュールは、さらに、セキュアメモリから第2暗号化鍵を取得して、バックグラウンドオペレーティングシステムによって使用されるメモリの部分を復号化するために第2暗号化鍵を使用し、かつ、フォアグラウンドオペレーティングシステムをバックグラウンドオペレーティングシステムによって置き換えさせる。
【0061】
実施例12は、実施例1乃至5のいずれかに係るエレメントを含んでよく、機器の部分を決定するアクセス分離モジュールは、装置の活性化に続いて、少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化し、少なくとも2つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化し、かつ、少なくとも2つのオペレーティングシステムそれぞれに対応するテーブルを生成する。テーブルは、装置活性化の後で、少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【0062】
実施例13は、実施例12に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムは、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作する。
【0063】
実施例14は、実施例1に係るエレメントを含んでよく、機器は、少なくとも2つのオペレーティングシステムに対応するデータが保管されたメモリを含んでいる少なくとも1つのメモリモジュールを含む。
【0064】
実施例15は、実施例14に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムは、フォアグラウンドオペレーティングシステムとバックグラウンドオペレーティングシステムを含み、アクセス分離モジュールは、さらに、フォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへ移行するトリガーを検出する。
【0065】
実施例16は、実施例15に係るエレメントを含んでよく、アクセス分離モジュールは、さらに、トリガーを検出すると、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定し、かつ、フォアグラウンドオペレーティングシステムによって使用されるように決定されたメモリの部分をバックグラウンドオペレーティングシステムに対してアクセスできないようにする。メモリの部分に対するアクセスを防止するために、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも1つを行うこと、もしくは、暗号化鍵を生成して、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化するために鍵を使用し、かつ、機器のセキュアメモリの中に鍵を保管すること、によるものである。
【0066】
実施例17に従って、一つの装置においてマルチオペレーティングシステムに適合する方法が提供される。本方法は、装置においてファームウェア介入を要求するイベントを検出するステップと、装置の中に存在する機器を決定するステップと、機器と装置の中に存在している少なくとも2つのオペレーティングシステムとの間の関係を決定するステップと、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するステップと、を含む。
【0067】
実施例18は、実施例17に係るエレメントを含んでよく、イベントを検出するステップは、装置の活性化を検出するステップ、または、装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するステップ、のうち少なくとも1つを含んでいる。
【0068】
実施例19は、実施例18に係るエレメントを含んでよく、装置における機器を決定するステップは、少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するステップ、を含む。
【0069】
実施例20は、実施例19に係るエレメントを含んでよく、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定するステップは、少なくとも2つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するステップ、および、少なくとも2つのオペレーティングシステムそれぞれに対応するテーブルを生成するステップ、を含む。テーブルは、装置活性化の後で、少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【0070】
実施例21は、実施例20に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するステップは、少なくとも2つのオペレーティングシステムが、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作できるようにするステップ、を含む。
【0071】
実施例22は、実施例18乃至21のいずれかに係るエレメントを含んでよく、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定するステップは、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定するステップ、を含む。
【0072】
実施例23は、実施例22に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するステップは、移行の以前に、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも1つによって、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによって、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を、バックグラウンドオペレーティングシステムに対してアクセスできないようにするステップ、を含む。
【0073】
実施例24に従って、上記の実施例17乃至23のいずれかの方法を実行するように構成されたチップセットが提供される。
【0074】
実施例25に従って、少なくとも1つの装置を含むシステムが提供される。システムは、上記の実施例17乃至23のいずれかの方法を実行するように構成されている。
【0075】
実施例26に従って、マルチオペレーティングシステム装置に対するアクセス分離のために構成された装置が提供される。装置は、上記の実施例17乃至23のいずれかの方法を実行するように構成されている。
【0076】
実施例27に従って、一つまたはそれ以上のプロセッサによって実行されると、一つの装置においてマルチオペレーティングシステムに適合するための以下のオペレーションを結果として生じるインストラクションが、個々に又は組み合わせにおいて、保管された少なくとも1つのマシンで読取り可能な記録媒体が提供される。装置においてファームウェア介入を要求するイベントを検出するステップと、装置の中に存在する機器を決定するステップと、機器と装置の中に存在している少なくとも2つのオペレーティングシステムとの間の関係を決定するステップと、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するステップと、を含むものである。
【0077】
実施例28は、実施例27に係るエレメントを含んでよく、イベントを検出するステップは、装置の活性化を検出するステップ、または、装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するステップ、のうち少なくとも1つを含んでいる。
【0078】
実施例29は、実施例28に係るエレメントを含んでよく、装置における機器を決定するステップは、少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するステップ、を含む。
【0079】
実施例30は、実施例29に係るエレメントを含んでよく、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定するステップは、少なくとも2つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するステップ、および、少なくとも2つのオペレーティングシステムそれぞれに対応するテーブルを生成するステップ、を含む。テーブルは、装置活性化の後で、少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【0080】
実施例31は、実施例30に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するステップは、少なくとも2つのオペレーティングシステムが、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作できるようにするステップ、を含む。
【0081】
実施例32は、実施例28乃至31のいずれかに係るエレメントを含んでよく、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定するステップは、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定するステップ、を含む。
【0082】
実施例33は、実施例32に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するステップは、移行の以前に、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも1つによって、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによって、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を、バックグラウンドオペレーティングシステムに対してアクセスできないようにするステップ、を含む。
【0083】
実施例34に従って、一つの装置においてマルチオペレーティングシステムに適合するためのシステムが提供される。本システムは、装置においてファームウェア介入を要求するイベントを検出するための手段と、装置の中に存在する機器を決定するための手段と、機器と装置の中に存在している少なくとも2つのオペレーティングシステムとの間の関係を決定するための手段と、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するための手段と、を含む。
【0084】
実施例35は、実施例34に係るエレメントを含んでよく、イベントを検出するための手段は、装置の活性化を検出するための手段、または、装置においてフォアグラウンドオペレーティングシステムからバックグラウンドオペレーティングシステムへの移行のトリガーを検出するための手段、のうち少なくとも1つを含んでいる。
【0085】
実施例36は、実施例35に係るエレメントを含んでよく、装置における機器を決定するための手段は、少なくとも2つのオペレーティングシステムによってアクセス可能な部分へと機器を区分化するための手段、を含む。
【0086】
実施例37は、実施例36に係るエレメントを含んでよく、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定するための手段は、少なくとも2つのオペレーティングシステムが機器を発見できるようにするファームウェアにおける機能性を非活性化するための手段、および、少なくとも2つのオペレーティングシステムそれぞれに対応するテーブルを生成するための手段、を含む。テーブルは、装置活性化の後で、少なくとも2つのオペレーティングシステムそれぞれに対してアクセス可能な機器の一部分の識別子を少なくとも含んでいる。
【0087】
実施例38は、実施例37に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するための手段は、少なくとも2つのオペレーティングシステムが、テーブルによって特定された機器の部分を使用して、装置の中へロードされ、そして、同時に動作できるようにするための手段、を含む。
【0088】
実施例39は、実施例35乃至38のいずれかに係るエレメントを含んでよく、機器と少なくとも2つのオペレーティングシステムとの間の関係を決定するための手段は、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を決定するための手段、を含む。
【0089】
実施例40は、実施例39に係るエレメントを含んでよく、少なくとも2つのオペレーティングシステムそれぞれによる使用のために機器の少なくとも1つの部分を分離するための手段は、移行の以前に、メモリコントローラのレジスタ設定のアジャストまたはロックダウンのうち少なくとも1つによって、もしくは、フォアグラウンドオペレーティングシステムによって使用されるメモリの部分を暗号化することによって、少なくともフォアグラウンドオペレーティングシステムによって使用されるメモリの部分を、バックグラウンドオペレーティングシステムに対してアクセスできないようにするための手段、を含む。
【0090】
ここにおいて使用されてきた用語と表現は、説明に係る用語として使用されており、限定するものではない。そうした用語と表現の使用においては、示され、かつ、説明された特徴に係るあらゆる均等物(または、それらの部分)を排除する意図は存在しない。そして、請求の範囲内において種々の変更が可能であることが理解される。従って、請求項は、そうした均等物の全てをカバーするように意図されているものである。