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

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

Info

Publication number
JP2003330799A
JP2003330799A JP2003112225A JP2003112225A JP2003330799A JP 2003330799 A JP2003330799 A JP 2003330799A JP 2003112225 A JP2003112225 A JP 2003112225A JP 2003112225 A JP2003112225 A JP 2003112225A JP 2003330799 A JP2003330799 A JP 2003330799A
Authority
JP
Japan
Prior art keywords
request
resources
policy
resource
source
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.)
Granted
Application number
JP2003112225A
Other languages
English (en)
Other versions
JP4467249B2 (ja
Inventor
Marcus Peinado
ペイナード マーカス
Paul England
イングランド ポール
Bryan Mark Willman
マーク ウィルマン ブライアン
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

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 データ記憶資源を物理アドレスによって、ま
たオプションとして仮想アドレスによって識別可能とす
る。 【解決手段】 ポリシは、どの資源がアクセス可能で、
どの資源がアクセス可能でないかを定義している。資源
にアクセスする要求は、その資源へのアクセスがポリシ
によって許可されていて、そのアクセスを実行したと
き、ポリシがアクセスを許可していない資源に仮想アド
レスが割り当てられるようなことがなければ、許可され
る。アクセスが許可されていない資源は仮想アドレスを
持っていないので、仮想アドレスで資源を特定してい
る、ある種のアクセス要求は、ポリシを調べなくても許
可可能になる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的には、計算
機の分野に関し、さらに具体的には、コンピュータメモ
リのような、アドレス指定可能なエンティティ (実体、
構成要素) へのアクセスを制限する技法に関する。
【0002】
【従来の技術】汎用コンピュータの1つの特徴は、無制
限にわたる、多数の機能を実行できることであり、これ
は疑いのない利点でもある。コンピュータは、コンピュ
ータが実行できる命令セットをもっている。プログラマ
は、その物理的能力の範囲内にあれば、例えば、数学的
計算、データの保管/取り出し、入出力、暗号化/解読、
などの、どのようなタスクでも、そのタスクを実行する
命令(つまり、プログラム)をコンピュータに与えるだ
けでコンピュータに実行させることができる。コンピュ
ータの無限の汎用性は、人間が活動するほとんどすべて
の分野にとって恩恵となっているが、この汎用性は欠点
にもなっている。すなわち、コンピュータはほとんどど
の機能でも実行できるので、正しいことだけでなく、誤
ったことも実行するように指示できるからである。銀行
取引を実行するように、あるいは企業機密へのアクセス
を制限するように、あるいは著作権保護情報のライセン
ス条項を実施するようにプログラムされている同じコン
ピュータは、顧客の銀行口座に侵入し、あるいは企業機
密を暴露し、あるいは著作権で保護されたコンテンツを
違法に複写するようにプログラムすることも可能になっ
ている。コンピュータに委ねられているどの機能も、コ
ンピュータの機能に無制限にアクセスできる悪意のプロ
グラマによって妨害される可能性がある。従って、この
ような妨害に強いコンピュータを構築する作業は、コン
ピュータの資源(資源)の一部へのアクセスを制限する
ような形で行われることがよくあり、その結果、これら
の資源は、適切な状況の時だけ使用できるようにしてい
る。
【0003】アクセスを制限させることができる重要な
資源の集合は、例えば、コンピュータのメモリ、レジス
タなどように、データを格納している資源の集合であ
る。これらのデータ記憶資源は、商業的に重要な情報を
保護する暗号鍵などの、貴重データや機密データ、ある
いは銀行口座へのアクセスを保護するパスワードをスト
アしておくことができる。この種のデータが存在するこ
とは、そのデータをコンピュータで使用するときのジレ
ンマになっている。例えば、暗号を使用して情報を保護
するコンピュータは、その情報を解読する暗号鍵(また
はその鍵の少なくとも一部の表現)を知っていなければ
ならず、正当な状況の下でその鍵を使用して情報を解読
できなければならない。しかし、コンピュータは、その
鍵への無制限なアクセスを与えることができない。さも
ないと、不正な人がその鍵のコピーを世界中の人々に簡
単に配信することが可能になり、そのことが保護体系を
破壊することになるからである。同じことは、パスワー
ド、企業機密、さらには、鍵、パスワード、および機密
を保護するコードといった、種々タイプの情報にも当て
はまる。コンピュータは、情報が合法的に使用されるよ
うに情報をメモリに置いておくことが要求されるが、コ
ンピュータはこの情報を違法または悪意の使用から保護
しなければならない。以上の例から明らかであるよう
に、コンピュータのメモリ(または他のデータ記憶資
源)の一部は、付帯情況が正当であるときはアクセスが
許可され、付帯情況がそうでないときはアクセスが拒否
されるように非常線を張っておくと、かなりのコンピュ
ータセキュリティを達成することができる。このように
非常線が張られた資源は、「カーテンが張られたメモリ
(curtained memory)」と呼ばれることがある。
【0004】データストレージへのアクセスが少なくと
も幾分か制限されている種々のシステムが存在してい
る。例えば、大部分の最新オペレーティングシステム
は、「アドレス空間(address space)」という考え方を
取り入れており、そこでは、各プロセスには、そのプロ
セスがその仮想メモリマッピングを通してアクセスでき
る物理メモリの中の、あるページまたはセグメントが割
り当てられており(これは連続的変更方式で行われてい
るのが一般である)、あるプロセスは、別のプロセスの
アドレス空間に置かれているページ(またはセグメン
ト)にアクセスできないようにしている。メモリのある
部分にアクセスできるのは、そのメモリ部分が属してい
るプロセスからアクセス要求が出されたときに限られて
いるので、ある意味では、この方式はメモリへのアクセ
スを制限している。しかし、この方式は容易に覆されて
いる。一部のプロセッサでは、物理メモリに直接アクセ
スすることを可能にしているため(つまり、仮想メモリ
マッピングを使用しないで)、プロセスは、所定の物理
アドレスがそのプロセスのアドレス空間に割り当てられ
ていたかどうかに関係なく、その物理アドレスにアクセ
スする命令を簡単に実行することが可能になっている。
大部分のメモリの直接物理アドレスシングを許していな
いプロセッサにおいてでさえ(例えば、INTEL x86ファ
ミリのプロセッサ)、仮想メモリマッピングは、アクセ
ス可能なメモリに格納されているのが一般であるため、
プロセスは、そのプロセスがアクセスするとは思われな
い物理アドレスをポイントするように仮想メモリマッピ
ングを変更するだけで、そのアドレス空間の外部のメモ
リにアクセスできるようになっている。
【0005】一部のシステムは、各アクセス要求を許可
し得るかどうかを評価してから要求が実行されるように
することによって、無許可アクセスを防止することを試
みている。例えば、プロセッサは、例外ハンドラが各メ
モリアクセス要求を評価できるようにすべてのメモリア
クセス命令を捕捉することが可能になっている。しか
し、すべてのアクセス要求は評価を待ってからでなけれ
ば、先に進むことができないので、このようなシステム
は本来的に非効率である。
【0006】
【発明が解決しようとする課題】必要とされているもの
は、資源へのアクセス制限を保証し、永続化することを
可能にする論理的条件をどのように定義するかというこ
とと、各アクセス要求を個別的に評価しなくても、これ
らの論理的条件を利用することによって資源へのアクセ
スを制御できるシステムである。このようなシステム
は、従来技術では実現されていない。
【0007】
【課題を解決するための手段】本発明は、コンピュータ
メモリのような、資源へのアクセスを制御する技法を提
供している。本発明では、資源にアクセスする一部の要
求は許可し得るが、他の要求は許可し得ないとするポリ
シ(policy:約束事)が存在することを前提としてい
る。本発明によれば、ポリシの下で許可し得ないアクセ
ス要求は拒否し、実行されたとき、ポリシの下でアクセ
スが許可し得ない資源が仮想アドレスを持つことになる
アクセス要求も拒否することによって、資源へのアクセ
スを制御している。後者の制約は、仮想アドレスを持つ
資源だけが、ポリシによりアクセスが許可される資源と
なる状態(状態)に資源が常にあることを保証してい
る。従って、その仮想アドレスによって資源を特定して
いるある種のアクセス要求は、以後の評価なしでも許可
できるのは、資源が仮想アドレスをもつということが、
少なくともある種のアクセスがポリシの下で許可し得る
ことを意味しているからである。
【0008】本発明によれば、どの資源が仮想アドレス
を持つことができるかに制約を設ける「不変条件(invar
iant condition)」が定義されている。この条件が不変
であるというのは、資源が初期化されるとき条件が真
(true)となるべきものであり、すべてのアクセス要求
に続いて真であり続けるべきものである(マシンが初期
状態から到達できるすべての状況において)、という意
味においてである。アクセス要求は、次に、2つの基準
に従って評価される。第一に、関係するポリシPが要求
された資源へのアクセスを禁止していれば、アクセス要
求は拒否される。第二に、アクセス要求が実行されたと
き不変条件に違反するときは、アクセス要求は拒否され
る。この第2条件は、要求がポリシPの下で許可し得る
場合であっても、ある種の要求を拒否させることがあ
る。この意味で、本発明によれば、少なくともPと同じ
ように制限的であるポリシP’が実施されている。
【0009】資源が不変条件を満足する状態に保たれて
いるときは、ある種のアクセス要求は、もっと効率的に
評価することができる。例えば、所定のソースがポリシ
の下でアクセスすることを許されていない資源について
の仮想アドレスを持っていないことが不変条件となって
いる場合は、アクセスがポリシの下で許されている資源
だけに対して仮想アドレスを持っているので、また読み
取りオペレーションは、不変条件が真でない状態へシス
テムの状態を変更できないのが一般的であるので、仮想
アドレスで資源を特定している読み取り要求は、以後の
評価なしで許可されることが可能になる。従って、この
例示の不変条件は、読み取り要求の評価を最適化するこ
とを可能にする。他の不変条件を定義することも可能で
ある。つまり、どの不変条件を選択するかに応じて、異
なったタイプの最適化が可能である。
【0010】本発明が可能にする最適化は、「選択的フ
ィルタリング(selective filtering)」の形体にするこ
とができる。このフィルタリングは、アクセス要求が許
可されるかどうか(つまり、ポリシP’の下の許可条件
を満足しているかどうか)の最終的判断が評価するには
複雑になるとの所見に基づいているが、一部の(または
多数の)アクセス要求を判断するのに十分である種々の
条件を特定することも可能である。このことが特に当て
はまるのは、正しい不変条件が選択されるときである。
上記の例では、不変条件は、読み取られるべき資源をそ
の仮想アドレスで特定していれば、許可されるべき読み
取り要求を自動的に許可する。従って、どのアクセス要
求も、その要求がそのような読み取り要求であるかどう
かを判断するために、最初に評価することができる。そ
の質問に対する答えが否定であれば、システムは、もっ
と複雑な基準に従って要求を評価することができる。他
のタイプの要求(例えば、書き込み要求)の評価を効率
化する他の不変条件を選択することもできる。
【0011】本発明のその他の特徴は、以下に説明され
ている。
【0012】上述した要約説明と後述する好適実施形態
の詳細説明の理解を容易にするために、以下では、添付
図面を参照して説明することにする。本発明を説明する
便宜上、図面には、本発明の構造が例示されている。し
かし、本発明は、以下に開示されている具体的方法とそ
の実現手段に限定されるものではない。
【0013】
【発明の実施の形態】図1は、本発明の態様を実現する
ことができる例示のコンピューティング環境を示す図で
ある。このコンピューティングシステム環境100は、
適当なコンピューティング環境の単なる一例であり、本
発明の使用または機能の範囲を限定することを意味する
ものではない。また、このコンピューティング環境10
0は、例示動作環境100に示されているコンポーネン
トの任意の1つまたは組み合わせに関して依存関係また
は要求条件があることを意味するものでもない。
【0014】本発明は、他の多数の汎用または特殊目的
コンピューティングシステム環境または構成と共に動作
可能である。本発明で使用するのに適している、周知の
コンピューティングシステム、環境、および/または構
成の例としては、パーソナルコンピュータ、サーバコン
ピュータ、ハンドヘルドまたはラップトップデバイス、
マルチプロセッサシステム、マイクロプロセッサベース
のシステム、セットトップボックス、プログラマブルコ
ンシューマエレクトロニクス、ネットワークPC、ミニ
コンピュータ、メインフレームコンピュータ、組み込み
システム、上記システムまたはデバイスのいずれかを含
んでいる分散コンピューティング環境、などがあるが、
これらに限定されない。
【0015】本発明は、プログラムモジュールのよう
に、コンピュータによって実行されるコンピュータ実行
可能命令という広いコンテキストの中で説明されてい
る。一般的に、プログラムモジュールの中には、特定の
タスクを実行し、あるいは特定の抽象データ型を実装し
ているルーチン、プログラム、オブジェクト、コンポー
ネント、データ構造、などが含まれている。本発明は、
通信ネットワークや他のデータ伝送媒体を通してリンク
されているリモート処理デバイスによってタスクが実行
されるような、分散型コンピューティング環境で実施す
ることも可能である。分散型コンピューティング環境で
は、プログラムモジュールおよび他のデータは、メモリ
ストレージデバイスを含む、ローカルとリモートの両方
のコンピュータストレージ媒体に置いておくことができ
る。
【0016】図1を参照して説明すると、本発明を実現
するための例示システムは、コンピュータ110の形体
をした汎用コンピューティングデバイスを含んでいる。
コンピュータ110のコンポーネントとしては、処理ユ
ニット120、システムメモリ130、およびシステム
メモリを含む種々のシステムコンポーネントを処理ユニ
ット120に結合しているシステムバス121がある
が、これらに限定されない。システムバス121は、数
種のバス構造のいずれかにすることが可能であり、その
中には、種々のバスアーキテクチャを採用しているバス
またはメモリコントローラ、周辺(周辺)バス、および
ローカルバスが含まれている。バスアーキテクチャの例
を挙げると、インダストリスタンダードアーキテクチャ
(IndustryStandard Architecture − ISA) バス、マイ
クロチャネルアーキテクチャ (Micro Channel Architec
ture − MCA) バス、拡張ISA (Enhanced ISA − EIS
A)バス、ビデオエレクトロニクススタンダードアソシエ
ーション (V識別子eo Electronics Standards Associat
ion − VESA) ローカルバス、および周辺コンポーネン
ト相互接続 (Peripheral Component Interconnect − P
CI) バス(Mezzanine(中2階)バスとも呼ばれてい
る)があるが、これらに限定されない。
【0017】コンピュータ110は、種々のコンピュー
タ可読媒体を実装しているのが代表的である。コンピュ
ータ可読媒体は、利用可能で、コンピュータ110によ
ってアクセス可能な媒体であれば、どの媒体にすること
も可能であり、その中には、揮発性と不揮発性の両方の
媒体、取り外し可能と取り外し不能の両方の媒体が含ま
れている。コンピュータ可読媒体の例を挙げると、コン
ピュータストレージ媒体と通信媒体があるが、これらに
限定されない。コンピュータストレージ媒体には、コン
ピュータ可読命令、データ構造、プログラムモジュール
または他のデータなどの、情報をストアするためのいず
れかの方法またはテクノロジで実現されている揮発性と
不揮発性の両方の取り外し可能媒体と取り外し不能媒体
がある。コンピュータストレージ媒体の中には、RA
M、ROM、EEPROM、フラッシュメモリまたは他
のメモリテクノロジ、CDROM、デジタル多目的ディ
スク(digital versatile disk − DVD)または他の光デ
ィスクストレージ、磁気カセット、磁気テープ、磁気デ
ィスクストレージまたは他の磁気ストレージデバイス、
あるいは必要とする情報をストアするために使用でき
て、コンピュータ110によってアクセス可能である他
の媒体が含まれているが、これらに限定されない。通信
媒体は、コンピュータ可読命令、データ構造、プログラ
ムモジュールまたは他のデータを、搬送波や他のトラン
スポートメカニズムなどの変調データ信号の形で具現化
しているのが代表的であり、その中には、任意の情報配
信媒体が含まれている。ここで、「(被)変調データ信
号(modulated data signal)」という用語は、その特性
の1つまたは2つ以上が信号に含まれる情報を符号化す
るような形でセットまたは変更されている信号を意味し
ている。通信媒体の例を挙げると、布線式ネットワーク
や直接ワイヤド接続のようなワイヤド媒体、および音
響、RF、赤外線などのようなワイヤレス媒体がある
が、これらに限定されない。上に挙げたものを組み合わ
せたものも、コンピュータ可読媒体の範囲に含まれるこ
とは当然である。
【0018】システムメモリ130には、揮発性および
/または不揮発性メモリが含まれており、そのようなも
のとして、読取専用メモリ (read only memory − ROM)
131とランダムアクセスメモリ (random access memo
ry − 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と光ディスクドライブ15
5は、インタフェース150のような、取り外し可能メ
モリインタフェースによってシステムバス121に接続
されているのが代表的である。
【0020】上述し、図1に図示されているドライブと
それぞれに関連するコンピュータストレージ媒体はスト
レージとして、コンピュータ110のためのコンピュー
タ可読命令、データ構造、プログラムモジュールおよび
他のデータを格納している。図1には、例えば、ハード
ディスクドライブ141は、オペレーティングシステム
144、アプリケーションプログラム145、他のプロ
グラムモジュール146、およびプログラムデータ14
7を格納しているものとして示されている。なお、これ
らのコンポーネントは、オペレーティングシステム13
4、アプリケーションプログラム135、他のプログラ
ムモジュール136、およびプログラムデータ137と
同じであることもあれば、別のものであることもある。
ここで、オペレーティングシステム144、アプリケー
ションプログラム145、他のプログラムモジュール1
46、およびプログラムデータ147に異なる番号が付
けられているのは、最低限でも、これらが別のコピーで
あることを示すためである。ユーザは、キーボード16
2および一般にマウス、トラックボールまたはタッチパ
ッドとも呼ばれているポインティングデバイス161な
どの、入力デバイスを通してコマンドと情報をコンピュ
ータに入力することができる。その他の入力デバイス
(図示せず)としては、マイクロホン、ジョイスティッ
ク、ゲームパッド、サテライトディッシュ、スキャナ、
などがある。これらとその他の入力デバイスは、システ
ムバスに結合されたユーザ入力インタフェース160を
通して処理ユニット120に接続されていることがよく
あるが、パラレルポート、ゲームポート、ユニバーサル
シリアルバス (universal serial bus − USB) など
の、他のインタフェースとバス構造によって接続するこ
とも可能である。モニタ191または他のタイプのディ
スプレイも、ビデオインタフェース190のような、イ
ンタフェースを介してシステムバス121に接続されて
いる。モニタのほかに、コンピュータは、スピーカ19
7やプリンタ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は、インターネットなどの、W
AN173上のコミュニケーションを確立するためのモ
デム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)、20
6(2)、...、206(k)(ガード206と総称
する)は、資源202へのアクセスのゲートの働きをす
るエンティティである。
【0029】1つの例では、ソース204(2)は資源
202(2)にアクセスする要求210を出している。
ガード206(1)は要求210を評価する。要求21
0を評価するとき、ガード206(1)は要求210に
関連する値r,s,a,およびpを考慮することがで
き、オプションとして、環境208を考慮する。(環境
208は、r,s,a,およびp以外の情報を含んでい
る場合がある。例えば、プロセッサが動作しているとき
のモード、現在ログインしているユーザの識別子、時
間、温度、月相、など)ガード206(1)は、要求2
10が適用されるポリシの下で許可し得ると判断するの
で、ガード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)にアクセスするすべての要求、またはソース20
4(2)から出されたすべての要求の評価をガード20
6(1)に任せことも、ある要求は、別の要求の処理に
使用中でないガードにランダムに任せることもできる。
同じようなルールで要求212をガード206(k)に
評価させることもできる。別の方法として、ガードの各
々が、ポリシの若干異なる部分を実装することもできる
ので、各要求が許可されるか、あるいはすべてのガード
が使用尽くされるまで、各要求を一定の順序でガードの
1つひとつに通していくことができる。例えば、ガード
206(1)は、ある単純な基準に基づいて許可できる
すべての要求を許可するように設計できるので、その基
準を満たさない要求を、他のガード206(2)−20
6(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、および集合30
6はMである。図3の例では、Vは大文字(A−Z)の
集合、Aは小文字(a−z)の集合、Mは数字(0−
9)の集合である。
【0035】アドレス指定可能なエンティティはAから
Mへの変更可能マッピングである。つまり、任意の瞬時
において、アドレス指定可能なエンティティは、f(a) =
Mとなるように関数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までの
整数の集合(これは、一倍とのメモリにストアできる25
6個の異なる値を表している)であるとする。この場合
には、メモリは、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を参照して
説明すると、単純なアドレス指定可能なエンティティ3
12(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は、RA
M132をアドレス指定可能なエンティティとした例で
ある。この例では、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に新しい値を書き込むと、モニタ19
1に表示されている背景カラーが変更されるので、ビデ
オRAM内のビットの多くが変更されることになる。
【0042】・ CPUレジスタ。実際には、これらの
レジスタは、RAMのバイトとは異なり、数値アドレス
によって識別されないのが代表的であるが、各レジスタ
はともかく識別可能であり、その違いは純粋に構文的な
ものである。各レジスタは、なんらかの識別子をもち、
これらの識別子は集合Aに対応している。図9は、CP
Uレジスタ900(0)、900(1)、...、90
0(15)の集合の例を示し、これらはr0−r15と
名づけられている。この例では、これらのレジスタの各
々は、32ビット値を格納する能力を備えている。0−1
5の範囲のレジスタ番号は集合Aに対応し、0−223
の範囲の整数値は集合Mに対応している。(いくつかの
制御レジスタは、実際には、CPUレジスタであるとす
ることができる。)
【0043】・ 分散システムにおける擬似共有メモ
リ。機能的には、このメモリは、第1の例のメモリに類
似している。しかし、このメモリの物理的ストレージ
は、多数の地理的に離れたマシンにわたって分散化する
ことが可能になっている。図10は、そのようなメモリ
の例を示している。コンピュータ110(0)、110
(1)、および110(2)の各々は、それぞれRAM
132(0)、132(1)および132(2)を備え
ている。コンピュータ110(0)−110(2)は、
ネットワーク1002(これは、例えば、図1に図示の
ローカルエリアネットワーク173または広域ネットワ
ーク171にすることができる)を介して通信してい
る。ネットワーク1002を使用すると、コンピュータ
の各々は他のコンピュータのRAMの1つにアクセスす
ることが可能になる。例えば、コンピュータ110
(0)−110(2)は、ある種のメッセージ受け渡し
プロトコルに参加できるので、コンピュータ110
(0)は、コンピュータ110(1)がコンピュータ1
10(1)のRAM132(1)から情報を取り出すこ
とを要求することができる。アドレッシング規則は、こ
れらのRAMのいずれかに置かれているバイトがシング
ルアドレスで識別できるようにセットアップ(起動)する
ことができる。シングルアドレスとして、例えば、RA
M132(0)内のアドレスは頭に"00"が付けられ、R
AM132(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がRAM1
32のような、従来のメモリと異なるセマンティックス
を持っている場合でも、擬似共有メモリ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は共に所定の
資源にアクセスすることが許されているが、一方は読み
書きアクセス権を持ち、他方は読取専用アクセス権を持
っている実在の例に対応付けることができる。これとは
別に、この事態は、所定の資源に読み書きアクセスがで
きるか、読取専用アクセスができるかが、ユーザモード
であるか、カーネルモードであるか、といった環境20
8のある様相によって決まる例に対応付けることもでき
る。さらに、これらの状態は、ページの属性がV→Aマ
ッピング(例えば、以下で説明するページテーブルな
ど)にストアされている実在の例を示しており、従っ
て、これらは、厳格には資源の特徴ではなく、マッピン
グの特徴である。
【0048】図3のモデルをさらに拡張したものとし
て、gを計算すると、一種の面的変化が得られ、アドレ
ス指定可能なエンティティ312に対する変更が得られ
るようになっている。例えば、アドレス変換メカニズム
が実在のメモリシステムの一部になっている場合には、
gを計算することで、キャッシュ、変換索引バッファ
(Translation Look ahead Buffer − TLB) などの変更
が得られるようになっている。
【0049】アドレス変換メカニズムの実在例として
は、ページングとセグメンテーション方式に基づく仮想
メモリシステムがある。図13乃至図16は、このよう
な実在システムの例を示している。当然に理解されるよ
うに、ページとセグメントは、アドレス指定可能なエン
ティティをグループ化して、「バケット」に入れて、こ
れらが大きな単位で都合よく扱われるようにする1つの
方法にすぎない。従って、本発明は、そのようなアドレ
ス指定可能なエンティティが上記のようにグループ化さ
れるかどうかとは無関係に適用されるものである。
【0050】図13は、ページングスキム(方式)の例
を示す図である。図13において、RAM132の固定
サイズ部分は、ページ1306(1)、1306
(2)、...1306(n)と指定されている。図1
3の例において、各ページは長さが4キロバイト(4096
バイト)になっているが、ページング方式はどの特定ペ
ージサイズにも限定されていない(また、いくつかのペ
ージング方式は2サイズ以上をもつページをサポートし
ている。例えば、ページは長さが4キロバイトである場
合と、4メガバイトである場合がある。)各ページは、
RAM132にベースアドレスをもっている。ページ1
306(1)、1306(2)、および1306(n)
のベージアドレスは、それぞれ0x0000、0x2000、および
0xf000になっている。(この分野の精通者ならば理解さ
れるように、接頭部"0x"は、慣行により、値が16進数、
つまり、基数 (16)であることを示している。各ページ
内では、各バイトは、ページのベースアドレスを基準に
したオフセットで記述することが可能になっている。従
って、各ページ内では、第1バイトはオフセット0、第
2バイトはオフセット1、以下同様になっている。図1
3の例における各ページは長さが4096バイトであるの
で、各ページの最終バイトはオフセット4095(または0x
0fff)になっている。
【0051】ページテーブル1308は、色々なページ
1306(1)−1306(n)を指すポインタのリス
トである。ページテーブル1308内の各エントリは、
上述したように1つまたは2つ以上の「属性」、つま
り、ポインタが指しているページが読み書きであるか、
読取専用であるかを示すマーカ、またはページがRAM
132に「存在」するか、「不在」であるかを示すマー
カを収めておくことも可能になっている。(ページは、
RAM132に他のデータのための余地を作るためにデ
ィスクにスワップ(場所交換)されていると、不在のマ
ークがつけられることがある。)ページテーブル130
8の各エレメントは、ページテーブル内のページのベー
スアドレスを収めている。さらに、各エレメントは、ペ
ージテーブルまでのオフセットで識別することが可能に
なっている。従って、オフセット0にストアされたペー
ジテーブルのエレメントは0x0000であり、これはページ
1306(1)のベースアドレスである。オフセット2
にストアされたエレメントは0x2000であり、これはペー
ジ1306(2)のベースアドレスである。オフセット
5にストアされたエレメントは0xf000であり、これはペ
ージ1306(n)のペースアドレスである。ページテ
ーブル1308までの他のオフセットは、図13に示さ
れていない異なるページを指している。なお、当然に理
解されるように、ページテーブル1308は、RAM1
32に格納されているのが代表的であり、これは、ペー
ジテーブル1308を囲んでいる破線で示されている。
【0052】メモリ管理ユニット (memory management
unit − MMU)1304は、ページテーブル1308を使
用して仮想アドレス1302を物理アドレスに変換す
る。MMU1304は、仮想アドレスを物理アドレスに
変換することを含む、種々の関数を実行するハードウェ
アとソフトウェアで構成することができる。図13の例
では、仮想アドレス1302は2つの部分を含んでお
り、これらはテーブルオフセット1311とページオフ
セット1312である。MMU1304は、RAM13
2内の特定の物理アドレスを仮想アドレス1302に基
づいて見つける。物理アドレスを見つけるために、MM
U1304は、最初にテーブルオフセット1311を読
み取り、この値をページテーブル1308内へのインデ
ックスとして使用する。次に、MMU1304は、テー
ブルオフセット1311によって定義されているページ
テーブル1308のエントリに入っているアドレスを取
り出し、その値にページオフセット1312を加える。
その結果の値は、ページ1306(1)−1306
(n)の1つにおける特定バイトのアドレスである。図
13の例では、テーブルオフセット1311は0x0002で
ある。従って、MMU1304は、ページテーブル13
08の先頭からのオフセット2にストアされているベー
スアドレスを見つける。このケースでは、そのベースア
ドレスは0x2000である。そこで、MMU1304は、ペ
ージテーブルに見つかった値にページオフセット131
2を加える。この例では、ページオフセット1312
も、0x0002であるので、MMU1304は0x2000 + 0x0
002 = 0x2002の加算を行う。この0x0002は、斜線で示す
ページ1306(2)内のバイトの物理アドレスであ
る。
【0053】MMU1304は、ページテーブルに収め
られた属性に基づいて何らかのアクションを実行するよ
うに構成することも可能である。例えば、アクセス要求
がメモリのあるバイトに書き込む場合に、そのバイトが
置かれているページのページテーブルエントリが、ペー
ジが読取り専用であることを示しているときは、MMU
1304はその要求を中止し (abort)、および/または
何らかのタイプのフォルトハンドラ (fault handler:
誤り割込み処理ルーチン) を呼び出すようにしてもよ
い。同様に、そのバイトが「不在」とマークされたペー
ジ上にあるときには、MMUは、そのイメージがストア
されている場所(例えば、ディスク)から、そのページ
のイメージをコピーして、RAM132に戻るステップ
をとること、および/または何らかのタイプのフォルト
ハンドラを呼び出してもよい。以下で説明するように、
属性の1つの使い方は、関数gに影響を与える何らかの
資源(例えば、ページテーブルを格納しているRAM1
32の部分、またはセグメントテーブル(後述する)、
またはページディレクトリ(後述する))に「読取専
用」(または「不在」)のマークを付けることである。
この手法を用いると、ある種のアクセス要求(つまり、
「読取専用」属性が使用されているときは書き込み要
求、「不在」属性が使用されているときはすべての要
求)は、ガード(guard)を呼び出すことになるので、ア
クセス要求がポリシおよび/またはある種の他の条件に
違反しないことを確かめるためにアクセス要求が評価さ
れることになる。
【0054】図13は、図3に示すモデルの具体例であ
る。図13は、以下に説明するように図3のモデルに対
応している。すなわち、RAM内のバイトの物理アドレ
スは、集合Aのメンバであり、バイトにストアできる25
6の異なる値(例えば、0 - 255または-127 - +127)は
集合Mのメンバであり、仮想アドレス(例えば、仮想ア
ドレス1302)の範囲はメンバVである。図7を参照
して上述したように、RAM132はアドレス指定可能
なエンティティである。さらに、MMU1304がアド
レス変換メカニズムであるのは、Vのメンバ(仮想アド
レス)をAのメンバ(物理アドレス)にマッピング(写
像)するからである。さらに、MMU1304に実装さ
れているマッピングが部分的であるのは、一部の仮想ア
ドレスがどの物理アドレスにもマッピングされないこと
があり得るからである(例えば、仮想アドレス0x000600
0は、ページテーブル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)、1
506(1)、1506(2)および1506(3)を
示している。各セグメントはベースアドレスと長さを持
っている。セグメントは異なる長さを持つことができ
る。セグメントテーブル1508は、セグメント150
6(0)−1506(3)のベースアドレスと長さをリ
ストしている。従って、セグメント1506(0)はベ
ースアドレス0x0000から始まり、長さ4096をもち、
セグメント1506(1)はベースアドレス0x4000から
始まり、長さ1024をもち、と以下同様である。セグ
メントテーブル1508は、破線で示すように、RAM
132に格納されているのが代表的である。また、セグ
メントテーブル1508は、セグメントごとに、上述し
たように、読取専用/読み書き、存在/不在、などの情報
をリストアップ(記入)しておくこともできる。
【0057】MMU1504は、セグメントテーブル1
508を使用して仮想アドレス1502を物理アドレス
に変換する。仮想アドレス1502は、セグメント番号
1511とセグメントオフセット1512を含んでい
る。従って、図15の例では、MMU1504はセグメ
ント番号1511を、セグメントテーブル1508内へ
のオフセットとして使用している。この例では、セグメ
ント番号1511は"1"であるので、MMU1504は
セグメントテーブル1508内へのオフセット1を調
べ、アドレス0x4000を探し出す。次に、MMU1504
はセグメントオフセット1512(この例では、0x000
0)をそのアドレスに加えて、物理アドレスを得る。従
って、0x4000 + 0x0000 = 0x4000となる。このようにし
て、MMU1405は、斜線で示すセグメント1506
(1)内のバイトを特定する。
【0058】以上から容易に理解されるように、図15
に示すセグメンテーション方式は、図3に示すモデルの
別の事例であり、そこではMMU1504はアドレス変
換メカニズム310の事例になっている。具体的には、
MMU1504は、次に示す式に基づいて仮想アドレス
(つまり、Vのメンバ)を物理アドレス(Aのメンバ)
に変換する関数gを実装している。 上記において、snとsoは、それぞれ、仮想アドレスのセ
グメント番号とセグメントオフセット部分であり、SEG_
BASEはセグメントテーブル1508の物理ベースアドレ
スであり、SEG_SIZEはセグメントテーブル1508内の
エントリの数であり、"f"はAのメンバ(例えば、物理
アドレス)をMのメンバ(例えば、上記物理アドレスに
ストアされている値)にマッピングする上記関数であ
り、".base"と".length"は、それぞれセグメントテーブ
ルエントリのベースアドレスと長さフィールドに戻す。
【0059】図16は、図13に図示のページング方式
とは異なる、ページング方式の例を示している。図16
に図示のページング方式は、INTEL x86プロセッサで使
用されるものと同じような、マルチレベルページング方
式である。このページング方式では、ページディレクト
リ1602は、ページテーブル1604(1)、160
4(2)、および1604(3)のような、ページテー
ブルを指すポインタの配列(つまり、ページテーブルの
物理ベースアドレス)を収めている。各ページテーブル
の方は、ページ(例えば、ページ1606(1)、16
06(2)、1606(3)、および1606(4))
のベースアドレスを指すポインタの配列を収めており、
上述したように、読取専用/読み書きの属性、存在/不在
のビットなどの情報を収めておくことも可能になってい
る。ページは、RAM132の固定長部分である。さら
に、ページディレクトリとページテーブルも、RAM1
32に格納されているのが代表的である。図16に示す
ページング方式が2レベルページング方式であるのは、
特定のページを見つけるためにページディレクトリ(レ
ベル1)とページテーブル(レベル2)の両方を調べる
必要があるからである。この分野の精通者ならば理解さ
れるように、任意のレベル数をもつページング方式を設
計することが可能であり、本発明は、係るすべてのペー
ジングシステムに適用される。また、INTEL x86プロセ
ッサは図16に図示の2レベルページング方式を使用し
ているのが代表的であることは公知であるが、1レベル
または3レベルページング方式を使用するように構成可
能になっている。
【0060】図16のページング方式では、ページ上の
どのバイトも、ページディレクトリオフセット161
1、ページテーブルオフセット1612、およびページ
オフセット1613を含んでいる仮想アドレス1610
によって特定することができる。従って、物理アドレス
を見つけるために、MMU1620はページディレクト
リオフセット1611を使用してページディレクトリ1
602内の特定エントリを見つけている。このエントリ
はページテーブルの物理ベースアドレスであるので、M
MU1620は、ページテーブルの1つ(例えば、ペー
ジテーブル1604(1))を見つけるために、このア
ドレスをデリファレンス (dereference;参照先の値を
取得) する。次に、MMU1620はページテーブルオ
フセット1612を、特定されたページテーブル内への
インデックスとして使用し、そのオフセットで見つかっ
たエントリを取り出す。このエントリは、ページ(例え
ば、ページ1606(1))の物理ベースアドレスであ
るので、MMUは特定されたページのベースアドレスに
ページオフセット1613を加えて、物理メモリの特定
バイトを見つけるようにする。MMU1602は、図1
3を参照して上述したように、ページは読取専用または
読み書きのマークが付けられているかどうか、ページは
存在または不在のマークが付けられているかどうか、と
いった情報を考慮に入れるように構成することも可能で
ある。
【0061】図16のMMU1620は、アドレス変換
メカニズム310のもう1つの事例である。MMU16
20は、仮想アドレス(つまり、Vのエレメント)を物
理アドレス(つまり、Aのエレメント)に変化する関数
(つまり、関数"g"の例)を実装している。
【0062】図16のページング方式は、ページディレ
クトリを指すポインタを収めているストレージロケーシ
ョン1601も含んでいる。MMU1620は、仮想ア
ドレス1610の変換を開始するとき、このポインタを
使用してページディレクトリ1602を見つける。INTE
L x86プロセッサの例では、ストレージロケーション1
601は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 xV x E→Aを定義していると言うこ
とができる。
【0063】アドレス指定可能なエンティティへのアク
セスを制御するアルゴリズム 以下では、アドレス指定可能なエンティティへのアクセ
スを制御するためのアルゴリズムについて説明する。一
般的に、このアルゴリズムは、ポリシ(約束事)Pによ
って禁制されているアクセス要求を拒否し、また、実行
されたとき、アドレス変換メカニズム310を通して識
別できる資源の集合に対する、なんらかの定義された制
約に違反することになるアクセス要求も拒否する。実際
には、このアルゴリズムは、少なくともPと同程度に制
限的であるポリシP’を実装しているが、その理由は、
このアルゴリズムはPの下で許可し得ないすべての要求
を拒否し、その要求がPの下で許可し得る場合であって
も、制約に違反するような要求も拒否することがあるか
らである。一般的に、この制約(以下では、「不変(inv
ariant)」または「不変条件(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とページテーブル16
04(1)−1604(3)に見つかったマルチレベル
ポインタを通してアドレスできるページの集合である
(例えば、ページ1606(1)−1606(4))。
さらに、図16は、MPがソースsによってパラメータ化
される理由を示している。上述したように、アクセス要
求の異なるソース(例えば、コンピュータ上で実行され
る異なるプロセス)は、異なるページディレクトリとペ
ージテーブルを持つことができる。各ソースは独自のペ
ージテーブルの集合をもっているので、仮想アドレス1
610が存在する物理メモリページの集合は、現在のソ
ースによって決まることになる。つま資源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がアクセスするのを禁
止されているどのセグメントも、セグメントテーブル1
508にリストされていないことを意味している。図1
6では、この条件は、ストレージロケーション(格納
先)1601からページディレクトリ1602へ、さら
には、ポリシPによってソースsがアクセスするのを禁
止されているページに通じているページテーブル160
4(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の説明では、方法1
800はガード206(1)(図2に図示)によって実
行されるものと想定されているが、この方法は、資源へ
のアクセスを仲介するどのエンティティによっても、あ
るいはエンティティの組み合わせによっても実行するこ
とも可能である。
【0073】ステップ1802では、資源がアクセスさ
れるシステムは、関連不変条件が真になるような状態に
初期化される。このステップは、アドレス変換メカニズ
ム310に実装されているマッピングを、不変条件を満
足する状態が得られるように作成し、および/または操
作することによって実行される。例えば、関係システム
が図13に示すものであり、関連不変条件が図17に示
すものであれば、ステップ1802は、ソースsがポリ
シPの下でアクセスするのを許されていないページ13
06(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プロセッサに関連するR
AMでは、すべてのメモリアクセス要求が仮想アドレスに
よって行われることを要件としている。実際には、これ
らのシステムにはタイプ2のアドレッシングがないの
で、その場合には、ステップ1810は実行されること
がない。
【0075】ステップ1814では、ガード206
(1)は、ステップ1804で受け取った要求が読み取
り要求であるか、書き込み要求であるかを判断する。要
求が読み取り要求であれば、方法1800はステップ1
816へ進み、そうでなければ、方法1800はステッ
プ1822へ進む。
【0076】要求が読み取り要求であれば(ステップ1
816)、ガード206(1)は条件 r’
【0077】
【外1】
【0078】NA(P,s)を評価する。すなわち、r’は、ソ
ースsがポリシPの下でアクセスすることを許されてい
ない資源の1つであるかどうかを判断する。r’∈NA(P,
s)ならば(判定"no")、ガード206(1)はアクセス
要求を阻止する(ステップ1818)。r’
【0079】
【外2】
【0080】NA(P,s)ならば(判定"yes")、ガード20
6(1)はアクセス要求を許可する(ステップ182
0)。
【0081】要求が書き込み要求ならば(ステップ18
22)、ガード206(1)は次の接続条件を評価す
る。r’
【0082】
【外3】
【0083】NA(P,s)∧INV 上記において、INVは、不変条件のブール値であり、こ
れは、アクセス要求が実行されたときに起こる状態に適
用されるものである。言い換えれば、書き込み要求のと
きは、ガード206(1)は、アクセス要求がポリシ
(r’
【0084】
【外4】
【0085】NA(P,s))の下で禁止されていないか判断す
るだけでなく、書き込み要求を実行すると不変条件を否
定することにならないかも判断する。例えば、関連不変
条件が図17に示すものであれば、ガード206(1)
は、書き込み要求を実行したとき、MPとNAが共通す
るどの資源も持つことがないようにさせる。図13、1
5、および16の仮想メモリシステムのコンテキストで
は、この条件は、書き込み要求を実行すると、ソースs
がアクセスすることを許されていないRAM132のバ
イトに仮想アドレスを割り当てるようなことが起こると
きは、書き込み要求は許可されないことを意味してい
る。例えば、図13に示すように、ソースsがポインタ
をページテーブル1308に書き込むことを許されてい
る場合であっても、ガード206(1)は、その要求を
実行すると、ソースsがポリシPの下でアクセスするこ
とを許されていないページを指すポインタがページテー
ブル1308に書き込まれることになるときは、その要
求を許可することはない。さらに、ポリシ自体がアクセ
ス要求の対象となる可能性のある資源にストアされてい
るときは、上述した条件は、そのアクセス要求を実行し
たときに、すでに仮想アドレスを持つページが、変更さ
れたポリシの下では禁止されてしまうような形でポリシ
を変更することはないことを意味している(当然のこと
であるが、これらのページをMPから除去するために、
MPも同時に変更される場合は除く)。一般に、ステッ
プ1822では、アクセス要求が出されたとき、条件IN
Vの真(true)は残されることが要件となっているが、
この条件がどのように残されるかは無関係である。不変
条件が図17に示すものであるときは、この条件は、
(a)MP(s)を変更することにより(例えば、ページまたは
セグメントテーブルを変更することにより)、(b) NA
(P,s)を変更することにより、またはこれらの両方を変
更することにより、残しておくことができる。例えば、
図19は、共に書き込み要求の実行前と実行後の集合M
PとNAを示している。書き込み要求の後、NAは、オ
リジナルの集合MPと交差するように拡張される。しか
し、書き込み要求はMPも収縮させるので、NAの新し
い境界と交差しないことになる。従って、ステップ18
22で評価される条件は、V→Aマッピングの変更、ポ
リシPの変更、または両方の変更によって影響を受ける
ことがある。(NAが小さくなったときは、これは、
「オフリミット」となっていた資源がアクセス可能にな
ることを意味するので、望ましいことは、オフリミット
になっていた資源がポリシ変更の後で読み取られること
から防御するためには、これらの資源の内容をゼロにす
るか、ランダム化することである。また、当然に理解さ
れるように、アクセス制御システムをシャットダウン
(終業)することは、このことの特殊ケースにすぎな
い。すなわち、アクセス制御システムをシャットダウン
することは、NAがメンバを持たないようにポリシを変
更するのと同じであり、その場合には、以前NAにあっ
た資源のすべては、好ましくはゼロ化されるか、ランダ
ム化される。また、当然に理解されるように、ポリシを
アドレス指定可能なエンティティにストアしておくと、
そのことは、図19に例示するように、ポリシの変更が
書き込みオペレーションの特殊ケースであることを意味
しているので、それだけでも有用である。
【0086】図18に戻って説明すると、ステップ18
22に示す条件が真であれば(判定"yes")、ガード2
06(1)はアクセス要求を許可し(ステップ182
4)、そうでなければ(判定"no")、ガード206
(1)はアクセス要求を阻止する。
【0087】選択的フィルタリングに基づくガードの最
適化 上述したように、所定のポリシPは、そのドメイン(定
義域)がアクセス要求の集合(r,s,a,p)であり(および
環境であることもある)、その範囲がブール値の真(要
求は許可し得る)と偽(要求は許可し得ない)である
(および読み取りまたは書き込みのように、要求が許可
される場合どのタイプのアクションが許されるかを示す
アクションの集合であることもある)ブール関数を定義
している。このポリシによって定義された関数を評価す
るのはガード206の機能である。すなわち、いずれか
のアクセス要求が与えられているとき、ガードは真また
は偽の値を計算する。この計算は、計算資源の点から高
価となることがある。例えば、方法1800(図18を
参照して説明した)では、ステップ1816と1822
で、r’
【0088】
【外5】
【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)、ある条件の存在が、周囲のポリシ (am
bient policy) の下で要求を判断するのに十分であろ
う、ある条件をそのアクセス要求が満足すかどうかの判
断が行われる(ステップ2004)。その条件を満足し
ていれば、要求についての判断が行われ(ステップ20
06)、評価プロセスは終了する。ステップ2004で
条件を満足していなければ、アクセス要求が第2の条件
を満足するか否かが判断される(ステップ2008)。
第2の条件を満足していれば、要求についての判断が行
われる(ステップ2010)。このサイクルは、テスト
すべき条件が存在する限り、何度でも繰り返される。図
20は、n個の条件が存在する場合を示している。n番
目の条件を満足しているかどうかがステップ2012で
判断され、満足していれば、ステップ2014で要求に
ついての判断が行われる。n個の条件のどれも満足して
いなければ、要求は、キャッチオール (catch-all;包
括的な) ルールに従って判断されなければならない(ス
テップ2016)。このキャッチオールルールは、上述
したタイプの計算集中型の、総当り的なルールとなる可
能性がある。従って、このルールは、関連するポリシを
正確に実行することができるが、このルールをアクセス
要求に適用することは困難となるおそれがある(つま
り、時間の損失が大きくなる)。従って、好ましいこと
は、評価しやすい条件(例えば、図18に示す条件1か
らn)が非常に多数のアクセス要求を決定するように
し、まれなケースだけをキャッチオールルール用に残し
ておくことである。
【0093】なお、ステップ2006、2010、およ
び2014に示す「要求判定」ブロックは、要求が許可
されることを必ずしも意味していない。ケースによって
は、条件がテストされると、要求が即時に拒否される場
合もある。従って、条件2004、2008、および2
012の各々は、評価しやすいアクセス要求を「取り除
く(weed out)」するように設計されているが、拒否しや
すいアクセス要求だけでなく、許可しやすいアクセス要
求も「取り除く」ようにすることもできる。従って、例
えば、ステップ2004の条件は、満足されると、要求
を許可することを要請することがあり、ステップ200
8の条件は、満足されると、要求を即時に拒否すること
を要請することがある。
【0094】ステップ2004、2008、および20
12の種々の条件を、ガードをサブガードに分割するも
のとして見ると好都合なことがある。従って、特定のガ
ードは、アクセス要求を評価するときの必要で、十分な
条件を評価し、そのガードはn+1個のサブガードを使
用してこのタスクを実行する。すなわち、アクセス要求
を判断するのに十分な(しかし、必要でない)条件をテ
ストするn個のサブガードと、先行するn個のサブガー
ドのどれもが要求を解決できなかったときの、必要で十
分な条件をテストする1個のサブガードである。
【0095】選択的フィルタリングによる1つの最適化
では、以後の評価なしですべてのタイプ1の読み取り要
求を許可し、アクセス要求がタイプ1の読み取り要求で
ないと判断されたときにのみ、図18のもっと複雑な評
価を行うようにしている。マシンの状態が図17に図示
の条件を満足しているときは、タイプ1の読み取り要求
はこの条件を変更しない(ただし、関連不変条件が真と
ならない状態を引き起こす可能性を読み取り要求がもっ
ているようなシステム、例えば、読み取りアクセスがV
→Aマッピングまたはポリシを変更する可能性を持つ、
なんらかの不作用を引き起こすようなシステムでは別で
ある。当然に理解されるように、代表的なシステムで
は、読み取りアクセスはそのような作用を引き起こさな
い。)図21は、そのような要求を評価するプロセス2
100を示しており、このプロセスは、図20に示す
「サブガード」の1つによって実行させることが可能で
ある。
【0096】プロセス2100では、アクセス要求が受
け取られると(ステップ2102)、サブガードは、そ
の要求が読み取り要求であるか、書き込み要求であるか
を判断する(ステップ2104)。要求が書き込み要求
であれば、サブガードは要求を解決することができな
い。その場合には、要求はプロセス1800に評価させ
る必要があるので、要求は評価のために図18のステッ
プ1806に渡される。基本的には、書き込み要求は
「キャッチオール」ルールに従う。しかし、要求が読み
取り要求ならば、サブガードは要求を評価することがで
きる。(別の方法として、書き込み要求では、なんらか
の、他の最適化を行うことが可能であり、その場合に
は、要求は、そのような最適化に基づいて要求を判断す
ることを試みるサブガードに渡されることになる。)ス
テップ2106では、サブガードは、要求がタイプ1の
要求であるか、タイプ2の要求であるかを判断する。す
でに述べたように、タイプ1の要求は集合Vを使用して
(例えば、仮想アドレスによって)資源を特定し、タイ
プ2の要求は集合Aを使用して(例えば、物理アドレス
によって)資源を特定している。要求がタイプ2の要求
であれば、サブガードは、r’
【0097】
【外6】
【0098】NA(P,s)であるかどうかを判断する(ステ
ップ2110)。(すでに述べたように、r’は集合A
に基づいて資源を特定している。つまり、これは、アク
セスが要求された資源の物理アドレスである。)r’
【0099】
【外7】
【0100】NA(P,s)ならば(判定"yes")、サブガード
は要求を許可する(ステップ2108)。r’∈ NA(P,
s)ならば(判定"no")、サブガードは要求を阻止する
(ステップ2112)。他方、要求がタイプ1の要求で
あるとステップ2106で判断されたときは、サブガー
ドは要求を許可するだけである(ステップ2108)。
図17の条件は、アクセス要求が行われる前は、真であ
るものと想定されているので、r’
【0101】
【外8】
【0102】NA(P,s)は、すべてのタイプ1アクセス要
求では、真であることは既知である。すなわち、r’
は、すべてのタイプ1の要求では、gの範囲内(つま
り、r’∈MP(s))になければならないので、および図1
7の条件はNA(P,s)と共通のエレメントをもたないこと
を意味しているので、タイプ1の要求ではr’
【0103】
【外9】
【0104】NA(P,s)であることが真でなければならな
いため、タイプ1の読み取り要求はポリシPの下で許可
し得ることは既知である。さらに、読み取り要求は図1
7に示す条件を変更しないものと想定されているので、
図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)(参照符号170
4)と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という用語は、任意のソースのマッピングに
影響を及ぼす全ての資源の集合を指すといっても問題は
ない。しかし、当然に理解されるように、異なるソース
は異なるマッピングを持つことができる。例えば、実在
のアプリケーションでは、異なるプロセスは異なるペー
ジテーブルを持つことが可能になっている。従って、PM
Sは、ソース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の書き込み要求も許可することができる。
アドレス変換プロセスが読取専用属性を生成していれ
ば、アドレス変換メカニズム自体(例えば、従来のMM
U)はその要求を阻止することができる。従って、図2
4に示す不変条件がそのまま残されているときは、アク
セス要求は図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)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マーカス ペイナード アメリカ合衆国 98008 ワシントン州 ベルビュー 168 アベニュー ノースイ ースト 7 (72)発明者 ポール イングランド アメリカ合衆国 98008 ワシントン州 ベルビュー ノースアップ ウェイ 16659 (72)発明者 ブライアン マーク ウィルマン アメリカ合衆国 98034 ワシントン州 カークランド ノースイースト 80 プレ イス 10901 Fターム(参考) 5B005 RR03 RR04 5B017 AA01 BA04 CA01 CA03

Claims (79)

    【特許請求の範囲】
  1. 【請求項1】 1つまたは2つ以上の資源へのアクセス
    をポリシに従って制御する方法であって、該方法は、 ソースが資源のうちの1つにアクセスするのを許可する
    要求を受け取り、 前記要求がポリシの下で許可し得る場合で、該要求を実
    行したとき、ソースが仮想アドレスを使用して、ポリシ
    の下でアクセスが許されない資源にアクセスできること
    になる事態にならなければ、該要求を許可する、ことを
    含むことを特徴とする方法。
  2. 【請求項2】 請求項1に記載の方法において、さら
    に、 ポリシの下でアクセスが許されない資源のいずれもが、
    ソースによって使用可能な仮想アドレスをもっていない
    状態に資源を初期化することを含むことを特徴とする方
    法。
  3. 【請求項3】 請求項1に記載の方法において、資源
    は、個別にアドレス可能なランダムアクセスメモリユニ
    ットを含むことを特徴とする方法。
  4. 【請求項4】 請求項1に記載の方法において、要求を
    許可するアクトは、要求を実行したとき、ソースが仮想
    アドレスを使用して、ソースがポリシの下で書き込みを
    許されていない資源にアドレスできることになる事態に
    ならないことを、さらに条件としていることを特徴とす
    る方法。
  5. 【請求項5】 請求項1に記載の方法において、資源の
    どれが所定の仮想アドレスに対応しているかに影響を与
    える情報は資源の集合にストアされており、要求を許可
    するアクトは、該要求を実行したとき、前記集合内の資
    源のいずれかへのアクセスがポリシの下で許可されない
    ことになる事態にならないことを、さらに条件としてい
    ることを特徴とする方法。
  6. 【請求項6】 請求項1に記載の方法において、資源の
    どれが所定の仮想アドレスに対応しているかに作用する
    情報は資源の集合にストアされており、各仮想アドレス
    は、その仮想アドレスと関連付けられた資源が書き込み
    可能でないかどうかを示す属性と関連付けられており、
    要求を許可するアクトは、該要求を実行したとき、その
    属性がソースによって書き込み可能であることを示して
    いる仮想アドレスをもつ資源が、前記集合内に含まれる
    ことがないことを、さらに条件としていることを特徴と
    する方法。
  7. 【請求項7】 請求項6に記載の方法において、要求を
    許可するアクトは、該要求を実行したとき、集合内の資
    源のいずれかへのアクセスがポリシの下で許されないこ
    とになる事態にならないことを、さらに条件としている
    ことを特徴とする方法。
  8. 【請求項8】 請求項7に記載の方法において、要求を
    許可するアクトは、該要求を実行したとき、ソースが仮
    想アドレスを使用して、ソースがポリシの下で書き込み
    を許されていない資源にアドレスできることになる事態
    にならないことを、さらに条件とすると共に、該要求を
    実行したとき、ソースがポリシの下で書き込みを許され
    ていない資源が前記集合内に含まれることになる事態に
    ならないことを、さらに条件としていることを特徴とす
    る方法。
  9. 【請求項9】 請求項1に記載の方法において、要求を
    実行すると、資源の1つまたは2つ以上は仮想アドレス
    を取得することになり、該方法は、要求を実行すると、
    仮想アドレスを取得する資源の各々へのアクセスをポリ
    シが許可しているかどうかを判断することを、さらに含
    むことを特徴とする方法。
  10. 【請求項10】 請求項1に記載の方法において、要求
    を実行すると、ポリシが変更されることになり、該方法
    は、前記変更によって影響を受けたポリシが、ソースが
    仮想アドレスを使用してアドレスできる資源のすべてに
    ソースがアクセスするのを許可しているかどうかを判断
    することを、さらに含むことを特徴とする方法。
  11. 【請求項11】 請求項10に記載の方法において、ポ
    リシの変更は、アクセスが許されていなかった資源のう
    ちの、少なくとも最初の資源へのアクセスを許可するこ
    とを含んでいて、該方法は、ポリシの変更の前に前記最
    初の資源にストアされていた値を見えないようにするこ
    とを、さらに含むことを特徴とする方法。
  12. 【請求項12】 請求項10に記載の方法において、ポ
    リシの変更は、すべての資源への無制限アクセスを許可
    することを含むことを特徴とする方法。
  13. 【請求項13】 請求項1に記載の方法において、要求
    は、資源のうちの前記1つに書き込みを行う要求を含ん
    でいて、該方法は、 資源のうちの該1つが要求に従って書き込まれる前に一
    定の時間の間待つことを含むことを特徴とする方法。
  14. 【請求項14】 請求項13に記載の方法において、さ
    らに、 書き込み要求を受け取った後、資源のうちの前記1つの
    資源を読み取る要求を受け取り、 次のどちらかによって、すなわち、 前記待ちのアクトの対象となっている書き込み要求を実
    行して、ストアされた値を資源から取り出すことによっ
    て、あるいは書き込み要求が実行されたならば資源がス
    トアしている値を取り出すことによって、 読み取り要求を処理する、ことを含むことを特徴とする
    方法。
  15. 【請求項15】 請求項1に記載の方法において、さら
    に、 要求がポリシの下で許されていて、かつ条件が真である
    場合、要求を許可し、 要求を実行したとき、ソースが仮想アドレスを使用し
    て、アクセスがポリシの下で許されていない資源にアド
    レスできることになる事態にならない場合以外には、条
    件が絶対に真にならないことを保証する、ことを含むこ
    とを特徴とする方法。
  16. 【請求項16】 請求項1に記載の方法において、要求
    を実行したとき、ポリシに対する第1の変更が行われる
    と共に、どの資源が仮想アドレスを持つかに影響する第
    2の変更が行われ、該方法は、さらに、要求を実行した
    とき、第1の変更の影響を受けたポリシがアクセスを許
    可していない資源と、第2の変更による影響を受けて、
    仮想アドレスを持つようになった資源との間に交差が起
    こらないことを判断することを含むことを特徴とする方
    法。
  17. 【請求項17】 1つまたは2つ以上の資源へのアクセ
    スをポリシに従って制御する方法を実行するコンピュー
    タ実行可能命令でコーディングされているコンピュータ
    可読媒体であって、該方法は、 ソースが資源のうちの1つにアクセスするのを許可する
    要求を受け取り、 前記要求がポリシの下で許可し得る場合で、該要求を実
    行したとき、ソースが仮想アドレスを使用して、ポリシ
    の下でアクセスが許されない資源にアクセスできること
    になる事態にならなければ、該要求を許可する、ことを
    含むことを特徴とするコンピュータ可読媒体。
  18. 【請求項18】 請求項17に記載のコンピュータ可読
    媒体において、前記方法は、さらに、 ポリシの下でアクセスが許されない資源のいずれもが、
    ソースによって使用可能な仮想アドレスをもっていない
    状態に資源を初期化することを含むことを特徴とするコ
    ンピュータ可読媒体。
  19. 【請求項19】 請求項17に記載のコンピュータ可読
    媒体において、資源は、個別にアドレス可能なランダム
    アクセスメモリユニットを含むことを特徴とするコンピ
    ュータ可読媒体。
  20. 【請求項20】 請求項17に記載のコンピュータ可読
    媒体において、要求を許可するアクトは、要求を実行し
    たとき、ソースが仮想アドレスを使用して、ソースがポ
    リシの下で書き込みするのを許されていない資源にアド
    レスできることになる事態にならないことを、さらに条
    件としていることを特徴とするコンピュータ可読媒体。
  21. 【請求項21】 請求項17に記載のコンピュータ可読
    媒体において、資源のどれが所定の仮想アドレスに対応
    しているかに作用する情報は資源の集合にストアされて
    おり、要求を許可するアクトは、該要求を実行したと
    き、前記集合内の資源のいずれかへのアクセスがポリシ
    の下で許可されないことになる事態にならないことを、
    さらに条件としていることを特徴とするコンピュータ可
    読媒体。
  22. 【請求項22】 請求項17に記載のコンピュータ可読
    媒体において、資源のどれが所定の仮想アドレスに対応
    しているかに作用する情報は資源の集合にストアされて
    おり、各仮想アドレスは、その仮想アドレスと関連付け
    られた資源が書き込み可能でないかどうかを示す属性と
    関連付けられており、要求を許可するアクトは、該要求
    を実行したとき、その属性がソースによって書き込み可
    能であることを示している仮想アドレスをもつ資源が、
    前記集合内に含まれることがないことを、さらに条件と
    していることを特徴とするコンピュータ可読媒体。
  23. 【請求項23】 請求項22に記載のコンピュータ可読
    媒体において、要求を許可するアクトは、該要求を実行
    したとき、集合内の資源のいずれかへのアクセスがポリ
    シの下で許されないことになる事態にならないことを、
    さらに条件としていることを特徴とするコンピュータ可
    読媒体。
  24. 【請求項24】 請求項23に記載のコンピュータ可読
    媒体において、要求を許可するアクトは、該要求を実行
    したとき、ソースが仮想アドレスを使用して、ソースが
    ポリシの下で書き込みをすることを許されていない資源
    にアドレスできることになる事態にならないことを、さ
    らに条件とすると共に、該要求を実行したとき、ソース
    がポリシの下で書き込みをすることを許されていない資
    源が前記集合内に含まれることになる事態にならないこ
    とを、さらに条件としていることを特徴とするコンピュ
    ータ可読媒体。
  25. 【請求項25】 請求項17に記載のコンピュータ可読
    媒体において、要求は、資源のうちの前記1つに書き込
    みを行う要求を含んでいて、該方法は、 資源のうちの該1つが要求に従って書き込まれる前に一
    定の時間の間待つことを含むことを特徴とするコンピュ
    ータ可読媒体。
  26. 【請求項26】 請求項25に記載のコンピュータ可読
    媒体において、前記方法は、さらに、 書き込み要求を受け取った後、資源のうちの前記1つの
    資源を読み取る要求を受け取り、 次のどちらかによって、すなわち、 前記待ちのアクトの対象となっている書き込み要求を実
    行して、ストアされた値を資源から取り出すことによっ
    て、あるいは書き込み要求が実行されたならば資源がス
    トアしている値を取り出すことによって、 読み取り要求を処理する、ことを含むことを特徴とする
    コンピュータ可読媒体。
  27. 【請求項27】 請求項17に記載のコンピュータ可読
    媒体において、前記方法は、さらに、 要求がポリシの下で許されていて、かつ条件が真である
    場合、要求を許可し、 要求を実行したとき、ソースが仮想アドレスを使用し
    て、アクセスがポリシの下で許されていない資源にアド
    レスできることになる事態にならない場合以外には、条
    件が絶対に真にならないことを保証する、ことを含むこ
    とを特徴とするコンピュータ可読媒体。
  28. 【請求項28】 複数の資源へのアクセスをポリシに従
    って制御する方法であって、資源の各々は、第1識別子
    の集合によってアドレス可能であり、資源の少なくとも
    一部は第2識別子の集合によってアドレス可能になって
    いるものにおいて、該方法は、 ソースがポリシの下でアクセスすることが許されていな
    い資源のいずれもが、第2識別子のいずれかをもつソー
    スによってアドレス可能になっていない状態に資源を初
    期化し、 資源の1つを読み取る要求を受け取り、該要求は、第2
    識別子の1つによって資源の前記1つを特定しており、 要求を許可する、ことを含むことを特徴とする方法。
  29. 【請求項29】 請求項28に記載の方法において、第
    1識別子は資源の物理アドレスであり、第2識別子は仮
    想アドレスであり、変更可能マッピングは、仮想アドレ
    スの少なくとも一部を物理アドレスの少なくとも一部に
    対応付けていることを特徴とする方法。
  30. 【請求項30】 請求項29に記載の方法において、前
    記マッピングは、少なくとも一部が、前記要求を出した
    ソースの識別子に基づいていることを特徴とする方法。
  31. 【請求項31】 請求項30に記載の方法において、前
    記マッピングは、さらに、第2識別子および前記要求を
    出したソースの識別子以外の別の情報にも基づいている
    ことを特徴とする方法。
  32. 【請求項32】 請求項28に記載の方法において、資
    源を初期化するアクトは、 ソースがポリシの下で書き込みすることが許されていな
    い資源のいずれもが、第2識別子のいずれかをもつソー
    スによってアドレス可能になっていない状態に資源を初
    期化することを含むことを特徴とする方法。
  33. 【請求項33】 請求項28に記載の方法において、資
    源のどれが所定の仮想アドレスに対応しているかに作用
    する情報は、第1の集合の資源にストアされており、資
    源を初期化するアクトは、 ソースがポリシの下でアクセスすることが許されていな
    い資源のいずれもが第1の集合に含まれていない状態に
    資源を初期化することを含むことを特徴とする方法。
  34. 【請求項34】 請求項28に記載の方法において、資
    源のどれが所定の仮想アドレスに対応しているかに作用
    する情報は、第1の集合の資源にストアされており、資
    源を初期化するアクトは、 ソースがポリシの下で書き込みすることが許されていな
    い資源のいずれもが、第2識別子のいずれかをもつソー
    スによってアドレス可能になっていないで、ソースがポ
    リシの下で書き込むことが許されていない資源のどれも
    が第1の集合に含まれていない状態に資源を初期化する
    ことを含むことを特徴とする方法。
  35. 【請求項35】 複数の資源へのアクセスをポリシに従
    って制御する方法を実行するコンピュータ実行可能命令
    でコーディングされているコンピュータ可読媒体であっ
    て、資源の各々は第1識別子の集合によってアドレス可
    能であり、資源の少なくとも一部は第2識別子の集合に
    アドレス可能であるものにおいて、前記方法は、 ソースがポリシの下でアクセスすることが許されていな
    い資源のいずれもが、第2識別子のいずれかをもつソー
    スによってアドレス可能になっていない状態に資源を初
    期化し、 資源の1つを読み取る要求を受け取り、該要求は、第2
    識別子の1つによって資源の前記1つを特定しており、 要求を許可する、 ことを含むことを特徴とするコンピュータ可読媒体。
  36. 【請求項36】 請求項35に記載のコンピュータ可読
    媒体において、資源を初期化するアクトは、 ソースがポリシの下でアクセスすることが許されていな
    い資源のいずれもが、第2識別子のいずれかをもつソー
    スによってアドレス可能になっていない状態に資源を初
    期化することを含むことを特徴とするコンピュータ可読
    媒体。
  37. 【請求項37】 請求項35に記載のコンピュータ可読
    媒体において、資源のどれが所定の仮想アドレスに対応
    しているかに作用する情報は、第1の集合の資源にスト
    アされており、資源を初期化するアクトは、 ソースがポリシの下でアクセスすることが許されていな
    い資源のいずれもが第1の集合に含まれていない状態に
    資源を初期化することを含むことを特徴とするコンピュ
    ータ可読媒体。
  38. 【請求項38】 請求項35に記載のコンピュータ可読
    媒体において、資源のどれが所定の仮想アドレスに対応
    しているかに作用する情報は、第1の集合の資源にスト
    アされており、資源を初期化するアクトは、 ソースがポリシの下で書き込みすることが許されていな
    い資源のいずれもが、第2識別子のいずれかをもつソー
    スによってアドレス可能になっていないで、ソースがポ
    リシの下で書き込むことが許されていない資源のどれも
    が第1の集合に含まれていない状態に資源を初期化する
    ことを含むことを特徴とするコンピュータ可読媒体。
  39. 【請求項39】 第1の集合の資源を含むシステムにお
    けるポリシに従って複数の資源へのアクセスを制御する
    方法であって、第1の集合の資源の各々は第1識別子の
    集合によってアドレス可能であり、資源の少なくとも一
    部は第2識別子の集合によってアドレス可能であり、第
    2識別子の各々は、第2識別子によって特定された資源
    が読取専用であるかどうかを示す関連の属性を有し、資
    源のどれが所定の仮想アドレスに対応しているかに作用
    する情報は資源の集合にストアされているものにおい
    て、該方法は、 ソースがポリシの下でアクセスすることが許されていな
    い資源のいずれもが、第2識別子のいずれかを持つソー
    スによってアドレス可能になってなく、その第2識別子
    がソースによって読取専用であることを示す属性と関連
    付けられているどの資源も、資源の集合に含まれていな
    い状態に資源を初期化し、 資源の1つに書き込みを行う要求を受け取り、その要求
    は、第2識別子の1つによって資源の前記1つを特定し
    ており、 要求を許可する、ことを含むことを特徴とする方法。
  40. 【請求項40】 請求項39に記載の方法において、さ
    らに、 ソースがポリシの下で書き込むことが許されていない資
    源のどれもが、第2識別子のいずれかを持つソースによ
    ってアドレス可能になっていない状態に資源を初期化す
    ることを含むことを特徴とする方法。
  41. 【請求項41】 請求項39に記載の方法において、第
    1識別子は資源の物理アドレスであり、第2識別子は仮
    想アドレスであり、変更可能マッピングは仮想アドレス
    の少なくとも一部を物理アドレスの少なくとも一部にマ
    ップすることを特徴とする方法。
  42. 【請求項42】 請求項41に記載の方法において、前
    記マッピングは、少なくとも一部が、前記要求を出した
    ソースの識別子に基づいていることを特徴とする方法。
  43. 【請求項43】 請求項42に記載の方法において、前
    記マッピングは、さらに、第2識別子および前記要求を
    出したソースの識別子以外の別の情報に基づいているこ
    とを特徴とする方法。
  44. 【請求項44】 第1の集合の資源を含むシステムにお
    けるポリシに従って複数の資源へのアクセスを制御する
    方法を実行するコンピュータ実行可能命令でコーディン
    グされたコンピュータ可読媒体であって、第1の集合の
    資源の各々は第1識別子の集合によってアドレス可能で
    あり、資源の少なくとも一部は第2識別子の集合によっ
    てアドレス可能であり、第2識別子の各々は、第2識別
    子によって特定された資源が読取専用であるかどうかを
    示す関連の属性を有し、資源のどれが所定の仮想アドレ
    スに対応しているかに作用する情報は資源の集合にスト
    アされているものにおいて、前記方法は、 ソースがポリシの下でアクセスすることが許されていな
    い資源のいずれもが、第2識別子のいずれかを持つソー
    スによってアドレス可能になってなく、その第2識別子
    がソースによって読取専用であることを示す属性と関連
    付けられているどの資源も、資源の集合に含まれていな
    い状態に資源を初期化し、 資源の1つに書き込みを行う要求を受け取り、その要求
    は、第2識別子の1つによって資源の前記1つを特定し
    ており、 要求を許可する、ことを含むことを特徴とするコンピュ
    ータ可読媒体。
  45. 【請求項45】 請求項44に記載のコンピュータ可読
    媒体において、該方法は、さらに、 ソースがポリシの下で書き込むことが許されていない資
    源のどれもが、第2識別子のいずれかを持つソースによ
    ってアドレス可能になっていない状態に資源を初期化す
    ることを含むことを特徴とするコンピュータ可読媒体。
  46. 【請求項46】 複数の資源と仮想メモリマネージャを
    含むシステムであって、資源の各々は物理アドレスによ
    ってアドレス可能であり、仮想メモリマネージャは、資
    源の少なくとも一部を仮想アドレスによってアドレス可
    能にすることを許可するようにしているシステムの改良
    システムであって、 ソースが資源の少なくとも1つにアクセスするのを許可
    する要求を評価するガードを含み、該ガードは、1つま
    たは2つ以上の条件のグループが真であるとき資源の前
    記1つへのアクセスを許可し、そうでなければ、該ガー
    ドは要求を拒否し、前記条件は、 要求がポリシの下で許されていること、および要求を実
    行したとき、ソースがポリシの下でアクセスすることを
    許されていない資源のいずれかが、仮想アドレスを持つ
    ソースによってアドレス可能となる状態が起こらないこ
    と、を含むことを特徴とする改良システム。
  47. 【請求項47】 請求項46に記載の改良システムにお
    いて、資源は、個別にアドレス可能であるランダムアク
    セスメモリユニットを含むことを特徴とする改良システ
    ム。
  48. 【請求項48】 請求項46に記載の改良システムにお
    いて、システムは、ソースがポリシの下でアクセスする
    ことを許されている資源のどれもが、仮想アドレスを持
    つソースによってアドレス可能になっていない状態に初
    期化されており、ガードは、アクセスが要求された資源
    を特定するために仮想アドレスを使用しているすべての
    読み取り要求を許可することを特徴とする改良システ
    ム。
  49. 【請求項49】 請求項46に記載の改良システムにお
    いて、資源のどれが仮想アドレスと関連付けられている
    かに作用する情報は、資源の集合にストアされており、
    条件は、さらに、 要求を実行したとき、ソースがポリシの下でアクセスす
    ることを許されていない資源が集合に含まれることにな
    る事態にならないこと、を含むことを特徴とする改良シ
    ステム。
  50. 【請求項50】 請求項46に記載の改良システムにお
    いて、条件は、さらに、 要求を実行したとき、ソースがポリシの下で書き込むこ
    とを許されていない資源のいずれかが、仮想アドレスを
    持つソースによってアドレス可能になることになる事態
    にならないこと、を含むことを特徴とする改良システ
    ム。
  51. 【請求項51】 請求項50に記載の改良システムにお
    いて、資源のどれが仮想アドレスと関連付けられている
    かに作用する情報は、資源の集合にストアされており、
    条件は、さらに、 要求を実行したとき、ソースがポリシの下で書き込むこ
    とを許されていない資源が集合に含まれることになる事
    態にならないこと、を含むことを特徴とする改良システ
    ム。
  52. 【請求項52】 請求項46に記載の改良システムにお
    いて、システムは、さらにプロセッサを含み、ガード
    は、プロセッサ上で実行される実行可能命令を含んでい
    ることを特徴とする改良システム。
  53. 【請求項53】 請求項46に記載の改良システムにお
    いて、ガードは、ハードウェアロジックとファームウェ
    アのうちの、少なくとも1つを含んでいることを特徴と
    する改良システム。
  54. 【請求項54】 請求項46に記載の改良システムにお
    いて、仮想メモリマネージャは、仮想アドレスによって
    要求された資源に属性を関連付け、その属性は、資源が
    書き込み専用であるか、読み書き可能であるかを示して
    おり、仮想メモリマネージャは、資源が読取専用である
    ことを示すその対応する属性を資源に書き込みする要求
    が受け取られたときに、前記ガードを呼び出すように構
    成されていることを特徴とする改良システム。
  55. 【請求項55】 請求項54に記載の改良システムにお
    いて、仮想メモリマネージャは、資源が読取専用である
    ことを、その対応する属性が示している資源に書き込み
    を行う要求を受け取ると、必ず例外を起こし、ガード
    は、前記例外のハンドラを含んでいるか、あるいはその
    ハンドラによって呼び出されることを特徴とする改良シ
    ステム。
  56. 【請求項56】 請求項54に記載の改良システムにお
    いて、資源のどれが仮想アドレスと関連付けられている
    かに作用する情報は、資源の集合にストアされており、
    集合内の資源の各々は、前記ソースによって要求された
    とき資源が読取専用であることを示している属性と関連
    付けられていることを特徴とする改良システム。
  57. 【請求項57】 請求項46に記載の改良システムにお
    いて、仮想メモリマネージャは、仮想アドレスによって
    要求され得る資源の各々について、資源が存在するか、
    存在しないかを示し、仮想メモリマネージャは、存在し
    ないと示されている資源にアクセスする要求を受け取っ
    たときは、前記ガードを呼び出すように構成されてお
    り、また、仮想メモリマネージャは、資源が存在しない
    とその対応する属性が示している資源にアクセスする要
    求を受け取ったときは、該ガードを呼び出すように構成
    されていることを特徴とする改良システム。
  58. 【請求項58】 1つまたは2つ以上の資源へのアクセ
    スを第1ポリシに従って制御する方法であって、該方法
    は、 資源にアクセスする要求を受け取り、 第1ポリシの下で許可し得ないどの要求も許可し得ない
    とし、第1ポリシの下で許可し得る少なくとも1つの要
    求は許可し得るとする第1判定基準に基づいて、要求が
    許可し得るか、拒否し得るかを判断し、 前記判断ステップの結果として要求が許可し得るか、拒
    否し得ると判断されたときは、該判断ステップの結果に
    従って要求を許可または拒否する、ことを含むことを特
    徴とする方法。
  59. 【請求項59】 請求項58に記載の方法において、前
    記判断ステップは、要求が許可し得えないか、拒否し得
    えないかの判断が第1判定基準に基づいて行われること
    に伴い、該方法は、さらに第1ポリシに基づくか、ある
    いは第1判定基準とは異なる第2判定基準に基づいて要
    求を判断することを含むことを特徴とする方法。
  60. 【請求項60】 請求項58に記載の方法において、さ
    らに、 判断ステップの結果として要求が許可し得るか、あるい
    は拒否し得ると判断されないときは、1つまたは2つ以
    上の第2判定基準に基づいて要求を評価し、第2判定基
    準の各々は、第1判定基準と異なっていると共に、それ
    ぞれ相互に異なっており、第1ポリシの下で許可し得な
    いどの要求も、第2判定基準のいずれの下では許可し得
    ると判断され、第2判定基準の各々は、第1ポリシの下
    で許可し得る少なくとも1つの要求を許可し得ると判断
    するように構成されており、 要求が第2判定基準のいずれかの下で許可し得るか、あ
    るいは拒否し得ると判断されたときには、それに応じて
    要求を許可または拒否する、ことを含むことを特徴とす
    る方法。
  61. 【請求項61】 請求項58に記載の方法において、さ
    らに、 判断ステップの結果として要求が許可し得ると判断され
    ないときには、第1ポリシに従って要求を評価し、 要求が第1ポリシの下で許可し得るか、許可し得ないか
    に応じて、要求を許可または阻止する、ことを含むこと
    を特徴とする方法。
  62. 【請求項62】 請求項58に記載の方法において、該
    方法は、資源の少なくとも一部に仮想アドレスを割り当
    てるように構成されたシステムで実行され、第1ポリシ
    は、第2ポリシの下で許可し得ないすべてのアクセス要
    求を許可し得ないと定義し、実行されたとき、アクセス
    が第2ポリシの下で許可し得ない資源に仮想アドレスが
    割り当てられることになるすべてのアクセス要求も許可
    しないと定義している、ことを特徴とする方法。
  63. 【請求項63】 請求項58に記載の方法において、該
    方法は、仮想アドレスと属性を資源の各々に関連付ける
    仮想メモリマネージャを含むシステムで実行され、仮想
    アドレスと関連付けられた特定資源と属性は、仮想アド
    レス以外の、少なくとも1つのファクタに基づいてお
    り、属性は、資源が読取専用資源であるか、読み書き資
    源であるかを示しており、第1判定基準は、要求が属性
    と矛盾していないかどうかを含み、要求が属性と矛盾し
    ていないときは、要求は判断ステップの結果として許可
    し得るとし、要求が属性と矛盾しているときは、要求は
    判断ステップの結果として許可し得るとも、拒否し得る
    とも判断されない、ことを特徴とする方法。
  64. 【請求項64】 1つまたは2つ以上の資源へのアクセ
    スを第1ポリシに従って制御する方法を実行するコンピ
    ュータ実行可能命令でコーディングされているコンピュ
    ータ可読媒体であって、該方法は、 資源にアクセスする要求を受け取り、 第1ポリシの下で許可し得ないどの要求も許可し得ない
    とし、第1ポリシの下で許可し得る少なくとも1つの要
    求は許可し得るとする第1判定基準に基づいて、要求が
    許可し得るか、拒否し得るかを判断し、 前記判断ステップの結果として要求が許可し得るか、拒
    否し得ると判断されたときは、該判断ステップの結果に
    従って要求を許可または拒否する、ことを含むことを特
    徴とするコンピュータ可読媒体。
  65. 【請求項65】 請求項64に記載のコンピュータ可読
    媒体において、前記方法は、さらに、 判断ステップの結果として要求が許可し得るか、あるい
    は拒否し得ると判断されないときは、1つまたは2つ以
    上の第2判定基準に基づいて要求を評価し、第2判定基
    準の各々は、第1判定基準と異なっていると共に、相互
    に異なっており、第1ポリシの下で許可し得ないどの要
    求も、第2判定基準のいずれの下では許可し得るとし、
    第2判定基準の各々は、第1ポリシの下で許可し得る少
    なくとも1つの要求を許可し得るとするように構成され
    ており、 要求が第2判定基準のいずれの下でも許可し得るか、あ
    るいは拒否し得ると判断されたときは、それに応じて要
    求を許可または拒否する、ことを含むことを特徴とする
    コンピュータ可読媒体。
  66. 【請求項66】 請求項64に記載のコンピュータ可読
    媒体において、前記方法は、仮想アドレスと属性を資源
    の各々に関連付ける仮想メモリマネージャを含むシステ
    ムで実行され、仮想アドレスと関連付けられた特定資源
    と属性は、仮想アドレス以外の、少なくとも1つのファ
    クタに基づいており、属性は、資源が読取専用資源であ
    るか、読み書き資源であるかを示しており、第1判定基
    準は、要求が属性と矛盾していないかどうかを含み、要
    求が属性と矛盾していないときは、要求は判断ステップ
    の結果として許可し得るとし、要求が属性と矛盾してい
    るときには、要求は判断ステップの結果として許可し得
    るとも、拒否し得るとも判断しない、ことを特徴とする
    コンピュータ可読媒体。
  67. 【請求項67】 アドレス指定可能なエンティティへの
    アクセスをポリシPに従って制御するシステムであっ
    て、アドレス指定可能なエンティティは、第1の集合A
    から第2の集合Mへの第1マッピングを定義しており、
    第3集合Vから第1の集合への第2マッピングが存在す
    るとき、関数f: A→Mは第1マッピングを示し、関数g:
    S x VAは第2マッピングを示しており、ここでSはアド
    レス指定可能なエンティティへのアクセスを要求できる
    ソースの集合であるものにおいて、該システムは、 ソースsからの要求を評価して、第1マッピングを評価
    または変更するガードを含み、ここでs ∈ Sであり、該
    ガードは、要求がポリシPの下で許可し得るとする共
    に、要求を実行しても、MP(s)に関するステートメント
    が偽とならないとする制約に基づいて要求を条件付きで
    許可し、ここで、MP(s)は、任意のv∈Vのときg(s, v)
    の解となる第1の集合Aのすべてのメンバからなる、こ
    とを特徴とするシステム。
  68. 【請求項68】 請求項67に記載のシステムにおい
    て、前記ステートメントは、 MP(s) ∩ NA(P, s) = ф を含み、上記において、NA(P, s)は、第1の集合Aのす
    べてのメンバからなり、そのときポリシPは、ソースs
    が第1マッピングを評価または変更するのを許可してい
    ない、ことを特徴とするシステム。
  69. 【請求項69】 請求項68に記載のシステムにおい
    て、前記ステートメントは、 MP(s) ∩ NW(P, s) = ф を含み、上記において、NW(P, s)は、第1の集合Aのす
    べてのメンバからなり、そこでは、ポリシPは、ソース
    sが第1マッピングを評価または変更するのを許可して
    いない、ことを特徴とするシステム。
  70. 【請求項70】 請求項69に記載のシステムにおい
    て、第1マッピングのうち、第1の集合Aのサブセット
    に置かれている部分は第2マッピングに影響を及ぼし、
    前記ステートメントは、 (MP(s)∪PMS)∩NW(P, s) = ф を含み、上記において、PMSは前記サブセットを示して
    いる、ことを特徴とするシステム。
  71. 【請求項71】 請求項68に記載のシステムにおい
    て、第1マッピングのうち、第1の集合Aのサブセット
    に置かれている部分は第2マッピングに影響を及ぼし、
    前記ステートメントは、 (MP(s)∪PMS)∩NA(P, s) = ф を含み、上記において、PMSは前記サブセットを示して
    いる、ことを特徴とするシステム。
  72. 【請求項72】 請求項68に記載のシステムにおい
    て、関数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は前記サブセットを示している、ことを
    特徴とするシステム。
  73. 【請求項73】 請求項68に記載のシステムにおい
    て、関数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は前記サブセット
    を示している、ことを特徴とするシステム。
  74. 【請求項74】 請求項68に記載のシステムにおい
    て、関数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は前記サブセット
    を示している、ことを特徴とするシステム。
  75. 【請求項75】 請求項68に記載のシステムにおい
    て、関数gは、g: S xV x E →Aとなるように、さらに
    任意の情報Eに基づいていることを特徴とするシステ
    ム。
  76. 【請求項76】 請求項68に記載のシステムにおい
    て、さらに、 第1マッピングを実装しているランダムアクセスメモリ
    と、 第2マッピングを実装しているメモリ管理ユニットと、
    を含んでいることを特徴とするシステム。
  77. 【請求項77】 請求項68に記載のシステムにおい
    て、CORE ⊆ Aとなっている値の集合COREが存在し、f
    (a)は、すべてa ∈ COREのときガードの機能に影響を及
    ぼし、Pは、ソースの少なくとも一つがCORE内のエレメ
    ントのいずれかで第1マッピングを変更するのを禁止し
    ている、ことを特徴とするシステム。
  78. 【請求項78】 請求項67に記載のシステムにおい
    て、要求を条件付きで許可することは、前記要求の代わ
    りに新しい要求を実行することを含み、新しい要求を実
    行したとき、ステートメントが偽にならないようにす
    る、ことを特徴とするシステム。
  79. 【請求項79】 請求項67に記載のシステムにおい
    て、ガードは、ステートメントは偽であるが、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 2002-04-17
US10/124,609 US6986006B2 (en) 2002-04-17 2002-04-17 Page granular curtained memory via mapping control
US10/286,613 US7565509B2 (en) 2002-04-17 2002-11-01 Using limits on address translation to control access to an addressable entity
US10/286,613 2002-11-01

Publications (2)

Publication Number Publication Date
JP2003330799A true JP2003330799A (ja) 2003-11-21
JP4467249B2 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
US6986006B2 (en) * 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
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
US7685298B2 (en) 2005-12-02 2010-03-23 Citrix Systems, Inc. Systems and methods for providing authentication credentials across application environments
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US7870411B2 (en) * 2006-07-17 2011-01-11 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
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US7788464B2 (en) * 2006-12-22 2010-08-31 Microsoft Corporation Scalability of virtual TLBs for multi-processor virtual machines
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US7853679B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
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
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
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
US8745357B2 (en) * 2009-11-30 2014-06-03 Hewlett-Packard Development Company, L.P. Remapping for memory wear leveling
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
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9280458B2 (en) * 2011-05-12 2016-03-08 Citrix Systems, Inc. Reclaiming memory pages in a computing system hosting a set of virtual machines
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
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
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
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
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
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
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
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
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
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
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
JP4467249B2 (ja) 2010-05-26
US20030200412A1 (en) 2003-10-23
EP1355235A3 (en) 2007-10-10
US7650478B2 (en) 2010-01-19
US7565509B2 (en) 2009-07-21
NO329880B1 (no) 2011-01-17
US20060095689A1 (en) 2006-05-04
US7644246B2 (en) 2010-01-05
NO20031704D0 (no) 2003-04-11
NO20031704L (no) 2003-10-20
US20060117169A1 (en) 2006-06-01
EP1355235A2 (en) 2003-10-22

Similar Documents

Publication Publication Date Title
JP4467249B2 (ja) アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御
US7058768B2 (en) Memory isolation through address translation data edit control
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US10360411B2 (en) Secure processing unit systems and methods
JP4672281B2 (ja) 最適化を用いたメモリアクセス制御の実装
JP4928721B2 (ja) アドレス変換制御のためのシャドウ・ページテーブル
JP6652491B2 (ja) 目標メモリ・アドレスに対応するメモリ属性ユニットの領域を特定するための領域特定演算
US7975117B2 (en) Enforcing isolation among plural operating systems
JPS61195443A (ja) データ処理システム内のシステムフアイルを保護する方法及びデータ処理システム
JP2004530979A (ja) メモリの一部を保護するための方法および装置
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
JP2020527777A (ja) レルム階層における目標レルムの無効化
JP2005512228A (ja) 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法
KR100343069B1 (ko) 다중 등급 보안 방식에 의한 강제적 객체접근 제어 방법및 이를 프로그램화하여 수록한 컴퓨터로 읽을 수 있는기록매체
KR100941743B1 (ko) 타겟 보안을 이용한 입력/출력 디바이스들의 다중-테이블액세싱을 위한 방법 및 장치
JP2020504393A (ja) セキュリティアーキテクチャおよび方法
CN115298655A (zh) 控制具有多个子系统的数据处理系统中的存储器访问
KR20220148323A (ko) 복수의 물리적 어드레스 공간들을 사용하는 장치 및 방법
Vasek Incorporating support for capabilities in a RISC processor architecture
JP2009104555A (ja) Vt環境で動作するソフトウェアエージェントの改竄防止、方法および装置

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