説明

メモリ管理方法、プログラム及びシステム

【課題】 コンピュータのメモリ上にあるデータに対する、読み取りや書き込みなどの特性を、低いオーバーヘッドで検出する技法を提供すること。
【解決手段】 メモリ分別プロファイラは、対象プロセスのページを間欠的に、すなわち、定期的または一時的にアクセス禁止、または書き込み禁止にする。このとき、メモリ分別プロファイラは、対象アドレスのページフォールト・ハンドラの機能を果たす。ページフォールトを検出すると、そのアドレスとアクセス種別を対象プロセスに通知し、ページを元の状態に戻す。このとき、読み出しアクセスだった場合は、ページをまず、読み出しのみ(書き込み禁止)に変更してもよい。対象プロセスは、通知された情報から、データを、(ある時点以降は)全くアクセスされない(N)、読み出しアクセスのみしか行われない(R)、読み書き両方が行われる(W)に分別する。調査結果に基づき、対象プロセスのメモリ割り当て機構が、RやWのデータをそれぞれ別ページに再配置し、測定を継続する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、コンピュータにおけるメモリ管理技法に関し、より詳しくは、コンピュータの物理メモリの使用効率を向上させるための技法に関するものである。
【背景技術】
【0002】
コンピュータの主記憶として、物理メモリの使用はほとんど必須であるが、一方で、物理メモリのサイズは有限であるため、従来より、仮想メモリへのページ・アウトなどの技法を駆使して、物理メモリの使用効率を向上が図られている。
【0003】
近年増加しつつあるクラウド・コンピューティングにおいては、仮想化により、複数のゲスト環境が一台のマシン上で動作する仕組みが採用されており、すると、物理メモリの使用効率を向上させる要望も一層増大している。
【0004】
物理メモリを管理するためには、メモリの各アドレスにどのようなデータがあるかをシステム的に把握する必要がある。
【0005】
たとえば、本願発明者らが開発したJava(R) VM用メモリ解析ツールMarusa(2008年5月12日提出のIBMプロフェッショナル論文http://www-06.ibm.com/ibm/jp/provision/no59/pdf/59_paper3.pdfを参照されたい)は、JVM(Java(R) Virtual Machine,Java(R)仮想マシン)のデータ構造毎のメモリ使用状況と、OSのプロセス・メモリ管理情報を組み合わせて、JVMの各アドレスにどういうデータがあるかを突き止める機能を提供する。但しMarusaは、各々のデータがどのようにアクセスされているかの情報は与えない。
【0006】
特開平6−89222号公報は、ページ管理機構と経時管理機構を有するコンピュータ・システムにおいて、物理メモリからスワップ・アウトすべきページを最適に選択できるようにするために、経時管理機構が経時管理サイクル毎に、各ページのアクセス状態を表すアクセス/非アクセス表示フラッグを評価し、各ページのアクセス履歴を記録するマルチビットのSPベクトル生成し、レポジトリに収納することを開示する。しかし、この技法は、ページ内にある各データのアクセスを判別する目的には使えない。
【0007】
特開2006−18705号公報は、メモリ領域やアプリケーションに割り当てられたメモリ領域でのメモリアクセスをトレースする技法に関し、プログラムに割り当てるメモリ領域を獲得し、獲得したメモリ領域を検査対象メモリ領域としてMMUによりアクセス禁止状態にし、その検査対象メモリ領域に対応するトレースデータ域を確保し、検査対象メモリ領域に対するアクセスが発生すると、MMUによりアクセス例外が発生し、トレース処理部において,アクセス例外が発生した検査対象メモリ領域に対応するトレースデータ域に、採取したトレース情報を記録することを開示する。この技法は、アクセス例外を検出するために、調べたいデータが存在する領域を常時アクセス禁止にするので、処理が重くなるという問題がある。
【0008】
特開2010−15223号公報は、長い期間アクセスされないオブジェクトの存在により、ガベージコレクション・プロセスの動作があってもアクセス速度の低下がないようにするために、コンピュータでガベージコレクションが動作する際、仮想メモリ空間に存在し、予め規定された長い期間アクセスされないオブジェクトを隔離するため、予め規定された長い期間アクセスされないオブジェクトを非アクセスオブジェクトとして検出する第1のステップと、非アクセスオブジェクトを検出した後所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動する第2のステップと、新たに確保した仮想メモリ領域に移動した後さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域としてガベージコレクションが当該アクセス不可領域にアクセスしないようにする第3のステップとを実行することを開示する。この技法では、検出されるのは、データにアクセスがあったかどうかだけである。
【0009】
Memalyze (http://www.uninformed.org/?v=7&a=1&t=pdf)というツールは、指定領域の全てのメモリアクセスを漏れなく捕まえるために、ページング機構を使用することを開示する。しかし、このツールは、特開2006−18705号公報に記述されている技術と同様に、処理としてはかなり重くなる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平6−89222号公報
【特許文献2】特開2006−18705号公報
【特許文献3】特開2010−15223号公報
【非特許文献】
【0011】
【非特許文献1】Java(R) VM用メモリ解析ツールMarusa(2008年5月12日提出のIBMプロフェッショナル論文 http://www-06.ibm.com/ibm/jp/provision/no59/pdf/59_paper3.pdf)
【非特許文献2】Memalyze (http://www.uninformed.org/?v=7&a=1&t=pdf)
【発明の概要】
【発明が解決しようとする課題】
【0012】
この発明の目的は、コンピュータのメモリ上にあるデータに対する、読み取りや書き込みなどの特性を、低いオーバーヘッドで検出する技法を提供することにある。
【0013】
この発明の他の目的は、検出されたデータの特性に基づき、メモリ上でデータを再配置して最適化する技法を提供することにある。
【課題を解決するための手段】
【0014】
この発明は、上記課題を解決するために、以下のような機能をもつメモリ分別プロファイラを提供する。メモリ分別プロファイラは、対象プロセスにアタッチされて動作する。
【0015】
すなわち、メモリ分別プロファイラは、対象プロセスのページを間欠的に、すなわち、定期的または一時的にアクセス禁止、または書き込み禁止にする。この処理は、調査したいメモリ領域にのみ行えばよい。
【0016】
メモリ分別プロファイラは、対象アドレスのページフォールト・ハンドラの機能を果たす。すなわち、ページフォールトを検出すると、そのアドレスとアクセス種別を対象プロセスに通知し、ページを元の状態に戻す。このとき、読み出しアクセスだった場合は、ページをまず、読み出しのみ(書き込み禁止)に変更してもよい。
【0017】
対象プロセスは、通知された情報から、当該アドレスに存在するデータを判別し、データを以下の3種類に分別する。
N (ある時点以降は)全くアクセスされない
R 読み出しアクセスのみしか行われない
W 読み書き両方が行われる
【0018】
調査結果に基づき、対象プロセスのメモリ割り当て機構が、RやWのデータをそれぞれ別ページに再配置(追い出す)し、測定を継続する。なお、この再配置は、対象プロセスのメモリ割り当て機構でなく、ガベージ・コレクション(GC)のプロセスが動的に行ってもよいし、次回起動時にそれまでの調査結果から静的に行ってもよい。
【発明の効果】
【0019】
この発明によれば、メモリ分別プロファイラは、対象プロセスのページを間欠的に、すなわち、定期的または一時的にのみアクセス禁止、または書き込み禁止にするので、処理の低いオーバーヘッドで、アクセスされるデータを分別することが可能となる。
【0020】
また、分別の結果に基づきデータを再配置することで、WやRのデータを調査対象から外せるので、プロファイラの精度向上をはかることができる。また、アクセス禁止にする領域も減らせるので測定オーバーヘッドを低減することができる。
【図面の簡単な説明】
【0021】
【図1】本発明を実施するためのハードウェアの一例のブロック図である。
【図2】機能構成のレイヤを示す図である。
【図3】メモリ分別プロファイラの処理のフローチャートを示す図である。
【図4】ページ・フォールト時の処理のフローチャートを示す図である。
【図5】データ再配置処理のフローチャートを示す図である。
【図6】データ再配置処理がデータを再配置する様子を図式的に示す図である。
【発明を実施するための形態】
【0022】
以下、図面に従って、本発明の実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
【0023】
図1を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・バス102には、CPU104と、主記憶(RAM)106と、ハードディスク・ドライブ(HDD)108と、キーボード110と、マウス112と、ディスプレイ114が接続されている。CPU104は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標)4、インテル社のCore(商標) 2 DUO、AMD社のAthlon(商標)などを使用することができる。主記憶106は、好適には、2GB以上の容量、より好ましくは、4GB以上の容量をもつものである。
【0024】
ハードディスク・ドライブ108には、オペレーティング・システムが、格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows(商標) 7、Windows XP(商標)、Windows(商標)2003サーバ、アップルコンピュータのMac OS(商標)などの、CPU104に適合する任意のものでよい。
【0025】
ハードディスク・ドライブ108にはまた、Apacheなどの、Webサーバとしてシステムを動作させるためのプログラムが保存され、システムの起動時に、主記憶106にロードされる。
【0026】
ハードディスク・ドライブ108にはさらに、Java(R)仮想マシン(VM)を実現するためのJava(R) Runtime Environmentプログラムが保存され、システムの起動時に、主記憶106にロードされる。
【0027】
ハードディスク・ドライブ108にはさらに、本発明の機能を実現するメモリ分別プロファイラ204(図2)が実行可能形式のファイルとして保存されている。メモリ分別プロファイラ204は、C、C++などの既存のプログラミング言語処理系により、CPU104に適合する実行可能形式のコードを生成し得るコンパイラによって作成することができる。メモリ分別プロファイラ204は、使用時には主記憶106にロードされる。
【0028】
キーボード110及びマウス112は、オペレーティング・システムが提供するグラフィック・ユーザ・インターフェースに従い、ディスプレイ114に表示されたアイコン、タスクバー、テキストボックスなどのグラフィック・オブジェクトを操作するために使用される。
【0029】
ディスプレイ114は、これには限定されないが、好適には、1024×768以上の解像度をもち、32ビットtrue colorのLCDモニタである。ディスプレイ114は例えば、後述するメモリ上でデータ再配置処理の進捗状況を示すために使用される。
【0030】
通信インターフェース116は、好適には、イーサネット(R)プロトコルにより、ネットワークと接続されている。通信インターフェース116は、クライアント・コンピュータ(図示しない)からApacheが提供する機能により、TCP/IPなどの通信プロトコルに従い、処理リクエストを受け取り、あるいは処理結果を、クライアント・コンピュータ(図示しない)に返す。
【0031】
図2は、本発明を用いてJVMが使用するデータの分別を行う場合の、プログラムまたはプロセスの階層を示す図である。図1に示すハードウェアの上で、オペレーティング・システム202が動作し、オペレーティング・システム202上ではメモリ分別プロファイラ204が動作する。オペレーティング・システム202ではJava(R)仮想マシン(JVM)206が動作し、メモリ分別プロファイラ204の機能をJVM206が呼ぶので、階層としては、メモリ分別プロファイラ204上にJVM206が位置するように図示されている。
【0032】
アプリケーション・プログラム208は、Java(R)バイト・コードから構成され、JVM206上で動作する。そして、必要に応じてJVM206を介して、メモリ分別プロファイラ204の機能を呼び出す。なお、図示しないが、ハードディスク・ドライブ108にはJITコンパイラが格納され、アプリケーション・プログラム208は、JITコンパイラによってオペレーティング・システム202に直接実行されるバイナリ・コードに変換されてもよい。この場合は、JITコンパイラによってコンパイルされたバイナリ・コードが直接、メモリ分別プロファイラ204の機能を呼び出すことになる。
【0033】
なお、メモリ分別プロファイラ204は、Java(R) Virtual Machine Tool Interface (JVMTI) エージェントなどの形で実現してもよい。あるいは、オペレーティング・システム202の機能の一部として、メモリ分別プロファイラ204の機能を実装することもできる。
【0034】
さらには、クラウド環境などで使われる仮想マシンモニタに、メモリ分別プロファイラ204の機能を実装することもできる。
【0035】
次に、図3〜図5のフローチャートを参照して、本発明の処理について説明する。図3は、JVM206が、メモリ上の所定の領域にあるデータ(オブジェクトやクラスデータなど)のアクセス状態を測定する処理を示す。
【0036】
JVM206が、メモリ分別プロファイラ204を呼び出し測定開始を指示すると、メモリ分別プロファイラ204は、ステップ302で、ページ・フォールト・ハンドラを設定する。ページ・フォールト・ハンドラは、メモリ分別プロファイラ204の機能の一部であり、好適にはオペレーティング・システム202の機能を利用する。
【0037】
ステップ304で、メモリ分別プロファイラ204は、JVM206によって指定されたメモリ領域のページをアクセス禁止または書き込み禁止にする。アクセス禁止と書き込み禁止のどちらにするかは、調べたいデータの状態による。メモリ分別プロファイラ204は、メモリ領域のアクセス禁止を行うために、好適には、オペレーティング・システム202の機能を呼び出す。例えば、Linux(R)なら、mprotectというシステム・コールが用意されている。int mprotect(const void *addr, size_t len, int prot)という書式で、addrの開始アドレスから、lenの長さの領域(ページ単位)に、protで設定したアクセスを設定する。prodには、アクセス不可(PROT_NONE)、読み取り可(PROT_READ)、読み書き可(PROT_READ|PROT_WRITE)などを設定可能である。このようなシステム・コールをもたないオペレーティング・システムの場合、別途オペレーティング・システムの拡張モジュール、デバイスドライバなどを用意することになる。
【0038】
ステップ306で、メモリ分別プロファイラ204は、一定時間待つ。その時間設定は、アプリケーション・プログラム208を実行するJVM206がメモリにアクセスする頻度などに応じて適宜決められる。ステップ306の間に、アクセス禁止されたメモリ領域のページにあるデータに対してアクセスがあるか、書き込み禁止されたメモリ領域のページにあるデータに対して書き込みがあると、ページ・フォールトが起きる。ページ・フォールトが起きたときの処理は、図4のフローチャートを参照して後で説明する。なお、JVM206は、どのデータがどのメモリのアドレスの範囲にあるかの情報をテーブルなどの形で維持しているので、ページ・フォールトがあったときのメモリのアクセス・アドレスを知ることで、どのデータがアクセスされているかを知ることができる。
【0039】
ステップ308では、メモリ分別プロファイラ204は、測定終了かどうか判断する。測定終了の判断は、測定対象プログラムであるJVM206からの指示や、測定開始からの時間あるいは、データへのアクセス回数などによって行われる。まだ測定終了の条件を満たしていないなら、ステップ304に戻る。これにより、本発明の特徴の一つである、定期的にページをアクセス禁止にすることが達成される。
【0040】
ステップ308で測定終了の条件を満たしたと判断すると、メモリ分別プロファイラ204は、ステップ310でページのアクセス設定を、アクセス禁止または書き込み禁止から元に戻し、ステップ312でページ・フォールト・ハンドラを解除し、測定終了となる。
【0041】
次に図4のフローチャートを参照して、ページ・フォールトが起きたときの処理について説明する。ページ・フォールトが起きると、メモリ分別プロファイラ204は、ステップ402で、ページ・フォールトしたアドレスがページのアクセス設定を変更している領域内かどうか判断し、もしそうなら、ステップ404で、メモリ分別プロファイラ204は、読み出しアクセスかどうか判断する。
【0042】
読み出しアクセスなのか、書き込みアクセスなのかを判別するには次のようにする。
まず、CPU、メモリ・コントローラ、オペレーティング・システムなどの機能により、ページ・フォールトが読み出しなのか書き込みなのか分かる場合がある。この場合は、その機能を利用する。
そのような機能が使えない場合は、ページ・フォールトを引き起こした命令を調べることで、読み出しアクセスなのか、書き込みアクセスなのかを判別する。
あるいは、ページを先ずアクセス禁止にしておき、ページ・フォールトが起きた場合はそのアドレスに、読み出しアクセスがあったと判断し、ページを「読み出しのみ」に変更して続行する。そうして、そのアドレスでさらにページ・フォールトが起きた場合は、そのアドレスに書き込みがあったと判断し、ページを読み書き可能に変更して続行する。これによって、読み出しアクセスであったのか、書き込みアクセスであったのかが判別できる。
【0043】
こうして、ステップ404で、読み出しアクセスであると判断されると、メモリ分別プロファイラ204は、ステップ406で、ページ・フォールトしたアドレスのデータに「W」マークがなければ「R」マークを付ける。このようなマークは実際上、上述した、どのデータがどのメモリのアドレスの範囲にあるかのテーブルに書くことができる。なお、この処理は調査対象プログラムであるJVM206を呼び返して行ってもよい。そして、ステップ408で、ページを書き込み禁止に変更して処理を終わる。
【0044】
一方、ステップ404で、書き込みアクセスであると判断されると、メモリ分別プロファイラ204は、ステップ410で、ページ・フォールトしたアドレスのデータに「W」マークを付ける。この処理も、調査対象プログラムであるJVM206を呼び返し、JVM206に行わせてもよい。そして、ステップ412で、ページを書き込み禁止に変更して処理を終わる。
【0045】
ステップ402に戻って、ページ・フォールトしたアドレスがページのアクセス設定を変更している領域内でないと判断されると、メモリ分別プロファイラ204は特別な処理を行わず処理を終える。その結果、ステップ414で、ページ・フォールトのデフォルト処理を行うルーチンが実行される。
【0046】
図5は、データ再配置処理のフローチャートを示す図である。データ再配置処理を行うルーチンは、典型的には、測定対象プログラムであるJVM206中に実装される。
【0047】
図5において、ステップ502では、データ再配置処理は、メモリ分別プロファイラ204の測定が行われていれば一旦終了させる。ステップ504では、データ再配置処理は、「W」の付いたデータ、「R」の付いたデータ、マークのないデータ(N)をそれぞれ個別のメモリ領域に再配置する。ステップ506では、データ再配置処理は、NとRのメモリ領域について、メモリ分別プロファイラ204により測定を再開する。そして、Nの領域はアクセス禁止、Rの領域は書き込み禁止にする。
【0048】
ページ・フォールトの度毎に図5のデータ再配置処理を行うと処理が重くなるので、好適には、メモリ分別プロファイラ204にはデータ分別機能だけを行わせ、データ分別がある程度進んだきっかけで、図5のデータ再配置処理を行う。そのきっかけとは例えば、ガベージ・コレクションが行われたとき、あるいは、アプリケーション・プログラム208が次に起動されたとき、などである。
【0049】
図6は、メモリ分別プロファイラ204によってデータが分別され、その結果に基づきデータ再配置処理がデータを再配置する様子を図式的に示す図である。
【0050】
図6(a)は、メモリのページ602〜610に、データ1〜9が配置されている様子を示す。そこで測定対象のプログラム(これまでの例ではJVM206)は、プログラムの初期化が終わったある時点でメモリ分別プロファイラ204を呼び出してページ602〜610を定期的にアクセス禁止にし、データ1〜9に「R」や「W」のラベルを付けていく。これはそれぞれ、そのデータに対して読み出し,書き込みのアクセスがあったことをあらわしている。ある程度ラベルが付けられた段階のあるきっかけで、図6(b)に示すように、データ再配置処理が、「R」が付いたデータと、「W」が付いたデータをそれぞれ、ページ608とページ610に再配置する。
【0051】
ここで、メモリ分別プロファイラ204は、ページ602〜606は定期的にアクセス禁止にし、ページ608は定期的に書き込み禁止にする。書き込みがあるとして分別済みのデータがあるページ610は、ページのアクセス変更は不要である。このように、素性が判明したデータを別ページへと再配置することで、アクセス禁止にする領域を減らし、測定の効率を上げることができる。
【0052】
このような処理を続けた結果が図6(c)である。結果的にページ602〜604には、全くアクセスされなかったデータが残り、ページ606〜608には「R」のラベルのデータ(すなわち、読み出しのみが行われたデータ)が配置され、ページ610には、「W」のラベルが付いたデータ(すなわち、書き込みが行われたデータ)が配置される。この結果、ページ602〜604はページアウトの候補となり、ページ606〜608はCopy−on−Write機構などを利用したプロセス間共有の候補となる。
【0053】
次に本発明の処理の適用例をいくつか示す。
その1つの適用例は、Java(R)ヒープ内のオブジェクトの動的再配置であり、以下の処理を行う。
(1) Java(R)ヒープのページをN (NoAccess)、R (ReadOnly)、W (ReadWrite)に3分割する、最初は全部Nとしておく。
(2) Nのページを定期的・一時的にアクセス禁止、Rのページは書き込み禁止にし、ReadやWriteのあったオブジェクトを記録する。
(3) ガベージ・コレクション(GC)の際に、上で記録したオブジェクトはそれぞれRやWのページへ再配置する。その他のオブジェクトはNのページに残す。ただし、GC中はヒープのページはアクセス可能になっているとする。
(2)〜(3)を繰り返すことで、アクセスのあるオブジェクトをどんどんRやWのページへ追い出し、濃縮していく。
この手順により、Nのページには最終的に「アクセスされないオブジェクト」だけが残り、ページアウトがされやすくなる。また、Rのページには「読み出しのみのオブジェクト」が集まるので、その内容を解析することで、JVM間のヒープ共有などの基礎データにすることができる。
【0054】
次に、別の適用例として、Java(R) VM内のクラスデータの静的再配置がある。この場合は以下の処理が行われる。
(1) Java(R) VM のクラス領域に対して本発明の処理を適用する。クラスデータ用のページをN、R、Wに分けておく。最初は全部Nに配置する。
(2) アプリケーション初期化後にページを定期的・一時的にアクセス禁止にすることで、ReadやWriteが行われるクラスデータを見つけ、それぞれ「R」や「W」として記録する。
(3) 次回起動時に、前回までの記録でRやWとなっていたクラスデータはそれぞれRやWのページに配置するようにする(静的再配置)。なお、クラスデータがオブジェクトのように動的に再配置できれば、実行中にこの作業を行うこともできるが、ここではできないという前提の実施例を示している。
(4) 起動のたびに(2)〜(3)を繰り返し、RやWの情報を正確にするとともに、初期化後もアクセスのあるクラスデータをどんどん別ページに集めていく。
この手順により、アプリケーションの初期化後はアクセスされないクラスデータのページアウトが促進される。また、読み出しのみのクラスデータを解析することで、JVM間のクラスデータ共有を促進できる。
【0055】
以上、本発明の実施例を説明したが、この発明は、特定のハードウェア及びオペレーティング・システムあるいはアプリケーション・プログラムに限定されないことに留意されたい。すなわち、メモリ領域を選択的にアクセス不可にできる任意のハードウェア及びオペレーティング・システム上で、データをメモリ上で動的もしくは静的に再配置可能な任意のアプリケーションに対して実施可能である。例えば、クラウド環境で使用される大規模環境のシステム上でも適用可能である。あるいは、スタンドアロンの環境で動作する場合にも適用可能である。
【符号の説明】
【0056】
104 CPU
106 主記憶
108 ハードディスク・ドライブ
202 オペレーティング・システム
204 メモリ分別プロファイラ
206 JVM
208 アプリケーション・プログラム

【特許請求の範囲】
【請求項1】
コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
前記コンピュータの処理により、前記メモリ上の指定した領域を一時的または間欠的にアクセス禁止にするステップと、
前記コンピュータの処理により、前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの読み取りアクセスの結果としてページ・フォールトが起きることに応答して、前記データに読み取りデータであることを示すマークを付けるステップを有する、
メモリ管理方法。
【請求項2】
前記読み取りデータであることを示すマークを付けるステップの後に、前記コンピュータの処理により、前記メモリ上の指定した領域を書き込み禁止にするステップをさらに有する、請求項1に記載のメモリ管理方法。
【請求項3】
前記書込み禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記コンピュータの処理により、前記データに書き込みデータであることを示すマークを付けるステップをさらに有する、請求項2に記載のメモリ管理方法。
【請求項4】
前記コンピュータの処理により、前記読み取りデータであることを示すマークを付けたデータと、前記書き込みデータであることを示すマークを付けたデータとを、それぞれ、個別のメモリ区画に移動するステップをさらに有する、請求項3に記載のメモリ管理方法。
【請求項5】
前記個別のメモリ区画に移動するステップは、ガベージ・コレクションまたは、前記ページ・フォールトの原因のアクセスを行ったプロセスの再起動時に実行される、請求項4に記載のメモリ管理方法。
【請求項6】
コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
前記コンピュータの処理により、前記メモリ上の指定した領域を一時的または間欠的に書込み禁止にするステップと、
前記コンピュータの処理により、前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記データに書き込みデータであることを示すマークを付けるステップを有する、
メモリ管理方法。
【請求項7】
前記コンピュータの処理により、前記書き込みデータであることを示すマークを付けたデータを、個別のメモリ区画に移動するステップをさらに有する、請求項6に記載のメモリ管理方法。
【請求項8】
コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
前記コンピュータに、
前記メモリ上の指定した領域を一時的または間欠的にアクセス禁止にするステップと、
前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの読み取りアクセスの結果としてページ・フォールトが起きることに応答して、前記データに読み取りデータであることを示すマークを付けるステップを実行させる、
メモリ管理プログラム。
【請求項9】
前記読み取りデータであることを示すマークを付けるステップの後に、前記メモリ上の指定した領域を書き込み禁止にするステップをさらに有する、請求項8に記載のメモリ管理プログラム。
【請求項10】
前記書込み禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記データに書き込みデータであることを示すマークを付けるステップをさらに有する、請求項9に記載のメモリ管理プログラム。
【請求項11】
前記読み取りデータであることを示すマークを付けたデータと、前記書き込みデータであることを示すマークを付けたデータとを、それぞれ、個別のメモリ区画に移動するステップをさらに有する、請求項10に記載のメモリ管理プログラム。
【請求項12】
前記個別のメモリ区画に移動するステップは、ガベージ・コレクションまたは、前記ページ・フォールトの原因のアクセスを行ったプロセスの再起動時に実行される、請求項11に記載のメモリ管理プログラム。
【請求項13】
コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
前記メモリ上の指定した領域を一時的または間欠的にアクセス禁止にする手段と、
前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの読み取りアクセスの結果としてページ・フォールトが起きることに応答して、前記データに読み取りデータであることを示すマークを付ける手段を有する、
メモリ管理システム。
【請求項14】
前記読み取りデータであることを示すマークを付けるステップの後に、前記メモリ上の指定した領域を書き込み禁止にする手段をさらに有する、請求項13に記載のメモリ管理システム。
【請求項15】
前記書込み禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記データに書き込みデータであることを示すマークを付ける手段をさらに有する、請求項14に記載のメモリ管理システム。
【請求項16】
前記読み取りデータであることを示すマークを付けたデータと、前記書き込みデータであることを示すマークを付けたデータとを、それぞれ、個別のメモリ区画に移動する手段をさらに有する、請求項15に記載のメモリ管理システム。
【請求項17】
前記個別のメモリ区画に移動するステップは、ガベージ・コレクションまたは、前記ページ・フォールトの原因のアクセスを行ったプロセスの再起動時に実行される、請求項16に記載のメモリ管理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2013−33412(P2013−33412A)
【公開日】平成25年2月14日(2013.2.14)
【国際特許分類】
【出願番号】特願2011−169705(P2011−169705)
【出願日】平成23年8月3日(2011.8.3)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【Fターム(参考)】