JP2001517829A - 仮想記憶システムにおいてアプリケーションプログラムによってコードまたはデータをグループに分類して、物理メモリの割り振りの制御を行うアプリケーション・プログラミング・インターフェイス - Google Patents
仮想記憶システムにおいてアプリケーションプログラムによってコードまたはデータをグループに分類して、物理メモリの割り振りの制御を行うアプリケーション・プログラミング・インターフェイスInfo
- Publication number
- JP2001517829A JP2001517829A JP2000513196A JP2000513196A JP2001517829A JP 2001517829 A JP2001517829 A JP 2001517829A JP 2000513196 A JP2000513196 A JP 2000513196A JP 2000513196 A JP2000513196 A JP 2000513196A JP 2001517829 A JP2001517829 A JP 2001517829A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- group
- physical memory
- code
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 360
- 238000012545 processing Methods 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 31
- 238000000034 method Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000015556 catabolic process Effects 0.000 abstract description 3
- 238000006731 degradation reaction Methods 0.000 abstract description 3
- 238000005192 partition Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
仮想記憶を使用し、プログラムを同時に実行させ、物理メモリを共有するコンピ
ュータにおける物理メモリの割り振りを制御する方法に関する。
に、コンピュータの物理メモリを共有させる方法を示すものである。この物理メ
モリは、コンピュータプログラムを実行するために使用され、コンピュータのメ
インメモリを意味するものであり、典型的にはランダムアクセスメモリ(RAM
)として実装される。マルチタスキング・オペレーティングシステムは、典型的
には仮想記憶を使用して、コンピュータにおいて実行されるアプリケーションプ
ログラムの各々に対して使用可能なメモリを拡張するものである。仮想記憶は、
アプリケーションに対してより多くのメモリを与える効果を持つ。この効果を得
るために、仮想記憶マネージャ(VMM)は、物理メモリのサイズよりも大きい
仮想メモリスペースを用いてメモリを割り振る。このVMMは、ハードディスク
等のコンピュータにおける2次記憶スペースを使用して、物理メモリの事実上の
サイズを拡張する。例えばリードやライト要求を処理する時のように、あるアプ
リケーションが実際に物理メモリを必要とする場合に限り、このVMMは、プロ
グラムコードやデータを2次記憶装置から物理メモリにロードする。
ージャは、要求されたコードやデータが物理メモリにあるか、または2次記憶装
置にあるかを判断する。コードまたはデータが物理メモリにある場合、仮想記憶
マネージャは、仮想アドレスから、それが物理メモリのどこに位置するかについ
てを示す物理アドレスへとマップする。一方、コードまたはデータが物理メモリ
に無い場合、仮想記憶マネージャは、それを2次記憶装置からフェッチして、物
理メモリに置く。このようにして、メモリ要求を満足させる必要に応じて、物理
メモリのコードまたはデータをスワップインやスワップアウトさせることによっ
て、仮想記憶マネージャは、アプリケーションに対して物理メモリを大きくした
ように見せる。
ンピュータで実行されるオペレーティングシステム、及び無限のメモリスペース
を追加できるハードディスクドライブ(ハードディスク駆動装置)を考えること
とする。このオペレーティングシステム自身で、物理メモリを1メガバイトまで
占有する。このユーザが、ハードディスクドライブから2メガバイトを占有する
ゲームプログラムを起動させた場合、物理メモリを占有するメモリの合計は、約
3メガバイトとなる。今、このゲームプログラムが、1メガバイトを越える追加
のコードまたはデータをロードしようと試みると仮定する。これらの状況下では
、コンピュータで現在実行しているプログラムに対するコードまたはデータを保
持するのに十分な物理メモリは存在しない。
ィスクドライブとの間でコードまたはデータをスワップインやスワップアウトさ
せることによって、この問題を解決するものである。例えば、あるコードの特定
箇所の命令が実行される場合、そのコードのその特定部分は、コンピュータの物
理メモリ内へロードされなければならない。そのコードのその他の部分は、それ
らが必要となるまで、ハードディスク内にとどまることができる。コードまたは
データが物理メモリに保持されていない時は、オペレーティングシステムは、常
に、そのコードまたはデータに関するフラグを設定(またはクリア)することに
よって、それが不在であるとマークする。その後、そのコードまたはデータに対
してアクセスが試行された場合、プロセッサは、不在割り込み(not present in
terrupt)を生成してオペレーティングシステムに問題を通知するであろう。こ のオペレーティングシステムは、それから、不在のコードまたはデータを、物理
メモリの使用可能なエリア中にロードする手配を行い、割り込みを引き起こした
プログラムを再スタートさせる。ハードディスクドライブにおけるコードまたは
データのスワップインやスワップアウトと割り込みは、アプリケーションプログ
ラムが割り込みを処理せず、データのスワップインやスワップアウトを管理しな
いという意味において、コンピュータで実行されるアプリケーションプログラム
にとってはトランスペアレントである。むしろ、アプリケーションプログラムは
、仮想記憶における仮想メモリアドレス空間だけを扱い、オペレーティングシス
テムが、仮想記憶に対する要求について物理メモリをマップし、物理メモリとハ
ードディスクドライブ間でデータのスワップインやスワップアウトをするもので
ある。
ーネントが、物理メモリにアクセスすることを保証され、そして幾つかのその他
のソフトウェアコンポーネントが残りの物理メモリを取り合う。常に物理メモリ
を占有するオペレーティングシステム・コンポーネントには、オペレーテイング
システムのカーネル、及びディスクキャッシュといったメモリ常駐型コンポーネ
ントが含まれる。残りの物理メモリは、動的にロードされるオペレーティングシ
ステム・コンポーネント(DLL)、アプリケーションプログラムやデータ、及
び、オペレーティングシステムのファイルシステムに対するダイレクト・メモリ
・アクセス(DMA)バッファやキャッシュ領域のように動的に割り振られるメ
モリ領域、等のその他のソフトウェア間で共有する。
理メモリ上に「ロック」を持つ。「ロック」は、メモリ管理システムの属性であ
って、コードまたはデータに対して物理メモリの確約や予約、即ち保証を行う。
そのメモリが割り込み時に実行可能でなければならないコードの一部、または割
り込み時にアクセス可能である必要があるデータの一部を含む場合、または、デ
ータがコンピュータのハードウェア装置によって非同期的にアクセスされる必要
がある場合に、多くのオペレーティングシステムは、典型的には物理メモリ上に
それをロックする。
して仮想メモリを割り振る。しかしながら、このオペレーティングシステムは、
プログラムがメモリへのアクセスを試行するまでは、実際にはアプリケーション
プログラムに対して物理メモリを割り振らないであろう。このシステムで実行さ
れるコードが、プログラムに割り振られたメモリへのアクセスを試行すると、こ
のオペレーティングシステムは、満杯になるまで物理メモリを割り振るであろう
。そして、その後、一部の物理メモリのハードディスクドライブへのスワップを
開始して、メモリへのアクセスを調整する。
ィスクドライブを使用し、コードまたはデータを物理メモリ上でスワップインや
スワップアウトする。オペレーティングシステムは、ハードディスクドライブか
ら直接的にアプリケーションプログラムの実行可能なコード(例えば、実行ファ
イル)等のコードをロードする。アプリケーションがプログラムデータへのアク
セスを要求すると、オペレーテイングシステムは、物理メモリを割り振り、次に
、一旦物理メモリが満杯になると、このプログラムデータを物理メモリからスワ
ップアウトする。
することができる。アプリケーションが、オペレーティングシステムに新規のウ
ィンドウ等の資源を要求する場合に、暗黙的な要求が発生し、この資源の要求に
応答する副次的な効果として、オペレーティングシステムは、メモリを割り振る
。明示的な要求は、アプリケーションが直接的に機能を呼び出し、追加のメモリ
をアプリケーションに割り振るようにオペレーティングシステムに対して明確に
要求した場合に起こる。両者の場合とも、オペレーテイングシステムは、仮想ア
ドレススペースから資源を割り振るためにメモリを要求する。
れるものである。ページ式仮想記憶機構では、オペレーテイングシステムが、ペ
ージと呼ばれるメモリユニットを用いて、全てのメモリの割り振り、割り振り解
除、及びスワップ処理を実行する。例えば、インテル社の386アーキテクチャ
互換のマイクロプロセッサでは、メモリは4Kのページであり、各々のメモリセ
グメントは、4Kページから構成される。ウィンドウズ(登録商標)95オペレ
ーテイングシステムは、ページ式仮想記憶システムを実現するオペレーティング
システムの一例である。
グ、ページファイル、及びページフォルトが含まれる。用語「ページング」は、
物理メモリと2次記憶装置間におけるコードまたはデータのスワップのプロセス
を示すものである。用語「ページファイル」は、2次記憶装置に格納され、物理
メモリ上でスワップインやスワップアウトされるコードまたはデータのぺージを
保持するスワップファイルを示すものである。最後に用語「ページフォルト」は
、要求されたコードまたはデータを含むページが物理メモリ内に位置していない
ため、そのメモリ要求が物理メモリからは満足されなかったことを示すマイクロ
プロセッサによって生成される割り込みを示すものである。
レッシング機構に依存して変わるものである。パーソナルコンピュータ業界で最
も広まっているプロセッサアーキテクチャの1つは、インテル社の386アーキ
テクチャである。このアーキテクチャの基本的なメモリ管理機能は、インテル社
の486、ペンティアム、ペンティアムII、ペンティアムプロ・マイクロプロセ
ッサでも使用されている。この386アーキテクチャは、リアルモード、プロテ
クトモード、及びバーチャルモードの3つのオペレーティングモードをサポート
している。リアルモードは、8086系列プロセッサとの互換性を保持するため
に使用されるモードを指すものである。このモードは、1メガバイトのメモリま
でアドレス処理できる4つのセグメントレジスタを使用するセグメント式メモリ
アーキテクチャを持つものである。各々のセグメントレジスタは、メモリセグメ
ントの最初の1バイト目をポイント(point)する。アドレスレジスタは、メモリ セグメントの1バイト目のオフセットアドレスを格納する。このプロセッサは、 セグメントレジスタとアドレスレジスタとの内容物を組み合わせ、完全なアドレ
スを生成させる。
用して、ディスクリプタ(descriptor)と呼ばれる8バイトのメモリエリアにア
クセスする。このセグメントレジスタは、ディスクリプタテーブルへのインデッ
クスを含むものである。このプロセッサは、ディスクリプタ内の情報を使用して
、基底アドレス(base address)を生成する。その後、プロセッサは、アプリケー
ションプログラムからのオフセットアドレスと基底アドレスとを組み合わせ、物
理メモリアドレスを計算する。このモードでは、オペレーティングシステムは、
セグメントとして、物理メモリの任意の適切なエリアを使用することができる。
アプリケーションのセグメントは、連続的な場所である必要はなく、違うサイズ
を有することができる。
イトも可能であることを除いて、同じセグメントの概念を使用するという点でプ
ロテクトモードに似ていて、そしてこのモードによってオペレーティングシステ
ムは仮想記憶機構を実現することができる。プロテクトモードと同様に、バーチ
ャルモードのプロセッサは、ディスクリプタテーブルへのインデックスとして、
セグメントレジスタの内容物を使用する。このディスクリプタテーブルは、メモ
リセグメントの基底アドレスを指定するものである。オペレーティングシステム
は、基底レジスタを設定し、コードまたはデータにおけるセグメントの最初の1
バイト目をポイントする。プロセッサは32ビットのオフセットアドレスと基底
アドレスとを組み合わせて、最終的な32ビットのアドレスを計算する。
は、この最終的に32ビットアドレスに変換されたものを変更して、32ビット
物理アドレスへのマップを行う。初期化中に、オペレーティングシステムは、プ
ロセッサをプロテクトモードにスイッチし、その後ページングを有効にする。基
底アドレスとプログラムからのオフセットとを組み合わせることで計算されるこ
の32ビットアドレスが、仮想メモリスペースにおけるアドレスである。
のアドレスから、物理メモリスペースにおけるアドレスへマップする。図1は、
プロセッサが、アプリケーションからの32ビットアドレスをどのように変換す
るのかを説明するものである。上位10ビット(ビット31から22)(図1の
20を参照されたい)は、ページテーブルディレクトリ(図1の22)へのイン
デックスである。ページテーブルディレクトリにおける32ビットの各々の部分
は、ページテーブル(図1の24)をポイントするものである。元のアドレスの
次の10ビット(ビット20から12)(図1の26を参照されたい)は、個々
のページテーブルへのインデックスである。ページテーブルエントリ(28)の
各々は、物理メモリのページをポイントするものである。仮想アドレスの残りの
12ビットは(ビット11から0)(図1の30を参照されたい)、メモリ上に
おいて、このページのオフセットを生成する。
ィレクトリのアドレスをCR3(32)と呼ばれるプロセッサの特別なレジスタ
内に格納する。新しいプログラムに対してオペレーティングシステムがページデ
ィレクトリをポイントすることができるように、オペレーティングシステムがタ
スクをスイッチするときは、毎回、CR3を再ロードする。仮想アドレスを物理
アドレスへマッピングするプロセスは、プロセッサによって実行される。メモリ
キャッシング技術は、頻繁に使用されるページテーブルエントリが追加のメモリ
を参照することなく使用可能であることを保障する。
ージテーブルまたは物理アドレスへのポインタだけでなく、それ以外のものも含
むものである。図2は、ページテーブル・ディレクトリ及びページテーブル構造
(図2のアイテム40と42を参照されたい)内における1つの32ビットワー
ドの内容物を示すものである。ページテーブルディレクトリ及び各ページテーブ
ルは、1つの4Kメモリページ(各々に1024エントリ)を消費する。これは
、全体で4GBのプログラム・アドレス・スペースを適切にアドレス処理させる
。ページテーブル・ディレクトリ内のフラグビットによって、システムがページ
ングファイルのあるディスク上へページテーブルを格納することを許される。こ
のようにして、大きなプログラムに対して(例えば、256ページのページテー
ブルを必要とする1GBのプログラム)、システムは、コードやデータのページ
と同様に、ページテーブルを物理メモリ上でスワップインやスワップアウトさせ
るであろう。
ページディレクトリ及びページテーブルエントリには幾つかのフラグビットを含
ませる必要がある。プロセッサ自身は、これらのフラグビットの幾つかを直接変
更する。オペレーティングシステムはその他について管理する。図2に示すよう
に、これらのフラグは次のビット:D、A、U/S、R/W、及びPを含むもの
である。
応するページテーブルにダーティ・ビット(図2のDビット)をセットする。こ
のことは、メモリからページを削除してスペースを開放したい場合には、最初に
ページをディスク上に書き出して、変更を保持しなければならないことを意味す
る。
サは、対応するページテーブルエントリ内のアクセスビット(図2のAビット) をセットする。仮想記憶マネージャは、このフラグを使用して、ページがどのく
らいの頻度でアクセスされたかを判断することができる。ページがどのくらいの
頻度でアクセスされたかを知る1つの方法は、このビットをセットし、定期的に
チェックし、そのページがアクセスされたか否かを判断する方法である。使用の
頻度が低いぺージのアクセスビットは、ハードウェアがアクセスビットをセット
しない限り、変更されないであろう。同じ周期で確実に使用されるページを削除
するよりも、このようなページをメモリから削除することは、賢明な選択である
。ウィンドウズ(登録商標)95オペレーティングシステムは、リースト・リー
セントリ・ユーズド(LRU)として知られるアルゴリズムを使用して、どのペ
ージをメモリから削除するかを決定する。最も新しく参照されたページほど、そ
のページは再割り振りされにくくなる。
ージが、実際にメモリ内に存在する場合のみ、プレゼント(present)ビット( Pビット)を1にセットする。不在のページまたはページテーブルの参照が試行 された場合、プロセッサは、不在割り込みを生成し、オペレーティングシステム
は、ページをメモリにロードする手配をさせなければならず、そしてそのページ
を必要とするプログラムを再スタートさせる。
り、ユーザレベルのプログラムはそのページにアクセスすることができない。こ
の部分への何らかのアクセスによって、オペレーティングシステムが取り扱わな
ければならない割り込みが引き起こされる。
クセスを望むプログラムが、そのページの内容物を変更できるか否かを判断する
。1の値の場合は、ページ内容物の変更が許される。0の値の場合は、いかなる
プログラムであっても、ページ内のデータの変更が許されない。通常、コードを
含むページは、読み取り専用ぺージとしてセットされる。
仮想記憶システムを実現できる。今日のオペレーティングシステムにおける制限
の1つとしては、仮想記憶が有効となっている場合に、どのように物理メモリが
割り振られるかを制御してアプリケーションに柔軟性を与えることができないこ
とである。アプリケーションプログラムは、典型的には、仮想メモリスペースの
みアクセスを行い、どのように物理メモリを割り振るかを、殆ど、または全く制
御することはない。このことは、アプリケーション開発を容易にするが、同時に
アプリケーションのパフォーマンスの低下をもたらす。例えば、マルチメディア
アプリケーションは、典型的には、アクティブ状態のときに大量のメモリを使用
する。アプリケーションがアクティブ状態ではなくなった場合、仮想記憶システ
ムは、アプリケーションのコード及びデータをハードディスク記憶装置にスワッ
プする傾向がある。仮想記憶システムが、メモリ要求を満足させるようにスワッ
ピング処理を実行する場合、ディスプレイ上のオブジェクトのスムーズで連続的
な動き及びユーザインターフェイスの応答性が低下する。これは、アプリケーシ
ョンがメモリにアクセスを試行する場合に、少量のコードまたはデータが、ハー
ドディスクドライブからスワップインされるという仮想記憶システムの設計が原
因である。
ティングシステム等の幾つかのオペレーテイングシステムは、LRUアルゴリズ
ムを使用して、物理メモリ上におけるページのスワップインやスワップアウトを
制御して、仮想記憶を実現している。一般的なルールとして、この仮想記憶シス
テムは、オペレーティングシステムの動的にロードされたコンポーネントのペー
ジ、及びアプリケーションプログラムの全てのページに同じ優先度を与えている
。このようにして、ゲームアプリケーションが、一時的にアクティブ状態でなく
なった場合、オペレーティングシステムは、そのページを物理メモリからスワッ
プアウトし易い状態となる。このアプリケーションが再びアクティブ状態になっ
た場合、オペレーティングシステムが物理メモリにページを徐々にスワップイン
するため、ディスプレイ上のオブジェクトの動き及びユーザ入力に対するゲーム
の応答性が悪くなってしまう。
セスしないように、アプリケーションに割り振られたその物理メモリをロックす
ることである。例えば、ウィンドウズ(登録商標)オペレーティングシステムで
は、アプリケーションは、物理メモリに対してページロックを要求することがで
きる。このページロックによって、オペレーティングシステムは、物理メモリを
確実に予約して、その他の実行中のコードが使用可能な物理メモリのグループか
ら、その物理メモリを削除する。同時に実行されるアプリケーションであって、
物理メモリにアクセスする必要があるものが、物理メモリ上におけるその他のア
プリケーションのロックのために物理メモリにアクセスできないという点で、シ
ステムパフォーマンスの極度の低下を招きかねないという理由によって、これは
許容し得る解決策ではない。
プリケーションがグループのコードまたはデータの何れかの部分にアクセスを試
行する場合に、常にこのグループのコードまたはデータを一緒に物理メモリへロ
ードさせるアプリケーション・プログラミング・インターフェイス(API)に
関するものである。このAPIは、アプリケーションがリードやライトの要求を
コード及びデータに対して行う際のページフォルトの過度な分散を防止すること
によって、アプリケーションに、仮想記憶システムにおけるパフォーマンスの改
善をさせる。アプリケーションは、グループに必須の要素であるコード及びデー
タを指定する。物理メモリ内に存在しないグループのコードまたはデータに対し
てアプリケーションがアクセスを試行したため、オペレーティングシステムの仮
想記憶システムが、不在割り込みの信号を発する場合、このAPIは、このグル
ープの全てのデータ及びデータを一緒に、物理メモリ内にロードさせる(例えば
、このアプリケーションが実行を再開する前に、一連のメモリはロード処理され
る)。このようにして、2次記憶装置からコードまたはデータをロードする待ち
時間は、一回の周期に圧縮され、これ以後、このグループの全てのコード及びデ
ータは、物理メモリに存在することとなる。
より明確となるであろう。
ンプログラムに制御させる仮想記憶管理システム及び方法を目的とするものであ
る。本発明の一実施例では、ワシントン州レッドモンドのマイクロソフト社によ
り市販されるウィンドウズR95オペレーティングシステム用の「ダイレクトメ モリ」と名づけれたアプリケーション・プログラミング・インターフェイス(A
PI)に本発明を適用する。簡単に説明すると、このAPIは、オペレーティン
グシステムが物理メモリへのアクセスをどのように管理するかを、アプリケーシ
ョンに制御させることをできるようにする一連の機能またはAPIコールを提供
するものである。
ィング環境における簡単で一般的な説明の提供を意図するものである。本発明を
、パーソナルコンピュータで実行されるコンピュータプログラムにおけるコンピ
ュータ実行可能な命令の一般的な文脈で説明することとなるが、当業者は、本発
明がその他のプログラムモジュールとの組み合わせでも実現することができるこ
とを理解するであろう。一般的に、プログラムモジュールは、個々のタスクを実
行する、或いは個々の論理的なデータタイプを作成するルーチン、プログラム、
コンポーネント、データ構造等を含むものである。更に、当業者は、本発明が、
その他のハンドヘルドの装置、マイクロプロセッサシステム、マイクロプロセッ
サ型の或いはプログラム可能な大衆家電製品、ミニコンピュータ、メーンフレー
ムコンピュータ等を含むコンピュータシステム構成で実施することができること
を、理解するであろう。また、本発明は、通信ネットワークを介して接続される
リモート演算装置によってタスクが実行される分散コンピューティング環境でも
実施できる。分散コンピューティング環境では、プログラムモジュールを、ロー
カル及びリモートの記憶装置に置くこともできる。
るものである。このコンピュータシステムは、演算ユニット121と、システム
メモリ122と、システムメモリを含む様々なシステムコンポーネントと演算ユ
ニット121とを相互接続するシステムバス123と、を有するパーソナルコン
ピュータ120を含むものである。このシステムバスは、メモリバス、メモリコ
ントローラ、周辺機器バス、及びPCI、VESA、マイクロチャネル(MCA
)、ISA、EISA等のバスアーキテクチャを使用するローカルバスを含む何
らかの幾つかのバス構造のタイプを含むこともできる。このシステムメモリは、
読み取り専用メモリ(ROM)124、ランダムアクセスメモリ(RAM)12
5を含むものである。起動時等の場合に、パーソナルコンピュータ120の要素
間で情報の伝達を助ける基本ルーチンを含む基本入出力システム126(BIO
S)は、ROM124に格納される。このパーソナルコンピュータ120は、ハ
ードディスクドライブ127、磁気ディスクドライブ128、例えば読み書きで
きるリムーバブルディスク129、光学ディスクドライブ130、例えば読み取
り用にCD−ROMディスクドライブ131、及び読み書きできるその他の光学
メディアをも含むものである。このハードディスクドライブ127、磁気ディス
クドライブ128、及び光学ディスクドライブ130は、それぞれハードディス
クドライブインターフェイス132、磁気ディスクドライブインターフェイス1
33、及び光学ディスクドライブインターフェイス134を介して、システムバ
ス123に接続されている。これらのドライブ及びこれらに関するコンピュータ
読み取り可能なメディアは、パーソナルコンピュータ120に対して、データ、
データ構造、或いはコンピュータ実行可能な命令(ダイナミックリンクライブラ
リ、実行ファイル等のコード)等の不揮発性の記憶装置を提供する。上記ではハ
ードディスク、リムーバブル磁気ディスク、及びCDと呼ばれるコンピュータ読
み取り可能なメディアの説明をしたが、これらには、磁気カセット、フラッシュ
メモリカード、デジタルビデオディスク、或いはベルヌーイカートリッジ等のそ
の他のタイプのコンピュータ読み取り可能なメディアも含むことができる。
ができ、これには、オペレーテイングシステム135、アプリケーションプログ
ラム136、その他のプログラムモジュール137、及びプログラムデータが含
まれる。ユーザは、キーボード140及びマウス142等のポインティングデバ
イスを介して、コマンド及び情報を、パーソナルコンピュータ120に入力する
ことができる。その他の入力装置(図には示さず)としては、マイクロフォン、
ジョイスティック、ゲームパッド、パラボラアンテナ、及びスキャナ等を含むこ
とができる。これらの及びその他の入力装置は、しばしば、システムバスに接続
されるシリアルポートインターフェイス146を介して演算ユニット121に接
続されるが、パラレルポート、ゲームポート、或いはユニバーサルシリアルバス
(USB)等のその他のインターフェイスに接続することもできる。モニタ14
7或いはその他のタイプのディスプレイ装置も、ビデオアダプタ148等のイン
ターフェイスを介してシステムバス123に接続される。このモニタに加えて、
パーソナルコンピュータは、典型的には、スピーカ及びプリンタ等のその他の周
辺出力装置(図には示さず)を含むものである。
ートコンピュータの論理的な結合を使用するネットワーク環境で動作させること
もできる。このリモートコンピュータ149は、サーバ、ルータ、端末、或いは
その他の一般的なネットワークノードとすることができ、典型的には、パーソナ
ルコンピュータ120に関して説明した全ての要素或いは多くの要素を含むもの
であるが、図3においては記憶装置150のみを図示する。図3で図示される論
理的な結合は、ローカルエリアネットワーク(LAN)151、ワイドエリアネ
ットワーク(WAN)152を含むものである。このようなネットワーキング環
境は、オフィス、企業間広域コンピュータネットワーク、イントラネット、或い
はインターネットでは一般的なものである。
120は、ネットワークインターフェイス或いはネットワークアダプタ153を
介してローカルネットワーク151に接続される。WANネットワーキング環境
で使用する場合は、典型的には、このパーソナルコンピュータ120は、モデム
54、またはインターネットのようなワイドエリアネットワークを介して通信を
確立させるその他の手段を含むものである。このモデム154は、内部または外
部装置とすることができ、シリアスポートインターフェイス146を介してシス
テムバス123に接続される。ネットワーク環境では、パーソナルコンピュータ
120に関して説明したプログラムモジュール、またはその中の一部は、リモー
ト記憶装置に格納することができる。示されたネットワーク環境は、典型的なも
のであり、コンピュータ間で通信リンクを確立させるその他の手段を使用するこ
ともできることは理解されるであろう。
で実行されるアプリケーションプログラムに、仮想記憶管理システムがどのよう
に物理メモリを割り振るかを制御させるAPIである。より具体的に言えば、こ
のAPIは、そのグループのコード及びデータが、物理メモリ内に一緒にロード
されるように、アプリケーションに、そのコード及びデータをグループに分類さ
せる機能を含むものである。この機能を実施させるためには、仮想記憶マネージ
ャは、グループのコード及びデータを監視し続ける。アプリケーションがそのグ
ループの命令またはデータ構造にアクセスを試行した場合は、常に仮想記憶シス
テムは、そのコード及びデータのグループ全体を物理メモリ内にロードするであ
ろう。
れるコードやデータのアドレス及びサイズを指定することによって、グループに
分類される具体的なコード及びデータを指定する。コードに対しては、アプリケ
ーションは、アプリケーションの機能または機能名を指定することができ、これ
は黙示的に実行コードのアドレスを提供する。データに対しては、アプリケーシ
ョンは、構造のサイズと同様に、データ構造のポインタを指定することができる
。
関連する4つの機能コール:1)CreateGroup、2)AddMemoryToGroup、 3)DestroyGroup、4)DeleteMemoryFromGroup、を含むものである。アプリケ ーションは、CreateGroup機能を呼び出し、グループのコードまたはデータの監 視を続けるデータ構造を作成する。その後、アプリケーションは、AddMemoryToG
roup機能を呼び出し、指定されたグループにコード及びデータを追加することが
できる。アプリケーションが、AddMemoryToGroup機能を呼び出す場合、機能名及
びそのサイズを提供することによって、 AddMemoryToGroup機能はグループに追加されるコードを識別し、データ構造に対
するポインタ及び構造のサイズを提供することによって、データ構造を識別する
。グループから仮想メモリを削除するためには、アプリケーションは、DeleteMe
moryFromGroup機能を呼び出し、削除されるコードまたはデータを指定する。グ ループから仮想メモリを追加または削除する場合、アプリケーションは、仮想メ
モリのブロックまたはブロックのセットを指定することによって、追加または削
除される部分を指定することができる。ブロックは、仮想メモリの部分の開始ア
ドレス及びそのサイズによって定義することができる。DestroyGroup機能は、以
前に作成されたグループを破棄するために使用される。
ンドウズ(登録商標)95オペレーティングシステムの仮想記憶管理システムと
共同で処理を行う。特に、オペレーティングシステムの物理メモリマネージャの
サービスを使用して、物理メモリを割り振り、コード及びデータを物理メモリ内
にロードする。
リマネージャとの関係を説明するものである。これらのアプリケーション(app.
1-3)(161-163)は、アプリケーションがコンピュータで同時に実行され、コンピ
ュータの物理メモリを共有することを表わすものである。これらのアプリケーシ
ョンは、API機能164を呼び出すことによって、物理メモリの割り振りを制
御することができる。API機能に付属する説明及び具体的な実施例については
、下記の通りである。
ものである。不在割り込みが検知された場合、メモリモニタ165は、割り込み
が、アプリケーションによって指定されたグループのコードまたはデータが存在
する場所で起きたか否かを判断する。もしも、そうであるならば、物理メモリマ
ネージャ166を呼び出し、グループのコード及びデータを物理メモリ内(コン
ピュータのRAM)にロードさせる。メモリモニタ165によって提供されるそ
のグループのメモリの定義を使用して、物理メモリマネージャ166は、まだ物
理メモリ内に存在しないそのグループのコードまたはデータをロードする。
ン160に割り振られた仮想メモリの線形アドレススペースである。このマーク
された区画172、174,176、及び178は、アプリケーションがメモリ
のグループに追加したコードまたはデータに関するこのアプリケーションの仮想
メモリスペースの区画である。
機能(CreateGroupと呼ばれる)を呼び出し、そのグループのコード及びデータ のリストを保持するデータ構造を作成する。アプリケーションは、作成されるグ
ループに入れられるコードまたはデータの区画を指定することができる。アプリ
ケーションは、コード及びデータを格納するために使用される仮想メモリの区画
のアドレス及びサイズを提供することによって、グループに入れられるコード及
びデータを指定する。例えば、この実施例では、アプリケーションは、グループ
に入れられるメモリブロックのポインタの配列、及びブロックのサイズを提供す
るパラメータの配列を提供する。
の区画をリストアップしたデータ構造190を作成する。図4の例では、このデ
ータ構造は、4つのメモリブロックのリストを含むものである。ブロックの各々
のアドレスは、ブロックが存在する仮想メモリの位置(この場合は、マークされ
た区画172、174、176、及び178)をポイントする。また、このデー
タ構造190は、グループの仮想メモリにおけるブロックの各々のサイズを監視
し続ける。
対応するメモリユニットのリストを生成する。このリストにおけるメモリユニッ
トとは、物理メモリマネージャが、物理メモリを割り振り、仮想記憶機構を実現
させるのに使用したメモリユニットを指すものである。このAPI機能は、メモ
リユニットが4Kページ等のページ式仮想記憶システム用に設計されたものであ
る。物理メモリマネージャ166は、メモリユニットを4Kページ単位でハード
ディスクドライブ上でスワップインやスワップアウトさせる。
ケーションは、グループに追加されるコードまたはデータの仮想メモリにおける
区画のアドレス及びサイズを指定する。これに対応して、API機能164は、
データ構造190を更新し、新しいメモリブロックを含ませる。また、これは、
そのブロックに関する新しいメモリユニット(ページ)を計算し、ページ192
の連結リストに追加する。
またはデータを格納するのに使用されたページを監視し続ける。アプリケーショ
ンが、CreateGroup、またはAddMemoryToGroupでコードまたはデータのアドレス 及びサイズを指定する場合、このAPI機能は、このコードまたはデータに相当
するページを計算する。その後、連結リスト構造を使用して、これらのページを
リング状に繋げる。連結リストは、可能な実施例の1つであり、ハッシュテーブ
ルまたは他のリスト構造を使用するもの等、その他のものに代替できるものであ
ることに留意されたい。
ドすることを管理する。また、このマネージャは、物理メモリからのページのス
ワップを取り扱い、複数のアプリケーションは物理メモリを共有することができ
るようになる。この実施例では、物理メモリマネージャは、ウィンドウズR95 オペレーティングシステムの一部である。これは、物理メモリ及び2次記憶装置
間でページをスワップするLRU機構を実現させ、物理メモリ内にページをロー
ドするサービスを含むものである。ページまたはページのリストへの参照がされ
た場合、物理メモリマネージャ166は、指定されたページを物理メモリ内にロ
ードすることができ、これらのページに対して、物理メモリ内に存在するという
ことをマークすることができる。
ページフォルトを検知すると、そのページのアドレスをチェックし、そのページ
が何れかのグループのページのリストに存在するか否かを判断する。このAPI
機能では、幾つかの異なるグループを保持することができる。従って、メモリモ
ニタ165は、各々のグループのページをチェックし、ページフォルトが、何れ
のグループのページに対するものであるかを判断する。この割り込みが、グルー
プ(図4のアドレス180のように)のページに関連する場合、メモリモニタ1
65は、その一つ(または複数の)グループの一つ(または複数の)ページリス
トを物理メモリマネージャ166に渡し、そのページを含む各々のグループにお
ける各々のページをロードさせることを指示する。
れらのページの全てを1回でロードする。このようにして、アプリケーションか
ら見れば、これらのページは一緒にロードされることとなる。物理メモリマネー
ジャは、メモリモニタによって提供されたグループのページのリストを詳細に検
討し、物理メモリ内にまだロードされていないページを全てロードする。各々の
ページを保持するデータ構造が、物理メモリに存在するものとしてマークされて
いるため、物理メモリマネージャは、ページが既に物理メモリ内に存在するか否
かを判断する。
ループに存在する全てのページを一回でロードする待ち時間の点で、アプリケー
ションにとって不利になる。しかしながら、待ち時間は一回のロード処理に圧縮
され、ページフォルトの過度な分散が起りにくくなるであろう。その上、グルー
プの再ロードは、ディスクのシーク時間を最少化するように最適化されるが、こ
れはページがランダムにロードされる場合には達成できないことである。
にグループのコード及びデータを等しく取り扱わせることとなる。更に、一緒に
ロードされるためには、仮想記憶管理の目的のために、このグループは1つのメ
モリユニットとして取り扱われる。具体的には、いつページを2次記憶装置にス
ワップアウトさせ、物理メモリに存在しないページに対するメモリ要求に応答し
て物理メモリを開放するのかを判断する目的のために、各々のグループの全ての
ページの使用が監視される。
された場合、グループの全てのぺージが、アクセスされたものとして取り扱われ
る。1つのグループにのみ存在するメモリブロックは、グループの何れかのペー
ジがアクセスされた場合、一旦使用されたものとしてマークされる。共有される
ブロックの何れかのページがアクセスされた場合、複数のグループによって共有
されるブロックは、常に、それが存在する各々のグループに対して使用されたも
のとしてマークされる。しかしながら、共有ブロックを含む何れかのグループに
おいて共有ブロック以外のページがアクセスされた場合は、複数のグループで共
有されたブロックであっても、常に、一回だけ使用されたものとしてマークされ
る。ここでは、ブロックは、一組のページを指す。ブロックがマークされた場合
、そのブロックにある全てのページがマークされる。グループにある全てのぺー
ジの使用が等しいものとされるため、実際の使用状況に拘わらず、後にLRU機
構はグループのページブロックをほぼ同時に2次記憶装置へスワップすることに
なる。
に対する参照回数を1つだけ増加させることによって、そのページの使用を監視
する。この機構では、或るグループのページがアクセスされた場合、そのグルー
プに含まれるすべてのブロックの参照回数が1つ増加される。共有ブロックにあ
るページがアクセスされた場合、ブロックを共有するグループの数だけ共有ブロ
ックの参照回数を増加させる。
あって、仮装記憶管理システムが、どのようにアプリケーションのコード及びデ
ータをグループに分類するかを説明するものである。この実施例におけるマーク
された仮装メモリの区画(202、204、206,208,210,212,
214,216)は、連結リスト構造でグループに分類され、アプリケーション
によって指定されたコードまたはデータの第1グループを表わすものである。こ
の実施例において、マークされた仮装メモリの区画(220,206,222,
224,226)は、第2の連結リスト構造でグループに分類され、アプリケー
ションによって指定されたコードまたはデータの第2グループを表わすものであ
る。実線の矢印は、第1グループのメモリ区画の連結を表わすものであり、破線
の矢印は、第2グループのメモリ区画の連結を表わすものである。
データ構造(例えばブロック214)の一部にアクセスを試行した場合、メモリ
モニタは、物理メモリマネージャに、番号202、204、206、208、2
10、212、214、及び216と呼ばれるブロックを物理メモリ内へロード
するよう指示する。同様に、これらのグループを作成したアプリケーションが第
2グループのコードまたはデータ構造(例えばブロック214)の一部にアクセ
スを試行した場合、メモリモニタは、物理メモリマネージャに、番号220、2
06、222、224、及び226と呼ばれるブロックを物理メモリ内へロード
するよう指示する。アプリケーションがブロック206にアクセスを試行した場
合、メモリモニタは、物理メモリマネージャに、第1及び第2グループ両方の全
てのブロックをロードさせるよう指示するであろう。
)の参照回数がカウントされる。例えば、アプリケーションがブロック214に
アクセスした場合、ブロック214及び第1グループにあるその他の全てのブロ
ックのページの参照回数がカウントされる。同様に、アプリケーションがブロッ
ク204にあるコードへアクセスした場合、ブロック204及び第2グループに
あるその他の全てのブロックにあるページの参照回数がカウントされる。アプリ
ケーションが第1及び第2グループで共有されるブロックであるブロック206
にあるコードへアクセスした場合、ブロック206のページを除いて、第1及び
第2グループの各々のブロックにあるページの参照回数が一回カウントされる。
ブロック206は2つのグループによって共有されているため、このブロック2
06のページの参照回数は、2回カウントされる。
に示す。仮装記憶管理に対するコードまたはデータのグループへの分類に関する
機能は、CreateGroup、AddMemoryToGroup、DeleteMemoryFromGroup、及びDestro
yGroupを含むものである。
) 目的 以前に作成したグループに指定されたメモリブロックを加える。 パラメータ dwGrouphandle これは、以前に作られたグループを識別するために使用されるハンド ル(handle)である。 dwCount これは、lplpAddrによってポイントされたリスト内のメモリブロックの 数を示す。 lplpaddr これは、このグループに加えられるべきメモリブロックのポインタの 配列である。 lpdwSize これは、lplpAddrによってポイントされたメモリブロックの長さを示 すDWORDの配列である。 戻り値 DM_OK 処理成戟B DMERR_BADGROUP このグループはCreateGroupによって作成 されなかった。
ddr,lpdwSize) 目的 仮想記憶管理の目的で1つのユニットとして取り扱われるべきメモリ区画を 含むグループを作成する。グループは、ページイン、ページアウト、ソフト ロックされ、1つのものとして参照回数がカウントされるであろう。 パラメータ dwFlags DMGROUP_SOFTLOCK DMGROUP_PRELOAD lpdwGroupHandle 新グループハンドルが返されるDWORDをポイントする。 dwCount これは、lplpAddrにポイントされたリスト内のメモリブロック の数である。 lplpAddr これは、作成されたものとして、このグループに加えられるメモリ ブロックへのポインタの配列である。 lpdwSize これは、lplpAddrによってポイントされたメモリブロックの長さを 示すDWORDの配列である。 戻り値 DM_OK 処理成功。 DMERR_BADDADDRESS 物理アドレス失敗。
、 アプリケーションが、オペレーティングシステムが必要とするそのワーキング セットと通信することを、このAPIは許可するものである。 パラメータ dwFlags DMSPWS_EXCLUSIVEMODE アプリケーションがフォーカスを持つ 場合のアプリケーションのワーキングセットである。 DMSPWS_SHARED アプリケーションがフォーカスを持 たない場合のアプリケーションのワーキングセットである。 DwNumPages 通常考えられる使用においてスラッシン グを回避するために、このアプリケーションが必要とする、メモリの4K ページの数。 戻り値 DM_OK 処理成功。 DMERR_OUTOFMEMORY 要求されたワーキングセットは、このシ ステムの物理メモリの限界を超えている。このアプリケーション用のワー キングセットは変更されなかった。
実施例に限定されるものではないことが、重要であることに留意されたい。この
機能コールは、データ構造の様々な形態を使用する様々なプログラミング言語で
実施することができる。例えば、メモリのグループを保持するためのデータ構造
は、連結リストである必要はなく、ハッシュテーブル等のその他の通常のリスト
またはテーブルの種類を使用して実施することもできる。この実施例は、LRU
機構を使用して、ページを物理メモリ上でスワップインやスワップアウトするペ
ージ式仮装記憶システムによって実現される。しかしながら、物理メモリを管理
するために使用されるメモリユニットを変更することや、任意のサイズでさえ可
能である。更に、物理メモリを開放する必要がある場合に、どのメモリユニット
を2次記憶装置に戻すのかを判断するために、その他の通常のキャッシングアル
ゴリズムを使用することができる。
更できる。例えば、参照回数をカウントするのでなく、アクセスされた場合は、
メモリブロックを、使用されたものとしてマークすることができ、所定の時間内
にアクセスされない場合は、クリアすることができる。
商標)NTオペレーティングシステムのようなマルチタスキング・オペレーティ
ングシステムの仮装記憶システムの変形として実施することができる。或いは、
オペレーティングシステムの機能を拡張させる分離されたモジュールとして実施
することもできる。
た実施例は、本発明の好適な実施例に過ぎないと理解すべきであり、本発明の範
囲を限定するものと解釈すべきではない。むしろ、本発明の範囲は、以下の請求
の範囲で定義してある。従って、我々は、これらの請求の範囲及びその本質の範
囲にある全てのものを、我々の発明として請求する。
る図である。
リを説明する図である。
タシステムを説明する図である。
リケーション・プログラミング・インターフェイスの実施例を説明する図である
。
管理システムが、どのようにアプリケーションのコード及びデータをグループに
分類するかを示す図である。
Claims (20)
- 【請求項1】 仮想記憶を使用するマルチタスキング・オペレーティングシステ
ムにおいて、同時に実行されるアプリケーションプログラム間で物理メモリを共
有し、物理メモリの割り振りを制御する方法であって、 指定されたコードまたはデータをグループに分類させることを要求するアプリ
ケーションプログラムからのコールに応答して、前記アプリケーションによって
指定された前記コードまたはデータを前記グループに分類する構造を作成するス
テップと、 前記グループのコードまたはデータの何れかの部分にアクセスする要求に応答
して生成された不在割り込みを監視するステップと、 不在割り込みが前記グループのメモリユニットに対して発生した場合、不在割
り込みが起きた場所の前記メモリユニット、及び前記グループのコードまたはデ
ータを格納するために使用される全てのその他のメモリユニットをロードするこ
とを含むステップであって、まだ物理メモリに存在していない前記グループの全
てのコードまたはデータを、2次記憶装置から物理メモリ内に、一回でロードす
るステップと、 を含む方法。 - 【請求項2】 前記構造が、仮想メモリにおいて不連続な部分に格納されたコー
ドまたはデータを一緒に連結する連結リスト構造を含む、 請求項1に記載する方法。 - 【請求項3】 前記構造が、前記コードまたはデータの不連続な部分に関するメ
モリのページを連結させる、 請求項2に記載する方法。 - 【請求項4】 前記アプリケーションによって指定されたコードまたはデータの
追加のグループに対して請求項1のステップを繰り返すステップをも含む、 請求項1に記載する方法。 - 【請求項5】 不在割り込みに応答して物理メモリ内へロードするために、同時
に実行される複数のアプリケーションプログラムが、1つのメモリの部分として
扱われるべきコードまたはデータの少なくとも1つのグループを指定するように
、その他の同時に実行されるアプリケーションのコードまたはデータのグループ
に対して請求項1のステップを繰り返すステップをも含む、 請求項4に記載する方法。 - 【請求項6】 前記不在割り込みが起きた場合、前記割り込みが起きたメモリ要
求のアドレスが、前記グループにおける一連の不連続なメモリアドレスであるか
否かを判断することによって、前記グループのメモリユニットに対して前記割り
込みが起きたのか否かを検査するステップをも含む、 請求項1に記載する方法。 - 【請求項7】 前記グループのメモリユニットがアクセスされた場合に、前記グ
ループのメモリユニットに対するメモリアクセスを監視して、前記グループの前
記メモリユニットの全てが同時にアクセスされたものとマークするステップと、 前記コードのユニットがアクセスされた頻度、またはどのくらい最近に使用さ
れたかに基づき、物理メモリから2次記憶装置へスワップするのかを選択するこ
とによって、どのコードのユニットが、アクセスされたものとしてマークされて
いるかを判断することによって、どの物理メモリの部分を物理メモリから2次記
憶装置へスワップさせるかを判断する、ステップをも含む、 請求項1に記載する方法。 - 【請求項8】 指定されたコードまたはデータを第2のグループに分類すること
を要求するアプリケーションプログラムからのコールに応答して、第2の構造を
作成し、前記アプリケーションによって指定された前記コードまたはデータを前
記グループに分類するステップと、 前記第1及び第2のグループのメモリユニットに対するメモリアクセスを監視
し、前記第1及び第2のグループの両方に存在するメモリユニットがアクセスさ
れた場合等に、前記第1及び第2のグループのメモリユニットの全てがアクセス
されたものとしてマークし、そして前記第1及び第2のグループの両方に存在す
る前記メモリユニットは2回アクセスされたものとしてマークするステップと、
を含む、 請求項7に記載する方法。 - 【請求項9】 複数のグループ間で共有されるコードまたはデータのブロックが
アクセスされた場合、前記ブロックが、前記ブロックを共有するグループ数nの
回数だけアクセスされたことをマークするステップを含む、 請求項8に記載する方法。 - 【請求項10】 請求項1のステップを実行するための命令を格納するコンピュ
ータ読み取り可能なメディア。 - 【請求項11】 仮想記憶を使用するマルチタスキング・オペレーティングシス
テムにおいて、同時に実行されるアプリケーションプログラム間で物理メモリを
共有する仮想記憶管理システムであって、 2次記憶装置及び物理メモリ間でコードまたはデータをスワップし、アプリケ
ーションに物理メモリを共有させ、2次記憶装置から物理メモリへメモリユニッ
トをロードさせる、物理メモリマネージャと、 前記グループに入れられる前記コードまたはデータを指定するアプリケーショ
ンプログラムからの機能コールに応答して、前記グループのコードまたはデータ
をグループに分類する、APIモジュールと、 不在割り込みのためにプロセッサを監視することができ、前記グループの何れ
かのコードまたはデータに対して出されたメモリ要求に応答して、プロセッサが
、不在割り込みを生成し、前記物理メモリマネージャを呼び、まだ物理メモリに
存在しない前記グループの他の全ての部分をロードすることができ、前記物理メ
モリマネージャ及び前記APIモジュールと通信するメモリモニタと、 を含むシステム。 - 【請求項12】 前記メモリモニタが、グループのメモリユニットへのメモリア
クセスを監視することができ、グループのメモリユニットの何れか1つがアクセ
スされた場合、全ての前記メモリユニットがアクセスされたものとしてマークす
ることができる、 請求項11に記載する仮想記憶管理システム。 - 【請求項13】 前記メモリモニタが、複数のグループ間で共有されるメモリブ
ロックへのメモリアクセスを監視することができ、共有されたブロックにおける
メモリユニットの何れか1つがアクセスされた場合、前記共有されたブロックに
おける全てのメモリユニットに、前記共有されるブロックを含むグループの数n
の回数をマークすることができる、 請求項11に記載する仮想記憶管理システム。 - 【請求項14】 前記物理メモリマネージャは、メモリユニットへのメモリアク
セスを監視することができ、物理メモリに存在しないコードまたはデータに対す
る要求を満足させる必要がある場合に、物理メモリから2次記憶装置へメモリユ
ニットをスワップすることができる、 請求項11に記載する仮想記憶マネージャ。 - 【請求項15】 前記メモリユニットがページである、 請求項14に記載する仮想記憶マネージャ。
- 【請求項16】 前記物理メモリマネージャは、前記ユニットに対するメモリ要
求に応答して、メモリユニットが使用されたものとしてマークし、 前記物理メモリマネージャが、前記グループのメモリユニットがアクセスされ
た場合は、常にグループの全てのメモリユニットが使用されたものとしてマーク
し、 前記物理メモリマネージャは、リースト・リーセントリ・ユーズド方式でどの
ユニットが該当するかを判断することによって、どの前記ユニットを物理メモリ
から2次記憶装置へスワップするかを選択して、物理メモリに対するメモリ要求
を満足させる、 請求項14に記載する仮想記憶マネージャ。 - 【請求項17】 前記APIモジュールは、同時に実行される複数のアプリケー
ションプログラムに応答し、グループに存在するメモリユニットに対する不在割
り込みに応答して物理メモリへ一緒にロードされる複数のアプリケーションプロ
グラムに対するコードまたはデータのグループを表わすデータ構造を保持するこ
とができる、 請求項11に記載する仮想記憶マネージャ。 - 【請求項18】 前記APIモジュールによって、前記アプリケーションプログ
ラムが、実行時にコードまたはデータを動的に前記グループから追加または削除
することができる、 請求項11に記載する仮想記憶マネージャ。 - 【請求項19】 前記APIモジュールは、前記アプリケーションによる要求に
基づき、前記グループに含まれるメモリブロックのリストを保持するデータ構造
を作成し、動的に更新することと、 前記グループを作成し前記グループの前記コードまたはデータを変更することが
できる、 請求項18に記載する仮想記憶マネージャ。 - 【請求項20】 仮想記憶管理の目的で、1つのユニットとして扱われるアプリ
ケーションに関連するコードまたはデータのブロックを表わす一連のデータフィ
ールドであって、前記データフィールドは、前記ブロックのメモリアドレスのリ
スト及び前記リストにおける各ブロックのサイズを含み、 前記データフィールドは、データ処理オペレーションにおいて判断され、前記
ブロックの1つに含まれる場所を参照する何れかのメモリアドレスに対する不在
割り込みが生成された場合、常に前記ブロックの各々を物理メモリ内にロードす
ることを特徴とする、 データ構造を格納するコンピュータ読み取り可能なメディア。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/936,596 | 1997-09-24 | ||
US08/936,596 US6134602A (en) | 1997-09-24 | 1997-09-24 | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
PCT/US1998/016800 WO1999015962A1 (en) | 1997-09-24 | 1998-08-12 | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001517829A true JP2001517829A (ja) | 2001-10-09 |
JP4366012B2 JP4366012B2 (ja) | 2009-11-18 |
Family
ID=25468868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000513196A Expired - Lifetime JP4366012B2 (ja) | 1997-09-24 | 1998-08-12 | 仮想記憶システムにおいてアプリケーションプログラムによってコードまたはデータをグループに分類して、物理メモリの割り振りの制御を行うアプリケーション・プログラミング・インターフェイス |
Country Status (4)
Country | Link |
---|---|
US (2) | US6134602A (ja) |
EP (1) | EP1018075A1 (ja) |
JP (1) | JP4366012B2 (ja) |
WO (1) | WO1999015962A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101563659B1 (ko) | 2009-07-01 | 2015-10-27 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 집성된 소페이지들을 사용한 페이지 사이즈 확장 |
JP2017502435A (ja) * | 2013-10-27 | 2017-01-19 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 入出力メモリマップユニット及びノースブリッジ |
US10387329B2 (en) | 2016-02-10 | 2019-08-20 | Google Llc | Profiling cache replacement |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1073957B1 (en) * | 1998-03-23 | 2003-05-21 | Microsoft Corporation | Application program interfaces in an operating system |
JP2002534737A (ja) * | 1999-01-06 | 2002-10-15 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 低減されたメモリ条件でプログラムコードを実行するための装置 |
US6609186B1 (en) * | 1999-04-06 | 2003-08-19 | Microsoft Corporation | Method and system for managing data in computer memory |
US20010029607A1 (en) * | 1999-04-06 | 2001-10-11 | Microsoft Corporation | System and method for application installation management |
JP3376956B2 (ja) * | 1999-05-14 | 2003-02-17 | 日本電気株式会社 | プロセッサ間通信装置 |
JP2001079263A (ja) * | 1999-09-16 | 2001-03-27 | Sega Corp | ゲーム装置、データ処理方法、及び情報記録媒体 |
US7062779B1 (en) * | 1999-12-10 | 2006-06-13 | Sun Microsystems, Inc. | Methods and apparatus for accessing synchronized broadcast data |
US7028305B2 (en) * | 2001-05-16 | 2006-04-11 | Softricity, Inc. | Operating system abstraction and protection layer |
US9344235B1 (en) * | 2002-06-07 | 2016-05-17 | Datacore Software Corporation | Network managed volumes |
US7318141B2 (en) * | 2002-12-17 | 2008-01-08 | Intel Corporation | Methods and systems to control virtual machines |
US7826445B2 (en) * | 2003-03-13 | 2010-11-02 | International Business Machines Corporation | Message formation and distribution in heterogeneous networks |
US7653915B1 (en) | 2003-10-10 | 2010-01-26 | Emc Corporation | N X M platform combination |
US7721292B2 (en) * | 2004-12-16 | 2010-05-18 | International Business Machines Corporation | System for adjusting resource allocation to a logical partition based on rate of page swaps and utilization by changing a boot configuration file |
US7529921B2 (en) * | 2004-12-17 | 2009-05-05 | Cardiac Pacemakers, Inc. | Fast initialization of medical device system having multiple operating systems |
US7719579B2 (en) * | 2005-05-24 | 2010-05-18 | Zoran Corporation | Digital camera architecture with improved performance |
US7783686B2 (en) * | 2006-06-16 | 2010-08-24 | Microsoft Corporation | Application program interface to manage media files |
US7603387B2 (en) * | 2006-06-16 | 2009-10-13 | Microsoft Corporation | Techniques to manage media files |
AT504298B1 (de) * | 2006-09-22 | 2008-09-15 | Siemens Ag Oesterreich | Verfahren zur zuordnung einer auswahl digitaler inhalte zu einem bestimmten benutzer |
US8612643B2 (en) * | 2007-06-30 | 2013-12-17 | Microsoft Corporation | Interfaces for digital media processing |
US7772987B2 (en) * | 2007-11-08 | 2010-08-10 | Dell Products L.P. | Lighting control framework |
US20100268921A1 (en) * | 2009-04-15 | 2010-10-21 | Advanced Micro Devices, Inc. | Data collection prefetch device and methods thereof |
US20110161597A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller |
US20120266220A1 (en) * | 2010-11-17 | 2012-10-18 | Sequent Software Inc. | System and Method for Controlling Access to a Third-Party Application with Passwords Stored in a Secure Element |
WO2012109679A2 (en) * | 2011-02-11 | 2012-08-16 | Fusion-Io, Inc. | Apparatus, system, and method for application direct virtual memory management |
KR20130109426A (ko) * | 2012-03-27 | 2013-10-08 | 삼성전자주식회사 | 메모리 확장 장치 및 그것을 사용하는 휴대용 모바일 장치 |
US9009364B1 (en) | 2013-09-03 | 2015-04-14 | Xpliant, Inc. | Apparatus and method for accelerated page link list processing in a packet processor operating at wirespeed |
KR102152735B1 (ko) | 2013-09-27 | 2020-09-21 | 삼성전자주식회사 | 그래픽 처리 장치 및 이의 동작 방법 |
KR102500618B1 (ko) * | 2017-12-12 | 2023-02-16 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11561834B2 (en) * | 2019-01-16 | 2023-01-24 | Rambus Inc. | Methods and systems for adaptive memory-resource management |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4688167A (en) * | 1984-09-27 | 1987-08-18 | Wang Laboratories, Inc. | Screen manager for data processing system |
US4967353A (en) * | 1987-02-25 | 1990-10-30 | International Business Machines Corporation | System for periodically reallocating page frames in memory based upon non-usage within a time period or after being allocated |
US5125086A (en) * | 1989-06-29 | 1992-06-23 | Digital Equipment Corporation | Virtual memory paging apparatus with variable size in-page clusters |
US5394537A (en) * | 1989-12-13 | 1995-02-28 | Texas Instruments Incorporated | Adaptive page placement memory management system |
WO1992002879A1 (en) * | 1990-08-03 | 1992-02-20 | Du Pont Pixel Systems Limited | Virtual memory system |
US5386536A (en) * | 1991-03-28 | 1995-01-31 | Courts; Howard R. | Apparatus and method for managing memory allocation |
US5630097A (en) | 1991-06-17 | 1997-05-13 | Digital Equipment Corporation | Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses |
US5539899A (en) * | 1992-04-03 | 1996-07-23 | International Business Machines Corporation | System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage |
US5572694A (en) * | 1992-11-25 | 1996-11-05 | Fujitsu Limited | Virtual system for detecting access paths belonging to same group from plurality of access paths to reach device designated by command with reference to table |
US5535364A (en) * | 1993-04-12 | 1996-07-09 | Hewlett-Packard Company | Adaptive method for dynamic allocation of random access memory to procedures having differing priorities based on first and second threshold levels of free RAM |
US5499354A (en) * | 1993-05-19 | 1996-03-12 | International Business Machines Corporation | Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders |
US5606685A (en) * | 1993-12-29 | 1997-02-25 | Unisys Corporation | Computer workstation having demand-paged virtual memory and enhanced prefaulting |
DE69522534T2 (de) * | 1994-11-18 | 2002-04-25 | Compaq Computer Corp., Houston | Schneller Zugriff auf Rechneranwendungen |
US5727178A (en) * | 1995-08-23 | 1998-03-10 | Microsoft Corporation | System and method for reducing stack physical memory requirements in a multitasking operating system |
US6078942A (en) | 1996-04-25 | 2000-06-20 | Microsoft Corporation | Resource management for multimedia devices in a computer |
US5987496A (en) * | 1996-12-03 | 1999-11-16 | Mitsubishi Electric Information Technology Center America, Inc. (Ita) | Real-time channel-based reflective memory |
US5991856A (en) * | 1997-09-30 | 1999-11-23 | Network Associates, Inc. | System and method for computer operating system protection |
-
1997
- 1997-09-24 US US08/936,596 patent/US6134602A/en not_active Expired - Lifetime
-
1998
- 1998-08-12 WO PCT/US1998/016800 patent/WO1999015962A1/en not_active Application Discontinuation
- 1998-08-12 JP JP2000513196A patent/JP4366012B2/ja not_active Expired - Lifetime
- 1998-08-12 EP EP98939927A patent/EP1018075A1/en not_active Withdrawn
-
2004
- 2004-09-02 US US10/934,202 patent/US6983467B2/en not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101563659B1 (ko) | 2009-07-01 | 2015-10-27 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 집성된 소페이지들을 사용한 페이지 사이즈 확장 |
JP2017502435A (ja) * | 2013-10-27 | 2017-01-19 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 入出力メモリマップユニット及びノースブリッジ |
US10223280B2 (en) | 2013-10-27 | 2019-03-05 | Advanced Micro Devices, Inc. | Input/output memory map unit and northbridge |
US10387329B2 (en) | 2016-02-10 | 2019-08-20 | Google Llc | Profiling cache replacement |
Also Published As
Publication number | Publication date |
---|---|
US20050034136A1 (en) | 2005-02-10 |
US6983467B2 (en) | 2006-01-03 |
EP1018075A1 (en) | 2000-07-12 |
WO1999015962A1 (en) | 1999-04-01 |
JP4366012B2 (ja) | 2009-11-18 |
US6134602A (en) | 2000-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4366012B2 (ja) | 仮想記憶システムにおいてアプリケーションプログラムによってコードまたはデータをグループに分類して、物理メモリの割り振りの制御を行うアプリケーション・プログラミング・インターフェイス | |
JP4718683B2 (ja) | コンピュータ内のアプリケーションプログラム間でフォーカスが変更されたときに物理メモリの状態を復元する方法およびシステム | |
JP4160255B2 (ja) | 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス | |
US7487329B2 (en) | Page replacement policy for systems having multiple page sizes | |
US7206915B2 (en) | Virtual space manager for computer having a physical address extension feature | |
US8321638B2 (en) | Cooperative mechanism for efficient application memory allocation | |
KR0170565B1 (ko) | 메모리 관리 방법, 마이크로커널 구조 데이타 프로세싱 시스템, 운영 체제 퍼스낼리티 시스템 동작 방법, 퍼스낼리티 뉴트럴 서비스 프로그램 실행 방법 및 응용 프로그램 실행방법 | |
US6125430A (en) | Virtual memory allocation in a virtual address space having an inaccessible gap | |
US5842226A (en) | Virtual memory management for a microkernel system with multiple operating systems | |
US8453015B2 (en) | Memory allocation for crash dump | |
US5835961A (en) | System for non-current page table structure access | |
EP0887736A1 (en) | Flexible translation storage buffers for virtual address translation caching | |
US6366994B1 (en) | Cache aware memory allocation | |
US6629111B1 (en) | Memory allocation system | |
US6718445B1 (en) | System and method for performing dynamic buffer management in an HFS (hierarchical file system DF/SMS) | |
US6457107B1 (en) | Method and apparatus for reducing false sharing in a distributed computing environment | |
US7783849B2 (en) | Using trusted user space pages as kernel data pages | |
US20040073907A1 (en) | Method and system of determining attributes of a functional unit in a multiple processor computer system | |
US7853771B2 (en) | Page allocation management for virtual memory | |
JPH0564817B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050801 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080808 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080819 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20081114 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20081121 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20081218 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20081226 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090421 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090708 |
|
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: 20090728 |
|
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: 20090824 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120828 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130828 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
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 |
|
EXPY | Cancellation because of completion of term |