(57)【要約】例えば、同じ特権レベルにおいて複数の実行プロセスが、メモリー・アドレス変換構造の少なくとも一部を共有する場合において、細分化特権レベルに対するオペレーティング・システム／ハイパーバイザーの効率について記載する。種々の実施形態では、元の階層メモリー・アドレス変換構造の第１コンポーネントが複製され、信頼プロセスおよび非信頼プロセス双方に対して可視でないエントリーを省略するように編集される。種々の例では、複製されたコンポーネントは、非信頼プロセスによって、元の変換構造の他のコンポーネントと共に使用される。元の変換構造は、信頼プロセスによって使用される。種々の例では、第１コンポーネントの追加のコピーが、追加の非信頼プロセスのために使用される。ある例では、第１コンポーネントおよびその複製（１つまたは複数）の同期が、変換構造の更新時に実行される。ある例では、第１コンポーネントおよびその複製（１つまたは複数）の同期が、ページ・フォールト・ハンドラーによって実行される。【選択図】図１
2017511938.tif 000002
【特許請求の範囲】
【請求項１】
コンピューター実装方法であって、
計算デバイスのメモリー管理およびプロセス制御コンポーネントを使用して、前記計算デバイスの同じ特権レベルにおいて実行される少なくとも１つの非信頼プロセスに関して保護されるように信頼プロセスを実行するステップと、
前記信頼プロセスによって使用される仮想メモリー・アドレスと前記計算デバイスの物理メモリー・アドレスとの間で変換を行うための第１変換データー構造を作るステップと、
前記第１変換データー構造の少なくとも一部を前記非信頼プロセスと共有するステップと、
を含む、コンピューター実装方法。
【請求項２】
請求項１記載の方法であって、オペレーティング・システムまたはハイパーバイザーのいずれかにおいて実行される方法。
【請求項３】
請求項１記載の方法において、前記第１変換データー構造が階層的である、方法。
【請求項４】
請求項１記載の方法において、前記第１変換データー構造が階層的であり、前記第１変換データー構造の少なくとも一部を共有するステップが、前記第１変換データー構造のルートと、０個以上の後続レベルとを共有するステップを含む、方法。
【請求項５】
請求項１記載の方法において、前記第１変換データー構造がページ・ツリーであり、前記第１変換データー構造の少なくとも一部を共有するステップが、前記ページ・ツリーの少なくとも最上位ページを共有するステップを含む、方法。
【請求項６】
請求項１記載の方法であって、共有する前記第１変換データー構造の少なくとも一部をコピーし、前記非信頼プロセスから保護された仮想および／または物理メモリー・アドレスを削除するように前記コピーを編集することによって、前記一部を共有するステップを含む、方法。
【請求項７】
請求項６記載の方法であって、前記信頼および非信頼プロセスによって共有されるメモリー・アドレスに関してのみ、前記第１変換データー構造の前記少なくとも一部および前記編集されたコピーを同期させるステップを含む、方法。
【請求項８】
請求項７記載の方法であって、以下の場合、
前記第１変換データー構造が前記信頼プロセスによって更新されるとき、
ページ・フォールトを検出した結果として、
ページ・フォールト・ハンドラーにおいて、
の内いずれかにおいて前記同期を実行するステップを含む、方法。
【請求項９】
請求項１記載の方法であって、１つの制御レジスターのみを更新することによって、前記信頼および非信頼プロセスの実行間で切り替えるステップを含む、方法。
【請求項１０】
計算デバイスのメモリー管理およびプロセス制御コンポーネントであって、前記計算デバイスの同じ特権レベルにおいて実行される少なくとも１つの非信頼プロセスに関して保護されるように信頼プロセスを実行するように構成され、
前記信頼プロセスによって使用される仮想メモリー・アドレスと前記計算デバイスの物理メモリー・アドレスとの間で変換を行うための第１変換データー構造を格納するメモリーを含み、
前記第１変換データー構造の少なくとも一部を前記非信頼プロセスと共有するように構成される、メモリー管理およびプロセス制御コンポーネント。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  特権レベルは、保護レベルとも呼ばれ、どの命令またはどのデーター・アクセスを実行すればよいか、そして実行しなくてもよいか制御するためのコンピューター・システムのハードウェア・メカニズムである。これは、異なるソフトウェア・アプリケーションをハードウェア・レベルにおいて互いから分離させ、コンピューター・システムが複数のユーザーをそれらに接続させ、および／または問題なく同時に複数のアプリケーション・プログラムを実行できるようにする。そうでないと、１つのアプリケーションが他のアプリケーションのデーターを上書きするおそれがあり、または悪意のアプリケーションが他のアプリケーションの秘密データーにアクセスするおそれがある。
【０００２】
[0002]  特権レベルは、階層状に構成することもできる。例えば、多くのコンピューター・システムは３つの特権レベルを有し、ハイパーバイザーのために使用される最も高い特権レベルはハイパーバイザー・レベルと呼ばれ、オペレーティング・システムのカーネルのために使用される次の特権レベルはＯＳレベルと呼ばれ、ユーザー・プログラムを実行するために使用される最も低い特権レベルはユーザー・レベルと呼ばれる。低い方のレベルの特権レベルが例外を発生した場合、即ち、コードが実行されるのを妨げる場合、階層内において、しかるべきアクションを実行する次に高い特権レベルにこの例外を渡すことができる。例えば、コードを実行することが妨げられたアプリケーション・プログラムにエラー・コードを配信するため、またはアプリケーション・プログラムを終了するためである。
【０００３】
[0003]  所与のコンピューター・ハードウェアに対して、特権レベルの数は、どのハードウェアがどのように製造されたかに依存して、ハードウェアにおいて一定である。特定の特権レベルがソフトウェアによって一定の方法で使用されるのが通例であるので、例えば、オペレーティング・システム・コードは、このオペレーティング・システム・コードの変更なしでは、ユーザー特権レベルで実行することはできない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]  １つの特権レベルを、この特権レベルで実行することができる複数のプロセスに細分化することが望まれる場合が多い。例えば、より多くのユーザー・アプリケーション間で保護が可能になるために、ユーザー特権レベルを細分化する。計算デバイスの特権レベルを細分化するメカニズムを改善することが、現在求められている。スマート・フォンのようにリソースに制約があるデバイスにおける使用の増大により、動作の効率性、更にはメモリーの必要性削減も現在求められている。
【０００５】
[0005]  以下で説明する実施形態は、特権レベルが細分化された既存の計算デバイスの欠点の内任意のものを解決する実現例にも、全ての解決する実現例にも限定されない。
【課題を解決するための手段】
【０００６】
[0006]  以下に、読み手に基本的な理解が得られるようにするために、本開示を簡略化した摘要を提示する。この摘要は、本開示の広範な全体像ではなく、主要な／肝要なエレメントを識別するのでも、本明細書の範囲を明確に定めるのでもない。その唯一の目標は、後に提示される更に詳細な説明の序文として、簡略化した形態で、本明細書において開示される概念から選択したものを提示することである。
【０００７】
[0007]  例えば、同じ特権レベルにおいて複数の実行プロセスがメモリー・アドレス変換構造の少なくとも一部を共有する場合において、細分化された特権レベルに対するオペレーティング・システム／ハイパーバイザーの効率について説明する。種々の実施形態では、元の階層メモリー・アドレス変換構造の第１コンポーネントが複製され、信頼プロセス(trusted process)および非信頼プロセス（untrusted process)双方に対して可視でないエントリーを省略するように編集される。種々の例では、複製されたコンポーネントは、非信頼プロセスによって、元の変換構造の他のコンポーネントと共に使用される。元の変換構造は、信頼プロセスによって使用される。種々の例において、第１コンポーネントの追加のコピーが、追加の非信頼プロセスのために使用される。ある例では、第１コンポーネントおよびその複製（１つまたは複数）の同期が、変換構造の更新時に実行される。ある例では、第１コンポーネントおよびその複製（１つまたは複数）の同期が、ページ・フォールト・ハンドラーによって実行される。
【０００８】
[0008]  付随する特徴の多くは、以下の詳細な説明を参照し添付図面に関連付けて検討することによって理解が深まるに連れて、一層容易に認められるであろう。
【図面の簡単な説明】
【０００９】
[0009]  本明細書の説明は、以下の詳細な説明を、添付図面に照らして読むことにより、一層良く理解されよう。
【図１】図１は、細分化特権レベルを有する複数の計算デバイスの模式図である。
【図２】図２は、メモリー・アドレス変換構造の共有がない、計算デバイスのメモリー管理およびプロセス制御コンポーネントの模式図である。
【図３】図３は、メモリー・アドレス変換構造の共有がある、計算デバイスのメモリー管理およびプロセス制御コンポーネントの模式図である。
【図４】図４は、オペレーティング・システムまたはハイパーバイザーによって実行される信頼プロセスにおける方法の流れ図である。
【図５】図５は、オペレーティング・システムまたはハイパーバイザーのスケジューラーにおける方法の流れ図である。
【図６】図６は、オペレーティング・システムまたはハイパーバイザーのページ・フォールド・ハンドラーにおける方法の流れ図である。
【図７】図７は、オペレーティング・システムまたはハイパーバイザーによって実行される同期の方法の流れ図である。
【図８】図８は、オペレーティング・システムおよび／またはハイパーバイザーの実施形態を実現することができる計算ベース・デバイス例を示す。
【００１０】
添付図面において同様の部分を示すために、同じ参照番号が使用される。
【発明を実施するための形態】
【００１１】
[0010]  添付図面に関連付けて以下に示す詳細な説明は、本例の説明であることを意図するのであって、本例を構成または利用することができる唯一の形態(only forms)を表すことを意図するのではない。この説明は、本例の機能、および本例を構成し動作させるステップのシーケンスを説明する。しかしながら、同じまたは同等の機能およびシーケンスが、異なる例によって遂行されてもよい。
【００１２】
[0011]  本文書において説明する種々の例において、非信頼コードのメモリーは、信頼コードと共有される。信頼および非信頼コードに対して別個のプロセスを使用することに加えて、これらの例の種々のものでは、信頼コードが非信頼コードを制御する特権レベルの細分化について説明する。ある例では、信頼コードは、非信頼コードのメモリーにアクセスすることができるが、逆は成り立たない。
【００１３】
[0012]  図１は、２台のスマート・フォン１００およびデーター・センターの計算エンティティ１１８の模式図である。これらの計算エンティティの各々は、本明細書において説明するような細分化された特権レベル１０８、１１６、１２６を使用して、２つ以上のソフトウェア・アプリケーションが、干渉なく、同じ計算エンティティにおいて実行することを可能にする。例えば、スマート・フォン１００は、個人用ソフトウェア・アプリケーション１０２および業務用ソフトウェア・アプリケーション１０４の双方を有する。細分化特権レベル１０８を使用することによって、個人用アプリケーションによる業務用アプリケーションのデーターへのアクセス、およびその逆を防止するように、スマート・フォンのハードウェア１０６を制御することができる。このように、スマート・フォン１００のユーザーは、例えば、同じスマート・フォンにおいて、彼の仕事用および家庭用の電子メール・アプリケーションを動作させることができる。エンド・ユーザーおよびこのユーザーの従業員の双方が、このスマート・フォンに格納されている家庭用電子メール・データーおよび業務用電子メール・データーが互いから保護されていることの安心を得る。
【００１４】
[0013]  他の例は、製造業者Ｃによって製造されたハードウェア１１４、プロバイダーＡ１１０のソフトウェアを含むオペレーティング・システム、およびプロバイダーＢ１１２のソフトウェアを含む電子メール・アプリケーションを有するスマート・フォンに関する。細分化特権レベル１１６を使用することによって、オペレーティング・システムおよびプロバイダーＢ１１２のソフトウェアが実行でき、一方各エンティティ（Ａ，Ｂ，Ｃ）のデーターを他のエンティティの各々から保護するように、ハードウェア１１４が制御される。
【００１５】
[0014]  他の例は、データー・センター・サーバー１１８またはデーター・センター以外の計算エンティティに関する。細分化特権レベル１２６は、データー・センター・サーバーにおいて仮想マシンまたはオペレーティング・システム１２４によって使用される。細分化特権レベルは、顧客コード(customer code)１２０およびデーター・センタ・オペレーター・コード１２２が、互いから保護されつつ、実行することを可能にする。これは、顧客コードが顧客の詳細、支払い詳細、およびデーター・センタ・オペレーター・コードから保護し続けなければならない他の機密データーというような秘密データーを使用する場合に特に有用である。
【００１６】
[0015]  図２は、メモリー・アドレス変換構造の共有がない、計算デバイスのメモリー管理およびプロセス制御コンポーネント２０４の模式図である。メモリー管理およびプロセス制御コンポーネントは、オペレーティング・システムおよび／またはハイパーバイザーを含むことができる。この例では、メモリー管理およびプロセス制御コンポーネント２０４は、プロセスを作成するためにハードウェア機構を使用する。図２の例では、２つのプロセスが示されており、プロセス１，２０８は信頼コード２００を実行し、プロセス２，２１０は非信頼コード２０２を実行する。図２の構成は、もっと多くのプロセスを有するように拡張することができるが、明確さのために２つだけが示されている。２つのプロセス２０８および２１０は、メモリー管理およびプロセス制御コンポーネント２０４の同じ特権レベル内にある。即ち、メモリー管理およびプロセス制御コンポーネント２０４は、計算デバイスのハードウェア機構を使用して、オペレーティング・システムまたはハイパーバイザーの特権レベルを、同じ特権レベルにおける２つ以上のプロセスに細分化する。これによって、信頼コードを実行するプロセス１を、非信頼コードを実行するプロセス２から保護することが可能になる。
【００１７】
[0016]  図２の例では、細分化は、２つのプロセスの各々に１つずつ、２つの変換データー構造を作成することによって行われる。プロセス１は、変換データー構造Ａ２０６を使用し、プロセス２は変換データー構造Ｂ２１２を使用する。もっと多くのプロセスが形成される場合、各追加プロセスはそれ自体の変換データー構造を作成させる。
【００１８】
[0017]  変換データー構造は、ソフトウェアによって使用される仮想アドレスを、メモリー・デバイスのようなハードウェア機能(facilities)をアドレスするために使用される物理アドレスに変換するためのマッピングを保持する任意のストアである。変換データー構造は、ある例では、階層的であることも可能である。例えば、下位変換データー構造のカスケードを含んでもよい。ある例では、変換データー構造はページ・ツリーを含む。
【００１９】
[0018]  図２の例では、プロセス１およびプロセス２は、オペレーティング・システムの観点からは、ユーザー・モードの特権レベルで動作しているように見えるかもしれない。プロセス１およびプロセス２間でデーターを交換するために、変換データー構造Ａ２０６およびＢ２１２は、双方のプロセスが同じメモリー・エリアにアクセスできるように構成することができる。それ以外の場合、プロセス２がプロセス１のメモリー・エリアにアクセスできないので、プロセス１がプロセス２に関して保護される。
【００２０】
[0019]  メモリー管理およびプロセス制御コンポーネント２０４内にあるスケジューリング・プロセス２１４は、任意の一時点において、プロセス１およびプロセス２のどちらが実行するか制御する。即ち、プロセス１およびプロセス２は並列に実行するのではなく、スケジューリング・プロセス２１４によって制御される通りに、交互に実行する。しかしながら、マルチコア・マシンが使用される場合、プロセス１およびプロセス２は、複数のコアを使用して、並列に実行することができる。変換データー構造Ａに対する更新は、計算デバイスの動作中に行われる。これらの更新を考慮に入れるために、各プロセスの変換データー構造を更新するには同期メカニズム２１６が使用される。
【００２１】
[0020]  尚、本明細書では、変換データー構造の複製が、計算デバイスにおけるメモリー使用を増やすことが認められよう。また、同期メカニズムも計算リソースを占有する。図３の例は、メモリー使用をどのようにして大幅に減らせるかについて例示する。また、これは同期をどのように簡略化できるかについても例示する。これは、これらのプロセス間の保護を悪化させることなく達成される。広範囲の問題に適用することができる、簡素で効率的で有効な特権レベル細分化方法が与えられる。
【００２２】
[0021]  図３は、図２のメモリー管理およびプロセス制御コンポーネント２０４を示し、ここでは、変換データー構造Ｂが変更され、同期メカニズムが異なっており、スケジューリングは特に効率的な方法で行うことができる。
【００２３】
[0022]  この例では、信頼コードを実行するプロセス１，２０８がその変換データー構造Ａの少なくとも一部を、非信頼コードを実行するプロセス２，２１０と共有する。信頼プロセスの変換データー構造の少なくとも一部を共有することによって、大幅なメモリー節約が得られる。これは、プロセス毎に別個に変換データー構造全体が格納されないからである。
【００２４】
[0023]  例えば、信頼プロセス１，２０８は、複数のコンポーネントを含む変換データー構造を有する。コンポーネント３００の内第１のものがコピーされ、このコピー３０２がプロセス２，２１０によって使用される。第１コンポーネントのコピー３０２は、１つ以上のポインターを含み、これらのポインターは逆に信頼プロセスの変換データー構造の１つ以上の他のコンポーネントを参照する。
【００２５】
[0024]  ある例では、信頼プロセスの変換データー構造が階層的になる。階層的変換データー構造を使用すると、特に高いメモリー効率を達成することが可能になる。
[0025]  例えば、第１コンポーネント３００は、階層のルート・レベルおよび０以上の後続レベルを含む階層の一部となる。ある例では、変換データー構造がページ・ツリーとなり、第１コンポーネント３００が最上位ページと呼ばれる（図３に示す通り）ページ・ツリーのルートとなり、他のコンポーネントはページ・ツリーのそれよりも低いレベル・ノードまたはノードのグループとなる。ツリー構造を使用することは必須ではない。ソフトウェア定義階層（例えば、ｍｉｂｓ）を含む他のタイプの階層構造も使用することができる。
【００２６】
[0026]  非信頼プロセスがアクセスを許されていないメモリー・エリアについての変換情報を除去するために、第１コンポーネントのコピー３０２を編集することができる。この編集プロセスは、以下で更に詳しく説明するように、メモリー管理およびプロセス制御コンポーネントによって自動的に行われる。信頼コード２００は、秘密に保持し非信頼プロセスと共有されてはならないメモリー位置についての情報を含むことができる。例えば、図３において、信頼プロセス１，２０８のページ・ツリーの分岐３０４は、プロセス２には見ることができない。トップ・ページＡのコピーは、それがプロセス１のページ・ツリーの左分岐だけを指し示すように編集される。この場合、トップ・ページＡのコピー３０２から開始して、プロセスは分岐３０４によって識別されるメモリー位置にアクセスすることができない。
【００２７】
[0027]  スケジューリング・メカニズム２１４は、プロセス１とプロセス２との間で非常に効率的に切り替えることができる。何故なら、これはこの場合変換データー構造Ａの第１コンポーネントとこの第１コンポーネントのコピーとの間における切り替えになる(involve)からである。この切り替えは、ある例では、１つの制御レジスターを更新することによって行うことができる。
【００２８】
[0028]  同期メカニズム３０６は大幅に簡略化される。これは、第１コンポーネントと第１コンポーネントのコピーだけを同期させればよいからである。また、第１コンポーネントと第１コンポーネントのコピーの双方に現れる（または双方に共通する）エントリーのみを同期させればよい。
【００２９】
[0029]  本明細書において説明したメモリー管理およびプロセス制御コンポーネントの機能は、少なくとも部分的に、１つ以上のハードウェア・ロジック・コンポーネントによって実行することができる。例えば、そして限定ではなく、使用することができるハードウェア・ロジック・コンポーネントの例示的タイプには、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラム特定集積回路（ＡＳＩＣ）、プログラム特定標準製品（ＡＳＳＰ）、システム−オン−ア−チップ・システム（ＳＯＣ）、複合プログラマブル・ロジック・デバイス（ＣＰＬＤ）が含まれる。
【００３０】
[0030]  図４は、オペレーティング・システムまたはハイパーバイザーによって実行される信頼プロセスにおける方法の流れ図である。例えば、図３のプロセス１，２０８における方法。このプロセスは、特権／信頼モードで信頼コードを実行する（４００）。信頼プロセスを実行するために、既に初期メモリー割り当て４０２が行われている。これらの初期メモリー割り当て４０２の間、変換データー構造が、初期メモリー割り当てに基づいて、信頼プロセスのために作られる。信頼プロセスは、非信頼コードも実行されることを検出する。変換データー構造の第１コンポーネントの複製を作る。例えば、信頼プロセスのページ・ツリーの最上位ページの複製を作る。この最上位ページの複製は、ページ・テーブルの同じ残り(rest)を指すことに変わりはない（ここで説明するように、無効になるエントリーを除く）。信頼プロセスは、信頼コードから知識を取り込み、それを使用して第１コンポーネントの複製において１つ以上のエントリーを無効にする（４０６）。無効にされるエントリーとは、信頼コードに機密にされなければならないメモリーを識別するエントリーである。信頼コードは、オペレーティング・システムまたはハイパーバイザーを作動させて非信頼コードのために第２プロセスを作り、第１コンポーネントの複製をこの第２プロセスに割り当てる。このように最上位ページのみを複製することによって、殆ど追加のメモリーは必要にならない。
【００３１】
[0031]  図５は、オペレーティング・システムまたはハイパーバイザーのスケジューラーにおける方法の流れ図である。スケジューラー、またはスケジューリング・メカニズムは、計算デバイスにおいて現在アクティブであるプロセスを監視する（５００）。例えば、これは、図３の例ではプロセス１またはプロセス２であってもよい。スケジューラーは、プロセス間で制御を渡す必要性を検出する（５０２）。この検出は、任意の適した方法で行われる。例えば、信頼コードによってポリシーが強要(enforced)されてもよく、ポリシーが信頼コードを満たしそうもない場合、スケジューラーに制御を渡す必要性を通知する。
【００３２】
[0032]  プロセス間で制御を渡すために、スケジューリング・メカニズムは、最上位ページと最上位ページのコピーとの間で適宜切り替えるために、制御レジスターを更新する（５０４）ことができる。
【００３３】
[0033]  他の例では、スケジューリング・メカニズムはオペレーティング・システムのＡＰＩをコールして、非特権プロセスにおける非信頼コードの実行をスケジューリングし、次いで待機する。次いで、スケジューラーは、非特権コードを実行するために、非特権プロセスをスケジューリングする。非特権コードの実行が終了したとき、スケジューラーは、信頼コードの実行を継続するために、制御を特権プロセスに戻す。この時点で、図７を参照して説明するように、同期プロセスを実行することができる。
【００３４】
[0034]  図６は、オペレーティング・システムまたはハイパーバイザーのページ・フォールト・ハンドラーにおける方法の流れ図である。ページ・フォールトとは、変換データー構造において参照されたエントリーが発見されないときに発生するエラーである。これは、格納されたデーターがディスクに動かされたため、または変換データー構造の複製が適正に更新されていなかったという状況における同期エラーのためである可能性がある。図６の方法は、アプリケーション・ドメインに依存して、図７の同期方法の代わりに、またはこれと共に使用することができる。例えば、変換データー構造の更新が比較的希である場合、図６の方法を使用するとよい。ここで、同期のコストと、同期エラーによるページ・フォールトの予想数との間にトレードオフがある。図６の方法は、メモリー・ページにおけるページングに有効に作用する。これは、最上位エントリーが参照するページ・テーブルの一部がディスクに移された、動かされた、または割り当てを解除されたときには、コード・パスにおいて有効に作用しない。この場合、直ちにページ・テーブルの同期を取り続けるためには図７の方法を使用するとよく、そうでないとプロセスはいずれかのランダム・ページにアクセスするおそれがある。
【００３５】
[0035]  メモリー管理およびプロセス制御コンポーネントがページ・フォールトを検出したとき（６００）、そのフォールトが非特権コードの動作中に発生したのか否かについてチェックを行う（６０２）。そうでない場合、標準的なページ・フォールト・ハンドラーを使用し、ディスクからページをロードするかまたはエラーを報告する（６０６）ことによって、フォールト６０４を処理する。ページ・フォールトが非特権コードの動作中に発生した場合、このフォールトが変換データー構造の第１コンポーネント（例えば、最上位ページ）の共有部分において発生したか否かについてチェックを行う（６０８）。そうである場合、標準的なページ・フォールト・ハンドラー・プロセスが引き継ぐ（６０４）。そうでない場合、失われたエントリー（ページ・フォールトを発生する）が第１コンポーネントのコピー（例えば、最上位ページのコピー）内にあると推測されるか否かチェックを行う（６１０）。そうである場合、同期が行われる。これは、失われたエントリーを信頼プロセスの変換データー構造から第１コンポーネントのコピーにコピーする（６１２）ことを伴う。次いで、実行を再開する（６１４）。失われたエントリーが第１コンポーネントのコピー内にないと推測される場合、特権コード・プロセスにフォールトを報告する（６１６）。
【００３６】
[0036]  図７は、オペレーティング・システムまたはハイパーバイザーによって実行される同期方法の流れ図である。オペレーティング・システムまたはハイパーバイザーの同期メカニズムは、信頼プロセスの変換データー構造の第１コンポーネントを監視する（７００）。例えば、ページ・ツリーの最上位ページを監視する。同期メカニズムは、特権プロセスが最上位ページを変更するか否かチェックする（７０２）。そうでない場合、監視し続ける。変更がある場合、第１コンポーネントと第１コンポーネントのコピーとの間で同期を実行する。例えば、最上位ページと最上位ページのコピーとの間で同期を行う。
【００３７】
[0037]  図８は、計算ベース・デバイス例８００の種々のコンポーネントを示す。このデバイス８００は、任意の形態の計算デバイスおよび／または電子デバイスとして実現することができ、このデバイス８００において、メモリー・アドレス変換データー構造の少なくとも一部を共有する細分化特権レベルの実施形態を実現することができる。
【００３８】
[0038]  計算ベース・デバイス８００は、１つ以上のプロセッサ８０２を含む。プロセッサ８０２は、マイクロプロセッサ、コントローラ、またはプロセスがメモリー・アドレス変換データー構造の少なくとも一部を共有する状況条項において１つ以上の非信頼プロセスから信頼プロセスを保護するために、デバイスの動作を制御するコンピューター実行可能命令を処理する任意の他の適したタイプのプロセッサであってもよい。ある例では、例えば、チップ・アーキテクチャーのシステムが使用される場合、プロセッサ９０２は、ハードウェア（ソフトウェアまたはファームウェアではない）でプロセスを保護する方法の一部を実現する１つ以上の固定機能ブロック（アクセレレーターとも呼ぶ）を含むことができる。信頼コード８０６および非信頼コード８０８の双方を含むアプリケーション・ソフトウェアを本デバイスにおいて実行することを可能にするために、オペレーティング・システム８０４を含むプラットフォーム・ソフトウェアまたは任意の他の適したプラットフォーム・ソフトウェアが計算ベース・デバイスにおいて設けられるとよい。オペレーティング・システムは、細分化特権レベル８１２を有してもよい。ある例では、計算ベース・デバイス８００におけるハイパーバイザー８１０が、本明細書において説明したように形成され使用される細分化特権レベル８１２を有する。
【００３９】
[0039]  計算ベース・デバイス８００によってアクセス可能な任意のコンピューター読み取り可能媒体を使用して、コンピューター実行可能命令を供給することができる。コンピューター読み取り可能媒体は、例えば、メモリー８１０のようなコンピューター記憶媒体および通信媒体を含むことができる。メモリー８１０のようなコンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現される。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたは他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは計算デバイスによるアクセスのために情報を格納するために使用することができる任意の他の非送信媒体を含むが、これらに限定されるのではない。対照的に、通信媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波のような変調データー信号または他の移送メカニズムに具体化することができる。本明細書において定める場合、コンピューター記憶媒体は通信媒体を含まない。したがって、コンピューター記憶媒体は、それ自体が信号を伝搬すると解釈してはならない。伝搬信号がコンピューター記憶媒体内に存在することもあるが、伝搬信号自体はコンピューター記憶媒体の例ではない。コンピューター記憶媒体（メモリー８１０）は計算ベース・デバイス８００内に示されているが、ストレージは分散されまたは離れて配置され、ネットワークまたは他の通信リンクを介してアクセスされてもよい（例えば、通信インターフェース８１２を使用して）ことは認められよう。通信インターフェース８１２は、計算ベース・デバイス８００が他の計算エンティティと通信することを可能にする。
【００４０】
[0040]  また、計算ベース・デバイス８００は入力／出力コントローラ８１４も含む。入力／出力コントローラ８１４は、表示情報をディスプレイ・デバイス８１６に出力することができ、ディスプレイ・デバイス８１６は、計算ベース・デバイス８００とは別であっても、一体であってもよい。表示情報は、例えば、人間の操作員が非信頼コードおよび／または信頼コードを使用することを可能にするために、グラフィカル・ユーザー・インターフェースを提供することができる。入力／出力コントローラ８１４は、ユーザー入力デバイス８１８（例えば、マウス、キーボード、カメラ、マイクロフォン、または他のセンサー）のような１つ以上のデバイスから入力を受けて処理するように構成することができる。ある例では、ユーザー入力デバイス８１８は、音声入力、ユーザーのジェスチャー、または他のユーザー・アクションを検出することができ、自然ユーザー・インターフェース（ＮＵＩ）を設けることができる。このユーザー入力は、デバイスにおいて１つ以上のソフトウェア・アプリケーションを動作させるために使用することができる。実施形態では、ディスプレイ・デバイス８１６は、タッチ感応ディスプレイ・デバイスである場合、ユーザー入力デバイス８１８としても作用することができる。また、入力／出力コントローラ８１４は、ディスプレイ・デバイス以外のデバイス、例えば、ローカルに接続された印刷デバイスにもデーターを出力することができる。
【００４１】
[0041]  入力／出力コントローラ８１４、ディスプレイ・デバイス８１６、およびユーザー入力デバイス８１８の内任意の１つ以上がＮＵＩ技術を含んでもよい。ＮＵＩ技術は、マウス、キーボード、リモコン等のような入力デバイスによって強制される人工的な制約とは無縁に、ユーザーが「自然な」方法で計算ベース・デバイスと対話処理することを可能とする。提供することができるＮＵＩ方法の例には、音声および／または発言認識、タッチおよびスタイラス認識（タッチ感応ディスプレイ）、画面上および画面近傍双方におけるジェスチャー認識、エア・ジェスチャー(air gesture)、頭部および視線追尾、音声および発言、視覚、タッチ、ジェスチャー、ならびに機械インテリジェンスを拠り所とするものが含まれるが、これらに限定されるのではない。使用することができるＮＵＩ技術の他の例には、意思および目標理解システム、深度カメラ（立体視カメラ・システム、赤外線カメラ・システム、ｒｇｂ（赤−緑−青）カメラ・システム、およびこれらの組み合わせというようなカメラ）を使用する運動ジェスチャー(motion gesture)検出システム、加速度計／ジャイロスコープを使用する運動ジェスチャー検出、顔認識、３Ｄディスプレイ、頭部、視線および凝視追尾、没入型拡張現実および仮想現実システム、電界検知電極（脳波図（ＥＥＧ）および関係する方法）を使用して脳活動を検知する技術が含まれる。
【００４２】
[0042]  「コンピューター」または「計算ベース・デバイス」という用語は、本明細書では、命令を実行することができるように処理能力を有する任意のデバイスを指すために使用される。このような処理能力は多くの異なるデバイスに組み込まれ、したがって「コンピューター」および「計算ベース・デバイス」という用語は、各々、ＰＣ、サーバー、移動体電話機（スマート・フォンを含む）、タブレット・コンピューター、セットトップ・ボックス、メディア・プレイヤー、ゲーム・コンソール、パーソナル・ディジタル・アシスタント、および多くの他のデバイスを含むことは、当業者にはわかるであろう。
【００４３】
[0043]  本明細書において説明した方法は、有形記憶媒体上にある機械読み取り可能な形態、例えば、プログラムがコンピューター上で実行されたとき、そしてコンピューター・プログラムがコンピューター読み取り可能媒体上に具体化することができる場合、本明細書において説明した方法の内任意のものの全てのステップを実行するように構成されたコンピューター・プログラム・コード手段を含むコンピューター・プログラムの形態のソフトウェアによって実行することができる。有形記憶媒体の例には、ディスク、サム・ドライブ(thumb drive)、メモリー等のような、コンピューター読み取り可能媒体を構成するコンピューター記憶デバイスを含み、伝搬信号を含まない。伝搬信号は、有形記憶媒体内に存在することもあるが、伝搬信号自体は有形記憶媒体の例ではない。ソフトウェアは、本方法のステップを任意の適した順序でまたは同時に実行することができるように、パラレル・プロセッサーまたはシリアル・プロセッサー上における実行に相応しいものにすることができる。
【００４４】
[0044]  これは、ソフトウェアが価値のある、別個に取引可能な製品となり得ることを認める。これは、所望の機能を実行するために「ダム」(dumb)または標準的なハードウェア上で実行するソフトウェアあるいはこれを制御するソフトウェアを包含することを意図している。また、所望の機能を実行するようにシリコン・チップを設計するためまたは万能プログラマブル・チップを構成するために使用される、ＨＤＬ（ハードウェア記述言語）ソフトウェアのような、ハードウェアの構成を「記述する」ソフトウェアまたは ハードウェアの構成を定めるソフトウェアを包含することも意図している。
【００４５】
[0045]  尚、プログラム命令を格納するために利用される記憶デバイスは、ネットワークにわたって分散させることができることは、当業者には理解できよう。例えば、リモート・コンピューターが、ソフトウェアとして記述されたプロセスの一例を格納してもよい。ローカルまたは端末コンピューターが、リモート・コンピューターにアクセスし、プログラムを実行するために、ソフトウェアの一部または全部をダウンロードしてもよい。あるいは、ローカル・コンピューターが必要に応じてソフトウェアの断片をダウンロードしてもよく、またはローカル端末において一部のソフトウェア命令を実行し、リモート・コンピューター（またはコンピューター・ネットワーク）において一部を実行してもよい。また、当業者には周知である従来の技法を利用することによって、ソフトウェア命令の全部または一部が、ＤＳＰ、プログラマブル・ロジック・アレイ等のような専用回路によって実行されてもよいことも、当業者には理解できよう。
【００４６】
[0046]  当業者には明白であろうが、本明細書において示した範囲またはデバイス値はいずれも、求められる効果を失うことなく、広げることまたは変更することもできる。
[0047]  以上、構造的特徴および／または方法論的アクトに特定的な文言で主題について説明したが、添付した特許請求の範囲において定められる主題は、以上で説明した特定の特徴やアクトに必ずしも限定されないことは理解されてしかるべきである。逆に、以上で説明した特定の特徴やアクトは、特許請求の範囲を実現する形態例として開示したまでである。
【００４７】
[0048]  尚、以上で説明した便益および利点は、１つの実施形態に関係してもよく、または様々な実施形態に関係してもよいことは理解されよう。実施形態は、先に述べた問題の内いずれかを解決するものにも、全てを解決するものにも、また先に述べた便益や利点の内いずれかを有するものにも、全てを有するものにも限定されない。更に、「１つの」項目に言及するときは、１つ以上のそれらの項目に言及するということも理解されよう。
【００４８】
[0049]  本明細書において説明した方法のステップは、任意の適した順序で実行されても、または該当する場合には同時に実行されてもよい。加えて、個々のブロックは、本明細書において説明した主題の主旨や範囲から逸脱することなく、これらの方法のいずれからも削除されてもよい。以上で説明した例はいずれも、求められる効果を失うことなく更に他の例を形成するために、その態様を、説明した他の例の任意の態様と組み合わせることができる。
【００４９】
[0050]  「含む」(comprising)という用語は、本明細書では、識別された方法のブロックまたはエレメントを含むが、このようなブロックまたはエレメントが排他的リストを構成するのではなく、方法または装置が追加のブロックまたはエレメントを含んでもよいことを意味するために使用される。
【００５０】
[0051]  尚、以上の説明は一例として挙げたに過ぎず、当業者によって種々の変更が成されてもよいことは理解されよう。以上の明細書、例、およびデーターは、実施形態例の構造および使用についての完全な説明を示す。以上ある程度の特定性をもって、または１つ以上の個々の実施形態を参照して、種々の実施形態について説明したが、当業者であれば、本明細書の主旨や範囲から逸脱することなく、開示された実施形態に対して多数の改変を行うことができよう。
【図１】
2017511938.tif 000003
【図２】
2017511938.tif 000004
【図３】
2017511938.tif 000005
【図４】
2017511938.tif 000006
【図５】
2017511938.tif 000007
【図６】
2017511938.tif 000008
【図７】
2017511938.tif 000009
【図８】
2017511938.tif 000010
【国際調査報告】
2017511938.tif 000011
2017511938.tif 000012