(57)【要約】  複数の演算処理部と、データを記憶するメインメモリと、複数の演算処理部から共有されるとともに、メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータが、次の処理を実行する。すなわち、仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示する。そして、仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムがメインメモリに配置されているかを判定する。配置対象のプログラムがメインメモリに配置されていると判断された場合、配置対象のプログラムが配置されたメインメモリの領域を、仮想メモリの領域に対応づける。一方、配置対象のプログラムがメインメモリに配置されていない場合、配置対象のプログラムを仮想メモリの領域に配置する。
2012111113.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
処理を実行させることを特徴とするメモリ管理プログラム。
【請求項２】
前記メモリ管理プログラムにおいて、
前記コンピュータは、
前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする請求項１記載のメモリ管理プログラム。
【請求項３】
前記メモリ管理プログラムにおいて、
前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする請求項２記載のメモリ管理プログラム。
【請求項４】
前記メモリ管理プログラムにおいて、
前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
前記コンピュータに、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする請求項１記載のメモリ管理プログラム。
【請求項５】
前記コンピュータは、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする請求項４記載のメモリ管理プログラム。
【請求項６】
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータが実行するメモリ管理方法であって、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
ことを特徴とするメモリ管理方法。
【請求項７】
複数の演算処理部と、
前記複数の演算処理部に接続され、データを記憶するメインメモリと、
前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリと、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示する配置部と、
前記配置部から前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定する判定部と、
前記判定部が、前記配置対象のプログラムが前記メインメモリに配置されていると判定した場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけするとともに、前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する管理部を有することを特徴とする情報処理装置。
【請求項８】
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
処理を実行させることを特徴とするメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
【請求項９】
前記メモリ管理プログラムにおいて、
前記コンピュータは、
前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする請求項８記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
【請求項１０】
前記メモリ管理プログラムにおいて、
前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする請求項９記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
【請求項１１】
前記メモリ管理プログラムにおいて、
前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
前記コンピュータに、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする請求項８記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
【請求項１２】
前記コンピュータは、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする請求項１１記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理プログラム及びメモリ管理方法、情報処理装置、及びメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体に関する。
【背景技術】
【０００２】
近年、ハイパーバイザ(Hypervisor)と呼ばれる仮想マシンを制御する制御プログラムにより、１台の物理コンピュータ上に複数台の仮想マシンとしての仮想コンピュータを構築し、各仮想コンピュータごとに任意のＯＳ（Operating System）やアプリケーションプログラムを動作させる仮想化システムが実用化されている。仮想化システムにおいては、仮想コンピュータ間の通信効率などを向上させるために、各仮想コンピュータがメモリ空間の一部を共有する技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２４９９１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、物理コンピュータは、メモリへのアクセス速度を向上させるために、低速かつ大容量のメインメモリに加え、高速かつ小容量のキャッシュメモリを搭載している。仮想化システムでは、各仮想コンピュータにおけるＯＳやアプリケーションなどのプログラム部品が共通することが多い。しかし、各仮想コンピュータは、セキュリティなどの観点から、各仮想コンピュータ専用のメモリ空間にプログラム部品を格納している。この場合、キャッシュメモリに同一のプログラム部品が格納されていると、他のプログラム部品などがキャッシュメモリからメインメモリへキャッシュアウトされる（追い出される）確率が高くなり、キャッシュアウトされたプログラム部品を記憶する低速なメインメモリへのアクセスにより仮想化システムの性能向上が阻害されるおそれがあった。【０００５】
そこで、本発明は従来技術の問題点に鑑み、キャッシュメモリを効率的に使用することで、仮想化システムの性能が向上する技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本技術の一実施形態では、複数の仮想コンピュータが動作可能なコンピュータが、複数の演算処理部と、データを記憶するメインメモリと、複数の演算処理部から共有されるとともに、メインメモリが記憶するデータの一部を保持するキャッシュメモリを有する。コンピュータは、仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示する。また、コンピュータは、仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムがメインメモリに配置されているかを判定する。配置対象のプログラムがメインメモリに配置されていると判断された場合、コンピュータは、配置対象のプログラムが配置されたメインメモリの領域を、仮想メモリの領域に対応づける。一方、配置対象のプログラムがメインメモリに配置されていない場合、コンピュータは、配置対象のプログラムを仮想メモリの領域に配置する。
【発明の効果】
【０００７】
本技術によれば、キャッシュメモリを効率的に使用することで、仮想化システムの性能が向上する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係るサーバの一例の全体構成図である。
【図２】実施形態に係るサーバの一例の機能構成図である。
【図３】ＩＤテーブルの説明図である。
【図４】管理テーブルの説明図である。
【図５】サーバのハードウェア構成図である。
【図６】仮想アドレス通知処理のフローチャートである。
【図７】物理アドレス配置処理のフローチャートである。
【図８】管理テーブル更新処理のフローチャートである。
【図９】管理テーブル更新処理のフローチャートである。
【図１０】使用頻度更新処理のフローチャートである。
【図１１】キャッシュメモリ入替処理のフローチャートである。
【図１２】キャッシュメモリ入替処理のフローチャートである。
【図１３】具体的な実施例における、サーバの全体構成図である。
【図１４】具体的な実施例における、管理テーブルの説明図である。
【図１５】具体的な実施例における、管理テーブルの説明図である。
【図１６】具体的な実施例における、管理テーブルの説明図である。
【図１７】具体的な実施例における、管理テーブルの説明図である。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照して本発明を実施するための実施形態について技術を詳細に説明する。
【００１０】
図１は、本実施形態におけるサーバ１００の一例を示す。
【００１１】
メインメモリ１１０は、ＣＰＵ（Central Processing Unit）１２０がアクセスする主記憶装置であり、具体例としてＲＡＭ（Random Access Memory）が挙げられる。また、メインメモリ１１０を制御するためのメインメモリ制御機構は、特定の期間におけるメインメモリ１１０内の特定の領域がいつ最後に使用されたかについて、ＬＲＵ（Least Recently Used）情報等の使用状況を、ソフトウェアからの要求に応じて通知することができる状況通知機能を有する。
【００１２】
ＣＰＵ１２０は複数のコア２１０、及び、各コア２１０間で共用されるキャッシュメモリ２２０を有する。
【００１３】
キャッシュメモリ２２０は、キャッシュメモリ制御機構によって制御される。キャッシュメモリ制御機構は、特定の期間におけるキャッシュメモリ２２０内の特定の領域がいつ最後に使用されたかについて、ＬＲＵ情報等の使用状況を、ソフトウェアからの要求に応じて通知することができる状況通知機能を有する。また、キャッシュメモリ２２０内の領域には、キャッシュメモリ制御機構によって、データをメインメモリ１１０からキャッシュメモリ２２０に登録するキャッシュイン及びキャッシュメモリ２２０が登録するデータをメインメモリ１１０に追い出す（吐き出す）キャッシュアウトをソフトウェアから制御することができるソフトウェア制御領域が設定される。即ち、サーバ１００は、キャッシュメモリ２２０に対してメインメモリ１１０に格納されているデータの一部を任意にキャッシュイン及びキャッシュアウトさせる機構を有する。
【００１４】
ＣＰＵ１２０上で、仮想マシン制御部としてのハイパーバイザを用いた仮想化機構２３０により、仮想コンピュータ（仮想マシン）２４０が複数動作する。また、各仮想コンピュータ２４０上で、プログラム部品２５０が動作する。なお、プログラム部品２５０は、例えば、実行ファイルとして、サーバ１００に備えられたハードディスクなどのストレージに予め格納されている。
【００１５】
各仮想コンピュータ２４０上には、仮想化されたメモリ（以下、「仮想メモリ」と略記する）が夫々存在する。各仮想メモリは、各仮想コンピュータ２４０上からは、各仮想コンピュータ２４０専用の物理的なメインメモリとして扱われる。仮想化機構２３０は、各仮想メモリにメインメモリ１１０の一部を適宜対応づけることによって、各仮想コンピュータ２４０上に仮想メモリを実現させる。
【００１６】
サーバ１００のメインメモリ１１０には、図２に示すように、ＩＤテーブル３００及び管理テーブル３１０が存在する。
【００１７】
ＩＤテーブル３００には、図３に示すように、プログラム部品２５０の実行ファイルなどのファイル名、及び、プログラム部品２５０を特定するＩＤが関連付けられたレコードが格納されている。各プログラム部品２５０のＩＤは、例えば、サーバ１００の管理者によって定義される。また、ＩＤテーブル３００は、例えば、サーバ１００の管理者によって定義され、サーバ１００に備えられたハードディスクなどのストレージに予め格納されている。
【００１８】
管理テーブル３１０には、図４に示すように、プログラム部品２５０のＩＤ、使用頻度、ポイント、メモリ状態、物理アドレス、及び、サイズが関連付けられたレコードが格納されている。使用頻度は、プログラム部品２５０を、ＯＳやアプリケーションなどのプログラムが所定期間に使用した回数である。ポイントは、使用頻度から算出される値である。ポイントは、プログラム部品２５０が展開（配置）されたメインメモリ１１０の領域であるメインメモリ領域を、ソフトウェア制御領域に対し、キャッシュイン及びキャッシュアウトするための判定に使用される。メモリ状態は、プログラム部品２５０が展開されたメインメモリ領域が、ソフトウェア制御領域にキャッシュインされているか否かを示す。プログラム部品２５０が展開されたメインメモリ領域がキャッシュインされている場合、メモリ状態は“ＩＮ”となる。一方、プログラム部品２５０が展開されたメインメモリ領域がキャッシュインされていない場合、メモリ状態は“ＯＵＴ”となる。物理アドレスには、プログラム部品２５０が展開されたメインメモリ領域の先頭アドレスが、１６進数で格納される。サイズには、プログラム部品２５０が展開されたメインメモリ領域のバイト単位の大きさが１６進数で格納される。また、以下では、物理アドレス及びサイズにより特定されるメインメモリ領域を「データメモリ領域」と略記する。
【００１９】
なお、物理アドレス及びサイズは、プログラム部品２５０の所在情報の一例として挙げられる。さらに、管理テーブル３１０は、テーブルの一例として挙げられる。
【００２０】
サーバ１００には、図５に示すように、ＣＰＵ１２０、メインメモリ１１０の他に、さらに通信インターフェース１３０、ストレージ１４０、入出力装置１５０、及び可搬記録媒体駆動装置１６０などのハードウェアも含まれている。各ハードウェアは、バス１７０を介して相互に接続されている。また、通信インターフェース１３０は、ネットワークを介してデータを送受信するための装置であり、具体例としてネットワークカードが挙げられる。さらに、入出力装置１５０は、サーバ１００にデータを入力又はサーバ１００からデータを出力するための装置であり、具体例として、キーボード、マウス、及びディスプレイが挙げられる。そして、可搬記録媒体駆動装置１６０は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどのコンピュータ読取可能なデータが記録された可搬記録媒体１８０から、データを読取る装置であり、具体例として、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＯＭドライブが挙げられる。
【００２１】
可搬記録媒体１８０には、本実施形態を具現化するメモリ管理プログラムが記録されている。可搬記録媒体１８０に記録されたメモリ管理プログラムは、可搬記録媒体駆動装置１６０からストレージ１４０にインストールされる。ＣＰＵ１２０は、インストールされたメモリ管理プログラムをメインメモリ１１０に展開し、実行することで、図２に示すように、通知部３２０、配置部３３０、管理部３４０、監視部３５０、入替部３６０を夫々具現化する。通知部３２０は、各仮想コンピュータ２４０上に具現化される。配置部３３０、管理部３４０、監視部３５０、入替部３６０は、仮想化機構２３０上に夫々具現化される。また、メモリ管理プログラムは、ネットワークから通信インターフェース１３０を介し、ストレージ１４０にインストールされることもある。
【００２２】
仮想コンピュータ２４０は、プログラム部品２５０の展開指示を受けた場合、展開対象のプログラム部品２５０の実行ファイルなどのファイル名を、自己に存在する通知部３２０に送信する。また、仮想コンピュータ２４０上のＯＳは、プログラム部品２５０の展開指示を受けた場合、展開対象のプログラム部品２５０の実行ファイルなどのファイル名を、自己が存在する仮想コンピュータ２４０上の通知部３２０に送信する。
【００２３】
通知部３２０は、展開対象のプログラム部品２５０のＩＤを配置部３３０に送信する。通知部３２０は、展開対象のプログラム部品２５０が展開された仮想メモリの領域の先頭アドレス（以下、「仮想アドレス」と略記する）及びサイズが、配置部３３０から返信された場合、返信された仮想アドレス及びサイズを仮想コンピュータ又はＯＳに通知する。一方、ＮＵＬＬ（値が設定されていない状態）の仮想アドレス及びＮＵＬＬのサイズが返信された場合、通知部３２０は、展開対象のプログラム部品２５０を仮想メモリに展開し、展開部分の仮想アドレス、サイズ、及びＩＤを管理部３４０に送信する。また、通知部３２０は、展開部分の仮想アドレス、サイズを仮想コンピュータ又はＯＳに通知する。
【００２４】
仮想アドレス及びサイズを通知された仮想コンピュータ２４０又はＯＳは、通知された仮想アドレス及びサイズに基づいて、展開されたプログラム部品２５０を起動する。
【００２５】
配置部３３０は、受信したＩＤに対するプログラム部品２５０が既にメインメモリ領域に展開されているか判定する。配置部３３０は、プログラム部品２５０が既にメインメモリ領域に展開されている場合、プログラム部品２５０が展開されているメインメモリ領域を仮想メモリの領域に対応づける。また、配置部３３０は、メインメモリ領域に対応づけた仮想メモリの領域の仮想アドレス及びサイズを通知部３２０に返信する。一方、配置部３３０は、プログラム部品２５０が展開されていない場合、ＮＵＬＬ値の仮想アドレス及びＮＵＬＬ値のサイズを通知部３２０に返信する。なお、配置部３３０は、判定部の一例として挙げられる。
【００２６】
管理部３４０は、管理テーブル３１０のレコードを生成し、各プログラム部品２５０が展開された各部分のメインメモリ領域を、メインメモリ１１０からキャッシュメモリ２２０にキャッシュイン及びキャッシュメモリ２２０からメインメモリ１１０にキャッシュアウトする。
【００２７】
監視部３５０は、所定期間毎、例えば１０ｍｓ毎に、メインメモリ１１０に展開された各プログラム部品２５０が使用されたか否かを判定し、管理テーブル３１０の各レコードの使用頻度を更新する。
【００２８】
入替部３６０は、一定期間毎、例えば２００ｍｓ毎に、管理テーブル３１０の各レコードのポイントを算出し、各プログラム部品２５０が展開された各メインメモリ領域をキャッシュイン及びキャッシュアウトする。
【００２９】
なお、所定期間及び一定期間の間隔は、ポイントに応じたキャッシュイン及びキャッシュアウト処理が適切な間隔で実行されることで仮想化システムの性能が向上するように、ハイパーバイザ又はサーバ１００の管理者などが調整する。
【００３０】
図６は、通知部３２０が、配置部３３０からプログラム部品２５０の展開指示をうけた場合において、展開対象のプログラム部品２５０の実行ファイルなどのファイル名を当該配置部３３０から受信したことを契機として実行する仮想アドレス通知処理のフローチャートを示す。
【００３１】
ステップ１（図では「Ｓ１」と略記する。以下同様）では、通知部３２０が、ＩＤテーブル３００を参照し、上記受信したファイル名によって、プログラム部品２５０のＩＤを特定する。
【００３２】
ステップ２では、通知部３２０が、特定したＩＤ、及び、送信元である通知部３２０を特定できる送信元情報を、配置部３３０に送信する。
【００３３】
ステップ３では、通知部３２０が、配置部３３０から、仮想アドレス及びサイズを受信したか否か判定する。通知部３２０は、仮想アドレス及びサイズを受信していれば、処理をステップ４に進める一方（Ｙｅｓ）、仮想アドレス及びサイズを受信していなければ、処理をステップ３に戻す（Ｎｏ）。すなわち、通知部３２０は、仮想アドレス及びサイズを受信するまで、ステップ４に処理を進めない。
【００３４】
ステップ４では、通知部３２０が、受信した仮想アドレスがＮＵＬＬ値か否か判定する。通知部３２０は、仮想アドレスがＮＵＬＬ値であれば、処理をステップ５に進める一方（Ｙｅｓ）、仮想アドレスがＮＵＬＬ値でなければ、処理をステップ８に進める（Ｎｏ）。
【００３５】
ステップ５では、通知部３２０が、展開対象のプログラム部品２５０を仮想メモリに展開する。
【００３６】
ステップ６では、通知部３２０が、仮想メモリに展開されたプログラム部品２５０の仮想アドレス、サイズ、及び、展開されたプログラム部品２５０のＩＤを管理部３４０に送信する。
【００３７】
ステップ７では、通知部３２０が、仮想メモリに展開されたプログラム部品２５０の仮想アドレス及びサイズを、自己が存在する仮想コンピュータ２４０又は仮想コンピュータ２４０上のＯＳに通知する。即ち、通知部３２０は、展開されたプログラム部品２５０がＯＳならば仮想コンピュータ２４０、又は、展開されたプログラム部品２５０がアプリケーションやドライバならばＯＳに対し、展開部分の仮想アドレス及びサイズを通知する。
【００３８】
ステップ８では、通知部３２０が、受信した仮想アドレス及びサイズを、自己が存在する仮想コンピュータ２４０又は仮想コンピュータ２４０上のＯＳに通知する。即ち、通知部３２０は、受信した仮想アドレス及びサイズにより特定される仮想メモリ領域に展開されたプログラム部品２５０がＯＳならば、自己が存在する仮想コンピュータ２４０に対し、受信した仮想アドレス及びサイズを送信する。また、通知部３２０は、受信した仮想アドレス及びサイズにより特定される仮想メモリ領域に展開されたプログラム部品２５０がアプリケーションやドライバならば、自己が存在する仮想コンピュータ２４０上のＯＳに対し、受信した仮想アドレス及びサイズを通知する。
【００３９】
かかる仮想アドレス通知処理によれば、通知部３２０は、展開対象のプログラム部品２５０のＩＤを配置部３３０に送信する。通知部３２０は、配置部３３０から返信された仮想アドレスがＮＵＬＬ値ではない場合、返信された仮想アドレス及びサイズを仮想コンピュータ２４０又は仮想コンピュータ２４０上のＯＳに通知する。一方、返信された仮想アドレスがＮＵＬＬ値の場合、通知部３２０は、展開対象のプログラム部品２５０を仮想メモリに展開する。また、通知部３２０は、展開されたプログラム部品２５０の展開部分の仮想メモリの領域の仮想アドレス、サイズ、及び、展開されたプログラム部品２５０のＩＤを管理部３４０に送信する。そして、通知部３２０は、展開されたプログラム部品２５０の展開部分の仮想メモリの領域の仮想アドレス及びサイズを、仮想コンピュータ２４０又は仮想コンピュータ２４０上のＯＳに通知する。
【００４０】
図７は、配置部３３０が、ＩＤ及び送信元情報を受信したことを契機として実行する物理アドレス配置処理のフローチャートを示す。
【００４１】
ステップ１１では、配置部３３０が、仮想コンピュータ２４０の通知部３２０から受信したＩＤが管理テーブル３１０に存在するか否か判定する。配置部３３０は、受信したＩＤが存在すれば、処理をステップ１２に進める一方（Ｙｅｓ）、受信したＩＤが存在しなければ、処理をステップ１５に進める（Ｎｏ）。
【００４２】
ステップ１２では、配置部３３０が、管理テーブル３１０を参照し、受信したＩＤによってレコードを特定する。また、配置部３３０は、特定したレコードから物理アドレス及びサイズを取り出す。
【００４３】
ステップ１３では、配置部３３０が、取り出した物理アドレス及びサイズにより特定される物理メモリ（メインメモリ１１０）上のデータメモリ領域を、送信元情報により特定される通知部３２０の仮想コンピュータ２４０の仮想メモリの領域に、システムコールなどによって対応づける。
【００４４】
ステップ１４では、配置部３３０が、物理メモリ上のデータメモリ領域が対応づけられた部分の仮想メモリの領域の仮想アドレス及びサイズを、送信元情報により特定される通知部３２０に返信する。
【００４５】
ステップ１５では、配置部３３０が、ＮＵＬＬ値の仮想アドレス及びＮＵＬＬ値のサイズを、送信元情報により特定される通知部３２０に返信する。
【００４６】
かかる物理アドレス配置処理によれば、配置部３３０は、受信したＩＤが管理テーブル３１０に存在する場合、受信したＩＤからレコードを特定する。また、配置部３３０は、特定したレコードの物理メモリ（メインメモリ１１０）上のデータメモリ領域を、送信元情報により特定される通知部３２０が存在する仮想コンピュータ２４０の仮想メモリの領域に対応づける。そして配置部３３０は、対応づけられた部分の仮想メモリの領域の仮想アドレス及びサイズを、通知部３２０に返信する。一方、配置部３３０は、受信したＩＤが管理テーブル３１０に存在しない場合、ＮＵＬＬ値の仮想アドレス及びＮＵＬＬ値のサイズを、通知部３２０に返信する。
【００４７】
図８及び図９は、管理部３４０が、通知部３２０から、ＩＤ、仮想アドレス及びサイズを受信したことを契機として実行する管理テーブル更新処理のフローチャートを示す。
【００４８】
ステップ２１では、管理部３４０が、ＯＳが実行するシステムコールなどにより、受信した仮想アドレスに対応づけられた物理アドレスを取得する。
【００４９】
ステップ２２では、管理部３４０が、物理アドレス、受信したＩＤ及びサイズに基づき管理テーブル３１０のレコードを生成する。また、管理部３４０は、生成したレコードの使用頻度及びポイントに“０”を夫々設定し、使用頻度及びポイントを夫々初期化する。さらに、管理部３４０は、生成したレコードにより特定されるデータメモリ領域が、キャッシュメモリ２２０からメインメモリ１１０にキャッシュアウトされた旨を表す“ＯＵＴ”をレコードのメモリ状態に設定する。そして、管理部３４０は、生成したレコードを管理テーブル３１０に格納することで、管理テーブル３１０を更新する。
【００５０】
ステップ２３では、管理部３４０が、管理テーブル３１０を参照し、メモリ状態が“ＯＵＴ”になっているレコードが存在するか否か判定する。管理部３４０は、“ＯＵＴ”になっているレコードが存在すれば、処理をステップ２４に進める一方（Ｙｅｓ）、“ＯＵＴ”になっているレコードが存在しなければ、処理を終了する（Ｎｏ）。
【００５１】
ステップ２４では、管理部３４０が、管理テーブル３１０を参照し、メモリ状態が“ＯＵＴ”であるレコードのうち、ポイントが最も高いレコードを選択する。該当するレコードが複数ある場合、管理部３４０は、メインメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータメモリ領域のＬＲＵ情報等の使用状況を参照する。管理部３４０は、参照した各レコードのデータメモリ領域のＬＲＵ情報等の使用状況に基づいて、現時刻から最も近い過去に使用されたデータメモリ領域を特定し、特定したデータメモリ領域に対するレコードを選択する。
【００５２】
ステップ２５では、管理部３４０は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ未満か否か判定する。管理部３４０は、ソフトウェア制御領域の空き容量が選択レコードのサイズ未満であれば、処理をステップ２６に進める一方（Ｙｅｓ）、ソフトウェア制御領域の空き容量が選択レコードのサイズ以上であれば、処理をステップ３３に進める（Ｎｏ）。
【００５３】
ステップ２６では、管理部３４０が、管理テーブル３１０を参照し、メモリ状態が、レコードにより特定されるデータメモリ領域がメインメモリ１１０からキャッシュメモリ２２０にキャッシュインされた旨を表す“ＩＮ”であり、かつ、ポイントが選択レコードのポイント未満のレコードをすべて抽出する。
【００５４】
ステップ２７では、管理部３４０は、抽出したすべてのレコードのサイズの総計（ステップ２６で抽出したレコードがなかった場合は“０”）と、ソフトウェア制御領域の空き容量と、を加えた値を算出する。
【００５５】
ステップ２８では、管理部３４０は、ステップ２７で算出した値が選択レコードのサイズ以上か否か判定する。管理部３４０は、ステップ２７で算出した値が選択レコードのサイズ以上であれば、処理をステップ２９に進める一方（Ｙｅｓ）、算出した値が選択レコードのサイズ未満であれば、処理を終了する（Ｎｏ）。
【００５６】
ステップ２９では、管理部３４０が、管理テーブル３１０を参照し、メモリ状態が“ＩＮ”であるレコードのなかで、ポイントが最低であるレコードを特定する。該当するレコードが複数ある場合、管理部３４０は、キャッシュメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータメモリ領域がキャッシュインされた部分のソフトウェア制御領域（以下、「データキャッシュ領域」と略記する）のＬＲＵ情報等の使用状況を参照する。管理部３４０は、該当する各レコードのデータキャッシュ領域のＬＲＵ情報等の使用状況に基づいて、現在から最も遠い過去に使用されたデータキャッシュ領域を特定し、特定したデータキャッシュ領域に対応するレコードを特定する。
【００５７】
ステップ３０では、管理部３４０は、特定したレコードのデータメモリ領域を、キャッシュメモリ２２０上のソフトウェア制御領域からメインメモリ１１０にキャッシュアウトする。
【００５８】
ステップ３１では、管理部３４０は、特定したレコードのメモリ状態を“ＯＵＴ”に設定する。
【００５９】
ステップ３２では、管理部３４０は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ以上か否か判定する。管理部３４０は、空き容量が選択レコードのサイズ以上であれば、処理をステップ３３に進める一方（Ｙｅｓ）、空き容量が選択レコードのサイズ未満であれば、処理をステップ２９に進める（Ｎｏ）。
【００６０】
ステップ３３では、管理部３４０が、選択レコードのデータメモリ領域を、メインメモリ１１０からキャッシュメモリ２２０上のソフトウェア制御領域にキャッシュインする。
【００６１】
ステップ３４では、管理部３４０が、選択レコードのメモリ状態を“ＩＮ”に設定する。
【００６２】
かかる管理テーブル更新処理によれば、管理部３４０は、仮想コンピュータ２４０の通知部３２０から受信したＩＤ、仮想アドレス及びサイズに基づいて管理テーブル３１０のレコードを生成する。また、管理部３４０は、管理テーブル３１０の各レコードのポイントを参照し、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。さらに、管理部３４０は、ポイントがより高いレコードのデータメモリ領域をキャッシュインするだけの空き容量がソフトウェア制御領域にない場合、ポイントがより低いレコードのデータメモリ領域をキャッシュアウトする。そして、管理部３４０は、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。
【００６３】
図１０は、監視部３５０が、所定期間毎、例えば、１０ｍｓ毎に実行する使用頻度更新処理のフローチャートを示す。
【００６４】
ステップ４１では、監視部３５０が、管理テーブル３１０を参照し、レコードを順次選択する。
【００６５】
ステップ４２では、監視部３５０が、選択レコードのメモリ状態が“ＩＮ”であるか否か判定する。監視部３５０は、メモリ状態が“ＩＮ”であれば、処理をステップ４３に進める一方（Ｙｅｓ）、メモリ状態が“ＩＮ”でなければ、処理をステップ４６に進める（Ｎｏ）。
【００６６】
ステップ４３では、監視部３５０が、キャッシュメモリ制御機構の状況通知機能によって、選択レコードのデータキャッシュ領域のＬＲＵ情報等の使用状況を参照し、データキャッシュ領域が、例えば、現時刻から過去１０ｍｓの間に使用されたか否かを判定する。監視部３５０は、判定した結果、データキャッシュ領域が過去１０ｍｓの間に使用されていれば、処理をステップ４４に進める一方（Ｙｅｓ）、データキャッシュ領域が過去１０ｍｓの間に使用されていなければ、処理をステップ４５に進める（Ｎｏ）。
【００６７】
ステップ４４では、監視部３５０が、選択レコードの使用頻度に１を加える。
【００６８】
ステップ４５では、監視部３５０が、管理テーブル３１０のすべてのレコードについて処理を実行したか否か判定する。監視部３５０が、管理テーブル３１０のすべてのレコードについて処理を実行していれば、処理を終了する一方（Ｙｅｓ）、管理テーブル３１０のすべてのレコードについて処理を実行していなければ、処理をステップ４１に進める（Ｎｏ）。
【００６９】
ステップ４６では、監視部３５０が、メインメモリ制御機構の状況通知機能によって、選択レコードのデータメモリ領域のＬＲＵ情報等の使用状況を参照し、データメモリ領域が、例えば、現時刻から過去１０ｍｓの間に使用されたか否かを判定する。監視部３５０は、判定した結果、データメモリ領域が過去１０ｍｓの間に使用されていれば、処理をステップ４４に進める一方（Ｙｅｓ）、データメモリ領域が過去１０ｍｓの間に使用されていなければ、処理をステップ４５に進める（Ｎｏ）。
【００７０】
かかる使用頻度更新処理によれば、監視部３５０は、管理テーブル３１０の各レコードのデータキャッシュ領域又はデータメモリ領域が、例えば、現時刻から過去１０ｍｓの間に使用されたか否かを判定する。監視部３５０は、データキャッシュ領域又はデータメモリ領域が、例えば、現時刻から過去１０ｍｓの間に使用されていた場合、当該レコードの使用頻度に１を加える。
【００７１】
図１１及び図１２は、入替部３６０が、一定期間毎、例えば２００ｍｓ毎に実行するキャッシュメモリ入替処理のフローチャートを示す。
【００７２】
ステップ５１では、入替部３６０が、管理テーブル３１０を参照し、各レコードについて、使用頻度を例えば５で割り、小数点以下を切り上げた値を算出する。次に、入替部３６０は、各レコードについて算出した値を、各レコードのポイントに夫々設定する。
【００７３】
ステップ５２では、入替部３６０が、管理テーブル３１０の各レコードの使用頻度を“０”に初期化する。
【００７４】
ステップ５３では、入替部３６０が、管理テーブル３１０を参照し、メモリ状態が“ＯＵＴ”になっているレコードが存在するか否か判定する。入替部３６０は、“ＯＵＴ”になっているレコードが存在すれば、処理をステップ５４に進める一方（Ｙｅｓ）、“ＯＵＴ”になっているレコードが存在しなければ、処理を終了する（Ｎｏ）。
【００７５】
ステップ５４では、入替部３６０が、管理テーブル３１０を参照し、メモリ状態が“ＯＵＴ”であるレコードのうち、ポイントが最高値であるレコードを選択する。該当するレコードが複数ある場合、入替部３６０は、メインメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータメモリ領域の使用状況を参照する。入替部３６０は、該当する各レコードのデータメモリ領域の使用状況に基づいて、現時刻から最も近い過去に使用されたデータメモリ領域を特定し、特定したデータメモリ領域に対するレコードを選択する。
【００７６】
ステップ５５では、入替部３６０は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ未満か否か判定する。入替部３６０は、空き容量がサイズ未満であれば、処理をステップ５６に進める一方（Ｙｅｓ）、空き容量がサイズ以上であれば、処理をステップ６３に進める（Ｎｏ）。
【００７７】
ステップ５６では、入替部３６０が、管理テーブル３１０を参照し、メモリ状態が“ＩＮ”、かつ、ポイントが選択レコードのポイント未満のレコードをすべて抽出する。
【００７８】
ステップ５７では、入替部３６０は、抽出したすべてのレコードのサイズの総計（ステップ５６で抽出したレコードがなかった場合は“０”）と、ソフトウェア制御領域の空き容量と、を加えた値を算出する。
【００７９】
ステップ５８では、入替部３６０は、算出した値が選択レコードのサイズ以上か否か判定する。入替部３６０は、算出した値が選択レコードのサイズ以上であれば、処理をステップ５９に進める一方（Ｙｅｓ）、算出した値が選択レコードのサイズ未満であれば、処理を終了する（Ｎｏ）。
【００８０】
ステップ５９では、入替部３６０が、管理テーブル３１０を参照し、メモリ状態が“ＩＮ”であるレコードのなかで、最低のポイントのレコードを特定する。該当するレコードが複数ある場合、入替部３６０は、キャッシュメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータキャッシュ領域の使用状況を参照する。入替部３６０は、該当する各レコードのデータキャッシュ領域のＬＲＵ情報等の使用状況に基づいて、現在から最も遠い過去に使用されたデータキャッシュ領域を特定し、特定したデータキャッシュ領域に対するレコードを特定する。
【００８１】
ステップ６０では、入替部３６０は、特定したレコードのデータメモリ領域を、ソフトウェア制御領域からキャッシュアウトする。
【００８２】
ステップ６１では、入替部３６０は、特定したレコードのメモリ状態を“ＯＵＴ”に設定する。
【００８３】
ステップ６２では、入替部３６０は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ以上か否か判定する。入替部３６０は、空き容量が選択レコードのサイズ以上であれば、処理をステップ６３に進める一方（Ｙｅｓ）、空き容量が選択レコードのサイズ未満であれば、処理をステップ５９に進める（Ｎｏ）。
【００８４】
ステップ６３では、入替部３６０が、選択レコードのデータメモリ領域をソフトウェア制御領域にキャッシュインする。
【００８５】
ステップ６４では、入替部３６０が、選択レコードのメモリ状態を“ＩＮ”に設定する。
【００８６】
かかるキャッシュメモリ入替処理によれば、入替部３６０が、管理テーブル３１０の各レコードについて、使用頻度からポイントを計算する。また、入替部３６０は、管理テーブル３１０の各レコードのポイントを参照し、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。入替部３６０は、ポイントがより高いレコードのデータメモリ領域をキャッシュインするだけの空き容量がソフトウェア制御領域にない場合、ポイントがより低いレコードのデータメモリ領域をキャッシュアウトする。そして、入替部３６０は、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。
【００８７】
従って、仮想コンピュータ２４０において、仮想化機構２３０の配置部３３０がプログラム部品２５０の展開指示を指示した場合、展開対象のプログラム部品２５０が、既にメインメモリ領域に存在する場合、展開対象のプログラム部品２５０が展開されているデータメモリ領域を、仮想コンピュータ２４０の仮想メモリの領域に対応づける。それゆえ、既存のデータメモリ領域とは別に、展開対象のプログラム部品２５０が展開されるメインメモリ領域を割当てないため、割当て不要となった分だけメインメモリ領域を節約することができる。このため、メインメモリ１１０を効率的に使用することができる。また、割当て不要となったメインメモリ領域が、キャッシュメモリ２２０の領域にキャッシュインされなくなるため、割当て不要となったメインメモリ領域の分だけキャッシュメモリ２２０の領域を節約することができる。このため、キャッシュメモリ２２０を効率的に使用することができ、仮想化システムの性能が向上する。
【００８８】
また、一定期間毎に管理テーブル３１０のレコードのポイントを更新し、ポイントに基づいて管理テーブル３１０のレコードのデータメモリ領域をキャッシュイン又はキャッシュアウトする。これにより、適度な間隔で、キャッシュインされているデータメモリ領域を見直し、入替えるため、キャッシュメモリ２２０を効率的に使用することができ、仮想化システムの性能が向上する。
【００８９】
また、メモリ管理プログラムが動作するサーバ１００には、前述した実施形態に加えて、以下で示すような実施形態もある。
【００９０】
サーバ１００のＣＰＵ１２０は、コアが１つのみでもよい。
【００９１】
サーバ１００は、複数のＣＰＵ１２０を有していてもよい。この場合、ＣＰＵ毎に管理テーブル３１０が存在する。
【００９２】
サーバ１００は、シングルコアのＣＰＵ１２０を複数含み、１つのキャッシュメモリ２２０が各シングルコアのＣＰＵ１２０間で共用されるようなサーバ１００であってもよい。
【００９３】
前述した実施形態について、具体的な実施例を以下に説明する。
【００９４】
実施例の前提条件として、ＩＤテーブル３００は図３に示すとおりである。また、管理テーブル３１０は図４に示すとおりである。さらに、図１で示すように、サーバの仮想化機構２３０上では、仮想コンピュータ＃０〜＃２が存在している。
【００９５】
仮想コンピュータ＃０上では、ＯＳとしてＯＳ−Ａが動作している。仮想コンピュータ＃０のＯＳ−Ａ上では、アプリケーションとしてＡＰＬ−１及びＡＰＬ−２が動作している。仮想コンピュータ＃１上では、ＯＳとしてＯＳ−Ｂが動作している。仮想コンピュータ＃１のＯＳ−Ｂ上では、アプリケーションとしてＡＰＬ−１及びＡＰＬ−２が動作している。仮想コンピュータ＃２上では、ＯＳとしてＯＳ−Ｂが動作している。
【００９６】
ソフトウェア制御領域の空き容量は、１６進数で100000バイトとする。
【００９７】
管理テーブル３１０のＩＤ“１０”のレコードのデータキャッシュ領域は、現時刻から過去１０ｍｓの間に使用されている。また、管理テーブル３１０のＩＤ“１０”以外のレコードのデータメモリ領域、又は、管理テーブル３１０のＩＤ“１０”以外のレコードのデータキャッシュ領域は、現時刻から過去１０ｍｓの間に使用されていない。
【００９８】
ユーザなどから仮想化機構２３０に対し、仮想コンピュータ＃３を作成し仮想コンピュータ＃３上でＯＳ−Ａを動作させる指示と共に、ＯＳ−Ａのファイル名“ＯＳ−Ａ”が入力される。仮想化機構２３０は、仮想コンピュータ＃３を作成し、仮想コンピュータ＃３を起動する。起動された仮想コンピュータ＃３上でファイル名“ＯＳ−Ａ”により特定されるプログラム部品２５０の展開指示がされると、通知部３２０にファイル名“ＯＳ−Ａ”が送信される。ファイル名“ＯＳ−Ａ”を受信した通知部３２０は、ＩＤテーブル３００を参照し、ファイル名によって、ＯＳ−ＡのＩＤである“１０”を特定する。次に通知部３２０は、配置部３３０に対し、ＩＤ“１０”及び送信元情報を送信する。
【００９９】
配置部３３０は、管理テーブル３１０を参照し、ＩＤ“１０”によって特定されるレコードから、物理アドレス“800000”、及びサイズ“200000”を取り出す。さらに、配置部３３０は、物理アドレス“800000”、及びサイズ“200000”から特定されるデータメモリ領域を、仮想コンピュータ＃３の仮想メモリ領域の、例えば、“A0000000”から“A01FFFFF”に対応づける。そして、配置部３３０は、対応づけた仮想メモリ領域の仮想アドレス“A0000000”及びサイズ“200000”を、仮想コンピュータ＃３の通知部３２０に対し返信する。
【０１００】
通知部３２０は、受信した仮想アドレスがＮＵＬＬ値ではないため、受信した仮想アドレス及びサイズを仮想コンピュータ＃３に通知する。仮想コンピュータ＃３は、通知された仮想アドレス及びサイズに基づき、図１３に示すようにＯＳ−Ａを起動する。
【０１０１】
また、仮想コンピュータ＃１のＯＳ−Ｂ上において、プログラム部品２５０であるＡＰＬ−３の実行のために、ユーザがファイル名“ＡＰＬ−３”を入力する。ＯＳ−Ｂは、ＡＰＬ−３を実行させるために、ファイル名“ＡＰＬ−３”のファイルから仮想コンピュータ＃１の仮想メモリに対しＡＰＬ−３を展開する指示を発行し、仮想コンピュータ＃１の通知部３２０にファイル名“ＡＰＬ−３”を送信する。
【０１０２】
通知部３２０は、ファイル名“ＡＰＬ−３”を受信すると、ＩＤテーブル３００を参照し、受信したファイル名によってＡＰＬ−３のＩＤ“２２”を特定する。次に、通知部３２０は、配置部３３０に対し、ＩＤ“２２”及び送信元情報を送信する。
【０１０３】
配置部３３０は、ＩＤ“２２”によって特定されるレコードが管理テーブル３１０に存在しないため、ＮＵＬＬ値の仮想アドレス及びＮＵＬＬ値のサイズを仮想コンピュータ２４０＃１の通知部３２０に対し返信する。
【０１０４】
通知部３２０は、ＮＵＬＬ値の仮想アドレスが返信された場合、ストレージ１４０を参照し、ＡＰＬ−３を、仮想コンピュータ２４０＃１の仮想メモリの領域に展開する。また、通知部３２０は、ＡＰＬ−３が展開された仮想メモリの領域が、例えば、“B0000000”から“B000FFFF”の場合、仮想アドレスとして“B0000000”、サイズとして“10000”、ＩＤとして“２２”を管理部３４０に送信する。さらに通知部３２０は、仮想アドレスとして“B0000000”、サイズとして“10000”をＯＳ−Ｂに通知する。ＯＳ−Ｂは、通知された仮想アドレス及びサイズに基づいて、ＡＰＬ−３を起動する。
【０１０５】
管理部３４０は、通知部３２０から仮想アドレス“B0000000”を受信すると、仮想アドレス“B0000000”に対する物理アドレス“F00000”を取得する。管理部３４０は、物理アドレス“F00000”、受信したサイズ“10000”及びＩＤ“２２”、使用頻度“０”、ポイント“０”、メモリ状態“ＯＵＴ”を設定した管理テーブル３１０のレコードを生成する。管理部３４０は、図１４で示すように、生成したレコードを管理テーブル３１０に格納する。
【０１０６】
また、管理部３４０は、メモリ状態が“ＯＵＴ”であるレコードが管理テーブル３１０に存在するので、メモリ状態が“ＯＵＴ”であるレコードのなかで、最高のポイント“２”を持つ、ＩＤ“２１”のレコードを選択する。管理部３４０は、ソフトウェア制御領域の空き容量“100000”が選択レコードのサイズ“1F0000”未満のため、管理テーブル３１０を参照し、メモリ状態が“ＩＮ”であるレコードのなかで、ポイントが“２”未満のレコードである、ＩＤ“２０”のレコードを抽出する。
【０１０７】
次に管理部３４０は、抽出したレコードのサイズの総計及びソフトウェア制御領域の空き容量を加えた値“2A0000”を算出する。管理部３４０は、算出した値“2A0000”が選択レコードのサイズ“1F0000”以上のため、ＩＤ“２０”のレコードのデータメモリ領域をキャッシュアウトし、ＩＤ“２０”のレコードのメモリ状態を“ＯＵＴ”に設定する。
【０１０８】
さらに、管理部３４０は、ソフトウェア制御領域の空き容量“2A0000”となり、選択レコードのサイズ“1F0000”以上となったので、選択レコードのデータメモリ領域をソフトウェア制御領域にキャッシュインし、選択レコードのメモリ状態を“ＩＮ”に設定する。処理の結果、管理テーブル３１０は、図１５に示すようになるため、管理部３４０は、ＩＤ“１１”のレコードを選択する。選択レコードのサイズ“100000”は、選択レコードのポイント“１”未満のレコードの総計“10000”と、ソフトウェア制御領域の空き容量“B0000”と、を加算した値“C0000”より大きいため、管理部３４０は処理を終了する。
【０１０９】
監視部３５０は、管理テーブル３１０のレコード“１０”を選択する。監視部３５０は、選択レコードのメモリ状態が“ＩＮ”であるので、選択レコードのデータキャッシュ領域が現時刻から過去１０ｍｓの間に使用された否か判定する。監視部３５０は、選択レコードのデータキャッシュ領域が現時刻から過去１０ｍｓの間に使用されているため、選択レコードの使用頻度に“１”を加える。
【０１１０】
また、監視部３５０は、管理テーブル３１０のレコード“１１”を選択する。監視部３５０は、選択レコードのメモリ状態が“ＯＵＴ”であるので、選択レコードのデータメモリ領域が現時刻から過去１０ｍｓの間に使用された否か判定する。監視部３５０は、選択レコードのデータメモリ領域が現時刻から過去１０ｍｓの間に使用されていないため、管理テーブル３１０の次のレコードの処理に移る。同様に管理テーブル３１０の各レコードについて、監視部３５０によって使用頻度更新処理が実行された結果、管理テーブル３１０の各レコードは図１６に示すようになる。
【０１１１】
入替部３６０は、管理テーブル３１０の各レコードについて、使用頻度からポイントを算出し、使用頻度を“０”にする（例えば、管理テーブル３１０のレコード“２２”は、図１７で示すように、ポイントが“１”になり、使用頻度が０になる）。
【０１１２】
また、入替部３６０は、メモリ状態が“ＯＵＴ”であるレコードが管理テーブル３１０に存在するので、メモリ状態が“ＯＵＴ”であるレコードのなかで、最高のポイント“２”を持つ、ＩＤ“２０”のレコードを選択する。入替部３６０は、ソフトウェア制御領域の空き容量“B0000”が選択レコードのサイズ“1A0000”未満のため、メモリ状態が“ＩＮ”であるレコードのなかで、ポイントが“２”未満のレコードを抽出する。入替部３６０は、該当するレコードがなかったため、ソフトウェア制御領域の空き容量“B0000”を算出した値とする。入替部３６０は、算出した値“B0000”が選択レコードのサイズ“1A0000”以上ではないため、処理を終了する。
【符号の説明】
【０１１３】
１００    サーバ
１１０    メインメモリ
２２０    キャッシュメモリ
２４０    仮想コンピュータ
３１０    管理テーブル
３２０    通知部
３３０    配置部
３４０    管理部
３５０    監視部
３６０    入替部
【図１】
2012111113.tif 000003
【図２】
2012111113.tif 000004
【図３】
2012111113.tif 000005
【図４】
2012111113.tif 000006
【図５】
2012111113.tif 000007
【図６】
2012111113.tif 000008
【図７】
2012111113.tif 000009
【図８】
2012111113.tif 000010
【図９】
2012111113.tif 000011
【図１０】
2012111113.tif 000012
【図１１】
2012111113.tif 000013
【図１２】
2012111113.tif 000014
【図１３】
2012111113.tif 000015
【図１４】
2012111113.tif 000016
【図１５】
2012111113.tif 000017
【図１６】
2012111113.tif 000018
【図１７】
2012111113.tif 000019
【手続補正書】
【提出日】平成25年12月12日(2013.12.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
処理を実行させることを特徴とするメモリ管理プログラム。
【請求項２】
前記メモリ管理プログラムにおいて、
前記コンピュータは、
前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする請求項１記載のメモリ管理プログラム。
【請求項３】
前記メモリ管理プログラムにおいて、
前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする請求項２記載のメモリ管理プログラム。
【請求項４】
前記メモリ管理プログラムにおいて、
前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
前記コンピュータに、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする請求項１記載のメモリ管理プログラム。
【請求項５】
前記コンピュータは、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする請求項４記載のメモリ管理プログラム。
【請求項６】
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータが実行するメモリ管理方法であって、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
ことを特徴とするメモリ管理方法。
【請求項７】
複数の演算処理部と、
前記複数の演算処理部に接続され、データを記憶するメインメモリと、
前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリと、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示する配置部と、
前記配置部から前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定する判定部と、
前記判定部が、前記配置対象のプログラムが前記メインメモリに配置されていると判定した場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけするとともに、前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する管理部を有することを特徴とする情報処理装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、メモリ管理プログラム、メモリ管理方法、及び情報処理装置に関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
また、入替部３６０は、メモリ状態が“ＯＵＴ”であるレコードが管理テーブル３１０に存在するので、メモリ状態が“ＯＵＴ”であるレコードのなかで、最高のポイント“２”を持つ、ＩＤ“２０”のレコードを選択する。入替部３６０は、ソフトウェア制御領域の空き容量“B0000”が選択レコードのサイズ“1A0000”未満のため、メモリ状態が“ＩＮ”であるレコードのなかで、ポイントが“２”未満のレコードを抽出する。入替部３６０は、該当するレコードがなかったため、ソフトウェア制御領域の空き容量“B0000”を算出した値とする。入替部３６０は、算出した値“B0000”が選択レコードのサイズ“1A0000”以上ではないため、処理を終了する。
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
処理を実行させることを特徴とするメモリ管理プログラム。
（付記２）
前記メモリ管理プログラムにおいて、
前記コンピュータは、
前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする付記１記載のメモリ管理プログラム。
（付記３）
前記メモリ管理プログラムにおいて、
前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする付記２記載のメモリ管理プログラム。
（付記４）
前記メモリ管理プログラムにおいて、
前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
前記コンピュータに、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする付記１記載のメモリ管理プログラム。
（付記５）
前記コンピュータは、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする付記４記載のメモリ管理プログラム。
（付記６）
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータが実行するメモリ管理方法であって、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
ことを特徴とするメモリ管理方法。
（付記７）
複数の演算処理部と、
前記複数の演算処理部に接続され、データを記憶するメインメモリと、
前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリと、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示する配置部と、
前記配置部から前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定する判定部と、
前記判定部が、前記配置対象のプログラムが前記メインメモリに配置されていると判定した場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけするとともに、前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する管理部を有することを特徴とする情報処理装置。
（付記８）
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
処理を実行させることを特徴とするメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
（付記９）
前記メモリ管理プログラムにおいて、
前記コンピュータは、
前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする付記８記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
（付記１０）
前記メモリ管理プログラムにおいて、
前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする付記９記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
（付記１１）
前記メモリ管理プログラムにおいて、
前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
前記コンピュータに、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする付記８記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
（付記１２）
前記コンピュータは、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする付記１１記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
【国際調査報告】
2012111113.tif 000020
2012111113.tif 000021
2012111113.tif 000022
2012111113.tif 000023