JP4467249B2 - アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御 - Google Patents

アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御 Download PDF

Info

Publication number
JP4467249B2
JP4467249B2 JP2003112225A JP2003112225A JP4467249B2 JP 4467249 B2 JP4467249 B2 JP 4467249B2 JP 2003112225 A JP2003112225 A JP 2003112225A JP 2003112225 A JP2003112225 A JP 2003112225A JP 4467249 B2 JP4467249 B2 JP 4467249B2
Authority
JP
Japan
Prior art keywords
request
resource
resources
source
guard
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003112225A
Other languages
English (en)
Other versions
JP2003330799A (ja
Inventor
ペイナード マーカス
イングランド ポール
マーク ウィルマン ブライアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/124,609 external-priority patent/US6986006B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2003330799A publication Critical patent/JP2003330799A/ja
Application granted granted Critical
Publication of JP4467249B2 publication Critical patent/JP4467249B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Description

【0001】
【発明の属する技術分野】
本発明は、一般的には、計算機の分野に関し、さらに具体的には、コンピュータメモリのような、アドレス指定可能なエンティティ (実体、構成要素) へのアクセスを制限する技法に関する。
【0002】
【従来の技術】
汎用コンピュータの1つの特徴は、無制限にわたる、多数の機能を実行できることであり、これは疑いのない利点でもある。コンピュータは、コンピュータが実行できる命令セットをもっている。プログラマは、その物理的能力の範囲内にあれば、例えば、数学的計算、データの保管/取り出し、入出力、暗号化/解読、などの、どのようなタスクでも、そのタスクを実行する命令(つまり、プログラム)をコンピュータに与えるだけでコンピュータに実行させることができる。コンピュータの無限の汎用性は、人間が活動するほとんどすべての分野にとって恩恵となっているが、この汎用性は欠点にもなっている。すなわち、コンピュータはほとんどどの機能でも実行できるので、正しいことだけでなく、誤ったことも実行するように指示できるからである。銀行取引を実行するように、あるいは企業機密へのアクセスを制限するように、あるいは著作権保護情報のライセンス条項を実施するようにプログラムされている同じコンピュータは、顧客の銀行口座に侵入し、あるいは企業機密を暴露し、あるいは著作権で保護されたコンテンツを違法に複写するようにプログラムすることも可能になっている。コンピュータに委ねられているどの機能も、コンピュータの機能に無制限にアクセスできる悪意のプログラマによって妨害される可能性がある。従って、このような妨害に強いコンピュータを構築する作業は、コンピュータの資源(資源)の一部へのアクセスを制限するような形で行われることがよくあり、その結果、これらの資源は、適切な状況の時だけ使用できるようにしている。
【0003】
アクセスを制限させることができる重要な資源の集合は、例えば、コンピュータのメモリ、レジスタなどように、データを格納している資源の集合である。これらのデータ記憶資源は、商業的に重要な情報を保護する暗号鍵などの、貴重データや機密データ、あるいは銀行口座へのアクセスを保護するパスワードをストアしておくことができる。この種のデータが存在することは、そのデータをコンピュータで使用するときのジレンマになっている。例えば、暗号を使用して情報を保護するコンピュータは、その情報を解読する暗号鍵(またはその鍵の少なくとも一部の表現)を知っていなければならず、正当な状況の下でその鍵を使用して情報を解読できなければならない。しかし、コンピュータは、その鍵への無制限なアクセスを与えることができない。さもないと、不正な人がその鍵のコピーを世界中の人々に簡単に配信することが可能になり、そのことが保護体系を破壊することになるからである。同じことは、パスワード、企業機密、さらには、鍵、パスワード、および機密を保護するコードといった、種々タイプの情報にも当てはまる。コンピュータは、情報が合法的に使用されるように情報をメモリに置いておくことが要求されるが、コンピュータはこの情報を違法または悪意の使用から保護しなければならない。以上の例から明らかであるように、コンピュータのメモリ(または他のデータ記憶資源)の一部は、付帯情況が正当であるときはアクセスが許可され、付帯情況がそうでないときはアクセスが拒否されるように非常線を張っておくと、かなりのコンピュータセキュリティを達成することができる。このように非常線が張られた資源は、「カーテンが張られたメモリ(curtained memory)」と呼ばれることがある。
【0004】
データストレージへのアクセスが少なくとも幾分か制限されている種々のシステムが存在している。例えば、大部分の最新オペレーティングシステムは、「アドレス空間(address space)」という考え方を取り入れており、そこでは、各プロセスには、そのプロセスがその仮想メモリマッピングを通してアクセスできる物理メモリの中の、あるページまたはセグメントが割り当てられており(これは連続的変更方式で行われているのが一般である)、あるプロセスは、別のプロセスのアドレス空間に置かれているページ(またはセグメント)にアクセスできないようにしている。メモリのある部分にアクセスできるのは、そのメモリ部分が属しているプロセスからアクセス要求が出されたときに限られているので、ある意味では、この方式はメモリへのアクセスを制限している。しかし、この方式は容易に覆されている。一部のプロセッサでは、物理メモリに直接アクセスすることを可能にしているため(つまり、仮想メモリマッピングを使用しないで)、プロセスは、所定の物理アドレスがそのプロセスのアドレス空間に割り当てられていたかどうかに関係なく、その物理アドレスにアクセスする命令を簡単に実行することが可能になっている。大部分のメモリの直接物理アドレスシングを許していないプロセッサにおいてでさえ(例えば、INTEL x86ファミリのプロセッサ)、仮想メモリマッピングは、アクセス可能なメモリに格納されているのが一般であるため、プロセスは、そのプロセスがアクセスするとは思われない物理アドレスをポイントするように仮想メモリマッピングを変更するだけで、そのアドレス空間の外部のメモリにアクセスできるようになっている。
【0005】
一部のシステムは、各アクセス要求を許可し得るかどうかを評価してから要求が実行されるようにすることによって、無許可アクセスを防止することを試みている。例えば、プロセッサは、例外ハンドラが各メモリアクセス要求を評価できるようにすべてのメモリアクセス命令を捕捉することが可能になっている。しかし、すべてのアクセス要求は評価を待ってからでなければ、先に進むことができないので、このようなシステムは本来的に非効率である。
【0006】
【発明が解決しようとする課題】
必要とされているものは、資源へのアクセス制限を保証し、永続化することを可能にする論理的条件をどのように定義するかということと、各アクセス要求を個別的に評価しなくても、これらの論理的条件を利用することによって資源へのアクセスを制御できるシステムである。このようなシステムは、従来技術では実現されていない。
【0007】
【課題を解決するための手段】
本発明は、コンピュータメモリのような、資源へのアクセスを制御する技法を提供している。本発明では、資源にアクセスする一部の要求は許可し得るが、他の要求は許可し得ないとするポリシ(policy:約束事)が存在することを前提としている。本発明によれば、ポリシの下で許可し得ないアクセス要求は拒否し、実行されたとき、ポリシの下でアクセスが許可し得ない資源が仮想アドレスを持つことになるアクセス要求も拒否することによって、資源へのアクセスを制御している。後者の制約は、仮想アドレスを持つ資源だけが、ポリシによりアクセスが許可される資源となる状態(状態)に資源が常にあることを保証している。従って、その仮想アドレスによって資源を特定しているある種のアクセス要求は、以後の評価なしでも許可できるのは、資源が仮想アドレスをもつということが、少なくともある種のアクセスがポリシの下で許可し得ることを意味しているからである。
【0008】
本発明によれば、どの資源が仮想アドレスを持つことができるかに制約を設ける「不変条件(invariant condition)」が定義されている。この条件が不変であるというのは、資源が初期化されるとき条件が真(true)となるべきものであり、すべてのアクセス要求に続いて真であり続けるべきものである(マシンが初期状態から到達できるすべての状況において)、という意味においてである。アクセス要求は、次に、2つの基準に従って評価される。第一に、関係するポリシPが要求された資源へのアクセスを禁止していれば、アクセス要求は拒否される。第二に、アクセス要求が実行されたとき不変条件に違反するときは、アクセス要求は拒否される。この第2条件は、要求がポリシPの下で許可し得る場合であっても、ある種の要求を拒否させることがある。この意味で、本発明によれば、少なくともPと同じように制限的であるポリシP’が実施されている。
【0009】
資源が不変条件を満足する状態に保たれているときは、ある種のアクセス要求は、もっと効率的に評価することができる。例えば、所定のソースがポリシの下でアクセスすることを許されていない資源についての仮想アドレスを持っていないことが不変条件となっている場合は、アクセスがポリシの下で許されている資源だけに対して仮想アドレスを持っているので、また読み取りオペレーションは、不変条件が真でない状態へシステムの状態を変更できないのが一般的であるので、仮想アドレスで資源を特定している読み取り要求は、以後の評価なしで許可されることが可能になる。従って、この例示の不変条件は、読み取り要求の評価を最適化することを可能にする。他の不変条件を定義することも可能である。つまり、どの不変条件を選択するかに応じて、異なったタイプの最適化が可能である。
【0010】
本発明が可能にする最適化は、「選択的フィルタリング(selective filtering)」の形体にすることができる。このフィルタリングは、アクセス要求が許可されるかどうか(つまり、ポリシP’の下の許可条件を満足しているかどうか)の最終的判断が評価するには複雑になるとの所見に基づいているが、一部の(または多数の)アクセス要求を判断するのに十分である種々の条件を特定することも可能である。このことが特に当てはまるのは、正しい不変条件が選択されるときである。上記の例では、不変条件は、読み取られるべき資源をその仮想アドレスで特定していれば、許可されるべき読み取り要求を自動的に許可する。従って、どのアクセス要求も、その要求がそのような読み取り要求であるかどうかを判断するために、最初に評価することができる。その質問に対する答えが否定であれば、システムは、もっと複雑な基準に従って要求を評価することができる。他のタイプの要求(例えば、書き込み要求)の評価を効率化する他の不変条件を選択することもできる。
【0011】
本発明のその他の特徴は、以下に説明されている。
【0012】
上述した要約説明と後述する好適実施形態の詳細説明の理解を容易にするために、以下では、添付図面を参照して説明することにする。本発明を説明する便宜上、図面には、本発明の構造が例示されている。しかし、本発明は、以下に開示されている具体的方法とその実現手段に限定されるものではない。
【0013】
【発明の実施の形態】
図1は、本発明の態様を実現することができる例示のコンピューティング環境を示す図である。このコンピューティングシステム環境100は、適当なコンピューティング環境の単なる一例であり、本発明の使用または機能の範囲を限定することを意味するものではない。また、このコンピューティング環境100は、例示動作環境100に示されているコンポーネントの任意の1つまたは組み合わせに関して依存関係または要求条件があることを意味するものでもない。
【0014】
本発明は、他の多数の汎用または特殊目的コンピューティングシステム環境または構成と共に動作可能である。本発明で使用するのに適している、周知のコンピューティングシステム、環境、および/または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、組み込みシステム、上記システムまたはデバイスのいずれかを含んでいる分散コンピューティング環境、などがあるが、これらに限定されない。
【0015】
本発明は、プログラムモジュールのように、コンピュータによって実行されるコンピュータ実行可能命令という広いコンテキストの中で説明されている。一般的に、プログラムモジュールの中には、特定のタスクを実行し、あるいは特定の抽象データ型を実装しているルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などが含まれている。本発明は、通信ネットワークや他のデータ伝送媒体を通してリンクされているリモート処理デバイスによってタスクが実行されるような、分散型コンピューティング環境で実施することも可能である。分散型コンピューティング環境では、プログラムモジュールおよび他のデータは、メモリストレージデバイスを含む、ローカルとリモートの両方のコンピュータストレージ媒体に置いておくことができる。
【0016】
図1を参照して説明すると、本発明を実現するための例示システムは、コンピュータ110の形体をした汎用コンピューティングデバイスを含んでいる。コンピュータ110のコンポーネントとしては、処理ユニット120、システムメモリ130、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット120に結合しているシステムバス121があるが、これらに限定されない。システムバス121は、数種のバス構造のいずれかにすることが可能であり、その中には、種々のバスアーキテクチャを採用しているバスまたはメモリコントローラ、周辺(周辺)バス、およびローカルバスが含まれている。バスアーキテクチャの例を挙げると、インダストリスタンダードアーキテクチャ (Industry Standard Architecture − ISA) バス、マイクロチャネルアーキテクチャ (Micro Channel Architecture − MCA) バス、拡張ISA (Enhanced ISA − EISA) バス、ビデオエレクトロニクススタンダードアソシエーション (V識別子eo Electronics Standards Association − VESA) ローカルバス、および周辺コンポーネント相互接続 (Peripheral Component Interconnect − PCI) バス(Mezzanine(中2階)バスとも呼ばれている)があるが、これらに限定されない。
【0017】
コンピュータ110は、種々のコンピュータ可読媒体を実装しているのが代表的である。コンピュータ可読媒体は、利用可能で、コンピュータ110によってアクセス可能な媒体であれば、どの媒体にすることも可能であり、その中には、揮発性と不揮発性の両方の媒体、取り外し可能と取り外し不能の両方の媒体が含まれている。コンピュータ可読媒体の例を挙げると、コンピュータストレージ媒体と通信媒体があるが、これらに限定されない。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの、情報をストアするためのいずれかの方法またはテクノロジで実現されている揮発性と不揮発性の両方の取り外し可能媒体と取り外し不能媒体がある。コンピュータストレージ媒体の中には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリテクノロジ、CDROM、デジタル多目的ディスク (digital versatile disk − DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは必要とする情報をストアするために使用できて、コンピュータ110によってアクセス可能である他の媒体が含まれているが、これらに限定されない。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波や他のトランスポートメカニズムなどの変調データ信号の形で具現化しているのが代表的であり、その中には、任意の情報配信媒体が含まれている。ここで、「(被)変調データ信号(modulated data signal)」という用語は、その特性の1つまたは2つ以上が信号に含まれる情報を符号化するような形でセットまたは変更されている信号を意味している。通信媒体の例を挙げると、布線式ネットワークや直接ワイヤド接続のようなワイヤド媒体、および音響、RF、赤外線などのようなワイヤレス媒体があるが、これらに限定されない。上に挙げたものを組み合わせたものも、コンピュータ可読媒体の範囲に含まれることは当然である。
【0018】
システムメモリ130には、揮発性および/または不揮発性メモリが含まれており、そのようなものとして、読取専用メモリ (read only memory − ROM)131とランダムアクセスメモリ (random access memory − RAM)132がある。スタートアップ時(起動時)のときのように、コンピュータ110内のエレメント(要素)間で情報を転送するのを支援する基本ルーチンで構成された基本入出力システム (basic input/output system − BIOS)133は、ROM131に格納されているのが代表的である。RAM132には、処理ユニット120に即時にアクセス可能であり、および/または現在の処理ユニット120によって操作の対象となっているデータおよび/またはプログラムモジュールが置かれているのが代表的である。一例として、図1には、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137が示されているが、これらに限定されない。
【0019】
コンピュータ110は、その他の取り外し可能または取り外し不能で、揮発性または不揮発性のコンピュータストレージ媒体を装備することも可能である。図1には、取り外し不能で不揮発性の磁気媒体との間で読み書きを行うハードディスクドライブ141、とはずし可能で不揮発性の磁気ディスク152との間で読み書きを行う磁気ディスクドライブ151、およびCD−ROMや他の光媒体などの、取り外し可能で不揮発性の光ディスク156との間で読み書きを行う光ディスクドライブ155が示されているが、これは単なる一例である。例示の動作環境で使用できる、他の取り外し可能または取り外し不能で、揮発性または不揮発性のコンピュータストレージ媒体としては、磁気テープカセット、フラッシュメモリカード、デジタル多目的ディスク、デジタルビデオテープ、ソリッド状態RAM、ソリッド状態RAM、などがあるが、これらに限定されない。ハードディスクドライブ141は、インタフェース140のような、取り外し不能メモリインタフェースを通してシステムバス121に接続されているのが代表的であり、磁気ディスクドライブ151と光ディスクドライブ155は、インタフェース150のような、取り外し可能メモリインタフェースによってシステムバス121に接続されているのが代表的である。
【0020】
上述し、図1に図示されているドライブとそれぞれに関連するコンピュータストレージ媒体はストレージとして、コンピュータ110のためのコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータを格納している。図1には、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納しているものとして示されている。なお、これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであることもあれば、別のものであることもある。ここで、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147に異なる番号が付けられているのは、最低限でも、これらが別のコピーであることを示すためである。ユーザは、キーボード162および一般にマウス、トラックボールまたはタッチパッドとも呼ばれているポインティングデバイス161などの、入力デバイスを通してコマンドと情報をコンピュータに入力することができる。その他の入力デバイス(図示せず)としては、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、などがある。これらとその他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース160を通して処理ユニット120に接続されていることがよくあるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス (universal serial bus − USB) などの、他のインタフェースとバス構造によって接続することも可能である。モニタ191または他のタイプのディスプレイも、ビデオインタフェース190のような、インタフェースを介してシステムバス121に接続されている。モニタのほかに、コンピュータは、スピーカ197やプリンタ196などの、他の周辺出力デバイスを装備することもでき、これらの出力デバイスは出力周辺インタフェース190を通して接続可能になっている。
【0021】
コンピュータ110は、リモートコンピュータ180のような、1つまたは2つ以上のリモートコンピュータとの論理コネクションを使用するネットワーク環境で動作させることができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードにすることが可能であり、図1にはメモリストレージデバイス181だけが示されているが、コンピュータ110に関して上述したエレメントの多くまたは全部を装備しているのが代表的である。図1に示す論理コネクションとしては、ローカルエリアネットワーク (local area network − LAN)171と広域ネットワーク (w識別子e area network − WAN)173があるが、他のネットワークを含むことも可能である。このようなネットワーク環境は、オフィス、企業内コンピュータネットワーク、イントラネットおよびインターネット (the Internet) で普及している。
【0022】
LANネットワーク環境で使用されるときは、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を通してLAN171に接続されている。WANネットワーク環境で使用されるときは、コンピュータ110は、インターネットなどの、WAN173上のコミュニケーションを確立するためのモデム172や他の手段を装備しているのが代表的である。モデム172は内蔵型と外付け型があり、どちらも、ユーザ入力インタフェース160または他の該当メカニズムを介してシステムバス121に接続されている。ネットワーク環境では、コンピュータ110に関連して上述したプログラムモジュールまたはその一部は、リモートのメモリストレージデバイスに置いておくことが可能である。図1には、リモートアプリケーションプログラム185がメモリデバイス181に置かれているものとして示されているが、これは単なる例であり、これに限定されない。当然に理解されるように、図示のネットワークコネクションは例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することも可能である。
【0023】
アクセス制御のモデル
本発明の目的上、アクセス制御の問題は、次のようにモデル化することができる。
・ 資源の集合
・ ソースの集合
・ アクセスモードの集合
・ ガードの集合
このモデルでは、アクセス要求は組(r,s,a,p) で表されている。ただし、
・ rは、アクセスが要求された資源であることを示している。
・ sは、アクセス要求のソースであることを示している。
・ aは、アクセスモードであることを示している。
・ pは、アクセス要求のオプションパラメータであることを示している。
【0024】
上記モデルの1つの例は、メモリにアクセスする要求を評価し、処理するコンピュータ(例えば、図1に示すコンピュータ110)である。例えば、コンピュータのRAM(図1に示すエレメント132)またはその個別バイト(またはワードまたはダブルワード)は、アクセスを要求できる「資源」となることができる。コンピュータのレジスタは、この「資源」の別の例である。コンピュータ上で実行されるプロセスは、アクセス要求を出すことができる「ソース」の例である。「アクセスモード」は、「読み取り(read)」または「書き込み(write)」にすることができる(これは、ソースが読み取りまたは書き込みの目的のために資源にアクセスするのを望んでいるのかどうかを示している)。(このモデルの1つの変形では、アクセスモードが省かれているが、その場合には、要求されるアクセスは全権になっている。)書き込み要求では、資源に書かれる(つまり、そこにストアされる)値は、要求の「パラメータ」にすることができる。CPU(つまり、図1に示す処理ユニット120)は、あるレジスタへの書き込み要求やRAM132のある部分への書き込み要求を捕捉し、またはその欠陥を見つけて、要求の明細と付帯情況に基づいて要求が許可またはブロック(阻止)されるように構成できるという意味で、資源の「ガード(guard)」(守護)の働きをすることができる。上述したモデルは、コンピュータに応用した場合を想像すると好都合であるが、当然に理解されるように、このモデルは論理的に自己完結的 (self-contained) であるので、物理的な類推をしなくても、それが完成されたものであることを知ることができる。従って、当然に理解されるように、本発明は、コンピュータまたは他の特定タイプのデバイス内で出されるアクセス要求に限定されるものではなく、上述したモデルに従うどのコンテキストにも適用される。
【0025】
「ポリシ」は、どのアクセス要求が許可し得るかを記述しているルールと条件のシステムであり、許可されたアクセス要求に関連してとらなければならない、アクションの集合を定義することも可能になっている。従って、ポリシは、そのドメイン(定義域)がアクセス要求の集合(他の情報であることもある。なお、これは、以下で説明するように、「環境」と総称することができる)であり、その範囲がブール値の「真」(要求は許可し得る)または「偽」(要求は許可し得ない)である関数を、要求に関連してとらなければならないアクションと共に定義している。例えば、ポリシは、ソースs1はどの状況の下でも、資源r7にアクセスすることが許されないと規定することができる。従って、(r7,s1,a,p)形式の要求に適用されるポリシは「偽」の値(許可し得ない)をもつことになる。別の例として、ポリシは、CPUがカーネルモード(Karnel mode)で動作していることきはどの資源にもアクセスできると規定することができる。従って、カーネルモードで行われたどの要求も、「真」の値(許可し得る)をもつことになる。要求と関連付けることができる「アクション」の例として、要求を許可すると、新ソースs’が以前は制限されていた資源へのアクセス権を取得できるようにポリシを変更することになったとき、資源の値をゼロにセットする場合がある。
【0026】
「ガード(guard)」は、ポリシに基づいて資源へのアクセスのゲートの働きをする。従って、アクセス要求が許可される前に、要求された資源のガードは、その要求を検査し、要求を許可すべきかどうかを利用可能なポリシ記述に基づいて判断する。実際には、ポリシはガードに実装されている。
【0027】
ガードは、ポリシ要求ごとにポリシ機能を評価し、アクセスを許可するか、許可しないかをその機能に基づいて行うハードウェアまたはソフトウェアコンポーネントにすることができる。別の方法として、ポリシ全体の一部(「サブポリシ」)をガードに実行させることも可能である。例えば、ガードは、あるクラスのアクセス要求を判断するのに十分である、ある種の条件に基づいて高速に評価できるアクセス要求を許可または拒否するように設計することもでき(例えば、CPUがカーネルモードで動作しているときすべてのアクセス要求を許可し得るものとするポリシの下で、そのようなアクセス要求をすべて許可するガードなど)、もっと複雑な評価を必要とする要求を他のガードに任せることができる。(以下で説明するように、このようなガードの集合は、ガードが「サブカード」から構成されている場合で、各サブガードがある種のクラスのアクセス要求を判断し、他の要求を次のサブガードに渡していくような場合には、シングルガードがポリシを実装していると言っても同じである。)さらに、要求を評価するためにアクションが要求されない場合があり、その場合には、ガードが暗に存在しているときである。例えば、あるクラスのアクセス要求全体が許可し得る(または許可し得ない)ように条件がセットアップされていたときは、ガードは、要求を評価するためにどのアクションもとらないで済むことになる。それにもかかわらず、このような条件が存在すると、資源へのアクセスがポリシによって許可されているときだけ取得されることが保証されるので、この条件の存在は「潜在的」ガードを構成している。このタイプのアクセス制御を可能にする条件の例は、図7とそれ以降の図を参照して以下に説明されている。
【0028】
図2は、ガードに実装されているポリシが存在しているとき、アクセス要求がどのように処理されるかを示す例である。資源202(1)、202(2)、...、202(n)(資源202と総称する)は、そこへのアクセスが許可または拒否されるエンティティである。ソース204(1)、204(2)、...、204(m)(ソース204と総称する)は、資源202に対するアクセス要求を出すことができるエンティティである。ガード206(1)、206(2)、...、206(k)(ガード206と総称する)は、資源202へのアクセスのゲートの働きをするエンティティである。
【0029】
1つの例では、ソース204(2)は資源202(2)にアクセスする要求210を出している。ガード206(1)は要求210を評価する。要求210を評価するとき、ガード206(1)は要求210に関連する値r,s,a,およびpを考慮することができ、オプションとして、環境208を考慮する。(環境208は、r,s,a,およびp以外の情報を含んでいる場合がある。例えば、プロセッサが動作しているときのモード、現在ログインしているユーザの識別子、時間、温度、月相、など)ガード206(1)は、要求210が適用されるポリシの下で許可し得ると判断するので、ガード206(1)は資源202(2)へのアクセスを許可する。
【0030】
別の例では、ソース204(m)は、資源202(n)にアクセスする要求212を出している。ガード206(k)は要求212を評価し、その要求が適用されるポリシの下で許可し得ないと判断する。従って、ガード206(k)は要求212を拒否するので、資源202(n)にアクセスするソース204(m)の試みは失敗する。
【0031】
以上から理解されるように、ガード206(1)が要求210を評価するために選択される理由およびガード206(k)が要求212を評価するために選択される理由はさまざまである。例えば、資源202(2)にアクセスするすべての要求、またはソース204(2)から出されたすべての要求の評価をガード206(1)に任せことも、ある要求は、別の要求の処理に使用中でないガードにランダムに任せることもできる。同じようなルールで要求212をガード206(k)に評価させることもできる。別の方法として、ガードの各々が、ポリシの若干異なる部分を実装することもできるので、各要求が許可されるか、あるいはすべてのガードが使用尽くされるまで、各要求を一定の順序でガードの1つひとつに通していくことができる。例えば、ガード206(1)は、ある単純な基準に基づいて許可できるすべての要求を許可するように設計できるので、その基準を満たさない要求を、他のガード206(2)−206(k)に順次に渡していって評価させることができる。別の方法として、すべてのアクセス要求をシングルガードに評価させることも可能である。
【0032】
アクセスとアクセス制御が行われるマシンのモデル
これまでの議論では、資源の抽象的概念を説明し、資源の具体的例として、コンピュータメモリとレジスタを示してきた。以下では、「アドレス指定可能なエンティティ(addressable entity)」と呼ばれる特定タイプの資源(または資源の集合)について正式に議論することにする。以下の説明から理解されるように、コンピュータメモリ、レジスタ、ディスク、およびテープは、すべてアドレス指定可能なエンティティの例である。前述の議論の中で述べたように、アクセス要求は (r,s,a,p) で与えられ、そこには特定資源rの識別子が含まれている。アドレス指定可能なエンティティは、特定資源がどのようにして識別または「アドレス指定」されるかのモデルを提供している。
【0033】
このモデルの目的上、V、A、およびMという項は、次のように使用されている。
・ Vは任意の集合である。
・ Aは任意の集合である。
・ Mは任意の集合である。
これらは離散的にすることができるが、必ずしもそうである必要はない。つまり、ある集合のメンバは、他の集合の中に現れることも、現れないこともある。
【0034】
図3は、集合V、A、およびMの例である。集合302はV、集合304はA、および集合306はMである。図3の例では、Vは大文字(A−Z)の集合、Aは小文字(a−z)の集合、Mは数字(0−9)の集合である。
【0035】
アドレス指定可能なエンティティはAからMへの変更可能マッピングである。つまり、任意の瞬時において、アドレス指定可能なエンティティは、f(a) = となるように関数f: A→Mを定義している。ただし、a∈A、およびm∈Mである。このマッピングが変更可能であるのは、マッピングが変化するからである。図3はアドレス指定可能なエンティティ312を示しているが、これは集合304(A)から集合306(M)へのマッピングである。従って、Aの任意のエレメントが与えられているとき(例えば、小文字の"k")、アドレス指定可能なエンティティ312は、Mの特定エレメント(例えば、数字の"7")を示している。(アドレス変換メカニズム310は、少なくともVからAへの部分的変更可能マッピングを定義している。なお、アドレス変換メカニズム310は以下に詳しく説明されている。)
【0036】
単純な例として、アドレス指定可能なエンティティ312は、AのメンバをMのメンバと相関付けるテーブルと見ることができる。図4は単純なアドレス指定可能なエンティティ312(1)を示し、そこではテーブルの各行には、左側にAのメンバが、右側にMのメンバが入っている。従って、図4の例において、fがアドレス指定可能なエンティティ312(1)によって定義された関数であるとすると、f(‘a’)= 17, f(‘b’)= 6, f(‘c’)= 3、以下同様になる。(図4乃至図6の説明において、単一引用符で囲まれた記号’a’、’b’、および’c’は、図3に図示の例示集合Aのメンバである小文字のことを示している。実際には、アドレス指定可能なエンティティ312(1)を定義しているテーブルの各行は「資源」である。
【0037】
図3に戻って説明すると、アドレス指定可能なエンティティ312の物理的な例はコンピュータメモリである。(図1に図示のRAMは、このコンピュータメモリの例である。)図3に図示の集合AとMの代わりに、Aは0から228-1までの整数の集合(これは、256メガバイトのランダムアクセスメモリのときの個別バイトアドレスを表している)であり、Mは0から255までの整数の集合(これは、1バイトのメモリにストアできる256個の異なる値を表している)であるとする。この場合には、メモリは、AからBまでのマッピングを物理的に具現化している。つまり、0から228-1までのいずれかのアドレスが与えられているとき、メモリは、256個の異なる1バイト整数のどれがそのアドレスにストアされているかを示している。メモリがAのエレメントをMのエレメントにマッピング(写像)しているという意味は、メモリは、任意の瞬時において、MのどのエレメントがAの特定エレメントに対応しているかを定義しているからである。さらに、マッピングが「変更可能」であるという意味は、新しい値をメモリに書き込むとマッピングが変更されるからである。同様に、レジスタ、ディスク、テープ、パンチカード、およびデータをストアできる他の、大部分の媒体も、アドレス指定可能なエンティティの例である。レジスタは、そのレジスタ番号によってアドレス指定することができる。ディスク上のバイトは、そのトラック、セクタ、およびオフセットによってアドレス指定することができる。テープ上のバイトは、特定のマーカからのオフセットによってアドレス指定することができる。パンチカード上のバイトは、既知のデックにおけるカードのシーケンスとカードの左側からのバイトのオフセットによってアドレス指定することができる。なお、当然に理解されるように、「アドレス指定可能なエンティティ」という用語には、上述したマッピングを具現化している何らかの機構が含まれることであって、コンピュータメモリや上述したデバイスのいずれにも限定されない。
【0038】
アドレス指定可能なエンティティは、次の2つのアクセスオペレーションを受ける。
・ 読み取り:A→M。機能的には、read(a) return f(a)
・ 書き込み:AxM
fがA→Mマッピングによって定義された関数であれば、機能的にread (a) return f(a)。ただし、a∈A。(前記センテンスにおいて、記号"a"は、上述した要求(r,s,a,p)におけるように、アクセスモードではなく集合Aのエレメントを示している。このことがコンテキストから明らかでない個所では、記号"a"がどのような意味をもつかを示している。)代表例として、書き込み関数はマッピングA→Mに変更する。従って、write(a,m)(a∈A, m∈Mのとき)は、f(a) = mになるように関数fを変更する。さらに、write(a,m)が実行されると、a’≠aのときf(a’)が変更されることがあり、もっと一般的には、f(a) = mをセットするのとは別の、なんらかの変更が行われることになる。代表例として、write(a,m)が実行されると、オペレーションread(a) return mが実行されることになる(m’≠mのときwrite(a,m’)が途中に介在していないものと想定している)。なお、アドレス指定可能なエンティティの概念は、どの特定のセマンティックス集合に限定されない。図5と図6を参照して説明すると、単純なアドレス指定可能なエンティティ312(1)で書き込みオペレーション502 ("write(‘b’,14)")が実行されると、その集合"A"の値が’b’である行で値"6"が"14"に変更されるので、マッピングは312(1)に変更されることになる。読み取りオペレーション602 ("read(‘b’)")がその後でマッピング312(1)‘で実行されたときは、書き込みオペレーション502は、集合Aのエレメント’b’が集合Mのエレメント"14"にマッピングするようにオリジナルのマッピング312(1)を変更しているので、この読み取りオペレーションからは値"14"が戻されることになる。上述したように、書き込みオペレーションの後に続く読み取りオペレーションが、書き込みオペレーションで書き込まれた値を戻すことを可能にするセマンティックス(意味論)はアドレス指定可能なエンティティの単なる例であり、限定的なものではない。以下では、読み取りオペレーションと書き込みオペレーションが異なるセマンティクスをもつアドレス指定可能なエンティティの例について説明する。
【0039】
以下は、アドレス指定可能なエンティティのいくつかの実在(real world;現実世界ともいう)の例である。
【0040】
・ 物理的ランダムアクセスメモリ(例えば、図1に図示のRAM132)。このタイプのアドレス指定可能なエンティティは、上で言及したセマンティックスをもっている。すなわち、書き込みオペレーションはマッピングを変更するために使用され、write(a,m)のあとにread(a) return mが続いている。図7は、RAM132をアドレス指定可能なエンティティとした例である。この例では、RAM132は、228バイトからなり、各バイトは0から228-1までの範囲の物理アドレスをもっている。物理アドレスは集合Aに対応しており、これらのアドレスにストアできる取り得るバイト値は集合Mに対応している。この例では、値17はアドレス0にストアされ、6はアドレス1にストアされ、137はアドレス2にストアされており、以下同様である。
【0041】
・ 制御レジスタ。このタイプのアドレス指定可能なエンティティでは、書き込みオペレーションは、指示されたアドレスでfを変更する以上の構成のために使用されるのが代表的である。例えば、チップセットまたはペリフェラレルの制御機器またはデータレジスタに書き込みを行うと、サウンドカードのサウンドが再生または変更されるか、あるいはビデオディスプレイが変更されるか、マシン状態が基本的な方法で変更されることがある。図8は、いくつかの例示制御レジスタを備えたコンピュータを示している。コンピュータ110は、オーディオコントロール802、ビデオコントロール804、CPUコントロール806、およびその他のコントロール808を備えている。これらの制御レジスタの各々はアドレス指定可能なエンティティである。例えば、オーディオコントロール802に値を書き込むと、サウンドカード821のサウンドが変更されることがある。ビデオコントロール804に値を書き込むと、ビデオカード822によって管理されている何らかの態様(例えば、ディスプレイの解像度)が変更されることがある。CPUコントロール806に値を書き込むと、処理ユニット120の振る舞いの何らかの態様が変更されることがある。例えば、カーネルモードからユーザモードへの変更または処理ユニット120で採用されている仮想アドレッシング方式の変更がされることがある。その他のコントロール808は、コンピュータ110の他の態様を制御することができる。図8は、上記に示した状況の例を示しており、そこでは、write(a,m)は、a’≠aのときf(a’)を変更している。例えば、ビデオコントロール804に新しい値を書き込むと、モニタ191に表示されている背景カラーが変更されるので、ビデオRAM内のビットの多くが変更されることになる。
【0042】
・ CPUレジスタ。実際には、これらのレジスタは、RAMのバイトとは異なり、数値アドレスによって識別されないのが代表的であるが、各レジスタはともかく識別可能であり、その違いは純粋に構文的なものである。各レジスタは、なんらかの識別子をもち、これらの識別子は集合Aに対応している。図9は、CPUレジスタ900(0)、900(1)、...、900(15)の集合の例を示し、これらはr0−r15と名づけられている。この例では、これらのレジスタの各々は、32ビット値を格納する能力を備えている。0−15の範囲のレジスタ番号は集合Aに対応し、0−223の範囲の整数値は集合Mに対応している。(いくつかの制御レジスタは、実際には、CPUレジスタであるとすることができる。)
【0043】
・ 分散システムにおける擬似共有メモリ。機能的には、このメモリは、第1の例のメモリに類似している。しかし、このメモリの物理的ストレージは、多数の地理的に離れたマシンにわたって分散化することが可能になっている。図10は、そのようなメモリの例を示している。コンピュータ110(0)、110(1)、および110(2)の各々は、それぞれRAM132(0)、132(1)および132(2)を備えている。コンピュータ110(0)−110(2)は、ネットワーク1002(これは、例えば、図1に図示のローカルエリアネットワーク173または広域ネットワーク171にすることができる)を介して通信している。ネットワーク1002を使用すると、コンピュータの各々は他のコンピュータのRAMの1つにアクセスすることが可能になる。例えば、コンピュータ110(0)−110(2)は、ある種のメッセージ受け渡しプロトコルに参加できるので、コンピュータ110(0)は、コンピュータ110(1)がコンピュータ110(1)のRAM132(1)から情報を取り出すことを要求することができる。アドレッシング規則は、これらのRAMのいずれかに置かれているバイトがシングルアドレスで識別できるようにセットアップ(起動)することができる。シングルアドレスとして、例えば、RAM132(0)内のアドレスは頭に"00"が付けられ、RAM132(1)内のアドレスは頭に"01"が付けられ、RAM132(2)内のアドレスは頭に"10"が付けられている。このようにすると、あるコンピュータがそのコンピュータのRAMに置かれていないバイトのアクセス要求を出した場合でも、RAM132(0)−132(2)のいずれかに置かれているどのバイトも、コンピュータ110(0)−110(2)のいずれからでもシングルアドレスで識別することが可能になる。この意味において、RAM132(0)−132(2)は、擬似(simulated)共有メモリ1004を構成している。このメモリ1004は、図7に示すRAM132または図8の制御レジスタよりも、セマンティックスが若干弱くなっていることが多い。例えば、コンピュータ110(0)がwrite(a,m)にread(a)が続くオペレーションを実行する場合、コンピュータ110(1)または110(2)のどちらかが、これらのオペレーション実行時の間にアドレスaに異なる値を書き込んでいる可能性があるので、読み取りオペレーションからmが戻されないことがある。しかし、擬似共有メモリ1004がRAM132のような、従来のメモリと異なるセマンティックスを持っている場合でも、擬似共有メモリ1004は、依然としてアドレス指定可能なエンティティ312の物理的事例である。この事例が強調していることは、本発明はどのような特定タイプのアドレス指定可能なエンティティにも限定されず、上述したようにアドレス指定可能なエンティティのモデルに従う、どの構造にも適用されることである。
【0044】
再び図3に戻り、次に、アドレス変換メカニズム310について説明することにする。アドレス変換メカニズム310は、S x V→Aの部分的変更可能マッピングを計算する。ただし、Sはソースの集合(例えば、ソース204)である。このマッピングは、部分関数g(s,v) = aを定義している。ただし、s∈S、およびv∈Vである。(等価的には、このマッピングは、例えば、S x V1→S x V2→...→S x Vn→S x V→Aのように、場面で計算することができる。)オプションとして、アドレス変換メカニズム310は環境208(つまり、SとV以外のある種の任意情報)を考慮に入れることができ、その場合には、マッピングはS x V x E→A(およびg(s,v,e) = a、ただし、s∈S, v∈V、およびeは環境Eに関する任意情報)と定義されている。仮想アドレッシングは、アドレス変換メカニズム310を使用して実現することができる実在システムの例である。この例において、Vは仮想アドレスの集合であり、アドレス変換メカニズム310は、仮想アドレス(Vのメンバ)を物理アドレス(Aのメンバ)にマッピングすることによって、物理アドレスではなく、仮想アドレスでメモリをアドレス指定することを可能にしている。
【0045】
図11は、アドレス変換メカニズム310の例を示す図であり、この例では、値sとvを受け取り、これらの値をaにマッピングしている。ただし、sは特定のソースSを示し、v∈V、およびa∈Aである。図12は、アドレス変換メカニズムの同様な例を示す図である。しかし、図12では、アドレス変換メカニズム310は、環境(周囲の状況)208に関する任意情報である値eを受け取り、aへのマッピングを計算するときeを考慮に入れている。なお、「環境」という用語は、マッピングの計算時に存在する一般的条件に関する情報がEに含まれていることを示唆しているが、Eはそのような情報に限定されるものではなく、どのような任意タイプの情報も含まれるものである。例えば、Eは異なるタイプのアクセスオペレーション(例えば、読み取りと書き込み)の集合にして、ある仮想アドレス(つまり、Vの値)が、読み取りオペレーションと書き込みオペレーションとでは異なる物理アドレス(つまり、Aの値)にマッピングされるようにすることができる。別の例として、いくつかのプロセッサ、命令を読み取る命令オペレーション (IFETCH) とデータを読み取るオペレーション (DFETCH) を区別している(および所定の仮想アドレスは、ケースごとに異なるようにマッピングされている)。その場合、Eは、アクセスしようとしているアドレスには、データが置かれているのか、命令が置かれているのかを指定するために使用できる。
【0046】
アドレス変換メカニズム310によって定義されているマッピングと関数が「部分的」であるのは、マッピングと関数が取り得るすべてのドメイン値(定義域の値)について定義されていないという意味である。つまり、g(s’,v’,e’)が未定義になっているs’、v’、およびe’があるという意味である。例えば、以下で説明するように、仮想メモリシステムはアドレス変換システムの例であり、そこでは、Vは仮想アドレスの集合である。仮想メモリを使用するプロセスでは、仮想アドレス範囲の大きな部分は、どの物理アドレスにもマッピングされないのが代表的になっている。gを部分関数として特徴付ける別の方法として、gをその範囲がA∪{e}である総関数と定義することも可能である。ただし、eは特殊なエラー記号である。採用されている数学的表現は、結局は無関係である。重要であるのは、Vのすべての値がAの値にマッピングされるとは限らないことであり、gのドメインのある個所でAにマッピングされないことは、なんらかの方法で自然に明らかになることである。
【0047】
なお、当然に理解されるように、アドレス変換メカニズム310の概念は、さまざまな方法でさらに拡張することが可能である。例えば、関数gの範囲には、Aを超えるなんらかのディメンション(次元)を含めることが可能である。例えば、gは、値a∈Aだけでなく、なんらかの任意属性を生成することもできる。この属性は、資源が読み書きか、読取専用であるかを示すことができる。以下で説明するように、いくつかのアドレス変換メカニズムは、読取専用資源での書き込み要求を拒否することによって、読取専用条件を強行するように構成可能になっている。(なお、当然に理解されるように、属性は資源と厳格に関連付ける必要はなく、gドメイン(定義域)のある個所ともっと一般的に関連付けることができる。従って、g(s1,v1,e1)とg(s2,v2,e2)は、Aと同じであるが、異なる属性のものを生成することがあり得る。このような事態は、s1とs2は共に所定の資源にアクセスすることが許されているが、一方は読み書きアクセス権を持ち、他方は読取専用アクセス権を持っている実在の例に対応付けることができる。これとは別に、この事態は、所定の資源に読み書きアクセスができるか、読取専用アクセスができるかが、ユーザモードであるか、カーネルモードであるか、といった環境208のある様相によって決まる例に対応付けることもできる。さらに、これらの状態は、ページの属性がV→Aマッピング(例えば、以下で説明するページテーブルなど)にストアされている実在の例を示しており、従って、これらは、厳格には資源の特徴ではなく、マッピングの特徴である。
【0048】
図3のモデルをさらに拡張したものとして、gを計算すると、一種の面的変化が得られ、アドレス指定可能なエンティティ312に対する変更が得られるようになっている。例えば、アドレス変換メカニズムが実在のメモリシステムの一部になっている場合には、gを計算することで、キャッシュ、変換索引バッファ (Translation Look aside Buffer − TLB) などの変更が得られるようになっている。
【0049】
アドレス変換メカニズムの実在例としては、ページングとセグメンテーション方式に基づく仮想メモリシステムがある。図13乃至図16は、このような実在システムの例を示している。当然に理解されるように、ページとセグメントは、アドレス指定可能なエンティティをグループ化して、「バケット」に入れて、これらが大きな単位で都合よく扱われるようにする1つの方法にすぎない。従って、本発明は、そのようなアドレス指定可能なエンティティが上記のようにグループ化されるかどうかとは無関係に適用されるものである。
【0050】
図13は、ページングスキム(方式)の例を示す図である。図13において、RAM132の固定サイズ部分は、ページ1306(1)、1306(2)、...1306(n)と指定されている。図13の例において、各ページは長さが4キロバイト(4096バイト)になっているが、ページング方式はどの特定ページサイズにも限定されていない(また、いくつかのページング方式は2サイズ以上をもつページをサポートしている。例えば、ページは長さが4キロバイトである場合と、4メガバイトである場合がある。)各ページは、RAM132にベースアドレスをもっている。ページ1306(1)、1306(2)、および1306(n)のベージアドレスは、それぞれ0x0000、0x2000、および0xf000になっている。(この分野の精通者ならば理解されるように、接頭部"0x"は、慣行により、値が16進数、つまり、基数 (16)であることを示している。各ページ内では、各バイトは、ページのベースアドレスを基準にしたオフセットで記述することが可能になっている。従って、各ページ内では、第1バイトはオフセット0、第2バイトはオフセット1、以下同様になっている。図13の例における各ページは長さが4096バイトであるので、各ページの最終バイトはオフセット4095(または0x0fff)になっている。
【0051】
ページテーブル1308は、色々なページ1306(1)−1306(n)を指すポインタのリストである。ページテーブル1308内の各エントリは、上述したように1つまたは2つ以上の「属性」、つまり、ポインタが指しているページが読み書きであるか、読取専用であるかを示すマーカ、またはページがRAM132に「存在」するか、「不在」であるかを示すマーカを収めておくことも可能になっている。(ページは、RAM132に他のデータのための余地を作るためにディスクにスワップ(場所交換)されていると、不在のマークがつけられることがある。)ページテーブル1308の各エレメントは、ページテーブル内のページのベースアドレスを収めている。さらに、各エレメントは、ページテーブルまでのオフセットで識別することが可能になっている。従って、オフセット0にストアされたページテーブルのエレメントは0x0000であり、これはページ1306(1)のベースアドレスである。オフセット2にストアされたエレメントは0x2000であり、これはページ1306(2)のベースアドレスである。オフセット5にストアされたエレメントは0xf000であり、これはページ1306(n)のペースアドレスである。ページテーブル1308までの他のオフセットは、図13に示されていない異なるページを指している。なお、当然に理解されるように、ページテーブル1308は、RAM132に格納されているのが代表的であり、これは、ページテーブル1308を囲んでいる破線で示されている。
【0052】
メモリ管理ユニット (memory management unit − MMU)1304は、ページテーブル1308を使用して仮想アドレス1302を物理アドレスに変換する。MMU1304は、仮想アドレスを物理アドレスに変換することを含む、種々の関数を実行するハードウェアとソフトウェアで構成することができる。図13の例では、仮想アドレス1302は2つの部分を含んでおり、これらはテーブルオフセット1311とページオフセット1312である。MMU1304は、RAM132内の特定の物理アドレスを仮想アドレス1302に基づいて見つける。物理アドレスを見つけるために、MMU1304は、最初にテーブルオフセット1311を読み取り、この値をページテーブル1308内へのインデックスとして使用する。次に、MMU1304は、テーブルオフセット1311によって定義されているページテーブル1308のエントリに入っているアドレスを取り出し、その値にページオフセット1312を加える。その結果の値は、ページ1306(1)−1306(n)の1つにおける特定バイトのアドレスである。図13の例では、テーブルオフセット1311は0x0002である。従って、MMU1304は、ページテーブル1308の先頭からのオフセット2にストアされているベースアドレスを見つける。このケースでは、そのベースアドレスは0x2000である。そこで、MMU1304は、ページテーブルに見つかった値にページオフセット1312を加える。この例では、ページオフセット1312も、0x0002であるので、MMU1304は0x2000 + 0x0002 = 0x2002の加算を行う。この0x0002は、斜線で示すページ1306(2)内のバイトの物理アドレスである。
【0053】
MMU1304は、ページテーブルに収められた属性に基づいて何らかのアクションを実行するように構成することも可能である。例えば、アクセス要求がメモリのあるバイトに書き込む場合に、そのバイトが置かれているページのページテーブルエントリが、ページが読取り専用であることを示しているときは、MMU1304はその要求を中止し (abort)、および/または何らかのタイプのフォルトハンドラ (fault handler:誤り割込み処理ルーチン) を呼び出すようにしてもよい。同様に、そのバイトが「不在」とマークされたページ上にあるときには、MMUは、そのイメージがストアされている場所(例えば、ディスク)から、そのページのイメージをコピーして、RAM132に戻るステップをとること、および/または何らかのタイプのフォルトハンドラを呼び出してもよい。以下で説明するように、属性の1つの使い方は、関数gに影響を与える何らかの資源(例えば、ページテーブルを格納しているRAM132の部分、またはセグメントテーブル(後述する)、またはページディレクトリ(後述する))に「読取専用」(または「不在」)のマークを付けることである。この手法を用いると、ある種のアクセス要求(つまり、「読取専用」属性が使用されているときは書き込み要求、「不在」属性が使用されているときはすべての要求)は、ガード(guard)を呼び出すことになるので、アクセス要求がポリシおよび/またはある種の他の条件に違反しないことを確かめるためにアクセス要求が評価されることになる。
【0054】
図13は、図3に示すモデルの具体例である。図13は、以下に説明するように図3のモデルに対応している。すなわち、RAM内のバイトの物理アドレスは、集合Aのメンバであり、バイトにストアできる256の異なる値(例えば、0 - 255または-127 - +127)は集合Mのメンバであり、仮想アドレス(例えば、仮想アドレス1302)の範囲はメンバVである。図7を参照して上述したように、RAM132はアドレス指定可能なエンティティである。さらに、MMU1304がアドレス変換メカニズムであるのは、Vのメンバ(仮想アドレス)をAのメンバ(物理アドレス)にマッピング(写像)するからである。さらに、MMU1304に実装されているマッピングが部分的であるのは、一部の仮想アドレスがどの物理アドレスにもマッピングされないことがあり得るからである(例えば、仮想アドレス0x0006000は、ページテーブル1308がオフセット6に有効なエントリをもっていなければ、どの物理アドレスにもマッピングされない)。
【0055】
図14は、MMU1304/アドレス変換メカニズム310を示している。MMU1304は、(A)ページテーブル1308を見つけ、(B)テーブルオフセット1311で示されたページテーブル内のオフセットを探し出し、(C)(B)で探し出されたオフセットにストアされた物理アドレスを取り出し、(D)ページオフセット1312を(C)で取り出された物理アドレスに加え、(E)(D)で計算された結果を出力する関数を実装している。MMU1304/アドレス変換メカニズム310に実装された関数は、上述した関数"g"の事例である。MMU1304に実装された関数は、上述したように、属性の状態に応じてなんらかのアクションをとることができる(例えば、アクセス要求を中止する、フォルトまたは例外を引き起こす、ページをメモリにスワッピングする)。
【0056】
図15は、セグメンテーション方式の具体例を示している。この例では、「セグメント」と呼ばれるRAM132のセクション(区域)は区切られている。図15は4つの例示セグメント1506(0)、1506(1)、1506(2)および1506(3)を示している。各セグメントはベースアドレスと長さを持っている。セグメントは異なる長さを持つことができる。セグメントテーブル1508は、セグメント1506(0)−1506(3)のベースアドレスと長さをリストしている。従って、セグメント1506(0)はベースアドレス0x0000から始まり、長さ4096をもち、セグメント1506(1)はベースアドレス0x4000から始まり、長さ1024をもち、と以下同様である。セグメントテーブル1508は、破線で示すように、RAM132に格納されているのが代表的である。また、セグメントテーブル1508は、セグメントごとに、上述したように、読取専用/読み書き、存在/不在、などの情報をリストアップ(記入)しておくこともできる。
【0057】
MMU1504は、セグメントテーブル1508を使用して仮想アドレス1502を物理アドレスに変換する。仮想アドレス1502は、セグメント番号1511とセグメントオフセット1512を含んでいる。従って、図15の例では、MMU1504はセグメント番号1511を、セグメントテーブル1508内へのオフセットとして使用している。この例では、セグメント番号1511は"1"であるので、MMU1504はセグメントテーブル1508内へのオフセット1を調べ、アドレス0x4000を探し出す。次に、MMU1504はセグメントオフセット1512(この例では、0x0000)をそのアドレスに加えて、物理アドレスを得る。従って、0x4000 + 0x0000 = 0x4000となる。このようにして、MMU1405は、斜線で示すセグメント1506(1)内のバイトを特定する。
【0058】
以上から容易に理解されるように、図15に示すセグメンテーション方式は、図3に示すモデルの別の事例であり、そこではMMU1504はアドレス変換メカニズム310の事例になっている。具体的には、MMU1504は、次に示す式に基づいて仮想アドレス(つまり、Vのメンバ)を物理アドレス(Aのメンバ)に変換する関数gを実装している。
g(sn,so) = f(SEG_BASE + sn).base + so,
if sn <SEG_SIZE && so < f(SEG_BASE + sn).length;
otherwise g(sn,so) is undefined;
上記において、snとsoは、それぞれ、仮想アドレスのセグメント番号とセグメントオフセット部分であり、SEG_BASEはセグメントテーブル1508の物理ベースアドレスであり、SEG_SIZEはセグメントテーブル1508内のエントリの数であり、"f"はAのメンバ(例えば、物理アドレス)をMのメンバ(例えば、上記物理アドレスにストアされている値)にマッピングする上記関数であり、".base"と".length"は、それぞれセグメントテーブルエントリのベースアドレスと長さフィールドに戻す。
【0059】
図16は、図13に図示のページング方式とは異なる、ページング方式の例を示している。図16に図示のページング方式は、INTEL x86プロセッサで使用されるものと同じような、マルチレベルページング方式である。このページング方式では、ページディレクトリ1602は、ページテーブル1604(1)、1604(2)、および1604(3)のような、ページテーブルを指すポインタの配列(つまり、ページテーブルの物理ベースアドレス)を収めている。各ページテーブルの方は、ページ(例えば、ページ1606(1)、1606(2)、1606(3)、および1606(4))のベースアドレスを指すポインタの配列を収めており、上述したように、読取専用/読み書きの属性、存在/不在のビットなどの情報を収めておくことも可能になっている。ページは、RAM132の固定長部分である。さらに、ページディレクトリとページテーブルも、RAM132に格納されているのが代表的である。図16に示すページング方式が2レベルページング方式であるのは、特定のページを見つけるためにページディレクトリ(レベル1)とページテーブル(レベル2)の両方を調べる必要があるからである。この分野の精通者ならば理解されるように、任意のレベル数をもつページング方式を設計することが可能であり、本発明は、係るすべてのページングシステムに適用される。また、INTEL x86プロセッサは図16に図示の2レベルページング方式を使用しているのが代表的であることは公知であるが、1レベルまたは3レベルページング方式を使用するように構成可能になっている。
【0060】
図16のページング方式では、ページ上のどのバイトも、ページディレクトリオフセット1611、ページテーブルオフセット1612、およびページオフセット1613を含んでいる仮想アドレス1610によって特定することができる。従って、物理アドレスを見つけるために、MMU1620はページディレクトリオフセット1611を使用してページディレクトリ1602内の特定エントリを見つけている。このエントリはページテーブルの物理ベースアドレスであるので、MMU1620は、ページテーブルの1つ(例えば、ページテーブル1604(1))を見つけるために、このアドレスをデリファレンス (dereference;参照先の値を取得) する。次に、MMU1620はページテーブルオフセット1612を、特定されたページテーブル内へのインデックスとして使用し、そのオフセットで見つかったエントリを取り出す。このエントリは、ページ(例えば、ページ1606(1))の物理ベースアドレスであるので、MMUは特定されたページのベースアドレスにページオフセット1613を加えて、物理メモリの特定バイトを見つけるようにする。MMU1602は、図13を参照して上述したように、ページは読取専用または読み書きのマークが付けられているかどうか、ページは存在または不在のマークが付けられているかどうか、といった情報を考慮に入れるように構成することも可能である。
【0061】
図16のMMU1620は、アドレス変換メカニズム310のもう1つの事例である。MMU1620は、仮想アドレス(つまり、Vのエレメント)を物理アドレス(つまり、Aのエレメント)に変化する関数(つまり、関数"g"の例)を実装している。
【0062】
図16のページング方式は、ページディレクトリを指すポインタを収めているストレージロケーション1601も含んでいる。MMU1620は、仮想アドレス1610の変換を開始するとき、このポインタを使用してページディレクトリ1602を見つける。INTEL x86プロセッサの例では、ストレージロケーション1601はCR3と名付けたレジスタに対応している。つまり、INTEL x86プロセッサでは、レジスタCR3は、現在のコンテキストのページディレクトリの物理アドレスを格納している。従って、変換テーブルの代替セット(つまり、ページディレクトリとページテーブルの2または3以上のセット)を構築しておき、その変換テーブルのどのセットを適用するかを、新ページディレクトリのベースアドレスをストレージロケーションに書き込むだけで変更することが可能になっている。この手法の一般的な使い方の1つは、コンピュータ上で実行される各プロセスに独自のページディレクトリとページテーブルを持たせることであり、そこでは、「コンテキストスイッチ(context switch)」(つまり、中でも、仮想メモリシステムが新プロセスのアドレス空間を指すようにさせるオペレーション)は、新プロセスのページディレクトリのベースアドレスをストレージロケーション1601に書き込むことによって行われている。プロセスは、アクセス要求を出すことができる「ソース」の1つの例であり、上述したように、アドレス変換メカニズム310が計算する関数gは、仮想アドレスVだけではなく、ソースSにも基づくことが可能になっている。つまり、同じ仮想アドレスは、どのソースが要求を出したかに応じて異なる物理アドレスに変換されるようになっている。各プロセスが独自のページディレクトリを持っている場合には、ストレージロケーション1601にストアされた値は、基本的には、ソースの識別子であるので、アドレス変換メカニズム310による物理アドレスAの計算は、仮想アドレスVだけでなく、アクセス要求を出したソースSにも依存させることができる。(なお、当然に理解されるように、MMU1620が関数g(s,v,e)を実装している限りにおいて、s、v、およびeは、正式には、パラメータとして関数gに渡さないで済むようになっている。むしろ、アドレス変換メカニズム310は、MMU1620が関係ソースの識別子を、どのアドレスがストレージロケーション161にロードされているかに基づいて考慮に入れる場合と同じように、S、V、およびEの1つまたは2つ以上を、何らかの方法で考慮に入れる限り関数g: S x
V x E→Aを定義していると言うことができる。
【0063】
アドレス指定可能なエンティティへのアクセスを制御するアルゴリズム
以下では、アドレス指定可能なエンティティへのアクセスを制御するためのアルゴリズムについて説明する。一般的に、このアルゴリズムは、ポリシ(約束事)Pによって禁制されているアクセス要求を拒否し、また、実行されたとき、アドレス変換メカニズム310を通して識別できる資源の集合に対する、なんらかの定義された制約に違反することになるアクセス要求も拒否する。実際には、このアルゴリズムは、少なくともPと同程度に制限的であるポリシP’を実装しているが、その理由は、このアルゴリズムはPの下で許可し得ないすべての要求を拒否し、その要求がPの下で許可し得る場合であっても、制約に違反するような要求も拒否することがあるからである。一般的に、この制約(以下では、「不変(invariant)」または「不変条件(invariant condition)」と呼ぶことにする)は、ポリシPの下ではアクセスするとは考えられない資源に、あるソースsがアドレス変換メカニズム310を通してアクセスできないように選択されている。実在の仮想メモリシステムでは、この制約は、プロセスがアクセスするとは考えられないページまたはセグメントについては、そのプロセスは仮想アドレスを持たないことを意味している。
【0064】
以下の説明では、集合V、A、およびM、環境E、および関数fとgの意味は上述した通りである。ここで説明しているアルゴリズムは、以下で説明するように、MP(s)と名付けたAのサブセットを利用している。
【0065】
MP(s)は、ソースが与えられているときのgの範囲である。もっと正式には、ソースsが与えられているとき、MP(s)は、v∈Vおよびe∈Eのとき、関数g(s,v,e)の範囲である。すでに述べたように、関数gは、Aのメンバを出力するので(すなわち、g: S x V x E→A)、MP(s)はAのサブセットである(すなわち、MP(s)⊆A)。MP(s)の定義は図3に図示のモデルのどの特定の実施形態とも結びついていないが、MP(s)の意味は、実際のメモリシステムと関連付けると直観的に理解されるはずである。具体的には、MP(s)は、あるソースがアドレス変換メカニズム310を通してアドレスできる物理アドレスの集合である。つまり、あるコンテキストにおける仮想アドレスを持つ物理アドレスの集合である。MPは「マップドページ(mapped pages:マップされたページ)」を表しているので、最も普及している仮想メモリ方式ではそう呼ばれている。しかし、MP(s)は、図3に図示のモデルに従うどのシステムにおいても意味があり、ページベースの仮想メモリシステムにも、どの特定タイプのメモリシステムにも限定されない。
【0066】
MP(s)は、図13、15、および16の仮想メモリシステムでは固有の意味を持っている。例えば、図13において、MP(s)は、ページ1306(1)−1306(n)に置かれているバイトの集合である。これらのページの各々は、ページテーブル1308のあるエレメントによって指されているので、これらのページ内のどのバイトについても仮想アドレスを作ることが可能である。従って、ページ1306(1)−1306(n)は、MMU1304に実装されている関数gの範囲内にある。同様に、図15においても、MP(s)は、セグメントテーブル1508を通してアドレス可能なセグメントの集合である(例えば、セグメント1506(0)−1506(3))。図16において、MP(s)は、ページディレクトリ1602とページテーブル1604(1)−1604(3)に見つかったマルチレベルポインタを通してアドレスできるページの集合である(例えば、ページ1606(1)−1606(4))。さらに、図16は、MPがソースsによってパラメータ化される理由を示している。上述したように、アクセス要求の異なるソース(例えば、コンピュータ上で実行される異なるプロセス)は、異なるページディレクトリとページテーブルを持つことができる。各ソースは独自のページテーブルの集合をもっているので、仮想アドレス1610が存在する物理メモリページの集合は、現在のソースによって決まることになる。つま資源s1のページテーブルの中で特定されたページの集合は、ソースs2のページテーブルの中で特定されたページの集合と異なる場合がある。その場合、MP(s1) ≠MP(s2)である。
【0067】
MP(s)の内容は、アドレス変換テーブル(例えば、ページディレクトリ、ページテーブル、セグメントテーブルなど)によって定義されているが、MP(s)がこれらのアドレス変換テーブルを含んでいる場合もある。すなわち、アドレス変換テーブルそのものも、仮想アドレスをもつページまたはセグメントにストアしておくことができる。マッピングを収めているメモリをMP(s)の外側に置いておく必要はない。以下で説明するように、これらのマッピングをストアしているページを含むページマップセット (Page Map Set − PMS)と呼ばれる追加の集合を定義することが可能であり、本発明の一部の実施形態では、PMSとMP(s)間の特定の関係を利用している。しかし、MP(s)の定義は、ページディレクトリ、ページテーブル、およびセグメントテーブルがMP(s)の内側に置かれているか、外側に置かれているかに関しては中立になっている。
【0068】
本発明は、どの資源が仮想アドレスを持つことができるかを制約することによって、つまり、MP(s)の内容に制約を設けることによって、ポリシPの下でアクセス要求を評価するプロセスを加速することを追求している。ある制約がMP(s)について有効(true)である場合、その仮想アドレスによって(つまり、Vのメンバによって)資源を特定するある種のアクセス要求は、ポリシに決して違反することがないことを、基本的考え方としている。MP(s)に対する制約の正確な性質は実施形態によって異なるので、以下では、いくつかの例示制約について説明する。上述したように、「不変」または「不変条件」という用語が、広い意味でこのMP(s)の制約を示すために用いられているのは、この制約が、アクセス要求の実行によって変更されてはならない資源の状態について、いくつかの真相を表しているからである。
【0069】
不変条件の一例は、ソースがアクセスすることを禁止されている資源は、そのソースから見えるように仮想アドレスをもってはならない、ということである。この条件を式に定義するために、まず、集合NA(P,s)を、ソースsがポリシPの下でアクセスすることを許されていない資源、つま資源sが読み取ることも、書き込むことも許されていない資源の集合と定義する。従って、例示の不変条件は、次のように定義される。
MP(s)∩NA(P,s) = φ
この条件は、MP(s)とNA(P,s)がAの別個で、交差しないサブセットであることを意味している。図17は、この条件を図形化してベン図で示したものである。すなわち、MP(s)(集合1702)とNA(P,s)(集合1704)は共にA(集合304)のサブセットであるが、MP(s)とNA(P,s)は共通のメンバをもっていない。
【0070】
仮想メモリシステムでは、条件 MP(s)∩NA(P,s)=φは、基本的には、ソースsがアクセスするのを禁止されている資源については、アドレス変換メカニズム310がその仮想アドレスをソースsに見せないことを意味している。この考え方は、図13、図15、および図16に図示の例示仮想メモリシステムに適用することができる。図13では、条件MP(s)∩NA(P,s)=φは、ポリシPによってソースsがアクセスするのを禁止されているどのページも、ページテーブル1308にリストされていないことを意味している。図15では、この条件は、ポリシPによってソースsがアクセスするのを禁止されているどのセグメントも、セグメントテーブル1508にリストされていないことを意味している。図16では、この条件は、ストレージロケーション(格納先)1601からページディレクトリ1602へ、さらには、ポリシPによってソースsがアクセスするのを禁止されているページに通じているページテーブル1604(1)−1604(3)へ到る経路がないことを意味している。図3のモデルでは、条件MP(s)∩NA(P,s)=φは、アドレス変換の基礎になっているデータが原因で、アドレス変換メカニズム310は、ポリシPによってソースsがアクセスするのを禁止されているどのアドレス可能エンティティにも、ポイントしないことを意味している。
【0071】
図17に示す条件の意味は、NA(P,s)内のどの資源もMP(s)に含まれていなければ、ポリシPの下でソースsがアクセスするのを許されていない資源を、ソースsが集合Vを使用して特定することはあり得ない、ということである。図13、図15、および図16に示す仮想メモリシステムに関して説明すると、図17の条件が真であれば、所定のポリシの下でアクセスが禁止されている、RAM132のどの部分にも仮想アドレスがない。以下で説明するように、アクセス要求を評価するときの方法が種々の形で最適化されているのは、そのためである。例えば、以下で詳しく説明するように、その仮想アドレスによってある資源を特定しているどの読み取り要求も、以降の評価なしで許可できるのは、MP(s)∩NA(P,s)=φが真ならば、その資源が仮想アドレスをもっているという事実が、その資源を読み取ることを許可しなければならないことを意味しているからである。
【0072】
図18は、図17に示しているような不変条件を使用して、ポリシPを実施する方法1800を示している。具体的に説明すると、方法1800は、ポリシPによって禁止されているアクセス要求を拒否し、そのアクセス要求が実行されたとき、関連不変条件が真でない状態にシステムを置くようなアクセス要求も拒否する。従って、方法1800は、ポリシPの下で禁止されているすべてのアクセス要求を拒否し、ポリシPの下で許可し得る一部のアクセス要求を拒否することもある。上述したように、この方法で実際に実施されるポリシP’は、少なくともポリシPと同程度に制限的であり、もっと制限的にすることも可能である。方法1800は、ガード206(図2に図示)の1つまたは2つ以上に実行させることができる。図18の説明では、方法1800はガード206(1)(図2に図示)によって実行されるものと想定されているが、この方法は、資源へのアクセスを仲介するどのエンティティによっても、あるいはエンティティの組み合わせによっても実行することも可能である。
【0073】
ステップ1802では、資源がアクセスされるシステムは、関連不変条件が真になるような状態に初期化される。このステップは、アドレス変換メカニズム310に実装されているマッピングを、不変条件を満足する状態が得られるように作成し、および/または操作することによって実行される。例えば、関係システムが図13に示すものであり、関連不変条件が図17に示すものであれば、ステップ1802は、ソースsがポリシPの下でアクセスするのを許されていないページ1306(1)−1306(n)のどれも含まないようにページテーブル1308を構築することによって実行することができる。
【0074】
システムが初期化された後、ガード206(1)は資源rにアクセスする要求を受け取る(ステップ1804)。このアクセス要求は、なんらかの方法で資源rを特定している。図3は、資源を特定する2通りの方法を示している。すなわち、(1) アドレス変換メカニズム310を使用する方法(Vのエレメントの使用)または(2) 直接に特定する方法(Aのエレメントの使用)である。これらの2通りの方法は、以下では、それぞれタイプ1のアクセス要求およびタイプ2のアクセス要求と呼ぶことにする。タイプ1の要求では、r∈V、タイプ2の要求では、r∈Aである。仮想メモリをサポートしているコンピュータシステムの例では、タイプ1の要求は、その仮想アドレスによって資源を特定し、タイプ2の要求は、その物理アドレスによって資源を特定している。当然に理解されるように、タイプ2の要求には、物理アドレスによってRAM132にアクセスする要求だけでなく、レジスタのような、他のタイプのアドレス指定可能なエンティティに対する物理アドレスをベースとする要求も含まれている。ガード206(1)は、要求がタイプ1のものであるか、タイプ2のものであるかを判断し(ステップ1806)、Aドメイン内のどの資源が要求されたかを示す値r’を定義する(つまり、r’∈ A)。従って、要求がタイプ1のものであれば、r’= g(r)(ステップ1808)。(もっと正確には、rのドメインがS x VまたはS x V x Eならば、r’= g(s,r)またはg(s,r,c)。ただし、sは要求を出したソースを示し、eは、環境208に関するオプションの任意情報である。)要求がタイプ2のものならば、r’= r(ステップ1810)。(当然に理解されるように、いくつかの実在システム、例えば、INTEL x86プロセッサに関連するRAMでは、すべてのメモリアクセス要求が仮想アドレスによって行われることを要件としている。実際には、これらのシステムにはタイプ2のアドレッシングがないので、その場合には、ステップ1810は実行されることがない。
【0075】
ステップ1814では、ガード206(1)は、ステップ1804で受け取った要求が読み取り要求であるか、書き込み要求であるかを判断する。要求が読み取り要求であれば、方法1800はステップ1816へ進み、そうでなければ、方法1800はステップ1822へ進む。
【0076】
要求が読み取り要求であれば(ステップ1816)、ガード206(1)は条件 r’
【0077】
【外1】
Figure 0004467249
【0078】
NA(P,s)を評価する。すなわち、r’は、ソースsがポリシPの下でアクセスすることを許されていない資源の1つであるかどうかを判断する。r’∈NA(P,s)ならば(判定"no")、ガード206(1)はアクセス要求を阻止する(ステップ1818)。r’
【0079】
【外2】
Figure 0004467249
【0080】
NA(P,s)ならば(判定"yes")、ガード206(1)はアクセス要求を許可する(ステップ1820)。
【0081】
要求が書き込み要求ならば(ステップ1822)、ガード206(1)は次の接続条件を評価する。
r’
【0082】
【外3】
Figure 0004467249
【0083】
NA(P,s)∧INV
上記において、INVは、不変条件のブール値であり、これは、アクセス要求が実行されたときに起こる状態に適用されるものである。言い換えれば、書き込み要求のときは、ガード206(1)は、アクセス要求がポリシ(r’
【0084】
【外4】
Figure 0004467249
【0085】
NA(P,s))の下で禁止されていないか判断するだけでなく、書き込み要求を実行すると不変条件を否定することにならないかも判断する。例えば、関連不変条件が図17に示すものであれば、ガード206(1)は、書き込み要求を実行したとき、MPとNAが共通するどの資源も持つことがないようにさせる。図13、15、および16の仮想メモリシステムのコンテキストでは、この条件は、書き込み要求を実行すると、ソースsがアクセスすることを許されていないRAM132のバイトに仮想アドレスを割り当てるようなことが起こるときは、書き込み要求は許可されないことを意味している。例えば、図13に示すように、ソースsがポインタをページテーブル1308に書き込むことを許されている場合であっても、ガード206(1)は、その要求を実行すると、ソースsがポリシPの下でアクセスすることを許されていないページを指すポインタがページテーブル1308に書き込まれることになるときは、その要求を許可することはない。さらに、ポリシ自体がアクセス要求の対象となる可能性のある資源にストアされているときは、上述した条件は、そのアクセス要求を実行したときに、すでに仮想アドレスを持つページが、変更されたポリシの下では禁止されてしまうような形でポリシを変更することはないことを意味している(当然のことであるが、これらのページをMPから除去するために、MPも同時に変更される場合は除く)。一般に、ステップ1822では、アクセス要求が出されたとき、条件INVの真(true)は残されることが要件となっているが、この条件がどのように残されるかは無関係である。不変条件が図17に示すものであるときは、この条件は、(a) MP(s)を変更することにより(例えば、ページまたはセグメントテーブルを変更することにより)、(b) NA(P,s)を変更することにより、またはこれらの両方を変更することにより、残しておくことができる。例えば、図19は、共に書き込み要求の実行前と実行後の集合MPとNAを示している。書き込み要求の後、NAは、オリジナルの集合MPと交差するように拡張される。しかし、書き込み要求はMPも収縮させるので、NAの新しい境界と交差しないことになる。従って、ステップ1822で評価される条件は、V→Aマッピングの変更、ポリシPの変更、または両方の変更によって影響を受けることがある。(NAが小さくなったときは、これは、「オフリミット」となっていた資源がアクセス可能になることを意味するので、望ましいことは、オフリミットになっていた資源がポリシ変更の後で読み取られることから防御するためには、これらの資源の内容をゼロにするか、ランダム化することである。また、当然に理解されるように、アクセス制御システムをシャットダウン(終業)することは、このことの特殊ケースにすぎない。すなわち、アクセス制御システムをシャットダウンすることは、NAがメンバを持たないようにポリシを変更するのと同じであり、その場合には、以前NAにあった資源のすべては、好ましくはゼロ化されるか、ランダム化される。また、当然に理解されるように、ポリシをアドレス指定可能なエンティティにストアしておくと、そのことは、図19に例示するように、ポリシの変更が書き込みオペレーションの特殊ケースであることを意味しているので、それだけでも有用である。
【0086】
図18に戻って説明すると、ステップ1822に示す条件が真であれば(判定"yes")、ガード206(1)はアクセス要求を許可し(ステップ1824)、そうでなければ(判定"no")、ガード206(1)はアクセス要求を阻止する。
【0087】
選択的フィルタリングに基づくガードの最適化
上述したように、所定のポリシPは、そのドメイン(定義域)がアクセス要求の集合(r,s,a,p)であり(および環境であることもある)、その範囲がブール値の真(要求は許可し得る)と偽(要求は許可し得ない)である(および読み取りまたは書き込みのように、要求が許可される場合どのタイプのアクションが許されるかを示すアクションの集合であることもある)ブール関数を定義している。このポリシによって定義された関数を評価するのはガード206の機能である。すなわち、いずれかのアクセス要求が与えられているとき、ガードは真または偽の値を計算する。この計算は、計算資源の点から高価となることがある。例えば、方法1800(図18を参照して説明した)では、ステップ1816と1822で、r’
【0088】
【外5】
Figure 0004467249
【0089】
NA(P,s)かどうかを判断することが必要となる。このステートメントを評価する1つの方法は、NA(P,s)に置かれている、ある種の資源のリストをガードに維持させ、すべてのアクセス要求をこのリストと比較させることである。(例えば、資源がRAM132のバイトであれば、ガードは、ソースsがアクセスすることを許されていない物理アドレスの範囲をストアしておき、各々のアクセス要求について、バイトのアドレスが禁止された範囲内にあるかどうかを判断することができる。)この方法は有効であるが、あまり効率的でない。さらに、ステップ1822では、条件INVが真であるかどうかを、アクセス要求が仮に実行された場合の、システムのそのときの状態に基づいて判断することが必要とされる。このステートメントは、アクセス要求の実行をシミュレートし、シミュレートした条件の下でそのステートメントの真をテストすることによって評価することができるが、この場合も、この方法はあまり効率的でない。アクセス要求によっては、要求の評価に非効率的な「総当り的(brute force)」計算が必要になる場合がある。しかし、好ましいことは、多数または大部分のアクセス要求が非効率的な計算によらなくても評価できるようにガードを設計することである。
【0090】
アクセス要求の評価を最適化する1つの方法は、選択的フィルタリング (selective filtering)による方法である。選択的フィルタリングでは、最初に、アクセス要求に費用のかからないテストが適用される。これらのテストでは、アクセス要求を許可または拒否(つまり、判断)するのに十分であるが、必要でない条件が具現化されているのが代表的である。アクセス要求がこれらのルールの下で解決できないときは、「総当り的な」評価を受けることになる。好ましくは、ポリシPが与えられているとき、アクセス要求の大きなクラスの適法性の方向を決定付ける単純なテストを設計することができることである。
【0091】
一般的に、選択的フィルタリングは、次のようなステップと見ることができる。
1. IF ARが受理のための単純ルール1を満足していれば、THEN ARを受理する
2. ELSE IF ARが非受理のための単純ルール2を満足していれば、THEN ARを拒否する
3. ELSE IF ....
4. ....
5. ELSE IF ARが単純ルールnを満足するならば、... THEN ...
6. ELSE 必要かつ十分の条件をテストし、ARをそれに応じて処理する
【0092】
図20は、選択的フィルタリングを使用してアクセス要求を評価するための、一般化したプロセスを示す図である。アクセス要求が受け取られると(ステップ2002)、ある条件の存在が、周囲のポリシ (ambient policy) の下で要求を判断するのに十分であろう、ある条件をそのアクセス要求が満足すかどうかの判断が行われる(ステップ2004)。その条件を満足していれば、要求についての判断が行われ(ステップ2006)、評価プロセスは終了する。ステップ2004で条件を満足していなければ、アクセス要求が第2の条件を満足するか否かが判断される(ステップ2008)。第2の条件を満足していれば、要求についての判断が行われる(ステップ2010)。このサイクルは、テストすべき条件が存在する限り、何度でも繰り返される。図20は、n個の条件が存在する場合を示している。n番目の条件を満足しているかどうかがステップ2012で判断され、満足していれば、ステップ2014で要求についての判断が行われる。n個の条件のどれも満足していなければ、要求は、キャッチオール (catch-all;包括的な) ルールに従って判断されなければならない(ステップ2016)。このキャッチオールルールは、上述したタイプの計算集中型の、総当り的なルールとなる可能性がある。従って、このルールは、関連するポリシを正確に実行することができるが、このルールをアクセス要求に適用することは困難となるおそれがある(つまり、時間の損失が大きくなる)。従って、好ましいことは、評価しやすい条件(例えば、図18に示す条件1からn)が非常に多数のアクセス要求を決定するようにし、まれなケースだけをキャッチオールルール用に残しておくことである。
【0093】
なお、ステップ2006、2010、および2014に示す「要求判定」ブロックは、要求が許可されることを必ずしも意味していない。ケースによっては、条件がテストされると、要求が即時に拒否される場合もある。従って、条件2004、2008、および2012の各々は、評価しやすいアクセス要求を「取り除く(weed out)」するように設計されているが、拒否しやすいアクセス要求だけでなく、許可しやすいアクセス要求も「取り除く」ようにすることもできる。従って、例えば、ステップ2004の条件は、満足されると、要求を許可することを要請することがあり、ステップ2008の条件は、満足されると、要求を即時に拒否することを要請することがある。
【0094】
ステップ2004、2008、および2012の種々の条件を、ガードをサブガードに分割するものとして見ると好都合なことがある。従って、特定のガードは、アクセス要求を評価するときの必要で、十分な条件を評価し、そのガードはn+1個のサブガードを使用してこのタスクを実行する。すなわち、アクセス要求を判断するのに十分な(しかし、必要でない)条件をテストするn個のサブガードと、先行するn個のサブガードのどれもが要求を解決できなかったときの、必要で十分な条件をテストする1個のサブガードである。
【0095】
選択的フィルタリングによる1つの最適化では、以後の評価なしですべてのタイプ1の読み取り要求を許可し、アクセス要求がタイプ1の読み取り要求でないと判断されたときにのみ、図18のもっと複雑な評価を行うようにしている。マシンの状態が図17に図示の条件を満足しているときは、タイプ1の読み取り要求はこの条件を変更しない(ただし、関連不変条件が真とならない状態を引き起こす可能性を読み取り要求がもっているようなシステム、例えば、読み取りアクセスがV→Aマッピングまたはポリシを変更する可能性を持つ、なんらかの不作用を引き起こすようなシステムでは別である。当然に理解されるように、代表的なシステムでは、読み取りアクセスはそのような作用を引き起こさない。)図21は、そのような要求を評価するプロセス2100を示しており、このプロセスは、図20に示す「サブガード」の1つによって実行させることが可能である。
【0096】
プロセス2100では、アクセス要求が受け取られると(ステップ2102)、サブガードは、その要求が読み取り要求であるか、書き込み要求であるかを判断する(ステップ2104)。要求が書き込み要求であれば、サブガードは要求を解決することができない。その場合には、要求はプロセス1800に評価させる必要があるので、要求は評価のために図18のステップ1806に渡される。基本的には、書き込み要求は「キャッチオール」ルールに従う。しかし、要求が読み取り要求ならば、サブガードは要求を評価することができる。(別の方法として、書き込み要求では、なんらかの、他の最適化を行うことが可能であり、その場合には、要求は、そのような最適化に基づいて要求を判断することを試みるサブガードに渡されることになる。)ステップ2106では、サブガードは、要求がタイプ1の要求であるか、タイプ2の要求であるかを判断する。すでに述べたように、タイプ1の要求は集合Vを使用して(例えば、仮想アドレスによって)資源を特定し、タイプ2の要求は集合Aを使用して(例えば、物理アドレスによって)資源を特定している。要求がタイプ2の要求であれば、サブガードは、r’
【0097】
【外6】
Figure 0004467249
【0098】
NA(P,s)であるかどうかを判断する(ステップ2110)。(すでに述べたように、r’は集合Aに基づいて資源を特定している。つまり、これは、アクセスが要求された資源の物理アドレスである。)r’
【0099】
【外7】
Figure 0004467249
【0100】
NA(P,s)ならば(判定"yes")、サブガードは要求を許可する(ステップ2108)。r’∈ NA(P,s)ならば(判定"no")、サブガードは要求を阻止する(ステップ2112)。他方、要求がタイプ1の要求であるとステップ2106で判断されたときは、サブガードは要求を許可するだけである(ステップ2108)。図17の条件は、アクセス要求が行われる前は、真であるものと想定されているので、r’
【0101】
【外8】
Figure 0004467249
【0102】
NA(P,s)は、すべてのタイプ1アクセス要求では、真であることは既知である。すなわち、r’は、すべてのタイプ1の要求では、gの範囲内(つまり、r’∈MP(s))になければならないので、および図17の条件はNA(P,s)と共通のエレメントをもたないことを意味しているので、タイプ1の要求ではr’
【0103】
【外9】
Figure 0004467249
【0104】
NA(P,s)であることが真でなければならないため、タイプ1の読み取り要求はポリシPの下で許可し得ることは既知である。さらに、読み取り要求は図17に示す条件を変更しないものと想定されているので、図17の条件が以後真になることを保証するために追加ステップをとる必要がない。
【0105】
その他の不変条件
図17に示す不変条件は、不変条件の一例にすぎない。他の不変条件を定義することも可能であり、そのようにすると、別の利点が得られると共に、異なるタイプの最適化が可能になり、あるいはポリシの下ではアクセスが許されないメモリに対して異なる程度のセキュリティ(防御)を得ることが可能になる。以下では、いくつかの例示不変条件を、図22−24を参照して説明する。
【0106】
図22に示す不変条件は、次のようになっている。
MP(s)∩NW(P,s) = φ
ここにおいて、MP(s)は上述したのと同じ定義になっており、NW(P,s)はsがポリシPの下で書き込みを許されていない資源の集合である。この条件は図17に示したものと似ているが、もっと限定的である。というのは、この条件によれば、MPは、sがポリシの下でアクセスすることを許されていない資源だけでなく、sがポリシの下でアクセスはできるが、書き込みはできない資源も除外しなければならないことを規定しているからである。例えば、ポリシはsが一部の資源に読取専用アクセスすることを許可していれば、それらの資源は、それがNA(P,s)に含まれていなくても、NW(P,s)に含まれることになる。図22に示すように、MP(s)(参照符号1704)とNW(P,s)(参照符号2202)は共にA(参照符号304)のサブセットになっている。
【0107】
同様に、不変条件は次のように定義することも可能である。
MP(s)∩NR(P,s) = φ
ここにおいて、NR(P,s)は、sがポリシの下で読み取ることを許されていない資源の集合である。(明らかであるように、上記の例では、NA(P,s) = NW(P,s)∩NR(P,s)となっている。すなわち、NAはsがポリシPの下で読み取ることも書き込むことも許されていない資源を含んでいる。)
【0108】
図23に示す不変条件は、次のようになっている。
(MP(s)∪PMS)∩NA(P,s) = φ
この不変条件では、PMSはVからAへのマッピングがその値によって決まる資源の集合である。(上述したように、PMSは「ページマップセット(Page Map Set)」を表しているが、そのシステムがページベースの仮想メモリシステムであるかどうかに関係なく、アドレス変換メカニズム310をもつどのようなシステムに対してもPMSを定義することが可能である。)関数fとgの前記定義を使用すると、PMSは、値aのすべてから構成され、f(a)は関数gに影響を及ぼすようになっている。例えば、ページベースの仮想メモリシステムでは、ページディレクトリとページテーブルの内容は、仮想アドレスが物理アドレスにマッピングされる仕方に影響するので、ページディレクトリとページテーブルは、PMSのメンバ(構成員)になることとなる。図23では、PMS(参照符号2302)は、Aのサブセットになっている(前述したMP(s)およびNWP(P,s)と同じである)。PMSとMP(s)のどちらも、NA(P,s)と共通するどのようなエレメント(構成要素)も持っていない。しかし、また気がつくであろうが、図23は、PMSとMP(s)との関係の詳細を示していない。図23の例では、PMSとMP(s)は部分的に交差するものとして示されている。しかし、不変条件の正規の定義は、このような要件を課していない。図23に図示のものに代わる方法として、PMSとMP(s)は、完全にばらばらにすることも、完全に同一にすることも、一方が他方のサブセットとなるようにすることも可能である。(PMSという用語は、任意のソースのマッピングに影響を及ぼす全ての資源の集合を指すといっても問題はない。しかし、当然に理解されるように、異なるソースは異なるマッピングを持つことができる。例えば、実在のアプリケーションでは、異なるプロセスは異なるページテーブルを持つことが可能になっている。従って、PMSは、ソースsが与えられているとき、そのマッピングg(s,v,e)に影響を及ぼす資源の集合ということができる。このケースでは、PMS = PMS(s1)∪...∪PMS(sn)である。ただし、s1,...,snはすべてのソースSの集合である。)
【0109】
PMSに含まれている情報は、Vのメンバによって資源を特定したアクセス要求を出し、その後に、そのアクセス要求がどの資源に通じているかを分析することにより推論することも可能である。言い換えれば、PMSに直接アクセスできない場合であっても、PMSが表しているアドレス変換マップを逆行分析すると、本質的に読み取り可能になることがある。従って、PMSには、NA(P,s)内の資源を含めないようにすると、好都合である。というのは、PMSにそのような資源を含めることを可能にすると、ソースsは、sが読み取るとは思われない、NA(P,s)内の資源を読み取れるようになるからである。図23に示す条件はこの利点を備えている。図23に示す条件は、次式に示すように、NA(P,s)の個所にNW(P,s)またはNR(P,s)を代替えすることで、変更することができる。
(MP(s)∪PMS)∩NW(P,s) = φ
および
(MP(s)∪PMS)∩NR(P,s) = φ
これらの条件が図23に示す条件よりも制限的であるのは、これらの条件は、sが書き込み(または読み取り)を許されていない資源のどれも、MP(s)とPMSに含まれないことを保証するからである。(上述したように、NW(P,s)はNA(P,s)の上位集合であるので、条件X∩NW(P,s) = φは、少なくともX∩NA(P,s) = φと同程度にXの内容を制限する。同様に、NR(P,s)はNA(P,s)の(異なる)上位集合(スーパセット)である。
【0110】
図24に示す不変条件は、次のようになっている。
(MP(s)∪PMS)∩NW(P,s) = φ∧MPRW(s)∩PMS = φ
この不変条件においては、MP(s)、NW(P,s)、およびPMSは上述のように定義されている。MPRW(s)はMP(s)のサブセット(下位集合)である。具体的には、関数gがAのメンバと一緒に属性を生成する本発明の実施形態では、MPRW(s)は、読取専用属性を持たないMP(s)のサブセットである。(MPRWは「マップドページ、読み書き(mapped-pages, read/write)」を表し、MPRWが読取専用ではなく、読み書きのページを有することを示している。以上から理解されるように、MPRWというラベルは「ページ」という用語を意味しているが、MPRWはページングを採用しているシステムに限定されるものではなく、図3のモデルに準拠するどのシステムとも有効に働く。)正式には、MPRW(s)の定義は次のようになっている。
MPRW(s)={a∈A:∃v∈V。その結果、g(s,v)=a。sは所定のソースであり、g(s,v)は「読取専用」属性をもたない。}
【0111】
仮想メモリシステムの例では、MPRW(s)は、ソースsが仮想アドレスを持っているが、sによって読取専用とマークされていた資源の集合である。(この場合もやはり、当然に理解されるように、資源が読取専用属性を持つ、と言うことは、その資源がポリシPの下で書き込み可能でないと、言うこととは別である。Pは、とりわけ、ある与えられたソースに対してどの資源に書き込むことを許可するかを表明した抽象的ポリシである。属性は、図13に示すMMU1304のような、メモリ管理ユニットに実行させることができることが特徴である。MMUは、読取専用属性を持つ資源に書き込む要求を拒否することができる。この意味において、読取専用属性は、ポリシを実行するのに使用できる1つのツールである。しかし、この属性はポリシ自体とは別物である。当然のことであるが、属性はマッピングの一部、すなわち、関数gの範囲の一部であるので、属性がストアされているメモリ部分はPMSのメンバになっている。仮想メモリの代表的な遂行では、属性は、特定のページを指しているページテーブルエントリにストアされており、ページテーブル自体もPMSのメンバとなることとなる。)
【0112】
図24に示す不変条件に利点があるが、それはタイプ1の書き込み要求がそれ以後の評価なしで許可されることができる状態を保っているからである。この条件は、sが仮想アドレスでアドレスできるどの資源も、読取専用属性をもつことを保証するので、ガードはどのタイプ1の書き込み要求も許可することができる。アドレス変換プロセスが読取専用属性を生成していれば、アドレス変換メカニズム自体(例えば、従来のMMU)はその要求を阻止することができる。従って、図24に示す不変条件がそのまま残されているときは、アクセス要求は図25に示すプロセス2500に従って処理することができる。アクセス要求が受け取られると(ステップ2502)、上記で説明したように、その要求がタイプ1であるか、タイプ2であるかの判断が行われる(ステップ2504)。要求がタイプ2のものであれば、ガードは関連ポリシと不変条件の下で要求を評価する(ステップ2508)。要求がタイプ1のものであるときは、その要求が、仮想アドレスマッピング機能が読取専用属性を生成した資源に対する書き込み要求でなければ、要求は進行されることが許可される。(すでに説明したように、属性は従来のMMUによって実施できる特徴である。読取専用としてマッピングされている資源に対する書き込み要求の場合には、従来のMMUでは要求を阻止し、アクセスフォルト(access fault;アクセス不良)を生成している。本発明によれば、システムは、このようなあるフォルトを受けたときガードを呼び出すように構成することができるので、ガードは、実際には、要求がポリシと不変条件に準拠しているかどうかに応じて要求が進行されるのを許可することができる。)
【0113】
以上の説明から理解されるように、上述した本発明で使用される種々のプリミティブ(基本)、例えば、MP、PMS、NA、NW、NRは、どの程度のセキュリティ(全保護)が必要であるか、および/またはどのようなタイプの最適化を不変条件から得ようとしているのかに応じて、種々に組み合わせて使用することが可能である。特に理解すべきことは、本発明は上述してきた不変条件のどれにも限定されず、適用されるポリシに基づいてMPおよび/またはPMSを何らかの方法で制約する、どのシステムにも適用されることである。
【0114】
【実施例】
例示の実行手法
上述したように、本発明は、資源アクセストランザクション全体にわたって不変条件を保っているどのようなシステムでも実行することが可能である。以下では、そのようなシステムを実現するために使用できる方法について説明する。
【0115】
第一に、PMSが収められているアドレス指定可能なエンティティの部分を、読取専用とマークしておくと便利なことがある。そのようにすると、ソースは、PMSを読み取って(および使用して)(例えば、仮想アドレスを物理アドレスに変換するために)集合Vを集合Aにマッピングすることが可能になるが、そのPMSに書き込む試みをすると、MMUは例外(exception)を生成することになるが、これはガードを呼び出すことによって処理することができる。そのあと、ガードは試みられた書き込みアクセスを評価し、それが(a) ポリシに違反していないか、(b) 不変条件に違反していないかを判断することができる。ポリシにも、不変条件にも違反していない限り、ガードは、そのPMSに読取専用のマークが付けられていても、書き込みアクセスが行われるのを許可することができる。(PMSはアクセス要求を出したソースにとってはまだ読取専用になっているので、実際には、ガードが要求側ソースに代行して書き込みを行うことになる。その場合、V→Aマップ(つまり、関数g)は、ガードによって要求されたときは読み書きとして、他のソースによって要求されたときは読取専用としてPMS資源がマッピングされるように構成することができる。)一面では、この手法はMMUの既存能力を利用して、選択的フィルタリングプロセスにおける一種のサブガードとして読取専用属性を実施するものである。この「サブガード」はすべての読み取り要求を許可し、読み書きとマークされている資源の書き込み要求も許可するが、読取専用資源に対する書き込み要求は別のサブガードに渡されて、さらなる評価を受けることになる。
【0116】
第二に、別の方法として、アドレス指定可能なエンティティのPMS部分を「不在」とマークしておくと便利なことがある。このケースでは、PMS資源に対する読み取りまたは書き込み要求はフォルト(fault)を引き起こすことになる。本発明が展開されているシステムは、このようなフォルトが発生したときにガードを呼び出すように構成することができる。この場合、ガードは書き込み要求を上述したように評価することができる。さらに、読み取り要求もフォルトを引き起こすので、読み取り要求時にも追加処理を行うことができる。PMSにアクセスする要求があるごとに、それに応答してある種の処理が呼び出されるようにすると、PMSの内容をバッチで更新することが、あるいは「遅延(lazy)」更新さえも可能になる。その場合には、PMSへの書き込み要求は、即時に実行されるのではなくキュー(待ち行列)に置いておくことができ、キューに置かれた書き込み要求はバッチで実行することも、読み取り要求が受け取られた時点で、必要時ベース(as-needed basis)で選択的に実行することもできる。この場合も、存在/不在マーカをこのように使用すると、MMUが選択的フィルタリングプロセスで一種のサブガードとして効果的に利用されることになる。
【0117】
第三に、MPを変更および/またはPMSの内容に影響を与える可能性のある、書き込み要求を許可または拒否するために評価部 (evaluator) が使用する基準を変更することが望ましい場合がある。上記の例では、種々の不変条件が定義されており、ガードは、ポリシを満足する要求を実行したとき、不変条件が犯されないか、犯されることになるかに応じて、厳格にその要求を許可または拒否することを想定していた。しかし、システムは、このように実現する必要はない。例えば、INVが関連不変条件である場合、ガードは、次の条件に基づいて要求を許可または拒否するように条件付けることが可能である。
INV ∧ X
上記において、Xは、不変条件とは異なる、なんらかの条件である。この式は、不変条件に違反することになるアクセス要求を許可するように見えるが(このような要求は、INVが偽となる状態を発生する場合であっても、Xが真である限り許可される可能性があるので)、システムは、Xが絶対に真にならないこと、あるいはINVも真となる状況のときだけXが真になることを保証するように構成することもできる。この方法によると、最終的には、どの許可し得るトランザクションも、INVを真として残しておくことが保証されるので、これは、実際には、INVが残されることを保証する、1つの具体的方法にすぎない。
【0118】
第四に、アクセス要求を許可または拒否するだけでなく、ポリシを実施し、INVを残しておくような形で、アクセス要求を変更または補強するようにガードを構成することも可能である。例えば、NA(P,s)の資源がMP(s)に含まれることになるような形でソースがPMSに書き込むことを要求した場合、ガードはその書き込み要求を許可できるが、それと同時に、MP(s)に追加されてきた資源がNA(P,s)に含まれることがないように、およびその資源にすでにストアされていたデータをフラッシュ (flush) するようにポリシを変更することができる。別の例として、PMSがページテーブルエントリの集合を含んでいる場合、NA(P,s)に置かれているページを指すポインタを、ソースがこれらのエントリの1つに書き込むことを試みた場合、ガードは、そのエントリの不在ビットをセットするように要求を変更できるので、アドレス変換メカニズム310を実装しているMMUは、結局のところ、書き込まれたポインタをデリファレンスしないことになる。ページテーブル内にあって、「不在」とマークされているポインタは、MMUによってデリファレンスされないので、このトランザクションは不変条件を残すことになり、それゆえそのようなポインタで指された資源は事実上MPにないことになる。別の例として、ソースがエントリをPMSに書き込むことを試み、その結果、PMS内のページへの読み書きマッピングが作られることになった場合は(例えば、読み書き属性を持つPMSページをリストすることにより)、ガードは、読み書き属性ではなく、読取専用属性を持つエントリを書き込むことによって要求を変更することができる。これらの例は、本発明によれば、要求を提示された通りに許可または拒否しないで済むことを示し、ポリシと不変条件の両方を満足するような形に変更できることを示している。
【0119】
ガードを保護するための資源アクセスの制御
上述してきた説明から理解されるように、本発明のいくつかの態様では、アクセス要求がポリシPと関連不変条件に合致することを保証するために、ガードが存在することを前提にしている。従って、明らかなように、ポリシを実施できる能力は、ガードあっての有効であるので、ガードが妨害されると、ポリシ違反が起こる可能性がある。このような妨害からガードを保護する1つの方法は、ガードの機能に影響するような情報を、アクセスが制限された資源にストアしておくことである。
【0120】
上記のようにガードを保護するために、ガードを表すために必要な情報(例えば、実行コード、状態情報、など)は、すべてアドレス指定可能なエンティティ310にストアされている。CORE項はAのサブセットを示し、ガードが正しく機能するかは、a∈COREのときf(a)によって決まるようになっている。ガードは、委託されていないがCOREに書き込むのを防止しなければならない。
【0121】
上記要件を取り入れるために、ポリシP"が定義されている。このポリシはポリシPと同程度に制限的であるが、ガードの状態に影響を与えることについて委託されているソースを除く、すべてのソースsについては、CORE ⊆NW(P,s)の追加制限が設けられている。(このようなソースとしては、システム管理プロセス、またはオペレーティングシステムの委託されたコンポーネントがある。)前述のアクセス制御手法は、ポリシPの代わりに、ポリシP"で採用することができる。このようにすると、ポリシP"が適用され(P"は少なくともPと同程度に制限的であるので)、ガードが妨害から保護されるという効果が得られる。
【0122】
当然に理解されるように、上述した例示は、説明の便宜上示したものにすぎず、従って、本発明の範囲を限定するものではない。種々の実施形態と関連付けて本発明を説明してきたが、当然に理解されるように、そこで使用されている用語は限定的な用語ではなく、説明の便宜上の用語である。さらに、特定の手段、マテリアルおよび実施形態と関連付けて本発明を説明してきたが、本発明は、そこに開示されている具体的手段などに限定されるものではなく、機能的に等価の構造、方法および用途にも及ぶものであり、これらは請求項に記載の本発明の範囲に属するものである。この分野に精通し、本明細書の教示事項から恩恵を受ける当事者ならば当然に理解されるように、本発明は種々態様に変更することが可能であり、かつ本発明のすべての態様において、その範囲と精神から逸脱しない限り、そのような変更を行うことが可能である。
【図面の簡単な説明】
【図1】本発明の態様を実施することができる例示のコンピュータ環境を示すブロック図である。
【図2】アクセス要求が行われ、その評価が行われる例示の環境を示すブロック図である。
【図3】3つの集合およびこれらの集合間の関係を示すブロック図であり、そこには、資源がどのようにアドレスされるかがモデル化されている図である。
【図4】例示のアドレス指定可能なエンティティを示すブロック図である。
【図5】アドレス指定可能なエンティティでの書き込み要求を示すブロック図であり、そこには、その結果としてマッピングが変更されたことが示されている図である。
【図6】図5の読み取り要求で得られた変更マッピングでの読み取り要求を示すブロック図である。
【図7】ランダムアクセスメモリを示すブロック図である。
【図8】制御レジスタのセットを示すブロック図である。
【図9】CPUレジスタのセットを示すブロック図である。
【図10】分散システムにおけるシミュレートした共有メモリを示すブロック図である。
【図11】第1の例示アドレス変換メカニズムを示すブロック図である。
【図12】第2の例示アドレス変換メカニズムを示すブロック図である。
【図13】第1の例示ページング方式を示すブロック図である。
【図14】図13の例示ページング方式で使用するのに適している、第3の例示アドレス変換メカニズムを示すブロック図である。
【図15】例示のセグメンテーション方式を示すブロック図である。
【図16】第2の例示ページング方式を示すブロック図である。
【図17】第1の例示不変条件を示すブロック図である。
【図18】アクセス要求を評価するための例示プロセスを示すフロー図である。
【図19】例示アクセス要求の前後の図17の2サブセットを示すブロック図である。
【図20】選択的フィルタリングのためのプロセスを示すフロー図である。
【図21】読み取り要求を評価するための例示プロセスを示すフロー図である。
【図22】第2の例示不変条件を示すブロック図である。
【図23】第3の例示不変条件を示すブロック図である。
【図24】第4の例示不変条件を示すブロック図である。
【図25】図24の条件が存在する場合のアクセス要求を評価するための例示プロセスを示すフロー図である。
【符号の説明】
100 コンピュータ環境
110 コンピュータ
120 処理ユニット
121 システムバス
130 システムメモリ
131 読取専用メモリ(ROM)
132 ランダムアクセスメモリ(RAM)
133 基本入出力システム(BIOS)
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 取り外し不能、不揮発性メモリインタフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 取り外し可能、不揮発性メモリインタフェース
151 磁気ディスクドライブ
152 取り外し可能、不揮発性磁気ディスク
155 光ディスクドライブ
156 取り外し可能、不揮発性光ディスク
160 ユーザ入力インタフェース
161 マウス
162 キーボード
170 ネットワークインタフェース
171 ローカルエリアネットワーク
172 モデム
173 広域ネットワーク
180 リモートコンピュータ
181 メモリストレージデバイス
185 リモートアプリケーションプログラム
190 ビデオインタフェース
191 モニタ
195 出力周辺インタフェース
196 プリンタ
197 スピーカ
202 資源
204 ソース
206 ガード
208 環境
210 要求
302 集合
304 集合
306 集合
310 アドレス変換メカニズム
312 アドレス指定可能なエンティティ
502 書き込みオペレーション
602 読み取りオペレーション
804 ビデオコントロール
806 CPUコントロール
808 その他のコントロール
821 サウンドカード
822 ビデオカード
1302 仮想アドレス
1304 メモリ管理ユニット(MMU)
1306 ページのベースアドレス
1308 ページテーブル
1311 テーブルオフセット
1312 ページオフセット
1502 仮想アドレス
1504 メモリ管理ユニット
1506 セグメント
1508 ベースアドレス
1601 ストレージロケーション
1602 ページディレクトリ
1604 ページテーブル
1606 ページのベースアドレス
1610 仮想アドレス
1611 ページディレクトリオフセット
1612 ページテーブルオフセット
1613 ページオフセット
1620 メモリ管理ユニット(MMU)

Claims (68)

  1. 1つまたは2つ以上の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法であって、前記資源の各々は物理アドレスを有し、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、任意の時点で所与の仮想アドレスに対応する資源は、前記資源に格納可能な、前記仮想アドレスを前記物理アドレスにマッピングするアドレス変換テーブルによって少なくとも部分的に判定され、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
    前記方法は、
    前記ガードが、前記ソースから資源にアクセスする要求を受け取るステップと
    前記ガードが、前記要求が読み取り要求であるか、書き込み要求であるかを判断するステップと、
    前記要求が読み取り要求ならば、前記ガードが、前記ソースから前記資源への読み取りを前記ポリシが許可しているかを判断し、許可している場合に前記要求を許可するステップと、
    前記要求が書き込み要求ならば、前記ガードが、前記ソースから前記資源への書き込みを前記ポリシ許可しているかを判断し、許可している場合前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかを判断し、書き込まれない場合に前記要求を許可するステップ
    を含むことを特徴とする方法。
  2. 請求項1に記載の方法において、さらに、
    前記ガードが、ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれも含まないように、前記アドレス変換テーブルを初期化するステップを含むことを特徴とする方法。
  3. 請求項1に記載の方法において、資源は、個別にアドレス可能なランダムアクセスメモリユニットを含むことを特徴とする方法。
  4. 請求項1に記載の方法において、
    前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し、書き込まれない場合に前記要求を許可することを特徴とする方法。
  5. 請求項1に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許可されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とする方法。
  6. 請求項1に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、各仮想アドレスは、その仮想アドレスと関連付けられた資源が書き込み可能でないかどうかを示す属性と関連付けられており、前記ガードは、前記要求を実行したとき、その属性が前記ソースによって書き込み可能であることを示している仮想アドレスをもつ資源が、前記集合内に含まれるかをさらに判断し、含まれない場合に前記要求を許可することを特徴とする方法。
  7. 請求項6に記載の方法において、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とする方法。
  8. 請求項7に記載の方法において、前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し書き込まれない場合に、および前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源が前記集合内に含まれるかをさらに判断し含まれない場合に、前記要求を許可することを特徴とする方法。
  9. 請求項1に記載の方法において、前記要求を実行すると、資源の1つまたは2つ以上は仮想アドレスを取得することになり、前記方法は、前記ガードが、前記要求を実行すると仮想アドレスを取得する資源の各々へのアクセスを前記ポリシが許可しているかどうかを判断するステップをさらに含むことを特徴とする方法。
  10. 請求項1に記載の方法において、前記要求を実行すると、前記ポリシが変更されることになり、前記方法は、前記ガードが、前記変更によって影響を受けた前記ポリシが、前記ソースが仮想アドレスを使用してアドレスできる資源のすべてに前記ソースがアクセスするのを許可しているかどうかを判断するステップをさらに含むことを特徴とする方法。
  11. 請求項10に記載の方法において、前記ポリシの変更は、アクセスが許されていなかった資源のうちの、少なくとも第1の資源へのアクセスを許可することを含んでいて、前記方法は、前記ガードが、前記ポリシの変更の前に前記第1の資源にストアされていた値を見えないようにするステップをさらに含むことを特徴とする方法。
  12. 請求項10に記載の方法において、前記ポリシの変更は、すべての資源への無制限アクセスを許可することを含むことを特徴とする方法。
  13. 請求項1に記載の方法において、前記要求は、前記資源のうちの1つに書き込む要求を含んでいて、前記方法は、
    前記ガードが、前記資源のうちの1つが前記要求に従って書き込まれる前に一定の時間の間待つステップさらに含むことを特徴とする方法。
  14. 請求項13に記載の方法において、さらに、
    前記書き込み要求を受け取った後、前記ガードが、前記資源のうちの前記1つの資源を読み取る要求を受け取るステップと
    次のどちらかによって、すなわち、
    前記待ちのアクトの対象となっている書き込み要求を実行して、ストアされた値を資源から取り出すことによって、あるいは
    書き込み要求が実行されたならば資源がストアしている値を取り出すことによって、
    前記ガードが、前記読み取り要求を処理するステップと
    を含むことを特徴とする方法。
  15. 請求項1に記載の方法において、さらに、
    前記要求がポリシの下で許されていて、かつ条件が真である場合、前記ガードが、前記要求を許可するステップと
    前記要求を実行したとき、前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれない場合を除いて、前記条件が絶対に真にならないことを保証するステップ
    を含むことを特徴とする方法。
  16. 請求項1に記載の方法において、前記要求を実行したとき、前記ポリシに対する第1の変更が行われると共に、どの資源が仮想アドレスを持つかに影響する第2の変更が行われ、前記方法は、さらに、前記ガードが、前記要求を実行したとき、前記第1の変更の影響を受けたポリシがアクセスを許可していない資源と、前記第2の変更による影響を受けて、仮想アドレスを持つようになった資源との間に交差が起こらないことを判断するステップを含むことを特徴とする方法。
  17. 1つまたは2つ以上の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法を実行するコンピュータ実行可能命令でコーディングされているコンピュータ可読記録媒体であって、前記資源の各々は物理アドレスを有し、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、任意の時点で所与の仮想アドレスに対応する資源は、前記資源に格納可能な、前記仮想アドレスを前記物理アドレスにマッピングするアドレス変換テーブルによって少なくとも部分的に判定され、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
    前記方法は、
    前記ガードが、前記ソースから資源にアクセスする要求を受け取るステップと
    前記ガードが、前記要求が読み取り要求であるか、書き込み要求であるかを判断するステップと、
    前記要求が読み取り要求ならば、前記ガードが、前記ソースから前記資源への読み取りを前記ポリシが許可しているかを判断し、許可している場合に前記要求を許可するステップと、
    前記要求が書き込み要求ならば、前記ガードが、前記ソースから前記資源への書き込みを前記ポリシ許可しているかを判断し、許可している場合前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかを判断し、書き込まれない場合に前記要求を許可するステップ
    を含むことを特徴とするコンピュータ可読記録媒体。
  18. 請求項17に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
    前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれも含まないように、前記アドレス変換テーブルを初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
  19. 請求項17に記載のコンピュータ可読記録媒体において、資源は、個別にアドレス可能なランダムアクセスメモリユニットを含むことを特徴とするコンピュータ可読記録媒体。
  20. 請求項17に記載のコンピュータ可読記録媒体において、前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し、書き込まれない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
  21. 請求項17に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許可されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
  22. 請求項17に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、各仮想アドレスは、その仮想アドレスと関連付けられた資源が書き込み可能でないかどうかを示す属性と関連付けられており、前記ガードは、前記要求を実行したとき、その属性が前記ソースによって書き込み可能であることを示している仮想アドレスをもつ資源が、前記集合内に含まれるかをさらに判断し、含まれない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
  23. 請求項22に記載のコンピュータ可読記録媒体において、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
  24. 請求項23に記載のコンピュータ可読記録媒体において、前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し書き込まれない場合に、および前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源が前記集合内に含まれるかをさらに判断し含まれない場合に、前記要求を許可することを特徴とするコンピュータ可読記録媒体。
  25. 請求項17に記載のコンピュータ可読記録媒体において、前記要求は、前記資源のうちの1つに書き込む要求を含んでいて、前記方法は、
    前記ガードが、前記資源のうちの1つが前記要求に従って書き込まれる前に一定の時間の間待つステップさらに含むことを特徴とするコンピュータ可読記録媒体。
  26. 請求項25に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
    前記書き込み要求を受け取った後、前記ガードが、前記資源のうちの前記1つの資源を読み取る要求を受け取るステップと
    次のどちらかによって、すなわち、
    前記待ちのアクトの対象となっている書き込み要求を実行して、ストアされた値を資源から取り出すことによって、あるいは
    書き込み要求が実行されたならば資源がストアしている値を取り出すことによって、
    前記ガードが、前記読み取り要求を処理するステップと
    を含むことを特徴とするコンピュータ可読記録媒体。
  27. 請求項17に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
    前記要求がポリシの下で許されていて、かつ条件が真である場合、前記ガードが、前記要求を許可するステップと
    前記要求を実行したとき、前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれない場合を除いて、前記条件が絶対に真にならないことを保証するステップ
    を含むことを特徴とするコンピュータ可読記録媒体。
  28. 複数の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法であって、前記資源の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であって、変更可能マッピングが、前記仮想アドレスの少なくとも一部を前記物理アドレスの少なくとも一部に対応付け、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
    前記方法は、
    前記ガードが、前記ソースが前記ポリシの下でアクセスすること許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップと
    前記ガードが、前記資源の1つを読み取る要求を受け取るステップであって前記要求は、仮想アドレスの1つによって前記資源の前記1つを特定する、要求を受け取るステップと
    前記ガードが、前記要求を許可するステップと
    を含むことを特徴とする方法。
  29. 請求項28に記載の方法において、前記マッピングは、少なくとも一部が、前記要求を出したソースの識別子に基づいていることを特徴とする方法。
  30. 請求項29に記載の方法において、前記マッピングは、さらに、プロセッサが動作しているときのモードに基づいていることを特徴とする方法。
  31. 請求項28に記載の方法において、前記資源を初期化するステップは、
    前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
  32. 請求項28に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第1の集合にストアされており、前記資源を初期化するステップは、
    前記ソースが前記ポリシの下でアクセスすることが許されていない資源のいずれもが第1の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
  33. 請求項28に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第1の集合にストアされており、前記資源を初期化するステップは、
    前記ソースが前記ポリシの下で書き込み許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびソースがポリシの下で書き込みを許されていない資源のどれもが前記第1の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
  34. 複数の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法を実行するコンピュータ実行可能命令でコーディングされているコンピュータ可読記録媒体であって、前記資源の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であり、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
    前記方法は、
    前記ガードが、前記ソースが前記ポリシの下でアクセスすること許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップと
    前記ガードが、前記資源の1つを読み取る要求を受け取るステップであって前記要求は、仮想アドレスの1つによって前記資源の前記1つを特定する、要求を受け取るステップと
    前記ガードが、前記要求を許可するステップと
    を含むことを特徴とするコンピュータ可読記録媒体。
  35. 請求項34に記載のコンピュータ可読記録媒体において、前記資源を初期化するステップは、
    前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
  36. 請求項34に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第1の集合にストアされており、前記資源を初期化するステップは、
    前記ソースが前記ポリシの下でアクセスすることが許されていない資源のいずれもが第1の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
  37. 請求項34に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第1の集合にストアされており、前記資源を初期化するステップは、
    前記ソースが前記ポリシの下で書き込み許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびソースがポリシの下で書き込みを許されていない資源のどれもが前記第1の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
  38. 資源の第1の集合を備えるシステムにおいて、ソースから複数の資源へのアクセスをポリシに従って制御する方法であって、前記資源の集合の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であって、変更可能マッピングが、前記仮想アドレスの少なくとも一部を前記物理アドレスの少なくとも一部に対応付け、前記仮想アドレスの各々は、仮想アドレスによって特定された資源が読取専用であるかどうかを示す関連の属性を有し、前記資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
    前記方法は、
    前記ガードが、前記ソースが前記ポリシの下でアクセスすること許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびその仮想アドレス前記ソースによって読取専用であることを示す属性と関連付けられているどの資源も、前記資源の集合に含まれていない状態に前記資源を初期化するステップと
    前記ガードが、前記資源の1つに書き込む要求を受け取るステップであって前記要求は、仮想アドレスの1つによって前記資源の前記1つを特定する、要求を受け取るステップと
    前記ガードが、前記要求を許可するステップと
    を含むことを特徴とする方法。
  39. 請求項38に記載の方法において、さらに、
    前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
  40. 請求項38に記載の方法において、前記マッピングは、少なくとも一部が、前記要求を出したソースの識別子に基づいていることを特徴とする方法。
  41. 請求項40に記載の方法において、前記マッピングは、さらに、プロセッサが動作しているときのモードに基づいていることを特徴とする方法。
  42. 資源の第1の集合を備えるシステムにおいて、ソースから複数の資源へのアクセスをポリシに従って制御する方法を実行するコンピュータ実行可能命令でコーディングされたコンピュータ可読記録媒体であって、前記資源の集合の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であり、前記仮想アドレスの各々は、仮想アドレスによって特定された資源が読取専用であるかどうかを示す関連の属性を有し、前記資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
    前記方法は、
    前記ガードが、前記ソースが前記ポリシの下でアクセスすること許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびその仮想アドレス前記ソースによって読取専用であることを示す属性と関連付けられているどの資源も、前記資源の集合に含まれていない状態に前記資源を初期化するステップと
    前記ガードが、前記資源の1つに書き込む要求を受け取るステップであって前記要求は、仮想アドレスの1つによって前記資源の前記1つを特定する、要求を受け取るステップと
    前記ガードが、前記要求を許可するステップと
    を含むことを特徴とするコンピュータ可読記録媒体。
  43. 請求項42に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
    前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
  44. 複数の資源と仮想メモリマネージャを含むシステムであって、前記資源の各々は、物理アドレスによってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、前記仮想メモリマネージャは、前記資源の少なくとも一部を、前記資源に格納可能な、前記仮想アドレスを前記物理アドレスにマッピングするアドレス変換テーブルによってアドレス可能にすることを可能とし、前記システムは、
    ソースが前記資源の少なくとも1つにアクセスするのを許可する要求を評価するガードであって、
    ソースから前記資源にアクセスする要求を受け取り
    前記要求が読み取り要求であるか、書き込み要求であるかを判断し、
    前記要求が読み取り要求ならば、前記ソースから前記資源への読み取りを前記ポリシが許可しているかを判断し、許可している場合に前記要求を許可し、
    前記要求が書き込み要求ならば、前記ソースから前記資源への書き込みを前記ポリシが許可し得る場合、前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかを判断し、書き込まれない場合に前記要求を許可する、ガードを含むことを特徴とするシステム。
  45. 請求項44に記載のシステムにおいて、資源は、個別にアドレス可能であるランダムアクセスメモリユニットを含むことを特徴とする改良システム。
  46. 請求項44に記載のシステムにおいて、前記アドレス変換テーブルは、前記ソースが前記ポリシの下でアクセスすることを許されている資源のどれもが、仮想アドレスを持つソースによってアドレス可能になっていない状態に初期化されており、前記ガードは、アクセスが要求された資源を特定するために仮想アドレスを使用しているすべての読み取り要求を許可することを特徴とするシステム。
  47. 請求項44に記載のシステムにおいて、資源のどれが仮想アドレスと関連付けられているかに影響を与える情報は、前記資源の集合にストアされており、前記ガードは、さらに、
    前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源が前記集合に含まれるかを判断し含まれない場合、前記要求を許可することを特徴とするシステム。
  48. 請求項44に記載のシステムにおいて、前記ガードは、さらに、
    前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれかが、仮想アドレスを持つソースによってアドレス可能になる事態になるかを判断し、ならない場合に前記要求を許可することを特徴とするシステム。
  49. 請求項48に記載のシステムにおいて、資源のどれが仮想アドレスと関連付けられているかに影響を与える情報は、前記資源の集合にストアされており、前記ガードは、さらに、
    前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源が前記集合に含まれるかを判断し、含まれない場合に前記要求を許可することを特徴とする改良システム。
  50. 請求項44に記載のシステムにおいて、システムは、さらにプロセッサを含み、前記ガードは、前記プロセッサ上で実行される実行可能命令を含んでいることを特徴とするシステム。
  51. 請求項44に記載のシステムにおいて、前記ガードは、ハードウェアロジックとファームウェアのうちの、少なくとも1つを含んでいることを特徴とするシステム。
  52. 請求項44に記載のシステムにおいて、前記仮想メモリマネージャは、仮想アドレスによって要求された資源に属性を関連付け、前記属性は、資源が書き込み専用であるか、読み書き可能であるかを示しており、前記仮想メモリマネージャは、資源が読取専用であることを、その対応する属性が示している資源に書き込む要求が受け取られたときに、前記ガードを呼び出すように構成されていることを特徴とするシステム。
  53. 請求項52に記載のシステムにおいて、前記仮想メモリマネージャは、資源が読取専用であることを、その対応する属性が示している資源に書き込む要求を受け取ると、必ず例外を起こし、前記ガードは、前記例外のハンドラを含んでいるか、あるいはそのハンドラによって呼び出されることを特徴とするシステム。
  54. 請求項52に記載のシステムにおいて、資源のどれが仮想アドレスと関連付けられているかに影響を与える情報は、前記資源の集合にストアされており、前記集合内の資源の各々は、前記ソースによって要求されたとき資源が読取専用であることを示している属性と関連付けられていることを特徴とするシステム。
  55. 請求項44に記載のシステムにおいて、前記仮想メモリマネージャは、仮想アドレスによって要求され得る資源の各々について、資源が存在するか、存在しないかを示し、前記仮想メモリマネージャは、存在しないと示されている資源にアクセスする要求を受け取ったときは、前記ガードを呼び出すように構成されており、および前記仮想メモリマネージャは、資源が存在しないとその対応する属性が示している資源にアクセスする要求を受け取ったときは、前記ガードを呼び出すように構成されていることを特徴とするシステム。
  56. アドレス指定可能なエンティティへのアクセスをポリシPに従って制御する、仮想メモリマネージャを含むシステムであって、前記アドレス指定可能なエンティティは、第1の集合Aから第2の集合Mへの第1マッピングを定義しており、第3集合Vから第1の集合への第2マッピングが存在するとき、関数f: A→Mは第1マッピングを示し、関数g: S × V → Aは第2マッピングを示しており、ここでSはアドレス指定可能なエンティティへのアクセスを要求できるソースの集合であるものにおいて、前記仮想メモリマネージャは、第2の集合Mの少なくとも一部を、前記アドレス指定可能なエンティティによってアドレス可能にすることを可能とし、前記システムは、
    ソースsからの要求を評価して(ここでs ∈ S)、第1マッピングを評価または変更するガードであって、
    ソースsから前記アドレス指定可能なエンティティにアクセスする要求を受け取り
    前記要求が読み取り要求であるか、書き込み要求であるかを判断し、
    前記要求が読み取り要求ならば、前記ソースsから前記アドレス指定可能なエンティティへの読み取りを前記ポリシPが許可しているかとする制約に基づいて要求を条件付きで許可し、
    前記要求が書き込み要求ならば、前記ソースsから前記アドレス指定可能なエンティティへの書き込みを前記ポリシPが許可し得るか、および前記要求を実行しても、MP(s)に関するステートメントが偽とならないか(ここで、MP(s)は、任意のv∈Vのときg(s, v)の解となる第1の集合Aのすべてのメンバからなるとする制約に基づいて要求を条件付きで許可する、ガードを含むことを特徴とするシステム。
  57. 請求項56に記載のシステムにおいて、前記ステートメントは、
    MP(s) ∩ NA(P, s) = ф
    を含み(ここで、NA(P, s)は、第1の集合Aのすべてのメンバからなる)、そこでは、ポリシPは、ソースsが第1マッピングを評価または変更するのを許可していないことを特徴とするシステム。
  58. 請求項57に記載のシステムにおいて、前記ステートメントは、
    MP(s) ∩ NW(P, s) = ф
    を含み(ここで、NW(P, s)は、第1の集合Aのすべてのメンバからなる)、そこでは、ポリシPは、ソースsが第1マッピングを変更するのを許可していないことを特徴とするシステム。
  59. 請求項58に記載のシステムにおいて、第1マッピングのうち、第1の集合Aのサブセットに置かれている部分は第2マッピングに影響を及ぼし、前記ステートメントは、
    (MP(s)∪PMS)∩NW(P, s) = ф
    を含む(ここで、PMSは前記サブセットを示していることを特徴とするシステム。
  60. 請求項57に記載のシステムにおいて、第1マッピングのうち、第1の集合Aのサブセットに置かれている部分は第2マッピングに影響を及ぼし、前記ステートメントは、
    (MP(s)∪PMS)∩NA(P, s) = ф
    を含む(ここで、PMSは前記サブセットを示していることを特徴とするシステム。
  61. 請求項57に記載のシステムにおいて、関数gは、v ∈ Vのときg(s, v)の解となる第1の集合Aの各メンバに属性を関連付け、属性は、第1マッピングが前記メンバで変更可能であるかどうかを示しており、第1マッピングのうち、第1の集合のサブセットに置かれている部分は第2マッピングに影響を及ぼし、前記ステートメントは、
    MP(s)∩NA(P, s) = ф∧MPRW(s) ∩PMS = ф
    を含む(ここで、MPRW(s)は、その属性がソースsによって変更可能であることを示しているAのすべてのメンバからなり、PMSは前記サブセットを示していることを特徴とするシステム。
  62. 請求項57に記載のシステムにおいて、関数gは、v ∈ Vのときg(s, v)の解となる第1の集合Aの各メンバに属性を関連付け、属性は、第1マッピングが前記メンバで変更可能であるかどうかを示しており、第1マッピングのうち、第1の集合のサブセットに置かれている部分は第2マッピングに影響を及ぼし、前記ステートメントは、
    MP(s)∩NW(P, s) = ф∧MPRW(s) ∩PMS = ф
    を含む(ここで、NW(P, s)は、そこではポリシPはソースsが第1マッピングを変更するのを許可していない第1の集合Aのすべてのメンバからなり、MPRW(s)は、その属性がソースsによって変更可能であることを示しているAのすべてのメンバからなり、PMSは前記サブセットを示していることを特徴とするシステム。
  63. 請求項57に記載のシステムにおいて、関数gは、v ∈ Vのときg(s, v)の解となる第1の集合Aの各メンバに属性を関連付け、属性は、第1マッピングが前記メンバで変更可能であるかどうかを示しており、第1マッピングのうち、第1の集合のサブセットに置かれている部分は第2マッピングに影響を及ぼし、前記ステートメントは、
    MP(s)∩NR(P, s) = ф∧MPRW(s) ∩PMS = ф
    を含む(ここで、NR(P, s)は、そこではポリシPはソースsが第1マッピングを変更するのを許可していない第1の集合Aのすべてのメンバからなり、MPRW(s)は、その属性がソースsによって変更可能であることを示しているAのすべてのメンバからなり、PMSは前記サブセットを示していることを特徴とするシステム。
  64. 請求項57に記載のシステムにおいて、関数gは、g: S x V x E →Aとなるように、さらに任意の情報Eに基づいていることを特徴とするシステム。
  65. 請求項57に記載のシステムにおいて、さらに、
    第1マッピングを実装しているランダムアクセスメモリと、
    第2マッピングを実装しているメモリ管理ユニットと
    を含んでいることを特徴とするシステム。
  66. 請求項57に記載のシステムにおいて、CORE ⊆ Aとなっている値の集合COREが存在し、f(a)は、すべてa ∈ COREのときガードの機能に影響を及ぼし、Pは、ソースの少なくとも一つがCORE内のエレメントのいずれかで第1マッピングを変更するのを禁止していることを特徴とするシステム。
  67. 請求項56に記載のシステムにおいて、要求を条件付きで許可することは、前記要求の代わりに新しい要求を実行することを含み、新しい要求を実行したとき、ステートメントが偽にならないようにすることを特徴とするシステム。
  68. 請求項56に記載のシステムにおいて、前記ガードは、ステートメントは偽であるが、Xが真であるとき前記要求を条件付きで許可するように構成されており(ここで、Xは任意の条件である)、および、前記ガードは、さらに、ステートメントが真でなければXが真にならないことを保証するように構成されていることを特徴とするシステム。
JP2003112225A 2002-04-17 2003-04-16 アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御 Expired - Lifetime JP4467249B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/124,609 US6986006B2 (en) 2002-04-17 2002-04-17 Page granular curtained memory via mapping control
US10/124,609 2002-04-17
US10/286,613 2002-11-01
US10/286,613 US7565509B2 (en) 2002-04-17 2002-11-01 Using limits on address translation to control access to an addressable entity

Publications (2)

Publication Number Publication Date
JP2003330799A JP2003330799A (ja) 2003-11-21
JP4467249B2 true JP4467249B2 (ja) 2010-05-26

Family

ID=26822765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003112225A Expired - Lifetime JP4467249B2 (ja) 2002-04-17 2003-04-16 アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御

Country Status (4)

Country Link
US (3) US7565509B2 (ja)
EP (1) EP1355235A3 (ja)
JP (1) JP4467249B2 (ja)
NO (1) NO329880B1 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565509B2 (en) 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US6986006B2 (en) * 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US7317718B1 (en) * 2002-12-06 2008-01-08 Juniper Networks, Inc. Flexible counter update and retrieval
US7975117B2 (en) 2003-03-24 2011-07-05 Microsoft Corporation Enforcing isolation among plural operating systems
US7139892B2 (en) * 2003-05-02 2006-11-21 Microsoft Corporation Implementation of memory access control using optimizations
US7310721B2 (en) * 2003-10-30 2007-12-18 Microsoft Corporation Shadow page tables for address translation control
US7069389B2 (en) * 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7694121B2 (en) * 2004-06-30 2010-04-06 Microsoft Corporation System and method for protected operating system boot using state validation
JP4548717B2 (ja) * 2004-09-24 2010-09-22 株式会社日立製作所 記憶装置の計算機および記憶装置の管理方法
US20060070042A1 (en) * 2004-09-24 2006-03-30 Muratori Richard D Automatic clocking in shared-memory co-simulation
JP4681868B2 (ja) * 2004-12-16 2011-05-11 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体
US7814287B2 (en) * 2005-07-15 2010-10-12 Xensource, Inc. Using writeable page tables for memory address translation in a hypervisor environment
CN101495990B (zh) * 2005-12-02 2011-09-14 思杰系统有限公司 用于提供从代理服务器到虚拟计算环境的身份验证证明以访问远程资源的方法和设备
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
WO2008011030A2 (en) * 2006-07-17 2008-01-24 Xensource, Inc Tracking current time on multiprocessor hosts and virtual machines
US8156501B2 (en) * 2006-10-27 2012-04-10 International Business Machines Corporation Implementing dynamic authority to perform tasks on a resource
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US7788464B2 (en) * 2006-12-22 2010-08-31 Microsoft Corporation Scalability of virtual TLBs for multi-processor virtual machines
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US7853679B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7870277B2 (en) * 2007-03-12 2011-01-11 Citrix Systems, Inc. Systems and methods for using object oriented expressions to configure application security policies
CN101295265A (zh) * 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
US8286246B2 (en) 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US9100319B2 (en) 2007-08-10 2015-08-04 Fortinet, Inc. Context-aware pattern matching accelerator
WO2010127365A1 (en) 2009-05-01 2010-11-04 Citrix Systems, Inc. Systems and methods for establishing a cloud bridge between virtual storage resources
US20120151153A1 (en) * 2009-07-03 2012-06-14 Axel JANTSCH Programmable Controller
CN102483717B (zh) * 2009-11-30 2014-09-17 惠普发展公司,有限责任合伙企业 用于存储器磨损平衡的重映射方法及设备
EP2354980A1 (en) * 2010-02-04 2011-08-10 ST-Ericsson SA Management of communications between a client equipment and a server equipment providing to the client equipment computer resources represented according to a file system
US9141936B2 (en) * 2010-08-04 2015-09-22 Sas Institute Inc. Systems and methods for simulating a resource constrained process
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US9280458B2 (en) * 2011-05-12 2016-03-08 Citrix Systems, Inc. Reclaiming memory pages in a computing system hosting a set of virtual machines
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9251088B2 (en) 2013-10-30 2016-02-02 Globalfoundries Inc. Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation
EP3195178B1 (en) * 2014-07-23 2019-02-20 GrammaTech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
US11785015B2 (en) * 2021-02-24 2023-10-10 Bank Of America Corporation Information security system for detecting unauthorized access requests

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4328542A (en) 1979-11-07 1982-05-04 The Boeing Company Secure implementation of transition machine computer
US4584639A (en) 1983-12-23 1986-04-22 Key Logic, Inc. Computer security system
US4926322A (en) 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
EP0466550B1 (en) * 1990-06-29 1998-11-18 Digital Equipment Corporation Conversion of internal processor register commands to I/O space address
US5822784A (en) 1993-03-19 1998-10-13 Intel Corporation Mechanism supporting execute in place read only memory applications located on removable computer cards
JPH0784851A (ja) * 1993-09-13 1995-03-31 Toshiba Corp 共有データ管理方法
US5596739A (en) 1994-02-08 1997-01-21 Meridian Semiconductor, Inc. Method and apparatus for detecting memory segment violations in a microprocessor-based system
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5928349A (en) 1995-02-24 1999-07-27 International Business Machines Corporation Mixed-endian computing environment for a conventional bi-endian computer system
US6061773A (en) 1996-05-03 2000-05-09 Digital Equipment Corporation Virtual memory system with page table space separating a private space and a shared space in a virtual memory
US5978892A (en) 1996-05-03 1999-11-02 Digital Equipment Corporation Virtual memory allocation in a virtual address space having an inaccessible gap
US5809563A (en) 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US6349355B1 (en) 1997-02-06 2002-02-19 Microsoft Corporation Sharing executable modules between user and kernel threads
US6219770B1 (en) 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
JP2000137983A (ja) * 1998-08-26 2000-05-16 Toshiba Corp 半導体記憶装置
US6434685B1 (en) 1999-02-11 2002-08-13 Oracle Corp. Paged memory management system within a run-time environment
US6496912B1 (en) 1999-03-25 2002-12-17 Microsoft Corporation System, method, and software for memory management with intelligent trimming of pages of working sets
US6622263B1 (en) 1999-06-30 2003-09-16 Jack Justin Stiffler Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance
US6345351B1 (en) 1999-11-12 2002-02-05 Telefonaktiebolaget Lm Ericsson(Publ) Maintenance of speculative state of parallel executed jobs in an information processing system
US6842832B1 (en) 2000-08-25 2005-01-11 International Business Machines Corporation Reclaim space reserve for a compressed memory system
US7073173B1 (en) 2000-12-04 2006-07-04 Microsoft Corporation Code and thread differential addressing via multiplex page maps
US6848046B2 (en) 2001-05-11 2005-01-25 Intel Corporation SMM loader and execution mechanism for component software for multiple architectures
US6662289B1 (en) 2001-05-15 2003-12-09 Hewlett-Packard Development Company, Lp. Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems
US6789156B1 (en) 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US20040015864A1 (en) 2001-06-05 2004-01-22 Boucher Michael L. Method and system for testing memory operations of computer program
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
US6986006B2 (en) 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US7058768B2 (en) 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7565509B2 (en) 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US6829698B2 (en) 2002-10-10 2004-12-07 International Business Machines Corporation Method, apparatus and system for acquiring a global promotion facility utilizing a data-less transaction
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7409555B2 (en) 2003-02-10 2008-08-05 Red Hat, Inc. Electronic document active content assurance

Also Published As

Publication number Publication date
US7650478B2 (en) 2010-01-19
NO329880B1 (no) 2011-01-17
US7565509B2 (en) 2009-07-21
US20060095689A1 (en) 2006-05-04
JP2003330799A (ja) 2003-11-21
NO20031704L (no) 2003-10-20
NO20031704D0 (no) 2003-04-11
EP1355235A3 (en) 2007-10-10
EP1355235A2 (en) 2003-10-22
US20030200412A1 (en) 2003-10-23
US7644246B2 (en) 2010-01-05
US20060117169A1 (en) 2006-06-01

Similar Documents

Publication Publication Date Title
JP4467249B2 (ja) アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御
US7058768B2 (en) Memory isolation through address translation data edit control
US10360411B2 (en) Secure processing unit systems and methods
JP4928721B2 (ja) アドレス変換制御のためのシャドウ・ページテーブル
JP4672281B2 (ja) 最適化を用いたメモリアクセス制御の実装
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US7350085B2 (en) Tamper resistant software-mass data encoding
US9021605B2 (en) Method and system for protecting sensitive data in a program
JP4989543B2 (ja) メモリドメインを基にしたデータ処理システム内のセキュリティ制御
US20150058997A1 (en) System and Method for Self-Protecting Data
US20040205203A1 (en) Enforcing isolation among plural operating systems
JPS61195443A (ja) データ処理システム内のシステムフアイルを保護する方法及びデータ処理システム
JP2004530979A (ja) メモリの一部を保護するための方法および装置
JP2005512228A (ja) 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法
JP2001005726A (ja) メモリアドレス空間拡張装置及びプログラムを記憶した記憶媒体
JP3555858B2 (ja) プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体
JP4507569B2 (ja) 情報処理装置および情報処理方法、プログラム、並びに記録媒体
Cirstea et al. Rewrite based specification of access control policies
KR20220148323A (ko) 복수의 물리적 어드레스 공간들을 사용하는 장치 및 방법
Vasek Incorporating support for capabilities in a RISC processor architecture
CA2405742A1 (en) Tamper resistant software - mass data encoding
JP2016218944A (ja) 半導体集積回路、電子機器、及び機密保護方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100120

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100219

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100223

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130305

Year of fee payment: 3