JP2005135396A - アドレス変換制御のためのシャドウ・ページテーブル - Google Patents

アドレス変換制御のためのシャドウ・ページテーブル Download PDF

Info

Publication number
JP2005135396A
JP2005135396A JP2004289030A JP2004289030A JP2005135396A JP 2005135396 A JP2005135396 A JP 2005135396A JP 2004289030 A JP2004289030 A JP 2004289030A JP 2004289030 A JP2004289030 A JP 2004289030A JP 2005135396 A JP2005135396 A JP 2005135396A
Authority
JP
Japan
Prior art keywords
page
shadow
directory
memory
pages
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
JP2004289030A
Other languages
English (en)
Other versions
JP4928721B2 (ja
Inventor
Ernest S Cohen
エス.コーエン アーネスト
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005135396A publication Critical patent/JP2005135396A/ja
Application granted granted Critical
Publication of JP4928721B2 publication Critical patent/JP4928721B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables

Abstract

【課題】 仮想メモリを使用するコンピュータシステムにおける従来技術の欠点を克服する。
【解決手段】 所定のページの複数のバージョン、すなわちディレクトリーバージョン、テーブルバージョンおよびデータバージョンを格納する。データバージョンは、ソフトウェアオブジェクトがページに格納されると信じるデータを含む。ページのディレクトリーバージョンとテーブルバージョンは、仮想アドレスシステムによって使用されるアドレス変換マップ上の制限を満たすためのある方法で変更されたページの中身のバージョンを含む。ページが、ディレクトリーまたはテーブルとして仮想アドレスシステムによって使用されている場合、そのページのディレクトリーバージョンまたはテーブルバージョンの各々が使用される。ページが読み出しリクエストのターゲットである場合、ページのデータバージョンが使用される。
【選択図】 図5

Description

本発明は、一般に、コンピュータのメモリ管理の分野に関し、特に、仮想アドレスシステムにおけるアドレス変換テーブルの管理に関する。
現代のコンピュータシステムは、一般に、ある種の仮想アドレスメカニズムを備えている。この技術分野で周知のように、コンピュータシステムに関連付けられそれぞれが個々にアクセスできるメモリユニットは、そのメモリユニットを一意に識別する物理アドレスをもっている。しかしながら、仮想アドレス付けをサポートするコンピュータシステムでは、仮想アドレスを物理アドレスに割り当てることが可能である。仮想アドレスシステムは、仮想アドレスを物理アドレスに変換するための変換マップを使用する。
仮想アドレスシステムの一つの特徴は、物理アドレスの特定の組(物理メモリのページなど)が、いかなる仮想アドレスをももたないようなアドレス変換マップを構成することができるということである。典型的なページベースのメモリ管理スキームでは、アドレス変換マップは、仮想ページ記述子を物理ページフレーム番号に変換する。したがって、アドレス変換マップが、所与の物理ページフレームに導かないことを保証することによって、仮想アドレスに、そのページフレーム内のすべての位置を与えないことができる。さらに一般的には、多くの仮想アドレッシングスキームは、仮想アドレスを介して実行することができるアクセス(リード、リード/ライトなど)で、仮想アドレスにタグを付ける。あるページへの選択されたアクセス(書き込みなど)は、そのページへのどの仮想アドレスマッピングも、拒否されたアクセスを許可しないことを保証することによって妨ぐことができる。アドレス変換マップのこの面を使用して、メモリ保護の方法を実装することができる。したがって、ソフトウェアオブジェクト(オペレーティングシステム、アプリケーションレベルの処理、または他のいかなる種類のソフトウェアオブジェクトなど)による、物理アドレス空間のページへのアクセスを、このソフトウェアオブジェクトに公開されたどのマップも、問題のページへのどの仮想アドレスマッピングもアクセスを許可しないような状態にすることを保障することによって、拒否することができる。この種のメモリ保護スキームは、特にIA32ファミリーのプロセッサ(インテル(登録商標)x86プロセッサなど)において有用である。なぜならば、インテル(登録商標)x86プロセッサのアーキテクチャは、プロテクトモード(このプロセッサの通常の動作状態)で動作しているとき、すべてのメモリアクセスリクエストは、仮想アドレス変換を通るようになっているからである。特定の物理アドレスへの特定のアクセスを許す方法で、スーパーバイザーモードプログラムが、変換テーブルを変更することを禁止することによって機能するメモリプロテクションスキームは、“アドレス変換制御”、またはATCと呼ばれる。
典型的なアーキテクチャ(x86など)においては、仮想アドレスから物理アドレスへの変換は、通常のメモリページ(“ページマップ”ページと呼ばれる)の中身により与えられる。これは、書き込みオペレーティングシステムのために好都合である。なぜなら、仮想アドレスマップは、通常のメモリオペレーションによって作成し変更することができるからである。もし、オペレーティングシステムがATCを使用することを制限されることになっている場合、ATCは、オペレーティングシステムが、ページマップページに直接書き込むことを許すマッピングをもつことを防がなければならない。というのは、オペレーティングシステムは、任意の物理メモリページへの任意のアクセスをそれに与えるマッピングを作成するためのそのようなページへの書き込みを使用することができるからである。したがって、ソフトウェアオブジェクトが書き込みを許されないページへの読み出し/書き込みマッピングを防ぐことに加えて、ATCは、ページマップページへの読み出し/書き込みマッピングを含む「危険な」マップを妨げなければならない。
ATCによるメモリアイソレーションが有効である間、発生する1つの問題は、危険なマップを作成するが、それ自身はアクセス制御ポリシーに違反しない書き込みリクエストをどのように扱うかである。このような書き込みリクエストを扱う1つの方法は、簡単には、このリクエストを失敗させることである。しかしながら、これは、オペレーティングシステムに実質的な改訂が必要となる。したがって、いくつかの現在のATCアルゴリズムは、書き込まれた値を変更するか(例えば、ページマップページへの読み出し・書き込みマッピングを読み出し専用マッピングに変更するなど)またはマップを安全に作成するために他のページマップページを変更する。この技術に関する問題は、実際には、ターゲットの位置は結局異なる値を含むのに、特定の値がターゲットの位置に書き込まれていると信じて、ソフトウェアオブジェクトが書き込みリクエストを実行することである。この不一致は、様々な方法で影響を及ぼす可能性がある。例えば、ソフトウェアオブジェクトは、このソフトウェアが格納したと思っている値に基づくチェックサムを生成する場合がある。そして、これらのチェックサムは、ATCシステムによって生成された修正値に対し無効となる。
本発明の一実施の形態の利点として、危険なマップを作成する(しかし、セキュリティポリシーに従う)書き込みが、変更されずに成功するように見えるが(ソフトウェアオブジェクトの見地から)、セキュリティポリシーを回避するために結果のマップを利用することができないようにすることよって、従来技術の欠点を克服する環境を提供する。
本発明は、シャドウページの使用が、アドレス変換制御を支援することを提供する。典型的な仮想アドレッシングでは、所与のページは、マップページ(マップの一部であるデータを含む)またはデータページ(ある仮想アドレスのターゲット)か、あるいは両方でありうる。マップページとデータページは、異なる状況でアクセスされる。データページのエントリーは、基礎となっている読み出しリクエストまたは書き込みリクエストのターゲットである。マップページのエントリーは、他方、他のページの場所を見つけるために順に逆参照される。本発明は、(例えば、以下に説明されるように、ディレクトリー、テーブル、またはデータページとして)ページが使用されうる異なる状況に対応するページの複数のコピーを保持する。本発明は、ページがアクセスされる状況に依存して、ページの適切なコピーを使用する。
いくつかの仮想アドレッシングシステム(インテル(登録商標)x86ファミリーのプロセッサで用いられる最も一般的な仮想アドレスモードなど)は、2つの種類のマップページ、すなわちディレクトリーおよびテーブルを持っている。ディレクトリーは、テーブルおよびラージデータページへの参照を含み、テーブルは、スモールデータページへの参照を含んでいる。(“ラージ”および“スモール”ページについては、以下にてさらに詳細に説明する。)したがって、アドレス変換処理の観点から、所与のページがディレクトリーとして、テーブルとして、またはターゲットデータとして、アクセスされうる3つまでの異なる状況がある。好ましい実施形態では、所与のページの3つまでのバージョン、すなわち、ディレクトリーバージョン、テーブルバージョン、およびデータバージョン、が保持される。所与のページがアクセスされると、そのページのディレクトリーバージョン、テーブルバージョン、またはデータバージョンが、ページがアクセスされている状況に依存して使用される。
ATCのもとでは、ページの中身は、ページがディレクトリーまたはテーブルとして使用される場合のみ、メモリアクセスポリシーの違反を引き起こす場合がある。例えば、ページは、立入禁止ページへのリンクを含むことができる。しかしながら、このページが立入禁止ページにアクセスするために使用される危険は、アドレス変換器が実際にマップの一部としてこのページを使用している場合に存在するだけである。もし、このページが、代わりに、データページとしてアクセスされているなら、それは立入禁止ページに対する仮想アドレスを見せない。したがって、このページのデータコピーは、ソフトウェアオブジェクトがそのページに書き込んだと信じる実際のデータを含む場合がある。一方、そのページのディレクトリーおよびテーブルのコピーは、安全なマップを与える変更されたバージョンを含む場合がある。
本発明の他の特徴は、以下に記述される。
添付の図面とともに、以上の課題を解決するための手段と後述の発明を実施するための最良の形態を読むと、本発明をよりよく理解される。本発明を説明するために本発明の例示的な構成を図示するが、本発明は開示するこの特定の方法および手段には限定されない。
(概要)
アドレス変換制御を使用して、メモリアクセス制御ポリシーに違反して使用されうる仮想アドレスマッピングを効果的に拒否することによって、メモリアクセス制御ポリシーを実装することができる。一般的に、アドレス変換制御は、アドレス変換マップを編集する際の試行に実質的な制限をかけることによって、このマップが安全なままであるように(このマップが、所与のソフトウェアのエンティティに対し、このエンティティによって立入禁止(または書き込み不可)となっているページへのリンク(または、書き換え可能なリンク)を見えないようにするという意味で)有効に働く。典型的には、マップを編集するためのリクエストを実行することが、このマップを望ましくない状態に置くかどうか判断するために、これらの実質的な制限が、このリクエストを評価することによって課せられる。望ましくない状態が起きる場合、要求されたリクエストを実行することが、要求された状態を維持するように、このリクエストは変更される。(例えば、結果的に、このポリシーの下で読み出し可能だが書き込み不可であるページへの読み出し/書き込みリンクとなるマップを編集するためのリクエストを、読み出し専用としてこのリンクをマークするように変更することができる。)この技術に関する問題は、ソフトウェアの正しい振る舞いが、ときには、このソフトウェアがメモリに書き込んだと信じる値を含んでいるメモリに依存するということである。(例えば、チェックサムをヴェリファイする場合では)リクエストを変更することは、ソフトウェアが書き込んだと信じる値とは異なる値をメモリに含ませる原因となる。本発明は、ページマップのページとして使用するページの異なる複数のバージョン、すなわち、ソフトウェアオブジェクトにさらされたデータバージョン、および、マップの安全性を壊さずに、アドレス変換処理の一部として使用することができる1または複数のマップバージョン、を保持することによってこの問題に対処する。このようなページのデータバージョンへのマップは、読み出し専用にされる。結果、このページへの書き込みは、異なるバージョンが同期するようにページを編集することができるATCによって遮られる。
(例示的なコンピューティング環境)
図1は、本発明の諸態様を実施することができる例示的なコンピューティング環境を示している。コンピューティングシステム環境100は適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関するいかなる限定を示唆することも意図したものでもない。また、このコンピューティング環境100は、例示的オペレーティング環境100の中に示すいかなるコンポーネントの1つまたは組合せに関し、なんらかの依存性も要件ももつとは解釈されるべきではない。
本発明は、他の多くの汎用または専用のコンピューティングシステム環境または構成にも適用することができる。本発明の使用に適した周知のコンピューティングシステム、環境、および/または構成の例には、限定するものではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、埋め込みシステム、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
本発明は、プログラムモジュールのようにコンピュータ実行可能命令をコンピュータが実行する一般的なコンテキストで説明することができる。一般に、プログラムモジュールにはルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがあり、特定のタスクを実行するものや、特定の抽象データ型を実装するものがある。本発明は、通信ネットワークや他のデータ送信媒体を介してリンクするリモート処理装置がタスクを実行する分散コンピューティング環境でも実施できる。分散コンピューティング環境では、メモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体にプログラムモジュールとそれ以外のデータを置くことができる。
図1を参照すると、本発明を実施する例示的なシステムは、コンピュータ110の形で汎用コンピューティング装置を含んでいる。コンピュータ110の構成要素には、限定するものではないが、処理装置120、システムメモリ130、および、システムメモリの処理装置120への接続を含む様々なシステム構成部品を接続するシステムバス121が挙げられる。処理装置120は、マルチスレッドプロセッサ上でサポートされるものなど、複数の論理処理装置を代表するものとすることができる。システムバス121は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む各種バス構造のいずれでもよい。限定するものではないが、こうしたアーキテクチャには、例として、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、PCI(Peripheral Component Interconnect)バス(メザニン(Mezzanine)バスとしても知られている)が挙げられる。システムバス121は、通信装置間の、ポイントツーポイント接続、スイッチングファブリック(switching fabric)または同様のものとしても実現できる。
コンピュータ110には、通常は様々なコンピュータ読取可能な媒体が含まれる。コンピュータ読取可能な媒体は、コンピュータ110からアクセスできる任意の使用可能な媒体でよく、揮発性と不揮発性の両方、および取り外し可能と固定の両方の媒体を含む。限定するものではないが、例として、コンピュータ読取可能な媒体にはコンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ読取可能な命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性と不揮発性の両方、および取り外し可能と固定の両方の媒体が含まれる。コンピュータ記憶媒体には、限定するものではないが、RAM、ROM、EEPROM、フラッシュメモリなどのメモリ技術、CD ROM、デジタル多用途ディスク(DVD:digital versatile disks)などの光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスクなどの磁気記憶装置、または必要な情報を格納するのに使用することができ、コンピュータ110からアクセスできる他の任意の媒体が挙げられる。通信媒体は、典型的には、搬送波やその他の搬送メカニズムなどの変調されたデータ信号中のコンピュータ読取可能な命令、データ構造、プログラムモジュール、またはその他のデータなどを具現化するものであり、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するような方法で、1つまたは複数の特性が設定または変更された信号を意味する。限定するものではないが、通信媒体には、例として、有線ネットワーク、直接ワイヤ接続などの有線媒体と、音響、無線、赤外線などの無線媒体が挙げられる。上記の任意の組合せも、コンピュータ読取可能な媒体の範囲内に含まれるものとする。
システムメモリ130には、読み取り専用メモリ(ROM:read only memory)131やランダムアクセスメモリ(RAM:random access memory)132などの揮発性および/または不揮発性のメモリという形をとるコンピュータ記憶媒体が含まれる。起動時などにコンピュータ110内の構成要素間の情報転送を支援する基本ルーチンを含む基本入出力システム133(BIOS:basic input/output system)は、通常はROM 131に格納される。RAM 132には、通常処理装置120から直ちにアクセスできる、かつ/または処理装置120で現在操作しているデータおよび/またはプログラムモジュールが入っている。限定するものではないが、例として、図1にオペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110には、その他の取り外し可能/固定、揮発性/不揮発性のコンピュータ記憶媒体を含めてもよい。単なる一例として、図1に、固定された不揮発性の磁気媒体の読み出しまたは書き込みを行うハードディスクドライブ140、取り外し可能な不揮発性の磁気ディスク152の読み出しまたは書き込みを行う磁気ディスクドライブ151、CD ROMや他の光媒体などの取り外し可能な不揮発性の光ディスク156の読み出しまたは書き込みを行う光ディスクドライブ155を示す。例示的なオペレーティング環境で使用することが可能な上記以外の取り外し可能/固定、揮発性/不揮発性のコンピュータ記憶媒体には、限定するものではないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが挙げられる。ハードディスクドライブ141は、通常インターフェース140などの固定のメモリインターフェースを介してシステムバス121に接続し、磁気ディスクドライブ151と光ディスクドライブ155は、通常インターフェース150などの取り外し可能なメモリインターフェースを介してシステムバス121に接続する。
図1に示す上述のドライブとこれに対応するコンピュータ記憶媒体には、コンピュータ110に対するコンピュータ読取可能な命令、データ構造、プログラムモジュールおよびその他のデータの記憶を提供する。例えば、図1では、ハードディスクドライブ141がオペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶しているように描かれている。こうした構成部品は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じでも、異なっていてもよいことに留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には異なる番号を付けて、少なくとも別の複製であることを示している。ユーザは、キーボード162やポインティングデバイス161(一般にマウス、トラックボール、またはタッチパッドと呼ばれる)を介してコンピュータ20にコマンドや情報を入力できる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ(satellite dish)、スキャナなどが挙げられる。これらの入力装置および他の入力装置は、多くの場合システムバスに接続されたユーザ入力インターフェース160を介して処理装置120に接続するが、パラレルポート、ゲームポート、USB(universal serial bus)のような他のインターフェースやバス構造によって接続してもよい。モニタ191または他の種類の表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータはスピーカー197やプリンタ196などその他の周辺出力装置も含むことができ、これらは出力周辺インターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180などの1台または複数台のリモートコンピュータへの論理接続を使用してネットワーク環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス(peer device)、または他の一般のネットワークノードでよく、通常は、コンピュータ110に関連して上述した構成要素の多くまたはすべてが含まれるが、図1にはメモリ記憶装置181のみを示す。図1に示す論理接続には、ローカルエリアネットワーク(LAN:local area network)171とワイドエリアネットワーク(WAN:wide area network)173とが含まれるが、他のネットワークを含めてもよい。このようなネットワーキング環境は、職場、企業規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
LANネットワーキング環境で使用される場合、コンピュータ110はLAN 171にネットワークインターフェースまたはアダプタ170を介して接続する。WANネットワーキング環境で使用される場合、コンピュータ110は通常インターネットなどのWAN 173を介して通信を確立するためのモデム172またはその他の手段を備えている。内蔵または外付けすることができるモデム172は、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続できる。ネットワーク環境では、コンピュータ110またはその一部に関連して示したプログラムモジュールは、リモートメモリ記憶装置に格納することができる。限定するものではないが、例として、図1にリモートアプリケーションプログラム185がメモリデバイス181にあるものとして示す。当然のことながら、図示されたネットワーク接続が例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは言うまでもない。
(仮想アドレススキームの例)
図2は、仮想アドレスシステムの一例を示している。図2に描かれた例は、ページ型の仮想アドレススキームである。ただしこれは、セグメンテーションのように、仮想アドレッシングが他のモデルに基づくことができることを理解されるであろう。図2に示すスキームは、インテル(登録商標)x86プロセッサ上で利用できる仮想アドレッシングスキームの1つなどの2レベルのアドレススキームである。このスキームは、下記のように、1つが、仮想ページ識別子を物理ページに変換するために、2つのレベルの手段を使用しなければならないという意味で“2レベル”である。
このページングスキームでは、ページディレクトリー202は、エントリーの1組(set)を含んでいる。以下に、エントリーの一例の構造を図3と関係付けて、さらに詳細に説明する。しかし、本質的には、各エントリーは、ページテーブル204(1)、204(2)または204(3)などの、特定のページテーブルの物理的位置(すなわち、ページフレームナンバーまたは“PEN”)を特定する。各ページテーブルも同様に、エントリーの組を含んでいる。ここでは、各エントリーは、ページ206(1)、206(2)、206(3)、206(4)などの、物理的位置(同様に、ページフレームナンバー)と特定のデータページを同一視する。データページは、RAM132の予め定義された長さの隣接する部分にある。データページは、任意の種類のデータを格納することができる。そして、注目すべきは、通常のデータの格納に加え、データページはまた、ページディレクトリー202およびページ204(1)から204(3)までの中身を格納するのにも使用されることに留意されたい。したがって、所与のページは、ディレクトリー、テーブル、データページであることができ、または、これらの3つの構造の任意の組み合わせと同じように複数の役割を演じることができる。
図2に描かれた仮想アドレススキームは、2レベル仮想アドレススキームである。これは、特定のページを配置するために、ページディレクトリー(レベル1)とページテーブル(レベル2)の両方を使用する必要があるからである。任意のレベル番号を用いて仮想アドレスシステムを設計することができ、そして、本発明の原理は、このようなすべての仮想アドレススキームに適用することができることを、当業者は理解されよう。この分野で周知のように、インテル(登録商標)x86プロセッサは、1または2または3レベルを有する仮想アドレスをサポートしており、典型的には、“ハイブリッド”スキームを使用する。このスキームでは、“スモール”ページ(すなわち、4キロバイト長であるページ)は、2レベル仮想アドレスを使用し、一方、“ラージ”ページ(すなわち、4メガバイト長であるページ)は、1レベル仮想アドレスを使用する。
図2のページングスキームでは、ページ上のどのバイトも、ページディレクトリーオフセット211と、ページテーブルオフセット212と、ページオフセット213とを含む仮想アドレス210によって特定することができる。(仮想アドレスのこの構造は、スモールページに格納されるデータに適用される。ラージページについては以下に説明する。)したがって、物理アドレスを配置するために、アドレス変換を実行するメモリマネジメントユニット(MMU)220が、ページディレクトリー202内の特定のエントリーに配置するために、ページディレクトリーオフセット211を使用する。例えば、オフセット211は、ゼロに等しくして、ページディレクトリー202のゼロ番目のエントリーが、調べられるべきであるということを示すことができる。このエントリーは、ページテーブルが格納されるPFNを含んでおり、そこでMMU220は、このPFNをページテーブルの1つ(ページテーブル204(1)など)を見つけるために使用する。MMU220は、このときページテーブルオフセット212を、特定されたページテーブルへのインデックスとして使用し、そのオフセットで見つけられるエントリーを検索する。このエントリーは、データページ(ページ206(1)など)のPFNを含む。そのためMMU220は、物理メモリの特定のバイトを見つけるために、特定されたページのベースアドレスにページオフセット213を加算する。MMU220は、単なるアドレス変換に加えて、他の様々な機能を実行することにも適応することができる。例えば、MMU220は、テーブル中のページのエントリーが“非存在”とマークされている場合には、ディスクからそのページをロードすることができる。また、MMU220は、“読み出し専用”などとマークされている場合には、書き込みアクセスを禁止することができる。
もし、仮想アドレスがラージページを参照するなら、仮想アドレスの構造およびそのアドレスを変換する処理は、上述したものとはわずかに異なる。仮想アドレスは、唯一のオフセットを含み、このオフセットは、ディレクトリーへのインデックスである。このオフセットに配置されたディレクトリーエントリーは、ページテーブルのPFNを含む代わりに、ラージデータページのPFNを含む。ディレクトリーエントリーはまた、エントリーが、ページテーブルの代わりにラージページを参照することを示すために設定される1ビットを有している。ラージページビットが設定される場合、仮想アドレスは、ページテーブルへのインデックスを含まない。そのため、どのページテーブルも変換処理において使用されない。代わりに、仮想アドレスの残りの部分(すなわち、ディレクトリーへのインデックス以外の部分)が、ラージページへのインデックスとして扱われる。このページテーブルのレベルはバイパスされ、それで唯一の変換レベルが起こる。
図2の仮想アドレススキームにおいては、ページディレクトリー自身の位置(例えば、PFN)が、記憶位置201に格納される。MMU220は、仮想アドレス210の変換を開始すると、ページディレクトリー202を配置するために、この記憶位置の中身を使用する。したがって、既存の複数のページマップが存在することができる。そして、所与のマップのページディレクトリーのPFNを含むように記憶位置201の中身を設定することによって、現在の使用のために特定のマップを選択することができる。インテル(登録商標)x86プロセッサを例とすると、記憶位置201は、CR3と命名されたレジスタに対応する。
上述のように、ページテーブルまたはページディレクトリー中の各エントリーは、特定の物理ページのPFNを含んでおり、また、各エントリーは、特定の他のデータを含んでいてもよい。図3は、ページテーブルまたはページディレクトリー中のエントリー300の構造例を示している。
エントリー300は、特定の物理ページのPFN302を含んでいる。例えば、エントリー300が、ページディレクトリーの一部である場合、PFN302は、アドレス変換処理の次のレベルにおいて参照されるべきページテーブルのPFNである(または、ラージページリンクの場合では、このエントリーは単に、このエントリーが参照するラージデータページのPFNを含むものである)。さらに、エントリー300は、このエントリーがラージページのためのものであるかスモールページのためのものであるかを示すビット304を含む。(このビットは、エントリー300がページディレクトリーの一部分であるときのみ意味をもつ。簡単のため、このエントリーのフォーマットは、テーブルの場合では、ビット304の意味は未定義だが、このエントリーがディレクトリーの一部であろうとテーブルの一部であろうと同じにすることができる。)
読み出し専用のビット306は、エントリーの最終のターゲットであるデータページが、読み出し/書き込み(この場合、ビットはクリアされている)として扱われるべきであるかまたは読み出し専用(この場合、ビットはセットされている)として扱われるべきであるかを示す。もし、ターゲットのデータページが読み出し専用である場合、そのページへの書き込みリクエストは、失敗する。(MMU220を使用して、ページの読み出し専用の状態を守らせることができる。)この読み出し専用ビットは、ディレクトリーのエントリーとテーブルのエントリーの両方に存在することができる。もし、データページへ最後に導かれるディレクトリーおよびテーブルのリンクが、各々の読み出し専用ビットに関し競合する設定となっている場合、競合解決ルールが使用され、ターゲットのデータページが読み出し/書き込みか読み出し専用かを判断することができる。例えば、競合ルールは、ページが読み出し/書き込みとして扱われるために、そのページへ導くディレクトリーのリンクおよびテーブルのリンクの両方が、読み出し/書き込みにマークされなければならない(両方のエントリー中の読み出し専用ビット306がクリアされなければならない)ことを提示することができる。同じページが、マップを通した異なるパスによって到達可能となることができる。そして、このページが読み出し/書き込みとして扱われるかまたは読み出し専用として扱われるかは、どのパスがそのページに到達するために使用されるかに依存するかもしれない。
存在(present)ビット308は、ターゲットのデータページが、現在物理メモリに存在するか、ディスクからメモリにコピーされる必要があるかを示す。例えば、存在ビット308がクリアされる場合(ターゲットページが存在しないことを示す)、そのページに対するアクセスリクエストは、ページフォールトを生成するかもしれない。次いで、ディスクから物理メモリにそのページの内容をコピーするとともにアドレス変換マップをこのページの物理的位置に反映させるためにアドレス変換マップを適合させる割込みサービスルーチンによって、このアクセスリクエストは処理される。存在ビットが、所与のマッピングのために、ページディレクトリーおよびページテーブルのエントリーに異なって設定されている場合、これらのビット間の競合は、読み出し/書き込みビットついて上述したものと同様の競合解決ルールによって解決することができる。(例えば、ディレクトリーのエントリーとテーブルのエントリーの両方が、存在するとマークされているときのみ、存在するものとしてそのマッピングを扱う。)
(アドレス変換テーブルのエントリー編集制御(ATC)を使用するメモリアクセス制御)
図2から3に関連して説明した仮想アドレススキームの一つの特徴は、そこが、対応する仮想アドレスの存在しない物理メモリの一部であることが可能であることである。この所見の結果は、メモリのどの部分が与えられても、アドレス変換マップがメモリのその部分へ導かないことを保証することによって、メモリのその部分へのアクセスを禁止することができるということである。実際には、そのメモリ位置が仮想アドレスをもたないので、立入禁止区域にレンダリングされる(renderd)。(多くのシステム(インテル(登録商標)x86プロセッサなど)では、ほとんどすべてのメモリアクセスリクエストは、仮想アドレスによって作成される。アクセスリクエストが、物理アドレスによって作成される制限された環境に対しては、パラレルアクセス制御メカニズムを使用することができる。)
ATCを使用して、メモリアクセス制御を達成する方法は、次の注釈の観点から説明される。NA(“no access”)は、あるポリシーの下で、アクセスが禁止されるページの組である。MP(“mapped pages”)は、アドレス変換マップによってアクセスできるページの組(すなわち、仮想アドレスが存在するページの組)である。条件NA∩MP=φが真であることを保持し続ける限り、NAのメンバーであるページへのアクセスは防ぐことができる。この条件は、図4に、ベン図(Venn Diagram)として描かれている。すなわち、ページ406は、マシン上で利用可能な物理ページの組である。MP402は、仮想アドレスが存在するページの組である。NA404は、このポリシーの下ではアクセスが許可されないページの組である。図4の条件が真であり続ける限り、このポリシーの下で立入禁止となっているページへアクセスするための仮想アドレスを使用することはできないであろう。なぜならば、マップは、これらのページへ導かない(すなわち、これらのページは仮想アドレスをもたない)からである。したがって、図4に描かれた条件を使用して、ATCを介したメモリアクセス制御を達成することができる。この条件は、“不変条件(invariant)”と呼ばれる。というのは、ATCの目的が、この条件が真の状態から偽の状態へ変化することを妨げるために、アドレス変換マップへの変更を制限することにあるからである。
図4は、メモリアクセス制御のために使用される簡単な不変条件を表している。なお、図示する目的のためのみに示すものである。アクセス制御が実行されるべき環境に応じてもっと複雑な条件が可能である。例えば、どのエントリーがディレクトリーに(またはテーブルに)含まれるかについて明確なルールを設定することができる。そして、アクセス制御条件を守らせるのに役立つ読み出し専用および/または存在ビットを使用することによって、アクセス制御を洗練することができる。例えば、その使用により、インテル(登録商標)x86プロセッサ上のATCを介したメモリアクセス制御を達成することができるルールの組の一例を、以下に説明する。
D1は、ページディレクトリーとして使用することができるページの組である。D2は、ページテーブルとして使用することができるページの組である。D=D1∪D2である「存在(present)」とマークされた(すなわち、その存在ビットがセットされている)、ページディレクトリーまたはページテーブルの各エントリーは、“リンク(link)”と呼ばれる。D1のあるページから、問題のD2のページへの小規模の読み出し−書き込みリンクが存在する場合、D2のページは、“書き込み有効(write−active)”である。(「小規模の(small)」リンクは、一つのディレクトリーから一つのテーブルへのリンクである(すなわち、最終的にスモールページへ導くディレクトリー中のリンクである。「大規模の(large)」リンクは、ラージページを指し示す一つのディレクトリー中のリンクである。)あるエンティティが読み出しおよび/または書き込みのアクセスを許可されるページを定義するポリシーが存在することを仮定している。
なお、以下の不変条件が主張される:
・CR3は、D1の中にある。
・すべてのD1とD2のページは、適切なポリシーの下で読み出し可能である。
・D1ページからのどのスモールリンクもD2ページを指す。
・D2ページからのリンクはこのポリシーの下で読み出し可能なページを指す。
・書き込み有効なD2ページからのどの読み出し−書き込みリンクも、このポリシーの下で書き込み可能であり、かつDにはないページを指す。
・D1からのラージリンクのラージページのターゲットに含まれるどのスモールページも、このポリシーのもとで読み出し可能である。もし、このリンクが読み出し−書き込みである場合、スモールページもまた、このポリシーのもとで書き込み可能であってDには存在しない。
ATCは、上記不変条件に違反するようなアドレス変換マップに対する変更を防ぐことを保証するために使用される。これらの不変条件を保持することは、問題のエンティティがこのポリシーに違反することができないことを保証する。
どの不変条件が課せられているかにかかわらず、リクエストが、実際には実行されない場合、最終的に不変条件が保持し続ける状態になるかどうか判断するために各アクセスリクエストを評価することによって、不変条件の真理を保持することができる。もし、結果の状態が不変条件を満足するなら、このリクエストは、実行される。しかしながら、もし不変条件が保持に失敗するなら、少なくとも2つのオプションがある。
(1)リクエストを拒否する。または、
(2)不変条件が満たされ続ける形式にリクエストを変更する。
オプション(1)は、実際には、多数のアクセスリクエストを拒絶する必要があるという不利がある。これは、コンピュータシステムの機能を崩壊させる。しかしながら、オプション(2)では、ソフトウェアオブジェクトは、1つの値を1つの記憶位置に書き込むことになる。この記憶位置は、ソフトウェアオブジェクトが書き込んだと信じている値と異なる変更された値を最後には記憶することになりうる。前述のように、ソフトウェアの補正機能(チェックサム検証など)は、ソフトウェアがメモリに書き込んだと信じる実際の値を格納しているメモリに依存しうる。したがって、オプション(2)もまた、ソフトウェアの機能を崩壊させる。本発明は、1つのページの複数のバージョンを格納することによって、この問題に対処する。1つのバージョンは、プログラムがそのページに書き込んでいると信じる正確なデータを含んでいる。このページの他のコピーは、もし、アドレス変換処理において使用される場合、保持されるべき適切な不変条件をもたらすデータのバージョンを含んでいる。
(シャドウページ)
本発明の一つの特徴によれば、ページの複数の表現が存在することができる。同じページの複数の表現は、プログラムがそのページに実際に書き込むデータを含むページのバージョン、およびページディレクトリーとページテーブルとして、アドレス変換処理において使用するのに安全である、ページの他の(「シャドウ(shadow)」)バージョンが存在することを保証する。この文脈において「使用するのに安全(Safe to use)」とは、ディレクトリー(または、場合によってはテーブル)としてのシャドウページの使用が、ATCシステムによって適用される不変条件が違反されることを引き起こさないであろうということを意味する。
好ましくは、ページxが与えられると、そのページの3つのバージョンが存在する。これらは、d(x),t(x),およびm(x)として参照される。d(x)は、ページの「ディレクトリー」バージョンである(すなわち、前述のアドレス変換処理におけるページディレクトリーとして使用されるのに適したページのバージョンである)。t(x)は、ページテーブルとして使用するのに安全であるページのバージョンである。m(x)は、ページの「メモリ」バージョンである(すなわち、1または複数のプログラムによってこのページに書き込まれた実際のデータを含むバージョンである)。本明細書の記述において、「d(x)」項は、ページxのディレクトリーバージョンの内容か、ページxのディレクトリーバージョンが格納されているPFNを参照することができる。t(x)とm(x)についても同様である。d(x),t(x),およびm(x)項がページの内容を参照するか、またはそれのPFNを参照するかは、状況から明らかになるか、または具体的に示されるであろう。
図5は、d(x),t(x),およびm(x)がアドレス変換処理においてどのように使用されるかを示す。図5は、x,y,およびz(参照数字は、それぞれ502,504,および506)がラベル付けされた3つのページを参照する図である。ページxはページディレクトリーであり、ページyはページテーブルであり、そしてページzはデータページである。注目すべきは、ページx,y,およびzは、複数の役割を演じることができるということである。したがって、xは、環境に依存して、ページディレクトリーかデータページとして機能することができる。ページyは、ある状況ではページテーブルとして、他の状況ではページディレクトリーとして機能することができる。しかしながら、特定の仮想アドレスが変換されている図5の目的のために、および、そのアドレスを変換する目的のために、ページx,y,およびzがそれぞれディレクトリー、テーブル、およびデータページの役割を演じることを仮定している。
ページxは、d(x)、t(x)、およびm(x)バージョンに存在する。問題のアドレスを変換するために、ページx(つまりd(x))のディレクトリーバージョンが調べられる。ディレクトリーとして、xのエントリーは、ターゲットのページテーブルのPFNを含む。xとd(x)間の根本的な差異は、d(x)がt(t)のPFNを含む一方、ページディレクトリーxにおける各ターゲットtに対し、xがtのPFNを含むということである。(言い換えると、d(x)は、ターゲットページのオリジナルバージョンの代わりに、ターゲットページのテーブルバージョンを指すように変更されるということである)。
ページd(x)が参照されるとき、d(x)の関連するエントリーは(すなわち、仮想アドレスのディレクトリーオフセット部によって指し示されるエントリー、図2の構成要素211)は、ページt(y)を指し示す。次いで、ページt(y)が、特定のデータページの場所を見つけるために調べられる。t(y)のエントリは、ターゲットデータページのPFNを含む。t(y)およびy間の関係は、d(x)とxとの関係と類似している。すなわち、yによって参照される各データページdに対し、t(y)がdのPFNの代わりにm(d)のPFNを含む。(しかしながら、注目すべきは、このページのオリジナルの位置にあるページのデータバージョンを格納することが、一般的に、メモリの最も効率的な使用となるので、m(d)のPFNが、一般にdのPFNと同じになるということである。)仮想アドレスのテーブルオフセットフィールドによって指し示されるオフセット(例えば、図2の構成要素212)を使用して、テーブルt(y)の適切なエントリーが配置される。そのエントリーは、特定のデータページのPFNを参照し、この例では、m(z)である。
ページm(z)が特定された後、ページm(z)中のデータの適切なユニットが、仮想アドレスで指し示されるページオフセット(図2の構成要素213)に基づいて、アクセスされる。
したがって、従来のアドレス変換処理においては、データページへのパスがページxから、ページyへ、ページzへと導く。本発明によるシャドウページテーブルが使用される場合、変換ページがページd(x)から、ページt(y)へ、ページm(z)へと導く。
(ページd(x),t(x),およびm(x)の作成)
ページd(x),t(x),およびm(x)は、ページx上で定義された変換を実行することによって作成される。以下に、それらの変換の好ましい実施形態を説明する。
好ましくは、m(x)は、任意の種類の変更あるいはフィルタリングを受けずに、プログラムがページxに書き込む実際のデータを表す。言い換えると、xからm(x)への変換は、本質的には恒等変換である。
好ましくは、d(x)とt(x)は、次の規則に従って作成される。存在とマークされているページxのエントリーを参照したすべてのページtのために、d(x)の対応するエントリーが、tのPFNの代わりにt(t)のPFNを参照することを除いて、d(x)はxと同じである。加えて、ターゲットページが、適切なポリシーの下で読み出し可能だが書き込み不可である場合、または、ターゲットページがページディレクトリーもしくはページテーブルである場合、そのエントリーは、読み出し専用にマークされる。
以下では、d(x)とt(x)がどのようにして作成されるかの説明を形式的に行う。この説明の目的のために、D1は、ページディレクトリーとして使用可能であるPFNの組である。そして、D2は、ページテーブルとして使用可能であるPFNの組である。ステートメントD1.xは、xがD1のメンバーであることを意味し、D2.xは、xがD2のメンバーであることを意味する。メモリアクセス制御スキームが強制されるべきである適切なソフトウェアオブジェクトによって見られるように、Mをメモリマップであるとしよう。M.x.eは、そのPFNがxである物理ページの第eエントリーに格納された値を参照する。R.xは、xが適切なポリシーの下で読み出し可能であることを意味し、W.xは、xが適切なポリシーの下で書き込み可能であることを意味する。m,t,d,およびPは、以下のとおりである(各ケースにおいて、vは、M.x.eであるとし、D.x = D1.x ∨ D2.xであるとする)。
Figure 2005135396
言い換えると、xのディレクトリーバージョンは、ちょうどxのメモリバージョンのように見えるが、PFNによりテーブルバージョンへ書き直される(redirected)PFNをともなっている。xのテーブルバージョンは、ちょうどxのメモリバージョンのように見えるが、複数のバージョンを読み取るために書き直されたPFNをともなうとともに、読み出し可能であるが書き込み不可であるターゲットに対しクリアされた、あるいはDにある読み出し−書き込みビットをともなっている。(もしくは、エントリーの表現が読み出し/書き込みビットを含んでいるかまたは読み出し専用ビットを含んでいるかに依存して、そのようなターゲットに対しセットされた他の読み出し専用ビットをともなっている)ディレクトリーに対し、xに関しxのディレクトリーバージョンを保持する。しかし、テーブルのために、D2からxを除去する(例えば、それをディスクにスワップする)コストを最小にするため、xに関しxのリードバージョンを保持することに注意されたい。バージョンが、(例えば、ATCが許可したディレクトリーとテーブルのために)たまたま同じデータを保持する場合は常に、それらは同じ物理ページを共有する。そのため、ATCが拒絶もしくは変更する書き込みを行おうとしないソフトウェアオブジェクトに対し、シャドウページは作成される必要はない。
図6と7は、それぞれ、d(x)およびt(x)を作成するための処理例を示している。
ここで、図6を参照すると、マップ(すなわち、上述のマップM)の一部であるページxが存在すると仮定されている。そして、それは、xに基づいたページd(x)を作成することが要求されている。最初に、ページxが適切なポリシーの下で読み出し可能であるかどうか判断される(602)。もし、xが読み出し可能でない場合、d(x)は、未定義となり(606)、この処理は終了する。一方、xが読み出し可能である場合は、xがD1のメンバーであるかどうか(すなわち、xがページディレクトリーとして使用可能であるものとして指定されていたかどうか)判断される。もし、xがD1のメンバーでない場合、d(x)は、未定義である(606)。xがD1のメンバーである場合、ページd(x)は、存在とマークされたエントリー中のPFNフィールドが、それらのターゲットのテーブルバージョンを指すように変更されるのを除いて、ページxと同じ内容を含むように作成される。この結果は、n=0と設定することによって達成することができる(607)、次いで、所与のnの値に対し、xの第nエントリーが存在とマークされているかどうか判断する。もし、xの第nエントリーが存在とマークされていない場合、d(x)の第nエントリーは、xの第nエントリーに等しくなるように設定することができる(610)。xの第nエントリーが存在とマークされている場合、d(x)の第nエントリーは、PFNフィールドがテーブルバージョンを指すために変更される点を除いて、xの第nエントリーと等しくなるように設定される(612)。(すなわち、もし、P.n.pfnが、ページPのPFNフィールドを参照する場合、および、vが上述の意味をもつ場合、d(x).n.pfn=t(v.pfn)である)。d(x)の第nエントリーが設定された後、nがインクリメントされ(614)、この処理は、次のエントリーを設定するために608に戻る。
ここで、図7を参照すると、マップの一部であるページxが存在し、かつ、ページt(x)を作成することが要求されるということが再び仮定されている。はじめに、xが適切なポリシーの下で読み出し可能であるかどうか判断される(702)。もし、xが読み出し可能でない場合、t(x)は、未定義の値に設定される(706)。そしてこの処理は終了する。このポリシーの下で読み出し可能である場合、xがD2のメンバーであるかどうか判断される(704)。もし、xがD2のメンバーでない場合、t(x)は、未定義に設定される(706)。xがD2のメンバーである場合、存在とマークされたページのPFNが、ターゲットページのメモリバージョンを指すように調節される点と、特定の読み出し/書き込みリンクが、それらを読み出し専用にするために調節される点を除いて、ページt(x)は、エントリーの値がxのエントリーの値に等しくなるように作成される。ページt(x)に対しこの内容を作成するために、最初に、カウンタnが0に設定される(708)。次いで、ページxの第nエントリーが存在にマークされているかどうか判断される。もし、このエントリーが存在とマークされていない場合、t(x)の第nエントリーは、xの第nエントリーに等しくなるように設定される(712)。第nページが存在とマークされている場合、ページt(x)の第nエントリーは、このエントリーのPFNフィールドが、ターゲットページのメモリバージョンを指すように設定される点を除いて、xの第nエントリーに等しくなるように設定される(714)(すなわち、もし、xの第nエントリーのターゲットページがPFN=Aをもつ場合、t(x)の第nエントリーのPFNフィールドがm(A)に等しくなるように設定される)。(上で述べたように、m(A)のPFNは、しばしばAのPFNと等しくなる。)次に、第nエントリーのターゲットページが、適切なポリシーの下で読み出し可能だが書き込み不可であるページであるかどうか判断される(716)。もし、ターゲットページが読み出し可能で書き込み不可である場合、t(x)の第nエントリーは、読み出し専用としてマークされる(720)。そうでなければ、xの第nエントリーのターゲットページがD1またはD2のメンバーであるかどうか判断される(718)。もし、xの第nエントリーのターゲットページがD1またはD2のメンバーであるならば、t(x)の第nエントリーは、読み出し専用としてマークされる(720)。次いで、カウンターnがインクリメントされる(722)。そして、t(x)の次のエントリーを作成するために、処理は714へ戻りループする。
(シャドウページの格納)
ページが、より効率的に表されるのを可能にする最適化があるが、各ページの3つのコピー(すなわち、d(x),t(x),およびm(x))を格納することができる。第一に、もし、上述のアルゴリズムが、すでに格納されているバージョンと同一であるシャドウページを結果として作成する場合、シャドウページは、作成される必要は無い。したがって、ほとんどのページに対し、ページの1つのバージョンのみが格納される必要がある。どの場合においても、このようなページxに対し、d(x),t(x),およびm(x)のPFNはすべて同じである。
第二に、ディレクトリーとは違ったすべてのページに対し、ページxのオリジナルコピーがページのデータバージョンとして役立つことは好ましい。したがって、ディレクトリーではないページ(すなわち、フレーム番号が、D1のメンバーでないページ)に対し、m(x)のPFNを、xのPFNは等しく、xのディレクトリーバージョンおよびテーブルバージョンは他の所に格納される。しかしながら、ディレクトリーページの場合では、ページのオリジナルの位置がこのページのディレクトリーバージョンとして役立つことが好ましい(場合によっては、必要である)。D1組は、ディレクトリーとして仕えることが許されたページ(例えば、インテル(登録商標)x86プロセッサ上で、PFNをCR3にロードすることができるページ)のPFNに関して定義されているので、ディレクトリーバージョンを他のPFNに移動させるのは現実的ではない。CR3は、シャドウページの存在を知らないかもしれないソフトウェアオブジェクトによってロードされることが必要である(例えば、CR3は、メモリアクセスがATCシステムによって制限されているオペレーティングシステムによってロードされるかもしれない)ので、ディレクトリーページは、ソフトウェアオブジェクトが、それらのページが配置されていると信じるPFNに配置される必要があるかもしれない。
(ラージページに関してのシャドウページの使用)
上述のように、インテル(登録商標)x86プロセッサ(ならびに様々な他のプロセッサ)は、ラージページの使用をサポートする。その場合、どのページテーブルも、仮想アドレスを物理アドレスに変換することに関係していない。上述のシャドウイングメカニズムにラージページを機能させるために、たとえ、このシャドウページテーブルがどの実ページテーブルとも対応しないとしても、1つのシャドウページテーブルを1つのラージページのために作成することができる。したがって、ページディレクトリーxが、ラージリンクを含む場合、そのページのディレクトリーバージョン(すなわち、d(x))を、xのラージリンクに対応するエントリーにスモールリンクを含むように作成することができる。このスモールリンクは、シャドウページテーブル(すなわち、t(x))を指す。そしてこのシャドウページテーブルは、ラージページを作り上げる個々のスモールページへのリンクを含む。上述のシャドウイングアルゴリズムの一部は、特定のページを読み出し専用としてマークすることを含むので、ラージページをスモールページに解体することは、全ラージページを読み出し専用ページとしてマークしなければならないことを回避する。ラージページの一部である個々のスモールページは、必要なら読み出し専用にマークすることができる。(読み出し専用としてラージページをマークすることの不利益は、そのようなページへの各書き込みリクエストが例外を生成し、その書き込みが該当する不変条件に違反することなしに行われることができるかどうか判断するために、より特権的なコンポーネント(例えば、ATCを実行するコンポーネント)によって評価されなければならないという点である。この方法で処理されるべきラージページへの各書き込みリクエストを要求することは、システムパフォーマンスをきわめて低下させる可能性がある。)
以上の例は単に説明のために示されており、本発明に関し限定を付すものであると解釈されてはならないことに留意されたい。本発明を様々な実施形態に関連して説明してきたが、ここで使用した用語は説明と例示に関する用語であり、限定するものではないことは理解されよう。さらに、本発明を特定の手段、素材、実施形態に関連して説明してきたが、本発明はここに開示する詳細に限定する意図はない。むしろ本発明は、特許請求の範囲内にあるような、機能的に同等のあらゆる構造、方法、使用方法に拡張される。本明細書の示唆する利点を理解する当業者は、これに様々な変更を加えることができる。こうした変更は、本発明の態様において本発明の範囲と精神を逸脱することなく実施することができる。
本発明の態様を実施できる一例のコンピューティング環境のブロック図である。 一例の仮想アドレスシステムのブロック図である。 アドレス変換マップにおける一例のエントリーのブロック図である。 アドレス変換制御を介してメモリアクセス制御のための一例の不変条件のブロック図である。 複数のバージョンに存在するページのブロック図である。ただし、ページの異なるバージョンが、このページが使用される状況に依存して使用される。 ページのディレクトリーバージョンを得るための一例の処理のフロー図である。 ページのテーブルバージョンを得るための一例の処理のフロー図である。
符号の説明
100 コンピューティング環境
110 コンピュータ
120 処理装置
121 システムバス
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 固定、不揮発性のメモリ用インターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取外し可能な不揮発性のメモリ用インターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 ローカルエリアネットワーク(LAN)
172 モデム
173 ワイドエリアネットワーク(WAN)
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ

Claims (24)

  1. アドレス変換マップのためのシャドウページを作成する方法を実行するためのコンピュータ実行可能命令をその上にエンコードしたコンピュータ読取り可能な媒体であって、
    前記アドレス変換マップは、ページディレクトリーおよび複数のページテーブルを含み、前記ページディレクトリーは、複数のページテーブルへのリンクを含み、前記ページテーブルの各々は、複数のデータページへのリンクを含み、
    前記ページディレクトリーおよび前記ページテーブルの各々は前記データページの1つに格納されてなり、前記方法は、
    前記複数のページテーブルの少なくとも1つに対し、前記複数のページテーブルの1つに基づく第1のシャドウページテーブルを作成するステップであって、前記第1のシャドウページテーブルは、次の観点、すなわち、
    前記第1のシャドウページテーブル中の少なくとも1つのエントリーが、前記複数のページテーブルの内の第1のページテーブルの中の、そのエントリーの対応するリンクと異なるデータページにリンクする点、および
    前記第1のシャドウページテーブルは、前記複数のページの内の第1のページの中の対応するリンクが、読み出し/書き込みである1または複数の読み出し専用リンクを含む点において、前記複数のページテーブルの第1のページテーブルと異なるステップと、
    前記ページディレクトリーに基づくシャドウページディレクトリーを作成するステップであって、前記ページディレクトリーは、前記複数のページテーブルの1つへのリンクを含み、前記シャドウページディレクトリーは、前記複数のページテーブルの前記1つへのリンクの代わりに前記シャドウページテーブルへのリンクを含むステップとを備えることを特徴とするコンピュータ読取り可能な媒体。
  2. ポリシーが、メモリへのアクセスを管理し、前記仮想アドレスに適用された前記アドレス変換マップに基づく前記メモリへのアクセスは、結果として前記ポリシーに違反することをもたらし、前記仮想アドレスに適用されない前記シャドウページディレクトリーおよび前記第1のシャドウページテーブルは、結果として前記ポリシー違反をもたらさない
    ことを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  3. 各前記データページは、メモリの特定のフレームに格納され、前記ページディレクトリーは第1のフレームに格納され、前記方法は、
    前記第1のフレームと異なる第2のフレームにある前記ページディレクトリーのコピーを保持するステップと、
    前記第1フレームにあるシャドウページディレクトリーを格納するステップとをさらに備えることを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  4. 前記ページディレクトリーは、第1のサイズのページへのリンクを備え、前記第1のサイズのページは、複数の第2のサイズのページを備え、前記方法は、
    前記複数の第2のサイズのページへのリンクを含む第2のシャドウページテーブルを作成するステップであって、前記シャドウページディレクトリーは、前記第2のシャドウページテーブルへのリンクを含むステップをさらに備えることを特徴とする請求項1に記載のコンピュータ読取り可能な媒体。
  5. 複数の、個々にアドレス割り当て可能な、読み出し・書き込み可能な構成要素を備えるメモリであって、前記個々にアドレス割り当て可能な構成要素の各々は、それに関係付けられる物理アドレスを有するメモリと、
    仮想アドレスおよび前記個々にアドレス割り当て可能な構成要素の前記物理アドレス間のマッピングを定義するアドレス変換データ構造と、
    前記個々にアドレス割り当て可能な構成要素の内の第1の構成要素にアクセスするためのリクエストを受けるメモリマネジャーであって、前記リクエストは、仮想アドレスに基づく個々にアドレス割り当て可能な前記構成要素の内の前記第1の構成要素を特定する前記リクエストとを備え、
    前記メモリマネジャーは、アドレス変換構造のシャドウ表現を含むデータに基づく構成要素であって個々にアドレス割り当て可能な構成要素の内の前記第1の構成要素の物理アドレスに前記仮想アドレスを変換することを特徴とするメモリの使用を管理するためのシステム。
  6. 前記メモリは、複数のページに編成化され、前記個々にアドレス割り当て可能な構成要素の内の第1の構成要素は、前記複数のページの1つの中に配置され、前記アドレス変換構造は、(1)前記複数のページへのリンクを含む複数のページテーブル、および(2)前記複数のページテーブルへのリンクを含むページディレクトリーを含み、前記アドレス変換構造の前記シャドウ表現は、少なくとも1つのリンクに関して前記アドレス変換構造とは異なることを特徴とする請求項5に記載のシステム。
  7. 前記ページディレクトリーおよび前記ページテーブルに含まれるリンクの各々は1または複数の属性を含み、前記シャドウ表現の中の少なくとも1つのリンクは、少なくとも1つの属性に関する前記アドレス変換構造において対応するリンクとは異なることを特徴とする請求項6に記載のシステム。
  8. 前記ページディレクトリーおよび各ページテーブルは、前記複数のページの1つに格納され、
    前記ページの各々は、それに関係付けられる物理位置記述子を有し、前記ページディレクトリーおよび前記ページテーブル中の前記リンクの各々は、前記物理位置記述子に基づきページの1つを特定することを特徴とする請求項6に記載のシステム。
  9. 前記シャドウ表現は、前記ページディレクトリーの少なくとも1つあるいは前記ページテーブルの1つの代替のバージョンを含み、前記代替のバージョンは、代替のバージョンが基づくページと異なる物理位置記述子を有するページに格納されることを特徴とする請求項8に記載のシステム。
  10. 前記ポリシーは、メモリのアクセシビリティを管理し、前記アドレス変換構造は、前記ポリシーの違反に対してメモリを公開し、前記システムは、
    前記アドレス変換構造に基づくシャドウ表現を作成し、前記シャドウ表現が、仮想アドレスに基づきメモリにアクセスするために使用される場合、前記ポリシーの違反を生じないことを保証するメモリアクセス制御マネジャーをさらに備えることを特徴とする請求項5に記載のシステム。
  11. 前記ポリシーが、アクセス不可として前記メモリの一部を定義し、前記メモリアクセス制御マネジャーは、シャドウ表現が前記メモリの一部に対する仮想アドレスを公開しないことを保証する
    ことを特徴とする請求項10に記載のシステム。
  12. 前記ポリシーは、読み出し可能であるが書き込み不可としてメモリの一部を定義し、前記メモリアクセス制御マネジャーは、前記シャドウ表現が、読み出し専用として前記メモリの一部にマークする1または複数の属性を含むことを保証することを特徴とする請求項10に記載のシステム。
  13. 前記メモリアクセス制御マネジャーは、シャドウ表現が、読み出し専用として、(1)アドレス変換構造、および(2)シャドウ表現の少なくとも1つを格納するメモリの部分を読み出し専用としてマークする1または複数の属性を含むことを保証することを特徴とする請求項10に記載のシステム。
  14. メモリユニットに読み出しまたは書き込みをするためのリクエストを受けるステップであって、前記リクエストは、仮想アドレスに基づく前記メモリの前記ユニットを特定するステップと、
    仮想アドレスと物理アドレス間の関係を定義するマップの表現に基づく前記メモリユニットにアクセスするステップであって、前記マップは、前記メモリの1または複数のページに格納され、前記マップの前記表現は、前記1または複数のページの内の第1のページに基づく少なくとも1つのシャドウページを含み、前記仮想アドレスに基づく前記メモリにアクセスするために使用される場合に、前記マップは、メモリアクセスポリシーの違反を生じる少なくとも1つの態様を含み、前記シャドウページは、前記仮想アドレスに基づいて前記メモリにアクセスするための前記マップの前記表現の使用が前記メモリアクセスポリシーに違反しないような方法で、前記1または複数のページの内の前記第1のページと異なるステップと、
    前記アクセスリクエストで明記された読み出しまたは書き込みを実行するステップとを備えることを特徴とするメモリアクセスリクエストを実行する方法。
  15. 前記メモリアクセスポリシーは、アクセス不可として前記メモリの一部を定義し、前記マップは、仮想アドレスマッピングを定義する前記メモリの部分への書き込み可能なリンクを公開し、前記マップの前記表現は、仮想アドレスマッピングを定義する前記メモリの部分への書き込み可能なリンクを公開しないことを特徴とする請求項14に記載の方法。
  16. 前記マップは、(1)前記1または複数のページの組へのリンクを含む複数のテーブル、および(2)前記複数のテーブルへのリンクを含むディレクトリーを含み、前記少なくとも1つのシャドウページは、前記シャドウディレクトリーの中の少なくとも1つのリンクが、少なくとも前記複数のテーブルの1つの代わりにシャドウページテーブルを指すという点で前記ディレクトリーとは異なるシャドウディレクトリーを含むことを特徴とする請求項14に記載の方法。
  17. 前記マップは、前記1または複数のページの組へのリンクを含む複数のテーブルを備え、前記シャドウページは、前記テーブルの1つに基づく表現を含み、前記シャドウページは、前記テーブルの前記1つに存在する第1のリンクの表現を含み、前記第1のリンクは、前記テーブルの前記1つの中の読み出し/書き込みリンクであり、前記シャドウページは、前記シャドウページ表現の前記第1のリンクが読み出し専用にマークされている点で、前記テーブルの前記1つと異なることを特徴とする請求項14に記載の方法。
  18. 前記シャドウページは、ディレクトリーを含み、前記メモリユニットは、複数の第2サイズのページを含む第1サイズのページによって網羅され、前記マップは、前記第1サイズのページへのリンクを含むディレクトリーを含み、前記シャドウページは、前記ディレクトリーに基づいており、前記シャドウページは、前記シャドウページが前記第1サイズのページへのリンクの代わりにテーブルへのリンクを含むという点で、前記ディレクトリーとは異なり、前記テーブルは、前記第1サイズのページに含まれる第2サイズのページへのリンクを含むことを特徴とする請求項14に記載の方法。
  19. アドレス変換マップの代表であるデータ構造をその上にエンコードしたコンピュータ読取り可能な媒体であって、前記アドレス変換マップは、ページディレクトリーを含み、前記ディレクトリーは、複数のページテーブルへのリンクを含み、各前記ページテーブルは、前記コンピュータ読取り可能な媒体の中の特定のフレームに格納され、各ページテーブルは、前記コンピュータ読取り可能な媒体の複数のページへのリンクを含み、前記データ構造は、
    複数のページテーブルの内の第1のページテーブルに基づくシャドウページテーブルと、前記ページディレクトリーに基づくシャドウページテーブルであって、前記ページディレクトリーは、複数のページテーブルの内の前記第1のページテーブルへのリンクを含む第1のエントリーを含み、前記シャドウページテーブルは、第1のエントリーに対応する第2のエントリーを含み、前記第2のエントリーは、複数のページテーブルの内の前記第1のページテーブルへのリンクの代わりに前記シャドウページテーブルへのリンクを含むことを特徴とするコンピュータ読取り可能な媒体。
  20. 前記複数のページテーブルの内の第1のページテーブルは、第1のフレームに格納され、前記シャドウページテーブルは、第2のフレームに格納され、前記ページディレクトリー中のリンクが、前記第1のフレームの識別子を含み、および、シャドウページディレクトリー中の対応するリンクが、前記第2のフレームの識別子を含む点において、前記シャドウページディレクトリーは、前記ページディレクトリーと異なることを特徴とする請求項19に記載のコンピュータ読取り可能な媒体。
  21. 前記複数のページテーブルの前記第1のページテーブルは、前記ページの内の第1のページへのリンクを含み、前記シャドウページテーブルは、前記ページの内の第1のページへのリンクの代わりに該第1のページに基づく表現へのリンクを含み、前記第1のページに基づく前記表現は、前記第1のページとは異なるフレームに格納されることを特徴とする請求項19に記載のコンピュータ読取り可能な媒体。
  22. 前記複数のページの内の第1のページは、前記ページディレクトリーまたは前記複数のページテーブルの内の第1のページテーブルのいずれかを格納することを特徴とする請求項21に記載のコンピュータ読取り可能な媒体。
  23. 前記複数のページテーブルの内の第1のページテーブルは、読み出し可能かつ書き込み可能として前記複数のページの内の第1のページを指定するリンクを含み、前記シャドウページテーブル中の対応するリンクは、前記複数のページの内の第1のページを読み出し可能のみとして指定することを特徴とする請求項22に記載のコンピュータ読取り可能な媒体。
  24. 前記ページディレクトリーおよび前記複数のページテーブルの内の第1のページテーブルは、仮想アドレスに基づいてメモリにアクセスするために使用される場合、メモリアクセスポリシーの違反をもたらすような少なくとも1つの特徴を含み、前記シャドウページディレクトリーおよびシャドウページテーブルは、前記仮想アドレスに基づき前記シャドウページディレクトリーおよび前記シャドウページテーブルを通してメモリにアクセスすることが、前記メモリアクセスポリシーの違反を生じないようなデータを含むことを特徴とする請求項19に記載のコンピュータ読取り可能な媒体。
JP2004289030A 2003-10-30 2004-09-30 アドレス変換制御のためのシャドウ・ページテーブル Expired - Fee Related JP4928721B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/697,197 US7310721B2 (en) 2003-10-30 2003-10-30 Shadow page tables for address translation control
US10/697,197 2003-10-30

Publications (2)

Publication Number Publication Date
JP2005135396A true JP2005135396A (ja) 2005-05-26
JP4928721B2 JP4928721B2 (ja) 2012-05-09

Family

ID=34423388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004289030A Expired - Fee Related JP4928721B2 (ja) 2003-10-30 2004-09-30 アドレス変換制御のためのシャドウ・ページテーブル

Country Status (10)

Country Link
US (1) US7310721B2 (ja)
EP (1) EP1528474B1 (ja)
JP (1) JP4928721B2 (ja)
KR (1) KR101150079B1 (ja)
CN (1) CN1612112B (ja)
AU (1) AU2004218602B2 (ja)
BR (1) BRPI0404279A (ja)
CA (1) CA2482872C (ja)
MX (1) MXPA04009350A (ja)
RU (1) RU2373566C2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008305106A (ja) * 2007-06-06 2008-12-18 Hitachi Ltd 仮想計算機の制御プログラムおよび仮想計算機システム
JP2011128787A (ja) * 2009-12-16 2011-06-30 Internatl Business Mach Corp <Ibm> アドレス変換を高速化する方法及びシステム
JP6317048B1 (ja) * 2015-04-15 2018-04-25 クアルコム,インコーポレイテッド バースト変換ルックアサイドバッファ

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430570B1 (en) 2003-04-28 2008-09-30 Ibrix, Inc. Shadow directory structure in a distributed segmented file system
EP1634175B1 (en) 2003-05-28 2015-06-24 Citrix Systems, Inc. Multilayer access control security system
TWI249670B (en) * 2004-04-29 2006-02-21 Mediatek Inc System and method capable of sequentially writing a flash memory
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7721094B2 (en) * 2005-05-06 2010-05-18 Microsoft Corporation Systems and methods for determining if applications executing on a computer system are trusted
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
EP1883865A4 (en) * 2005-05-24 2010-12-15 Marathon Techn Corp FAULT TOLERANT COMPUTER SYSTEM WITH SYMMETRIC MULTIPROCESSOR
US7657725B2 (en) * 2005-06-24 2010-02-02 Sigmatel, Inc. Integrated circuit with memory-less page table
US7814287B2 (en) * 2005-07-15 2010-10-12 Xensource, Inc. Using writeable page tables for memory address translation in a hypervisor environment
US7681200B2 (en) * 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
EP1955526B1 (en) 2005-12-02 2010-05-05 Citrix Systems, Inc. Method and apparatus for providing authentication credentials from a proxy server to a virtualized computing environment to access a remote resource
WO2008011030A2 (en) * 2006-07-17 2008-01-24 Xensource, Inc Tracking current time on multiprocessor hosts and virtual machines
US7739466B2 (en) * 2006-08-11 2010-06-15 Intel Corporation Method and apparatus for supporting immutable memory
GB2442495B (en) * 2006-10-02 2009-04-01 Transitive Ltd Method and apparatus for handling dynamically linked function cells with respect to program code conversion
US7885932B2 (en) * 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US7853679B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US7870277B2 (en) 2007-03-12 2011-01-11 Citrix Systems, Inc. Systems and methods for using object oriented expressions to configure application security policies
JP5260081B2 (ja) 2008-02-25 2013-08-14 パナソニック株式会社 情報処理装置及びその制御方法
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8024546B2 (en) * 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US8301863B2 (en) * 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8135937B2 (en) * 2008-11-17 2012-03-13 International Business Machines Corporation Logical partition memory
US10255463B2 (en) 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
US8225069B2 (en) 2009-03-31 2012-07-17 Intel Corporation Control of on-die system fabric blocks
US20100262722A1 (en) * 2009-04-10 2010-10-14 Christophe Vauthier Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
US8812907B1 (en) 2010-07-19 2014-08-19 Marathon Technologies Corporation Fault tolerant computing systems using checkpoints
US8954697B2 (en) * 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
US8364932B2 (en) * 2010-10-29 2013-01-29 Vmware, Inc. System and method to prioritize large memory page allocation in virtualized systems
US9606936B2 (en) * 2010-12-16 2017-03-28 Advanced Micro Devices, Inc. Generalized control registers
US20130013605A1 (en) 2011-07-08 2013-01-10 Stanfill Craig W Managing Storage of Data for Range-Based Searching
WO2013048943A1 (en) 2011-09-30 2013-04-04 Intel Corporation Active state power management (aspm) to reduce power consumption by pci express components
US9116793B2 (en) 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US9122582B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation File system for maintaining data versions in solid state memory
US9122581B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation Data versioning in solid state memory
US9135161B2 (en) 2012-06-12 2015-09-15 International Business Machines Corporation Flash translation layer system for maintaining data versions in solid state memory
EP2883131B1 (en) * 2012-08-07 2020-11-18 Nokia Technologies Oy Access control for wireless memory
US9251002B2 (en) 2013-01-15 2016-02-02 Stratus Technologies Bermuda Ltd. System and method for writing checkpointing data
US9436844B2 (en) 2013-08-29 2016-09-06 Microsoft Technology Licensing, Llc Access enablement security circuit
US9716708B2 (en) 2013-09-13 2017-07-25 Microsoft Technology Licensing, Llc Security certificates for system-on-chip security
WO2015102873A2 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Dynamic checkpointing systems and methods
WO2015102874A2 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Method of delaying checkpoints by inspecting network packets
US9588844B2 (en) 2013-12-30 2017-03-07 Stratus Technologies Bermuda Ltd. Checkpointing systems and methods using data forwarding
US9805194B2 (en) 2015-03-27 2017-10-31 Intel Corporation Memory scanning methods and apparatus
US10387325B2 (en) 2017-11-28 2019-08-20 International Business Machines Corporation Dynamic address translation for a virtual machine
CN109388524B (zh) * 2018-10-09 2021-10-01 郑州云海信息技术有限公司 虚拟磁盘格式的寻址方法和计算机可读存储介质
CN111290714B (zh) * 2020-02-06 2023-09-05 北京百度网讯科技有限公司 数据读取方法和装置
CN112988508B (zh) * 2021-03-04 2022-03-18 浙江中控研究院有限公司 一种基于内存隔离的可信plc嵌入式系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6299844A (ja) * 1985-10-28 1987-05-09 Hitachi Ltd アドレス変換装置
JPH10312338A (ja) * 1997-05-13 1998-11-24 Toshiba Corp メモリ制御装置、及びメモリ制御方法
US6233668B1 (en) * 1999-10-27 2001-05-15 Compaq Computer Corporation Concurrent page tables
US20020116590A1 (en) * 2001-02-20 2002-08-22 International Business Machines Corporation Method of managing memory
JP2003256278A (ja) * 2002-02-28 2003-09-10 Hitachi Ltd 情報保護方法及びその実施装置並びにその処理プログラム
US20030177435A1 (en) * 2002-03-18 2003-09-18 Robin Budd End-to-end checksumming for read operations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3102495B2 (ja) * 1989-12-28 2000-10-23 株式会社日立製作所 仮想記憶管理方法
EP1526472A3 (en) 1995-02-13 2006-07-26 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5960463A (en) * 1996-05-16 1999-09-28 Advanced Micro Devices, Inc. Cache controller with table walk logic tightly coupled to second level access logic
US6105103A (en) * 1997-12-19 2000-08-15 Lsi Logic Corporation Method for mapping in dynamically addressed storage subsystems
US7565509B2 (en) 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US7058768B2 (en) 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7478235B2 (en) 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6299844A (ja) * 1985-10-28 1987-05-09 Hitachi Ltd アドレス変換装置
JPH10312338A (ja) * 1997-05-13 1998-11-24 Toshiba Corp メモリ制御装置、及びメモリ制御方法
US6233668B1 (en) * 1999-10-27 2001-05-15 Compaq Computer Corporation Concurrent page tables
US20020116590A1 (en) * 2001-02-20 2002-08-22 International Business Machines Corporation Method of managing memory
JP2003256278A (ja) * 2002-02-28 2003-09-10 Hitachi Ltd 情報保護方法及びその実施装置並びにその処理プログラム
US20030177435A1 (en) * 2002-03-18 2003-09-18 Robin Budd End-to-end checksumming for read operations

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008305106A (ja) * 2007-06-06 2008-12-18 Hitachi Ltd 仮想計算機の制御プログラムおよび仮想計算機システム
JP2011128787A (ja) * 2009-12-16 2011-06-30 Internatl Business Mach Corp <Ibm> アドレス変換を高速化する方法及びシステム
JP6317048B1 (ja) * 2015-04-15 2018-04-25 クアルコム,インコーポレイテッド バースト変換ルックアサイドバッファ

Also Published As

Publication number Publication date
CA2482872C (en) 2013-07-30
EP1528474B1 (en) 2017-11-15
BRPI0404279A (pt) 2005-06-21
AU2004218602A1 (en) 2005-05-19
RU2373566C2 (ru) 2009-11-20
RU2004131609A (ru) 2006-04-10
CN1612112A (zh) 2005-05-04
KR101150079B1 (ko) 2012-06-01
KR20050041868A (ko) 2005-05-04
AU2004218602A8 (en) 2010-01-07
MXPA04009350A (es) 2005-05-04
US7310721B2 (en) 2007-12-18
EP1528474A2 (en) 2005-05-04
CN1612112B (zh) 2011-09-28
US20050097298A1 (en) 2005-05-05
CA2482872A1 (en) 2005-04-30
AU2004218602B2 (en) 2010-01-21
EP1528474A3 (en) 2008-07-02
JP4928721B2 (ja) 2012-05-09

Similar Documents

Publication Publication Date Title
JP4928721B2 (ja) アドレス変換制御のためのシャドウ・ページテーブル
US7058768B2 (en) Memory isolation through address translation data edit control
US7644246B2 (en) Using limits on address translation to control access to an addressable entity
US8954695B1 (en) Secure pool memory management
KR100918530B1 (ko) 어드레스 매핑 캐시들의 엔트리 소거 방법, 및 사용 관리 시스템
US7882317B2 (en) Process isolation using protection domains
KR101024819B1 (ko) 메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체, 컴퓨터 메모리 관리 방법, 및 메모리 액세스 제어 시스템
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US5390310A (en) Memory management unit having cross-domain control
KR20190026909A (ko) 컴퓨팅 장치의 메모리 내 페이지 접근 제어
US20050086517A1 (en) Page granular curtained memory via mapping control
US20100228936A1 (en) Accessing memory locations for paged memory objects in an object-addressed memory system
US20060047959A1 (en) System and method for secure computing
KR20030088492A (ko) 메모리의 부분들의 보안 방법 및 장치
JP5338435B2 (ja) 情報処理プログラム、情報処理装置および情報処理方法
JP2009104555A (ja) Vt環境で動作するソフトウェアエージェントの改竄防止、方法および装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110523

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111107

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: 20120207

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: 20120213

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

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4928721

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees