JP4160255B2 - 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス - Google Patents
仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス Download PDFInfo
- Publication number
- JP4160255B2 JP4160255B2 JP2000513197A JP2000513197A JP4160255B2 JP 4160255 B2 JP4160255 B2 JP 4160255B2 JP 2000513197 A JP2000513197 A JP 2000513197A JP 2000513197 A JP2000513197 A JP 2000513197A JP 4160255 B2 JP4160255 B2 JP 4160255B2
- Authority
- JP
- Japan
- Prior art keywords
- physical memory
- memory
- data
- code
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
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)
Description
技術分野
本発明は、コンピュータにおける仮想メモリの管理に関するものであり、特に、仮想記憶を使用し、同時に実行されるプログラムに対して物理メモリを共有させるコンピュータにおける物理メモリの割り振りを制御する方法に関するものである。
【0002】
発明の背景
用語「仮想メモリ」は、幾つかの同時に実行されるアプリケーションプログラムに、コンピュータの物理メモリの共有をさせる方法を示すものである。この物理メモリは、コンピュータのメインメモリを意味するものであり、コンピュータプログラムを実行するために使用され典型的にはランダムアクセスメモリ(RAM)として実装される。マルチタスキングオペレーティングシステムは、典型的には仮想メモリを使用して、コンピュータにおいて実行されるアプリケーションプログラムの各々が使用可能なメモリを拡張するものである。仮想メモリは、アプリケーションに対してより多くのメモリを与える効果を持つ。この効果を得るために、仮想記憶マネージャ(VMM)は、物理メモリのサイズよりも大きい仮想メモリスペースを用いてメモリを割り振る。このVMMは、ハードディスク等のコンピュータにおける2次記憶スペースを使用して、物理メモリの事実上のサイズを拡張する。あるアプリケーションが実際に物理メモリを必要とした時、例えばリードやライト要求を処理する場合に限り、このVMMは、コードやデータを2次記憶装置から物理メモリにロードする。
【0003】
プログラムが仮想メモリに対してリードやライトの要求をする場合、仮想記憶マネージャは、要求されたコードやデータが物理メモリにあるか、または2次記憶装置にあるかを判断する。それが物理メモリにある場合、仮想記憶マネージャは、仮想アドレスから、それが物理メモリのどこに位置するかについてを示す物理アドレスへとマップする。一方、コードまたはデータが物理メモリに無い場合、仮想記憶マネージャは、それを2次記憶装置からフェッチして、物理メモリに置く。このようにして、メモリ要求を満足させる必要に応じて、物理メモリのコードまたはデータをスワップインやスワップアウトさせることによって、仮想記憶マネージャは、アプリケーションに対する物理メモリを大きくしたように見せる。
【0004】
仮想メモリの概念を説明するために、4メガバイトの物理メモリのパーソナルコンピュータで実行されるオペレーティングシステム、及び無限のメモリスペースを追加できるハードディスクドライブ(ハードディスク駆動装置)を考えることとする。このオペレーティングシステム自身で、物理メモリを1メガバイトまで占有する。このユーザが、ハードディスクドライブから2メガバイトのゲームプログラムを起動させた場合、物理メモリを占有するメモリの合計は、約3メガバイトとなる。今、このゲームプログラムが、1メガバイトを越える追加のコードまたはデータをロードしようと試みると仮定する。これらの状況下では、コンピュータで現在実行しているプログラムに対するコードまたはデータを保持するのに十分な物理メモリは存在しない。
【0005】
VMMは、実行プログラムを稼動する必要に応じて、物理メモリとハードディスクドライブ間でコードまたはデータをスワップインやスワップアウトさせることによって、この問題を解決するものである。例えば、あるコードの特定箇所の命令が実行される場合、そのコードのその特定箇所は、コンピュータの物理メモリ内へロードされなければならない。そのコードのその他の箇所は、それらが必要となるまで、ハードディスク内にとどまることができる。コードまたはデータが物理メモリに保持されていない時は、オペレーティングシステムは、常に、そのコードまたはデータに関するフラグを設定(またはクリア)することによって、それに不在であるとマークする。その後、そのコードまたはデータに対してアクセスが試行された場合、プロセッサは、不在割り込み(not present interrupt)を生成してオペレーティングシステムに問題を通知するするであろう。このオペレーティングシステムは、それから、不在のコードまたはデータを、物理メモリの使用可能なエリア中にロードする手配を行い、割り込みを引き起こしたプログラムを再スタートさせる。コードまたはデータのハードディスクドライブにおけるスワップインやスワップアウトと割り込みは、アプリケーションプログラムが割り込みを処理せず、データのスワップインやスワップアウトを管理しないという意味において、コンピュータで実行中のアプリケーションプログラムにとってはトランスペアレントである。むしろ、アプリケーションプログラムは、仮想メモリにおける仮想メモリアドレス空間だけを扱い、オペレーティングシステムは、仮想メモリに対する要求について物理メモリをマップし、物理メモリとハードディスクドライブ間でデータをスワップインやスワップアウトをするものである。
【0006】
典型的な仮想記憶システムでは、幾つかのオペレーティングシステム・コンポーネントが、物理メモリにアクセスすることを保証され、そして幾つかのその他のソフトウェアコンポーネントが残りの物理メモリを取り合う。常に物理メモリを占有するオペレーティングシステム・コンポーネントには、オペレーテイングシステムのカーネル、及びディスクキャッシュといったメモリ常駐型コンポーネントが含まれる。残りの物理メモリは、動的にロードされるオペレーティングシステム・コンポーネント(DLL)、アプリケーションプログラムやデータ、及び、オペレーティングシステムのファイルシステムに対するダイレクト・メモリ・アクセス(DMA)バッファやキャッシュ領域のように動的に割り振られるメモリ領域、等のその他のソフトウェア間で共有する。
【0007】
常に物理メモリを占有するオペレーティングシステム・コンポーネントは、物理メモリ上に「ロック」を持つ。「ロック」は、メモリ管理システムの属性であって、コードまたはデータに対して物理メモリの確約または予約、すなわち保証を行う。そのメモリが、割り込み時に実行可能でなければならないコードの一部、または割り込み時にアクセス可能である必要があるデータの一部を含む場合、または、データがコンピュータのハードウェア装置によって非同期的にアクセスされる必要がある場合に、多くのオペレーティングシステムは、典型的には物理メモリ上にそれをロックする。
【0008】
初めに、このオペレーティングシステムは、アプリケーションプログラムに対して仮想メモリを割り振る。しかしながら、このオペレーティングシステムは、プログラムがメモリへのアクセスを試行するまでは、実際にはアプリケーションプログラムに対して物理メモリを割り振らないであろう。このシステムで実行されるコードが、アプリケーションプログラムに割り振られたメモリへのアクセスを試行すると、このオペレーティングシステムは、そこが満杯になるまで物理メモリを割り振るであろう。そして、その後、一部の物理メモリのハードディスクドライブへのスワップを開始し、メモリへのアクセスを調整する。
【0009】
この仮想記憶システムは、典型的には、スワップファイルと呼ばれるハードディスクドライブを使用し、コードまたはデータを物理メモリ上でスワップインやスワップアウトする。オペレーティングシステムは、ハードディスクドライブから直接的にアプリケーションプログラムの実行可能なコード(例えば、実行ファイル)等のコードをロードする。アプリケーションがプログラムデータへのアクセスを要求すると、オペレーテイングシステムは、物理メモリを割り振り、次に、一旦物理メモリが満杯になると、このプログラムデータを物理メモリ上でスワップインやスワップアウトする。
【0010】
実行時に、アプリケーションは、暗黙的にまたは明示的にメモリの追加を要求することができる。アプリケーションが、オペレーティングシステムに新規のウィンドウ等の資源を要求する場合に、暗黙的な要求が発生し、この資源の要求に応答する副次的な効果として、オペレーティングシステムは、メモリを割り振る。明示的な要求は、アプリケーションが直接的に機能を呼び出し、追加のメモリをアプリケーションに割り振るようにオペレーティングシステムに対して明確に要求した場合に起きる。両者の場合とも、オペレーテイングシステムは、仮想アドレススペースから資源を割り振るためにメモリを要求する。
【0011】
現在、一般的に使用される仮想記憶の形態の1つは、ページ式仮想記憶と呼ばれるものである。ページ式仮想記憶機構では、オペレーテイングシステムが、ページと呼ばれるメモリユニットを用いて、全てのメモリの割り振り、割り振り解除、スワップ処理を実行する。例えば、インテル社の386アーキテクチャ互換のマイクロプロセッサでは、メモリは4Kのページであり、各々のメモリセグメントは、4Kページから構成される。ウィンドウズ95オペレーテイングシステムは、ページ式仮想記憶システムを実現するオペレーティングシステムの一例である。
【0012】
ページ式仮想記憶機構を説明するのに一般的に使用される用語には、ページング、ページファイル、ページフォルトが含まれる。用語「ページング」は、物理メモリと2次記憶装置間におけるコードまたはデータのスワップのプロセスを示すものである。用語「ページファイル」は、2次記憶装置において維持管理され、物理メモリ上でスワップインやスワップアウトされるコードまたはデータのぺージを保持するスワップファイルを示すものである。最後に用語「ページフォルト」は、要求されたコードまたはデータを含むページが物理メモリ内に位置していないため、そのメモリ要求が物理メモリからは満足されなかったことを示すマイクロプロセッサによって生成される割り込みを示すものである。
【0013】
どのような仮想記憶システムの実施例でも、詳細は、プロセッサの設計及びメモリアドレッシング機構に依存して変わるものである。パーソナルコンピュータ業界で最も広まっているプロセッサアーキテクチャの1つは、インテル社の386アーキテクチャである。このアーキテクチャの基本的なメモリ管理機能は、インテル社の486、ペンティアム、ペンティアム▲2▼、ペンティアムプロ・マイクロプロセッサでも使用されている。この386アーキテクチャは、リアルモード、プロテクティドモード、バーチャルモードの3つのオペレーティングモードをサポートする。リアルモードは、8086系列プロセッサとの互換性を保持するために使用されるモードを指すものである。このモードは、1メガバイトのメモリまでアドレス処理できる4つのセグメントレジスタを使用するセグメント式メモリアーキテクチャを持つものである。各々のセグメントレジスタは、メモリセグメントの最初の1バイト目をポイント(point)する。アドレスレジスタは、メモリセグメントの1バイト目のオフセットアドレスを格納する。このプロセッサは、セグメントレジスタとアドレスレジスタとの内容物を組み合わせ、完全なアドレスを生成させる。
【0014】
プロテクトモードでは、このプロセッサは、セグメントレジスタの内容物を使用して、ディスクリプタ(descriptor)と呼ばれる8バイトのメモリエリアにアクセスする。このセグメントレジスタは、ディスクリプタテーブルへのインデックスを含むものである。このプロセッサは、ディスクリプタ内の情報を使用して、基底アドレス(base addess)を生成する。その後、プロセッサは、アプリケーションプログラムからのオフセットアドレスと基底アドレスとを組み合わせ、物理メモリアドレスを計算する。このモードでは、オペレーティングシステムは、セグメントとして、物理メモリのいかなる適切なエリアでも使用することができる。アプリケーションのセグメントは、連続的な場所である必要はなく、違うサイズを有することができる。
【0015】
バーチャルモードは、1つのセグメントが1メガバイトのみではなく4ギガバイトも可能であることを除いて、同じセグメントの概念を使用するという点でプロテクティドモードに似ていて、そしてこのモードによってオペレーティングシステムは仮想記憶機構を実現することができる。プロテクティドモードと同様に、バーチャルモードのプロセッサは、ディスクリプタテーブルへのインデックスとして、セグメントレジスタの内容物を使用する。このディスクリプタテーブルは、メモリセグメントの基底アドレスを指定するものである。オペレーティングシステムは、基底レジスタを設定し、コードまたはデータのセグメントの最初の1バイト目をポイントする。プロセッサは32ビットのオフセットアドレスと基底アドレスとを組み合わせて、最終的な32ビットのアドレスを計算する。
【0016】
386アーキテクチャで仮想記憶が有効になっている場合、プロセッサは、この最終的に32ビットアドレスに変換されたものを変更して、32ビット物理アドレスへのマップを行う。初期化中に、オペレーティングシステムは、プロセッサをプロテクトモードにスイッチし、その後ページングを有効にする。基底アドレスとプログラムからのオフセットとを組み合わせることで計算されるこの32ビットアドレスが、仮想メモリスペースにおけるアドレスである。
【0017】
ページングが有効化されると、プロセッサは、仮想メモリスペースにおけるこのアドレスから、物理メモリスペースにおけるアドレスへマップする。図1は、プロセッサが、アプリケーションからの32ビットアドレスをどのように変換するのかを説明するものである。上位10ビット(ビット31から22)(図1の20を参照されたい)は、ページテーブルディレクトリ(図1の22)へのインデックスである。ページテーブルディレクトリにおける32ビットの各々の部分は、ページテーブル(図1の24)をポイントするものである。元のアドレスの次の10ビット(ビット20から12)(図1の26を参照されたい)は、個々のページテーブルへのインデックスである。ページテーブルエントリ(28)の各々は、物理メモリのページをポイントするものである。仮想アドレスの残りの12ビットは(ビット11から0)(図1の30を参照されたい)、メモリ上において、このページのオフセットを生成する。
【0018】
オペレーテイングシステムは、実行中のプログラムに対するページテーブルディレクトリのアドレスをCR3(32)と呼ばれる特別なプロセッサレジスタ内に格納する。新しいプログラムに対してオペレーティングシステムがページディレクトリをポイントすることができるように、オペレーティングシステムがタスクをスイッチするときは、毎回、CR3を再ロードする。仮想アドレスを物理アドレスへマッピングするプロセスは、プロセッサによって実行される。メモリキャッシング技術は、頻繁に使用されるページテーブルエントリが追加のメモリ参照することなく使用可能であることを保証する。
【0019】
仮想記憶機構を完全にサポートするためには、ページテーブルエントリは、ページテーブルまたは物理アドレスへのポインタだけでなく、それ以外のものも含むものである。図2は、ページテーブルディレクトリ及びページテーブル構造(図2のアイテム40と42を参照されたい)内における1つの32ビットワードの内容物を示すものである。ページテーブルディレクトリ及び各ページテーブルは、1つの4Kメモリページ(各々に1024エントリ)を消費する。これは、全体で4GBのプログラムアドレススペースを適切にアドレス処理させる。ページテーブルディレクトリ内のフラグビットによって、システムがページングファイルのあるディスク上へページテーブルを格納することを許される。このようにして、大きなプログラムに対して(例えば、256ページのページテーブルを必要とする1GBのプログラム)、システムは、コードやデータのページと同様に、物理メモリ上でページテーブルをスワップインやスワップアウトするであろう。
【0020】
仮想記憶処理及び386メモリ保護システムを完全にサポートするためには、ページディレクトリ及びページテーブルエントリには幾つかのフラグビットを含ませる必要がある。プロセッサ自身は、これらのフラグビットの幾つかを直接変更する。オペレーティングシステムはその他について管理する。図2に示すように、これらのフラグは次のビット:D、A、U/S、R/W、及びPを含むものである。
【0021】
プログラムがメモリページの内容物を変更した場合は、プロセッサは常に、対応するページテーブルにダーティ・ビット(図2のDビット)をセットする。このことは、メモリからページを削除して、スペースを開放したい場合には、最初にページをディスク上に書き出して、変更を保持しなければならないことを意味する。
【0022】
リード、ライト、或いは実行等のページへの何らかの参照によって、プロセッサは、対応するページテーブルエントリ内のアクセスビット(図2のAビット)をセットする。仮想記憶マネージャは、このフラグを使用して、ページがどのくらいの頻度でアクセスされたかを判断することができる。ページがどのくらいの頻度でアクセスされたかを知る1つの方法は、このビットをセットし、定期的にチェックし、そのページがアクセスされたか否かを判断する方法である。使用の頻度が低いぺージのアクセスビットは、ハードウェアがアクセスビットをセットしない限り、変更されないであろう。同じ周期で確実に使用されるページを削除するよりも、このようなページをメモリから削除することは、懸命な選択である。ウィンドウズ95(登録商標)オペレーティングシステムは、リースト・リーセントリ・ユーズド(LRU)として知られるアルゴリズムを使用して、どのページをメモリから削除するかを決定する。最も新しく参照されたページほど、そのページは再割り振りされにくくなる。
【0023】
テーブルエントリによってアドレス処理されるページテーブルまたはメモリページが、実際にメモリ内に存在する場合のみ、プレゼント(present)ビット(Pビット)を1にセットする。不在のページまたはページテーブルの参照が試行された場合、プロセッサは、不在割り込みを生成し、オペレーティングシステムは、ページをメモリにロードする手配しなければならず、そしてそのページを必要とするプログラムを再スタートさせる。
【0024】
ユーザ/スーパバイザ・ビット(U/Sビット)は、386の全体的な保護システム部である。U/Sビットが0にセットされた場合、このメモリページはスーパバイザページであり、即ち、オペレーティングシステム自身のメモリ部であり、ユーザレベルのプログラムはそのページにアクセスすることができない。この部分への何らかのアクセスによって、オペレーティングシステムが取り扱わなければならない割り込みを引き起こされる。
【0025】
リード/ライト ビット(R/Wビット)によって、対応するメモリページへのアクセスを望むプログラムが、そのページの内容物を変更できるか否かを判断する。値1の場合は、ページ内容物の変更が許される。値0の場合は、いかなるプログラムであっても、ページ内のデータの変更が許されない。通常、コードを含むページは、読み取り専用ぺージとしてセットされる。
【0026】
上述したメモリアドレッシング機構によって、オペレーティングシステムは仮想記憶システムを実現できる。現代のオペレーティングシステムにおける制限の1つとしては、仮想記憶が有効となっている場合に、どのように物理メモリが割り振られるかを制御してアプリケーションに柔軟性を与えることができないことである。典型的には、アプリケーションプログラムは、仮想メモリスペースのみにアクセスを行い、どのようにオペレーティングシステムが物理メモリを割り振るかを、殆ど、または全く制御することはない。スワッピングアルゴリズムを実行する場合には、典型的には仮想記憶システムは、1回のページフォルトの応答として少量のページをロードする。アプリケーションプログラムがその他の仮想メモリの部分へのアクセスが発生し、もっとページフォルトが引き起こされる傾向があるため、これでは十分ではない。ハードディスクドライブからデータをロードする待ち時間のため、繰り返されるページフォルトは、アプリケーションのパフォーマンスを低下させる。即ち、アプリケーションは、オペレーティングシステムによって実行に必要なコードまたはデータをロードされるのを待つ。マルチメディア及び高度にインタラクティブなアプリケーションでは、この待ち時間は、ディスプレイ上の映像オブジェクトの動きを悪くさせたり、ユーザの入力に対する応答の欠落として現れ得る。例えば、オペレーテイングシステムがページフォルトを処理している場合に、ゲームプログラムの処理は、悪くなるであろう。
【0027】
上述したように、マイクロソフト社のウィンドウズ95Rオペレーティングシステム等の幾つかのオペレーテイングシステムは、LRUアルゴリズムを使用して、物理メモリ上でページのスワップインやスワップアウトを制御して、仮想記憶を実現する。一般的なルールとして、この仮想記憶システムは、オペレーティングシステムの動的にロードされたコンポーネントのページ、及びアプリケーションプログラムの全てのページに同じ優先度を与える。このようにして、ゲームアプリケーションが、アクティブ状態でなくなった場合、オペレーティングシステムは、そのページを物理メモリからスワップアウトし易い状態となる。このアプリケーションが再びアクティブ状態になった場合、オペレーティングシステムが物理メモリにページを徐々にスワップインするため、ディスプレイ上のオブジェクトの動き及びユーザ入力に対するゲームの応答性が、悪くなってしまう。
【0028】
この問題を解決する1つの方法は、その他のコードがその物理メモリ部へアクセスしないように、アプリケーションに割り振られた物理メモリをロックすることである。例えば、ウィンドウズRオペレーティングシステムでは、アプリケーションは、物理メモリの一部に対してページロックを要求することができる。このページロックによって、オペレーティングシステムは、物理メモリの一部を確実に予約して、その他の実行中のコードが使用可能な物理メモリのグループから、その物理メモリを削除する。物理メモリにアクセスする必要がある同時に実行されるアプリケーションが、物理メモリ上におけるその他のアプリケーションのロックのために物理メモリにアクセスできないという点で、システムパフォーマンスの極度の低下を招きかねないという理由によって、これは許容し得る解決策ではない。
【0029】
発明の概要
本発明は、仮想記憶システムにおいて物理メモリの割り振りを、アプリケーションプログラムに制御させる方法である。本発明の一側面は、同時に実行中のアプリケーションプログラムに、このアプリケーションによって指定されたコードまたはデータに対して物理メモリのソフトロックを、要求させるものである。この場合、ソフトロックとは、アプリケーションがフォーカスを失った時、或いはオペレーティングシステムのコンポーネントのような高優先度のプロセスが、物理メモリにアクセスする必要がある場合等の一定の条件の下でロックを上書きできることを意味する。
【0030】
本発明の他の側面は、アプリケーションに、その使用するコードまたはデータの優先度のレベルを指定させ、仮想記憶システムが物理メモリから2次記憶装置へスワップさせるメモリユニット(例えばページ)の順序を決定することである。例えば、アプリケーションは、コードまたはデータ構造の部分を頻繁に使用するであろう、或いは最も頻繁に使用するであろう、と指定することができる。その後、仮想記憶システムは、計算した優先度ではなく、この明示優先度を使用して、どのメモリのユニットを2次記憶装置にスワップさせるかを決定する。これは、使用可能なメモリのグループからメモリユニットが削除されないようなソフトロックとは異なる。このAPIを介して、アプリケーションは、仮想記憶システムによって計算された優先度のレベルを上書きすることができ、そして指定されたコードまたはデータが物理メモリに残る機会を増加させることができる。
【0031】
本発明の実施例の1つは、マルチタスキング・オペレーティングシステムにおける仮想メモリに対するアプリケーション・プログラミング・インターフェイス(API)であって、これによって、アプリケーションは、コードまたはデータに対する物理メモリへのアクセスの優先度を指定することを許される。API機能コールの1つによって、アプリケーションは、物理メモリ上のソフトロックを持つであろうコード及びデータを指定する。このソフトロックを要求したアプリケーションがフォーカス(focus)を持つ間、この指定されたコードまたはデータは、物理メモリ上にロックを有するであろう。このアプリケーションがフォーカスを失った時、このAPIはメモリ上のロックを開放するであろう。しかし、物理メモリ上にソフトロックで保持されたコードまたはデータの部分であることを示す状態情報は保持される。このアプリケーションがフォーカスを回復した時、このAPIによって、物理メモリマネージャが、ソフトロックされたページに関するコードまたはデータを、物理メモリ内へ再ロードさせる。
【0032】
ソフトロックが有効である間は、所定の条件を検知した時に、オペレーテイングシステムは、ロックを上書きすることができる。これらの所定の条件には、使用可能な物理メモリ量が閾値以下になる場合、或いは高優先度のプロセスが物理メモリにアクセスする必要がある場合を含むものである。メモリモニタは、これらの条件を検知すること、及びソフトロックを開放する責任を有する。1つの具体的な実施例では、このメモリモニタは、ソフトロックされているメモリを部分的に開放することによって、ソフトロックを徐々に開放する。
【0033】
第2API機能コールによって、アプリケーションは、物理メモリに対してより高い優先度を持つであろうコードまたはデータを指定する。このAPIは、物理メモリマネージャとの関連で使用されるものであって、あるコードまたはデータが物理メモリから次記憶装置へスワップアウトされることを起こりにくくさせる。
【0034】
上述のように要約されたメモリ管理方法及びAPIによって、多くの利点が提供される。APIを使用して、物理メモリの割り振りを制御し、メモリ要求に応答して発生するページフォルトの機会を減少させることができるため、アプリケーションプログラムはより良いパフォーマンスを得ることができる。このソフトロックは、オペレーティングシステムがソフトロックを上書きすることができるため、あるアプリケーションが、その他のアプリケーション及びオペレーティングシステムコンポーネントのパフォーマンスを低下させることを、防止することができる。
【0035】
本発明における追加の機能及び利点は、後述する詳細な説明及び添付の図面でより明確となるであろう。
【0036】
詳細な説明
本発明は、アプリケーションによって、仮想記憶システムにおける物理メモリの割り振りを制御させる方法及びシステムを目的とするものである。実施例の1つでは、本発明は、ワシントン州レッドモンドのマイクロソフト社により市販されるウィンドウズ95(登録商標)オペレーティングシステム用のアプリケーション・プログラミング・インターフェイス(API)に本発明を適用する。簡単に説明すると、このAPIは、オペレーティングシステムが物理メモリへのアクセスをどのように管理するかを、アプリケーションによって制御させる一連の機能或いはAPIコールを提供するものである。
【0037】
図3及び下記の説明は、本発明を具体化するのに適したコンピューティング環境の簡単で一般的な説明の提供を意図するものである。本発明を、パーソナルコンピュータで実行されるコンピュータプログラムにおけるコンピュータ実行可能な命令の一般的な文脈で説明することとなるが、当業者は、本発明がその他のプログラムモジュールとの組み合わせでも実現することができることを理解するであろう。一般的に、プログラムモジュールは、個々のタスクを実行する、或いは個々の論理的なデータタイプを実施するルーチン、プログラム、コンポーネント、データ構造等を含むものである。更に、当業者は、本発明が、その他のハンドヘルドの装置、マイクロプロセッサシステム、マイクロプロセッサ型の或いはプログラム可能な大衆家電製品、ミニコンピュータ、メーンフレームコンピュータ等を含むコンピュータシステムの構成で実施することができることを、理解するでであろう。また、本発明は、通信ネットワークを介して接続されるリモート演算装置によってタスクが実行される分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラムモジュールを、ローカル及びリモートの両方の記憶装置に置いても良い。
【0038】
図3は、本発明の処理環境を提供するコンピュータシステムの例を説明するものである。このコンピュータシステムは、演算ユニット121と、システムメモリ122と、システムメモリを含む様々なシステムコンポーネントと演算ユニット121とを相互接続するシステムバス123と、を有するパーソナルコンピュータ120を含むものである。このシステムバスには、メモリバス、メモリコントローラ、周辺機器バス、及びPCI、VESA、マイクロチャネル(MCA)、ISA、EISA等のバスアーキテクチャを使用するローカルバスを含む何らかの幾つかのバス構造のタイプを含ませることもできる。このシステムメモリは、読み取り専用メモリ(ROM)124、ランダムアクセスメモリ(RAM)125を含むものである。起動時等の場合に、パーソナルコンピュータ120の要素間で情報の伝達を助ける基本ルーチンを含む基本入出力システム126(BIOS)は、ROM124に格納される。更に、このパーソナルコンピュータ120は、ハードディスクドライブ127、磁気ディスクドライブ128、例えば、読み書きできるリムーバブルディスク129、光学ディスクドライブ130、読み取り用にCD−ROMディスクドライブ131、或いは読み書きできるその他の光学メディアをも含むものである。このハードディスクドライブ127、磁気ディスクドライブ128、及び光学ディスクドライブ130は、そらぞれハードディスクドライブインターフェイス132、磁気ディスクドライブインターフェイス133、光学ディスクドライブインターフェイス134によって、システムバス123に接続されている。これらのドライブ及びこれらに関するコンピュータ読み取り可能なメディアは、パーソナルコンピュータ120に対して、データ、データ構造、コンピュータ実行可能な命令(ダイナミックリンクライブラリ、実行ファイル等のコード)等の不揮発性の記憶装置を提供する。上記ではハードディスク、リムーバブル磁気ディスク、CDと呼ばれるコンピュータ読み取り可能なメディアの説明をしたが、これには、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ等のような、その他のタイプのコンピュータ読み取り可能なメディアも含むことができる。
【0039】
ドライブ及びRAM125には、多数のプログラムモジュールを格納することができ、これには、オペレーテイングシステム135、アプリケーションプログラム136、その他のプログラムモジュール137、及びプログラムデータが含まれる。ユーザは、キーボード140及びマウス142等のポインティングデバイスを介して、コマンド及び情報を、パーソナルコンピュータ120に入力することもできる。その他の入力装置(図には示さず)としては、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含むこともできる。これらの及びその他の入力装置は、しばしば、システムバスに接続されるシリアルポートインターフェイス146を介して演算ユニット121に接続されるが、パラレルポート、ゲームポート、或いはユニバーサルシリアルバス(USB)等のその他のインターフェイスに接続することもできる。モニタ147或いはその他のタイプのディスプレイ装置も、ビデオアダプタ148等のインターフェイスを介してシステムバス123に接続される。このモニタに加えて、パーソナルコンピュータは、典型的には、スピーカ及びプリンタ等のその他の周辺出力装置(図には示さず)を含むものである。
【0040】
このパーソナルコンピュータ120は、リモートコンピュータ149等のリモートコンピュータの論理的な結合を使用するネットワーク環境で動作させることもできる。このリモートコンピュータ149は、サーバ、ルータ、端末、或いはその他の一般的なネットワークノードとすることができ、典型的には、パーソナルコンピュータ120に関して説明される多くの要素或いは全ての要素を含むものであるが、図3においては記憶装置150のみを図示する。図3で図示される論理的な結合は、ローカルエリアネットワーク(LAN)151、ワイドエリアネットワーク(WAN)152を含むものである。このようなネットワーキング環境は、オフィス、企業間広域コンピュータネットワーク、イントラネット、インターネットでは一般的なものである。
【0041】
LANネットワーキング環境で使用する場合、このパーソナルコンピュータ120は、ネットワークインターフェイスまたはネットワークアダプタ153を介してローカルネットワーク151に接続される。WANネットワーキング環境で使用する場合、典型的には、このパーソナルコンピュータ120は、モデム54、またはインターネット等のワイドエリアネットワークを介して通信を確立させるその他の手段を含むものである。このモデム154は、内部または外部装置とすることができ、シリアスポートインターフェイス146を介してシステムバス123に接続される。ネットワーク環境では、パーソナルコンピュータ120、またはその中の一部に関して図示されるプログラムモジュールは、リモート記憶装置に格納することができる。示されたネットワーク接続が、典型的なものであり、コンピュータ間で通信リンクを確立させるその他の手段を使用することもできることは理解されるであろう。
【0042】
本発明の実施例の1つは、同時に実行されるアプリケーションプログラムに、仮想記憶管理システムがどのように物理メモリを割り振るかを制御させるマルチタスキング・オペレーティングシステム用のAPIである。オペレーテイングシステムがどのように物理メモリを割り振るかを制御するために、アプリケーションは、API機能を呼び出し、制御したいコードまたはデータを指定し、物理メモリ内に存在しなければならないであろう優先度を示す優先度パラメータを提供する。オペレーティングシステムは、アプリケーションが優先度を指定したコードまたはデータを監視し続け、優先度を使用して、コードまたはデータを物理メモリからスワップアウトするか否か、またはハードディスクドライブに戻すか否かを判断する。
【0043】
本実施例のAPIでは、2つの優先度レベルがある。
1) ソフトロックされたコードまたはデータ
2) 頻繁に使用されるコードまたはデータ
【0044】
これら両者の優先度レベルは、アプリケーションが、その他の同時に実行されるアプリケーションプログラムに比べて、物理メモリに優先的にアクセスする優先度レベルを設定する方法を提供する。
【0045】
第1優先度レベルのソフトロックは、指定されたコードまたはデータを物理メモリ上にロックし、これを、ロックを要求されたアプリケーションプログラムの状況に応じて変更することができる。具体的には、そのアプリケーションがフォーカスを有している限り、オペレーティングシステムは、指定されたコードまたはデータに対して物理メモリを、割り振り、予約する。このフォーカスとは、コンピュータで実行中のアプリケーションを指すものであり、即ち、現在活動中であって、ユーザからの何らかの入力を応答待ちしている状況を指す。ウィンドウズRオペレーテイングシステムでは、そのウィンドウの1つが活動中であって、キーボード上のキーを押下したり、或いはマウスボタンをクリックしたりする等のユーザからの入力を受け取る場合、アプリケーションはフォーカスを持つ。ユーザは、ALTキーとTABキーとを同時に押下することによって、或いはドロップダウンメニューから新タスクを選択することによって、フォーカスを変更できる。
【0046】
アプリケーションがフォーカスを持つ場合、指定されたコードまたはデータは、全ての他の実行中のアプリケーションプログラムを考慮しながら物理メモリ上にロックを持つ。このソフトロックは、オペレーティングシステムが、物理メモリをその他のアプリケーションに対して割り振るために、物理メモリに存在する指定されたコードまたはデータをハードディスクドライブにスワップされることを防止させる。しかしながら、一定の状況においては、オペレーティングシステムは、ソフトロックを上書きすることができる。オペレーティングシステムは、より高い優先度のコードが物理メモリにアクセスを要する場合に、ソフトロックを上書きする。
【0047】
このアプリケーションがフォーカスをなくした時、オペレーティングシステムが、ハードディスクドライブにこのコードまたはデータをスワップすることができるように、オペレーティングシステムは、物理メモリ上にロックされたコードまたはデータを開放する。このロックされたコードまたはデータを開放するためには、仮想記憶システムが、これらのページをハードディスクドライブにスワップアウトして、必要に応じてその他のコードまたはデータに対して物理メモリを割り振りができるように、オペレーティングシステムは、それを格納するメモリのページに関する状態情報を変更する。
【0048】
このソフトロックのAPI機能では、アプリケーションがソフトロックを要求したメモリ区画のリストを格納する。このアプリケーションがフォーカスを回復した場合、オペレーティングシステムは、リストを使用し、そのリストがあれば、どの指定されたコードまたはデータの部分を物理メモリへ再ロードするかを決定する。フォーカスを再回復した後、かつアプリケーションが再開する前に、オペレーティングシステムは、一回でこれらの全ての部分を再ロードする。
【0049】
第2優先度レベルは、具体的にフォーカスとは結びついていない。アプリケーションがコードまたはデータに対して「頻繁に使用される」優先度レベルを指定した場合、これによって、オペレーティングシステムは、コードまたはデータに対して明示的に優先度の値を割り振る。オペレーティングシステムが、物理メモリの区画をハードディスクドライブへスワップアウトする必要がある場合、優先度の値に基づきどの区画を移動すればよいのかを判断する。この頻繁に使用される優先度レベルによって、アプリケーションは、オペレーティングシステムがスワッピングアルゴリズムで計算した優先度を上書きさせる。
【0050】
物理メモリの割り振りを管理しながら、オペレーティングシステムは、物理メモリ上でメモリ区画のスワップインやスワップアウトを制御するのに使用されるスワッピングアルゴリズムに基づいて物理メモリを占有する全てのコードまたはデータに優先度を割り当てる。ウィンドウズ95Rオペレーティングシステムにおける本実施例では、仮想記憶システムで共有される物理メモリ部を形成する全てのコードまたはデータの優先度は、リースト・リーセントリ・ユーズド・アルゴリズムに基づき割り当てられる。オペレーティングシステムは、どのくらいの頻度で各々のページがアクセスされたかを評価し、この情報に基づきデフォルトの優先度を割り当てる。アプリケーションがコードまたはデータが頻繁に使用されるものであると指定した場合、オペレーティングシステムは、デフォルトの優先度を、人工的に作られたもので上書きし、そして指定されたコードまたはデータをは頻繁にアクセスされたもののように見せる。
【0051】
本実施例によって、アプリケーションは上述した2つの優先度レベルを指定することができるが、更に、同じような手法を使用して、追加の優先度レベルを作ることも可能である。例えば、リースト・リーセントリ・ユーズド方式では、オペレーティングシステムは、どのくらい最近に、或いは、どのくらいの頻度で仮想メモリがアクセスされたかを示すパラメータ値を調節することによって、特定のコードまたはデータの優先度レベルを変更することができる。スライド式の優先度の基準は、低い値(リースト・フリークエントリ・ユーズドを意味する)から始まり、最も高い値(モースト・フリークエントリ・ユーズド)まで続くある幅で調節可能な優先度値を作ることによって確立される。オペレーティングシステムにおけるメモリマネージャは、この基準の低位におけるページを一番スワップしやすく、基準の上位におけるページを一番スワップしにくい。
【0052】
本実施例では、アプリケーションは、API機能コールを呼び出してコードまたはデータのアドレスとサイズを指定することによって、特定のコードまたはデータに対して優先度を指定する。コードに関しては、アプリケーションは、アプリケーションのソースコード上で機能名を指定することができ、これは黙示的に実行コードのアドレスを提供する。データに関しては、アプリケーションは、構造のサイズと同様に、データ構造のポインタを指定することができる。
【0053】
図4は、メモリの割り振りを制御するAPIの操作を説明する図である。これらアプリケーションは、コンピュータ内で同時に実行されるアプリケーションを代表するものであって(app1-3)(161〜163)、コンピュータの物理メモリを共有する。これらのアプリケーションは、API機能164の機能を呼び出すことによって物理メモリの割り振りを制御する。API機能に付属する説明及び具体的な実施例については、下記の通りである。
【0054】
このAPI機能164は、オペレーティングシステム内でフォーカスを監視するメモリモニタ165を含むものである。それは、あるアプリケーションから他のものに、フォーカスが変更されたことを示すウィンドウズRオペレーティングシステムからのメッセージ(例えばメッセージ166)をトラップする。実施例の1つは、オペレーティングシステムからアプリケーションのウィンドウに対して出されたユーザからの入力を待つメッセージをトラップする。これらのメッセージは、どのアプリケーションが活動中であって、現在、ユーザからの入力の応答待ちしていることを示すものである。その他の実施例は、オペレーティングシステムのサービス、即ちシェルフック(shell hook)を使用して、あるアプリケーションから他のものへのフォーカスの変更についての通知を受け取る。
【0055】
図4に示す実施例では、図は、あるアプリケーション(app.1)に割り振られた仮想アドレススペース170の例を説明する。このマークされた区画172−178は、このアプリケーションがソフトロックを要求したコードまたはデータに関する仮想メモリを表わすものである。アプリケーションがソフトロックを要求した時、このAPI機能は、この指定されたコードまたはデータに割り振られた仮想メモリの区画を識別する。それは、この指定されたコードまたはデータに割り振られた仮想メモリの区画を並べるデータ構造190を作る。指定されたコードまたはデータの位置とサイズを格納するこの構造190から、API機能は、コードまたはデータを格納するために使用される具体的なメモリユニットを計算する。この実施例は、386アーキテクチャのページング機構用に設計されたものであり、そして、このようにしてメモリのユニットは4Kのページからなる。このAPI機能は、指定されたコードまたはデータに応じてページを計算する。
【0056】
アプリケーションが、初めにソフトロックを呼び出した場合、API機能は、物理メモリマネージャ194に、指定されたコードまたはデータに対すして物理メモリを割り振るように指示する。物理メモリマネージャは、構造190から計算されるページリスト192を使用して、まだロードされていない相当するコードまたはデータの区画を物理メモリへロードする。
【0057】
この実施例では、物理メモリマネージャ194は、ウィンドウズR95オペレーティングシステムの一部である。それには、メモリモニタにメモリのブロックをロックまたはアンロックさせる一連の機能が含まれる。これらのメモリのブロックは、コードまたはデータを格納するために使用されるページの範囲に対応するものである。
【0058】
メモリモニタ165は、フォーカス及び物理メモリ割り振り状況を監視することによってソフトロックを管理する。アプリケーション1がフォーカスをなくしたとき、メモリモニタ165は、そのアプリケーションに関連するデータ構造190及びページリスト192を保持する。このメモリモニタは、フォーカスの変更状況を監視する。アプリケーション1が、フォーカスを回復した場合、このメモリモニタは、物理メモリマネージャ194の適切な機能を呼び出し、構造190内に格納されるメモリ区画に対応するページリストの再ロード、再ロックを行う。応答で、物理メモリマネージャは、そのリスト中のページの状況を検査し、そして、ハードディスクドライブへスワップアウトされていたものを再ロードする。また、それは、全てのソフトロックされたページの状況をロックされたものとマークする。物理メモリマネージャ194は、ソフトロックされたコードまたはデータの部分を、2次記憶装置(即ち、コンピュータにおけるハードディスクドライブ)にスワップさせることができることに留意されたい。その他の部分は、依然として物理メモリ内(コンピュータにおけるRAM)に保持されても良い。このメモリモニタは、アプリケーションが実行を再開する前に、ソフトロックされたコードまたはデータの全てが、物理メモリ内に戻され、ロックされることを保証する。
【0059】
ウィンドウズ(登録商標)95オペレーティングシステムの物理メモリマネージャは、活動中のページの各々に対して、ページディスクリプタ構造を格納する。この構造は、物理メモリ及びハードディスクドライブ間でページを移動するために使用されるルーチンのアドレスを保持する。また、この物理メモリマネージャは、ページをロック及びアンロックさせるサービス(機能コール)を含むものである。メモリモニタは、物理メモリマネージャのこれらのサービスを使用して、ページをロード、ロック、アンロックする。
【0060】
一旦、ソフトロックが回復した場合、アプリケーションは実行を再開する。実施例として、このアプリケーションが、図4の符号180と印を付けられた命令の実行を再開すると仮定する。このアプリケーションが、この命令の実行を再開する前に、メモリモニタ165は、物理メモリマネージャ194に区画1−4を再ロックさせることを指示する。その後、この物理メモリマネージャは、物理メモリに存在しない区画1−4のページをロードし、区画1−4の全てのページをロックされたものとしてマークする。アプリケーションがどこで実行を再開するかに拘わらず、同様の方法でソフトロックが回復されることを、メモリモニタが保証することに留意されたい。たとえ、アプリケーションがソフトロックされていない区画においてコードの実行を再開するとしても、このメモリモニタは、物理メモリマネージャを呼び出し、ソフトロックされたコードまたはデータに関連するページの全てをロード及びロックさせる。
【0061】
アプリケーションがフォーカスを回復した場合におけるソフトロックの操作は、アプリケーションが実行を再開した場合に、典型的には命令の近くのコード部分だけを再ロードする従来のオペレーティングシステムを改良するものである。これは、アプリケーションがこの命令の近くに位置しないその他のコードまたはデータ部分にアクセスするため、過度なページフォルトの機会を増加させる傾向がある。このソフトロックでは、アプリケーションは、ページフォルトなしで、指定されたコード及びデータのグループ全体に対する物理メモリへのアクセスを保証される。
【0062】
本実施例のソフトページロックでは、何らかのより優先度の高いタスクのために、追加の物理メモリを開放する必要があると考えられる場合、オペレーティングシステムは、ソフトページロックを上書きすることができる。従って、アプリケーションは、割り込みサービス、或いはDMAバッファのために、ソフトページロックで指定したメモリを使用することができない。
【0063】
メモリモニタは、物理メモリの割り振り状況を監視し、オペレーティングシステムがソフトロックを上書きする場合に、ソフトロックを開放するプロセスを管理する。物理メモリマネージャ194は、メモリモニタ165にソフトロックを開放する必要についての状況を通知する。これを遂行するための1つの方法は、使用可能な物理メモリ量を監視し、使用可能なメモリが所定の閾値を越えた場合にメモリモニタへメッセージを送る方法である。
【0064】
その他の方法としては、高優先度のプロセスがメモリへのアクセスを試行した時に、十分に使用可能な物理メモリが無く、高優先度プロセスを満足させることができない場合にメモリモニタへメッセージを送る方法がある。オペレーティングシステムは、プロセスが高優先度であるか否かを定義する。優先度は、予め割り当てられるか、または動的(実行時)に決定することができる。プロセスの優先度を割り当て方法の1つは、そのプロセスのスケジューリング優先度を使用する方法である。オペレーティングシステムのスケジューラがどのくらいプロセッサ時間を割り当てるかということに関して、そのプロセスが高優先度を持つ場合、物理メモリへのアクセスについても高優先度を持つ。例えば、ウィンドウズR95のようなプリエンプティブなマルチタスキングオペレーティングシステムでは、割り振られたCPU時間を得るために、背景プロセスに高優先度を割り当てることもできる。本実施例では、高優先度の背景プロセスが物理メモリの要求を行い、使用可能な物理メモリが十分でない場合、物理メモリマネージャ194は、メモリモニタ165に通知するであろう。その後、このメモリモニタは、ソフトロックされたメモリの全ての、または幾つかの部分を開放するであろう。
【0065】
ソフトロックされたメモリの部分を開放するためには、メモリモニタ165は、LRUアルゴリズムを使用して、どの部分をはじめに開放するかを判断する。このLRUは、物理メモリマネージャが物理メモリ及び2次記憶装置間でページをスワップインやスワップアウトさせるために使用して仮想記憶を実現させるLRUアルゴリズムとは別のものであることに留意されたい。物理メモリマネージャが通知し、ソフトロックを上書きする場合、このメモリモニタは、このLRU機構を使用して、ソフトロックされたメモリのグループからページを選択し、開放する。開放されたページは、正当なコードまたはデータを含むこともあるため、それは、物理メモリマネージャが、物理メモリ及び2次記憶装置間でスワップインやスワップアウトすることができるページのグループに戻される。
【0066】
この実施例では、LRU方式を使用して、ソフトロックされたメモリのどの部分をはじめに開放するかを決定するが、その他の手法も同様に使用することができる。例えば、メモリモニタは、ソフトロックを要求したアプリケーションのソフトロックされたメモリの全てを開放することもできる。この場合、ソフトロックされたページの全ては、仮想記憶機構の対象になり、物理メモリに対する要求を満足させる必要に応じて、2次記憶装置にスワップすることができる。
【0067】
物理メモリの状態は、ロックされた状態、及び使用可能な状態という2つのグループに分類される。コードまたはデータの一部が物理メモリ上にロックを持つ時、それに割り振られた物理メモリは、常にロックされる。使用可能なメモリは、ロックされておらず、ロック或いはメモリへのアクセスを試行するプロセスに割り振られる準備ができている物理メモリの全ての区画を含むものである。物理メモリマネージャは、どの物理メモリの部分がロックされていないかを判断し、この使用可能なメモリを使用可能なメモリのグループに割り当てることによって、使用可能な物理メモリの量を判断する。
【0068】
マルチタスキングオペレーティングシステムでは、時々、アプリケーションがロックすることができる物理メモリの量を制限する必要がある。物理メモリ上のアプリケーションのロックの影響は、同時に実行中のアプリケーションのタイプと数に依存して変化するため、ある1つのアプリケーションがロックすることができる物理メモリの最大量を、エンドユーザに、調節させることは有益である。ウィンドウズ(登録商標)95オペレーティングシステムにおいてこの機能を実現するための方法は、例えば、ユーザに、1つのアプリケーションがロックすることができる使用可能な物理メモリ量を調節させることである。オペレーティングシステムが、オペレーティングシステムのコンポーネントに対してメモリをロックした後の使用可能な物理メモリのパーセンテージとしてこの調節可能な量を、指定することができる。また、この調節可能な量は、1つのアプリケーションがロックすることができる最大のRAMの量をメガバイトで指定することもできる。ウィンドウズ(登録商標)オペレーティングシステムでは、この機能は、マウスのようなカーソル制御装置からの入力に応答するスライダーバー(slider bar)のようなグラフィカル制御として実現することができる。例えば、ユーザは、マウスを上下させることでスライディングバーを調節することによって、1つのアプリケーションがロックすることができる物理メモリの最大のパーセンテージ(またはRAMのメガバイトの量)を調節することができる。
【0069】
物理メモリをロックするこの制限を強制するために、物理メモリマネージャは、各々のアプリケーションがロックしたメモリの量を監視し、あるアプリケーションが最大量を越えるメモリのロックを試行した場合にエラーを返す。この物理メモリマネージャは、アプリケーションズ・プロセス・アイデンティファイア(PID)によって、1つのアプリケーションに割り振られた物理メモリの量を監視する。それは、PIDと一緒に、各プロセスによってロックされたメモリの量を格納する構造を保持するものである。あるアプリケーションが物理メモリの一部をロックすることが許される前に、物理メモリマネージャは、そのアプリケーションによってロックされるメモリ量が最大量を超える要求であるか否かを判断する。
【0070】
物理メモリをロックする上での制限は、ロック及びソフトロックに適用される。しかしながら、オペレーティングシステムは、ソフトロックを上書きすることができるため、物理メモリマネージャは、ソフトロック上に同じ制限を適用しないようにさせることができる。例えば、あるプロセスが、ロックを要求し、そのロックの結果、そのプロセスによってロックされたメモリの合計量が、最大値を越えた場合、その後、物理メモリマネージャはエラーを返すであろう。その後、同じプロセスが、同じメモリの量のソフトロックを要求した場合、物理メモリマネージャは、要求時に十分に使用可能な物理メモリが存在するものと考えて、その要求を承諾する。より高優先度のプロセスが物理メモリにアクセスする必要がある場合にソフトロックを上書きすることができるため、この物理メモリマネージャは、この要求を承諾することができる。
【0071】
図5は図4の実施例が「頻繁に使用される」優先度レベルをどのようにしてサポートするのかについて説明する図である。アプリケーションは、コードまたはデータに対して、この優先度レベルを要求することができ、これはソフトロックを要求するのと同じ方法で指定する。API機能コールを呼び出した時、このアプリケーションは、優先度レベル、コードまたはデータの位置、及びコードまたはデータのサイズを指定する。図5に示す実施例では、アプリケーションは、第2優先度レベルを有することとなる仮想メモリの3つの区画(200、202、及び204)を指定している。このアプリケーションは、そのコールに関するコードまたはデータの開始アドレスのポインタ及びそのサイズを与える。
【0072】
応答で、このAPI機能164は、第2優先度レベルを持つコードまたはデータの監視を続ける構造210を作る。この構造を用いて、API機能164は、指定されたコードまたはデータを格納する仮想メモリの区画に対応して、メモリユニット即ちこの場合はページを計算することができる。結果は、第2優先度レベルを持つページ212のリストである。
【0073】
その後、API機能は、物理メモリマネージャに、リスト212のページの各々に対して優先度をセットさせる。上述したように、物理メモリマネージャは、仮想記憶におけるLRU機構を実現させる。それは、各ページに対するメモリアクセスの参照回数を保持することによって、どのくらいの頻度で各ページが使用されたかを監視し続ける。あるページがアクセスされた場合、それは、参照回数を受け取る。この物理メモリマネージャは、この参照回数を使用して、最も参照されなかったページを識別する。メモリ要求を満足させる使用可能な物理メモリがなくなればなるほど、物理メモリマネージャは、そこの参照回数に示されるものに従って、最も長い間使用されなかったページを2次記憶装置へスワップすることによって、物理メモリを開放する。
【0074】
あるページを「頻繁に使用された」優先度レベルにセットするためには、API機能は、物理メモリマネージャに参照回数を所定の最大値にセットするよう指示する。それらのページは物理メモリから最もスワップされにくいものであるから、このAPI機能によって指定されたページに対しては、その他のページに比べてより高い優先度が与えられる。
【0075】
「ダイレクトメモリ」と呼ばれる1つの実現可能なAPI機能の説明を、以下に示す。物理メモリへのアクセスの第1及び第2優先度レベルは、ロック及びアンロック機能で実現される。アプリケーションプログラムは、ロック機能を呼び出す場合にソフトロック(SOFTLOCK)パラメータをセットすることによって、ソフトロックを指定することができる。同様に、アプリケーションプログラムは、ロック機能の最も最近に使用された(MOSTRECENTLYUSED)パラメータをセットすることによって、頻繁に使用された優先度レベルをを指定することができる。
【0076】
【0077】
【0078】
【0079】
【0080】
【0081】
【0082】
【0083】
【0084】
【0085】
【0086】
本発明を、具体的な実施例を参照して説明してきたが、本発明は、この特定の実施例に限定されるものではないことが、重要であることに留意されたい。本発明は、仮想記憶を実現し、実行中のプログラム間でフォーカスの変更することができる様々なマルチタスキングオペレーティングシステムの変形に適用できる。上述した本実施例は、ページ式仮想記憶機構用に設計されたものであるが、これは、その他のタイプのメモリユニットである仮想メモリを管理する仮想記憶機構にも適用することができる。多数の可能な実施例に、本発明の原理を適用することが可能であり、説明された実施例は、本発明の好適な実施例に過ぎないと理解すべきであり、本発明の範囲を限定するものと解釈すべきではない。むしろ、本発明の範囲は、以下の請求の範囲で定義してある。従って、我々は、これらの請求の範囲及び本質の範囲にある全てのものを、我々の発明として請求する。
【図面の簡単な説明】
【図1】 386アーキテクチャにおける仮想記憶アドレッシング機構を説明する図である。
【図2】 図1に示すページテーブルディレクトリのエントリ及びページテーブルを説明する図である。
【図3】 本発明を実現するオペレーティング環境を提供するコンピュータシステムを説明する図である。
【図4】 仮想記憶システムにおいて、アプリケーションプログラムに物理メモリの割り振りを制御させる、ソフトロック機能の処理を、説明する図である。
【図5】 アプリケーションプログラムに、仮想記憶管理で使用される優先度レベルを指定させ、2次記憶装置へメモリユニットをスワップさせる順序を判断させるAPI機能の処理を、説明する図である。
Claims (16)
- 同時に実行される複数のアプリケーションに仮想記憶システムにおける割り振りを制御させる方法であって、
ソフトページロックさせるコードまたはデータを指定することを要求する或るアプリケーションプログラムからの要求に応答して、前記指定されたコードまたはデータを物理メモリ内にロードし、前記指定されたコードまたはデータが2次記憶装置にスワップされるのを前記仮想記憶システムによって防止させることによって、前記指定されたコードまたはデータに対して物理メモリの一部を保証するステップと、
同時に実行される複数のアプリケーションプログラムのフォーカスを監視し、前記アプリケーションがフォーカスをなくした場合に、前記物理メモリをその他の同時に実行される複数のアプリケーションプログラムによって使用することができるように、前記コードまたはデータについて保証された前記物理メモリのうち少なくとも一部を開放するステップと、
前記アプリケーションが前記フォーカスを回復した場合に、前記アプリケーションが実行される前に、物理メモリから開放された前記コードまたはデータを再ロードするステップと、
を含む方法。 - 物理メモリの割り振りを監視し、どれくらいの前記物理メモリを前記同時に実行される複数のアプリケーションプログラムに対して割り振ることが可能であるかを判断するステップと、
前記同時に実行される複数のアプリケーションプログラムに対して割り振ることが可能な前記物理メモリの量が、所定の閾値を下回る場合に、他の同時に実行される複数のアプリケーションプログラムが前記物理メモリを使用することができるように、前記指定されたコードまたはデータについて保証された前記物理メモリのうち少なくとも一部を開放するステップと、
をも含む、請求項1に記載する方法。 - 他の同時に実行される複数のアプリケーションプログラムが前記物理メモリを使用することができるように、高優先度プロセス要求が前記物理メモリにアクセスする場合に、前記ソフトロックを上書きし、前記指定されたコードまたはデータについて保証された前記物理メモリのうち少なくとも一部を開放するステップ、をも含む、
請求項1に記載する方法。 - 前記物理メモリを開放するステップが、前記所定の閾値を越える場合に、リーストリーセントリユーズド方式の順序で、前記物理メモリを開放するステップを含む、
請求項2に記載する方法。 - 前記ソフトロックを上書きするステップが、リーストリーセントリユーズド方式の順序で、前記物理メモリを開放するステップを含む、
請求項3に記載する方法。 - コードまたはデータに対する物理メモリの割り振りの優先度を選択することを要求するアプリケーションプログラムからの要求に応答して、ある区画に格納される前記コードまたはデータが2次記憶装置に最もスワップされにくくなるように、不在割り込みに応答する前記仮想記憶システムによって、前記コードまたはデータに関するメモリの前記区画を監視し続けるステップ、
をも含む、請求項1に記載する方法。 - 前記アプリケーションプログラムに割り振られるであろう物理メモリの最大量をエンドユーザに指定させるインタラクティブなユーザインターフェイスを、ディスプレイモニタ上に表示させるステップと、
前記アプリケーションプログラムに専用で割り振られた前記物理メモリ量が、前記閾値を越えた場合に、前記アプリケーションプログラムに対して物理メモリについてロックすることを防止させるステップと、
をも含む、請求項1に記載する方法。 - 仮想メモリを、ページのメモリユニットとして割り振るステップが、
ソフトロックの要求に応答して、前記指定されたコードまたはデータに対応するページのリストを計算するステップと、
前記リストを使用して、前記アプリケーションが前記フォーカスを回復した場合に、前記物理メモリ内へ再ロードする必要がある前記リスト中のページを識別するステップと、
をも含む、請求項1に記載する方法。 - 請求項1に記載するステップを実行させるためにコンピュータで実行可能な命令を持つ、コンピュータ読み取り可能な記憶媒体。
- 使用可能な物理メモリのグループから削除し、1つのアプリケーションプログラム専用となるように、物理メモリの区画を保証する機能を含むものであって、前記物理メモリ及び2次記憶装置間でコードまたはデータをスワップさせることによってコンピュータ内の物理メモリよりも大きな仮想メモリスペースをサポートし、同時に実行されるアプリケーションプログラムに割り振ることが可能な物理メモリのグループを管理する、物理メモリマネージャと、
物理メモリの区画のソフトロックを要求するAPI機能コールを含むものであって、同時に実行されるアプリケーションプログラムからのAPIコールを受け取るAPI機能と、
フォーカスの変更を監視し、
前記アプリケーションが前記フォーカスをなくしたときに、物理メモリマネージャを指示して、前記アプリケーションプログラムによってソフトロックされた物理メモリの区画を開放し、前記アプリケーションが前記フォーカスを回復した場合に、前記物理メモリの区画をリストアする、メモリモニタと、
を含むオペレイティングシステム。 - API機能が、選択されたコードまたはデータを高優先度として指定するAPI機能コールを含み、
前記API機能によって前記物理メモリマネージャが、前記選択されたコードまたはデータに対して高優先度の割り当てを行い、
前記物理メモリマネージャが、前記選択された優先度と、コードまたはデータにアクセスする頻度に基づき動的に決定された優先度とを比較して、不在割り込みを処理するためにどのコードまたはデータを2次記憶装置にスワップするかを判断する、
請求項10に記載するオペレーティングシステム。 - 前記物理メモリマネージャが、前記使用可能な物理メモリ量をモニタし、前記使用可能な物理メモリが閾値を下回った場合に、前記メモリモニタにメッセージを送り、
前記メモリモニタが前記メッセージに応答して、アプリケーションプログラムによって要求されたソフトロックを開放する、
請求項10に記載するオペレーティングシステム。 - 前記メモリモニタが、前記物理メモリ量を監視して、前記使用可能な物理メモリが所定の閾値を下回った場合に、ソフトロックされたコードまたはデータのうち少なくとも一部を開放することによってソフトロックを上書きすることが可能である、
請求項10に記載するオペレーティングシステム。 - 前記メモリモニタが、実行時に発生し前記ソフトロックを開放する必要がある条件を監視して、前記条件の1つを検知したことに応答して、の前記ソフトロックされたコードまたはデータのうち少なくとも一部を開放することが可能である、
請求項10に記載するオペレーティングシステム。 - 前記条件が、物理メモリに対してアクセスを要求する高優先度プロセスを含む、
請求項14に記載するオペレーティングシステム。 - アプリケーションプログラムがロックすることができるメモリの最大量を前記ユーザに選択させ、入力させるユーザインターフェイスを含む、
請求項10に記載するオペレーティングシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/937,059 US6128713A (en) | 1997-09-24 | 1997-09-24 | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
PCT/US1998/016802 WO1999015963A1 (en) | 1997-09-24 | 1998-08-12 | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008137773A Division JP2008251036A (ja) | 1997-09-24 | 2008-05-27 | 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004500605A JP2004500605A (ja) | 2004-01-08 |
JP4160255B2 true JP4160255B2 (ja) | 2008-10-01 |
Family
ID=25469429
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000513197A Expired - Lifetime JP4160255B2 (ja) | 1997-09-24 | 1998-08-12 | 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス |
JP2008137773A Pending JP2008251036A (ja) | 1997-09-24 | 2008-05-27 | 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008137773A Pending JP2008251036A (ja) | 1997-09-24 | 2008-05-27 | 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス |
Country Status (5)
Country | Link |
---|---|
US (1) | US6128713A (ja) |
EP (1) | EP1023661B1 (ja) |
JP (2) | JP4160255B2 (ja) |
DE (1) | DE69802836T2 (ja) |
WO (1) | WO1999015963A1 (ja) |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69908121T2 (de) * | 1998-03-23 | 2004-04-01 | Microsoft Corp., Redmond | Anwendungsprogrammierungsschnittstelle in einem betriebssystem |
US6226725B1 (en) * | 1998-04-21 | 2001-05-01 | Ibm | Method and system in a data processing system for the dedication of memory storage locations |
US6735773B1 (en) * | 1998-06-27 | 2004-05-11 | Intel Corporation | Method and apparatus for issuing commands to a network processor configured to provide a plurality of APIs |
US6604136B1 (en) * | 1998-06-27 | 2003-08-05 | Intel Corporation | Application programming interfaces and methods enabling a host to interface with a network processor |
US7409694B2 (en) * | 1998-09-09 | 2008-08-05 | Microsoft Corporation | Highly componentized system architecture with loadable virtual memory manager |
US7565665B2 (en) | 1998-09-09 | 2009-07-21 | Microsoft Corporation | Efficient linking and loading for late binding and platform retargeting |
US8434099B2 (en) | 1998-09-09 | 2013-04-30 | Microsoft Corporation | Efficient linking and loading for late binding and platform retargeting |
US6910210B1 (en) * | 1998-11-24 | 2005-06-21 | Microsoft Corp. | System and method for terminating applications |
US6408313B1 (en) * | 1998-12-16 | 2002-06-18 | Microsoft Corporation | Dynamic memory allocation based on free memory size |
CA2312444A1 (en) * | 2000-06-20 | 2001-12-20 | Ibm Canada Limited-Ibm Canada Limitee | Memory management of data buffers incorporating hierarchical victim selection |
US6640285B1 (en) * | 2000-10-26 | 2003-10-28 | Emc Corporation | Method and apparatus for improving the efficiency of cache memories using stored activity measures |
US7409685B2 (en) * | 2002-04-12 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
US6766413B2 (en) | 2001-03-01 | 2004-07-20 | Stratus Technologies Bermuda Ltd. | Systems and methods for caching with file-level granularity |
JP3610915B2 (ja) * | 2001-03-19 | 2005-01-19 | 株式会社デンソー | 処理実行装置及びプログラム |
GB0107458D0 (en) * | 2001-03-24 | 2001-05-16 | Patterson Simon D | Method and apparatus |
US6941437B2 (en) * | 2001-07-19 | 2005-09-06 | Wind River Systems, Inc. | Memory allocation scheme |
US7406522B2 (en) * | 2001-09-26 | 2008-07-29 | Packeteer, Inc. | Dynamic partitioning of network resources |
JPWO2003052569A1 (ja) * | 2001-12-07 | 2005-04-28 | 株式会社エヌ・ティ・ティ・ドコモ | 移動通信端末、アプリケーション実行制御方法、アプリケーション実行制御プログラム及びコンピュータ読み取り可能な記録媒体 |
US7234047B1 (en) * | 2002-04-24 | 2007-06-19 | Adaptec, Inc. | Method for managing memory space during system initialization |
FR2841079B1 (fr) * | 2002-06-14 | 2005-02-25 | Canal Plus Technologies | Procede de diffusion d'application html |
WO2004105328A1 (en) * | 2003-05-21 | 2004-12-02 | Philips Intellectual Property & Standards Gmbh | Message memory for a communication protocol and method |
US7366101B1 (en) * | 2003-06-30 | 2008-04-29 | Packeteer, Inc. | Network traffic synchronization mechanism |
US7599283B1 (en) | 2003-06-30 | 2009-10-06 | Packeteer, Inc. | Network traffic synchronization and data compression in redundant network topologies |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
CA2442800A1 (en) * | 2003-09-26 | 2005-03-26 | Ibm Canada Limited - Ibm Canada Limitee | Transforming locks in software loops |
US7260698B2 (en) * | 2003-10-30 | 2007-08-21 | International Business Machines Corporation | Method and system for page initialization using off-level worker thread |
US8984517B2 (en) * | 2004-02-04 | 2015-03-17 | Intel Corporation | Sharing idled processor execution resources |
US7155583B2 (en) * | 2004-02-25 | 2006-12-26 | Research In Motion Limited | Memory management system and method for a mobile device |
EP1870814B1 (en) | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
US8112618B2 (en) | 2004-04-08 | 2012-02-07 | Texas Instruments Incorporated | Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making |
US7904895B1 (en) | 2004-04-21 | 2011-03-08 | Hewlett-Packard Develpment Company, L.P. | Firmware update in electronic devices employing update agent in a flash memory card |
US20050246638A1 (en) * | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Presenting in-game tips on a video game system |
US20050243093A1 (en) * | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Universal controller help on a multimedia system |
US7798903B2 (en) * | 2004-04-30 | 2010-09-21 | Microsoft Corporation | System and method for accessing system software in a gaming console system via an input device |
US8707317B2 (en) * | 2004-04-30 | 2014-04-22 | Microsoft Corporation | Reserving a fixed amount of hardware resources of a multimedia console for system application and controlling the unreserved resources by the multimedia application |
US7716669B2 (en) * | 2004-04-30 | 2010-05-11 | Microsoft Corporation | Concurrent system applications in a multimedia console |
US7206903B1 (en) * | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US8074030B1 (en) | 2004-07-20 | 2011-12-06 | Oracle America, Inc. | Using transactional memory with early release to implement non-blocking dynamic-sized data structure |
US7703098B1 (en) | 2004-07-20 | 2010-04-20 | Sun Microsystems, Inc. | Technique to allow a first transaction to wait on condition that affects its working set |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
WO2006039556A2 (en) * | 2004-10-02 | 2006-04-13 | Wms Gaming Inc. | Gaming device with error correcting memory |
JP4354379B2 (ja) * | 2004-10-04 | 2009-10-28 | 株式会社日立製作所 | 帯域制御装置 |
US7904906B2 (en) * | 2004-11-23 | 2011-03-08 | Stratus Technologies Bermuda Ltd. | Tracking modified pages on a computer system |
CN100432957C (zh) * | 2005-02-12 | 2008-11-12 | 美国博通公司 | 一种管理存储器的方法 |
US7395385B2 (en) * | 2005-02-12 | 2008-07-01 | Broadcom Corporation | Memory management for a mobile multimedia processor |
US20060205517A1 (en) * | 2005-03-08 | 2006-09-14 | Malabuyo Paolo V | Systems and methods for providing a system level user interface in a multimedia console |
US7496722B2 (en) * | 2005-04-26 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Memory mapped page priorities |
US7826418B2 (en) * | 2005-06-27 | 2010-11-02 | Qualcomm Incorporated | Block-based assignment of quality of service precedence values |
US7739422B2 (en) * | 2006-03-21 | 2010-06-15 | International Business Machines Corporation | Method to improve system DMA mapping while substantially reducing memory fragmentation |
EP2025095A2 (en) | 2006-06-08 | 2009-02-18 | Hewlett-Packard Development Company, L.P. | Device management in a network |
US7603387B2 (en) * | 2006-06-16 | 2009-10-13 | Microsoft Corporation | Techniques to manage media files |
EP1870813B1 (en) * | 2006-06-19 | 2013-01-30 | Texas Instruments France | Page processing circuits, devices, methods and systems for secure demand paging and other operations |
WO2007146970A2 (en) * | 2006-06-16 | 2007-12-21 | Texas Instruments Incorporated | Page processing circuits, devices, methods and systems for secure demand paging and other operations |
US7783686B2 (en) * | 2006-06-16 | 2010-08-24 | Microsoft Corporation | Application program interface to manage media files |
US8793361B1 (en) | 2006-06-30 | 2014-07-29 | Blue Coat Systems, Inc. | Traffic synchronization across multiple devices in wide area network topologies |
US8752044B2 (en) | 2006-07-27 | 2014-06-10 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
US8862752B2 (en) * | 2007-04-11 | 2014-10-14 | Mcafee, Inc. | System, method, and computer program product for conditionally preventing the transfer of data based on a location thereof |
US8793802B2 (en) | 2007-05-22 | 2014-07-29 | Mcafee, Inc. | System, method, and computer program product for preventing data leakage utilizing a map of data |
US20090049449A1 (en) * | 2007-08-15 | 2009-02-19 | Srinidhi Varadarajan | Method and apparatus for operating system independent resource allocation and control |
US9391921B1 (en) | 2008-03-18 | 2016-07-12 | Packeteer, Inc. | Virtual bandwidth management deployment architectures |
US20120017039A1 (en) * | 2010-07-16 | 2012-01-19 | Plx Technology, Inc. | Caching using virtual memory |
US8972696B2 (en) * | 2011-03-07 | 2015-03-03 | Microsoft Technology Licensing, Llc | Pagefile reservations |
US9218206B2 (en) | 2011-06-20 | 2015-12-22 | Microsoft Technology Licensing, Llc | Memory management model and interface for new applications |
US8832411B2 (en) | 2011-12-14 | 2014-09-09 | Microsoft Corporation | Working set swapping using a sequentially ordered swap file |
US10061616B2 (en) * | 2012-05-30 | 2018-08-28 | Red Hat Israel, Ltd. | Host memory locking in virtualized systems with memory overcommit |
KR101740317B1 (ko) * | 2013-04-10 | 2017-05-26 | 한국전자통신연구원 | 메모리 관리 방법 및 장치 |
US10102148B2 (en) | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
US10203995B2 (en) * | 2013-11-22 | 2019-02-12 | Excalibur Ip, Llc | Method or system for access to shared resource |
US9684625B2 (en) | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US10037270B2 (en) | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
US10248459B2 (en) | 2016-03-15 | 2019-04-02 | Microsoft Technology Licensing, Llc | Operating system support for game mode |
CN107912063B (zh) | 2016-04-27 | 2021-05-18 | 华为技术有限公司 | 一种内存回收方法及装置 |
US10713081B2 (en) * | 2018-08-30 | 2020-07-14 | Red Hat, Inc. | Secure and efficient memory sharing for guests |
Family Cites Families (16)
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 |
JPS62251852A (ja) * | 1986-04-23 | 1987-11-02 | Sharp Corp | ユ−ザ空間への物理アドレスの割り当て方式 |
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 |
JPH01200451A (ja) * | 1988-02-05 | 1989-08-11 | Fanuc Ltd | 内部データ管理方法 |
JPH0283755A (ja) * | 1988-09-21 | 1990-03-23 | Hitachi Ltd | 情報処理装置 |
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 |
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 |
JPH0713870A (ja) * | 1993-06-24 | 1995-01-17 | Sony Corp | データ解析装置 |
US5606685A (en) * | 1993-12-29 | 1997-02-25 | Unisys Corporation | Computer workstation having demand-paged virtual memory and enhanced prefaulting |
EP0713176B1 (en) * | 1994-11-18 | 2001-09-05 | Compaq Computer Corporation | Quick access to computer applications |
US5727178A (en) * | 1995-08-23 | 1998-03-10 | Microsoft Corporation | System and method for reducing stack physical memory requirements in a multitasking operating system |
-
1997
- 1997-09-24 US US08/937,059 patent/US6128713A/en not_active Expired - Lifetime
-
1998
- 1998-08-12 DE DE69802836T patent/DE69802836T2/de not_active Expired - Lifetime
- 1998-08-12 EP EP98939929A patent/EP1023661B1/en not_active Expired - Lifetime
- 1998-08-12 JP JP2000513197A patent/JP4160255B2/ja not_active Expired - Lifetime
- 1998-08-12 WO PCT/US1998/016802 patent/WO1999015963A1/en active IP Right Grant
-
2008
- 2008-05-27 JP JP2008137773A patent/JP2008251036A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO1999015963A1 (en) | 1999-04-01 |
EP1023661B1 (en) | 2001-12-05 |
DE69802836T2 (de) | 2002-08-22 |
JP2008251036A (ja) | 2008-10-16 |
JP2004500605A (ja) | 2004-01-08 |
US6128713A (en) | 2000-10-03 |
DE69802836D1 (de) | 2002-01-17 |
EP1023661A1 (en) | 2000-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4160255B2 (ja) | 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス | |
JP4718683B2 (ja) | コンピュータ内のアプリケーションプログラム間でフォーカスが変更されたときに物理メモリの状態を復元する方法およびシステム | |
JP4366012B2 (ja) | 仮想記憶システムにおいてアプリケーションプログラムによってコードまたはデータをグループに分類して、物理メモリの割り振りの制御を行うアプリケーション・プログラミング・インターフェイス | |
US7353361B2 (en) | Page replacement policy for systems having multiple page sizes | |
US6460126B1 (en) | Computer resource management system | |
US7206915B2 (en) | Virtual space manager for computer having a physical address extension feature | |
CA2275970C (en) | Object and method for providing efficient multi-user access to shared operating system kernal code using instancing | |
US7516291B2 (en) | Cooperative mechanism for efficient application memory allocation | |
US6804766B1 (en) | Method for managing pages of a designated memory object according to selected memory management policies | |
US5842226A (en) | Virtual memory management for a microkernel system with multiple operating systems | |
EP1190438B1 (en) | Operating system page placement to maximize cache data reuse | |
US6457107B1 (en) | Method and apparatus for reducing false sharing in a distributed computing environment | |
US5860131A (en) | Method for providing dynamic cache management in a computer system | |
US7853771B2 (en) | Page allocation management for virtual memory | |
EP0871128A2 (en) | Method and apparatus for providing a shared data region using shared page tables | |
JPH09190380A (ja) | 仮想記憶管理方法 | |
JP2003248620A (ja) | 動的メモリ管理方法及び動的メモリ管理情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050801 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071127 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080226 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080304 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080527 |
|
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: 20080708 |
|
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: 20080717 |
|
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: 20110725 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110725 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120725 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120725 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130725 Year of fee payment: 5 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |