JP6198226B2 - 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ - Google Patents

順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ Download PDF

Info

Publication number
JP6198226B2
JP6198226B2 JP2014547453A JP2014547453A JP6198226B2 JP 6198226 B2 JP6198226 B2 JP 6198226B2 JP 2014547453 A JP2014547453 A JP 2014547453A JP 2014547453 A JP2014547453 A JP 2014547453A JP 6198226 B2 JP6198226 B2 JP 6198226B2
Authority
JP
Japan
Prior art keywords
pages
swap
page
candidate
file
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.)
Active
Application number
JP2014547453A
Other languages
English (en)
Other versions
JP2015506041A (ja
JP2015506041A5 (ja
Inventor
アイガン,メフメット
バク,エフジェニー
ワン,ランディ
ユー. キシャン,アラン
ユー. キシャン,アラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015506041A publication Critical patent/JP2015506041A/ja
Publication of JP2015506041A5 publication Critical patent/JP2015506041A5/ja
Application granted granted Critical
Publication of JP6198226B2 publication Critical patent/JP6198226B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Description

本発明は、コンピューティングシステムに関し、より具体的にはコンピューティングシステムにおける記憶に関する。
コンピューティング・システムは主記憶(しばしば物理メモリと呼ばれる)を使用して、ソフトウェア・プログラムやアプリケーションを含むプロセスを実行する。現在のシステムでは、この主記憶は一般にランダム・アクセス・メモリ(RAM)などの揮発性メモリを含む。オペレーティング・システム(OS)は、各プロセスに、そのプロセスが物理メモリで実行される時に使用するいくつかのメモリ・ページを割り当てることができる。しかし、アクティブなプロセスは、システムで利用できるよりも多くの物理メモリを使用する場合がある。そのような場合は、すべてのプロセス・ページを物理メモリに維持する代わりに、仮想メモリを利用してアクティブなプロセスに使用される物理メモリを補うことができる。
米国特許出願第13/042,128号
仮想メモリは、プロセスの1つまたは複数のページを二次記憶部(例えばハード・ドライブ)の不揮発性メモリに書き込み、必要に応じてそのページを読み出して物理メモリに戻すことによって実現することができる。例えば、データがプロセスによって活発に使用されていない時には、そのようなデータを含んでいるページを二次記憶部に書き込むことによって物理メモリの空間を解放することができる。この物理メモリと仮想メモリ間のページの読出しと書込みのプロセスを一般にページングと呼び、ページを書き込むための二次記憶部の空間を一般にページファイルと言う。プロセスに対してこのページングが行われる速度と効率がシステム性能およびユーザ体験に影響する可能性がある。
従来のページング動作は、現在アクティブなプロセスのメモリ要件に基づいて物理メモリから二次記憶部に個々のページをページアウトする傾向があり、その結果二次記憶部の断片化が生じる場合がある。本出願は、二次記憶部の連続的に配置された場所への大きなページの書込みおよび読出しを使用することにより、プロセスのページのワーキング・セットとの間で1つまたは複数のページを効率的にスワップする技術を記載する。読出しおよび書込みは、順次並んだメモリ・ブロック、および/またはより大きいメモリ・ブロックで行える場合に効率が高くなる傾向があるため、本明細書に記載される技術は、スワップ動作時に、物理メモリの順次並んだ場所への大きな読出しおよび書込みを用いる。物理メモリから二次記憶部にページをスワップする際、ページは、各自の仮想アドレスの順序に従って、専用のスワップ・ファイル内に確保された連続した場所に書き込むことができる。そのような書込みにより、大きな順次並んだメモリのブロックでページをスワップインすることができ、スワップインがより効率的になる。
この概要は、下記の詳細な説明でさらに説明する概念のいくつかを簡略化した形態で紹介するために提供される。この概要は、特許請求の主題の主要な特徴を明らかにするものでも、特許請求の主題の範囲を限定するために使用すべきものでもない。
以下の詳細な説明は添付図面を参照して説明する。図では、参照符号の一番左の(1つまたは複数の)桁がその参照符号が最初に出現する図を特定する。異なる図で同じ参照符号が使われている場合は、同様または同一の要素を意味する。
実施形態による、スワップ・ファイルの順次並んだ場所にプロセスのワーキング・セットからページを書き込む例を説明する図である。 実施形態による、スワップ・ファイルの順次並んだ場所にプロセスのワーキング・セットからページを書き込む例を説明する図である。 実施形態による、例示的なコンピューティング・システムを示す概略図である。 実施形態による、例示的なオペレーティング・システムの構成要素の概略図である。 実施形態による、ワーキング・セットからページをスワップアウトする例示的処理の流れ図である。 実施形態による、スワップアウトされたページをスワップ・ファイルに書き込む例示的処理の流れ図である。 実施形態による、スワップ・ファイルからワーキング・セットにページをスワップインする例示的処理の流れ図である。 実施形態による、動的にスワップ・ファイルを管理する例示的処理の流れ図である。
概要
本明細書に記載される実施形態は、二次記憶部の連続的に配置された場所への大きなメモリのブロックを書込みおよび読出しを使用して、プロセスのページのワーキング・セットから効率的にメモリ・ページをスワップできるようにする。ランダム・アクセス・メモリ(RAM)などの物理メモリで実行されるプロセスは、システムで利用できるよりも多くの物理メモリを必要とする場合がある。そのような場合は、従来構成のメモリ・マネジャやオペレーティング・システムの他の構成要素がページング動作を実施して、プロセスの1つまたは複数のメモリ・ページを二次記憶部のページファイルに書き込むことによりいくらかの物理メモリを解放することができる。従来のページングでは、プロセスの個々のページを必要に応じて書き込んで(すなわちページアウトして)物理メモリを解放し、プロセスがページにアクセスしたい時(例えばページ・フォルトが発生した時)に要求に応じてページングして物理メモリに戻すことができる。そのような従来の必要に応じた個々のページのページングはしばしばデマンド・ページングと呼ばれ、結果として二次記憶部の入出力(I/O)動作が不規則で小さくなり、各種ページが連続しない記憶空間に記憶され、一定の順序にならないことがある。
さらに、コンピューティング・システムにおける入出力動作(例えば読出しおよび書込み)は、一般に、順次並んだ大きな要求で行われる時の方が効率的になる。例えば、固体ディスクを用いるシステムでは、順次並んだ入出力動作を行うと、無作為な場所への要求と比べて2〜3倍の効率性の利得が得られる可能性がある。多くの場合、より大きなサイズの順次的要求にすると、サイズの小さい順次的要求と比べて同様の利得が得られる。さらに、回転ディスクを使用するシステムでは、効率の利得は50倍にもなる場合がある。これらを考慮して、本明細書に記載の実施形態は、スワップ・ファイル中の順次並んだ場所により大きなページのまとまりを読み書きする入出力動作を使用することにより、効率的なスワップを可能にする。
本明細書で使用する場合、用語「ページ」は、実行中にプロセスに使用されるメモリのブロックを言う。プロセスがアクティブな時、ページは物理メモリにあり、プロセスからアクセスすることができる。メモリ・マネジャまたはオペレーティング・システム(OS)の他の構成要素が、物理メモリから1つまたは複数のページを取り除き、二次記憶部に書き込むことができる。ページは、二次記憶部からコピーすることによって物理メモリに読み戻すことができる。
1つまたは複数の実施形態では、ページはプロセスのプライベート・ページを含むことができる。本明細書で使用する場合、「プライベート・ページ」とは、プロセスに割り振られるヒープなど、特定のプロセスに所有され、または特定のプロセス専用とされ、他のプロセスに使用されないページを言う。他の種類のページには、ファイル・マッピングなど、複数のプロセスに使用される共有可能ページがある。一部の実施形態は、プライベート・ページの効率的なスワップを支援する。さらに、一部の実施形態は、ページファイルを利用した共有ページのスワップも支援することができる。これらの種類のページは、1つの場所(例えばページファイル)に記憶することができ、ハンドルまたはポインタによって参照することができる。プロセスは、そのようなページファイルを利用した共有ページへのハンドルを別のプロセスに渡し、ページは、プロセスがそのページへのハンドルを維持する限りメモリに存在し続けることができる。
本明細書で使用する場合、用語「ワーキング・セット」とは、1つのプロセスのためのページのセットを意味する。各実施形態は、各種のワーキング・セットを支援する。例えば、ワーキング・セットは、特定の時間間隔中にプロセスによってアクセスおよび/または参照されるデータのページを含むことができる。そのようなワーキング・セットは、近い将来(例えば次の時間間隔)にプロセスによってアクセスされる見込みが高いページのセットの近似を提供することができ、プロセスからすぐにアクセスできるように物理メモリにそのページを保持しておくことが望ましい。ただし実施形態はこれに限定されず、他の種類のページの集まりをワーキング・セットとして支援することができる。例えば、プロセスのワーキング・セットは、OSを通らずにプロセッサから直接アクセスできるページとすることができる。
本明細書で使用される用語「スワップ・ファイル」とは、二次記憶部(例えばハード・ドライブ)に確保され、物理メモリとの間のページのスワップに使用される空間を言う。一部の実施形態では、スワップ・ファイルは、従来のページング動作に使用されるページファイルとは別の専用のスワップ・ファイルである。一部の実施形態では、スワップ・ファイルはページファイルの一部とすることができる。一部の実施形態では、図6を参照して本明細書で説明するように、スワップ・ファイルはメモリ・マネジャまたは他のOSの構成要素によって初期化され、そのサイズは動的に管理することができる。
実施形態は、プロセスのワーキング・セットからページをスワップアウトし、ワーキング・セットからスワップされた1つまたは複数のページを二次記憶部のスワップ・ファイルに書き込むことができる。上記のように、実施形態は、スワップ・ファイル中の順次並んだ場所に、大きなまとまりでページの書込みおよび/または読出しを行うことにより、効率的なスワップを可能にする。図1Aおよび図1Bは、1つまたは複数の実施形態によるスワップアウトと書込みの例を示す。
図1Aは、特定のプロセスであるプロセスXのワーキング・セット102、および二次記憶部のスワップ・ファイル104を示す。ワーキング・セット102の1つまたは複数のページを物理メモリからスワップアウトすることを決定することができる。次いで、メモリ・マネジャなどのOSの構成要素が、ワーキング・セットのプライベート・ページなど、スワップアウトする候補ページとなるワーキング・セット102の1つまたは複数のページを特定する。特定された候補ページの合計サイズを計算することができる。そして、動作108でスワップ・ファイル104に確保された空間106を確保することができ、確保される空間は候補ページを記憶するのに十分な大きさである。さらに、各候補ページの場所を確保された空間106に確保することができ、それらの場所は、候補ページの仮想アドレスの順序に従って連続して配置される。この時点で、一部の実施形態では、候補ページはスワップ・ファイルに書き込まれていないものの候補ページがスワップアウトされたと言うことができる。
図1Bは、ワーキング・セット102の1つまたは複数の候補ページ110を示す。1回または複数回の書込み動作112で、候補ページ110の1つまたは複数が確保された空間106に書き込まれる。図1Bに示すように、書き込まれる各候補ページは、そのページ独自の確保された場所に書き込むことができる。一部の実施形態では、候補ページ110はワーキング・セット中では連続していない場合もあるが、図1Bに示すようにスワップ・ファイル中では連続した場所に書き込まれる。一続きの順次並んだ確保された空間106に候補ページを書き込むことにより、後のスワップイン動作時にページをワーキング・セット102に戻す際に、後の読出し動作で大きな順次並んだスワップ・ファイルのブロックを読み出すことができる。したがって、一部の実施形態では、スワップ・ファイル中の順次並んだ場所に候補ページを書き込むことにより、大きく、かつ/または順次並んだ、効率的な将来の読出しを可能にする。ページのスワップアウトおよび書込みについては図4との関連で詳細に説明する。実施形態はさらに、スワップ・ファイルからワーキング・セットのスワップ・ファイルへのページの読出し(すなわちページをプロセスによる使用のために物理メモリに戻す)を含むページのスワップインを可能にする。ページのスワップインについては図5との関連で詳細に説明する。
一部の実施形態では、1つまたは複数のページをプロセスのワーキング・セットからスワップアウトして取り除く決定は、ポリシー・マネジャまたは他のOSの構成要素により各種条件に基づいて行うことができる。例えば、プロセスが一時停止されている、アクティブでない、または何らかの理由でコンピューティング・デバイス上の他のアクティブなプロセスよりもアクティブでない(例えばアクセスするページが少ない)ことが判定される場合がある。そのような場合は、そのプロセスのワーキング・セットの一部またはすべてをワーキング・セットから取り除いて、他のプロセスで使用するために物理メモリをより多く解放することができる。ただし、円滑なユーザ体験を作り出すために、ワーキング・セットへのページの読み戻しはスワップイン中にできる限り効率的に行って、プロセスが迅速にアクティブになるようにすることが望ましい。大きな入出力動作および/または順次的入出力動作を使用する効率的なスワップインにより、プロセスが高速に再アクティブ化できるようになり、したがってコンピューティング・デバイスがアクティブなプロセスを切り替える際の動作が向上する。
例示的なコンピューティング・デバイス・アーキテクチャ
図2は実施形態が動作することが可能な例示的なコンピュータ・システム・アーキテクチャの図である。図示するように、コンピューティング・システム200は処理装置202を含む。処理装置202は複数の処理装置を包含することができ、ハードウェア、ソフトウェア、またはその組み合わせとして実施することができる。処理装置202は1つまたは複数のプロセッサを含むことができる。本明細書で使用される場合、「プロセッサ」はハードウェアの構成要素を意味する。処理装置202は、任意の適切なプログラミング言語で書かれたコンピュータ実行可能命令、プロセッサ実行可能命令、および/または機械実行可能命令を含んで、本明細書に記載される各種機能を行うことができる。
コンピューティング・デバイス200はさらにシステム・メモリ204を含み、システム・メモリ204は、ランダム・アクセス・メモリ(RAM)206、静的ランダム・アクセス・メモリ(SRAM)、動的ランダム・アクセス・メモリ(DRAM)等の揮発性メモリを含むことができる。RAM206は1つまたは複数の実行中のOS208および1つまたは複数の実行中のプロセス210を含み、プロセスは、処理装置202によってロードし実行することが可能なコンポーネント、プログラム、またはアプリケーションを含む。したがって、一部の実施形態では、RAM206は、OS208またはプロセス210が実行される物理メモリを含むことができる。
システム・メモリ204はさらに、読出し専用メモリ(ROM)212、フラッシュ・メモリなどの不揮発性メモリを含むことができる。図示するように、ROM212は、コンピューティング・システム200をブートするために使用される基本入出力システム(BIOS)214を含むことができる。図には示さないが、システム・メモリ204はさらに、その実行時に(1つまたは複数の)オペレーティング・システム208および/またはプロセス210によって生成および/または使用されるプログラムやコンポーネント・データを記憶することができる。システム・メモリ204はキャッシュ・メモリも含むことができる。
図2に示すように、コンピューティング・デバイス200は取外し不能記憶装置230および/または取外し可能記憶装置234も含み、これらはこれらに限定しないが、磁気ディスク記憶、光ディスク記憶、テープ記憶等を含む。ディスク・ドライブとそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、およびコンピューティング・システム200の動作のための他のデータの不揮発性の記憶を提供することができる。さらに、取外し不能記憶装置230はさらにハード・ドライブ232を含むことができる。一部の実施形態では、ハード・ドライブ232は、本明細書に記載されるスワップ動作で使用する二次記憶部を提供することができる。
一般に、コンピュータ可読媒体はコンピュータ記憶媒体および通信媒体を含む。
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、および他のデータなどの情報を記憶するための方法または技術で実装された揮発性および不揮発性、取外し可能および取外し不能の媒体を含む。コンピュータ記憶媒体には、これらに限定されないが、RAM、ROM、消去可能プログラム可能読出し専用メモリ(EEPROM)、SRAM、DRAM、フラッシュ・メモリもしくは他のメモリ技術、コンパクト・ディスク読出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)もしくは他の光学記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、またはコンピューティング・デバイスによるアクセスのために情報を記憶するために使用できる他の非伝送媒体がある。
それに対して、通信媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波や他の伝送機構等の変調データ信号において具現化することができる。本明細書で定義される「コンピュータ記憶媒体」は通信媒体を含まない。
コンピューティング・システム200は、これらに限定されないが、キーボード、マウス、ペン、ゲーム・コントローラ、音声認識用の音声入力装置、タッチ入力装置等の(1つまたは複数の)入力装置236も含むことができる。コンピューティング・システム200はさらに、これらに限定されないが、ディスプレイ、プリンタ、音声スピーカ、触覚出力等の(1つまたは複数の)出力装置238を含むことができる。コンピューティング・システム200はさらに、コンピューティング・システム200が、クライアント・デバイス、サーバ・デバイス、データベース、および/または1つまたは複数の通信ネットワークを介して利用できる他のネットワーク化デバイス等の他のコンピューティング・デバイス242と通信することを可能にする(1つまたは複数の)通信接続240を含むことができる。
図3は、実施形態によるコンピューティング・システム200およびOS208の例示的な図である。図示するように、一部の実施形態では、OS208は、ポリシー・マネジャ302やメモリ・マネジャ304などの1つまたは複数の構成要素を含む。一部の実施形態では、ポリシー・マネジャ302は、コンピューティング・システム200の物理メモリで実行されているプロセスのワーキング・セットからいつページをスワップすべきか、またはワーキング・セットにいつページをスワップすべきかを決定する。一部の実施形態では、ポリシー・マネジャ304は、いつプロセスを一時停止するか、再アクティブ化するか、および/または終了するかを各種条件下で決定するOS208のプロセス寿命マネジャと説明することができる。
図3に示すように、OS208は、例えばコンピューティング・システム200の通信バスを通じてハード・ドライブ232およびRAM206と通信することができる。ハード・ドライブ232は、ページングやスワップ動作の際にOS208が使用する二次記憶部を含むことができる。一部の実施形態では、ハード・ドライブ232は、1つまたは複数のページファイル318および/または1つまたは複数のスワップ・ファイル320を含む。一部の実施形態では、(1つまたは複数の)ページファイル318および/または(1つまたは複数の)スワップ・ファイル320は、ページングまたはスワップ動作時に使用するためにメモリ・マネジャ304によって初期化される。図の例では、(1つまたは複数の)スワップ・ファイル320は(1つまたは複数の)ページファイル318とは別である。ただし、一部の実施形態では、(1つまたは複数の)スワップ・ファイル320は(1つまたは複数の)ページファイル318の一部としてもよい。RAM206は、プロセスが実行される物理メモリを含むことができ、またそのプロセスのための1つまたは複数のワーキング・セット322を含むことができる。
さらに、メモリ・マネジャ304は、本明細書に記載されるページのスワップを行う動作を行うように機能する1つまたは複数の構成要素を含むことができる。一部の実施形態では、メモリ・マネジャ304はページ・テーブル306を含み、これは、ページング動作のために仮想アドレスを物理メモリまたはページファイルの各ページの場所に対応付ける。一部の実施形態ではさらにページ・テーブル306を利用して、候補ページがプロセスのワーキング・セットからスワップされる際にスワップ・ファイル中の候補ページの確保された場所についての情報を記憶する(図4Aを参照して下記でさらに説明する)。一部の実施形態では、スワップ・ファイル中の空間の確保は、2011年3月7日に出願された米国特許出願第13/042,128号、名称「Pagefile Reservations」に記載されるように進めることができる。
メモリ・マネジャ304は、変更リスト308および/または待機リスト310も含むことができる。一部の実施形態では、候補ページがワーキング・セットからスワップアウトされ、スワップ・ファイルにそれらのための場所が確保されると、後のいずれかの時点でそれらの候補ページをワーキング・セットから取り除き、変更リスト308に入れてライター(例えばページ・ライター312)によって書き込ませる。そして、各ページがスワップ・ファイル320に書き込まれると、そのページのアドレス情報を変更リスト308から待機リスト310に移動することができる。一部の実施形態では、待機リスト310は、スワップ・ファイルに書き込まれているもののまだ物理メモリから取り除かれていないページを追跡する。そのような場合では、プロセスがそれらのページにアクセスしようとする場合、それらのページは元にスワップインされずになお物理メモリで直接アクセスすることができる。しかし、メモリ・マネジャ304が他のプロセスのために物理メモリのページをより多く必要とする場合には、待機リストにあるページを割り当てることができる。一部の実施形態では、メモリ・マネジャ304はページ・ライター312も含み、ページ・ライター312は、(1つまたは複数の)ワーキング・セット322から(1つまたは複数の)ページファイル318に、および/または(1つまたは複数の)スワップ・ファイル320にページを書き込む(例えばページのスワップアウト)、かつ/または(1つまたは複数の)ワーキング・セット322にページを再度読み込む(例えばページのスワップイン)ように動作する。
例示的処理
図4A、図4B、図5、および図6は、各種実施形態による例示的処理を示すフローチャートである。これらの処理の動作は個々のブロックに示し、それらのブロックを参照して概説する。処理は論理的なフロー・グラフとして図示し、各動作は、ハードウェア、ソフトウェア、またはその組み合わせとして実施可能な1つまたは複数の動作を表す。ソフトウェアの文脈では、動作は、1つまたは複数のコンピュータ記憶媒体に記憶されたコンピュータ実行可能命令を表し、その命令が1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサが記載の動作を行うことができる。一般に、コンピュータ実行可能命令は、特定の機能を行う、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造等を含む。動作を説明する順序は制限と見なすべきでなく、記載される動作のうち任意数を任意の順序で組み合わせる、複数の下位動作にさらに分割する、かつ/または並行して実行して記載の処理を実施することができる。
図4Aは、実施形態によるワーキング・セットからページをスワップする例示的処理を示す。このスワップアウト処理は、メモリ・マネジャ304またはポリシー・マネジャ302など、OS208の1つまたは複数の構成要素によって行うことができる。402で、1つまたは複数のページをプロセスのワーキング・セットからスワップ・ファイルにスワップアウトすることを決定する。一部の実施形態では、この決定は様々な基準に基づいてポリシー・マネジャ302が行うことができる。場合によっては、スワップアウトする決定は、プロセスが非アクティブもしくは一時停止状態である、プロセスに関連付けられた1つまたは複数のスレッドが一定期間アクティブでない、プロセスが一定期間バックグラウンドにある、プロセスが一定期間内に一定数のページを使用していない、またはコンピューティング・システム全体が一時停止状態かつ/または非アクティブであるという判定に基づく。
スワップアウトすることが決定されると、404でプロセスのワーキング・セットからスワップする1つまたは複数の候補ページを特定する。一部の実施形態では、メモリ・マネジャがワーキング・セットの各ページを分析し、任意の基準に基づいて各ページがスワップアウトの候補となるかどうかを判定する。一部の実施形態では、スワップアウトの候補は、ワーキング・セットのプライベート・ページおよび/またはページファイルを利用した共有ページを含むことができる。一部の実施形態では、候補ページは、それらのページがクリーンであるかどうかに基づいて特定される。クリーンなページとは、ページファイルに書き込まれているがそれ以後変更されておらず、物理メモリにあるページの現在のバージョンがページファイル中のそのページと同じであるページである。ダーティなページは、ページファイルに書き込まれた後に変更のあったページ、またはまだページファイルに書き込まれていないページである。さらに、一部の実施形態では、ページがスワップアウトの候補となるかどうかを決定する際に、ページがメモリにロックされているか否かを考慮することができる。
406で、特定された候補ページの合計の大きさの計算に基づいてスワップ・ファイルに空間が確保される(例えば確保された空間106)。408で、候補ページごとに、スワップ・ファイルの確保された空間で場所が割り振られるか、または確保される。一部の実施形態では、場所は、ワーキング・セットにある候補ページの仮想アドレスに従って仮想アドレスの順序で確保される。そのため、候補ページがワーキング・セット内で連続していない場合でも、スワップ・ファイルではそれらのページの場所は連続する。スワップ・ファイルの確保された空間内で候補ページの場所を、連続した順次並んだものとすることにより、後のスワップ・ファイルからの読出しを、順次並んだ大きなブロック単位で行うことができ、スワップインが効率的になる。一部の実施形態では、スワップ・ファイル中の空間の確保は、2011年3月7日に出願された米国特許出願第13/042,128号、名称「Pagefile Reservations」に記載されるように進めることができる。408で候補ページの場所が確保されると、それらの候補ページはスワップアウトされたと言うことができる。410で、スワップアウトされた候補ページのリスト(または他のデータ構造)が更新される。一部の実施形態では、このリストは408で場所が確保された時に更新される。
場所が確保され、リストが更新されると、いずれかの後の時点にメモリ・マネジャが、スワップアウトされたページの一部またはすべてをスワップ・ファイルの各自の確保された場所に書き込むことを選択する。図4Bは、実施形態によるスワップアウトされたページを書き込む例示的処理の図である。412で、特定された候補ページの1つまたは複数をスワップ・ファイルに書き込むことを決定する(例えばワーキング・セットからページをスワップアウトする)。一部の実施形態では、この決定は、スワップアウトする決定に至った(402)基準が有効であるまま一定の閾値時間が経過したという判定に基づくことができる。例えば、プロセスが非アクティブまたは一時停止状態であるまま任意の時間(例えば5分)が経過する。一部の実施形態では、この決定は、1つまたは複数のアクティブなプロセスが使用するために今より多くの物理メモリが必要であるとメモリ・マネジャが判断することに基づいて行われる。
412で1つまたは複数の候補ページをスワップ・ファイルに書き込むことが決定されると、414で、書き込まれる1つまたは複数の候補ページがワーキング・セットから取り除かれる。一部の実施形態では、候補ページのすべてが取り除かれ、1回または複数回の書込み動作でスワップ・ファイルに書き込まれる。一部の実施形態では、候補ページの一部が取り除かれる。一部の実施形態では、書き込む候補ページは、メモリの需要に基づいて決定される(例えばメモリ・マネジャがより多くの物理メモリを必要とすることに基づく)。一部の実施形態では、スワップアウトする候補ページの決定は、それらのページが最後にプロセスからアクセスされてからの時間に基づくことができる。例えば、メモリ・マネジャは、最後に使用されてから最も時間が経っており、一定時間内にプロセスからアクセスがないページをスワップアウトすることを選択する。
一部の実施形態では、候補ページの取り除きは、スワップ・ファイル内にその候補ページの場所が確保された順番と整合する順序でワーキング・セットから取り除くことにより最適化することができる。例えば、場所が仮想アドレスの順序で確保された場合などには、候補は仮想アドレスの順序でワーキング・セットから取り除くことができる。一部の実施形態では、ワーキング・セットからの候補ページの取り除きは、任意かつ/または無作為(例えば順に配置しない)としてもよいが、それでも候補ページは仮想アドレスの順序に基づいてスワップ・ファイル中では順次並んだ場所に書き込まれる。一部の実施形態では、ページは、メモリ・マネジャがそれらのページをアクティブなプロセスのために使用することを必要とするまで、物理メモリのワーキング・セットに残っている(例えばスワップ・ファイルに書き込まれた後も)。
416で、候補ページがスワップ・ファイルに書き込まれる。一部の実施形態では、候補ページは、各自の仮想アドレスの順序に従ってスワップ・ファイル中で順次並んだ確保された場所に書き込まれる(例えばワーキング・セットにおけるページの仮想アドレスに従った昇順または降順)。さらに、候補ページをまとめて可能な限り大きなメモリ・ブロックに書込みを行うことにより、および/または書込み動作を順次的仮想アドレスの順序で行うことにより、書込み動作自体を最適化する、かつ/または効率的に行うことができる。一部の実施形態では、ページ・ライター312が書込み動作を行って、候補ページをスワップ・ファイルの各自に確保された場所に書き込む。候補ページに確保された場所が割り当てられていない場合は、ページはページファイルに書き込むことができる。一部の実施形態では、書き込まれたページのアドレスを任意のデータ構造でメモリ・マネジャが保存しておいて、スワップ・ファイルからページを読み出すために使用することができる。
場合によっては、412でスワップアウトされたページを書き込まないことを決定する場合もある。そのような場合は、418で、確保された場所をスワップインが発生するまで保持しておく(図5で説明する)。一部の実施形態では、スワップを行うことになった最初の決定(例えば402)をもたらした条件が一定の閾値時間後に成立しなくなっている場合は、候補ページをスワップ・ファイルに書き込まないことを決定してもよい。例えば、プロセスが再度アクティブになっている、またはもはや一時停止状態でなくなっている場合がある。他の場合には、ページをスワップインする条件は、例えば、候補ページの1つまたは複数がプロセスからアクセスされている場合(例えば、それらのページが物理メモリから取り除かれていた場合にはページ・フォルトが発生する条件)には、それらの候補ページがスワップ・ファイルに書き込まれる前に発生してもよい。
一部の実施形態は、402でスワップアウトする決定がなされた後に一定の時間をかけてワーキング・セットからページが取り除かれる最適化を支援する。さらに、使用のパターンに応じてページのグループをスワップアウトおよび/またはページファイルに書き込むことができる。例えば、メモリ・マネジャは、プロセスから最後にアクセスされてからの時間が最も短い(例えば過去5秒以内にアクセスがあった)最初のページのグループをスワップアウトおよび/または書込み、その後、一定時間の経過後に、最後にアクセスされてからの時間がそれよりも長い(例えば過去5秒〜過去10秒の間にアクセスがあった)第2のページのグループをスワップアウトする、かつ/または書き込む。場合によっては、そのようなグループは代わりに、最後にアクセスされてからの時間が最も長い方から、最後にアクセスされてからの時間が最も短い方に向かう順序にしてもよい。一部の実施形態では、ページのスワップアウトおよび/または書き出しは、特定の活動やプロセス実行の段階に基づくことができる。例えば、アプリケーションは特定の段階に入ったり、特定の挙動を行ったりすることがあり、その段階や挙動に関連するページ(またはその段階や挙動に関連しないページ)をメモリ・マネジャがスワップアウトしてもよい。
さらに、実施形態は最適化の各種組み合わせを支援する。例えば、ページのグループをスワップアウトし、次いで同様のグループまたは異なる方法で決定されたグループをスワップ・ファイルに書き込むことができる。別の例として、ページのワーキング・セット全体をスワップアウトし、次いで本明細書に記載されるようにスワップ・ファイルに書き込むページのグループを特定してもよい。
さらに、一部の実施形態では、プロセスのワーキング・セットからの1つまたは複数のページのスワップアウトは、プロセスの現在の状態を二次記憶部に保存するものと考えることができ、メモリ・マネジャがスワップアウトしたページをスワップインする時に、プロセスを、例えばプロセスが一時停止された、または非アクティブになった時の状態に戻す。一部の実施形態では、実行中のプロセスが、スワップアウトされたページがスワップインされる前にそれらのページへのアクセスを求める場合がある。そのような場合、メモリ・マネジャは、すべてのスワップアウトされたページをスワップインし、アクセスが要求されるページをスワップインし、かつ/または仮想アドレス空間内で要求される(1つまたは複数の)ページに近い1つまたは複数のページをスワップインすることを決定することができる。これは、スワップ・ファイル内のスワップインされるページの場所の確保を解放することを含むこともできる。
図5は、実施形態による、二次記憶部から物理メモリのプロセスのワーキング・セットにページをスワップインする例示的処理を示す図である。一部の実施形態では、スワップイン処理は、メモリ・マネジャ304やポリシー・マネジャ302など、OS208の1つまたは複数の構成要素によって行われる。502で、あるプロセスのワーキング・セットから以前にスワップアウトされた1つまたは複数のページをスワップインすることを決定する。一部の実施形態では、この決定はポリシー・マネジャ302で行われ、各種基準に基づく。そのような基準には、プロセスが非アクティブまたは一時停止状態でなくなった、またはプロセスが物理メモリにない1つまたは複数のページへのアクセスを要求している(例えばページ・フォルトが発生した)旨の指示を受け取ることが含まれる。一部の実施形態では、基準は、402でスワップアウトする決定をもたらした条件の終息を含む。
504で、1つまたは複数の以前にスワップアウトされたページがスワップイン対象として特定される。502でスワップインすることが決定された時に、スワップアウトされたページの1つまたは複数がもう物理メモリにない可能性がある。例えば、メモリ・マネジャが、1つまたは複数のスワップアウトされたページを他のプロセスのために使用している場合がある。したがって、504のスワップインするページの特定は、もう物理メモリにないスワップアウトされたページを特定することを含むことができる。一部の実施形態では、スワップインするページの特定は、スワップアウトされた時にアドレスがメモリ・マネジャによってデータ構造に保存されたページに基づく。一部の実施形態では、プロセスが1つまたは複数のページにアクセスする試みが失敗すると(例えばページ・フォルト)、それらのページをスワップインさせることができる。
506で、以前にスワップアウトされたことが特定された1つまたは複数のページが、上記で図4Bに関して説明したようにスワップ・ファイルに書き込まれているかどうか、およびそのページが物理メモリから除去されているかどうかを判定する。一部の実施形態では、508で、ページがスワップ・ファイルに書き込まれており、物理メモリから除去されている場合、スワップインするために特定されたページがスワップ・ファイルの各自の場所から読み出されて、物理メモリのワーキング・セットに戻される。場合によっては、ページがワーキング・セットから取り除かれているが、物理メモリから除去されていない場合もある(例えばページが待機リストにキャッシュされた場合)。そのような場合は、キャッシュされたページを待機リストからワーキング・セットに追加して戻し、そのページに確保された場所を解放するが、それらのページをスワップ・ファイルから読み出す必要はない。さらに、ワーキング・セットのページの一部はスワップアウト後に物理メモリから除去されているが、他のページは待機リストにキャッシュされたままになる場合がある。そのような場合は、物理メモリから除去されたページをスワップ・ファイルから読み出し、キャッシュされたページと共にワーキング・セットに追加して戻す。
一部の実施形態では、このページの読み込みは、プロセスのページ・フォルトが起きた時に発生する読出しと同様に行うことができる。ただし、実施形態は、大きなメモリ・ブロック、および/または順次的仮想アドレスの順序での読出しを支援し、これは、したがって、二次記憶部の任意の場所から小さいブロックを読み出すよりも効率的である。例えば、ページがスワップ・ファイルに確保された一続きのブロック(または場合によっては、下記のようにいくつかの連続したブロック)に書き込まれ、順次的仮想アドレスの順序で書き込まれたため、複数のページのまとまりを大きなブロックで、かつ順次的仮想アドレスの順序で読み込むことができ、読出し動作をより効率的にすることができる。
一部の実施形態では、システム性能および/または可用性のために、ユーザが以前に非アクティブまたは一時停止状態であったプロセスが再びアクティブになるのを待っている可能性がある(例えばそのプロセスがユーザ・アプリケーションである場合など)を考慮すると、スワップアウトされたページの読み込みを効率的に行うことが有益である場合がある。これを考慮して、一部の実施形態は、スワップアウト前のアクセス頻度に基づく順序でページが物理メモリに読み戻される最適化を支援することができる。例えば、ワーキング・セットからページをスワップアウトする前に、メモリ・マネジャが、どのページがプロセスからアクセスされる頻度が高かったか、または最後にアクセスされてからの時間が短かったかを追跡し、そのようなページは他のページよりも早くスワップインすることができる。
例えば、第1のページ・グループは一定時間内に(例えばアプリケーションが一時停止する前の5秒間に)アクセスがあったことを判定することができ、第2のページのグループは次の時間内に(例えば5秒〜10秒の間に)アクセスがあったことを判定することができ、第3のグループは次の時間内に(例えば10秒〜15秒の間に)アクセスがあったことを判定することができるなどである。そして、ページをスワップインすることが決定されると、第1のグループを最初にスワップインし、第1のグループの後に第2のグループをスワップインし、第2のグループの後に第3のグループをスワップインするなどである。そのような最適化を行うと、スワップアウトの前にプロセスから最後にアクセスされてからの時間が最も短いページが最初にスワップインされるページになることを考慮すると、プロセスが少なくとも部分的にアクティブになり、より早くユーザによって使用できるようになることを保証することができる。
さらに、一部の実施形態は、ワーキング・セットに関連するメモリ管理がスワップ動作の前に行われる最適化を支援することができる。例えば、スワップアウト処理中に、メモリ・マネジャがワーキング・セットの一部またはすべてを前もって「老化(age)」させて、ワーキング・セットにあるページのサブセットが新しいと判断されるようにする。そして、このページのサブセットをスワップアウトする、かつ/またはスワップ・ファイルに書き込む。スワップイン時には、すべてのメモリ・ページがスワップアウトされているのではなく、したがってそれよりも少ないページをスワップ・ファイルから読み出せばよいことを考慮すると、多少の最適化を実現することができる。
510で、スワップ・ファイル内のスワップアウトされたページに確保された場所を解放する。一部の実施形態では、確保された場所の解放は、506でスワップインするページがスワップ・ファイルの各自の確保された場所に書き込まれていないと判定された場合にも行うことができる。
図6は、実施形態による、動的にスワップ・ファイルを管理する例示的処理を示す図である。一部の実施形態では、この処理は、メモリ・マネジャ304など、OS208の構成要素によって実行される。602でスワップ・ファイルが初期化される。一部の実施形態では、スワップ・ファイルは、コンピューティング・システムがブートする時に所定サイズ(例えば256MB)で初期化される。他の実施形態では、スワップ・ファイルは、メモリ・マネジャがスワップ動作を行うと判定した時に初期化され、スワップしようとするページを収容するのに十分な初期サイズに初期化することができる。
メモリ・マネジャ(または他のOS構成要素)が動作するのに従って、上記で図4Aに関して説明したように、604で物理メモリで実行中のプロセスのワーキング・セットから1つまたは複数のページをスワップアウトすることが決定される。その後、606で、スワップアウトされたページをスワップ・ファイルに書き込む場合、そのページを収容するためにスワップ・ファイルに追加的な空間が必要かどうかを判定する。さらに空間が必要な場合は、608でスワップ・ファイルのサイズを動的に増大することができる。一部の実施形態では、スワップ・ファイルのサイズを増大する決定は、メモリ・マネジャが、スワップ・ファイルの現在のサイズでは対応できないページ・スワップ要求を受け取ることに基づく。さらに、一部の実施形態ではスワップ・ファイルに最大のサイズを設ける。一部の実施形態では、スワップ・ファイルの初期サイズおよび/またはそのサイズの動的な変更は、少なくとも部分的に、システムで実行されているプロセスのサイズおよび/または種類によって決まる。
610でスワップアウト動作および/または書込み動作が上記のように行われる。後のいずれかの時点で、612で、スワップアウトされたページの1つまたは複数をスワップインすることが決定され、614でスワップ・ファイル中の1つまたは複数のページの確保された場所が解放される。スワップインおよび確保された場所の解放は、上記で図5に関して説明したように行われる。616で、例えば612のスワップイン動作および614の確保された場所の解放の後、スワップ・ファイルに必要とされる空間が今よりも少なくてよいと判断される場合がある。そのような状況では、618でスワップ・ファイルのサイズを動的に縮小することができる。一部の実施形態では、スワップ・ファイルのサイズを縮小する決定は、1つまたは複数のプロセスについてのページのスワップインの結果、必要とされるスワップ・ファイル空間が減ったという判定に基づく。一部の実施形態では、スワップ・ファイル中の空き空間を、メモリ・マネジャによるスワップアウトされた後に行われるページの書込みに再使用し、メモリ・マネジャは、断片化をできる限り抑えるように(例えばページはより大きく連続したブロック、および/または順次的仮想アドレスの順序で保存されることが好ましい)、スワップ・ファイルの空間を再使用することができる。
実施形態は、スワップ動作を、順次並んだページのまとまりで大きな読出しおよび書込みとして行うことを試みるので、スワップ・ファイル自体が二次記憶部で断片化が少なく、より連続していることが有利である可能性がある。そのために、一部の実施形態では、メモリ・マネジャがより多くのスワップ・ファイル空間が必要であると判断すると、スワップ・ファイルが縮小する量(例えば64MB)よりも大きな任意のブロック・サイズ(例えば128MB)でオペレーティング・システムに追加の空間を要求することができる。ファイル・システムは、要求された追加のスワップ・ファイル空間を二次記憶部内で連続した空間(または少ない数の連続した空間のブロック)に見つけようとすることを考慮すると、大きなブロックで追加の空間を要求することにより、実施形態はスワップ・ファイルの外部断片化の可能性を低減することができる。
さらに、連続したスワップ・ファイルが望ましいことから、実施形態は、図3に示すようにページファイルとは別のスワップ・ファイルを用いる。別個の専用のスワップ・ファイルを使用することにより、スワップ・ファイルが1つの連続したブロック(または少ない数の連続したブロック)として作成および/または拡張される可能性を高めることができる。一部の実施形態は、本明細書に記載されるスワップ動作にページファイルの使用を支援するが、ページファイルを用いる従来のページング方法が任意で連続していないことを考えると、そのようなシナリオでは、スワップ・ファイルに外部断片化が生じ、したがって大きな順次的入出力動作に適さなくなる可能性が高まる可能性がある。そのため、別個のスワップ・ファイルを使用すると、より大きく、より順次的入出力動作の可能性が高まることから、実施形態は、別個の専用のスワップ・ファイルの使用を支援して入出力動作の効率を高める。
さらに、実施形態は、二次記憶部内で任意数のセグメントに分散された、別個ではあるが連続していないスワップ・ファイルに対応することができる。一部の実施形態は、そのようなセグメントの最大数(例えば5個)に対応して、スワップ・ファイルが過度に不連続にならないように保証する。一部の実施形態では、単一のスワップ・ファイルを、コンピューティング・システム上のすべてのプロセスからページをスワップするために用いることができる。他の実施形態では、コンピューティング・システムの個々のプロセスまたはプロセスのグループごとに別個のスワップ・ファイルを用いることもできる。
結び
本技術について構造的特徴および/または方法論的動作に固有の術語で説明したが、添付の特許請求の範囲は必ずしも記載の具体的な特徴や動作に限定されないことを理解されたい。むしろ、具体的な特徴や動作は、そのような技術の実装形態として開示するものである。

Claims (9)

  1. コンピュータで実施される方法であって、
    プロセスのページのワーキング・セットからスワップする1つまたは複数の候補ページを特定するステップと、
    二次記憶部内のスワップ・ファイルに空間を確保するステップであって、確保される前記空間は、前記1つまたは複数の候補ページの合計サイズに対応する、ステップと、
    特定された1つまたは複数の候補ページを前記スワップ・ファイルに書き込む決定をするステップと、
    特定された1つまたは複数の候補ページを書き込む決定をしたとき、書き込まれる前記1つまたは複数の候補ページを前記ワーキング・セットから取り除くステップと、書き込まれる前記1つまたは複数の候補ページを、前記スワップ・ファイルの確保された前記空間内の順次並んだ連続した場所に書き込むステップと、
    特定された前記1つまたは複数の候補ページを書き込まない決定をしたとき、スワップインが発生するまで、確保された前記場所を保持するステップと
    を含む方法。
  2. 書き込まれる前記1つまたは複数の候補ページは、前記候補ページの場所が前記スワップ・ファイルに確保された順序と一致した順序で取り除かれる、請求項1に記載の方法。
  3. 前記順次並んだ連続した場所は、一続きに、かつ順次的仮想アドレス順序で前記1つまたは複数の候補ページに割り当てられる、請求項1に記載の方法。
  4. 前記書き込まれた候補ページの少なくとも一部のまとまりを、順次的仮想アドレス順序で前記スワップ・ファイルの前記確保された空間から前記プロセスの前記ワーキング・セットに読み込むステップをさらに含む、請求項1に記載の方法。
  5. 前記候補ページの1つまたは複数を書き込む前記ステップが仮想アドレスの順序で連続して行われる、請求項1に記載の方法。
  6. 少なくとも1つのプロセッサと、
    メモリと、
    前記少なくとも1つのプロセッサによって実行されるメモリ・マネジャとを有するシステムであって、前記メモリ・マネジャは、
    前記メモリで実行中のプロセスのページのワーキング・セットからスワップする1つまたは複数の候補ページを特定し、
    前記システムの二次記憶部内のスワップ・ファイルに空間を確保し、前記確保される空間は、前記1つまたは複数の候補ページの合計サイズに対応し、
    特定された1つまたは複数の候補ページを前記スワップ・ファイルに書き込む決定をし、
    特定された1つまたは複数の候補ページを書き込む決定をしたとき、書き込まれる前記1つまたは複数の候補ページを前記ワーキング・セットから取り除き、書き込まれる前記1つまたは複数の候補ページを、前記スワップ・ファイルの確保された前記空間内の順次並んだ連続した場所に書き込み、
    特定された前記1つまたは複数の候補ページを書き込まない決定をしたとき、スワップインが発生するまで、確保された前記場所を保持する
    ように動作する、システム。
  7. 前記少なくとも1つのプロセッサによって実行され、検出された前記プロセスの状態に基づいて前記プロセスの前記ワーキング・セットの少なくとも一部分をスワップすることを決定するポリシー・マネジャをさらに備える請求項6に記載のシステム。
  8. 前記メモリ・マネジャがさらに、前記1つまたは複数の書き込まれた候補ページを、前記スワップ・ファイルの前記確保された空間から、前記プロセスの前記ワーキング・セットに順次的仮想アドレス順序で読み込むように動作する請求項6に記載のシステム。
  9. 少なくとも1つのプロセッサに請求項1ないしいずれか一項に記載の方法を実行させるコンピュータプログラム。
JP2014547453A 2011-12-14 2012-12-14 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ Active JP6198226B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/326,182 2011-12-14
US13/326,182 US8832411B2 (en) 2011-12-14 2011-12-14 Working set swapping using a sequentially ordered swap file
PCT/US2012/069602 WO2013090646A2 (en) 2011-12-14 2012-12-14 Working set swapping using a sequentially ordered swap file

Publications (3)

Publication Number Publication Date
JP2015506041A JP2015506041A (ja) 2015-02-26
JP2015506041A5 JP2015506041A5 (ja) 2016-01-21
JP6198226B2 true JP6198226B2 (ja) 2017-09-20

Family

ID=47968573

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014547453A Active JP6198226B2 (ja) 2011-12-14 2012-12-14 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ

Country Status (12)

Country Link
US (2) US8832411B2 (ja)
EP (1) EP2791806B1 (ja)
JP (1) JP6198226B2 (ja)
KR (1) KR102093523B1 (ja)
CN (1) CN103019948B (ja)
AU (1) AU2012352178B2 (ja)
BR (1) BR112014014274B1 (ja)
CA (1) CA2858109C (ja)
IN (1) IN2014CN04049A (ja)
MX (1) MX348643B (ja)
RU (1) RU2616545C2 (ja)
WO (1) WO2013090646A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9134954B2 (en) * 2012-09-10 2015-09-15 Qualcomm Incorporated GPU memory buffer pre-fetch and pre-back signaling to avoid page-fault
US9524233B2 (en) * 2013-03-05 2016-12-20 Vmware, Inc. System and method for efficient swap space allocation in a virtualized environment
US9798673B2 (en) * 2013-03-14 2017-10-24 Sandisk Technologies Llc Paging enablement of storage translation metadata
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
KR102088403B1 (ko) 2013-08-08 2020-03-13 삼성전자 주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
CN104468745A (zh) * 2014-11-24 2015-03-25 惠州Tcl移动通信有限公司 一种基于网络的文件传输方法及系统
KR102403063B1 (ko) * 2014-12-05 2022-05-30 삼성전자주식회사 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법
US9436608B1 (en) 2015-02-12 2016-09-06 International Business Machines Corporation Memory nest efficiency with cache demand generation
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
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10726127B1 (en) * 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10310854B2 (en) 2015-06-30 2019-06-04 International Business Machines Corporation Non-faulting compute instructions
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10061539B2 (en) * 2015-06-30 2018-08-28 International Business Machines Corporation Inaccessibility status indicator
CN106547477B (zh) * 2015-09-22 2019-07-19 伊姆西公司 用于在线地减少缓存设备的方法和装置
US10387329B2 (en) * 2016-02-10 2019-08-20 Google Llc Profiling cache replacement
CN107305532B (zh) * 2016-04-25 2023-04-07 中兴通讯股份有限公司 一种表项替换方法、装置及终端
US11408846B2 (en) 2016-10-31 2022-08-09 University Of Utah Research Foundation Laterally actuated amplified capacitive vapor sensor
US11487568B2 (en) 2017-03-31 2022-11-01 Telefonaktiebolaget Lm Ericsson (Publ) Data migration based on performance characteristics of memory blocks
CN111474913B (zh) * 2019-01-23 2021-07-20 北京新能源汽车股份有限公司 一种程序运行监测方法、装置及电动汽车
CN113138941A (zh) 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
KR20220051546A (ko) * 2020-10-19 2022-04-26 삼성전자주식회사 전자장치 및 그 제어방법
CN112559384B (zh) * 2020-12-17 2022-04-15 南昌航空大学 一种基于非易失存储器的混合固态盘动态分区方法
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63168753A (ja) * 1987-01-07 1988-07-12 Nec Corp 高速スワツピング方式
CA1329432C (en) * 1988-11-02 1994-05-10 William Davy Method of memory and cpu time allocation for a multi-user computer system
US4965717A (en) 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5125086A (en) 1989-06-29 1992-06-23 Digital Equipment Corporation Virtual memory paging apparatus with variable size in-page clusters
US5101485B1 (en) 1989-06-29 1996-12-10 Frank L Perazzoli Jr Virtual memory page table paging apparatus and method
US5394537A (en) * 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
US5159678A (en) * 1990-06-11 1992-10-27 Supercomputer Systems Limited Partnership Method for efficient non-virtual main memory management
US5247687A (en) 1990-08-31 1993-09-21 International Business Machines Corp. Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time
CA2285096C (en) 1991-11-12 2000-05-09 Ibm Canada Limited-Ibm Canada Limitee Logical mapping of data objects using data spaces
US5826057A (en) 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5628023A (en) * 1993-04-19 1997-05-06 International Business Machines Corporation Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view
US5802599A (en) 1994-02-08 1998-09-01 International Business Machines Corporation System and method for allocating storage in a fragmented storage space
US5555399A (en) * 1994-07-07 1996-09-10 International Business Machines Corporation Dynamic idle list size processing in a virtual memory management operating system
US5966735A (en) * 1996-11-22 1999-10-12 Digital Equipment Corporation Array index chaining for tree structure save and restore in a process swapping system
US6681239B1 (en) 1996-12-23 2004-01-20 International Business Machines Corporation Computer system having shared address space among multiple virtual address spaces
US6128713A (en) 1997-09-24 2000-10-03 Microsoft Corporation Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
JP3444346B2 (ja) * 1999-01-04 2003-09-08 日本電気株式会社 仮想メモリ管理方式
US6496912B1 (en) 1999-03-25 2002-12-17 Microsoft Corporation System, method, and software for memory management with intelligent trimming of pages of working sets
US6496909B1 (en) 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
US6442664B1 (en) * 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US7107299B2 (en) * 2001-08-14 2006-09-12 Hewlett-Packard Development Company, L.P. Method and apparatus for managing large numbers of objects having the same property
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
TWI267024B (en) * 2004-06-18 2006-11-21 Winbond Electronics Corp Method and apparatus for connecting LPC bus and serial flash memory
US20060161912A1 (en) * 2005-01-18 2006-07-20 Barrs John W Infrastructure for device driver to monitor and trigger versioning for resources
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7437529B2 (en) 2005-06-16 2008-10-14 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US20070156386A1 (en) * 2005-12-30 2007-07-05 Guenthner Russell W Linearization of page based memory for increased performance in a software emulated central processing unit
US7484074B2 (en) * 2006-01-18 2009-01-27 International Business Machines Corporation Method and system for automatically distributing real memory between virtual memory page sizes
US7624240B1 (en) 2006-10-17 2009-11-24 Vmware, Inc. Separate swap files corresponding to different virtual machines in a host computer system
US8024546B2 (en) 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US20110153978A1 (en) 2009-12-21 2011-06-23 International Business Machines Corporation Predictive Page Allocation for Virtual Memory System
KR20120066198A (ko) * 2010-12-14 2012-06-22 삼성전자주식회사 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법
US8972696B2 (en) 2011-03-07 2015-03-03 Microsoft Technology Licensing, Llc Pagefile reservations
KR101221241B1 (ko) 2011-08-26 2013-01-11 린나이코리아 주식회사 실 팩킹 및 조리장치와 외부 설치구조물의 실 팩킹구조
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
JP5851437B2 (ja) * 2013-03-04 2016-02-03 株式会社伊藤製作所 フィルタープレスの濾枠におけるスペーサの補強材

Also Published As

Publication number Publication date
CN103019948B (zh) 2016-09-21
MX348643B (es) 2017-06-22
MX2014007167A (es) 2014-08-21
RU2014123660A (ru) 2015-12-20
EP2791806A4 (en) 2015-08-05
CA2858109C (en) 2020-10-06
US20140351552A1 (en) 2014-11-27
JP2015506041A (ja) 2015-02-26
WO2013090646A2 (en) 2013-06-20
WO2013090646A3 (en) 2013-08-01
IN2014CN04049A (ja) 2015-07-10
CA2858109A1 (en) 2013-06-20
AU2012352178B2 (en) 2017-08-10
US9081702B2 (en) 2015-07-14
KR20140102679A (ko) 2014-08-22
EP2791806B1 (en) 2020-01-22
US20130159662A1 (en) 2013-06-20
EP2791806A2 (en) 2014-10-22
BR112014014274A2 (pt) 2017-06-13
CN103019948A (zh) 2013-04-03
US8832411B2 (en) 2014-09-09
KR102093523B1 (ko) 2020-03-25
RU2616545C2 (ru) 2017-04-17
AU2012352178A1 (en) 2014-07-03
BR112014014274B1 (pt) 2021-09-14

Similar Documents

Publication Publication Date Title
JP6198226B2 (ja) 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ
US8972696B2 (en) Pagefile reservations
US9298377B2 (en) Techniques for reducing read I/O latency in virtual machines
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
JP5943096B2 (ja) 複合不揮発性記憶装置のためのデータ移行
CN103019962B (zh) 数据缓存处理方法、装置以及系统
US20200175074A1 (en) Tree structure aware cache eviction policy
US8868622B2 (en) Method and apparatus for allocating resources in a computer system
US20140254042A1 (en) Dynamic allocation of lba to un-shingled media partition
US10747668B2 (en) Efficient global cache partition and dynamic sizing for shared storage workloads
US9983826B2 (en) Data storage device deferred secure delete
US20070027940A1 (en) Defragmenting one or more files based on an indicator
US10073851B2 (en) Fast new file creation cache
KR20110033066A (ko) 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법
US11029863B2 (en) Using non-volatile random access memory as volatile random access memory
US20110153929A1 (en) Disk memory utilization management using available slot clusters
JP5287374B2 (ja) ストレージシステム、領域回収方法及び領域回収プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170628

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

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20170815

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170816

R150 Certificate of patent or registration of utility model

Ref document number: 6198226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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