(57)【要約】【課題】物理メモリ使用量の低減率を向上させる。【解決手段】差分圧縮装置は、ページ、または、ページ変換テーブルを圧縮対象データとして決定する差分圧縮制御部と、圧縮対象ページが属するプロセスの親プロセスのページ（または、ページ変換テーブル）、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ（または、ページ変換テーブル）、または、メモリアクセス頻度が少ないプロセスのページ（または、ページ変換テーブル）を比較元データとして決定し、決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する差分圧縮処理部とを含む。【選択図】      図１
2014041420.tif 000002
【特許請求の範囲】
【請求項１】
ページ、または、ページ変換テーブルを圧縮対象データとして決定する差分圧縮制御部と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する比較元決定部と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する差分圧縮処理部と、
を含むことを特徴とする差分圧縮装置。
【請求項２】
実行頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する前記差分圧縮制御部を含むことを特徴とする請求項１の差分圧縮装置。
【請求項３】
メモリアクセス頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する前記差分圧縮制御部を含むことを特徴とする請求項１の差分圧縮装置。
【請求項４】
仮想アドレス空間内の仮想アドレスと物理アドレスとを変換するためのページ変換テーブルを仮想アドレス空間毎に作成する仮想メモリ管理部と、
物理ページの割り当て要求を受けると、未使用の物理ページを選択して割り当てて使用状態として記録し、解放要求を受けると、対象の物理ページを未使用状態として記録する物理メモリ管理部と、
圧縮されたページ、または、ページ変換テーブルへアクセスが発生した場合に、そのページ、または、ページ変換テーブルの内容を復元する前記差分圧縮制御部と、
を含むことを特徴とする請求項１、２、または、３の差分圧縮装置。
【請求項５】
比較元となったページ、または、ページ変換テーブルへライトアクセスが発生した場合にそのページ、または、ページ変換テーブルをコピーする前記差分圧縮制御部を含むことを特徴とする請求項１、２、３、または、４の差分圧縮装置。
【請求項６】
請求項１、２、３、４、または、５の前記差分圧縮装置を含むことを特徴とするコンピュータ。
【請求項７】
ページ、または、ページ変換テーブルを圧縮対象データとして決定する手順と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する手順と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する手順と、
を含むことを特徴とするメモリ管理方法。
【請求項８】
実行頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する手順を含むことを特徴とする請求項７のメモリ管理方法。
【請求項９】
メモリアクセス頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する手順を含むことを特徴とする請求項７のメモリ管理方法。
【請求項１０】
ページ、または、ページ変換テーブルを圧縮対象データとして決定する手順と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する手順と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する手順と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、差分圧縮装置、コンピュータ、メモリ管理方法、および、プログラムに関する。
【背景技術】
【０００２】
仮想記憶機能を持つ情報処理装置の主記憶（物理メモリ）の内容を圧縮する技術の一例が、特許文献１に記載されている。特許文献１においては、セグメント管理情報内の共有ライブラリ識別情報、セグメント識別情報、および、ページ識別情報が同じページのグループを抽出し、そのグループのページに対して、圧縮を実施している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３０４９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１記載の技術では、同一グループでも、ページの内容の差が小さいという確証はなく、ページの内容が大きく異なる場合があり、圧縮率が高くなく、物理メモリ使用量の低減率が低いという課題があった。
【０００５】
本発明の目的は、上記課題を解決した差分圧縮装置、コンピュータ、メモリ管理方法、および、プログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明の差分圧縮装置は、ページ、または、ページ変換テーブルを圧縮対象データとして決定する差分圧縮制御部と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する比較元決定部と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する差分圧縮処理部と、
を含む。
【０００７】
本発明のメモリ管理方法は、ページ、または、ページ変換テーブルを圧縮対象データとして決定する手順と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する手順と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する手順と、
を含む。
【０００８】
本発明のプログラムは、ページ、または、ページ変換テーブルを圧縮対象データとして決定する手順と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する手順と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する手順と、
をコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、物理メモリ使用量の低減率を高くできる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の動作を示すフローチャートである。
【図３】本発明の第２の実施の形態のコンピュータの構成を示すブロック図である。
【図４】本発明の第２の実施の形態の差分圧縮装置の構成を示すブロック図である。
【図５】本発明の第２の実施の形態の動作を示すフローチャートである。
【図６】本発明の第２の実施の形態の動作を示すフローチャートである。
【図７】本発明の第２の実施の形態の動作を示すフローチャートである。
【図８】本発明の第２の実施の形態の動作を示すフローチャートである。
【図９】本発明の第２の実施の形態の動作を示すフローチャートである。
【図１０】本発明の第２の実施の形態の動作を示すフローチャートである。
【図１１】差分圧縮の方式の一例を示す説明図である。
【図１２】差分復元の方式の一例を示す説明図である。
【図１３】本発明の第３の実施の形態の動作を示すフローチャートである。
【図１４】本発明の第３の実施の形態の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１２】
図１は、第１の実施の形態の構成を示すブロック図である。図１を参照すると、第１の実施の形態の差分圧縮装置１１０は、差分圧縮制御部１１２、差分圧縮処理部１１３、および、比較元決定部１１５を含む。差分圧縮装置１１０は、ハードウェアとして実現可能である。また、コンピュータを、比較元決定部１１５、差分圧縮制御部１１２、および差分圧縮制御部１１３として機能させるプログラムが実現可能である。さらに、そのプログラムは、記録媒体に記録可能である。
【００１３】
差分圧縮装置１１０は、仮想記憶機能（仮想アドレス空間内の仮想アドレスに物理アドレスが対応づけられている）の物理ページを処理する。
【００１４】
また、差分圧縮装置１１０は、コピーオンライト方式が採用されたシステム内で動作可能である。コピーオンライト方式は、仮想メモリのコピーに際し、コピーに伴う物理メモリの割り当てを、仮想メモリへの書き込みが発生するまで遅延させる方式である。この場合、仮想メモリへの書き込みが発生するまでの間、仮想メモリに対応する物理メモリはコピー元およびコピー先で共有される。したがって、コピーオンライト方式を用いることで物理メモリ使用量を削減することが可能となる。コピーオンライト方式は、プロセスの複製に伴う仮想メモリ空間のコピーに対して、特に有効である。
【００１５】
次に、第１の実施の形態の動作について図面を参照して説明する。
【００１６】
図２は、第１の実施の形態の動作を示すフローチャートである。図２を参照すると、差分圧縮制御部１１２は、物理ページに対し差分圧縮を適用することで物理メモリ使用量が低減されるように制御する。具体的には、差分圧縮制御部１１２は、差分圧縮の対象とすべきメモリ領域（ページ、または、ページ変換テーブル）を圧縮対象データとして決定する（ステップＳ０１１）。
【００１７】
差分圧縮制御部１１２がページを選択した場合、比較元決定部１１５は、ページを圧縮する際、圧縮対象ページが属するプロセスの親プロセスのページ、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定する（ステップＳ０１２）。
【００１８】
差分圧縮制御部１１２がページ変換テーブルを選択した場合、比較元決定部１１５は、ページ変換テーブルを圧縮する際、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する（ステップＳ０１２）。
【００１９】
次に、差分圧縮処理部１１３は、差分圧縮制御部１１２により決定された圧縮対象データと比較元決定部１１５により決定された比較元データとから一方のページ（または、ページ変換テーブル）の内容を差分圧縮し、差分データ（差分圧縮の情報）を作成する（ステップＳ０１３）。
【００２０】
差分圧縮処理部１１３は、決定された２つのページ（または、ページ変換テーブル）、すなわち、圧縮対象データの内容と比較元データの内容を比較し、その差分データ（差分圧縮の情報）を作成する。
【００２１】
次に、差分圧縮制御部１１２は、差分圧縮処理部１１３により作成された差分データ（差分圧縮の情報）を記録する（ステップＳ０１４）。
【００２２】
圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセス群を抽出する際、比較元決定部１１５は必要となる情報をオペレーティングシステムプログラム内のプロセスおよびメモリを管理するプログラム（図示しない）から取得して利用してよい。また、別の例として、比較元決定部１１５は、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセス群を、特定のプロセスの配下のプロセス群として抽出してもよい。なお、この方法は当該プロセス群に圧縮対象ページが属するプロセスが含まれる場合のみ有効である。特定のプロセスの一例として、たとえば、ＡｎｄｒｏｉｄプラットフォームにおけるＺｙｇｏｔｅプロセスが挙げられる。ＺｙｇｏｔｅプロセスはＡｎｄｒｏｉｄプラットフォーム内の仮想マシンで実行されるアプリケーション群の共通の親プロセスである。
【００２３】
また、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセス群の中から比較元のプロセスを決定する場合、比較元決定部１１５は、あらかじめ指定された条件（プロセス名等）を基に当該プロセス群の中から比較元データを選択してもよい。
【００２４】
Ｚｙｇｏｔｅプロセスの配下のプロセスの一例として、システムヘルスチェックを行うプロセスが挙げられる。システムヘルスチェックを行うプロセスは、プロセスツリー上において、継続的に存在しかつ実行頻度は少ない（ＣＰＵ使用時間が少ない、メモリアクセス頻度が少ない）。
【００２５】
また、比較元決定部１１５は、実行頻度の少ないプロセスを比較元として選択してもよい。これは、たとえば、プロセスの使用ＣＰＵ時間、起床回数・頻度等に関する閾値を比較元決定部１１５に持たせ、閾値の条件を満たすプロセスを比較元として選択することで実現できる。
【００２６】
さらに、比較元決定部１１５は、比較元ページの対象となるメモリ領域およびページ（または、ページ変換テーブル）へのアクセス頻度が少ないプロセスを比較元として選択してもよい。たとえば、比較元決定部１１５が、各メモリ領域、もしくは、ページ（または、ページ変換テーブル）についてのアクセス頻度と事前に決定した閾値とを比較して比較元とするか否かを決定することで実現できる。
【００２７】
次に、第１の実施の形態の効果について説明する。
【００２８】
まず、圧縮対象ページ（または、ページ変換テーブル）の属するプロセスの親プロセスのページ（または、ページ変換テーブル）が、比較元データとして決定される場合（第１の場合）の効果について説明する。ある同じライブラリのある同じデータ領域（メモリ領域）を処理する場合について説明する。
【００２９】
プロセスに関し、あるプロセスとしてのプロセスＢ、プロセスＢの親プロセスであるプロセスＡ、プロセスＢの親プロセス以外のプロセスであるプロセスＣとする。また、プロセスＢの決定された圧縮対象ページ（または、ページ変換テーブル）をページＢとし、プロセスＡのページ（または、ページ変換テーブル）をページＡとし、プロセスＣのページ（または、ページ変換テーブル）をページＣとする。以上のように、ページ（または、ページ変換テーブル）をページと略して説明する。
【００３０】
プロセスＣは、当該ライブラリ・データ領域をページＣに読み込み、リード・ライトアクセスをする（たとえば、初期化）。また、プロセスＡは当該ライブラリ・データ領域をページＡに読み込み、リード・ライトアクセスをする（たとえば、初期化）。次に、プロセスＡは、プロセスＢを作成する。
【００３１】
プロセスＢが当該ライブラリ・データ領域にライトアクセス(アクセスＺ）すると、ページＡがコピーオンライトされ、ページＢが割り当てられる。このとき、ページＡとページＢとの差分（Ｘ）はアクセスＺによる変更のみである。
【００３２】
一方、ページＢとページＣとの差分（Ｙ）は、プロセスＣによる初期化に伴う変更、プロセスＡによる初期化に伴う変更、プロセスＢによるアクセスＺの合算となる。よって、Ｘ＜Ｙとなる。
【００３３】
したがって、圧縮対象ページ（または、ページ変換テーブル）の属するプロセスの親プロセスのページ（または、ページ変換テーブル）を比較元データとして決定することにより、差分データが小さくなり、圧縮率が向上し、物理メモリ使用量の低減率が高くなる。
【００３４】
次に、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ（または、ページ変換テーブル）が、比較元データとして決定される場合（第２の場合）の効果について説明する。
【００３５】
、この場合、比較元のプロセスのページ（または、ページ変換テーブル）と圧縮対象ページ（または、ページ変換テーブル）とが同一の内容を多く含むので、上記第１の場合と同様の理由で、差分データが小さくなり、圧縮率が向上し、物理メモリ使用量の低減率が高くなる。
【００３６】
次に、実行頻度が少ないプロセスのページ（または、ページ変換テーブル）が、比較元データとして決定される場合（第３の場合）の効果について説明する。
【００３７】
実行頻度が少ないプロセスのページ（または、ページ変換テーブル）を優先的に比較元として選択することで、比較元ページへのライトアクセス頻度が減少する。したがって、比較元ページ（または、ページ変換テーブル）に対するコピーオンライト処理実行回数が削減され、当該処理に伴うＣＰＵ時間消費やメモリ使用量を低減することが可能となる。
【００３８】
次に、メモリアクセスが少ないプロセスのページ（または、ページ変換テーブル）が、比較元データとして決定される場合（第４の場合）の効果について説明する。
【００３９】
メモリアクセスが少ないプロセスのページ（または、ページ変換テーブル）を優先的に比較元として選択することで、比較元ページへのライトアクセス頻度が減少する。したがって、比較元ページ（または、ページ変換テーブル）に対するコピーオンライト処理実行回数が削減され、当該処理に伴うＣＰＵ時間消費やメモリ使用量を低減することが可能となる。
【００４０】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００４１】
図３は、第２の実施の形態の構成を示すブロック図である。図３を参照すると、第２の実施の形態のコンピュータ１００は、ＣＰＵ１０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、物理メモリ１０２、バス１０３、二次記憶装置１０４、および、ＩＯ装置１０５を含む。これらの構成要素の数、接続関係等は一例であり、図３の構成に限定されない。
【００４２】
ＣＰＵ１０１は、プログラムを実行する中央演算処理装置である。ＣＰＵ１０１は、仮想記憶機能を備えている。物理メモリ１０２は、情報を記憶する装置であり、たとえば、主記憶装置である。物理メモリ１０２に記憶された情報へのアクセスには物理メモリアドレスが使用される。なお、物理メモリ１０２が記憶する情報とは、たとえば、ＣＰＵ１０１に実行されるプログラムや、ＣＰＵ１０１により使用されるデータである。
【００４３】
バス１０３は、接続されたブロック間での情報のやり取りを実現する通信路である。二次記憶装置１０４は、物理メモリ１０２に対する補助的な記憶装置であり、大容量であったり永続的な情報記憶が可能であったりする。二次記憶装置１０４の一例としては、ハードディスクドライブやフラッシュメモリが挙げられる。
【００４４】
ＩＯ装置１０５（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ装置）は、ユーザや他との装置との間のインタフェースを提供する入出力装置である。ＩＯ装置１０５の一例としては、キーボード、マウス、タッチパネル、表示装置、ネットワークインタフェース装置等が挙げられる。
【００４５】
コンピュータ１００は、オペレーティングシステムプログラム、および、ユーザプログラム（いずれも図示しない）のすべて、もしくは、一部を物理メモリ１０２に記憶させ、それらをＣＰＵ１０１に実行させることで、所望の動作を行う。それらのプログラムは、たとえば、二次記憶装置１０４に記録されており、必要に応じて物理メモリ１０２に読み込まれてもよい。
【００４６】
差分圧縮装置１１０は、ＣＰＵ１０１のハードウェア機能の一部として実現可能である。また、差分圧縮装置１１０の機能を、ＣＰＵ１０１に実現させるプログラムが可能である。
【００４７】
第２の実施の形態の差分圧縮装置１１０は、第１の実施の形態の差分圧縮装置１１０の一例であり、ページを圧縮する。図４は、第２の実施の形態の差分圧縮装置１１０の構成を示すブロック図である。
【００４８】
図４を参照すると、差分圧縮装置１１０は、仮想メモリ管理部１１１、差分圧縮制御部１１２、差分圧縮処理部１１３、物理メモリ管理部１１４、および、比較元決定部１１５を含む。
【００４９】
差分圧縮制御部１１２、差分圧縮処理部１１３、および、比較元決定部１１５は、それぞれ、第１の実施の形態の差分圧縮制御部１１２、差分圧縮処理部１１３、および、比較元決定部１１５である。
【００５０】
仮想メモリ管理部１１１は、仮想アドレス空間の管理を行う。仮想メモリ管理部１１１は、仮想アドレス空間内のアドレス（仮想アドレス）と物理アドレスとを変換するためのページ変換テーブルを仮想アドレス空間毎に作成し管理する。
【００５１】
仮想メモリ管理部１１１は、メモリ領域やページ（または、ページ変換テーブル）に対するプログラムからのアクセス頻度を計測してもよい。
【００５２】
ページ変換テーブルは、たとえば、ＣＰＵ１０１のＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）によって使用される。また、仮想メモリ管理部１１１は各仮想アドレス空間内での仮想メモリの割り当て管理を行う。仮想メモリ管理部１１１は、割り当て管理の一機能としてファイルマップ機能を有する。
【００５３】
ファイルマップ機能は、たとえば二次記憶装置１０４内に記憶されているファイルのすべてもしくは一部を仮想アドレス空間にマップし、プログラムによる仮想アドレスを用いたファイルへのアクセスを可能とする。
【００５４】
同一のファイルに対するファイルマップで使用される物理ページは複数の仮想アドレス空間で共有されてもよい。仮想メモリ管理部１１１は、たとえば、仮想メモリ空間のコピーやファイルマップのようなメモリ管理処理において、コピーオンライト方式を使用する。
【００５５】
差分圧縮制御部１１２は、物理ページに対し差分圧縮を適用することで物理メモリ使用量が低減されるように制御する。具体的には、差分圧縮制御部１１２は、２つの仮想アドレス空間における仮想メモリの利用状況を基に、差分圧縮の対象とすべきメモリ領域（ページ群）を抽出・決定し、差分圧縮処理部１１３を利用して当該メモリ領域を圧縮する。
【００５６】
また、差分圧縮制御部１１２は、圧縮されたメモリ領域へのプログラムによるアクセスを監視し、アクセスが発生した場合に、当該メモリ領域の内容を復元する。さらに、差分圧縮制御部１１２は、比較元となったページ（比較元ページ）へのプログラムによるライトアクセスを監視し、ライトアクセスが発生した場合に当該ページをコピーする。
【００５７】
差分圧縮制御部１１２は、これらの処理に必要な情報を記録し管理する。差分圧縮制御部１１２は、たとえば、当該情報を物理メモリ１０２内に記録する。
【００５８】
差分圧縮処理部１１３は、２つのページの内容を比較し、その差分データを作成することで一方のページの内容を圧縮する。また、差分圧縮処理部１１３は、比較元となったページ（比較元ページ）と差分データとから、圧縮されたページを復元する。
【００５９】
物理メモリ管理部１１４は、物理メモリ１０２の割り当て管理を行う。物理メモリ管理部１１４は、物理ページの割り当て要求を受けると、未使用の物理ページを選択して割り当てて使用状態として記録し、解放要求を受けると、対象の物理ページを未使用状態として記録する。また、物理メモリ管理部１１４は、情報要求を受けると、物理ページの使用状況（空き物理ページ数等）を返す。
【００６０】
比較元決定部１１５は、ページを圧縮する際、圧縮対象ページが属するプロセスの親プロセスのページ、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、もしくは、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定する。
【００６１】
次に、第２の実施の形態の動作について図面を参照して説明する。
【００６２】
まず、コンピュータ１００が差分圧縮を行うことで物理メモリ使用量を低減する際の動作（以下、本処理と記す）について、図５を参照して説明する。図５は、第２の実施の形態の動作を示すフローチャートである。
【００６３】
なお、本処理は、たとえば、仮想メモリ管理部１１１が、空き物理メモリ量を監視しておき、その値が閾値以下となった場合に開始してよい。また、本処理の実行に際し、差分圧縮制御部１１２は、実行中のプロセスそれぞれについて、「本処理で処理済か未処理か」の記録を保持する。本処理開始時、すべての実行中のプロセスは「本処理で未処理」と記録される。
【００６４】
なお、差分圧縮制御部１１２は、実行中のプロセスの一覧や各プロセスの情報を、コンピュータ１００で動作するオペレーティングシステムプログラム内のプロセスを管理するプログラム（図示しない）から取得し使用することが可能である。このことは、以降の説明においても同様である。
【００６５】
図５を参照すると、差分圧縮制御部１１２は、実行中のプロセスのうち、「本処理で未処理」のプロセスが存在するかどうかを確認し（ステップＳ１０１）、未処理のプロセスが存在しなければ（ステップＳ１０１／Ｎ）、動作を終了する。未処理のプロセスが存在すると（ステップＳ１０１／Ｙ）、差分圧縮制御部１１２は、未処理のプロセスのうち一つを圧縮対象として決定する（ステップＳ１０２）。
【００６６】
ここで選択された処理対象のプロセスをプロセスＢと表すこととする。また、差分圧縮制御部１１２は、プロセスＢについて、「本処理で処理済」と記録する。
【００６７】
比較元決定部１１５は、プロセスＢのページを圧縮するための比較元を決定する（ステップＳ１０３）。比較元決定部１１５は、プロセスＢの親プロセスを比較元として決定する。ここで選択した比較元をプロセスＡと表すこととする。
【００６８】
差分圧縮制御部１１２は、比較元プロセスの決定が成功したかどうか確認し（ステップＳ１０４）、決定に失敗した場合には（ステップＳ１０４／Ｎ）、ステップＳ１０１へ移行する。なお、プロセスＢに親プロセスが存在しない場合、本ステップの処理は失敗である。
【００６９】
決定に成功すると（ステップＳ１０４／Ｙ）、差分圧縮制御部１１２は、プロセスＡおよびプロセスＢの仮想メモリ（仮想アドレス空間）の比較処理および差分圧縮処理を実施する（ステップＳ１０５）。
【００７０】
ステップＳ１０５における動作（以下、本処理と記す）について、図６を参照して詳細に説明する。図６は、第２の実施の形態の動作を示すフローチャートである。
【００７１】
なお、本処理の実行に際し、差分圧縮制御部１１２は、プロセスＡの仮想アドレス空間内のメモリ領域それぞれについて、「本処理で処理済か未処理か」の記録を保持する。本処理開始時、すべてのメモリ領域は「本処理で未処理」と記録される。ここで、メモリ領域とは、たとえば、ヒープ、スタック、ファイルへのマップ等の仮想アドレス空間内で割り当てられている各領域を意味する。
【００７２】
図６を参照すると、差分圧縮制御部１１２は、プロセスＡの仮想アドレス空間（仮想アドレス空間Ａ）内に、「本処理で未処理」のメモリ領域があるかどうかを確認し（ステップＳ１１１）する。未処理のメモリ領域が無ければ（ステップＳ１１１／Ｎ）、差分圧縮制御部１１２は、動作を終了する。
【００７３】
未処理のメモリ領域があると（ステップＳ１１１／Ｙ）、差分圧縮制御部１１２は、未処理のメモリ領域のうち一つを処理対象として決定する（ステップＳ１１２）。ここで決定された処理対象の一つ目のメモリ領域をメモリ領域Ａと表すこととする。また、差分圧縮制御部１１２は当該メモリ領域Ａについて、「本処理で処理済」と記録する。
【００７４】
差分圧縮制御部１１２は、プロセスＢの仮想アドレス空間（仮想アドレス空間Ｂ）内にメモリ領域Ａと同じ種類のメモリ領域（メモリ領域Ｂ）が存在するかどうか確認し（ステップＳ１１３）、存在しなければ（ステップＳ１１３／Ｎ）、ステップＳ１１１に移行する。
【００７５】
ここで、メモリ領域が同じ種類であるとは、たとえば、メモリ領域Ａ、Ｂが、両方とも種類がヒープであるとか、メモリ領域Ａ、Ｂが、両方とも種類がスタックであるとかである。また、たとえば、種類がファイルへのマップであれば、同じファイルへのマップであり、かつ、ファイル内のオフセットやアクセス許可情報が同じであるメモリ領域を意味する。その際、メモリ領域の仮想アドレス空間内での位置（開始仮想アドレス）は異なっていてもよい。
【００７６】
差分圧縮制御部１１２は、メモリ領域Ａとメモリ領域Ｂとの比較処理を実施する（ステップＳ１１４）。
【００７７】
ステップＳ１１４における動作（以下、本処理と記す）について、図７を参照して詳細に説明する。図７は、第２の実施の形態の動作を示すフローチャートである。差分圧縮制御部１１２は、図７に示す処理をメモリ領域Ａ内のページ毎に行う。ここで、処理対象のメモリ領域Ａ内のページをページＡと表す。また、メモリ領域Ｂ内でページＡと同じオフセット位置にあるページをページＢと表す。本処理において、ページＢは、ページＡを比較元とした差分圧縮処理の対象となる。
【００７８】
図７を参照すると、差分圧縮制御部１１２は、ページＡおよびページＢについて対応する物理ページが存在するかどうか確認し（ステップＳ１２１）、存在しない場合（ステップＳ１２１／Ｎ）、処理を終了する。
【００７９】
対応する物理ページが存在しない場合とは、たとえば、当該ページがスワップアウトされている状態であったり、ファイルマップされているが、当該ページへのアクセスが一回も行われておらずデータのメモリへの読み込みが行われていない状態であったりする。
【００８０】
また、ページＡが差分圧縮済みであった場合、ページＡを復元してページＢの比較元ページとして使用してもよいし、ページＡに対する比較元ページをページＢの比較元ページとしてよい。後者の場合、ページＡに対する比較元ページを以降ページＡで指し示すものとする。
【００８１】
ページＡ、および、ページＢについて、対応する物理ページが存在する場合（ステップＳ１２１／Ｙ）、差分圧縮制御部１１２は、ページＡとページＢとが、同じ物理ページを共有しているかどうか確認する（ステップＳ１２２）。同じ物理ページを共有している場合（ステップＳ１２２／Ｙ）、差分圧縮制御部１１２は、処理を終了する。
【００８２】
たとえば、コピーオンライト発生前は、ページＡとページＢとは、対応する物理ページを共有しており、コピーオンライト発生後は、ページＡとページＢとは、対応する物理ページを共有していないという状況がありえる。
【００８３】
同じ物理ページを共有していない場合（ステップＳ１２２／Ｎ）、差分圧縮制御部１１２は、差分圧縮処理部１１３を利用して、ページＡを比較元としたページＢの差分圧縮処理を実施する（ステップＳ１２３）。
【００８４】
次に、差分圧縮制御部１１２は、ステップＳ１２３で作成された差分圧縮の情報（差分データ）を記録する（ステップＳ１２４）。なお、本ステップは、差分圧縮処理部１１３による差分圧縮処理が成功した場合のみ行われる。
【００８５】
差分圧縮制御部１１２により記録される差分圧縮の情報の一例としては、差分圧縮されたページ（ページＢ）が属する仮想アドレス空間（仮想アドレス空間Ｂ）の識別子、当該ページの識別子（たとえば、当該仮想アドレス空間内でのオフセット）、比較元ページ（ページＡ）が属する仮想アドレス空間（仮想アドレス空間Ａ）の識別子、当該比較元ページの識別子、作成された差分データ等が挙げられる。
【００８６】
次に、ステップＳ１２３における差分圧縮処理部１１３による差分圧縮処理について、図８を参照して詳細に説明する。図８は、第２の実施の形態の動作を示すフローチャートである。
【００８７】
図８を参照すると、差分圧縮処理部１１３は、ページＡを比較元としてページＢから差分データを作成し、ページＢを差分圧縮する（ステップＳ１３１）。差分圧縮の方式について図１１を参照して説明する。図１１は、差分圧縮の方式の一例を示す説明図である。
【００８８】
図１１を参照すると、ページＡおよびページＢ内の各バイトについて値を比較し、値に違いがある領域を抽出する。ここでは、０オリジンの３バイト目、および、９〜１１バイト目が、ページＡとページＢとで異なっているため、差分圧縮処理部１１３は、これらの２領域を抽出する。次に、差分圧縮処理部１１３は、各領域を開始オフセット位置、データ長、および、ページＢでの値を用いて表し、差分データ（差分圧縮の情報）を作成する。
【００８９】
なお、差分圧縮処理部１１３は、ページＡとページＢとの差分が大きく、差分圧縮により得られる効果がない、もしくは、少ないと判断した場合には、圧縮失敗として処理を途中終了してよい。圧縮効果有無の判断は、たとえば、ページＡとページＢとで異なるバイトの数に関する閾値を持っておき、差分データ量がその閾値を超えた場合には圧縮効果なしと判断してよい。
【００９０】
差分圧縮処理部１１３は、ステップＳ１３１において圧縮に失敗した場合（ステップＳ１３２／Ｎ）、処理を終了する。
【００９１】
差分圧縮処理部１１３は、圧縮に成功した場合（ステップＳ１３２／Ｙ）、仮想アドレス空間Ｂ内でのページＢへのリード・ライトアクセスを禁止する（ステップＳ１３３）。これは、たとえば、仮想アドレス空間Ｂ用のページ変換テーブルにおいてページＢに対応するページテーブルエントリに当該アクセス禁止のフラグを設定することで実現できる。
【００９２】
また、差分圧縮処理部１１３は、仮想アドレス空間Ａ内でのページＡへのライトアクセスを禁止する（ステップＳ１３４）。そして、差分圧縮処理部１１３は、ページＢの物理ページを解放する（ステップＳ１３５）。
【００９３】
次に、差分圧縮されたページ（ページＢ）へのアクセスが発生した際の動作について、図９を参照して説明する。図９は、第２の実施の形態の動作を示すフローチャートである。なお、この動作は、たとえば、リードおよびライトアクセスが禁止されたページへのメモリアクセスに伴う例外発生を契機として開始されてよい。
【００９４】
図９を参照すると、差分圧縮制御部１１２は、アクセス先のページが差分圧縮されているかどうかを確認し（ステップＳ１４１）、差分圧縮されていなければ（ステップＳ１４１／Ｎ）、処理を終了する。アクセス先のページが差分圧縮されていれば（ステップＳ１４１／Ｙ）、差分圧縮制御部１１２は、差分圧縮処理部１１３に復元を要求する。
【００９５】
本ステップにおける確認には、たとえば、ステップＳ１２３で記録された差分圧縮の情報を用いてよい。
【００９６】
復元を要求された差分圧縮処理部１１３は、ページＢ用の物理ページを割り当てる（ステップＳ１４２）。差分圧縮処理部１１３は、ページＡの内容と、ページＢ用の差分データとから、ページＢの内容をステップＳ１４２で割り当てた物理ページに復元する（ステップＳ１４３）。
【００９７】
差分圧縮されたページの復元の方式を、図１２を参照して説明する。図１２は、図１１の差分圧縮に対応する差分復元の方式の一例を示す説明図である。
【００９８】
図１２を参照すると、差分圧縮処理部１１３は、差分データが存在しない領域については比較元ページ（ページＡ）の値を使用し、差分データが存在する領域については差分データ内に含まれる値を使用して、差分圧縮される前のページＢの内容を復元する。
【００９９】
次に、差分圧縮処理部１１３は、仮想アドレス空間Ｂ内でのページＢへのリードおよびライトアクセスを許可し、対応する物理ページとしてステップＳ１４２で割り当てた物理ページを設定する（ステップＳ１４４）。これは、たとえば、仮想アドレス空間Ｂ用のページ変換テーブルにおいてページＢに対応するページテーブルエントリに当該アクセス許可のフラグを設定し、当該物理ページのアドレスを登録することで実現できる。
【０１００】
次に、差分圧縮の比較元となったページ（ページＡ）へのライトアクセスが発生した際の動作について、図１０を参照して説明する。図１０は、第２の実施の形態の動作を示すフローチャートである。なお、この動作は、たとえば、ライトアクセスが禁止されたページへのライトメモリアクセスに伴う例外発生を契機として開始されてよい。
【０１０１】
図１０を参照すると、差分圧縮制御部１１２は、アクセス先のページが差分圧縮の比較元ページであるかどうかを確認し（ステップＳ１５１）、比較元ページでなければ（ステップＳ１５１／Ｎ）、処理を終了する。本ステップにおける確認には、たとえば、ステップＳ１２３で記録された差分圧縮の情報を用いてよい。
【０１０２】
アクセス先のページが差分圧縮の比較元ページであると（ステップＳ１５１／Ｙ）、差分圧縮制御部１１２は、ページＡの内容をコピーするための物理ページを割り当てる（ステップＳ１５２）。次に、差分圧縮制御部１１２は、ページＡの内容をステップＳ１５２で割り当てた物理ページへコピーする（ステップＳ１５３）。
【０１０３】
次に、差分圧縮制御部１１２は、ページＡが比較元ページとなっている差分圧縮されたページ（ページＢ）の比較元ページをステップＳ１５２で割り当てた物理ページに変更する（ステップＳ１５４）。次に、差分圧縮制御部１１２は、仮想アドレス空間Ａ内でのページＡへのライトアクセスを許可する（ステップＳ１５５）。
【０１０４】
以上においては、比較元決定部１１５は、ページを圧縮する際、圧縮対象ページが属するプロセスの親プロセスのページを比較元データとして決定した。しかし、比較元決定部１１５は、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定してもよい。
【０１０５】
なお、上記では、実行中のプロセスすべてを、圧縮対象として処理を行う場合について説明したが、これに限定されるものではない。他の例として、差分圧縮対象のプロセス（プロセスＢ）を実行頻度が少ないプロセスに限定して処理を行ってもよい。
【０１０６】
これは、たとえば、プロセスの使用ＣＰＵ時間、起床回数・頻度、等に関する閾値を差分圧縮制御部１１２に持たせ、各プロセスについてのそれらの値と閾値とを比較して当該プロセスを処理対象に含めるか否かを判断することで実現できる。なお、プロセスの使用ＣＰＵ時間、起床回数・頻度、等の情報は、コンピュータ１００で動作するオペレーティングシステムプログラム内のプロセスを管理するプログラム（図示しない）において取得したり計算したりしてよい。
【０１０７】
また、上記では、仮想アドレス空間Ａと仮想アドレス空間Ｂとで共通の種類であったり共通のオフセットであったりするすべてメモリ領域およびページを圧縮対象として処理を行う場合について説明したが、これに限定されるものではない。他の例として、差分圧縮対象のメモリ領域およびページをアクセス頻度が少ないものに限定して処理を行ってよい。
【０１０８】
これは、たとえば、仮想メモリ管理部１１１が、メモリ領域やページに対するプログラムからのアクセス頻度を計測し、差分圧縮制御部１１２が、各メモリ領域、または、ページについてのアクセス頻度と閾値とを比較して処理対象に含めるか否かを判断することで実現できる。仮想メモリ管理部１１１によるアクセス頻度の計測には、たとえば、ＬＲＵ（Ｌａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）やクロックのような、一般的なページ置換アルゴリズムが可能である。
【０１０９】
次に、第２の実施の形態の効果について説明する。
【０１１０】
第２の実施の形態は、第１の実施の形態の差分圧縮装置１１０を含むので、第１の実施の形態と同一の効果を持つ。
【０１１１】
さらに、詳細に説明する。第２の実施の形態において、コンピュータ１００は、２つのページの内容を比較し、一方を比較元ページとして他方を差分圧縮し、圧縮されたページに対応する物理ページを解放する。また、コンピュータ１００は、圧縮されたページ、および、比較元ページに対して処理が必要なアクセスが発生した場合、圧縮されたページを復元したり比較元ページをコピーしたりする。
【０１１２】
これにより、圧縮されたページへのアクセスが存在しない間、当該ページが必要とする物理メモリ量は１ページ分のメモリサイズから差分データおよび管理用の情報のサイズに減ることとなる。したがって、第２の実施の形態によるコンピュータ１００は、物理メモリ使用量を低減することが可能となる。
【０１１３】
その効果は、１ページのうちの少量のデータ変更に伴ってコピーオンライトにより割り当てられたページに対して特に有効である。また、当該ページを使用しているプロセスの実行頻度が低い場合はさらに有効となる。
【０１１４】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【０１１５】
第２の実施の形態がページそのものを対象として差分圧縮を実施したのに対し、第３の実施の形態は、仮想アドレス空間と物理ページとの対応関係を保持するページ変換テーブルを対象として差分圧縮を行う。
【０１１６】
第３の実施の形態の基本的な構成は、図３および図４を参照して説明した第２の実施の形態の構成と同一である。したがって、第３の実施の形態の差分圧縮装置１１０は、第１の実施の形態の差分圧縮装置１１０の一例であり、ページ変換テーブルを対象として差分圧縮を行う。
【０１１７】
以下、第３の実施の形態の動作について、第２の実施の形態と異なる点を中心に説明する。
【０１１８】
図５を参照すると、第３の実施の形態における差分圧縮制御部１１２は、プロセスＡおよびプロセスＢのページ変換テーブル群の比較処理および差分圧縮処理を実施する（ステップＳ１０５）。
【０１１９】
ステップＳ１０５における動作（本処理）について、図１３を参照して説明する。図１３は、第３の実施の形態の動作を示すフローチャートである。なお、本処理の実行に際し、差分圧縮制御部１１２は、プロセスＡのページ変換テーブルそれぞれについて、「本処理で処理済か未処理か」の記録を保持する。本処理開始時、すべてのページ変換テーブルは「本処理で未処理」と記録される。
【０１２０】
図１３を参照すると、差分圧縮制御部１１２は、プロセスＡの仮想アドレス空間（仮想アドレス空間Ａ）用の「本処理で未処理」のページ変換テーブルがあるかどうかを確認する（ステップＳ２１１）。 「本処理で未処理」のページ変換テーブルが無ければ（ステップＳ２１１／Ｎ）、差分圧縮制御部１１２は、動作を終了する。
【０１２１】
「本処理で未処理」のページ変換テーブルがあれば（ステップＳ２１１／Ｙ）、差分圧縮制御部１１２は、「本処理で未処理」のページ変換テーブルのうち一つを処理対象として決定する（ステップＳ２１２）。ここで、決定した処理対象の一つのページ変換テーブルをページ変換テーブルＡと表すこととする。
【０１２２】
なお、ページ変換テーブルが階層構造となっている場合、差分圧縮制御部１１２は、より下位のページ変換テーブルを優先して選択する。また、差分圧縮制御部１１２は当該ページ変換テーブルについて、「本処理で処理済」と記録する。
【０１２３】
次に、差分圧縮制御部１１２は、プロセスＢの仮想アドレス空間（仮想アドレス空間Ｂ）用のページ変換テーブルＡと同じ仮想アドレス領域用のページ変換テーブル（ページ変換テーブルＢ）があるかどうか確認する（ステップＳ２１３）。同じ仮想アドレス領域用のページ変換テーブルが無ければ（ステップＳ２１３／Ｎ）、差分圧縮制御部１１２は、ステップＳ２１１に移行する。ページ変換テーブルＡとページ変換テーブルＢは、各ページ変換テーブルで管理される仮想アドレスレンジ（開始仮想アドレスおよび終了仮想アドレス）が同一である場合に、同じ仮想アドレス領域用であるとみなされる。たとえば、プロセス１のあるページ変換テーブル１が仮想アドレス空間１の0x10000〜0x2ffffのアドレスレンジに関するページ変換情報を保持しており、プロセス２のあるページ変換テーブル２が仮想アドレス空間２の0x10000〜0x2ffffのアドレスレンジに関するページ変換情報を保持している場合、ページ変換テーブル１とページ変換テーブル２とは同じ仮想アドレス領域用である。
【０１２４】
同じ仮想アドレス領域用のページ変換テーブルがあれば（ステップＳ２１３／Ｙ）、差分圧縮制御部１１２は、差分圧縮処理部１１３を利用して、ページ変換テーブルＡを比較元としたページ変換テーブルＢの差分圧縮処理を実施する（ステップＳ２１４）。
【０１２５】
次に、差分圧縮制御部１１２は、ステップＳ２１４で作成された差分圧縮の情報を記録する（ステップＳ２１５）。なお、ステップＳ２１５は、差分圧縮処理部１１３による差分圧縮処理が成功した場合のみ実施される。
【０１２６】
差分圧縮制御部１１２によって記録される差分圧縮の情報の一例としては、差分圧縮されたページ変換テーブル（ページ変換テーブルＢ）が属する仮想アドレス空間（仮想アドレス空間Ｂ）の識別子、当該ページ変換テーブルの識別子（たとえば当該仮想アドレス空間内でのオフセット）、比較元ページ変換テーブル（ページ変換テーブルＡ）が属する仮想アドレス空間（仮想アドレス空間Ａ）の識別子、当該比較元ページ変換テーブルの識別子、作成された差分データが挙げられる。
【０１２７】
次に、ステップＳ２１４において行われる差分圧縮処理部１１３による差分圧縮処理について、図１４を参照して説明する。図１４は、第３の実施の形態の動作を示すフローチャートである。
【０１２８】
図１４を参照すると、差分圧縮処理部１１３は、ページ変換テーブルＡを比較元としてページ変換テーブルＢから差分データを作成し、ページ変換テーブルＢを差分圧縮する（ステップＳ２２１）。差分圧縮の方式には、図１１を参照して説明した第２の実施の形態と同様の方式を用いてよい。
【０１２９】
差分圧縮処理部１１３は、圧縮に失敗した場合（ステップＳ２２２／Ｎ）、その処理を終了する。圧縮に成功した場合（ステップＳ２２２／Ｙ）、差分圧縮処理部１１３は、仮想アドレス空間Ｂ内でのページ変換テーブルＢの登録を削除する（ステップＳ２２３）。
【０１３０】
これは、たとえば、ページ変換テーブルＢが２段目以降のページ変換テーブルである場合、一つ上位のページ変換テーブルにおけるページ変換テーブルＢへの参照を削除したり、アクセスを禁止したりすることで実現できる。また、ページ変換テーブルＢが最上位のページ変換テーブルである場合には、仮想アドレス空間Ｂの最上位ページ変換テーブルとしてすべてのページ変換参照を禁止するダミーのページ変換テーブルＢを登録することで実現できる。
【０１３１】
次に、差分圧縮処理部１１３は、ページ変換テーブルＢが使用していた物理ページを解放する（ステップＳ２２４）。
【０１３２】
差分圧縮されたページ変換テーブル（ページ変換テーブルＢ）へのアクセスが発生した際の動作は、図９を参照して説明した差分圧縮されたページ（ページＢ）へのアクセスが発生した際の動作と同様である。その際、ページＡをページ変換テーブルＡに、ページＢをページ変換テーブルＢに置き換えて処理を行う。
【０１３３】
なお、第３の実施の形態において、この動作は、たとえば、ページ変換テーブルが登録されていない仮想アドレス領域へのメモリアクセスに伴う例外発生を契機として開始されてもよい。また、この動作は、オペレーティングシステムプログラムが当該ページ変換テーブルの参照や変更を必要とした場合を契機として開始されてもよい。
【０１３４】
差分圧縮の比較元となったページ変換テーブル（ページ変換テーブルＡ）へのライトアクセスが発生した際の動作は、図１０を参照して説明した比較元となったページ（ページＡ）へのライトアクセスが発生した際の動作と同様である。その際、ページＡをページ変換テーブルＡに、ページＢをページ変換テーブルＢに置き換えて処理を行う。
【０１３５】
なお、第３の実施の形態において、この動作は、オペレーティングシステムプログラムが当該ページ変換テーブルの変更を必要とした場合を契機として開始されてもよい。
【０１３６】
次に、第３の実施の形態の効果について説明する。
【０１３７】
第３の実施の形態は、第１の実施の形態の差分圧縮装置１１０を含むので、第１の実施の形態と同一の効果を持つ。
【０１３８】
さらに、詳細に説明する。第３の実施の形態において、コンピュータ１００は、ページ変換テーブルを対象として差分圧縮を行う。これにより、圧縮されたページ変換テーブルで表される仮想アドレス領域へのアクセスが存在しない間、当該ページ変換テーブルが必要とする物理メモリ量は１ページ分のメモリサイズから差分データおよび管理用の情報のサイズに減ることとなる。したがって、第３の実施の形態によるコンピュータ１００は物理メモリ使用量を低減することが可能となる。
【０１３９】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１４０】
［付記１］
ページ、または、ページ変換テーブルを圧縮対象データとして決定する差分圧縮制御部と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する比較元決定部と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する差分圧縮処理部と、
を含むことを特徴とする差分圧縮装置。
【０１４１】
［付記２］
実行頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する前記差分圧縮制御部を含むことを特徴とする付記１の差分圧縮装置。
【０１４２】
［付記３］
メモリアクセス頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する前記差分圧縮制御部を含むことを特徴とする付記１の差分圧縮装置。
【０１４３】
［付記４］
仮想アドレス空間内の仮想アドレスと物理アドレスとを変換するためのページ変換テーブルを仮想アドレス空間毎に作成する仮想メモリ管理部と、
物理ページの割り当て要求を受けると、未使用の物理ページを選択して割り当てて使用状態として記録し、解放要求を受けると、対象の物理ページを未使用状態として記録する物理メモリ管理部と、
圧縮されたページ、または、ページ変換テーブルへアクセスが発生した場合に、そのページ、または、ページ変換テーブルの内容を復元する前記差分圧縮制御部と、
を含むことを特徴とする付記１、２、または、３の差分圧縮装置。
【０１４４】
［付記５］
比較元となったページ、または、ページ変換テーブルへライトアクセスが発生した場合にそのページ、または、ページ変換テーブルをコピーする前記差分圧縮制御部を含むことを特徴とする付記１、２、３、または、４の差分圧縮装置。
【０１４５】
［付記６］
付記１、２、３、４、または、５の前記差分圧縮装置を含むことを特徴とするコンピュータ。
【０１４６】
［付記７］
ページ、または、ページ変換テーブルを圧縮対象データとして決定する手順と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する手順と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する手順と、
を含むことを特徴とするメモリ管理方法。
【０１４７】
［付記８］
実行頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する手順を含むことを特徴とする付記７のメモリ管理方法。
【０１４８】
［付記９］
メモリアクセス頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する手順を含むことを特徴とする付記７のメモリ管理方法。
【０１４９】
［付記１０］
仮想アドレス空間内の仮想アドレスと物理アドレスとを変換するためのページ変換テーブルを仮想アドレス空間毎に作成する仮想メモリ管理部と、
物理ページの割り当て要求を受けると、未使用の物理ページを選択して割り当てて使用状態として記録し、解放要求を受けると、対象の物理ページを未使用状態として記録する物理メモリ管理部と、
圧縮されたページ、または、ページ変換テーブルへアクセスが発生した場合に、そのページ、または、ページ変換テーブルの内容を復元する前記差分圧縮制御部と、
を含むことを特徴とする付記７、８、または、９のメモリ管理方法。
【０１５０】
［付記１１］
比較元となったページ、または、ページ変換テーブルへライトアクセスが発生した場合にそのページ、または、ページ変換テーブルをコピーする前記差分圧縮制御部を含むことを特徴とする付記７、８、９、または、１０のメモリ管理方法。
【０１５１】
［付記１２］
ページ、または、ページ変換テーブルを圧縮対象データとして決定する手順と、
圧縮対象データがページであれば、圧縮対象ページが属するプロセスの親プロセスのページ、または、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ、実行頻度が少ないプロセスのページ、または、メモリアクセス頻度が少ないプロセスのページを比較元データとして決定し、圧縮対象データがページ変換テーブルであれば、圧縮対象ページ変換テーブルが属するプロセスの親プロセスのページ変換テーブル、圧縮対象ページが属するプロセスと起動プログラムイメージを共有するプロセスのページ変換テーブル、実行頻度が少ないプロセスのページ変換テーブル、または、メモリアクセス頻度が少ないプロセスのページ変換テーブルを比較元データとして決定する手順と、
決定された圧縮対象データと比較元データとから、圧縮対象データのページ、または、ページ変換テーブルの内容を差分圧縮し、差分データを作成する手順と、
をコンピュータに実行させることを特徴とするプログラム。
【０１５２】
［付記１３］
実行頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する手順を含むことを特徴とする付記１２のプログラム。
【０１５３】
［付記１４］
メモリアクセス頻度の少ないプロセスのページ、または、ページ変換テーブルを圧縮対象データとして決定する手順を含むことを特徴とする付記１２のプログラム。
【０１５４】
［付記１５］
仮想アドレス空間内の仮想アドレスと物理アドレスとを変換するためのページ変換テーブルを仮想アドレス空間毎に作成する仮想メモリ管理部と、
物理ページの割り当て要求を受けると、未使用の物理ページを選択して割り当てて使用状態として記録し、解放要求を受けると、対象の物理ページを未使用状態として記録する物理メモリ管理部と、
圧縮されたページ、または、ページ変換テーブルへアクセスが発生した場合に、そのページ、または、ページ変換テーブルの内容を復元する前記差分圧縮制御部と、
を含むことを特徴とする付記１２、１３、または、１４のプログラム。
【０１５５】
［付記１６］
比較元となったページ、または、ページ変換テーブルへライトアクセスが発生した場合にそのページ、または、ページ変換テーブルをコピーする前記差分圧縮制御部を含むことを特徴とする付記１２、１３、１４、または、１５のプログラム。
【符号の説明】
【０１５６】
１００    コンピュータ
１０１    ＣＰＵ
１０２    物理メモリ
１０３    バス
１０４    二次記憶装置
１０５    ＩＯ装置
１１０    差分圧縮装置
１１１    仮想メモリ管理部
１１２    差分圧縮制御部
１１３    差分圧縮処理部
１１４    物理メモリ管理部
１１５    比較元決定部
【図１】
2014041420.tif 000003
【図２】
2014041420.tif 000004
【図３】
2014041420.tif 000005
【図４】
2014041420.tif 000006
【図５】
2014041420.tif 000007
【図６】
2014041420.tif 000008
【図７】
2014041420.tif 000009
【図８】
2014041420.tif 000010
【図９】
2014041420.tif 000011
【図１０】
2014041420.tif 000012
【図１１】
2014041420.tif 000013
【図１２】
2014041420.tif 000014
【図１３】
2014041420.tif 000015
【図１４】
2014041420.tif 000016