(57)【特許請求の範囲】
【請求項１】
１つまたは２つ以上の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法であって、前記資源の各々は物理アドレスを有し、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、任意の時点で所与の仮想アドレスに対応する資源は、前記資源に格納可能な、前記仮想アドレスを前記物理アドレスにマッピングするアドレス変換テーブルによって少なくとも部分的に判定され、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
前記方法は、
前記ガードが、前記ソースから資源にアクセスする要求を受け取るステップと、
前記ガードが、前記要求が読み取り要求であるか、書き込み要求であるかを判断するステップと、
前記要求が読み取り要求ならば、前記ガードが、前記ソースから前記資源への読み取りを前記ポリシが許可しているかを判断し、許可している場合に前記要求を許可するステップと、
前記要求が書き込み要求ならば、前記ガードが、前記ソースから前記資源への書き込みを前記ポリシが許可しているかを判断し、許可している場合、前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかを判断し、書き込まれない場合に前記要求を許可するステップと
を含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、さらに、
前記ガードが、ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれも含まないように、前記アドレス変換テーブルを初期化するステップを含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法において、資源は、個別にアドレス可能なランダムアクセスメモリユニットを含むことを特徴とする方法。
【請求項４】
請求項１に記載の方法において、
前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し、書き込まれない場合に前記要求を許可することを特徴とする方法。
【請求項５】
請求項１に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許可されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とする方法。
【請求項６】
請求項１に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、各仮想アドレスは、その仮想アドレスと関連付けられた資源が書き込み可能でないかどうかを示す属性と関連付けられており、前記ガードは、前記要求を実行したとき、その属性が前記ソースによって書き込み可能であることを示している仮想アドレスをもつ資源が、前記集合内に含まれるかをさらに判断し、含まれない場合に前記要求を許可することを特徴とする方法。
【請求項７】
請求項６に記載の方法において、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とする方法。
【請求項８】
請求項７に記載の方法において、前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し書き込まれない場合に、および前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源が前記集合内に含まれるかをさらに判断し含まれない場合に、前記要求を許可することを特徴とする方法。
【請求項９】
請求項１に記載の方法において、前記要求を実行すると、資源の１つまたは２つ以上は仮想アドレスを取得することになり、前記方法は、前記ガードが、前記要求を実行すると仮想アドレスを取得する資源の各々へのアクセスを前記ポリシが許可しているかどうかを判断するステップをさらに含むことを特徴とする方法。
【請求項１０】
請求項１に記載の方法において、前記要求を実行すると、前記ポリシが変更されることになり、前記方法は、前記ガードが、前記変更によって影響を受けた前記ポリシが、前記ソースが仮想アドレスを使用してアドレスできる資源のすべてに前記ソースがアクセスするのを許可しているかどうかを判断するステップをさらに含むことを特徴とする方法。
【請求項１１】
請求項１０に記載の方法において、前記ポリシの変更は、アクセスが許されていなかった資源のうちの、少なくとも第１の資源へのアクセスを許可することを含んでいて、前記方法は、前記ガードが、前記ポリシの変更の前に前記第１の資源にストアされていた値を見えないようにするステップをさらに含むことを特徴とする方法。
【請求項１２】
請求項１０に記載の方法において、前記ポリシの変更は、すべての資源への無制限アクセスを許可することを含むことを特徴とする方法。
【請求項１３】
請求項１に記載の方法において、前記要求は、前記資源のうちの１つに書き込む要求を含んでいて、前記方法は、
前記ガードが、前記資源のうちの１つが前記要求に従って書き込まれる前に一定の時間の間待つステップをさらに含むことを特徴とする方法。
【請求項１４】
請求項１３に記載の方法において、さらに、
前記書き込み要求を受け取った後、前記ガードが、前記資源のうちの前記１つの資源を読み取る要求を受け取るステップと、
次のどちらかによって、すなわち、
前記待ちのアクトの対象となっている書き込み要求を実行して、ストアされた値を資源から取り出すことによって、あるいは
書き込み要求が実行されたならば資源がストアしている値を取り出すことによって、
前記ガードが、前記読み取り要求を処理するステップと
を含むことを特徴とする方法。
【請求項１５】
請求項１に記載の方法において、さらに、
前記要求がポリシの下で許されていて、かつ条件が真である場合、前記ガードが、前記要求を許可するステップと、
前記要求を実行したとき、前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれない場合を除いて、前記条件が絶対に真にならないことを保証するステップと
を含むことを特徴とする方法。
【請求項１６】
請求項１に記載の方法において、前記要求を実行したとき、前記ポリシに対する第１の変更が行われると共に、どの資源が仮想アドレスを持つかに影響する第２の変更が行われ、前記方法は、さらに、前記ガードが、前記要求を実行したとき、前記第１の変更の影響を受けたポリシがアクセスを許可していない資源と、前記第２の変更による影響を受けて、仮想アドレスを持つようになった資源との間に交差が起こらないことを判断するステップを含むことを特徴とする方法。
【請求項１７】
１つまたは２つ以上の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法を実行するコンピュータ実行可能命令でコーディングされているコンピュータ可読記録媒体であって、前記資源の各々は物理アドレスを有し、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、任意の時点で所与の仮想アドレスに対応する資源は、前記資源に格納可能な、前記仮想アドレスを前記物理アドレスにマッピングするアドレス変換テーブルによって少なくとも部分的に判定され、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
前記方法は、
前記ガードが、前記ソースから資源にアクセスする要求を受け取るステップと、
前記ガードが、前記要求が読み取り要求であるか、書き込み要求であるかを判断するステップと、
前記要求が読み取り要求ならば、前記ガードが、前記ソースから前記資源への読み取りを前記ポリシが許可しているかを判断し、許可している場合に前記要求を許可するステップと、
前記要求が書き込み要求ならば、前記ガードが、前記ソースから前記資源への書き込みを前記ポリシが許可しているかを判断し、許可している場合、前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかを判断し、書き込まれない場合に前記要求を許可するステップと
を含むことを特徴とするコンピュータ可読記録媒体。
【請求項１８】
請求項１７に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれも含まないように、前記アドレス変換テーブルを初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
【請求項１９】
請求項１７に記載のコンピュータ可読記録媒体において、資源は、個別にアドレス可能なランダムアクセスメモリユニットを含むことを特徴とするコンピュータ可読記録媒体。
【請求項２０】
請求項１７に記載のコンピュータ可読記録媒体において、前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し、書き込まれない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
【請求項２１】
請求項１７に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許可されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
【請求項２２】
請求項１７に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、各仮想アドレスは、その仮想アドレスと関連付けられた資源が書き込み可能でないかどうかを示す属性と関連付けられており、前記ガードは、前記要求を実行したとき、その属性が前記ソースによって書き込み可能であることを示している仮想アドレスをもつ資源が、前記集合内に含まれるかをさらに判断し、含まれない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
【請求項２３】
請求項２２に記載のコンピュータ可読記録媒体において、前記ガードは、前記要求を実行したとき、前記集合内の資源のいずれかへのアクセスがポリシの下で許されない事態になるかをさらに判断し、ならない場合に前記要求を許可することを特徴とするコンピュータ可読記録媒体。
【請求項２４】
請求項２３に記載のコンピュータ可読記録媒体において、前記ガードは、前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかをさらに判断し書き込まれない場合に、および前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源が前記集合内に含まれるかをさらに判断し含まれない場合に、前記要求を許可することを特徴とするコンピュータ可読記録媒体。
【請求項２５】
請求項１７に記載のコンピュータ可読記録媒体において、前記要求は、前記資源のうちの１つに書き込む要求を含んでいて、前記方法は、
前記ガードが、前記資源のうちの１つが前記要求に従って書き込まれる前に一定の時間の間待つステップをさらに含むことを特徴とするコンピュータ可読記録媒体。
【請求項２６】
請求項２５に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
前記書き込み要求を受け取った後、前記ガードが、前記資源のうちの前記１つの資源を読み取る要求を受け取るステップと、
次のどちらかによって、すなわち、
前記待ちのアクトの対象となっている書き込み要求を実行して、ストアされた値を資源から取り出すことによって、あるいは
書き込み要求が実行されたならば資源がストアしている値を取り出すことによって、
前記ガードが、前記読み取り要求を処理するステップと
を含むことを特徴とするコンピュータ可読記録媒体。
【請求項２７】
請求項１７に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
前記要求がポリシの下で許されていて、かつ条件が真である場合、前記ガードが、前記要求を許可するステップと、
前記要求を実行したとき、前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれない場合を除いて、前記条件が絶対に真にならないことを保証するステップと
を含むことを特徴とするコンピュータ可読記録媒体。
【請求項２８】
複数の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法であって、前記資源の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であって、変更可能マッピングが、前記仮想アドレスの少なくとも一部を前記物理アドレスの少なくとも一部に対応付け、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
前記方法は、
前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップと、
前記ガードが、前記資源の１つを読み取る要求を受け取るステップであって、前記要求は、仮想アドレスの１つによって前記資源の前記１つを特定する、要求を受け取るステップと、
前記ガードが、前記要求を許可するステップと
を含むことを特徴とする方法。
【請求項２９】
請求項２８に記載の方法において、前記マッピングは、少なくとも一部が、前記要求を出したソースの識別子に基づいていることを特徴とする方法。
【請求項３０】
請求項２９に記載の方法において、前記マッピングは、さらに、プロセッサが動作しているときのモードに基づいていることを特徴とする方法。
【請求項３１】
請求項２８に記載の方法において、前記資源を初期化するステップは、
前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
【請求項３２】
請求項２８に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第１の集合にストアされており、前記資源を初期化するステップは、
前記ソースが前記ポリシの下でアクセスすることが許されていない資源のいずれもが第１の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
【請求項３３】
請求項２８に記載の方法において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第１の集合にストアされており、前記資源を初期化するステップは、
前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびソースがポリシの下で書き込みを許されていない資源のどれもが前記第１の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
【請求項３４】
複数の資源を有するシステムにおいて、ソースから前記資源へのアクセスをポリシに従って制御する方法を実行するコンピュータ実行可能命令でコーディングされているコンピュータ可読記録媒体であって、前記資源の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であり、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
前記方法は、
前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップと、
前記ガードが、前記資源の１つを読み取る要求を受け取るステップであって、前記要求は、仮想アドレスの１つによって前記資源の前記１つを特定する、要求を受け取るステップと、
前記ガードが、前記要求を許可するステップと
を含むことを特徴とするコンピュータ可読記録媒体。
【請求項３５】
請求項３４に記載のコンピュータ可読記録媒体において、前記資源を初期化するステップは、
前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
【請求項３６】
請求項３４に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第１の集合にストアされており、前記資源を初期化するステップは、
前記ソースが前記ポリシの下でアクセスすることが許されていない資源のいずれもが第１の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
【請求項３７】
請求項３４に記載のコンピュータ可読記録媒体において、資源のどれが所定の仮想アドレスに対応しているかに作用する情報は、前記資源の第１の集合にストアされており、前記資源を初期化するステップは、
前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびソースがポリシの下で書き込みを許されていない資源のどれもが前記第１の集合に含まれていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
【請求項３８】
資源の第１の集合を備えるシステムにおいて、ソースから複数の資源へのアクセスをポリシに従って制御する方法であって、前記資源の集合の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であって、変更可能マッピングが、前記仮想アドレスの少なくとも一部を前記物理アドレスの少なくとも一部に対応付け、前記仮想アドレスの各々は、仮想アドレスによって特定された資源が読取専用であるかどうかを示す関連の属性を有し、前記資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
前記方法は、
前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびその仮想アドレスが前記ソースによって読取専用であることを示す属性と関連付けられているどの資源も、前記資源の集合に含まれていない状態に前記資源を初期化するステップと、
前記ガードが、前記資源の１つに書き込む要求を受け取るステップであって、前記要求は、仮想アドレスの１つによって前記資源の前記１つを特定する、要求を受け取るステップと、
前記ガードが、前記要求を許可するステップと
を含むことを特徴とする方法。
【請求項３９】
請求項３８に記載の方法において、さらに、
前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とする方法。
【請求項４０】
請求項３８に記載の方法において、前記マッピングは、少なくとも一部が、前記要求を出したソースの識別子に基づいていることを特徴とする方法。
【請求項４１】
請求項４０に記載の方法において、前記マッピングは、さらに、プロセッサが動作しているときのモードに基づいていることを特徴とする方法。
【請求項４２】
資源の第１の集合を備えるシステムにおいて、ソースから複数の資源へのアクセスをポリシに従って制御する方法を実行するコンピュータ実行可能命令でコーディングされたコンピュータ可読記録媒体であって、前記資源の集合の各々は、物理アドレスの集合によってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、資源の少なくとも一部は仮想アドレスの集合によってアドレス可能であり、前記仮想アドレスの各々は、仮想アドレスによって特定された資源が読取専用であるかどうかを示す関連の属性を有し、前記資源のどれが所定の仮想アドレスに対応しているかに影響を与える情報は前記資源の集合にストアされており、前記システムは、要求を検査し、前記要求を許可すべきかどうかを判断するガードを含み、
前記方法は、
前記ガードが、前記ソースが前記ポリシの下でアクセスすることを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない、およびその仮想アドレスが前記ソースによって読取専用であることを示す属性と関連付けられているどの資源も、前記資源の集合に含まれていない状態に前記資源を初期化するステップと、
前記ガードが、前記資源の１つに書き込む要求を受け取るステップであって、前記要求は、仮想アドレスの１つによって前記資源の前記１つを特定する、要求を受け取るステップと、
前記ガードが、前記要求を許可するステップと
を含むことを特徴とするコンピュータ可読記録媒体。
【請求項４３】
請求項４２に記載のコンピュータ可読記録媒体において、前記方法は、さらに、
前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれもが、仮想アドレスのいずれかをもつソースによってアドレス可能になっていない状態に前記資源を初期化するステップを含むことを特徴とするコンピュータ可読記録媒体。
【請求項４４】
複数の資源と仮想メモリマネージャを含むシステムであって、前記資源の各々は、物理アドレスによってアドレス可能であり、前記システムは仮想アドレスの使用をサポートして前記資源のアドレスを指定し、前記仮想メモリマネージャは、前記資源の少なくとも一部を、前記資源に格納可能な、前記仮想アドレスを前記物理アドレスにマッピングするアドレス変換テーブルによってアドレス可能にすることを可能とし、前記システムは、
ソースが前記資源の少なくとも１つにアクセスするのを許可する要求を評価するガードであって、
ソースから前記資源にアクセスする要求を受け取り、
前記要求が読み取り要求であるか、書き込み要求であるかを判断し、
前記要求が読み取り要求ならば、前記ソースから前記資源への読み取りを前記ポリシが許可しているかを判断し、許可している場合に前記要求を許可し、
前記要求が書き込み要求ならば、前記ソースから前記資源への書き込みを前記ポリシが許可し得る場合、前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源を指すポインタが前記アドレス変換テーブルに書き込まれるかを判断し、書き込まれない場合に前記要求を許可する、ガードを含むことを特徴とするシステム。
【請求項４５】
請求項４４に記載のシステムにおいて、資源は、個別にアドレス可能であるランダムアクセスメモリユニットを含むことを特徴とする改良システム。
【請求項４６】
請求項４４に記載のシステムにおいて、前記アドレス変換テーブルは、前記ソースが前記ポリシの下でアクセスすることを許されている資源のどれもが、仮想アドレスを持つソースによってアドレス可能になっていない状態に初期化されており、前記ガードは、アクセスが要求された資源を特定するために仮想アドレスを使用しているすべての読み取り要求を許可することを特徴とするシステム。
【請求項４７】
請求項４４に記載のシステムにおいて、資源のどれが仮想アドレスと関連付けられているかに影響を与える情報は、前記資源の集合にストアされており、前記ガードは、さらに、
前記要求を実行したとき、前記ソースが前記ポリシの下でアクセスすることを許されていない資源が前記集合に含まれるかを判断し含まれない場合、前記要求を許可することを特徴とするシステム。
【請求項４８】
請求項４４に記載のシステムにおいて、前記ガードは、さらに、
前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源のいずれかが、仮想アドレスを持つソースによってアドレス可能になる事態になるかを判断し、ならない場合に前記要求を許可することを特徴とするシステム。
【請求項４９】
請求項４８に記載のシステムにおいて、資源のどれが仮想アドレスと関連付けられているかに影響を与える情報は、前記資源の集合にストアされており、前記ガードは、さらに、
前記要求を実行したとき、前記ソースが前記ポリシの下で書き込みを許されていない資源が前記集合に含まれるかを判断し、含まれない場合に前記要求を許可することを特徴とする改良システム。
【請求項５０】
請求項４４に記載のシステムにおいて、システムは、さらにプロセッサを含み、前記ガードは、前記プロセッサ上で実行される実行可能命令を含んでいることを特徴とするシステム。
【請求項５１】
請求項４４に記載のシステムにおいて、前記ガードは、ハードウェアロジックとファームウェアのうちの、少なくとも１つを含んでいることを特徴とするシステム。
【請求項５２】
請求項４４に記載のシステムにおいて、前記仮想メモリマネージャは、仮想アドレスによって要求された資源に属性を関連付け、前記属性は、資源が書き込み専用であるか、読み書き可能であるかを示しており、前記仮想メモリマネージャは、資源が読取専用であることを、その対応する属性が示している資源に書き込む要求が受け取られたときに、前記ガードを呼び出すように構成されていることを特徴とするシステム。
【請求項５３】
請求項５２に記載のシステムにおいて、前記仮想メモリマネージャは、資源が読取専用であることを、その対応する属性が示している資源に書き込む要求を受け取ると、必ず例外を起こし、前記ガードは、前記例外のハンドラを含んでいるか、あるいはそのハンドラによって呼び出されることを特徴とするシステム。
【請求項５４】
請求項５２に記載のシステムにおいて、資源のどれが仮想アドレスと関連付けられているかに影響を与える情報は、前記資源の集合にストアされており、前記集合内の資源の各々は、前記ソースによって要求されたとき資源が読取専用であることを示している属性と関連付けられていることを特徴とするシステム。
【請求項５５】
請求項４４に記載のシステムにおいて、前記仮想メモリマネージャは、仮想アドレスによって要求され得る資源の各々について、資源が存在するか、存在しないかを示し、前記仮想メモリマネージャは、存在しないと示されている資源にアクセスする要求を受け取ったときは、前記ガードを呼び出すように構成されており、および、前記仮想メモリマネージャは、資源が存在しないとその対応する属性が示している資源にアクセスする要求を受け取ったときは、前記ガードを呼び出すように構成されていることを特徴とするシステム。
【請求項５６】
アドレス指定可能なエンティティへのアクセスをポリシＰに従って制御する、仮想メモリマネージャを含むシステムであって、前記アドレス指定可能なエンティティは、第１の集合Ａから第２の集合Ｍへの第１マッピングを定義しており、第３集合Ｖから第１の集合への第２マッピングが存在するとき、関数f: A→Mは第１マッピングを示し、関数g: S × V → Aは第２マッピングを示しており、ここでＳはアドレス指定可能なエンティティへのアクセスを要求できるソースの集合であるものにおいて、前記仮想メモリマネージャは、第２の集合Ｍの少なくとも一部を、前記アドレス指定可能なエンティティによってアドレス可能にすることを可能とし、前記システムは、
ソースｓからの要求を評価して（ここでs ∈ S）、第１マッピングを評価または変更するガードであって、
ソースｓから前記アドレス指定可能なエンティティにアクセスする要求を受け取り、
前記要求が読み取り要求であるか、書き込み要求であるかを判断し、
前記要求が読み取り要求ならば、前記ソースｓから前記アドレス指定可能なエンティティへの読み取りを前記ポリシＰが許可しているかとする制約に基づいて要求を条件付きで許可し、
前記要求が書き込み要求ならば、前記ソースｓから前記アドレス指定可能なエンティティへの書き込みを前記ポリシＰが許可し得るか、および前記要求を実行しても、MP(s)に関するステートメントが偽とならないか（ここで、MP(s)は、任意のｖ∈Ｖのときg(s, v)の解となる第１の集合Ａのすべてのメンバからなる）とする制約に基づいて要求を条件付きで許可する、ガードを含むことを特徴とするシステム。
【請求項５７】
請求項５６に記載のシステムにおいて、前記ステートメントは、
MP(s) ∩ NA(P, s) = ф
を含み（ここで、NA(P, s)は、第１の集合Ａのすべてのメンバからなる）、そこでは、ポリシＰは、ソースｓが第１マッピングを評価または変更するのを許可していないことを特徴とするシステム。
【請求項５８】
請求項５７に記載のシステムにおいて、前記ステートメントは、
MP(s) ∩ NW(P, s) = ф
を含み（ここで、NW(P, s)は、第１の集合Ａのすべてのメンバからなる）、そこでは、ポリシＰは、ソースｓが第１マッピングを変更するのを許可していないことを特徴とするシステム。
【請求項５９】
請求項５８に記載のシステムにおいて、第１マッピングのうち、第１の集合Ａのサブセットに置かれている部分は第２マッピングに影響を及ぼし、前記ステートメントは、
(MP(s)∪PMS)∩NW(P, s) = ф
を含む（ここで、PMSは前記サブセットを示している）ことを特徴とするシステム。
【請求項６０】
請求項５７に記載のシステムにおいて、第１マッピングのうち、第１の集合Ａのサブセットに置かれている部分は第２マッピングに影響を及ぼし、前記ステートメントは、
(MP(s)∪PMS)∩NA(P, s) = ф
を含む（ここで、PMSは前記サブセットを示している）ことを特徴とするシステム。
【請求項６１】
請求項５７に記載のシステムにおいて、関数ｇは、v ∈ Vのときg(s, v)の解となる第１の集合Ａの各メンバに属性を関連付け、属性は、第１マッピングが前記メンバで変更可能であるかどうかを示しており、第１マッピングのうち、第１の集合のサブセットに置かれている部分は第２マッピングに影響を及ぼし、前記ステートメントは、
MP(s)∩NA(P, s) = ф∧MPRW(s) ∩PMS = ф
を含む（ここで、MPRW(s)は、その属性がソースｓによって変更可能であることを示しているＡのすべてのメンバからなり、PMSは前記サブセットを示している）ことを特徴とするシステム。
【請求項６２】
請求項５７に記載のシステムにおいて、関数ｇは、v ∈ Vのときg(s, v)の解となる第１の集合Ａの各メンバに属性を関連付け、属性は、第１マッピングが前記メンバで変更可能であるかどうかを示しており、第１マッピングのうち、第１の集合のサブセットに置かれている部分は第２マッピングに影響を及ぼし、前記ステートメントは、
MP(s)∩NW(P, s) = ф∧MPRW(s) ∩PMS = ф
を含む（ここで、NW(P, s)は、そこではポリシＰはソースｓが第１マッピングを変更するのを許可していない第１の集合Ａのすべてのメンバからなり、MPRW(s)は、その属性がソースｓによって変更可能であることを示しているＡのすべてのメンバからなり、PMSは前記サブセットを示している）ことを特徴とするシステム。
【請求項６３】
請求項５７に記載のシステムにおいて、関数ｇは、v ∈ Vのときg(s, v)の解となる第１の集合Ａの各メンバに属性を関連付け、属性は、第１マッピングが前記メンバで変更可能であるかどうかを示しており、第１マッピングのうち、第１の集合のサブセットに置かれている部分は第２マッピングに影響を及ぼし、前記ステートメントは、
MP(s)∩NR(P, s) = ф∧MPRW(s) ∩PMS = ф
を含む（ここで、NR(P, s)は、そこではポリシＰはソースｓが第１マッピングを変更するのを許可していない第１の集合Ａのすべてのメンバからなり、MPRW(s)は、その属性がソースｓによって変更可能であることを示しているＡのすべてのメンバからなり、PMSは前記サブセットを示している）ことを特徴とするシステム。
【請求項６４】
請求項５７に記載のシステムにおいて、関数ｇは、g: S x V x E →Aとなるように、さらに任意の情報Ｅに基づいていることを特徴とするシステム。
【請求項６５】
請求項５７に記載のシステムにおいて、さらに、
第１マッピングを実装しているランダムアクセスメモリと、
第２マッピングを実装しているメモリ管理ユニットと
を含んでいることを特徴とするシステム。
【請求項６６】
請求項５７に記載のシステムにおいて、CORE ⊆ Aとなっている値の集合COREが存在し、f(a)は、すべてa ∈ COREのときガードの機能に影響を及ぼし、Ｐは、ソースの少なくとも一つがCORE内のエレメントのいずれかで第１マッピングを変更するのを禁止していることを特徴とするシステム。
【請求項６７】
請求項５６に記載のシステムにおいて、要求を条件付きで許可することは、前記要求の代わりに新しい要求を実行することを含み、新しい要求を実行したとき、ステートメントが偽にならないようにすることを特徴とするシステム。
【請求項６８】
請求項５６に記載のシステムにおいて、前記ガードは、ステートメントは偽であるが、Ｘが真であるとき前記要求を条件付きで許可するように構成されており（ここで、Ｘは任意の条件である）、および、前記ガードは、さらに、ステートメントが真でなければＸが真にならないことを保証するように構成されていることを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的には、計算機の分野に関し、さらに具体的には、コンピュータメモリのような、アドレス指定可能なエンティティ (実体、構成要素) へのアクセスを制限する技法に関する。
【０００２】
【従来の技術】
汎用コンピュータの１つの特徴は、無制限にわたる、多数の機能を実行できることであり、これは疑いのない利点でもある。コンピュータは、コンピュータが実行できる命令セットをもっている。プログラマは、その物理的能力の範囲内にあれば、例えば、数学的計算、データの保管/取り出し、入出力、暗号化/解読、などの、どのようなタスクでも、そのタスクを実行する命令（つまり、プログラム）をコンピュータに与えるだけでコンピュータに実行させることができる。コンピュータの無限の汎用性は、人間が活動するほとんどすべての分野にとって恩恵となっているが、この汎用性は欠点にもなっている。すなわち、コンピュータはほとんどどの機能でも実行できるので、正しいことだけでなく、誤ったことも実行するように指示できるからである。銀行取引を実行するように、あるいは企業機密へのアクセスを制限するように、あるいは著作権保護情報のライセンス条項を実施するようにプログラムされている同じコンピュータは、顧客の銀行口座に侵入し、あるいは企業機密を暴露し、あるいは著作権で保護されたコンテンツを違法に複写するようにプログラムすることも可能になっている。コンピュータに委ねられているどの機能も、コンピュータの機能に無制限にアクセスできる悪意のプログラマによって妨害される可能性がある。従って、このような妨害に強いコンピュータを構築する作業は、コンピュータの資源（資源）の一部へのアクセスを制限するような形で行われることがよくあり、その結果、これらの資源は、適切な状況の時だけ使用できるようにしている。
【０００３】
アクセスを制限させることができる重要な資源の集合は、例えば、コンピュータのメモリ、レジスタなどように、データを格納している資源の集合である。これらのデータ記憶資源は、商業的に重要な情報を保護する暗号鍵などの、貴重データや機密データ、あるいは銀行口座へのアクセスを保護するパスワードをストアしておくことができる。この種のデータが存在することは、そのデータをコンピュータで使用するときのジレンマになっている。例えば、暗号を使用して情報を保護するコンピュータは、その情報を解読する暗号鍵（またはその鍵の少なくとも一部の表現）を知っていなければならず、正当な状況の下でその鍵を使用して情報を解読できなければならない。しかし、コンピュータは、その鍵への無制限なアクセスを与えることができない。さもないと、不正な人がその鍵のコピーを世界中の人々に簡単に配信することが可能になり、そのことが保護体系を破壊することになるからである。同じことは、パスワード、企業機密、さらには、鍵、パスワード、および機密を保護するコードといった、種々タイプの情報にも当てはまる。コンピュータは、情報が合法的に使用されるように情報をメモリに置いておくことが要求されるが、コンピュータはこの情報を違法または悪意の使用から保護しなければならない。以上の例から明らかであるように、コンピュータのメモリ（または他のデータ記憶資源）の一部は、付帯情況が正当であるときはアクセスが許可され、付帯情況がそうでないときはアクセスが拒否されるように非常線を張っておくと、かなりのコンピュータセキュリティを達成することができる。このように非常線が張られた資源は、「カーテンが張られたメモリ(curtained memory)」と呼ばれることがある。
【０００４】
データストレージへのアクセスが少なくとも幾分か制限されている種々のシステムが存在している。例えば、大部分の最新オペレーティングシステムは、「アドレス空間(address space)」という考え方を取り入れており、そこでは、各プロセスには、そのプロセスがその仮想メモリマッピングを通してアクセスできる物理メモリの中の、あるページまたはセグメントが割り当てられており（これは連続的変更方式で行われているのが一般である）、あるプロセスは、別のプロセスのアドレス空間に置かれているページ（またはセグメント）にアクセスできないようにしている。メモリのある部分にアクセスできるのは、そのメモリ部分が属しているプロセスからアクセス要求が出されたときに限られているので、ある意味では、この方式はメモリへのアクセスを制限している。しかし、この方式は容易に覆されている。一部のプロセッサでは、物理メモリに直接アクセスすることを可能にしているため（つまり、仮想メモリマッピングを使用しないで）、プロセスは、所定の物理アドレスがそのプロセスのアドレス空間に割り当てられていたかどうかに関係なく、その物理アドレスにアクセスする命令を簡単に実行することが可能になっている。大部分のメモリの直接物理アドレスシングを許していないプロセッサにおいてでさえ（例えば、INTEL x86ファミリのプロセッサ）、仮想メモリマッピングは、アクセス可能なメモリに格納されているのが一般であるため、プロセスは、そのプロセスがアクセスするとは思われない物理アドレスをポイントするように仮想メモリマッピングを変更するだけで、そのアドレス空間の外部のメモリにアクセスできるようになっている。
【０００５】
一部のシステムは、各アクセス要求を許可し得るかどうかを評価してから要求が実行されるようにすることによって、無許可アクセスを防止することを試みている。例えば、プロセッサは、例外ハンドラが各メモリアクセス要求を評価できるようにすべてのメモリアクセス命令を捕捉することが可能になっている。しかし、すべてのアクセス要求は評価を待ってからでなければ、先に進むことができないので、このようなシステムは本来的に非効率である。
【０００６】
【発明が解決しようとする課題】
必要とされているものは、資源へのアクセス制限を保証し、永続化することを可能にする論理的条件をどのように定義するかということと、各アクセス要求を個別的に評価しなくても、これらの論理的条件を利用することによって資源へのアクセスを制御できるシステムである。このようなシステムは、従来技術では実現されていない。
【０００７】
【課題を解決するための手段】
本発明は、コンピュータメモリのような、資源へのアクセスを制御する技法を提供している。本発明では、資源にアクセスする一部の要求は許可し得るが、他の要求は許可し得ないとするポリシ（policy:約束事）が存在することを前提としている。本発明によれば、ポリシの下で許可し得ないアクセス要求は拒否し、実行されたとき、ポリシの下でアクセスが許可し得ない資源が仮想アドレスを持つことになるアクセス要求も拒否することによって、資源へのアクセスを制御している。後者の制約は、仮想アドレスを持つ資源だけが、ポリシによりアクセスが許可される資源となる状態（状態）に資源が常にあることを保証している。従って、その仮想アドレスによって資源を特定しているある種のアクセス要求は、以後の評価なしでも許可できるのは、資源が仮想アドレスをもつということが、少なくともある種のアクセスがポリシの下で許可し得ることを意味しているからである。
【０００８】
本発明によれば、どの資源が仮想アドレスを持つことができるかに制約を設ける「不変条件(invariant condition)」が定義されている。この条件が不変であるというのは、資源が初期化されるとき条件が真（true）となるべきものであり、すべてのアクセス要求に続いて真であり続けるべきものである（マシンが初期状態から到達できるすべての状況において）、という意味においてである。アクセス要求は、次に、２つの基準に従って評価される。第一に、関係するポリシＰが要求された資源へのアクセスを禁止していれば、アクセス要求は拒否される。第二に、アクセス要求が実行されたとき不変条件に違反するときは、アクセス要求は拒否される。この第２条件は、要求がポリシＰの下で許可し得る場合であっても、ある種の要求を拒否させることがある。この意味で、本発明によれば、少なくともＰと同じように制限的であるポリシＰ’が実施されている。
【０００９】
資源が不変条件を満足する状態に保たれているときは、ある種のアクセス要求は、もっと効率的に評価することができる。例えば、所定のソースがポリシの下でアクセスすることを許されていない資源についての仮想アドレスを持っていないことが不変条件となっている場合は、アクセスがポリシの下で許されている資源だけに対して仮想アドレスを持っているので、また読み取りオペレーションは、不変条件が真でない状態へシステムの状態を変更できないのが一般的であるので、仮想アドレスで資源を特定している読み取り要求は、以後の評価なしで許可されることが可能になる。従って、この例示の不変条件は、読み取り要求の評価を最適化することを可能にする。他の不変条件を定義することも可能である。つまり、どの不変条件を選択するかに応じて、異なったタイプの最適化が可能である。
【００１０】
本発明が可能にする最適化は、「選択的フィルタリング(selective filtering)」の形体にすることができる。このフィルタリングは、アクセス要求が許可されるかどうか（つまり、ポリシＰ’の下の許可条件を満足しているかどうか）の最終的判断が評価するには複雑になるとの所見に基づいているが、一部の（または多数の）アクセス要求を判断するのに十分である種々の条件を特定することも可能である。このことが特に当てはまるのは、正しい不変条件が選択されるときである。上記の例では、不変条件は、読み取られるべき資源をその仮想アドレスで特定していれば、許可されるべき読み取り要求を自動的に許可する。従って、どのアクセス要求も、その要求がそのような読み取り要求であるかどうかを判断するために、最初に評価することができる。その質問に対する答えが否定であれば、システムは、もっと複雑な基準に従って要求を評価することができる。他のタイプの要求（例えば、書き込み要求）の評価を効率化する他の不変条件を選択することもできる。
【００１１】
本発明のその他の特徴は、以下に説明されている。
【００１２】
上述した要約説明と後述する好適実施形態の詳細説明の理解を容易にするために、以下では、添付図面を参照して説明することにする。本発明を説明する便宜上、図面には、本発明の構造が例示されている。しかし、本発明は、以下に開示されている具体的方法とその実現手段に限定されるものではない。
【００１３】
【発明の実施の形態】
図１は、本発明の態様を実現することができる例示のコンピューティング環境を示す図である。このコンピューティングシステム環境１００は、適当なコンピューティング環境の単なる一例であり、本発明の使用または機能の範囲を限定することを意味するものではない。また、このコンピューティング環境１００は、例示動作環境１００に示されているコンポーネントの任意の１つまたは組み合わせに関して依存関係または要求条件があることを意味するものでもない。
【００１４】
本発明は、他の多数の汎用または特殊目的コンピューティングシステム環境または構成と共に動作可能である。本発明で使用するのに適している、周知のコンピューティングシステム、環境、および/または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、組み込みシステム、上記システムまたはデバイスのいずれかを含んでいる分散コンピューティング環境、などがあるが、これらに限定されない。
【００１５】
本発明は、プログラムモジュールのように、コンピュータによって実行されるコンピュータ実行可能命令という広いコンテキストの中で説明されている。一般的に、プログラムモジュールの中には、特定のタスクを実行し、あるいは特定の抽象データ型を実装しているルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などが含まれている。本発明は、通信ネットワークや他のデータ伝送媒体を通してリンクされているリモート処理デバイスによってタスクが実行されるような、分散型コンピューティング環境で実施することも可能である。分散型コンピューティング環境では、プログラムモジュールおよび他のデータは、メモリストレージデバイスを含む、ローカルとリモートの両方のコンピュータストレージ媒体に置いておくことができる。
【００１６】
図１を参照して説明すると、本発明を実現するための例示システムは、コンピュータ１１０の形体をした汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネントとしては、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット１２０に結合しているシステムバス１２１があるが、これらに限定されない。システムバス１２１は、数種のバス構造のいずれかにすることが可能であり、その中には、種々のバスアーキテクチャを採用しているバスまたはメモリコントローラ、周辺（周辺）バス、およびローカルバスが含まれている。バスアーキテクチャの例を挙げると、インダストリスタンダードアーキテクチャ (Industry Standard Architecture − ISA) バス、マイクロチャネルアーキテクチャ (Micro Channel Architecture − MCA) バス、拡張ＩＳＡ (Enhanced ISA − EISA) バス、ビデオエレクトロニクススタンダードアソシエーション (V識別子eo Electronics Standards Association − VESA) ローカルバス、および周辺コンポーネント相互接続 (Peripheral Component Interconnect − PCI) バス（Mezzanine（中２階）バスとも呼ばれている）があるが、これらに限定されない。
【００１７】
コンピュータ１１０は、種々のコンピュータ可読媒体を実装しているのが代表的である。コンピュータ可読媒体は、利用可能で、コンピュータ１１０によってアクセス可能な媒体であれば、どの媒体にすることも可能であり、その中には、揮発性と不揮発性の両方の媒体、取り外し可能と取り外し不能の両方の媒体が含まれている。コンピュータ可読媒体の例を挙げると、コンピュータストレージ媒体と通信媒体があるが、これらに限定されない。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの、情報をストアするためのいずれかの方法またはテクノロジで実現されている揮発性と不揮発性の両方の取り外し可能媒体と取り外し不能媒体がある。コンピュータストレージ媒体の中には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリテクノロジ、ＣＤＲＯＭ、デジタル多目的ディスク (digital versatile disk − DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは必要とする情報をストアするために使用できて、コンピュータ１１０によってアクセス可能である他の媒体が含まれているが、これらに限定されない。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波や他のトランスポートメカニズムなどの変調データ信号の形で具現化しているのが代表的であり、その中には、任意の情報配信媒体が含まれている。ここで、「（被）変調データ信号(modulated data signal)」という用語は、その特性の１つまたは２つ以上が信号に含まれる情報を符号化するような形でセットまたは変更されている信号を意味している。通信媒体の例を挙げると、布線式ネットワークや直接ワイヤド接続のようなワイヤド媒体、および音響、ＲＦ、赤外線などのようなワイヤレス媒体があるが、これらに限定されない。上に挙げたものを組み合わせたものも、コンピュータ可読媒体の範囲に含まれることは当然である。
【００１８】
システムメモリ１３０には、揮発性および/または不揮発性メモリが含まれており、そのようなものとして、読取専用メモリ (read only memory − ROM)１３１とランダムアクセスメモリ (random access memory − RAM)１３２がある。スタートアップ時（起動時）のときのように、コンピュータ１１０内のエレメント（要素）間で情報を転送するのを支援する基本ルーチンで構成された基本入出力システム (basic input/output system − BIOS)１３３は、ＲＯＭ１３１に格納されているのが代表的である。ＲＡＭ１３２には、処理ユニット１２０に即時にアクセス可能であり、および/または現在の処理ユニット１２０によって操作の対象となっているデータおよび/またはプログラムモジュールが置かれているのが代表的である。一例として、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が示されているが、これらに限定されない。
【００１９】
コンピュータ１１０は、その他の取り外し可能または取り外し不能で、揮発性または不揮発性のコンピュータストレージ媒体を装備することも可能である。図１には、取り外し不能で不揮発性の磁気媒体との間で読み書きを行うハードディスクドライブ１４１、とはずし可能で不揮発性の磁気ディスク１５２との間で読み書きを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体などの、取り外し可能で不揮発性の光ディスク１５６との間で読み書きを行う光ディスクドライブ１５５が示されているが、これは単なる一例である。例示の動作環境で使用できる、他の取り外し可能または取り外し不能で、揮発性または不揮発性のコンピュータストレージ媒体としては、磁気テープカセット、フラッシュメモリカード、デジタル多目的ディスク、デジタルビデオテープ、ソリッド状態ＲＡＭ、ソリッド状態ＲＡＭ、などがあるが、これらに限定されない。ハードディスクドライブ１４１は、インタフェース１４０のような、取り外し不能メモリインタフェースを通してシステムバス１２１に接続されているのが代表的であり、磁気ディスクドライブ１５１と光ディスクドライブ１５５は、インタフェース１５０のような、取り外し可能メモリインタフェースによってシステムバス１２１に接続されているのが代表的である。
【００２０】
上述し、図１に図示されているドライブとそれぞれに関連するコンピュータストレージ媒体はストレージとして、コンピュータ１１０のためのコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータを格納している。図１には、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納しているものとして示されている。なお、これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであることもあれば、別のものであることもある。ここで、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７に異なる番号が付けられているのは、最低限でも、これらが別のコピーであることを示すためである。ユーザは、キーボード１６２および一般にマウス、トラックボールまたはタッチパッドとも呼ばれているポインティングデバイス１６１などの、入力デバイスを通してコマンドと情報をコンピュータに入力することができる。その他の入力デバイス（図示せず）としては、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、などがある。これらとその他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース１６０を通して処理ユニット１２０に接続されていることがよくあるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス (universal serial bus − USB) などの、他のインタフェースとバス構造によって接続することも可能である。モニタ１９１または他のタイプのディスプレイも、ビデオインタフェース１９０のような、インタフェースを介してシステムバス１２１に接続されている。モニタのほかに、コンピュータは、スピーカ１９７やプリンタ１９６などの、他の周辺出力デバイスを装備することもでき、これらの出力デバイスは出力周辺インタフェース１９０を通して接続可能になっている。
【００２１】
コンピュータ１１０は、リモートコンピュータ１８０のような、１つまたは２つ以上のリモートコンピュータとの論理コネクションを使用するネットワーク環境で動作させることができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードにすることが可能であり、図１にはメモリストレージデバイス１８１だけが示されているが、コンピュータ１１０に関して上述したエレメントの多くまたは全部を装備しているのが代表的である。図１に示す論理コネクションとしては、ローカルエリアネットワーク (local area network − LAN)１７１と広域ネットワーク (w識別子e area network − WAN)１７３があるが、他のネットワークを含むことも可能である。このようなネットワーク環境は、オフィス、企業内コンピュータネットワーク、イントラネットおよびインターネット (the Internet) で普及している。
【００２２】
ＬＡＮネットワーク環境で使用されるときは、コンピュータ１１０は、ネットワークインタフェースまたはアダプタ１７０を通してＬＡＮ１７１に接続されている。ＷＡＮネットワーク環境で使用されるときは、コンピュータ１１０は、インターネットなどの、ＷＡＮ１７３上のコミュニケーションを確立するためのモデム１７２や他の手段を装備しているのが代表的である。モデム１７２は内蔵型と外付け型があり、どちらも、ユーザ入力インタフェース１６０または他の該当メカニズムを介してシステムバス１２１に接続されている。ネットワーク環境では、コンピュータ１１０に関連して上述したプログラムモジュールまたはその一部は、リモートのメモリストレージデバイスに置いておくことが可能である。図１には、リモートアプリケーションプログラム１８５がメモリデバイス１８１に置かれているものとして示されているが、これは単なる例であり、これに限定されない。当然に理解されるように、図示のネットワークコネクションは例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することも可能である。
【００２３】
アクセス制御のモデル
本発明の目的上、アクセス制御の問題は、次のようにモデル化することができる。
・  資源の集合
・  ソースの集合
・  アクセスモードの集合
・  ガードの集合
このモデルでは、アクセス要求は組(r,s,a,p) で表されている。ただし、
・  ｒは、アクセスが要求された資源であることを示している。
・  ｓは、アクセス要求のソースであることを示している。
・  ａは、アクセスモードであることを示している。
・  ｐは、アクセス要求のオプションパラメータであることを示している。
【００２４】
上記モデルの１つの例は、メモリにアクセスする要求を評価し、処理するコンピュータ（例えば、図１に示すコンピュータ１１０）である。例えば、コンピュータのＲＡＭ(図１に示すエレメント１３２)またはその個別バイト（またはワードまたはダブルワード）は、アクセスを要求できる「資源」となることができる。コンピュータのレジスタは、この「資源」の別の例である。コンピュータ上で実行されるプロセスは、アクセス要求を出すことができる「ソース」の例である。「アクセスモード」は、「読み取り(read)」または「書き込み(write)」にすることができる（これは、ソースが読み取りまたは書き込みの目的のために資源にアクセスするのを望んでいるのかどうかを示している）。（このモデルの１つの変形では、アクセスモードが省かれているが、その場合には、要求されるアクセスは全権になっている。）書き込み要求では、資源に書かれる（つまり、そこにストアされる）値は、要求の「パラメータ」にすることができる。ＣＰＵ（つまり、図１に示す処理ユニット１２０）は、あるレジスタへの書き込み要求やＲＡＭ１３２のある部分への書き込み要求を捕捉し、またはその欠陥を見つけて、要求の明細と付帯情況に基づいて要求が許可またはブロック（阻止）されるように構成できるという意味で、資源の「ガード(guard)」（守護）の働きをすることができる。上述したモデルは、コンピュータに応用した場合を想像すると好都合であるが、当然に理解されるように、このモデルは論理的に自己完結的 (self-contained) であるので、物理的な類推をしなくても、それが完成されたものであることを知ることができる。従って、当然に理解されるように、本発明は、コンピュータまたは他の特定タイプのデバイス内で出されるアクセス要求に限定されるものではなく、上述したモデルに従うどのコンテキストにも適用される。
【００２５】
「ポリシ」は、どのアクセス要求が許可し得るかを記述しているルールと条件のシステムであり、許可されたアクセス要求に関連してとらなければならない、アクションの集合を定義することも可能になっている。従って、ポリシは、そのドメイン（定義域）がアクセス要求の集合（他の情報であることもある。なお、これは、以下で説明するように、「環境」と総称することができる）であり、その範囲がブール値の「真」（要求は許可し得る）または「偽」（要求は許可し得ない）である関数を、要求に関連してとらなければならないアクションと共に定義している。例えば、ポリシは、ソースs1はどの状況の下でも、資源r7にアクセスすることが許されないと規定することができる。従って、(r7,s1,a,p)形式の要求に適用されるポリシは「偽」の値（許可し得ない）をもつことになる。別の例として、ポリシは、ＣＰＵがカーネルモード（Karnel mode）で動作していることきはどの資源にもアクセスできると規定することができる。従って、カーネルモードで行われたどの要求も、「真」の値（許可し得る）をもつことになる。要求と関連付けることができる「アクション」の例として、要求を許可すると、新ソースs’が以前は制限されていた資源へのアクセス権を取得できるようにポリシを変更することになったとき、資源の値をゼロにセットする場合がある。
【００２６】
「ガード（guard）」は、ポリシに基づいて資源へのアクセスのゲートの働きをする。従って、アクセス要求が許可される前に、要求された資源のガードは、その要求を検査し、要求を許可すべきかどうかを利用可能なポリシ記述に基づいて判断する。実際には、ポリシはガードに実装されている。
【００２７】
ガードは、ポリシ要求ごとにポリシ機能を評価し、アクセスを許可するか、許可しないかをその機能に基づいて行うハードウェアまたはソフトウェアコンポーネントにすることができる。別の方法として、ポリシ全体の一部（「サブポリシ」）をガードに実行させることも可能である。例えば、ガードは、あるクラスのアクセス要求を判断するのに十分である、ある種の条件に基づいて高速に評価できるアクセス要求を許可または拒否するように設計することもでき（例えば、ＣＰＵがカーネルモードで動作しているときすべてのアクセス要求を許可し得るものとするポリシの下で、そのようなアクセス要求をすべて許可するガードなど）、もっと複雑な評価を必要とする要求を他のガードに任せることができる。（以下で説明するように、このようなガードの集合は、ガードが「サブカード」から構成されている場合で、各サブガードがある種のクラスのアクセス要求を判断し、他の要求を次のサブガードに渡していくような場合には、シングルガードがポリシを実装していると言っても同じである。）さらに、要求を評価するためにアクションが要求されない場合があり、その場合には、ガードが暗に存在しているときである。例えば、あるクラスのアクセス要求全体が許可し得る（または許可し得ない）ように条件がセットアップされていたときは、ガードは、要求を評価するためにどのアクションもとらないで済むことになる。それにもかかわらず、このような条件が存在すると、資源へのアクセスがポリシによって許可されているときだけ取得されることが保証されるので、この条件の存在は「潜在的」ガードを構成している。このタイプのアクセス制御を可能にする条件の例は、図７とそれ以降の図を参照して以下に説明されている。
【００２８】
図２は、ガードに実装されているポリシが存在しているとき、アクセス要求がどのように処理されるかを示す例である。資源２０２（１）、２０２（２）、．．．、２０２（ｎ）（資源２０２と総称する）は、そこへのアクセスが許可または拒否されるエンティティである。ソース２０４（１）、２０４（２）、．．．、２０４（ｍ）（ソース２０４と総称する）は、資源２０２に対するアクセス要求を出すことができるエンティティである。ガード２０６（１）、２０６（２）、．．．、２０６（ｋ）（ガード２０６と総称する）は、資源２０２へのアクセスのゲートの働きをするエンティティである。
【００２９】
１つの例では、ソース２０４（２）は資源２０２（２）にアクセスする要求２１０を出している。ガード２０６（１）は要求２１０を評価する。要求２１０を評価するとき、ガード２０６（１）は要求２１０に関連する値ｒ，ｓ，ａ，およびｐを考慮することができ、オプションとして、環境２０８を考慮する。（環境２０８は、ｒ，ｓ，ａ，およびｐ以外の情報を含んでいる場合がある。例えば、プロセッサが動作しているときのモード、現在ログインしているユーザの識別子、時間、温度、月相、など）ガード２０６（１）は、要求２１０が適用されるポリシの下で許可し得ると判断するので、ガード２０６（１）は資源２０２（２）へのアクセスを許可する。
【００３０】
別の例では、ソース２０４（ｍ）は、資源２０２（ｎ）にアクセスする要求２１２を出している。ガード２０６（ｋ）は要求２１２を評価し、その要求が適用されるポリシの下で許可し得ないと判断する。従って、ガード２０６（ｋ）は要求２１２を拒否するので、資源２０２（ｎ）にアクセスするソース２０４（ｍ）の試みは失敗する。
【００３１】
以上から理解されるように、ガード２０６（１）が要求２１０を評価するために選択される理由およびガード２０６（ｋ）が要求２１２を評価するために選択される理由はさまざまである。例えば、資源２０２（２）にアクセスするすべての要求、またはソース２０４（２）から出されたすべての要求の評価をガード２０６（１）に任せことも、ある要求は、別の要求の処理に使用中でないガードにランダムに任せることもできる。同じようなルールで要求２１２をガード２０６（ｋ）に評価させることもできる。別の方法として、ガードの各々が、ポリシの若干異なる部分を実装することもできるので、各要求が許可されるか、あるいはすべてのガードが使用尽くされるまで、各要求を一定の順序でガードの１つひとつに通していくことができる。例えば、ガード２０６（１）は、ある単純な基準に基づいて許可できるすべての要求を許可するように設計できるので、その基準を満たさない要求を、他のガード２０６（２）−２０６（ｋ）に順次に渡していって評価させることができる。別の方法として、すべてのアクセス要求をシングルガードに評価させることも可能である。
【００３２】
アクセスとアクセス制御が行われるマシンのモデル
これまでの議論では、資源の抽象的概念を説明し、資源の具体的例として、コンピュータメモリとレジスタを示してきた。以下では、「アドレス指定可能なエンティティ(addressable entity)」と呼ばれる特定タイプの資源（または資源の集合）について正式に議論することにする。以下の説明から理解されるように、コンピュータメモリ、レジスタ、ディスク、およびテープは、すべてアドレス指定可能なエンティティの例である。前述の議論の中で述べたように、アクセス要求は (r,s,a,p) で与えられ、そこには特定資源ｒの識別子が含まれている。アドレス指定可能なエンティティは、特定資源がどのようにして識別または「アドレス指定」されるかのモデルを提供している。
【００３３】
このモデルの目的上、Ｖ、Ａ、およびＭという項は、次のように使用されている。
・  Ｖは任意の集合である。
・  Ａは任意の集合である。
・  Ｍは任意の集合である。
これらは離散的にすることができるが、必ずしもそうである必要はない。つまり、ある集合のメンバは、他の集合の中に現れることも、現れないこともある。
【００３４】
図３は、集合Ｖ、Ａ、およびＭの例である。集合３０２はＶ、集合３０４はＡ、および集合３０６はＭである。図３の例では、Ｖは大文字（Ａ−Ｚ）の集合、Ａは小文字（ａ−ｚ）の集合、Ｍは数字（０−９）の集合である。
【００３５】
アドレス指定可能なエンティティはＡからＭへの変更可能マッピングである。つまり、任意の瞬時において、アドレス指定可能なエンティティは、f(a) = ｍとなるように関数f: A→Mを定義している。ただし、ａ∈Ａ、およびｍ∈Ｍである。このマッピングが変更可能であるのは、マッピングが変化するからである。図３はアドレス指定可能なエンティティ３１２を示しているが、これは集合３０４（Ａ）から集合３０６（Ｍ）へのマッピングである。従って、Ａの任意のエレメントが与えられているとき（例えば、小文字の"k"）、アドレス指定可能なエンティティ３１２は、Ｍの特定エレメント（例えば、数字の"7"）を示している。（アドレス変換メカニズム３１０は、少なくともＶからＡへの部分的変更可能マッピングを定義している。なお、アドレス変換メカニズム３１０は以下に詳しく説明されている。）
【００３６】
単純な例として、アドレス指定可能なエンティティ３１２は、ＡのメンバをＭのメンバと相関付けるテーブルと見ることができる。図４は単純なアドレス指定可能なエンティティ３１２（１）を示し、そこではテーブルの各行には、左側にＡのメンバが、右側にＭのメンバが入っている。従って、図４の例において、ｆがアドレス指定可能なエンティティ３１２（１）によって定義された関数であるとすると、f(‘a’)= 17, f(‘b’)= 6, f(‘c’)= 3、以下同様になる。（図４乃至図６の説明において、単一引用符で囲まれた記号’a’、’b’、および’c’は、図３に図示の例示集合Ａのメンバである小文字のことを示している。実際には、アドレス指定可能なエンティティ３１２（１）を定義しているテーブルの各行は「資源」である。
【００３７】
図３に戻って説明すると、アドレス指定可能なエンティティ３１２の物理的な例はコンピュータメモリである。（図１に図示のＲＡＭは、このコンピュータメモリの例である。）図３に図示の集合ＡとＭの代わりに、Ａは0から228-1までの整数の集合（これは、256メガバイトのランダムアクセスメモリのときの個別バイトアドレスを表している）であり、Ｍは0から255までの整数の集合（これは、１バイトのメモリにストアできる256個の異なる値を表している）であるとする。この場合には、メモリは、ＡからＢまでのマッピングを物理的に具現化している。つまり、0から228-1までのいずれかのアドレスが与えられているとき、メモリは、256個の異なる１バイト整数のどれがそのアドレスにストアされているかを示している。メモリがＡのエレメントをＭのエレメントにマッピング（写像）しているという意味は、メモリは、任意の瞬時において、ＭのどのエレメントがＡの特定エレメントに対応しているかを定義しているからである。さらに、マッピングが「変更可能」であるという意味は、新しい値をメモリに書き込むとマッピングが変更されるからである。同様に、レジスタ、ディスク、テープ、パンチカード、およびデータをストアできる他の、大部分の媒体も、アドレス指定可能なエンティティの例である。レジスタは、そのレジスタ番号によってアドレス指定することができる。ディスク上のバイトは、そのトラック、セクタ、およびオフセットによってアドレス指定することができる。テープ上のバイトは、特定のマーカからのオフセットによってアドレス指定することができる。パンチカード上のバイトは、既知のデックにおけるカードのシーケンスとカードの左側からのバイトのオフセットによってアドレス指定することができる。なお、当然に理解されるように、「アドレス指定可能なエンティティ」という用語には、上述したマッピングを具現化している何らかの機構が含まれることであって、コンピュータメモリや上述したデバイスのいずれにも限定されない。
【００３８】
アドレス指定可能なエンティティは、次の２つのアクセスオペレーションを受ける。
・  読み取り：Ａ→Ｍ。機能的には、read(a) return f(a)
・  書き込み：ＡｘＭ
ｆがＡ→Ｍマッピングによって定義された関数であれば、機能的にread (a) return f(a)。ただし、a∈Ａ。（前記センテンスにおいて、記号"a"は、上述した要求(r,s,a,p)におけるように、アクセスモードではなく集合Ａのエレメントを示している。このことがコンテキストから明らかでない個所では、記号"a"がどのような意味をもつかを示している。）代表例として、書き込み関数はマッピングＡ→Ｍに変更する。従って、write(a,m)（a∈A, m∈Mのとき）は、f(a) = mになるように関数ｆを変更する。さらに、write(a,m)が実行されると、a’≠aのときf(a’)が変更されることがあり、もっと一般的には、f(a) = mをセットするのとは別の、なんらかの変更が行われることになる。代表例として、write(a,m)が実行されると、オペレーションread(a) return mが実行されることになる（m’≠mのときwrite(a,m’)が途中に介在していないものと想定している）。なお、アドレス指定可能なエンティティの概念は、どの特定のセマンティックス集合に限定されない。図５と図６を参照して説明すると、単純なアドレス指定可能なエンティティ３１２（１）で書き込みオペレーション５０２ ("write(‘b’,14)")が実行されると、その集合"A"の値が’b’である行で値"6"が"14"に変更されるので、マッピングは３１２（１）に変更されることになる。読み取りオペレーション６０２ ("read(‘b’)")がその後でマッピング３１２（１）‘で実行されたときは、書き込みオペレーション５０２は、集合Ａのエレメント’b’が集合Ｍのエレメント"14"にマッピングするようにオリジナルのマッピング３１２（１）を変更しているので、この読み取りオペレーションからは値"14"が戻されることになる。上述したように、書き込みオペレーションの後に続く読み取りオペレーションが、書き込みオペレーションで書き込まれた値を戻すことを可能にするセマンティックス（意味論）はアドレス指定可能なエンティティの単なる例であり、限定的なものではない。以下では、読み取りオペレーションと書き込みオペレーションが異なるセマンティクスをもつアドレス指定可能なエンティティの例について説明する。
【００３９】
以下は、アドレス指定可能なエンティティのいくつかの実在（real world；現実世界ともいう）の例である。
【００４０】
・  物理的ランダムアクセスメモリ（例えば、図１に図示のＲＡＭ１３２）。このタイプのアドレス指定可能なエンティティは、上で言及したセマンティックスをもっている。すなわち、書き込みオペレーションはマッピングを変更するために使用され、write(a,m)のあとにread(a) return mが続いている。図７は、ＲＡＭ１３２をアドレス指定可能なエンティティとした例である。この例では、ＲＡＭ１３２は、228バイトからなり、各バイトは0から228-1までの範囲の物理アドレスをもっている。物理アドレスは集合Ａに対応しており、これらのアドレスにストアできる取り得るバイト値は集合Ｍに対応している。この例では、値17はアドレス０にストアされ、6はアドレス１にストアされ、137はアドレス２にストアされており、以下同様である。
【００４１】
・  制御レジスタ。このタイプのアドレス指定可能なエンティティでは、書き込みオペレーションは、指示されたアドレスでｆを変更する以上の構成のために使用されるのが代表的である。例えば、チップセットまたはペリフェラレルの制御機器またはデータレジスタに書き込みを行うと、サウンドカードのサウンドが再生または変更されるか、あるいはビデオディスプレイが変更されるか、マシン状態が基本的な方法で変更されることがある。図８は、いくつかの例示制御レジスタを備えたコンピュータを示している。コンピュータ１１０は、オーディオコントロール８０２、ビデオコントロール８０４、ＣＰＵコントロール８０６、およびその他のコントロール８０８を備えている。これらの制御レジスタの各々はアドレス指定可能なエンティティである。例えば、オーディオコントロール８０２に値を書き込むと、サウンドカード８２１のサウンドが変更されることがある。ビデオコントロール８０４に値を書き込むと、ビデオカード８２２によって管理されている何らかの態様（例えば、ディスプレイの解像度）が変更されることがある。ＣＰＵコントロール８０６に値を書き込むと、処理ユニット１２０の振る舞いの何らかの態様が変更されることがある。例えば、カーネルモードからユーザモードへの変更または処理ユニット１２０で採用されている仮想アドレッシング方式の変更がされることがある。その他のコントロール８０８は、コンピュータ１１０の他の態様を制御することができる。図８は、上記に示した状況の例を示しており、そこでは、write(a,m)は、a’≠aのときf(a’)を変更している。例えば、ビデオコントロール８０４に新しい値を書き込むと、モニタ１９１に表示されている背景カラーが変更されるので、ビデオＲＡＭ内のビットの多くが変更されることになる。
【００４２】
・  ＣＰＵレジスタ。実際には、これらのレジスタは、ＲＡＭのバイトとは異なり、数値アドレスによって識別されないのが代表的であるが、各レジスタはともかく識別可能であり、その違いは純粋に構文的なものである。各レジスタは、なんらかの識別子をもち、これらの識別子は集合Ａに対応している。図９は、ＣＰＵレジスタ９００（０）、９００（１）、．．．、９００（１５）の集合の例を示し、これらはｒ０−ｒ１５と名づけられている。この例では、これらのレジスタの各々は、32ビット値を格納する能力を備えている。０−１５の範囲のレジスタ番号は集合Ａに対応し、０−２２３の範囲の整数値は集合Ｍに対応している。（いくつかの制御レジスタは、実際には、ＣＰＵレジスタであるとすることができる。）
【００４３】
・  分散システムにおける擬似共有メモリ。機能的には、このメモリは、第１の例のメモリに類似している。しかし、このメモリの物理的ストレージは、多数の地理的に離れたマシンにわたって分散化することが可能になっている。図１０は、そのようなメモリの例を示している。コンピュータ１１０（０）、１１０（１）、および１１０（２）の各々は、それぞれＲＡＭ１３２（０）、１３２（１）および１３２（２）を備えている。コンピュータ１１０（０）−１１０（２）は、ネットワーク１００２（これは、例えば、図１に図示のローカルエリアネットワーク１７３または広域ネットワーク１７１にすることができる）を介して通信している。ネットワーク１００２を使用すると、コンピュータの各々は他のコンピュータのＲＡＭの１つにアクセスすることが可能になる。例えば、コンピュータ１１０（０）−１１０（２）は、ある種のメッセージ受け渡しプロトコルに参加できるので、コンピュータ１１０（０）は、コンピュータ１１０（１）がコンピュータ１１０（１）のＲＡＭ１３２（１）から情報を取り出すことを要求することができる。アドレッシング規則は、これらのＲＡＭのいずれかに置かれているバイトがシングルアドレスで識別できるようにセットアップ(起動)することができる。シングルアドレスとして、例えば、ＲＡＭ１３２（０）内のアドレスは頭に"00"が付けられ、ＲＡＭ１３２（１）内のアドレスは頭に"01"が付けられ、ＲＡＭ１３２（２）内のアドレスは頭に"10"が付けられている。このようにすると、あるコンピュータがそのコンピュータのＲＡＭに置かれていないバイトのアクセス要求を出した場合でも、ＲＡＭ１３２（０）−１３２（２）のいずれかに置かれているどのバイトも、コンピュータ１１０（０）−１１０（２）のいずれからでもシングルアドレスで識別することが可能になる。この意味において、ＲＡＭ１３２（０）−１３２（２）は、擬似（simulated）共有メモリ１００４を構成している。このメモリ１００４は、図７に示すＲＡＭ１３２または図８の制御レジスタよりも、セマンティックスが若干弱くなっていることが多い。例えば、コンピュータ１１０（０）がwrite(a,m)にread(a)が続くオペレーションを実行する場合、コンピュータ１１０（１）または１１０（２）のどちらかが、これらのオペレーション実行時の間にアドレスａに異なる値を書き込んでいる可能性があるので、読み取りオペレーションからｍが戻されないことがある。しかし、擬似共有メモリ１００４がＲＡＭ１３２のような、従来のメモリと異なるセマンティックスを持っている場合でも、擬似共有メモリ１００４は、依然としてアドレス指定可能なエンティティ３１２の物理的事例である。この事例が強調していることは、本発明はどのような特定タイプのアドレス指定可能なエンティティにも限定されず、上述したようにアドレス指定可能なエンティティのモデルに従う、どの構造にも適用されることである。
【００４４】
再び図３に戻り、次に、アドレス変換メカニズム３１０について説明することにする。アドレス変換メカニズム３１０は、S x V→Aの部分的変更可能マッピングを計算する。ただし、Ｓはソースの集合（例えば、ソース２０４）である。このマッピングは、部分関数g(s,v) = aを定義している。ただし、s∈S、およびv∈Vである。（等価的には、このマッピングは、例えば、S x V1→S x V2→...→S x Vn→S x V→Aのように、場面で計算することができる。）オプションとして、アドレス変換メカニズム３１０は環境２０８（つまり、ＳとＶ以外のある種の任意情報）を考慮に入れることができ、その場合には、マッピングはS x V x E→A（およびg(s,v,e) = a、ただし、s∈S, v∈V、およびｅは環境Ｅに関する任意情報）と定義されている。仮想アドレッシングは、アドレス変換メカニズム３１０を使用して実現することができる実在システムの例である。この例において、Ｖは仮想アドレスの集合であり、アドレス変換メカニズム３１０は、仮想アドレス（Ｖのメンバ）を物理アドレス（Ａのメンバ）にマッピングすることによって、物理アドレスではなく、仮想アドレスでメモリをアドレス指定することを可能にしている。
【００４５】
図１１は、アドレス変換メカニズム３１０の例を示す図であり、この例では、値ｓとｖを受け取り、これらの値をａにマッピングしている。ただし、ｓは特定のソースＳを示し、ｖ∈Ｖ、およびａ∈Ａである。図１２は、アドレス変換メカニズムの同様な例を示す図である。しかし、図１２では、アドレス変換メカニズム３１０は、環境（周囲の状況）２０８に関する任意情報である値ｅを受け取り、ａへのマッピングを計算するときｅを考慮に入れている。なお、「環境」という用語は、マッピングの計算時に存在する一般的条件に関する情報がＥに含まれていることを示唆しているが、Ｅはそのような情報に限定されるものではなく、どのような任意タイプの情報も含まれるものである。例えば、Ｅは異なるタイプのアクセスオペレーション（例えば、読み取りと書き込み）の集合にして、ある仮想アドレス（つまり、Ｖの値）が、読み取りオペレーションと書き込みオペレーションとでは異なる物理アドレス（つまり、Ａの値）にマッピングされるようにすることができる。別の例として、いくつかのプロセッサ、命令を読み取る命令オペレーション (IFETCH) とデータを読み取るオペレーション (DFETCH) を区別している（および所定の仮想アドレスは、ケースごとに異なるようにマッピングされている）。その場合、Ｅは、アクセスしようとしているアドレスには、データが置かれているのか、命令が置かれているのかを指定するために使用できる。
【００４６】
アドレス変換メカニズム３１０によって定義されているマッピングと関数が「部分的」であるのは、マッピングと関数が取り得るすべてのドメイン値（定義域の値）について定義されていないという意味である。つまり、g(s’,v’,e’)が未定義になっているs’、v’、およびe’があるという意味である。例えば、以下で説明するように、仮想メモリシステムはアドレス変換システムの例であり、そこでは、Ｖは仮想アドレスの集合である。仮想メモリを使用するプロセスでは、仮想アドレス範囲の大きな部分は、どの物理アドレスにもマッピングされないのが代表的になっている。ｇを部分関数として特徴付ける別の方法として、ｇをその範囲がA∪{e}である総関数と定義することも可能である。ただし、ｅは特殊なエラー記号である。採用されている数学的表現は、結局は無関係である。重要であるのは、Ｖのすべての値がＡの値にマッピングされるとは限らないことであり、ｇのドメインのある個所でＡにマッピングされないことは、なんらかの方法で自然に明らかになることである。
【００４７】
なお、当然に理解されるように、アドレス変換メカニズム３１０の概念は、さまざまな方法でさらに拡張することが可能である。例えば、関数ｇの範囲には、Ａを超えるなんらかのディメンション（次元）を含めることが可能である。例えば、ｇは、値a∈Aだけでなく、なんらかの任意属性を生成することもできる。この属性は、資源が読み書きか、読取専用であるかを示すことができる。以下で説明するように、いくつかのアドレス変換メカニズムは、読取専用資源での書き込み要求を拒否することによって、読取専用条件を強行するように構成可能になっている。（なお、当然に理解されるように、属性は資源と厳格に関連付ける必要はなく、ｇドメイン（定義域）のある個所ともっと一般的に関連付けることができる。従って、g(s1,v1,e1)とｇ(ｓ2,ｖ2,ｅ2)は、Aと同じであるが、異なる属性のものを生成することがあり得る。このような事態は、s1とs2は共に所定の資源にアクセスすることが許されているが、一方は読み書きアクセス権を持ち、他方は読取専用アクセス権を持っている実在の例に対応付けることができる。これとは別に、この事態は、所定の資源に読み書きアクセスができるか、読取専用アクセスができるかが、ユーザモードであるか、カーネルモードであるか、といった環境２０８のある様相によって決まる例に対応付けることもできる。さらに、これらの状態は、ページの属性がＶ→Ａマッピング（例えば、以下で説明するページテーブルなど）にストアされている実在の例を示しており、従って、これらは、厳格には資源の特徴ではなく、マッピングの特徴である。
【００４８】
図３のモデルをさらに拡張したものとして、ｇを計算すると、一種の面的変化が得られ、アドレス指定可能なエンティティ３１２に対する変更が得られるようになっている。例えば、アドレス変換メカニズムが実在のメモリシステムの一部になっている場合には、ｇを計算することで、キャッシュ、変換索引バッファ (Translation Look aside Buffer − TLB) などの変更が得られるようになっている。
【００４９】
アドレス変換メカニズムの実在例としては、ページングとセグメンテーション方式に基づく仮想メモリシステムがある。図１３乃至図１６は、このような実在システムの例を示している。当然に理解されるように、ページとセグメントは、アドレス指定可能なエンティティをグループ化して、「バケット」に入れて、これらが大きな単位で都合よく扱われるようにする１つの方法にすぎない。従って、本発明は、そのようなアドレス指定可能なエンティティが上記のようにグループ化されるかどうかとは無関係に適用されるものである。
【００５０】
図１３は、ページングスキム（方式）の例を示す図である。図１３において、ＲＡＭ１３２の固定サイズ部分は、ページ１３０６（１）、１３０６（２）、．．．１３０６（ｎ）と指定されている。図１３の例において、各ページは長さが４キロバイト（4096バイト）になっているが、ページング方式はどの特定ページサイズにも限定されていない（また、いくつかのページング方式は2サイズ以上をもつページをサポートしている。例えば、ページは長さが４キロバイトである場合と、４メガバイトである場合がある。）各ページは、ＲＡＭ１３２にベースアドレスをもっている。ページ１３０６（１）、１３０６（２）、および１３０６（ｎ）のベージアドレスは、それぞれ0x0000、0x2000、および0xf000になっている。（この分野の精通者ならば理解されるように、接頭部"0x"は、慣行により、値が16進数、つまり、基数 (16)であることを示している。各ページ内では、各バイトは、ページのベースアドレスを基準にしたオフセットで記述することが可能になっている。従って、各ページ内では、第１バイトはオフセット０、第２バイトはオフセット１、以下同様になっている。図１３の例における各ページは長さが4096バイトであるので、各ページの最終バイトはオフセット4095（または0x0fff）になっている。
【００５１】
ページテーブル１３０８は、色々なページ１３０６（１）−１３０６（ｎ）を指すポインタのリストである。ページテーブル１３０８内の各エントリは、上述したように１つまたは２つ以上の「属性」、つまり、ポインタが指しているページが読み書きであるか、読取専用であるかを示すマーカ、またはページがＲＡＭ１３２に「存在」するか、「不在」であるかを示すマーカを収めておくことも可能になっている。（ページは、ＲＡＭ１３２に他のデータのための余地を作るためにディスクにスワップ（場所交換）されていると、不在のマークがつけられることがある。）ページテーブル１３０８の各エレメントは、ページテーブル内のページのベースアドレスを収めている。さらに、各エレメントは、ページテーブルまでのオフセットで識別することが可能になっている。従って、オフセット０にストアされたページテーブルのエレメントは0x0000であり、これはページ１３０６（１）のベースアドレスである。オフセット２にストアされたエレメントは0x2000であり、これはページ１３０６（２）のベースアドレスである。オフセット５にストアされたエレメントは0xf000であり、これはページ１３０６（ｎ）のペースアドレスである。ページテーブル１３０８までの他のオフセットは、図１３に示されていない異なるページを指している。なお、当然に理解されるように、ページテーブル１３０８は、ＲＡＭ１３２に格納されているのが代表的であり、これは、ページテーブル１３０８を囲んでいる破線で示されている。
【００５２】
メモリ管理ユニット (memory management unit − MMU)１３０４は、ページテーブル１３０８を使用して仮想アドレス１３０２を物理アドレスに変換する。ＭＭＵ１３０４は、仮想アドレスを物理アドレスに変換することを含む、種々の関数を実行するハードウェアとソフトウェアで構成することができる。図１３の例では、仮想アドレス１３０２は２つの部分を含んでおり、これらはテーブルオフセット１３１１とページオフセット１３１２である。ＭＭＵ１３０４は、ＲＡＭ１３２内の特定の物理アドレスを仮想アドレス１３０２に基づいて見つける。物理アドレスを見つけるために、ＭＭＵ１３０４は、最初にテーブルオフセット１３１１を読み取り、この値をページテーブル１３０８内へのインデックスとして使用する。次に、ＭＭＵ１３０４は、テーブルオフセット１３１１によって定義されているページテーブル１３０８のエントリに入っているアドレスを取り出し、その値にページオフセット１３１２を加える。その結果の値は、ページ１３０６（１）−１３０６（ｎ）の１つにおける特定バイトのアドレスである。図１３の例では、テーブルオフセット１３１１は0x0002である。従って、ＭＭＵ１３０４は、ページテーブル１３０８の先頭からのオフセット２にストアされているベースアドレスを見つける。このケースでは、そのベースアドレスは0x2000である。そこで、ＭＭＵ１３０４は、ページテーブルに見つかった値にページオフセット１３１２を加える。この例では、ページオフセット１３１２も、0x0002であるので、ＭＭＵ１３０４は0x2000 + 0x0002 = 0x2002の加算を行う。この0x0002は、斜線で示すページ１３０６（２）内のバイトの物理アドレスである。
【００５３】
ＭＭＵ１３０４は、ページテーブルに収められた属性に基づいて何らかのアクションを実行するように構成することも可能である。例えば、アクセス要求がメモリのあるバイトに書き込む場合に、そのバイトが置かれているページのページテーブルエントリが、ページが読取り専用であることを示しているときは、ＭＭＵ１３０４はその要求を中止し (abort)、および/または何らかのタイプのフォルトハンドラ (fault handler：誤り割込み処理ルーチン) を呼び出すようにしてもよい。同様に、そのバイトが「不在」とマークされたページ上にあるときには、ＭＭＵは、そのイメージがストアされている場所（例えば、ディスク）から、そのページのイメージをコピーして、ＲＡＭ１３２に戻るステップをとること、および/または何らかのタイプのフォルトハンドラを呼び出してもよい。以下で説明するように、属性の1つの使い方は、関数ｇに影響を与える何らかの資源（例えば、ページテーブルを格納しているＲＡＭ１３２の部分、またはセグメントテーブル（後述する）、またはページディレクトリ（後述する））に「読取専用」（または「不在」）のマークを付けることである。この手法を用いると、ある種のアクセス要求（つまり、「読取専用」属性が使用されているときは書き込み要求、「不在」属性が使用されているときはすべての要求）は、ガード(guard)を呼び出すことになるので、アクセス要求がポリシおよび/またはある種の他の条件に違反しないことを確かめるためにアクセス要求が評価されることになる。
【００５４】
図１３は、図３に示すモデルの具体例である。図１３は、以下に説明するように図３のモデルに対応している。すなわち、ＲＡＭ内のバイトの物理アドレスは、集合Ａのメンバであり、バイトにストアできる256の異なる値（例えば、0 - 255または-127 - +127）は集合Ｍのメンバであり、仮想アドレス（例えば、仮想アドレス１３０２）の範囲はメンバＶである。図７を参照して上述したように、ＲＡＭ１３２はアドレス指定可能なエンティティである。さらに、ＭＭＵ１３０４がアドレス変換メカニズムであるのは、Ｖのメンバ（仮想アドレス）をＡのメンバ（物理アドレス）にマッピング（写像）するからである。さらに、ＭＭＵ１３０４に実装されているマッピングが部分的であるのは、一部の仮想アドレスがどの物理アドレスにもマッピングされないことがあり得るからである（例えば、仮想アドレス0x0006000は、ページテーブル１３０８がオフセット６に有効なエントリをもっていなければ、どの物理アドレスにもマッピングされない）。
【００５５】
図１４は、ＭＭＵ１３０４/アドレス変換メカニズム３１０を示している。ＭＭＵ１３０４は、（Ａ）ページテーブル１３０８を見つけ、（Ｂ）テーブルオフセット１３１１で示されたページテーブル内のオフセットを探し出し、（Ｃ）（Ｂ）で探し出されたオフセットにストアされた物理アドレスを取り出し、（Ｄ）ページオフセット１３１２を（Ｃ）で取り出された物理アドレスに加え、（Ｅ）（Ｄ）で計算された結果を出力する関数を実装している。ＭＭＵ１３０４/アドレス変換メカニズム３１０に実装された関数は、上述した関数"g"の事例である。ＭＭＵ１３０４に実装された関数は、上述したように、属性の状態に応じてなんらかのアクションをとることができる（例えば、アクセス要求を中止する、フォルトまたは例外を引き起こす、ページをメモリにスワッピングする）。
【００５６】
図１５は、セグメンテーション方式の具体例を示している。この例では、「セグメント」と呼ばれるＲＡＭ１３２のセクション（区域）は区切られている。図１５は４つの例示セグメント１５０６（０）、１５０６（１）、１５０６（２）および１５０６（３）を示している。各セグメントはベースアドレスと長さを持っている。セグメントは異なる長さを持つことができる。セグメントテーブル１５０８は、セグメント１５０６（０）−１５０６（３）のベースアドレスと長さをリストしている。従って、セグメント１５０６（０）はベースアドレス0x0000から始まり、長さ４０９６をもち、セグメント１５０６（１）はベースアドレス0x4000から始まり、長さ１０２４をもち、と以下同様である。セグメントテーブル１５０８は、破線で示すように、ＲＡＭ１３２に格納されているのが代表的である。また、セグメントテーブル１５０８は、セグメントごとに、上述したように、読取専用/読み書き、存在/不在、などの情報をリストアップ（記入）しておくこともできる。
【００５７】
ＭＭＵ１５０４は、セグメントテーブル１５０８を使用して仮想アドレス１５０２を物理アドレスに変換する。仮想アドレス１５０２は、セグメント番号１５１１とセグメントオフセット１５１２を含んでいる。従って、図１５の例では、ＭＭＵ１５０４はセグメント番号１５１１を、セグメントテーブル１５０８内へのオフセットとして使用している。この例では、セグメント番号１５１１は"1"であるので、ＭＭＵ１５０４はセグメントテーブル１５０８内へのオフセット１を調べ、アドレス0x4000を探し出す。次に、ＭＭＵ１５０４はセグメントオフセット１５１２（この例では、0x0000）をそのアドレスに加えて、物理アドレスを得る。従って、0x4000 + 0x0000 = 0x4000となる。このようにして、ＭＭＵ１４０５は、斜線で示すセグメント１５０６（１）内のバイトを特定する。
【００５８】
以上から容易に理解されるように、図１５に示すセグメンテーション方式は、図３に示すモデルの別の事例であり、そこではＭＭＵ１５０４はアドレス変換メカニズム３１０の事例になっている。具体的には、ＭＭＵ１５０４は、次に示す式に基づいて仮想アドレス（つまり、Ｖのメンバ）を物理アドレス（Ａのメンバ）に変換する関数ｇを実装している。
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はセグメントテーブル１５０８の物理ベースアドレスであり、SEG_SIZEはセグメントテーブル１５０８内のエントリの数であり、"f"はＡのメンバ（例えば、物理アドレス）をＭのメンバ（例えば、上記物理アドレスにストアされている値）にマッピングする上記関数であり、".base"と".length"は、それぞれセグメントテーブルエントリのベースアドレスと長さフィールドに戻す。
【００５９】
図１６は、図１３に図示のページング方式とは異なる、ページング方式の例を示している。図１６に図示のページング方式は、INTEL x86プロセッサで使用されるものと同じような、マルチレベルページング方式である。このページング方式では、ページディレクトリ１６０２は、ページテーブル１６０４（１）、１６０４（２）、および１６０４（３）のような、ページテーブルを指すポインタの配列（つまり、ページテーブルの物理ベースアドレス）を収めている。各ページテーブルの方は、ページ（例えば、ページ１６０６（１）、１６０６（２）、１６０６（３）、および１６０６（４））のベースアドレスを指すポインタの配列を収めており、上述したように、読取専用/読み書きの属性、存在/不在のビットなどの情報を収めておくことも可能になっている。ページは、ＲＡＭ１３２の固定長部分である。さらに、ページディレクトリとページテーブルも、ＲＡＭ１３２に格納されているのが代表的である。図１６に示すページング方式が２レベルページング方式であるのは、特定のページを見つけるためにページディレクトリ（レベル１）とページテーブル（レベル２）の両方を調べる必要があるからである。この分野の精通者ならば理解されるように、任意のレベル数をもつページング方式を設計することが可能であり、本発明は、係るすべてのページングシステムに適用される。また、INTEL x86プロセッサは図１６に図示の２レベルページング方式を使用しているのが代表的であることは公知であるが、１レベルまたは３レベルページング方式を使用するように構成可能になっている。
【００６０】
図１６のページング方式では、ページ上のどのバイトも、ページディレクトリオフセット１６１１、ページテーブルオフセット１６１２、およびページオフセット１６１３を含んでいる仮想アドレス１６１０によって特定することができる。従って、物理アドレスを見つけるために、ＭＭＵ１６２０はページディレクトリオフセット１６１１を使用してページディレクトリ１６０２内の特定エントリを見つけている。このエントリはページテーブルの物理ベースアドレスであるので、ＭＭＵ１６２０は、ページテーブルの１つ（例えば、ページテーブル１６０４（１））を見つけるために、このアドレスをデリファレンス (dereference；参照先の値を取得) する。次に、ＭＭＵ１６２０はページテーブルオフセット１６１２を、特定されたページテーブル内へのインデックスとして使用し、そのオフセットで見つかったエントリを取り出す。このエントリは、ページ（例えば、ページ１６０６（１））の物理ベースアドレスであるので、ＭＭＵは特定されたページのベースアドレスにページオフセット１６１３を加えて、物理メモリの特定バイトを見つけるようにする。ＭＭＵ１６０２は、図１３を参照して上述したように、ページは読取専用または読み書きのマークが付けられているかどうか、ページは存在または不在のマークが付けられているかどうか、といった情報を考慮に入れるように構成することも可能である。
【００６１】
図１６のＭＭＵ１６２０は、アドレス変換メカニズム３１０のもう１つの事例である。ＭＭＵ１６２０は、仮想アドレス（つまり、Ｖのエレメント）を物理アドレス（つまり、Ａのエレメント）に変化する関数（つまり、関数"g"の例）を実装している。
【００６２】
図１６のページング方式は、ページディレクトリを指すポインタを収めているストレージロケーション１６０１も含んでいる。ＭＭＵ１６２０は、仮想アドレス１６１０の変換を開始するとき、このポインタを使用してページディレクトリ１６０２を見つける。INTEL x86プロセッサの例では、ストレージロケーション１６０１はＣＲ３と名付けたレジスタに対応している。つまり、INTEL x86プロセッサでは、レジスタＣＲ３は、現在のコンテキストのページディレクトリの物理アドレスを格納している。従って、変換テーブルの代替セット（つまり、ページディレクトリとページテーブルの２または３以上のセット）を構築しておき、その変換テーブルのどのセットを適用するかを、新ページディレクトリのベースアドレスをストレージロケーションに書き込むだけで変更することが可能になっている。この手法の一般的な使い方の１つは、コンピュータ上で実行される各プロセスに独自のページディレクトリとページテーブルを持たせることであり、そこでは、「コンテキストスイッチ(context switch)」（つまり、中でも、仮想メモリシステムが新プロセスのアドレス空間を指すようにさせるオペレーション）は、新プロセスのページディレクトリのベースアドレスをストレージロケーション１６０１に書き込むことによって行われている。プロセスは、アクセス要求を出すことができる「ソース」の１つの例であり、上述したように、アドレス変換メカニズム３１０が計算する関数ｇは、仮想アドレスＶだけではなく、ソースＳにも基づくことが可能になっている。つまり、同じ仮想アドレスは、どのソースが要求を出したかに応じて異なる物理アドレスに変換されるようになっている。各プロセスが独自のページディレクトリを持っている場合には、ストレージロケーション１６０１にストアされた値は、基本的には、ソースの識別子であるので、アドレス変換メカニズム３１０による物理アドレスＡの計算は、仮想アドレスＶだけでなく、アクセス要求を出したソースＳにも依存させることができる。（なお、当然に理解されるように、ＭＭＵ１６２０が関数g(s,v,e)を実装している限りにおいて、ｓ、ｖ、およびｅは、正式には、パラメータとして関数ｇに渡さないで済むようになっている。むしろ、アドレス変換メカニズム３１０は、ＭＭＵ１６２０が関係ソースの識別子を、どのアドレスがストレージロケーション１６１にロードされているかに基づいて考慮に入れる場合と同じように、Ｓ、Ｖ、およびＥの１つまたは２つ以上を、何らかの方法で考慮に入れる限り関数g: S x
V x E→Aを定義していると言うことができる。
【００６３】
アドレス指定可能なエンティティへのアクセスを制御するアルゴリズム
以下では、アドレス指定可能なエンティティへのアクセスを制御するためのアルゴリズムについて説明する。一般的に、このアルゴリズムは、ポリシ（約束事）Ｐによって禁制されているアクセス要求を拒否し、また、実行されたとき、アドレス変換メカニズム３１０を通して識別できる資源の集合に対する、なんらかの定義された制約に違反することになるアクセス要求も拒否する。実際には、このアルゴリズムは、少なくともＰと同程度に制限的であるポリシＰ’を実装しているが、その理由は、このアルゴリズムはＰの下で許可し得ないすべての要求を拒否し、その要求がＰの下で許可し得る場合であっても、制約に違反するような要求も拒否することがあるからである。一般的に、この制約（以下では、「不変(invariant)」または「不変条件(invariant condition)」と呼ぶことにする）は、ポリシＰの下ではアクセスするとは考えられない資源に、あるソースｓがアドレス変換メカニズム３１０を通してアクセスできないように選択されている。実在の仮想メモリシステムでは、この制約は、プロセスがアクセスするとは考えられないページまたはセグメントについては、そのプロセスは仮想アドレスを持たないことを意味している。
【００６４】
以下の説明では、集合Ｖ、Ａ、およびＭ、環境Ｅ、および関数ｆとｇの意味は上述した通りである。ここで説明しているアルゴリズムは、以下で説明するように、MP(s)と名付けたＡのサブセットを利用している。
【００６５】
MP(s)は、ソースが与えられているときのｇの範囲である。もっと正式には、ソースｓが与えられているとき、MP(s)は、v∈Vおよびe∈Eのとき、関数g(s,v,e)の範囲である。すでに述べたように、関数ｇは、Ａのメンバを出力するので（すなわち、g: S x V x E→A）、MP(s)はＡのサブセットである（すなわち、MP(s)⊆A）。MP(s)の定義は図３に図示のモデルのどの特定の実施形態とも結びついていないが、MP(s)の意味は、実際のメモリシステムと関連付けると直観的に理解されるはずである。具体的には、MP(s)は、あるソースがアドレス変換メカニズム３１０を通してアドレスできる物理アドレスの集合である。つまり、あるコンテキストにおける仮想アドレスを持つ物理アドレスの集合である。MPは「マップドページ(mapped pages：マップされたページ)」を表しているので、最も普及している仮想メモリ方式ではそう呼ばれている。しかし、MP(s)は、図３に図示のモデルに従うどのシステムにおいても意味があり、ページベースの仮想メモリシステムにも、どの特定タイプのメモリシステムにも限定されない。
【００６６】
MP(s)は、図１３、１５、および１６の仮想メモリシステムでは固有の意味を持っている。例えば、図１３において、MP(s)は、ページ１３０６（１）−１３０６（ｎ）に置かれているバイトの集合である。これらのページの各々は、ページテーブル１３０８のあるエレメントによって指されているので、これらのページ内のどのバイトについても仮想アドレスを作ることが可能である。従って、ページ１３０６（１）−１３０６（ｎ）は、ＭＭＵ１３０４に実装されている関数ｇの範囲内にある。同様に、図１５においても、MP(s)は、セグメントテーブル１５０８を通してアドレス可能なセグメントの集合である（例えば、セグメント１５０６（０）−１５０６（３））。図１６において、MP(s)は、ページディレクトリ１６０２とページテーブル１６０４（１）−１６０４（３）に見つかったマルチレベルポインタを通してアドレスできるページの集合である（例えば、ページ１６０６（１）−１６０６（４））。さらに、図１６は、MPがソースｓによってパラメータ化される理由を示している。上述したように、アクセス要求の異なるソース（例えば、コンピュータ上で実行される異なるプロセス）は、異なるページディレクトリとページテーブルを持つことができる。各ソースは独自のページテーブルの集合をもっているので、仮想アドレス１６１０が存在する物理メモリページの集合は、現在のソースによって決まることになる。つま資源s1のページテーブルの中で特定されたページの集合は、ソースs2のページテーブルの中で特定されたページの集合と異なる場合がある。その場合、MP(s1) ≠MP(s2)である。
【００６７】
MP(s)の内容は、アドレス変換テーブル（例えば、ページディレクトリ、ページテーブル、セグメントテーブルなど）によって定義されているが、MP(s)がこれらのアドレス変換テーブルを含んでいる場合もある。すなわち、アドレス変換テーブルそのものも、仮想アドレスをもつページまたはセグメントにストアしておくことができる。マッピングを収めているメモリをMP(s)の外側に置いておく必要はない。以下で説明するように、これらのマッピングをストアしているページを含むページマップセット (Page Map Set − PMS)と呼ばれる追加の集合を定義することが可能であり、本発明の一部の実施形態では、PMSとMP(s)間の特定の関係を利用している。しかし、MP(s)の定義は、ページディレクトリ、ページテーブル、およびセグメントテーブルがMP(s)の内側に置かれているか、外側に置かれているかに関しては中立になっている。
【００６８】
本発明は、どの資源が仮想アドレスを持つことができるかを制約することによって、つまり、MP(s)の内容に制約を設けることによって、ポリシＰの下でアクセス要求を評価するプロセスを加速することを追求している。ある制約がMP(s)について有効（true）である場合、その仮想アドレスによって（つまり、Ｖのメンバによって）資源を特定するある種のアクセス要求は、ポリシに決して違反することがないことを、基本的考え方としている。MP(s)に対する制約の正確な性質は実施形態によって異なるので、以下では、いくつかの例示制約について説明する。上述したように、「不変」または「不変条件」という用語が、広い意味でこのMP(s)の制約を示すために用いられているのは、この制約が、アクセス要求の実行によって変更されてはならない資源の状態について、いくつかの真相を表しているからである。
【００６９】
不変条件の一例は、ソースがアクセスすることを禁止されている資源は、そのソースから見えるように仮想アドレスをもってはならない、ということである。この条件を式に定義するために、まず、集合NA(P,s)を、ソースｓがポリシＰの下でアクセスすることを許されていない資源、つま資源ｓが読み取ることも、書き込むことも許されていない資源の集合と定義する。従って、例示の不変条件は、次のように定義される。
MP(s)∩NA(P,s) = φ
この条件は、MP(s)とNA(P,s)がＡの別個で、交差しないサブセットであることを意味している。図１７は、この条件を図形化してベン図で示したものである。すなわち、MP(s)（集合１７０２）とNA(P,s)（集合１７０４）は共にＡ（集合３０４）のサブセットであるが、MP(s)とNA(P,s)は共通のメンバをもっていない。
【００７０】
仮想メモリシステムでは、条件 MP(s)∩NA(P,s)=φは、基本的には、ソースｓがアクセスするのを禁止されている資源については、アドレス変換メカニズム３１０がその仮想アドレスをソースｓに見せないことを意味している。この考え方は、図１３、図１５、および図１６に図示の例示仮想メモリシステムに適用することができる。図１３では、条件MP(s)∩NA(P,s)=φは、ポリシＰによってソースｓがアクセスするのを禁止されているどのページも、ページテーブル１３０８にリストされていないことを意味している。図１５では、この条件は、ポリシＰによってソースｓがアクセスするのを禁止されているどのセグメントも、セグメントテーブル１５０８にリストされていないことを意味している。図１６では、この条件は、ストレージロケーション（格納先）１６０１からページディレクトリ１６０２へ、さらには、ポリシＰによってソースｓがアクセスするのを禁止されているページに通じているページテーブル１６０４（１）−１６０４（３）へ到る経路がないことを意味している。図３のモデルでは、条件MP(s)∩NA(P,s)=φは、アドレス変換の基礎になっているデータが原因で、アドレス変換メカニズム３１０は、ポリシＰによってソースｓがアクセスするのを禁止されているどのアドレス可能エンティティにも、ポイントしないことを意味している。
【００７１】
図１７に示す条件の意味は、NA(P,s)内のどの資源もMP(s)に含まれていなければ、ポリシＰの下でソースｓがアクセスするのを許されていない資源を、ソースｓが集合Ｖを使用して特定することはあり得ない、ということである。図１３、図１５、および図１６に示す仮想メモリシステムに関して説明すると、図１７の条件が真であれば、所定のポリシの下でアクセスが禁止されている、RAM１３２のどの部分にも仮想アドレスがない。以下で説明するように、アクセス要求を評価するときの方法が種々の形で最適化されているのは、そのためである。例えば、以下で詳しく説明するように、その仮想アドレスによってある資源を特定しているどの読み取り要求も、以降の評価なしで許可できるのは、MP(s)∩NA(P,s)=φが真ならば、その資源が仮想アドレスをもっているという事実が、その資源を読み取ることを許可しなければならないことを意味しているからである。
【００７２】
図１８は、図１７に示しているような不変条件を使用して、ポリシＰを実施する方法１８００を示している。具体的に説明すると、方法１８００は、ポリシＰによって禁止されているアクセス要求を拒否し、そのアクセス要求が実行されたとき、関連不変条件が真でない状態にシステムを置くようなアクセス要求も拒否する。従って、方法１８００は、ポリシＰの下で禁止されているすべてのアクセス要求を拒否し、ポリシＰの下で許可し得る一部のアクセス要求を拒否することもある。上述したように、この方法で実際に実施されるポリシＰ’は、少なくともポリシＰと同程度に制限的であり、もっと制限的にすることも可能である。方法１８００は、ガード２０６（図２に図示）の１つまたは２つ以上に実行させることができる。図１８の説明では、方法１８００はガード２０６（１）（図２に図示）によって実行されるものと想定されているが、この方法は、資源へのアクセスを仲介するどのエンティティによっても、あるいはエンティティの組み合わせによっても実行することも可能である。
【００７３】
ステップ１８０２では、資源がアクセスされるシステムは、関連不変条件が真になるような状態に初期化される。このステップは、アドレス変換メカニズム３１０に実装されているマッピングを、不変条件を満足する状態が得られるように作成し、および/または操作することによって実行される。例えば、関係システムが図１３に示すものであり、関連不変条件が図１７に示すものであれば、ステップ１８０２は、ソースｓがポリシＰの下でアクセスするのを許されていないページ１３０６（１）−１３０６（ｎ）のどれも含まないようにページテーブル１３０８を構築することによって実行することができる。
【００７４】
システムが初期化された後、ガード２０６（１）は資源ｒにアクセスする要求を受け取る（ステップ１８０４）。このアクセス要求は、なんらかの方法で資源ｒを特定している。図３は、資源を特定する２通りの方法を示している。すなわち、(1) アドレス変換メカニズム３１０を使用する方法（Ｖのエレメントの使用）または(2) 直接に特定する方法（Ａのエレメントの使用）である。これらの２通りの方法は、以下では、それぞれタイプ１のアクセス要求およびタイプ２のアクセス要求と呼ぶことにする。タイプ１の要求では、r∈V、タイプ２の要求では、r∈Aである。仮想メモリをサポートしているコンピュータシステムの例では、タイプ１の要求は、その仮想アドレスによって資源を特定し、タイプ２の要求は、その物理アドレスによって資源を特定している。当然に理解されるように、タイプ２の要求には、物理アドレスによってRAM１３２にアクセスする要求だけでなく、レジスタのような、他のタイプのアドレス指定可能なエンティティに対する物理アドレスをベースとする要求も含まれている。ガード２０６（１）は、要求がタイプ１のものであるか、タイプ２のものであるかを判断し（ステップ１８０６）、Ａドメイン内のどの資源が要求されたかを示す値r’を定義する（つまり、r’∈ A）。従って、要求がタイプ１のものであれば、r’= g(r)（ステップ１８０８）。（もっと正確には、rのドメインがS x VまたはS x V x Eならば、r’= g(s,r)またはg(s,r,c)。ただし、ｓは要求を出したソースを示し、ｅは、環境２０８に関するオプションの任意情報である。）要求がタイプ２のものならば、r’= r（ステップ１８１０）。（当然に理解されるように、いくつかの実在システム、例えば、INTEL x86プロセッサに関連するRAMでは、すべてのメモリアクセス要求が仮想アドレスによって行われることを要件としている。実際には、これらのシステムにはタイプ２のアドレッシングがないので、その場合には、ステップ１８１０は実行されることがない。
【００７５】
ステップ１８１４では、ガード２０６（１）は、ステップ１８０４で受け取った要求が読み取り要求であるか、書き込み要求であるかを判断する。要求が読み取り要求であれば、方法１８００はステップ１８１６へ進み、そうでなければ、方法１８００はステップ１８２２へ進む。
【００７６】
要求が読み取り要求であれば（ステップ１８１６）、ガード２０６（１）は条件  r’
【００７７】
【外１】
0004467249.tif 000002
【００７８】
NA(P,s)を評価する。すなわち、r’は、ソースｓがポリシＰの下でアクセスすることを許されていない資源の１つであるかどうかを判断する。r’∈NA(P,s)ならば（判定"no"）、ガード２０６（１）はアクセス要求を阻止する（ステップ１８１８）。r’
【００７９】
【外２】
0004467249.tif 000003
【００８０】
NA(P,s)ならば（判定"yes"）、ガード２０６（１）はアクセス要求を許可する（ステップ１８２０）。
【００８１】
要求が書き込み要求ならば（ステップ１８２２）、ガード２０６（１）は次の接続条件を評価する。
r’
【００８２】
【外３】
0004467249.tif 000004
【００８３】
NA(P,s)∧INV
上記において、INVは、不変条件のブール値であり、これは、アクセス要求が実行されたときに起こる状態に適用されるものである。言い換えれば、書き込み要求のときは、ガード２０６（１）は、アクセス要求がポリシ(r’
【００８４】
【外４】
0004467249.tif 000005
【００８５】
NA(P,s))の下で禁止されていないか判断するだけでなく、書き込み要求を実行すると不変条件を否定することにならないかも判断する。例えば、関連不変条件が図１７に示すものであれば、ガード２０６（１）は、書き込み要求を実行したとき、ＭＰとＮＡが共通するどの資源も持つことがないようにさせる。図１３、１５、および１６の仮想メモリシステムのコンテキストでは、この条件は、書き込み要求を実行すると、ソースｓがアクセスすることを許されていないＲＡＭ１３２のバイトに仮想アドレスを割り当てるようなことが起こるときは、書き込み要求は許可されないことを意味している。例えば、図１３に示すように、ソースｓがポインタをページテーブル１３０８に書き込むことを許されている場合であっても、ガード２０６（１）は、その要求を実行すると、ソースｓがポリシＰの下でアクセスすることを許されていないページを指すポインタがページテーブル１３０８に書き込まれることになるときは、その要求を許可することはない。さらに、ポリシ自体がアクセス要求の対象となる可能性のある資源にストアされているときは、上述した条件は、そのアクセス要求を実行したときに、すでに仮想アドレスを持つページが、変更されたポリシの下では禁止されてしまうような形でポリシを変更することはないことを意味している（当然のことであるが、これらのページをＭＰから除去するために、ＭＰも同時に変更される場合は除く）。一般に、ステップ１８２２では、アクセス要求が出されたとき、条件INVの真（true）は残されることが要件となっているが、この条件がどのように残されるかは無関係である。不変条件が図１７に示すものであるときは、この条件は、(a) MP(s)を変更することにより（例えば、ページまたはセグメントテーブルを変更することにより）、(b) NA(P,s)を変更することにより、またはこれらの両方を変更することにより、残しておくことができる。例えば、図１９は、共に書き込み要求の実行前と実行後の集合ＭＰとＮＡを示している。書き込み要求の後、ＮＡは、オリジナルの集合ＭＰと交差するように拡張される。しかし、書き込み要求はＭＰも収縮させるので、ＮＡの新しい境界と交差しないことになる。従って、ステップ１８２２で評価される条件は、Ｖ→Ａマッピングの変更、ポリシＰの変更、または両方の変更によって影響を受けることがある。（ＮＡが小さくなったときは、これは、「オフリミット」となっていた資源がアクセス可能になることを意味するので、望ましいことは、オフリミットになっていた資源がポリシ変更の後で読み取られることから防御するためには、これらの資源の内容をゼロにするか、ランダム化することである。また、当然に理解されるように、アクセス制御システムをシャットダウン（終業）することは、このことの特殊ケースにすぎない。すなわち、アクセス制御システムをシャットダウンすることは、ＮＡがメンバを持たないようにポリシを変更するのと同じであり、その場合には、以前ＮＡにあった資源のすべては、好ましくはゼロ化されるか、ランダム化される。また、当然に理解されるように、ポリシをアドレス指定可能なエンティティにストアしておくと、そのことは、図１９に例示するように、ポリシの変更が書き込みオペレー���ョンの特殊ケースであることを意味しているので、それだけでも有用である。
【００８６】
図１８に戻って説明すると、ステップ１８２２に示す条件が真であれば（判定"yes"）、ガード２０６（１）はアクセス要求を許可し（ステップ１８２４）、そうでなければ（判定"no"）、ガード２０６（１）はアクセス要求を阻止する。
【００８７】
選択的フィルタリングに基づくガードの最適化
上述したように、所定のポリシＰは、そのドメイン（定義域）がアクセス要求の集合(r,s,a,ｐ)であり（および環境であることもある）、その範囲がブール値の真（要求は許可し得る）と偽（要求は許可し得ない）である（および読み取りまたは書き込みのように、要求が許可される場合どのタイプのアクションが許されるかを示すアクションの集合であることもある）ブール関数を定義している。このポリシによって定義された関数を評価するのはガード２０６の機能である。すなわち、いずれかのアクセス要求が与えられているとき、ガードは真または偽の値を計算する。この計算は、計算資源の点から高価となることがある。例えば、方法１８００（図１８を参照して説明した）では、ステップ１８１６と１８２２で、r’
【００８８】
【外５】
0004467249.tif 000006
【００８９】
NA(P,s)かどうかを判断することが必要となる。このステートメントを評価する１つの方法は、NA(P,s)に置かれている、ある種の資源のリストをガードに維持させ、すべてのアクセス要求をこのリストと比較させることである。（例えば、資源がＲＡＭ１３２のバイトであれば、ガードは、ソースｓがアクセスすることを許されていない物理アドレスの範囲をストアしておき、各々のアクセス要求について、バイトのアドレスが禁止された範囲内にあるかどうかを判断することができる。）この方法は有効であるが、あまり効率的でない。さらに、ステップ１８２２では、条件INVが真であるかどうかを、アクセス要求が仮に実行された場合の、システムのそのときの状態に基づいて判断することが必要とされる。このステートメントは、アクセス要求の実行をシミュレートし、シミュレートした条件の下でそのステートメントの真をテストすることによって評価することができるが、この場合も、この方法はあまり効率的でない。アクセス要求によっては、要求の評価に非効率的な「総当り的(brute force)」計算が必要になる場合がある。しかし、好ましいことは、多数または大部分のアクセス要求が非効率的な計算によらなくても評価できるようにガードを設計することである。
【００９０】
アクセス要求の評価を最適化する１つの方法は、選択的フィルタリング (selective filtering)による方法である。選択的フィルタリングでは、最初に、アクセス要求に費用のかからないテストが適用される。これらのテストでは、アクセス要求を許可または拒否（つまり、判断）するのに十分であるが、必要でない条件が具現化されているのが代表的である。アクセス要求がこれらのルールの下で解決できないときは、「総当り的な」評価を受けることになる。好ましくは、ポリシＰが与えられているとき、アクセス要求の大きなクラスの適法性の方向を決定付ける単純なテストを設計することができることである。
【００９１】
一般的に、選択的フィルタリングは、次のようなステップと見ることができる。
1.  IF ARが受理のための単純ルール１を満足していれば、THEN ARを受理する
2.  ELSE IF ARが非受理のための単純ルール２を満足していれば、THEN ARを拒否する
3.  ELSE IF ....
4.  ....
5.  ELSE IF ARが単純ルールｎを満足するならば、... THEN ...
6.  ELSE 必要かつ十分の条件をテストし、ARをそれに応じて処理する
【００９２】
図２０は、選択的フィルタリングを使用してアクセス要求を評価するための、一般化したプロセスを示す図である。アクセス要求が受け取られると（ステップ２００２）、ある条件の存在が、周囲のポリシ (ambient policy) の下で要求を判断するのに十分であろう、ある条件をそのアクセス要求が満足すかどうかの判断が行われる（ステップ２００４）。その条件を満足していれば、要求についての判断が行われ（ステップ２００６）、評価プロセスは終了する。ステップ２００４で条件を満足していなければ、アクセス要求が第２の条件を満足するか否かが判断される（ステップ２００８）。第２の条件を満足していれば、要求についての判断が行われる（ステップ２０１０）。このサイクルは、テストすべき条件が存在する限り、何度でも繰り返される。図２０は、ｎ個の条件が存在する場合を示している。ｎ番目の条件を満足しているかどうかがステップ２０１２で判断され、満足していれば、ステップ２０１４で要求についての判断が行われる。ｎ個の条件のどれも満足していなければ、要求は、キャッチオール (catch-all；包括的な) ルールに従って判断されなければならない（ステップ２０１６）。このキャッチオールルールは、上述したタイプの計算集中型の、総当り的なルールとなる可能性がある。従って、このルールは、関連するポリシを正確に実行することができるが、このルールをアクセス要求に適用することは困難となるおそれがある（つまり、時間の損失が大きくなる）。従って、好ましいことは、評価しやすい条件（例えば、図１８に示す条件１からｎ）が非常に多数のアクセス要求を決定するようにし、まれなケースだけをキャッチオールルール用に残しておくことである。
【００９３】
なお、ステップ２００６、２０１０、および２０１４に示す「要求判定」ブロックは、要求が許可されることを必ずしも意味していない。ケースによっては、条件がテストされると、要求が即時に拒否される場合もある。従って、条件２００４、２００８、および２０１２の各々は、評価しやすいアクセス要求を「取り除く(weed out)」するように設計されているが、拒否しやすいアクセス要求だけでなく、許可しやすいアクセス要求も「取り除く」ようにすることもできる。従って、例えば、ステップ２００４の条件は、満足されると、要求を許可することを要請することがあり、ステップ２００８の条件は、満足されると、要求を即時に拒否することを要請することがある。
【００９４】
ステップ２００４、２００８、および２０１２の種々の条件を、ガードをサブガードに分割するものとして見ると好都合なことがある。従って、特定のガードは、アクセス要求を評価するときの必要で、十分な条件を評価し、そのガードはｎ＋１個のサブガードを使用してこのタスクを実行する。すなわち、アクセス要求を判断するのに十分な（しかし、必要でない）条件をテストするｎ個のサブガードと、先行するｎ個のサブガードのどれもが要求を解決できなかったときの、必要で十分な条件をテストする１個のサブガードである。
【００９５】
選択的フィルタリングによる１つの最適化では、以後の評価なしですべてのタイプ１の読み取り要求を許可し、アクセス要求がタイプ１の読み取り要求でないと判断されたときにのみ、図１８のもっと複雑な評価を行うようにしている。マシンの状態が図１７に図示の条件を満足しているときは、タイプ１の読み取り要求はこの条件を変更しない（ただし、関連不変条件が真とならない状態を引き起こす可能性を読み取り要求がもっているようなシステム、例えば、読み取りアクセスがＶ→Ａマッピングまたはポリシを変更する可能性を持つ、なんらかの不作用を引き起こすようなシステムでは別である。当然に理解されるように、代表的なシステムでは、読み取りアクセスはそのような作用を引き起こさない。）図２１は、そのような要求を評価するプロセス２１００を示しており、このプロセスは、図２０に示す「サブガード」の１つによって実行させることが可能である。
【００９６】
プロセス２１００では、アクセス要求が受け取られると（ステップ２１０２）、サブガードは、その要求が読み取り要求であるか、書き込み要求であるかを判断する（ステップ２１０４）。要求が書き込み要求であれば、サブガードは要求を解決することができない。その場合には、要求はプロセス１８００に評価させる必要があるので、要求は評価のために図１８のステップ１８０６に渡される。基本的には、書き込み要求は「キャッチオール」ルールに従う。しかし、要求が読み取り要求ならば、サブガードは要求を評価することができる。（別の方法として、書き込み要求では、なんらかの、他の最適化を行うことが可能であり、その場合には、要求は、そのような最適化に基づいて要求を判断することを試みるサブガードに渡されることになる。）ステップ２１０６では、サブガードは、要求がタイプ１の要求であるか、タイプ２の要求であるかを判断する。すでに述べたように、タイプ１の要求は集合Ｖを使用して（例えば、仮想アドレスによって）資源を特定し、タイプ２の要求は集合Ａを使用して（例えば、物理アドレスによって）資源を特定している。要求がタイプ２の要求であれば、サブガードは、r’
【００９７】
【外６】
0004467249.tif 000007
【００９８】
NA(P,s)であるかどうかを判断する（ステップ２１１０）。（すでに述べたように、r’は集合Ａに基づいて資源を特定している。つまり、これは、アクセスが要求された資源の物理アドレスである。）r’
【００９９】
【外７】
0004467249.tif 000008
【０１００】
NA(P,s)ならば（判定"yes"）、サブガードは要求を許可する（ステップ２１０８）。r’∈ NA(P,s)ならば（判定"no"）、サブガードは要求を阻止する（ステップ２１１２）。他方、要求がタイプ１の要求であるとステップ２１０６で判断されたときは、サブガードは要求を許可するだけである（ステップ２１０８）。図１７の条件は、アクセス要求が行われる前は、真であるものと想定されているので、r’
【０１０１】
【外８】
0004467249.tif 000009
【０１０２】
NA(P,s)は、すべてのタイプ１アクセス要求では、真であることは既知である。すなわち、r’は、すべてのタイプ１の要求では、gの範囲内（つまり、r’∈MP(s)）になければならないので、および図１７の条件はNA(P,s)と共通のエレメントをもたないことを意味しているので、タイプ１の要求ではr’
【０１０３】
【外９】
0004467249.tif 000010
【０１０４】
NA(P,s)であることが真でなければならないため、タイプ１の読み取り要求はポリシＰの下で許可し得ることは既知である。さらに、読み取り要求は図１７に示す条件を変更しないものと想定されているので、図１７の条件が以後真になることを保証するために追加ステップをとる必要がない。
【０１０５】
その他の不変条件
図１７に示す不変条件は、不変条件の一例にすぎない。他の不変条件を定義することも可能であり、そのようにすると、別の利点が得られると共に、異なるタイプの最適化が可能になり、あるいはポリシの下ではアクセスが許されないメモリに対して異なる程度のセキュリティ（防御）を得ることが可能になる。以下では、いくつかの例示不変条件を、図２２−２４を参照して説明する。
【０１０６】
図２２に示す不変条件は、次のようになっている。
MP(s)∩NW(P,s) = φ
ここにおいて、MP(s)は上述したのと同じ定義になっており、NW(P,s)はｓがポリシＰの下で書き込みを許されていない資源の集合である。この条件は図１７に示したものと似ているが、もっと限定的である。というのは、この条件によれば、ＭＰは、ｓがポリシの下でアクセスすることを許されていない資源だけでなく、ｓがポリシの下でアクセスはできるが、書き込みはできない資源も除外しなければならないことを規定しているからである。例えば、ポリシはｓが一部の資源に読取専用アクセスすることを許可していれば、それらの資源は、それがNA(P,s)に含まれていなくても、NW(P,s)に含まれることになる。図２２に示すように、MP(s)（参照符号１７０４）とNW(P,s)（参照符号２２０２）は共にＡ（参照符号３０４）のサブセットになっている。
【０１０７】
同様に、不変条件は次のように定義することも可能である。
MP(s)∩NR(P,s) = φ
ここにおいて、NR(P,s)は、ｓがポリシの下で読み取ることを許されていない資源の集合である。（明らかであるように、上記の例では、NA(P,s) = NW(P,s)∩NR(P,s)となっている。すなわち、ＮＡはｓがポリシＰの下で読み取ることも書き込むことも許されていない資源を含んでいる。）
【０１０８】
図２３に示す不変条件は、次のようになっている。
(MP(s)∪PMS)∩NA(P,s) = φ
この不変条件では、PMSはＶからＡへのマッピングがその値によって決まる資源の集合である。（上述したように、PMSは「ページマップセット(Page Map Set)」を表しているが、そのシステムがページベースの仮想メモリシステムであるかどうかに関係なく、アドレス変換メカニズム３１０をもつどのようなシステムに対してもPMSを定義することが可能である。）関数ｆとｇの前記定義を使用すると、PMSは、値ａのすべてから構成され、f(a)は関数ｇに影響を及ぼすようになっている。例えば、ページベースの仮想メモリシステムでは、ページディレクトリとページテーブルの内容は、仮想アドレスが物理アドレスにマッピングされる仕方に影響するので、ページディレクトリとページテーブルは、ＰＭＳのメンバ（構成員）になることとなる。図２３では、PMS（参照符号２３０２）は、Ａのサブセットになっている（前述したMP(s)およびNWP(P,s)と同じである）。PMSとMP(s)のどちらも、NA(P,s)と共通するどのようなエレメント（構成要素）も持っていない。しかし、また気がつくであろうが、図２３は、PMSとMP(s)との関係の詳細を示していない。図２３の例では、PMSとMP(s)は部分的に交差するものとして示されている。しかし、不変条件の正規の定義は、このような要件を課していない。図２３に図示のものに代わる方法として、PMSとMP(s)は、完全にばらばらにすることも、完全に同一にすることも、一方が他方のサブセットとなるようにすることも可能である。（PMSという用語は、任意のソースのマッピングに影響を及ぼす全ての資源の集合を指すといっても問題はない。しかし、当然に理解されるように、異なるソースは異なるマッピングを持つことができる。例えば、実在のアプリケーションでは、異なるプロセスは異なるページテーブルを持つことが可能になっている。従って、PMSは、ソースsが与えられているとき、そのマッピングg(s,v,e)に影響を及ぼす資源の集合ということができる。このケースでは、PMS = PMS(s1)∪...∪PMS(sn)である。ただし、s1,...,snはすべてのソースSの集合である。）
【０１０９】
PMSに含まれている情報は、Ｖのメンバによって資源を特定したアクセス要求を出し、その後に、そのアクセス要求がどの資源に通じているかを分析することにより推論することも可能である。言い換えれば、PMSに直接アクセスできない場合であっても、PMSが表しているアドレス変換マップを逆行分析すると、本質的に読み取り可能になることがある。従って、PMSには、NA(P,s)内の資源を含めないようにすると、好都合である。というのは、PMSにそのような資源を含めることを可能にすると、ソースsは、sが読み取るとは思われない、NA(P,s)内の資源を読み取れるようになるからである。図２３に示す条件はこの利点を備えている。図２３に示す条件は、次式に示すように、NA(P,s)の個所にNW(P,s)またはNR(P,s)を代替えすることで、変更することができる。
(MP(s)∪PMS)∩NW(P,s) = φ
および
(MP(s)∪PMS)∩NR(P,s) = φ
これらの条件が図２３に示す条件よりも制限的であるのは、これらの条件は、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)の（異なる）上位集合（スーパセット）である。
【０１１０】
図２４に示す不変条件は、次のようになっている。
(MP(s)∪PMS)∩NW(P,s) = φ∧MPRW(s)∩PMS = φ
この不変条件においては、MP(s)、NW(P,s)、およびPMSは上述のように定義されている。MPRW(s)はMP(s)のサブセット（下位集合）である。具体的には、関数gがＡのメンバと一緒に属性を生成する本発明の実施形態では、MPRW(s)は、読取専用属性を持たないMP(s)のサブセットである。（MPRWは「マップドページ、読み書き(mapped-pages, read/write)」を表し、MPRWが読取専用ではなく、読み書きのページを有することを示している。以上から理解されるように、MPRWというラベルは「ページ」という用語を意味しているが、MPRWはページングを採用しているシステムに限定されるものではなく、図３のモデルに準拠するどのシステムとも有効に働く。）正式には、MPRW(s)の定義は次のようになっている。
MPRW(s)={a∈A:∃v∈V。その結果、g(s,v)=a。ｓは所定のソースであり、g(s,v)は「読取専用」属性をもたない。}
【０１１１】
仮想メモリシステムの例では、MPRW(s)は、ソースｓが仮想アドレスを持っているが、ｓによって読取専用とマークされていた資源の集合である。（この場合もやはり、当然に理解されるように、資源が読取専用属性を持つ、と言うことは、その資源がポリシＰの下で書き込み可能でないと、言うこととは別である。Ｐは、とりわけ、ある与えられたソースに対してどの資源に書き込むことを許可するかを表明した抽象的ポリシである。属性は、図１３に示すＭＭＵ１３０４のような、メモリ管理ユニットに実行させることができることが特徴である。ＭＭＵは、読取専用属性を持つ資源に書き込む要求を拒否することができる。この意味において、読取専用属性は、ポリシを実行するのに使用できる１つのツールである。しかし、この属性はポリシ自体とは別物である。当然のことであるが、属性はマッピングの一部、すなわち、関数ｇの範囲の一部であるので、属性がストアされているメモリ部分はPMSのメンバになっている。仮想メモリの代表的な遂行では、属性は、特定のページを指しているページテーブルエントリにストアされており、ページテーブル自体もPMSのメンバとなることとなる。）
【０１１２】
図２４に示す不変条件に利点があるが、それはタイプ１の書き込み要求がそれ以後の評価なしで許可されることができる状態を保っているからである。この条件は、ｓが仮想アドレスでアドレスできるどの資源も、読取専用属性をもつことを保証するので、ガードはどのタイプ１の書き込み要求も許可することができる。アドレス変換プロセスが読取専用属性を生成していれば、アドレス変換メカニズム自体（例えば、従来のＭＭＵ）はその要求を阻止することができる。従って、図２４に示す不変条件がそのまま残されているときは、アクセス要求は図２５に示すプロセス２５００に従って処理することができる。アクセス要求が受け取られると（ステップ２５０２）、上記で説明したように、その要求がタイプ１であるか、タイプ２であるかの判断が行われる（ステップ２５０４）。要求がタイプ２のものであれば、ガードは関連ポリシと不変条件の下で要求を評価する（ステップ２５０８）。要求がタイプ１のものであるときは、その要求が、仮想アドレスマッピング機能が読取専用属性を生成した資源に対する書き込み要求でなければ、要求は進行されることが許可される。（すでに説明したように、属性は従来のＭＭＵによって実施できる特徴である。読取専用としてマッピングされている資源に対する書き込み要求の場合には、従来のＭＭＵでは要求を阻止し、アクセスフォルト(access fault；アクセス不良)を生成している。本発明によれば、システムは、このようなあるフォルトを受けたときガードを呼び出すように構成することができるので、ガードは、実際には、要求がポリシと不変条件に準拠しているかどうかに応じて要求が進行されるのを許可することができる。）
【０１１３】
以上の説明から理解されるように、上述した本発明で使用される種々のプリミティブ（基本）、例えば、MP、PMS、NA、NW、NRは、どの程度のセキュリティ（全保護）が必要であるか、および/またはどのようなタイプの最適化を不変条件から得ようとしているのかに応じて、種々に組み合わせて使用することが可能である。特に理解すべきことは、本発明は上述してきた不変条件のどれにも限定されず、適用されるポリシに基づいてMPおよび/またはPMSを何らかの方法で制約する、どのシステムにも適用されることである。
【０１１４】
【実施例】
例示の実行手法
上述したように、本発明は、資源アクセストランザクション全体にわたって不変条件を保っているどのようなシステムでも実行することが可能である。以下では、そのようなシステムを実現するために使用できる方法について説明する。
【０１１５】
第一に、PMSが収められているアドレス指定可能なエンティティの部分を、読取専用とマークしておくと便利なことがある。そのようにすると、ソースは、PMSを読み取って（および使用して）（例えば、仮想アドレスを物理アドレスに変換するために）集合Ｖを集合Ａにマッピングすることが可能になるが、そのPMSに書き込む試みをすると、MMUは例外（exception）を生成することになるが、これはガードを呼び出すことによって処理することができる。そのあと、ガードは試みられた書き込みアクセスを評価し、それが(a) ポリシに違反していないか、(b) 不変条件に違反していないかを判断することができる。ポリシにも、不変条件にも違反していない限り、ガードは、そのPMSに読取専用のマークが付けられていても、書き込みアクセスが行われるのを許可することができる。（PMSはアクセス要求を出したソースにとってはまだ読取専用になっているので、実際には、ガードが要求側ソースに代行して書き込みを行うことになる。その場合、Ｖ→Ａマップ（つまり、関数ｇ）は、ガードによって要求されたときは読み書きとして、他のソースによって要求されたときは読取専用としてPMS資源がマッピングされるように構成することができる。）一面では、この手法はMMUの既存能力を利用して、選択的フィルタリングプロセスにおける一種のサブガードとして読取専用属性を実施するものである。この「サブガード」はすべての読み取り要求を許可し、読み書きとマークされている資源の書き込み要求も許可するが、読取専用資源に対する書き込み要求は別のサブガードに渡されて、さらなる評価を受けることになる。
【０１１６】
第二に、別の方法として、アドレス指定可能なエンティティのPMS部分を「不在」とマークしておくと便利なことがある。このケースでは、PMS資源に対する読み取りまたは書き込み要求はフォルト（fault）を引き起こすことになる。本発明が展開されているシステムは、このようなフォルトが発生したときにガードを呼び出すように構成することができる。この場合、ガードは書き込み要求を上述したように評価することができる。さらに、読み取り要求もフォルトを引き起こすので、読み取り要求時にも追加処理を行うことができる。PMSにアクセスする要求があるごとに、それに応答してある種の処理が呼び出されるようにすると、PMSの内容をバッチで更新することが、あるいは「遅延(lazy)」更新さえも可能になる。その場合には、PMSへの書き込み要求は、即時に実行されるのではなくキュー（待ち行列）に置いておくことができ、キューに置かれた書き込み要求はバッチで実行することも、読み取り要求が受け取られた時点で、必要時ベース(as-needed basis)で選択的に実行することもできる。この場合も、存在/不在マーカをこのように使用すると、MMUが選択的フィルタリングプロセスで一種のサブガードとして効果的に利用されることになる。
【０１１７】
第三に、MPを変更および/またはPMSの内容に影響を与える可能性のある、書き込み要求を許可または拒否するために評価部 (evaluator) が使用する基準を変更することが望ましい場合がある。上記の例では、種々の不変条件が定義されており、ガードは、ポリシを満足する要求を実行したとき、不変条件が犯されないか、犯されることになるかに応じて、厳格にその要求を許可または拒否することを想定していた。しかし、システムは、このように実現する必要はない。例えば、INVが関連不変条件である場合、ガードは、次の条件に基づいて要求を許可または拒否するように条件付けることが可能である。
INV ∧ X
上記において、Ｘは、不変条件とは異なる、なんらかの条件である。この式は、不変条件に違反することになるアクセス要求を許可するように見えるが（このような要求は、INVが偽となる状態を発生する場合であっても、Ｘが真である限り許可される可能性があるので）、システムは、Ｘが絶対に真にならないこと、あるいはINVも真となる状況のときだけＸが真になることを保証するように構成することもできる。この方法によると、最終的には、どの許可し得るトランザクションも、INVを真として残しておくことが保証されるので、これは、実際には、INVが残されることを保証する、１つの具体的方法にすぎない。
【０１１８】
第四に、アクセス要求を許可または拒否するだけでなく、ポリシを実施し、INVを残しておくような形で、アクセス要求を変更または補強するようにガードを構成することも可能である。例えば、NA(P,s)の資源がMP(s)に含まれることになるような形でソースがPMSに書き込むことを要求した場合、ガードはその書き込み要求を許可できるが、それと同時に、MP(s)に追加されてきた資源がNA(P,s)に含まれることがないように、およびその資源にすでにストアされていたデータをフラッシュ (flush) するようにポリシを変更することができる。別の例として、PMSがページテーブルエントリの集合を含んでいる場合、NA(P,s)に置かれているページを指すポインタを、ソースがこれらのエントリの１つに書き込むことを試みた場合、ガードは、そのエントリの不在ビットをセットするように要求を変更できるので、アドレス変換メカニズム３１０を実装しているMMUは、結局のところ、書き込まれたポインタをデリファレンスしないことになる。ページテーブル内にあって、「不在」とマークされているポインタは、MMUによってデリファレンスされないので、このトランザクションは不変条件を残すことになり、それゆえそのようなポインタで指された資源は事実上ＭＰにないことになる。別の例として、ソースがエントリをPMSに書き込むことを試み、その結果、PMS内のページへの読み書きマッピングが作られることになった場合は（例えば、読み書き属性を持つPMSページをリストすることにより）、ガードは、読み書き属性ではなく、読取専用属性を持つエントリを書き込むことによって要求を変更することができる。これらの例は、本発明によれば、要求を提示された通りに許可または拒否しないで済むことを示し、ポリシと不変条件の両方を満足するような形に変更できることを示している。
【０１１９】
ガードを保護するための資源アクセスの制御
上述してきた説明から理解されるように、本発明のいくつかの態様では、アクセス要求がポリシＰと関連不変条件に合致することを保証するために、ガードが存在することを前提にしている。従って、明らかなように、ポリシを実施できる能力は、ガードあっての有効であるので、ガードが妨害されると、ポリシ違反が起こる可能性がある。このような妨害からガードを保護する１つの方法は、ガードの機能に影響するような情報を、アクセスが制限された資源にストアしておくことである。
【０１２０】
上記のようにガードを保護するために、ガードを表すために必要な情報（例えば、実行コード、状態情報、など）は、すべてアドレス指定可能なエンティティ３１０にストアされている。CORE項はＡのサブセットを示し、ガードが正しく機能するかは、a∈COREのときf(a)によって決まるようになっている。ガードは、委託されていないがCOREに書き込むのを防止しなければならない。
【０１２１】
上記要件を取り入れるために、ポリシＰ"が定義されている。このポリシはポリシＰと同程度に制限的であるが、ガードの状態に影響を与えることについて委託されているソースを除く、すべてのソースｓについては、CORE ⊆NW(P,s)の追加制限が設けられている。（このようなソースとしては、システム管理プロセス、またはオペレーティングシステムの委託されたコンポーネントがある。）前述のアクセス制御手法は、ポリシＰの代わりに、ポリシＰ"で採用することができる。このようにすると、ポリシＰ"が適用され（Ｐ"は少なくともＰと同程度に制限的であるので）、ガードが妨害から保護されるという効果が得られる。
【０１２２】
当然に理解されるように、上述した例示は、説明の便宜上示したものにすぎず、従って、本発明の範囲を限定するものではない。種々の実施形態と関連付けて本発明を説明してきたが、当然に理解されるように、そこで使用されている用語は限定的な用語ではなく、説明の便宜上の用語である。さらに、特定の手段、マテリアルおよび実施形態と関連付けて本発明を説明してきたが、本発明は、そこに開示されている具体的手段などに限定されるものではなく、機能的に等価の構造、方法および用途にも及ぶものであり、これらは請求項に記載の本発明の範囲に属するものである。この分野に精通し、本明細書の教示事項から恩恵を受ける当事者ならば当然に理解されるように、本発明は種々態様に変更することが可能であり、かつ本発明のすべての態様において、その範囲と精神から逸脱しない限り、そのような変更を行うことが可能である。
【図面の簡単な説明】
【図１】本発明の態様を実施することができる例示のコンピュータ環境を示すブロック図である。
【図２】アクセス要求が行われ、その評価が行われる例示の環境を示すブロック図である。
【図３】３つの集合およびこれらの集合間の関係を示すブロック図であり、そこには、資源がどのようにアドレスされるかがモデル化されている図である。
【図４】例示のアドレス指定可能なエンティティを示すブロック図である。
【図５】アドレス指定可能なエンティティでの書き込み要求を示すブロック図であり、そこには、その結果としてマッピングが変更されたことが示されている図である。
【図６】図５の読み取り要求で得られた変更マッピングでの読み取り要求を示すブロック図である。
【図７】ランダムアクセスメモリを示すブロック図である。
【図８】制御レジスタのセットを示すブロック図である。
【図９】ＣＰＵレジスタのセットを示すブロック図である。
【図１０】分散システムにおけるシミュレートした共有メモリを示すブロック図である。
【図１１】第１の例示アドレス変換メカニズムを示すブロック図である。
【図１２】第２の例示アドレス変換メカニズムを示すブロック図である。
【図１３】第１の例示ページング方式を示すブロック図である。
【図１４】図１３の例示ページング方式で使用するのに適している、第３の例示アドレス変換メカニズムを示すブロック図である。
【図１５】例示のセグメンテーション方式を示すブロック図である。
【図１６】第２の例示ページング方式を示すブロック図である。
【図１７】第１の例示不変条件を示すブロック図である。
【図１８】アクセス要求を評価するための例示プロセスを示すフロー図である。
【図１９】例示アクセス要求の前後の図１７の２サブセットを示すブロック図である。
【図２０】選択的フィルタリングのためのプロセスを示すフロー図である。
【図２１】読み取り要求を評価するための例示プロセスを示すフロー図である。
【図２２】第２の例示不変条件を示すブロック図である。
【図２３】第３の例示不変条件を示すブロック図である。
【図２４】第４の例示不変条件を示すブロック図である。
【図２５】図２４の条件が存在する場合のアクセス要求を評価するための例示プロセスを示すフロー図である。
【符号の説明】
１００  コンピュータ環境
１１０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  読取専用メモリ（ＲＯＭ）
１３２  ランダムアクセスメモリ（ＲＡＭ）
１３３  基本入出力システム（ＢＩＯＳ）
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  取り外し不能、不揮発性メモリインタフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取り外し可能、不揮発性メモリインタフェース
１５１  磁気ディスクドライブ
１５２  取り外し可能、不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  取り外し可能、不揮発性光ディスク
１６０  ユーザ入力インタフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインタフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  広域ネットワーク
１８０  リモートコンピュータ
１８１  メモリストレージデバイス
１８５  リモートアプリケーションプログラム
１９０  ビデオインタフェース
１９１  モニタ
１９５  出力周辺インタフェース
１９６  プリンタ
１９７  スピーカ
２０２  資源
２０４  ソース
２０６  ガード
２０８  環境
２１０  要求
３０２  集合
３０４  集合
３０６  集合
３１０  アドレス変換メカニズム
３１２  アドレス指定可能なエンティティ
５０２  書き込みオペレーション
６０２  読み取りオペレーション
８０４  ビデオコントロール
８０６  ＣＰＵコントロール
８０８  その他のコントロール
８２１  サウンドカード
８２２  ビデオカード
１３０２  仮想アドレス
１３０４  メモリ管理ユニット（ＭＭＵ）
１３０６  ページのベースアドレス
１３０８  ページテーブル
１３１１  テーブルオフセット
１３１２  ページオフセット
１５０２  仮想アドレス
１５０４  メモリ管理ユニット
１５０６  セグメント
１５０８  ベースアドレス
１６０１  ストレージロケーション
１６０２  ページディレクトリ
１６０４  ページテーブル
１６０６  ページのベースアドレス
１６１０  仮想アドレス
１６１１  ページディレクトリオフセット
１６１２  ページテーブルオフセット
１６１３  ページオフセット
１６２０  メモリ管理ユニット（ＭＭＵ）
【図１】
0004467249.tif 000011
【図２】
0004467249.tif 000012
【図３】
0004467249.tif 000013
【図４】
0004467249.tif 000014
【図５】
0004467249.tif 000015
【図６】
0004467249.tif 000016
【図７】
0004467249.tif 000017
【図８】
0004467249.tif 000018
【図９】
0004467249.tif 000019
【図１０】
0004467249.tif 000020
【図１１】
0004467249.tif 000021
【図１２】
0004467249.tif 000022
【図１３】
0004467249.tif 000023
【図１４】
0004467249.tif 000024
【図１５】
0004467249.tif 000025
【図１６】
0004467249.tif 000026
【図１７】
0004467249.tif 000027
【図１８】
0004467249.tif 000028
【図１９】
0004467249.tif 000029
【図２０】
0004467249.tif 000030
【図２１】
0004467249.tif 000031
【図２２】
0004467249.tif 000032
【図２３】
0004467249.tif 000033
【図２４】
0004467249.tif 000034
【図２５】
0004467249.tif 000035