(57)【要約】  記載される技術は、二次記憶部の順次並んだ場所への大きなページの書込みおよび読出しを使用することにより、プロセスのページのワーキング・セットとの間で効率的にメモリ・ページをスワップできるようにする。プロセスのワーキング・セットから二次記憶部にページを書き込む際、ページは、仮想アドレスの順序または他の順序に従って、専用のスワップ・ファイル内に確保された連続した場所に書き込むことができる。そのように順次並んだ場所に書き込むことで、大きな連続したメモリのブロックでページのまとまりを読み出すことが可能になり、物理メモリにページを戻すための読出し動作の効率が向上する。
2015506041.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実施される方法であって、
プロセスのページのワーキング・セットからスワップする１つまたは複数の候補ページを特定するステップと、
二次記憶部内のスワップ・ファイルに空間を確保するステップであって、前記確保される空間は、前記１つまたは複数の候補ページの合計サイズに対応する、ステップと、
前記候補ページの１つまたは複数を、前記スワップ・ファイルの前記確保された空間内の順次並んだ場所に書き込むステップと
を含む方法。
【請求項２】
書き込まれる前記１つまたは複数の候補ページを、前記ワーキング・セットから順次的アドレス順序で取り除くステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記順次並んだ場所は、一続きに、かつ順次的仮想アドレス順序で前記１つまたは複数の候補ページに割り当てられる、請求項１に記載の方法。
【請求項４】
前記書き込まれた候補ページの少なくとも一部のまとまりを、順次的アドレス順序で前記スワップ・ファイルの前記確保された空間から前記プロセスの前記ワーキング・セットに読み込むステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記スワップ・ファイル内で前記場所を一続きに確保するステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記候補ページの１つまたは複数を書き込む前記ステップが仮想アドレスの順序で連続して行われる、請求項１に記載の方法。
【請求項７】
少なくとも１つのプロセッサと、
メモリと、
前記少なくとも１つのプロセッサによって実行され、
前記メモリで実行中のプロセスのページのワーキング・セットからスワップする１つまたは複数の候補ページを特定し、
前記システムの二次記憶部内のスワップ・ファイルに空間を確保し、前記確保される空間は、前記１つまたは複数の候補ページの合計サイズに対応し、
前記候補ページの１つまたは複数を、前記スワップ・ファイルの前記確保された空間内の順次並んだ場所に書き込む
ように動作するメモリ・マネジャと
を備えるシステム。
【請求項８】
前記少なくとも１つのプロセッサによって実行され、検出された前記プロセスの状態に基づいて前記プロセスの前記ワーキング・セットの少なくとも一部分をスワップすることを決定するポリシー・マネジャをさらに備える請求項７に記載のシステム。
【請求項９】
前記メモリ・マネジャがさらに、前記１つまたは複数の書き込まれた候補ページを、前記スワップ・ファイルの前記確保された空間から、前記プロセスの前記ワーキング・セットに順次的アドレス順序で読み込むように動作する請求項７に記載のシステム。
【請求項１０】
少なくとも１つのプロセッサによって実行されると、前記少なくとも１つのプロセッサに、
プロセスのページのワーキング・セットからスワップする１つまたは複数の候補ページを特定する動作と、
二次記憶部内のスワップ・ファイルに空間を確保する動作であって、前記確保される空間は、前記１つまたは複数の候補ページの合計サイズに対応する、動作と、
候補ページの１つまたは複数の各々を、前記スワップ・ファイルの前記確保された空間の確保された場所に書き込む動作であって、前記確保された場所は順次的アドレス順序である、動作と、
前記書き込まれた候補ページの少なくとも一部のまとまりを、順次的アドレス順序で前記スワップ・ファイルの前記確保された空間から前記プロセスの前記ワーキング・セットに読み込む動作と
を含む動作を行うように指示する命令を記憶した１つまたは複数のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングシステムに関し、より具体的にはコンピューティングシステムにおける記憶に関する。
【背景技術】
【０００２】
コンピューティング・システムは主記憶（しばしば物理メモリと呼ばれる）を使用して、ソフトウェア・プログラムやアプリケーションを含むプロセスを実行する。現在のシステムでは、この主記憶は一般にランダム・アクセス・メモリ（ＲＡＭ）などの揮発性メモリを含む。オペレーティング・システム（ＯＳ）は、各プロセスに、そのプロセスが物理メモリで実行される時に使用するいくつかのメモリ・ページを割り当てることができる。しかし、アクティブなプロセスは、システムで利用できるよりも多くの物理メモリを使用する場合がある。そのような場合は、すべてのプロセス・ページを物理メモリに維持する代わりに、仮想メモリを利用してアクティブなプロセスに使用される物理メモリを補うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願第１３／０４２，１２８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想メモリは、プロセスの１つまたは複数のページを二次記憶部（例えばハード・ドライブ）の不揮発性メモリに書き込み、必要に応じてそのページを読み出して物理メモリに戻すことによって実現することができる。例えば、データがプロセスによって活発に使用されていない時には、そのようなデータを含んでいるページを二次記憶部に書き込むことによって物理メモリの空間を解放することができる。この物理メモリと仮想メモリ間のページの読出しと書込みのプロセスを一般にページングと呼び、ページを書き込むための二次記憶部の空間を一般にページファイルと言う。プロセスに対してこのページングが行われる速度と効率がシステム性能およびユーザ体験に影響する可能性がある。
【課題を解決するための手段】
【０００５】
従来のページング動作は、現在アクティブなプロセスのメモリ要件に基づいて物理メモリから二次記憶部に個々のページをページアウトする傾向があり、その結果二次記憶部の断片化が生じる場合がある。本出願は、二次記憶部の連続的に配置された場所への大きなページの書込みおよび読出しを使用することにより、プロセスのページのワーキング・セットとの間で１つまたは複数のページを効率的にスワップする技術を記載する。読出しおよび書込みは、順次並んだメモリ・ブロック、および／またはより大きいメモリ・ブロックで行える場合に効率が高くなる傾向があるため、本明細書に記載される技術は、スワップ動作時に、物理メモリの順次並んだ場所への大きな読出しおよび書込みを用いる。物理メモリから二次記憶部にページをスワップする際、ページは、各自の仮想アドレスの順序に従って、専用のスワップ・ファイル内に確保された連続した場所に書き込むことができる。そのような書込みにより、大きな順次並んだメモリのブロックでページをスワップインすることができ、スワップインがより効率的になる。
【０００６】
この概要は、下記の詳細な説明でさらに説明する概念のいくつかを簡略化した形態で紹介するために提供される。この概要は、特許請求の主題の主要な特徴を明らかにするものでも、特許請求の主題の範囲を限定するために使用すべきものでもない。
【０００７】
以下の詳細な説明は添付図面を参照して説明する。図では、参照符号の一番左の（１つまたは複数の）桁がその参照符号が最初に出現する図を特定する。異なる図で同じ参照符号が使われている場合は、同様または同一の要素を意味する。
【図面の簡単な説明】
【０００８】
【図１Ａ】実施形態による、スワップ・ファイルの順次並んだ場所にプロセスのワーキング・セットからページを書き込む例を説明する図である。
【図１Ｂ】実施形態による、スワップ・ファイルの順次並んだ場所にプロセスのワーキング・セットからページを書き込む例を説明する図である。
【図２】実施形態による、例示的なコンピューティング・システムを示す概略図である。
【図３】実施形態による、例示的なオペレーティング・システムの構成要素の概略図である。
【図４Ａ】実施形態による、ワーキング・セットからページをスワップアウトする例示的処理の流れ図である。
【図４Ｂ】実施形態による、スワップアウトされたページをスワップ・ファイルに書き込む例示的処理の流れ図である。
【図５】実施形態による、スワップ・ファイルからワーキング・セットにページをスワップインする例示的処理の流れ図である。
【図６】実施形態による、動的にスワップ・ファイルを管理する例示的処理の流れ図である。
【発明を実施するための形態】
【０００９】
概要
本明細書に記載される実施形態は、二次記憶部の連続的に配置された場所への大きなメモリのブロックを書込みおよび読出しを使用して、プロセスのページのワーキング・セットから効率的にメモリ・ページをスワップできるようにする。ランダム・アクセス・メモリ（ＲＡＭ）などの物理メモリで実行されるプロセスは、システムで利用できるよりも多くの物理メモリを必要とする場合がある。そのような場合は、従来構成のメモリ・マネジャやオペレーティング・システムの他の構成要素がページング動作を実施して、プロセスの１つまたは複数のメモリ・ページを二次記憶部のページファイルに書き込むことによりいくらかの物理メモリを解放することができる。従来のページングでは、プロセスの個々のページを必要に応じて書き込んで（すなわちページアウトして）物理メモリを解放し、プロセスがページにアクセスしたい時（例えばページ・フォルトが発生した時）に要求に応じてページングして物理メモリに戻すことができる。そのような従来の必要に応じた個々のページのページングはしばしばデマンド・ページングと呼ばれ、結果として二次記憶部の入出力（Ｉ／Ｏ）動作が不規則で小さくなり、各種ページが連続しない記憶空間に記憶され、一定の順序にならないことがある。
【００１０】
さらに、コンピューティング・システムにおける入出力動作（例えば読出しおよび書込み）は、一般に、順次並んだ大きな要求で行われる時の方が効率的になる。例えば、固体ディスクを用いるシステムでは、順次並んだ入出力動作を行うと、無作為な場所への要求と比べて２〜３倍の効率性の利得が得られる可能性がある。多くの場合、より大きなサイズの順次的要求にすると、サイズの小さい順次的要求と比べて同様の利得が得られる。さらに、回転ディスクを使用するシステムでは、効率の利得は５０倍にもなる場合がある。これらを考慮して、本明細書に記載の実施形態は、スワップ・ファイル中の順次並んだ場所により大きなページのまとまりを読み書きする入出力動作を使用することにより、効率的なスワップを可能にする。
【００１１】
本明細書で使用する場合、用語「ページ」は、実行中にプロセスに使用されるメモリのブロックを言う。プロセスがアクティブな時、ページは物理メモリにあり、プロセスからアクセスすることができる。メモリ・マネジャまたはオペレーティング・システム（ＯＳ）の他の構成要素が、物理メモリから１つまたは複数のページを取り除き、二次記憶部に書き込むことができる。ページは、二次記憶部からコピーすることによって物理メモリに読み戻すことができる。
【００１２】
１つまたは複数の実施形態では、ページはプロセスのプライベート・ページを含むことができる。本明細書で使用する場合、「プライベート・ページ」とは、プロセスに割り振られるヒープなど、特定のプロセスに所有され、または特定のプロセス専用とされ、他のプロセスに使用されないページを言う。他の種類のページには、ファイル・マッピングなど、複数のプロセスに使用される共有可能ページがある。一部の実施形態は、プライベート・ページの効率的なスワップを支援する。さらに、一部の実施形態は、ページファイルを利用した共有ページのスワップも支援することができる。これらの種類のページは、１つの場所（例えばページファイル）に記憶することができ、ハンドルまたはポインタによって参照することができる。プロセスは、そのようなページファイルを利用した共有ページへのハンドルを別のプロセスに渡し、ページは、プロセスがそのページへのハンドルを維持する限りメモリに存在し続けることができる。
【００１３】
本明細書で使用する場合、用語「ワーキング・セット」とは、１つのプロセスのためのページのセットを意味する。各実施形態は、各種のワーキング・セットを支援する。例えば、ワーキング・セットは、特定の時間間隔中にプロセスによってアクセスおよび／または参照されるデータのページを含むことができる。そのようなワーキング・セットは、近い将来（例えば次の時間間隔）にプロセスによってアクセスされる見込みが高いページのセットの近似を提供することができ、プロセスからすぐにアクセスできるように物理メモリにそのページを保持しておくことが望ましい。ただし実施形態はこれに限定されず、他の種類のページの集まりをワーキング・セットとして支援することができる。例えば、プロセスのワーキング・セットは、ＯＳを通らずにプロセッサから直接アクセスできるページとすることができる。
【００１４】
本明細書で使用される用語「スワップ・ファイル」とは、二次記憶部（例えばハード・ドライブ）に確保され、物理メモリとの間のページのスワップに使用される空間を言う。一部の実施形態では、スワップ・ファイルは、従来のページング動作に使用されるページファイルとは別の専用のスワップ・ファイルである。一部の実施形態では、スワップ・ファイルはページファイルの一部とすることができる。一部の実施形態では、図６を参照して本明細書で説明するように、スワップ・ファイルはメモリ・マネジャまたは他のＯＳの構成要素によって初期化され、そのサイズは動的に管理することができる。
【００１５】
実施形態は、プロセスのワーキング・セットからページをスワップアウトし、ワーキング・セットからスワップされた１つまたは複数のページを二次記憶部のスワップ・ファイルに書き込むことができる。上記のように、実施形態は、スワップ・ファイル中の順次並んだ場所に、大きなまとまりでページの書込みおよび／または読出しを行うことにより、効率的なスワップを可能にする。図１Ａおよび図１Ｂは、１つまたは複数の実施形態によるスワップアウトと書込みの例を示す。
【００１６】
図１Ａは、特定のプロセスであるプロセスＸのワーキング・セット１０２、および二次記憶部のスワップ・ファイル１０４を示す。ワーキング・セット１０２の１つまたは複数のページを物理メモリからスワップアウトすることを決定することができる。次いで、メモリ・マネジャなどのＯＳの構成要素が、ワーキング・セットのプライベート・ページなど、スワップアウトする候補ページとなるワーキング・セット１０２の１つまたは複数のページを特定する。特定された候補ページの合計サイズを計算することができる。そして、動作１０８でスワップ・ファイル１０４に確保された空間１０６を確保することができ、確保される空間は候補ページを記憶するのに十分な大きさである。さらに、各候補ページの場所を確保された空間１０６に確保することができ、それらの場所は、候補ページの仮想アドレスの順序に従って連続して配置される。この時点で、一部の実施形態では、候補ページはスワップ・ファイルに書き込まれていないものの候補ページがスワップアウトされたと言うことができる。
【００１７】
図１Ｂは、ワーキング・セット１０２の１つまたは複数の候補ページ１１０を示す。１回または複数回の書込み動作１１２で、候補ページ１１０の１つまたは複数が確保された空間１０６に書き込まれる。図１Ｂに示すように、書き込まれる各候補ページは、そのページ独自の確保された場所に書き込むことができる。一部の実施形態では、候補ページ１１０はワーキング・セット中では連続していない場合もあるが、図１Ｂに示すようにスワップ・ファイル中では連続した場所に書き込まれる。一続きの順次並んだ確保された空間１０６に候補ページを書き込むことにより、後のスワップイン動作時にページをワーキング・セット１０２に戻す際に、後の読出し動作で大きな順次並んだスワップ・ファイルのブロックを読み出すことができる。したがって、一部の実施形態では、スワップ・ファイル中の順次並んだ場所に候補ページを書き込むことにより、大きく、かつ／または順次並んだ、効率的な将来の読出しを可能にする。ページのスワップアウトおよび書込みについては図４との関連で詳細に説明する。実施形態はさらに、スワップ・ファイルからワーキング・セットのスワップ・ファイルへのページの読出し（すなわちページをプロセスによる使用のために物理メモリに戻す）を含むページのスワップインを可能にする。ページのスワップインについては図５との関連で詳細に説明する。
【００１８】
一部の実施形態では、１つまたは複数のページをプロセスのワーキング・セットからスワップアウトして取り除く決定は、ポリシー・マネジャまたは他のＯＳの構成要素により各種条件に基づいて行うことができる。例えば、プロセスが一時停止されている、アクティブでない、または何らかの理由でコンピューティング・デバイス上の他のアクティブなプロセスよりもアクティブでない（例えばアクセスするページが少ない）ことが判定される場合がある。そのような場合は、そのプロセスのワーキング・セットの一部またはすべてをワーキング・セットから取り除いて、他のプロセスで使用するために物理メモリをより多く解放することができる。ただし、円滑なユーザ体験を作り出すために、ワーキング・セットへのページの読み戻しはスワップイン中にできる限り効率的に行って、プロセスが迅速にアクティブになるようにすることが望ましい。大きな入出力動作および／または順次的入出力動作を使用する効率的なスワップインにより、プロセスが高速に再アクティブ化できるようになり、したがってコンピューティング・デバイスがアクティブなプロセスを切り替える際の動作が向上する。
【００１９】
例示的なコンピューティング・デバイス・アーキテクチャ
図２は実施形態が動作することが可能な例示的なコンピュータ・システム・アーキテクチャの図である。図示するように、コンピューティング・システム２００は処理装置２０２を含む。処理装置２０２は複数の処理装置を包含することができ、ハードウェア、ソフトウェア、またはその組み合わせとして実施することができる。処理装置２０２は１つまたは複数のプロセッサを含むことができる。本明細書で使用される場合、「プロセッサ」はハードウェアの構成要素を意味する。処理装置２０２は、任意の適切なプログラミング言語で書かれたコンピュータ実行可能命令、プロセッサ実行可能命令、および／または機械実行可能命令を含んで、本明細書に記載される各種機能を行うことができる。
【００２０】
コンピューティング・デバイス２００はさらにシステム・メモリ２０４を含み、システム・メモリ２０４は、ランダム・アクセス・メモリ（ＲＡＭ）２０６、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、動的ランダム・アクセス・メモリ（ＤＲＡＭ）等の揮発性メモリを含むことができる。ＲＡＭ２０６は１つまたは複数の実行中のＯＳ２０８および１つまたは複数の実行中のプロセス２１０を含み、プロセスは、処理装置２０２によってロードし実行することが可能なコンポーネント、プログラム、またはアプリケーションを含む。したがって、一部の実施形態では、ＲＡＭ２０６は、ＯＳ２０８またはプロセス２１０が実行される物理メモリを含むことができる。
【００２１】
システム・メモリ２０４はさらに、読出し専用メモリ（ＲＯＭ）２１２、フラッシュ・メモリなどの不揮発性メモリを含むことができる。図示するように、ＲＯＭ２１２は、コンピューティング・システム２００をブートするために使用される基本入出力システム（ＢＩＯＳ）２１４を含むことができる。図には示さないが、システム・メモリ２０４はさらに、その実行時に（１つまたは複数の）オペレーティング・システム２０８および／またはプロセス２１０によって生成および／または使用されるプログラムやコンポーネント・データを記憶することができる。システム・メモリ２０４はキャッシュ・メモリも含むことができる。
【００２２】
図２に示すように、コンピューティング・デバイス２００は取外し不能記憶装置２３０および／または取外し可能記憶装置２３４も含み、これらはこれらに限定しないが、磁気ディスク記憶、光ディスク記憶、テープ記憶等を含む。ディスク・ドライブとそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、およびコンピューティング・システム２００の動作のための他のデータの不揮発性の記憶を提供することができる。さらに、取外し不能記憶装置２３０はさらにハード・ドライブ２３２を含むことができる。一部の実施形態では、ハード・ドライブ２３２は、本明細書に記載されるスワップ動作で使用する二次記憶部を提供することができる。
【００２３】
一般に、コンピュータ可読媒体はコンピュータ記憶媒体および通信媒体を含む。
【００２４】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、および他のデータなどの情報を記憶するための方法または技術で実装された揮発性および不揮発性、取外し可能および取外し不能の媒体を含む。コンピュータ記憶媒体には、これらに限定されないが、ＲＡＭ、ＲＯＭ、消去可能プログラム可能読出し専用メモリ（ＥＥＰＲＯＭ）、ＳＲＡＭ、ＤＲＡＭ、フラッシュ・メモリもしくは他のメモリ技術、コンパクト・ディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、またはコンピューティング・デバイスによるアクセスのために情報を記憶するために使用できる他の非伝送媒体がある。
【００２５】
それに対して、通信媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波や他の伝送機構等の変調データ信号において具現化することができる。本明細書で定義される「コンピュータ記憶媒体」は通信媒体を含まない。
【００２６】
コンピューティング・システム２００は、これらに限定されないが、キーボード、マウス、ペン、ゲーム・コントローラ、音声認識用の音声入力装置、タッチ入力装置等の（１つまたは複数の）入力装置２３６も含むことができる。コンピューティング・システム２００はさらに、これらに限定されないが、ディスプレイ、プリンタ、音声スピーカ、触覚出力等の（１つまたは複数の）出力装置２３８を含むことができる。コンピューティング・システム２００はさらに、コンピューティング・システム２００が、クライアント・デバイス、サーバ・デバイス、データベース、および／または１つまたは複数の通信ネットワークを介して利用できる他のネットワーク化デバイス等の他のコンピューティング・デバイス２４２と通信することを可能にする（１つまたは複数の）通信接続２４０を含むことができる。
【００２７】
図３は、実施形態によるコンピューティング・システム２００およびＯＳ２０８の例示的な図である。図示するように、一部の実施形態では、ＯＳ２０８は、ポリシー・マネジャ３０２やメモリ・マネジャ３０４などの１つまたは複数の構成要素を含む。一部の実施形態では、ポリシー・マネジャ３０２は、コンピューティング・システム２００の物理メモリで実行されているプロセスのワーキング・セットからいつページをスワップすべきか、またはワーキング・セットにいつページをスワップすべきかを決定する。一部の実施形態では、ポリシー・マネジャ３０４は、いつプロセスを一時停止するか、再アクティブ化するか、および／または終了するかを各種条件下で決定するＯＳ２０８のプロセス寿命マネジャと説明することができる。
【００２８】
図３に示すように、ＯＳ２０８は、例えばコンピューティング・システム２００の通信バスを通じてハード・ドライブ２３２およびＲＡＭ２０６と通信することができる。ハード・ドライブ２３２は、ページングやスワップ動作の際にＯＳ２０８が使用する二次記憶部を含むことができる。一部の実施形態では、ハード・ドライブ２３２は、１つまたは複数のページファイル３１８および／または１つまたは複数のスワップ・ファイル３２０を含む。一部の実施形態では、（１つまたは複数の）ページファイル３１８および／または（１つまたは複数の）スワップ・ファイル３２０は、ページングまたはスワップ動作時に使用するためにメモリ・マネジャ３０４によって初期化される。図の例では、（１つまたは複数の）スワップ・ファイル３２０は（１つまたは複数の）ページファイル３１８とは別である。ただし、一部の実施形態では、（１つまたは複数の）スワップ・ファイル３２０は（１つまたは複数の）ページファイル３１８の一部としてもよい。ＲＡＭ２０６は、プロセスが実行される物理メモリを含むことができ、またそのプロセスのための１つまたは複数のワーキング・セット３２２を含むことができる。
【００２９】
さらに、メモリ・マネジャ３０４は、本明細書に記載されるページのスワップを行う動作を行うように機能する１つまたは複数の構成要素を含むことができる。一部の実施形態では、メモリ・マネジャ３０４はページ・テーブル３０６を含み、これは、ページング動作のために仮想アドレスを物理メモリまたはページファイルの各ページの場所に対応付ける。一部の実施形態ではさらにページ・テーブル３０６を利用して、候補ページがプロセスのワーキング・セットからスワップされる際にスワップ・ファイル中の候補ページの確保された場所についての情報を記憶する（図４Ａを参照して下記でさらに説明する）。一部の実施形態では、スワップ・ファイル中の空間の確保は、２０１１年３月７日に出願された米国特許出願第１３／０４２，１２８号、名称「Ｐａｇｅｆｉｌｅ  Ｒｅｓｅｒｖａｔｉｏｎｓ」に記載されるように進めることができる。
【００３０】
メモリ・マネジャ３０４は、変更リスト３０８および／または待機リスト３１０も含むことができる。一部の実施形態では、候補ページがワーキング・セットからスワップアウトされ、スワップ・ファイルにそれらのための場所が確保されると、後のいずれかの時点でそれらの候補ページをワーキング・セットから取り除き、変更リスト３０８に入れてライター（例えばページ・ライター３１２）によって書き込ませる。そして、各ページがスワップ・ファイル３２０に書き込まれると、そのページのアドレス情報を変更リスト３０８から待機リスト３１０に移動することができる。一部の実施形態では、待機リスト３１０は、スワップ・ファイルに書き込まれているもののまだ物理メモリから取り除かれていないページを追跡する。そのような場合では、プロセスがそれらのページにアクセスしようとする場合、それらのページは元にスワップインされずになお物理メモリで直接アクセスすることができる。しかし、メモリ・マネジャ３０４が他のプロセスのために物理メモリのページをより多く必要とする場合には、待機リストにあるページを割り当てることができる。一部の実施形態では、メモリ・マネジャ３０４はページ・ライター３１２も含み、ページ・ライター３１２は、（１つまたは複数の）ワーキング・セット３２２から（１つまたは複数の）ページファイル３１８に、および／または（１つまたは複数の）スワップ・ファイル３２０にページを書き込む（例えばページのスワップアウト）、かつ／または（１つまたは複数の）ワーキング・セット３２２にページを再度読み込む（例えばページのスワップイン）ように動作する。
【００３１】
例示的処理
図４Ａ、図４Ｂ、図５、および図６は、各種実施形態による例示的処理を示すフローチャートである。これらの処理の動作は個々のブロックに示し、それらのブロックを参照して概説する。処理は論理的なフロー・グラフとして図示し、各動作は、ハードウェア、ソフトウェア、またはその組み合わせとして実施可能な１つまたは複数の動作を表す。ソフトウェアの文脈では、動作は、１つまたは複数のコンピュータ記憶媒体に記憶されたコンピュータ実行可能命令を表し、その命令が１つまたは複数のプロセッサによって実行されると、１つまたは複数のプロセッサが記載の動作を行うことができる。一般に、コンピュータ実行可能命令は、特定の機能を行う、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造等を含む。動作を説明する順序は制限と見なすべきでなく、記載される動作のうち任意数を任意の順序で組み合わせる、複数の下位動作にさらに分割する、かつ／または並行して実行して記載の処理を実施することができる。
【００３２】
図４Ａは、実施形態によるワーキング・セットからページをスワップする例示的処理を示す。このスワップアウト処理は、メモリ・マネジャ３０４またはポリシー・マネジャ３０２など、ＯＳ２０８の１つまたは複数の構成要素によって行うことができる。４０２で、１つまたは複数のページをプロセスのワーキング・セットからスワップ・ファイルにスワップアウトすることを決定する。一部の実施形態では、この決定は様々な基準に基づいてポリシー・マネジャ３０２が行うことができる。場合によっては、スワップアウトする決定は、プロセスが非アクティブもしくは一時停止状態である、プロセスに関連付けられた１つまたは複数のスレッドが一定期間アクティブでない、プロセスが一定期間バックグラウンドにある、プロセスが一定期間内に一定数のページを使用していない、またはコンピューティング・システム全体が一時停止状態かつ／または非アクティブであるという判定に基づく。
【００３３】
スワップアウトすることが決定されると、４０４でプロセスのワーキング・セットからスワップする１つまたは複数の候補ページを特定する。一部の実施形態では、メモリ・マネジャがワーキング・セットの各ページを分析し、任意の基準に基づいて各ページがスワップアウトの候補となるかどうかを判定する。一部の実施形態では、スワップアウトの候補は、ワーキング・セットのプライベート・ページおよび／またはページファイルを利用した共有ページを含むことができる。一部の実施形態では、候補ページは、それらのページがクリーンであるかどうかに基づいて特定される。クリーンなページとは、ページファイルに書き込まれているがそれ以後変更されておらず、物理メモリにあるページの現在のバージョンがページファイル中のそのページと同じであるページである。ダーティなページは、ページファイルに書き込まれた後に変更のあったページ、またはまだページファイルに書き込まれていないページである。さらに、一部の実施形態では、ページがスワップアウトの候補となるかどうかを決定する際に、ページがメモリにロックされているか否かを考慮することができる。
【００３４】
４０６で、特定された候補ページの合計の大きさの計算に基づいてスワップ・ファイルに空間が確保される（例えば確保された空間１０６）。４０８で、候補ページごとに、スワップ・ファイルの確保された空間で場所が割り振られるか、または確保される。一部の実施形態では、場所は、ワーキング・セットにある候補ページの仮想アドレスに従って仮想アドレスの順序で確保される。そのため、候補ページがワーキング・セット内で連続していない場合でも、スワップ・ファイルではそれらのページの場所は連続する。スワップ・ファイルの確保された空間内で候補ページの場所を、連続した順次並んだものとすることにより、後のスワップ・ファイルからの読出しを、順次並んだ大きなブロック単位で行うことができ、スワップインが効率的になる。一部の実施形態では、スワップ・ファイル中の空間の確保は、２０１１年３月７日に出願された米国特許出願第１３／０４２，１２８号、名称「Ｐａｇｅｆｉｌｅ  Ｒｅｓｅｒｖａｔｉｏｎｓ」に記載されるように進めることができる。４０８で候補ページの場所が確保されると、それらの候補ページはスワップアウトされたと言うことができる。４１０で、スワップアウトされた候補ページのリスト（または他のデータ構造）が更新される。一部の実施形態では、このリストは４０８で場所が確保された時に更新される。
【００３５】
場所が確保され、リストが更新されると、いずれかの後の時点にメモリ・マネジャが、スワップアウトされたページの一部またはすべてをスワップ・ファイルの各自の確保された場所に書き込むことを選択する。図４Ｂは、実施形態によるスワップアウトされたページを書き込む例示的処理の図である。４１２で、特定された候補ページの１つまたは複数をスワップ・ファイルに書き込むことを決定する（例えばワーキング・セットからページをスワップアウトする）。一部の実施形態では、この決定は、スワップアウトする決定に至った（４０２）基準が有効であるまま一定の閾値時間が経過したという判定に基づくことができる。例えば、プロセスが非アクティブまたは一時停止状態であるまま任意の時間（例えば５分）が経過する。一部の実施形態では、この決定は、１つまたは複数のアクティブなプロセスが使用するために今より多くの物理メモリが必要であるとメモリ・マネジャが判断することに基づいて行われる。
【００３６】
４１２で１つまたは複数の候補ページをスワップ・ファイルに書き込むことが決定されると、４１４で、書き込まれる１つまたは複数の候補ページがワーキング・セットから取り除かれる。一部の実施形態では、候補ページのすべてが取り除かれ、１回または複数回の書込み動作でスワップ・ファイルに書き込まれる。一部の実施形態では、候補ページの一部が取り除かれる。一部の実施形態では、書き込む候補ページは、メモリの需要に基づいて決定される（例えばメモリ・マネジャがより多くの物理メモリを必要とすることに基づく）。一部の実施形態では、スワップアウトする候補ページの決定は、それらのページが最後にプロセスからアクセスされてからの時間に基づくことができる。例えば、メモリ・マネジャは、最後に使用されてから最も時間が経っており、一定時間内にプロセスからアクセスがないページをスワップアウトすることを選択する。
【００３７】
一部の実施形態では、候補ページの取り除きは、スワップ・ファイル内にその候補ページの場所が確保された順番と整合する順序でワーキング・セットから取り除くことにより最適化することができる。例えば、場所が仮想アドレスの順序で確保された場合などには、候補は仮想アドレスの順序でワーキング・セットから取り除くことができる。一部の実施形態では、ワーキング・セットからの候補ページの取り除きは、任意かつ／または無作為（例えば順に配置しない）としてもよいが、それでも候補ページは仮想アドレスの順序に基づいてスワップ・ファイル中では順次並んだ場所に書き込まれる。一部の実施形態では、ページは、メモリ・マネジャがそれらのページをアクティブなプロセスのために使用することを必要とするまで、物理メモリのワーキング・セットに残っている（例えばスワップ・ファイルに書き込まれた後も）。
【００３８】
４１６で、候補ページがスワップ・ファイルに書き込まれる。一部の実施形態では、候補ページは、各自の仮想アドレスの順序に従ってスワップ・ファイル中で順次並んだ確保された場所に書き込まれる（例えばワーキング・セットにおけるページの仮想アドレスに従った昇順または降順）。さらに、候補ページをまとめて可能な限り大きなメモリ・ブロックに書込みを行うことにより、および／または書込み動作を順次的仮想アドレスの順序で行うことにより、書込み動作自体を最適化する、かつ／または効率的に行うことができる。一部の実施形態では、ページ・ライター３１２が書込み動作を行って、候補ページをスワップ・ファイルの各自に確保された場所に書き込む。候補ページに確保された場所が割り当てられていない場合は、ページはページファイルに書き込むことができる。一部の実施形態では、書き込まれたページのアドレスを任意のデータ構造でメモリ・マネジャが保存しておいて、スワップ・ファイルからページを読み出すために使用することができる。
【００３９】
場合によっては、４１２でスワップアウトされたページを書き込まないことを決定する場合もある。そのような場合は、４１８で、確保された場所をスワップインが発生するまで保持しておく（図５で説明する）。一部の実施形態では、スワップを行うことになった最初の決定（例えば４０２）をもたらした条件が一定の閾値時間後に成立しなくなっている場合は、候補ページをスワップ・ファイルに書き込まないことを決定してもよい。例えば、プロセスが再度アクティブになっている、またはもはや一時停止状態でなくなっている場合がある。他の場合には、ページをスワップインする条件は、例えば、候補ページの１つまたは複数がプロセスからアクセスされている場合（例えば、それらのページが物理メモリから取り除かれていた場合にはページ・フォルトが発生する条件）には、それらの候補ページがスワップ・ファイルに書き込まれる前に発生してもよい。
【００４０】
一部の実施形態は、４０２でスワップアウトする決定がなされた後に一定の時間をかけてワーキング・セットからページが取り除かれる最適化を支援する。さらに、使用のパターンに応じてページのグループをスワップアウトおよび／またはページファイルに書き込むことができる。例えば、メモリ・マネジャは、プロセスから最後にアクセスされてからの時間が最も短い（例えば過去５秒以内にアクセスがあった）最初のページのグループをスワップアウトおよび／または書込み、その後、一定時間の経過後に、最後にアクセスされてからの時間がそれよりも長い（例えば過去５秒〜過去１０秒の間にアクセスがあった）第２のページのグループをスワップアウトする、かつ／または書き込む。場合によっては、そのようなグループは代わりに、最後にアクセスされてからの時間が最も長い方から、最後にアクセスされてからの時間が最も短い方に向かう順序にしてもよい。一部の実施形態では、ページのスワップアウトおよび／または書き出しは、特定の活動やプロセス実行の段階に基づくことができる。例えば、アプリケーションは特定の段階に入ったり、特定の挙動を行ったりすることがあり、その段階や挙動に関連するページ（またはその段階や挙動に関連しないページ）をメモリ・マネジャがスワップアウトしてもよい。
【００４１】
さらに、実施形態は最適化の各種組み合わせを支援する。例えば、ページのグループをスワップアウトし、次いで同様のグループまたは異なる方法で決定されたグループをスワップ・ファイルに書き込むことができる。別の例として、ページのワーキング・セット全体をスワップアウトし、次いで本明細書に記載されるようにスワップ・ファイルに書き込むページのグループを特定してもよい。
【００４２】
さらに、一部の実施形態では、プロセスのワーキング・セットからの１つまたは複数のページのスワップアウトは、プロセスの現在の状態を二次記憶部に保存するものと考えることができ、メモリ・マネジャがスワップアウトしたページをスワップインする時に、プロセスを、例えばプロセスが一時停止された、または非アクティブになった時の状態に戻す。一部の実施形態では、実行中のプロセスが、スワップアウトされたページがスワップインされる前にそれらのページへのアクセスを求める場合がある。そのような場合、メモリ・マネジャは、すべてのスワップアウトされたページをスワップインし、アクセスが要求されるページをスワップインし、かつ／または仮想アドレス空間内で要求される（１つまたは複数の）ページに近い１つまたは複数のページをスワップインすることを決定することができる。これは、スワップ・ファイル内のスワップインされるページの場所の確保を解放することを含むこともできる。
【００４３】
図５は、実施形態による、二次記憶部から物理メモリのプロセスのワーキング・セットにページをスワップインする例示的処理を示す図である。一部の実施形態では、スワップイン処理は、メモリ・マネジャ３０４やポリシー・マネジャ３０２など、ＯＳ２０８の１つまたは複数の構成要素によって行われる。５０２で、あるプロセスのワーキング・セットから以前にスワップアウトされた１つまたは複数のページをスワップインすることを決定する。一部の実施形態では、この決定はポリシー・マネジャ３０２で行われ、各種基準に基づく。そのような基準には、プロセスが非アクティブまたは一時停止状態でなくなった、またはプロセスが物理メモリにない１つまたは複数のページへのアクセスを要求している（例えばページ・フォルトが発生した）旨の指示を受け取ることが含まれる。一部の実施形態では、基準は、４０２でスワップアウトする決定をもたらした条件の終息を含む。
【００４４】
５０４で、１つまたは複数の以前にスワップアウトされたページがスワップイン対象として特定される。５０２でスワップインすることが決定された時に、スワップアウトされたページの１つまたは複数がもう物理メモリにない可能性がある。例えば、メモリ・マネジャが、１つまたは複数のスワップアウトされたページを他のプロセスのために使用している場合がある。したがって、５０４のスワップインするページの特定は、もう物理メモリにないスワップアウトされたページを特定することを含むことができる。一部の実施形態では、スワップインするページの特定は、スワップアウトされた時にアドレスがメモリ・マネジャによってデータ構造に保存されたページに基づく。一部の実施形態では、プロセスが１つまたは複数のページにアクセスする試みが失敗すると（例えばページ・フォルト）、それらのページをスワップインさせることができる。
【００４５】
５０６で、以前にスワップアウトされたことが特定された１つまたは複数のページが、上記で図４Ｂに関して説明したようにスワップ・ファイルに書き込まれているかどうか、およびそのページが物理メモリから除去されているかどうかを判定する。一部の実施形態では、５０８で、ページがスワップ・ファイルに書き込まれており、物理メモリから除去されている場合、スワップインするために特定されたページがスワップ・ファイルの各自の場所から読み出されて、物理メモリのワーキング・セットに戻される。場合によっては、ページがワーキング・セットから取り除かれているが、物理メモリから除去されていない場合もある（例えばページが待機リストにキャッシュされた場合）。そのような場合は、キャッシュされたページを待機リストからワーキング・セットに追加して戻し、そのページに確保された場所を解放するが、それらのページをスワップ・ファイルから読み出す必要はない。さらに、ワーキング・セットのページの一部はスワップアウト後に物理メモリから除去されているが、他のページは待機リストにキャッシュされたままになる場合がある。そのような場合は、物理メモリから除去されたページをスワップ・ファイルから読み出し、キャッシュされたページと共にワーキング・セットに追加して戻す。
【００４６】
一部の実施形態では、このページの読み込みは、プロセスのページ・フォルトが起きた時に発生する読出しと同様に行うことができる。ただし、実施形態は、大きなメモリ・ブロック、および／または順次的仮想アドレスの順序での読出しを支援し、これは、したがって、二次記憶部の任意の場所から小さいブロックを読み出すよりも効率的である。例えば、ページがスワップ・ファイルに確保された一続きのブロック（または場合によっては、下記のようにいくつかの連続したブロック）に書き込まれ、順次的仮想アドレスの順序で書き込まれたため、複数のページのまとまりを大きなブロックで、かつ順次的仮想アドレスの順序で読み込むことができ、読出し動作をより効率的にすることができる。
【００４７】
一部の実施形態では、システム性能および／または可用性のために、ユーザが以前に非アクティブまたは一時停止状態であったプロセスが再びアクティブになるのを待っている可能性がある（例えばそのプロセスがユーザ・アプリケーションである場合など）を考慮すると、スワップアウトされたページの読み込みを効率的に行うことが有益である場合がある。これを考慮して、一部の実施形態は、スワップアウト前のアクセス頻度に基づく順序でページが物理メモリに読み戻される最適化を支援することができる。例えば、ワーキング・セットからページをスワップアウトする前に、メモリ・マネジャが、どのページがプロセスからアクセスされる頻度が高かったか、または最後にアクセスされてからの時間が短かったかを追跡し、そのようなページは他のページよりも早くスワップインすることができる。
【００４８】
例えば、第１のページ・グループは一定時間内に（例えばアプリケーションが一時停止する前の５秒間に）アクセスがあったことを判定することができ、第２のページのグループは次の時間内に（例えば５秒〜１０秒の間に）アクセスがあったことを判定することができ、第３のグループは次の時間内に（例えば１０秒〜１５秒の間に）アクセスがあったことを判定することができるなどである。そして、ページをスワップインすることが決定されると、第１のグループを最初にスワップインし、第１のグループの後に第２のグループをスワップインし、第２のグループの後に第３のグループをスワップインするなどである。そのような最適化を行うと、スワップアウトの前にプロセスから最後にアクセスされてからの時間が最も短いページが最初にスワップインされるページになることを考慮すると、プロセスが少なくとも部分的にアクティブになり、より早くユーザによって使用できるようになることを保証することができる。
【００４９】
さらに、一部の実施形態は、ワーキング・セットに関連するメモリ管理がスワップ動作の前に行われる最適化を支援することができる。例えば、スワップアウト処理中に、メモリ・マネジャがワーキング・セットの一部またはすべてを前もって「老化（age）」させて、ワーキング・セットにあるページのサブセットが新しいと判断されるようにする。そして、このページのサブセットをスワップアウトする、かつ／またはスワップ・ファイルに書き込む。スワップイン時には、すべてのメモリ・ページがスワップアウトされているのではなく、したがってそれよりも少ないページをスワップ・ファイルから読み出せばよいことを考慮すると、多少の最適化を実現することができる。
【００５０】
５１０で、スワップ・ファイル内のスワップアウトされたページに確保された場所を解放する。一部の実施形態では、確保された場所の解放は、５０６でスワップインするページがスワップ・ファイルの各自の確保された場所に書き込まれていないと判定された場合にも行うことができる。
【００５１】
図６は、実施形態による、動的にスワップ・ファイルを管理する例示的処理を示す図である。一部の実施形態では、この処理は、メモリ・マネジャ３０４など、ＯＳ２０８の構成要素によって実行される。６０２でスワップ・ファイルが初期化される。一部の実施形態では、スワップ・ファイルは、コンピューティング・システムがブートする時に所定サイズ（例えば２５６ＭＢ）で初期化される。他の実施形態では、スワップ・ファイルは、メモリ・マネジャがスワップ動作を行うと判定した時に初期化され、スワップしようとするページを収容するのに十分な初期サイズに初期化することができる。
【００５２】
メモリ・マネジャ（または他のＯＳ構成要素）が動作するのに従って、上記で図４Ａに関して説明したように、６０４で物理メモリで実行中のプロセスのワーキング・セットから１つまたは複数のページをスワップアウトすることが決定される。その後、６０６で、スワップアウトされたページをスワップ・ファイルに書き込む場合、そのページを収容するためにスワップ・ファイルに追加的な空間が必要かどうかを判定する。さらに空間が必要な場合は、６０８でスワップ・ファイルのサイズを動的に増大することができる。一部の実施形態では、スワップ・ファイルのサイズを増大する決定は、メモリ・マネジャが、スワップ・ファイルの現在のサイズでは対応できないページ・スワップ要求を受け取ることに基づく。さらに、一部の実施形態ではスワップ・ファイルに最大のサイズを設ける。一部の実施形態では、スワップ・ファイルの初期サイズおよび／またはそのサイズの動的な変更は、少なくとも部分的に、システムで実行されているプロセスのサイズおよび／または種類によって決まる。
【００５３】
６１０でスワップアウト動作および／または書込み動作が上記のように行われる。後のいずれかの時点で、６１２で、スワップアウトされたページの１つまたは複数をスワップインすることが決定され、６１４でスワップ・ファイル中の１つまたは複数のページの確保された場所が解放される。スワップインおよび確保された場所の解放は、上記で図５に関して説明したように行われる。６１６で、例えば６１２のスワップイン動作および６１４の確保された場所の解放の後、スワップ・ファイルに必要とされる空間が今よりも少なくてよいと判断される場合がある。そのような状況では、６１８でスワップ・ファイルのサイズを動的に縮小することができる。一部の実施形態では、スワップ・ファイルのサイズを縮小する決定は、１つまたは複数のプロセスについてのページのスワップインの結果、必要とされるスワップ・ファイル空間が減ったという判定に基づく。一部の実施形態では、スワップ・ファイル中の空き空間を、メモリ・マネジャによるスワップアウトされた後に行われるページの書込みに再使用し、メモリ・マネジャは、断片化をできる限り抑えるように（例えばページはより大きく連続したブロック、および／または順次的仮想アドレスの順序で保存されることが好ましい）、スワップ・ファイルの空間を再使用することができる。
【００５４】
実施形態は、スワップ動作を、順次並んだページのまとまりで大きな読出しおよび書込みとして行うことを試みるので、スワップ・ファイル自体が二次記憶部で断片化が少なく、より連続していることが有利である可能性がある。そのために、一部の実施形態では、メモリ・マネジャがより多くのスワップ・ファイル空間が必要であると判断すると、スワップ・ファイルが縮小する量（例えば６４ＭＢ）よりも大きな任意のブロック・サイズ（例えば１２８ＭＢ）でオペレーティング・システムに追加の空間を要求することができる。ファイル・システムは、要求された追加のスワップ・ファイル空間を二次記憶部内で連続した空間（または少ない数の連続した空間のブロック）に見つけようとすることを考慮すると、大きなブロックで追加の空間を要求することにより、実施形態はスワップ・ファイルの外部断片化の可能性を低減することができる。
【００５５】
さらに、連続したスワップ・ファイルが望ましいことから、実施形態は、図３に示すようにページファイルとは別のスワップ・ファイルを用いる。別個の専用のスワップ・ファイルを使用することにより、スワップ・ファイルが１つの連続したブロック（または少ない数の連続したブロック）として作成および／または拡張される可能性を高めることができる。一部の実施形態は、本明細書に記載されるスワップ動作にページファイルの使用を支援するが、ページファイルを用いる従来のページング方法が任意で連続していないことを考えると、そのようなシナリオでは、スワップ・ファイルに外部断片化が生じ、したがって大きな順次的入出力動作に適さなくなる可能性が高まる可能性がある。そのため、別個のスワップ・ファイルを使用すると、より大きく、より順次的入出力動作の可能性が高まることから、実施形態は、別個の専用のスワップ・ファイルの使用を支援して入出力動作の効率を高める。
【００５６】
さらに、実施形態は、二次記憶部内で任意数のセグメントに分散された、別個ではあるが連続していないスワップ・ファイルに対応することができる。一部の実施形態は、そのようなセグメントの最大数（例えば５個）に対応して、スワップ・ファイルが過度に不連続にならないように保証する。一部の実施形態では、単一のスワップ・ファイルを、コンピューティング・システム上のすべてのプロセスからページをスワップするために用いることができる。他の実施形態では、コンピューティング・システムの個々のプロセスまたはプロセスのグループごとに別個のスワップ・ファイルを用いることもできる。
【００５７】
結び
本技術について構造的特徴および／または方法論的動作に固有の術語で説明したが、添付の特許請求の範囲は必ずしも記載の具体的な特徴や動作に限定されないことを理解されたい。むしろ、具体的な特徴や動作は、そのような技術の実装形態として開示するものである。
【図１Ａ】
2015506041.tif 000003
【図１Ｂ】
2015506041.tif 000004
【図２】
2015506041.tif 000005
【図３】
2015506041.tif 000006
【図４Ａ】
2015506041.tif 000007
【図４Ｂ】
2015506041.tif 000008
【図５】
2015506041.tif 000009
【図６】
2015506041.tif 000010
【国際調査報告】
2015506041.tif 000011
2015506041.tif 000012