(57)【要約】【課題】メモリマップドページのプライオリティを伝達させる。【解決手段】ソフトウェアアプリケーションが、コンピュータ可読媒体上にメモリマップドファイルについてのページプライオリティ情報を格納し(34)、及び、オペレーティングシステムが該ページプライオリティ情報を読み出す(36)といったことを含む、メモリマップドページプライオリティを伝達させる方法。【選択図】図２
2006309763.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションが、コンピュータ可読媒体上にメモリマップドファイルについてのページプライオリティ情報を格納し（３４）、及び、
オペレーティングシステムが、前記ページプライオリティ情報を読み出す（３６）、
といったことを含む、メモリマップドページプライオリティを伝える方法。
【請求項２】
前記オペレーティングシステムが、前記ページプライオリティ情報に少なくとも部分的に基づいて、前記メモリマップドファイルの部分を、メモリに対してスワップイン及びスワップアウトさせること（４０）を更に含むことからなる、請求項１に記載の方法。
【請求項３】
前記スワップイン及びスワップアウトさせることが、前記オペレーティングシステム内の仮想メモリサブシステムによって実行されることからなる、請求項２に記載の方法。
【請求項４】
前記ソフトウェアアプリケーションが、前記ページプライオリティ情報がどこに記憶されることになるかを前記オペレーティングシステムに通知するために、システムコールを実行すること（３２）を更に含むことからなる、請求項１に記載の方法。
【請求項５】
ａ．少なくとも１つのコンピュータ可読媒体と、
ｂ．前記少なくとも１つのコンピュータ可読媒体上に格納されたコンピュータ可読プログラムコードであって、
ｉ．少なくとも１つのメモリマップドファイルについてのページプライオリティを、少なくとも１つのデータ構造から読み出す（３６）ための、オペレーティングシステムプログラムコードと、
ｉｉ．前記メモリマップドファイルのページを、少なくとも部分的に前記ページプライオリティに基づいて、ページファイルの中へ及び外へと移動させる（４０）ためのオペレーティングシステムプログラムコード
とを含む、コンピュータ可読プログラムコード
とを備える、メモリマップドページプライオリティを伝えるための装置。
【請求項６】
前記コンピュータ可読プログラムコードは、前記少なくとも１つのメモリマップドファイルについての前記ページプライオリティを、前記少なくとも１つのデータ構造に格納する（３４）ためのアプリケーションプログラムコードを更に含む、請求項５に記載の装置。
【請求項７】
前記コンピュータ可読プログラムコードは、ページプライオリティを読み出すことのために、前記少なくとも１つのデータ構造を、前記オペレーティングシステムプログラムコードに対して識別するため、前記アプリケーションプログラムコードにアクセス可能な（例えば、３２）システムコールのためのオペレーティングシステムプログラムコードを更に含む、請求項６に記載の装置。
【請求項８】
ページプライオリティを読み出すための前記オペレーティングシステムプログラムコードと、ページを移動させるための前記オペレーティングシステムプログラムコードとが、仮想メモリサブシステムを含む、請求項６に記載の装置。
【請求項９】
前記データ構造が、ページを優先度に従って探索するために最適化される、請求項６に記載の装置。
【請求項１０】
ソフトウェアアプリケーション内の少なくとも１つのメモリマップドファイルについてのプライオリティ情報をコンピュータ可読媒体に格納する（３４）ための手段と、
前記コンピュータ可読媒体上の前記プライオリティ情報に少なくとも部分的に基づいて、前記少なくとも１つのメモリマップドファイルのページを、ページファイルの中へ及び外へと移動させる（４０）ための手段
とを備える、メモリマップドページプライオリティを伝えるための装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおけるデータアクセスに関し、特に、メモリマップドページのプライオリティをオペレーティングシステムに伝達させる方法に関する。
【背景技術】
【０００２】
コンピュータシステム内のハードドライブのような大容量記憶装置上に格納されたデータは、多くの方法でアクセスすることができる。従来の１つの方法は、オペレーティングシステムを介して、読み出し及び書き込みシステムコールを使用することである。しかしながら、システムコールは、高性能ソフトウェアアプリケーションにおいて往々にして許容不可能な比較的大きな遅延を加える。別の従来の方法は、メモリマップドファイル（memory mapped files）を使用することである。これは、ファイルをソフトウェアアプリケーションのための仮想アドレス空間内へとマッピングする。従って、メモリマップドファイルに対応した範囲内における仮想メモリアドレスを使用してファイルをアクセスすることができる。オペレーティングシステムの仮想メモリサブシステムは、大容量記憶装置とメモリとがアクセスされる時には、該大容量記憶装置と該メモリとの間でファイルの一部分をスワップすることができる。このことは、効果的に、ファイルの一部分をメモリ内にキャッシュする。該メモリを、典型的な大容量記憶装置よりもはるかに高速にアクセスすることができる。従って、メモリマップドファイルは、システムコールのオーバーヘッドを回避することと、ファイルの一部分をメモリ内にキャッシュすることとを含むいくつかの利点を有する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
大部分の現代のコンピュータシステムにおいて、メモリは、ページと呼ばれるブロック内へと分割される。仮想メモリサブシステムは、ページを、メモリと大容量記憶装置上のページファイルとの間でスワップする。ソフトウェアアプリケーションによってページがアクセスされ、且つ、該ソフトウェアアプリケーションがメモリ内に常駐していない場合には、仮想メモリサブシステムは、そのページを大容量記憶装置からメモリ内へと、必要であればそのページのためのメモリ内の空間を解放した後に、コピーすることができる。メモリ内に常駐したままのページを、続いて、大容量記憶装置からそれらをコピーすることなく高速にアクセスすることができる。仮想メモリサブシステムは、コンピュータシステム内の全てのプロセスについてのメモリ使用量（又は使用頻度）を見て、プロセスごとのメモリ利用を調整することができる。仮想メモリサブシステムは、最も最近に使用されたページをメモリ内に保持して、最も前に（最も古く）使用されたページをスワップアウトさせるといったような一般的なアルゴリズムを使用して、どのページがメモリ内に保持され、どのページが大容量記憶装置にスワップアウトされるかを最適化することを試みることができる。しかしながら、仮想メモリサブシステムは、どのページが今後使用される可能性が最も高いか分からず、それによって、時には結果として、プライオリティが高いページが削除され、スワッピングか又はスラッシングが増加する。
【０００４】
Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムは、仮想ロック（VirtualLock）/仮想非ロック（VirtualUnlock）システムコールを提供する。該仮想ロック／仮想非ロックシステムコールによって、アプリケーションが、仮想メモリマネージャに、特定のページがディスクにスワップアウトされるべきでないことを伝えることができる。しかしながら、この手法は、アプリケーションが、メモリからスワップアウトさせることができないロックページ（ロックされたページ）内へ、及びメモリからスワップアウトさせることができるロックされていないページ（非ロックページ）内へとしか、ページを分けることができないことにおいて制限される。
【課題を解決するための手段】
【０００５】
メモリマップドページのプライオリティ（優先度）を伝達させる方法は、ソフトウェアアプリケーションが、コンピュータ可読媒体上に、メモリマップドファイルについてのページプライオリティ情報を格納し、及びオペレーティングシステムが、該ページプライオリティ情報を読み出す、といったことを含む。
【発明の効果】
【０００６】
メモリマップドページのプライオリティを伝達させることにより、どのページが今後使用される可能性が高いかが分かり、スワッピング及びスラッシングを低減させることができる。
【実施例】
【０００７】
例示的な実施形態が下記に説明されるような添付図面内において示されている。
【０００８】
図面及び説明は、概して、メモリマップドファイルページプライオリティをオペレーティングシステムに伝達させるための方法及び装置を開示する。１つか又は複数のメモリマップドファイルをオープンさせるソフトウェアアプリケーションが、メモリマップドファイルのページに優先順位（又は優先度）を付ける。アプリケーションは、オペレーティングシステムにとってアクセス可能なデータ構造内に、ページプライオリティ情報を格納する。次いで、オペレーティングシステムは、前記データ構造からページプライオリティ情報を読み出し、前記データ構造を介してアプリケーションによって提供されるページプライオリティ情報に少なくとも部分的に基づいてページスワップの決定が行われる。アプリケーションは従って、メモリマップドファイルのどのページがプライオリティが高く、メモリ内にキャッシュされるべきか、及びメモリマップドファイルのどのページがプライオリティが低く、ディスク上のページファイルにスワップアウトされることが可能であるかを、オペレーティングシステムに対して示すことができる。これにより、多大なオーバーヘッドと、システムコールにメモリマップドファイルのページスワップを制御させることの、制限された有用性とが回避される。従って、コンピュータハードドライブのような大容量記憶装置上のメモリマップドファイル内に格納されたデータを、繰り返されるシステムコールの、多大なオーバーヘッドか、又は最適化されていないページスワップに起因するスラッシングを生じさせることなく、高性能アプリケーションによって、アクセスすることができる。
【０００９】
例示的なメモリマップドページプライオリティシステムが図１内に示されている。アプリケーション１０は、メモリマップドファイルについてのファイルページプライオリティ（ＦＰＰ、例えば１２）をデータ構造１４内に格納する。次いで、仮想メモリサブシステム１６（又はオペレーティングシステムの他の一部分）が、メモリマップドファイルのキャッシングを管理する時にページプライオリティを読み出す。例示的な一実施形態において、各メモリマップドファイル毎に１つのデータ構造が作成される、すなわち、アプリケーションによってオープンにされた各ファイル毎に１つのデータ構造が作成される。例えば、図１において示された例示的なシステムにおいて、アプリケーション１０は、２つのメモリマップドファイルを有するため、２つのデータ構造１４及び２０が作成される。代替として、データ構造は、複数のメモリマップドファイルについてか又は更には複数のアプリケーションについてのページプライオリティ情報を含むことが可能であるが、このことが、データ構造のアドレッシングとインデックス（索引付け）とを複雑にする可能性があるため、複数のアプリケーションが同じデータ構造にアクセスすることが可能であることを必要とする可能性がある。
【００１０】
データ構造が作成されるメモリマップドファイルは、ページプライオリティ情報を記憶しているアプリケーションのプログラムコードの一部とすることができるか、又はアプリケーションによって操作されるデータファイルとすることができるか、又はアプリケーションが、オペレーティングシステムに伝達されるページプライオリティ情報を有する任意の他のファイルとすることができる。
【００１１】
データ構造１４は、ページプライオリティを格納するための、且つ、仮想メモリサブシステム１６の機能を促進するための任意の適合可能な構造と構成とを有することができる。様々なコンピュータアーキテクチャとプログラミング言語とが、アレイ、マップ等のような使用されることが可能な異なるタイプのデータ構造を提供する。データ構造のサイズは、ファイルデータのページ当たりに１つのページプライオリティ値を有する、ファイルのマップドビューのサイズに比例することとなる。例示的な一実施形態において、データ構造１４は、フラット線形アレイを含み、メモリマップドファイル内におけるページオフセットが、対応するページプライオリティを特定するための、該フラット線形アレイ内へのインデックス（索引）として用いられる。基底アドレスが、各メモリマップドファイルごとに使用され、その対応するページプライオリティアレイが特定される。次いで、ページのオフセットが、ページプライオリティアレイ内へのインデックスとして使用されて、該アレイ内のそのページのプライオリティが読み出されるか又は書き込まれる。例示的なアレイ要素は、１バイトのページプライオリティコードを含むが、これは、プライオリティ付与方式（優先順位付方式）に基づいて、所望のように構成されることが可能である。
【００１２】
代替の一実施形態において、データ構造をページプライオリティによる探索に関して最適化させることができる。例えば、データ構造を、ページ番号とページプライオリティとによって索引付けることができる。仮想メモリサブシステムが、新しいページをロードするためにメモリ内のページを解放させることが必要な時には、該仮想メモリサブシステムは、従って、最適化されたデータ構造を使用して、メモリ内に現在常駐している、プライオリティが最も低いページを、簡単に識別することができる。該データ構造は、メモリ内に常駐していないページであっても、メモリマップドファイル内の全てのページのページプライオリティを含む。
【００１３】
アプリケーションは、任意の適合可能な方法において、メモリマップドファイルのページの優先順位（プライオリティ）を付ける（又は優先度を付加する）ことができる。例えば、アプリケーションは、１〜５までの間のプライオリティ番号のような所定のプライオリティセットのうちの１つを、各ページに割り当てることができる。代替として、アプリケーションは、ページプライオリティを増加させること及び低減させることによって、相対的なプライオリティを割り当てることができる。仮想メモリサブシステムによるメモリマップドファイルのためのキャッシュ管理を容易にする任意のページプライオリティ付与方式を、使用することができる。
【００１４】
例示的なデータ構造は、システムメモリ内に格納され、アプリケーションによって所有され且つ管理されるが、オペレーティングシステムによるディスクに対するページングアウトのための候補とすることもできる。例えば、データベースがメモリマップドファイル内に記憶された状態において、アプリケーションが、長期間にわたって非アクティブであるデータベースアプリケーションである場合には、オペレーティングシステムは、データベース全体とその関連付けられたデータ構造とをディスクにページアウトさせて、他のアクティブなプロセスのためにメモリを節約することができる。
【００１５】
アプリケーションは、例示的なデータ構造に対する読み出し及び書き込みアクセスを有するが、該アプリケーションは、読み出しアクセスを必要とすることができるか、又は読み出しアクセスを不必要とすることができる。仮想メモリサブシステムは、例示的なページプライオリティデータ構造に対する読み出し専用アクセスを有する。しかしながら、ページプライオリティ付与方式が、オペレーティングシステムからのフィードバックによる恩恵を受けるであろう場合には、該オペレーティングシステムは、ページプライオリティに関してアプリケーションと伝達し合うために、ページプライオリティデータ構造に対する読み出し及び書き込みアクセスが提供されることが可能である。例えば、アプリケーションによって提供されたページプライオリティ付与方式が、どのページがメモリ内に常駐しているかを知ることによって利益を受けるであろう場合には、該オペレーティングシステムは、前記データ構造を使用してこの情報をアプリケーションに伝えることができる。
【００１６】
メモリマップドページプライオリティをオペレーティングシステムに伝えるための方法及び装置を実施するために、アプリケーションと、オペレーティングシステム内の仮想メモリサブシステムとが、両方とも、ページプライオリティデータ構造を使用するように構成される。例示的な一実施形態において、アプリケーションは、データ構造を生成し、及びシステムコールを使用してデータ構造の位置と他の詳細事項とをオペレーティングシステムに伝える（システムコールが行われない場合には、オペレーティングシステムの仮想メモリサブシステムは、プライオリティ付与を行うことなく従来の手法でメモリマップドファイルのキャッシングを管理することとなる）。データ構造を識別するために使用されるシステムコールは、メモリマップドファイルがオープンされる時のように、アプリケーションによって一度だけ実行される必要があり、その後、ページプライオリティを、追加的なシステムコールのオーバーヘッドを生じさせることなく、且つ、アプリケーションとオペレーティングシステムとの間で同期がとられることなく、データ構造にアクセスすることによって簡単に修正することができる。例示的なシステムコールは、データ構造の識別に専用の独立システムコールであり、及びオプションでアプリケーションか又はデータ構造の編成のような他の詳細事項の識別に専用の独立システムコールである。代替として、メモリマップドファイルをオープンするために使用されるシステムコールのように、この情報を含むように既存のシステムコールを修正することができる。オペレーティングシステムは、データ構造を識別するシステムコールを受け取るように、且つ、メモリマップドファイルについてメモリに対してページをスワップイン及びスワップアウトする時に（又は、メモリマップドファイルについてメモリの中へ及び外へとスワップする時に）データ構造にアクセスするように構成される。例えば、オペレーティングシステムが、ページを解放することを必要とする時には、該オペレーティングシステムは、データ構造にアクセスするように構成されて、常駐している、プライオリティが最も低いページを識別し、次いでそのページをメモリに対してスワップアウトさせる（又は、メモリの外にスワップさせる）。これら機能を、オペレーティングシステム内の仮想メモリサブシステムによってか又はオペレーティングシステムの任意の他の一部分内において、実施することができることに留意されたい。
【００１７】
例示的な実施形態において、アプリケーションと、仮想メモリサブシステムか又はオペレーティングシステムの他の一部分とは、同じコンピュータシステム内において実行されるが、メモリマップドページプライオリティをオペレーティングシステムに伝えるための方法及び装置は、この構成に限定されない。
【００１８】
メモリマップドページプライオリティをアプリケーションからオペレーティングシステムに伝えるための例示的な動作が、図２のフローチャート内において要約されている。ソフトウェアアプリケーションが、メモリマップドファイルのページについてのプライオリティ情報を格納するためのデータ構造を作成する（３０）。アプリケーションが、メモリマップドファイルについてのページプライオリティ情報がどこに記憶されることになるかをオペレーティングシステムに通知するために、システムコールを実行する（３２）。アプリケーションが、メモリマップドファイルについてのページプライオリティ情報をデータ構造内に格納する（３４）。オペレーティングシステムが、ページプライオリティ情報を読み出して（３６）、オペレーティングシステム内の仮想メモリサブシステムが、少なくとも部分的にページプライオリティ情報に基づいて、メモリマップドファイルのページをメモリに対してスワップイン及びスワップアウトする（４０）（又は、メモリマップドファイルのページをメモリの中へと及び外へとスワップする）。メモリマップドページプライオリティを伝達させるための動作は、この動作順に限定されないことに留意されたい。
【００１９】
メモリマップドページプライオリティをオペレーティングシステムに伝えるための方法及び装置が適用されることが可能な典型的なコンピュータシステムが、図３のブロック図において例示されている。コンピュータシステム７０は、一般的には、キャッシュ７４を有する中央処理装置（ＣＰＵ）７２を備え、該キャッシュ７４は、システムバス７６によって、読み出し専用メモリ（ＲＯＭ）８０、ランダムアクセスメモリ（ＲＡＭ）８２、入力／出力（Ｉ／Ｏ）アダプタ８４、通信アダプタ８６、ユーザインターフェースアダプタ９０、及びディスプレイアダプタ９２のような装置に接続される。ハードドライブ９４のようなデータ記憶装置が、Ｉ／Ｏアダプタ８４を介してコンピュータシステム７０に接続される。動作中、コンピュータシステム７０内のＣＰＵ７２は、ＲＯＭ８０上に、ハードドライブ９４上に、ＲＡＭ８２内に、及びキャッシュ７４内にバイナリフォーマットにおいて格納された命令を実行し、それにより、該ＣＰＵ７２が、ＲＡＭ８２内とキャッシュ７４内とに格納されたデータを操作して、有用な機能を実行させる。コンピュータシステム７０は、ローカルエリアネットワークか、又は通信アダプタ８６に接続された広域ネットワーク（例えば、９６）を介して他の電子装置と伝達し合うことができる。ユーザ入力が、ユーザインターフェースアダプタ９０を介してコンピュータシステム７０に接続されるキーボード１００及びポインティングデバイス１０２のような入力装置を通して得られる。出力は、ディスプレイアダプタ９２に接続されたモニタ１０４のような表示装置上に表示される。ハードドライブ９４上に格納されたオペレーティングシステム及びアプリケーションは、ＣＰＵ７２により実行される。アプリケーションは、メモリマップドファイルについてのページプライオリティを、上述のようにオペレーティングシステムに伝え、オペレーティングシステムの仮想メモリサブシステムは、アプリケーションによって提供されたページプライオリティ情報に少なくとも部分的に基づいて、メモリマップドファイルのページを、ハードドライブ９４とＲＡＭ８２との間においてスワップする。
【００２０】
様々なコンピュータ可読か又は実行可能コードか又は電気的に実行可能な命令が、本明細書内において参照されている。これらを、ソフトウェアか、ファームウェアか、ハードワイヤード電子回路か、又はゲートアレイ内のプログラミングとして等のような任意の適合可能な手法において実施することができる。ソフトウェアを、機械語か、アセンブリ言語か、或いは、Ｃ又はＣ＋＋のような高級言語、といったような任意のプログラミング言語でプログラムすることができる。コンピュータプログラムを、インタプリタ型か又はコンパイラ型とすることができる。
【００２１】
コンピュータ可読か又は実行可能コードか又は電気的に実行可能な命令を、コードか又は命令をアクセスすることができるか又は具現化することができ且つ実行することができる汎用プロセッサ、ソフトウェアエミュレータ、特定用途向け回路、論理ゲートで作られた回路等のような、任意の命令実行装置によって使用されるためのか又は任意の命令実行装置と関連して使用されるための、任意のコンピュータ可読記憶媒体上か又は任意の電子回路構成内において明確に具現化することができる。
【００２２】
本明細書内において説明され且つ特許請求の範囲内において請求された方法を、上述のように、任意のコンピュータ可読記憶媒体上か又は任意の電気回路構成内において明確に具現化されるコンピュータ可読か又は実行可能なコードか又は電気的に実行可能な命令を実行することによって実施することができる。
【００２３】
コンピュータ可読か又は実行可能なコードか又は電気的に実行可能な命令を明確に具現化するための記憶媒体は、命令実行装置によってか又は命令実行装置と共に使用されるためのコード又は命令を格納することができるか、伝送することができるか、伝達することができるか、又は任意の方法において伝搬させることができる任意の手段を含む。例えば、記憶媒体には、任意の電気的か、磁気的か、光学的か、又は他の記憶装置か、又は導電体か、電磁気的、光学的、又は赤外線を利用した伝送等のような任意の伝送媒体を含めることができる（但しこれらに限定されない）。記憶媒体には、電子回路の設計によって表されたコードか又は命令を有する電子回路さえも含めることができる。具体的な例は、磁気ディスクか又は光ディスク、メモリカード及びプログラマブルで消去可能なＲＯＭを含む読み出し専用メモリ（ＲＯＭ）、不揮発性メモリ（ＮＶＭ）のような据え置き型とリムーバブル型との両方の半導体メモリデバイス、光ファイバ等を含む。コードか又は命令を明確に具現化するための記憶媒体にはまた、紙上へのコンピュータプリント出力のようなプリント媒体も含まれ、該プリント媒体は、光学的にスキャンされて、コードか又は命令が取り込まれることが可能であり、該コードか又は命令は更には、命令実行装置によって構文解析（パーズ）され、コンパイルされ、アセンブルされ、格納され、及び実行されることが可能である。コードか又は命令はまた、有線と無線との両方におけるインターネットか又は他のタイプのネットワークのような伝送媒体内における電気的な信号として明確に具現化されることも可能である。
【００２４】
例示的な実施形態が、本明細書内において詳細に説明されてきたが、本明細書内において開示した概念を、別様に様々に具現化し且つ用いることができ、添付の特許請求の範囲は、従来技術によって制限される場合を除いて、そのような変形形態を包含するように解釈されることが意図されることが理解されよう。
【図面の簡単な説明】
【００２５】
【図１】例示的なメモリマップドページプライオリティシステムを示すブロック図である。
【図２】メモリマップドページプライオリティを伝達させるための例示的な動作を示すフローチャートである。
【図３】メモリマップドページプライオリティをアプリケーションからオペレーティングシステムに伝達させることができる例示的なコンピュータシステムのブロック図である。
【符号の説明】
【００２６】
１０  ソフトウェアアプリケーション
１６  仮想メモリサブシステム
【図１】
2006309763.tif 000003
【図２】
2006309763.tif 000004
【図３】
2006309763.tif 000005