(57)【要約】【課題】効率的なメモリ管理を行うことが可能な電子計算機等を提供する。【解決手段】第１のデータを主記憶装置２００へ格納するための格納要求時に、主記憶装置２００の残容量が不足している場合、主記憶装置２００により記憶されたデータのうち、主記憶装置２００から外部記憶装置３００へスワップアウトされ、外部記憶装置３００から主記憶装置２００へスワップインされ、かつ、その後に主記憶装置２００において改変されていないデータである未改変データを抽出する未改変情報抽出部１０２と、抽出された未改変データのうち、主記憶装置２００から破棄される第２のデータを決定する出力対象決定部１０３と、決定された第２のデータを主記憶装置２００から破棄するスワップアウト処理部１０５と、を備える。【選択図】図１
2013120549.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータを一次記憶装置へ格納するための格納要求時に、前記一次記憶装置の残容量が不足している場合、前記一次記憶装置により記憶されたデータのうち、前記一次記憶装置から二次記憶装置へスワップアウトされ、前記二次記憶装置から前記一次記憶装置へスワップインされ、かつ、その後に前記一次記憶装置において改変されていないデータである未改変データを抽出するデータ抽出部と、
前記データ抽出部により抽出された前記未改変データのうち、前記一次記憶装置から破棄される第２のデータを決定する破棄データ決定部と、
前記破棄データ決定部により決定された前記第２のデータを前記一次記憶装置から破棄するデータ破棄部と、
を備える電子計算機。
【請求項２】
請求項１に記載の電子計算機であって、
前記破棄データ決定部は、前記格納要求に対応する前記一次記憶装置の容量を確保するよう、前記第２のデータを決定する電子計算機。
【請求項３】
請求項１または２に記載の電子計算機であって、更に、
スワップアウト処理部を備え、
前記データ抽出部は、前記データ破棄部により前記第２のデータが破棄された後に、前記一次記憶装置の残容量が不足している場合、前記一時記憶装置により記憶されたデータのうち、前記未改変データ以外の第３のデータを抽出し、
前記スワップアウト処理部は、前記データ抽出部により抽出された前記第３のデータを前記一次記憶装置から前記二次記憶装置へスワップアウトし、
前記データ破棄部は、前記第３のデータを前記一次記憶装置から破棄する電子計算機。
【請求項４】
請求項１ないし３のいずれか１項に記載の電子計算機であって、
前記データ抽出部は、前記一次記憶装置および前記二次記憶装置における同一アドレスに記憶された各データの差分の情報である差分情報と、前記二次記憶装置に格納されたデータの情報である二次記憶管理情報と、に基づいて、前記未改変データを抽出する電子計算機。
【請求項５】
電子計算機におけるメモリ管理方法であって、
第１のデータを一次記憶装置へ格納するための格納要求時に、前記一次記憶装置の残容量が不足している場合、前記一次記憶装置により記憶されたデータのうち、前記一次記憶装置から二次記憶装置へスワップアウトされ、前記二次記憶装置から前記一次記憶装置へスワップインされ、かつ、その後に前記一次記憶装置において改変されていないデータである未改変データを抽出するステップと、
前記抽出された前記未改変データのうち、前記一次記憶装置から破棄される第２のデータを決定するステップと、
前記決定された前記第２のデータを前記一次記憶装置から破棄するデータ破棄部と、
を有するメモリ管理方法。
【請求項６】
請求項５に記載のメモリ管理方法の各ステップをコンピュータに実行させるメモリ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子計算機、メモリ管理方法、およびメモリ管理プログラムに関する。
【背景技術】
【０００２】
仮想記憶方式は、メモリ管理技法の一種であり、例えば、マルチタスクオペレーティングシステムが不連続なメモリ領域をソフトウェア（プロセスなど）から見て連続になるように見せかけるものである。また、仮想記憶方式は、コンピュータ上に実装されている主記憶装置よりも大きな記憶領域を仮想的に提供する仕組みを提供する。仮想記憶の仕組みを利用することで、メモリ空間の一部をハードディスク装置等の大容量の外部記憶装置に待避でき、実装メモリ量以上のメモリ空間が利用できるようになる。
【０００３】
したがって、仮想記憶方式は、論理アドレス空間を主記憶装置のアドレス空間の容量よりも大きく設定しておき、適宜、主記憶にデータをロードしてマッピングするメモリ管理方式の一種であるということができる。
【０００４】
また、仮想記憶方式は、スワップ機能と結びついて論じられる。スワップ機能とは、ハードディスク等の補助記憶装置を利用して使用可能なメモリ容量を増大するために、ＯＳ（オペレーティングシステム）が有する機能である。
【０００５】
スワップ機能には、スワップアウト機能及びスワップイン機能がある。スワップアウト機能は、メモリ容量を確保するために、当面の間不要と推測されるデータを主記憶装置から補助記憶装置へ書き出す機能である。スワップイン機能は、補助記憶装置に書き出されたデータを主記憶装置へ書き戻す機能である。
【０００６】
スワップ機能の一例として、主記憶装置と外部記憶装置とが同一データを保持している場合には、スワップアウトの後にスワップインされたデータであって、スワップイン以降改変されていないデータについては、再度のスワップアウトを行わない技術が知られている（例えば、特許文献１参照）。これにより、書き出し回数を低減させることができる。
【０００７】
また、他の一例として、プロセスを複数のセグメントに分割・結合して、スワップアウト、スワップインを行うスワップアウト制御装置が知られている（例えば、特許文献２参照）。この装置は、スワップアウト候補を選択する場合に、複数の条件に基づいて、セグメントの選択を行うものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−２０７７６号公報
【特許文献２】特表平５−５０８０４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
スワップアウト機能を有する計算機では、主記憶装置の残容量が不足した場合に、主記憶装置が格納しているデータを外部記憶装置へ書き出し、必要があれば外部記憶装置から主記憶装置へ書き戻す。このような計算機が動作を継続する場合、一度書き出したデータが主記憶装置へ再度書き戻された後、再度書き出す可能性がある。この場合、再度の書き出しは不要であり、不要な処理が発生してしまう。
【００１０】
特許文献１の技術では、主記憶装置の残容量が極めて小さい場合（枯渇した場合）に、主記憶装置から削除するデータをどのように選択するか考慮されていない。したがって、書き出しが不要なデータが主記憶装置上に存在しているにも関わらず、書き出しが必要なデータを候補としてしまい、外部記憶装置への書き出し量が不要に増加する可能性がある。
【００１１】
特許文献２の技術においても、主記憶装置に格納されているデータが、書き出し必要なデータであるか書き出し不要なデータであるかが考慮されていないため、書き出しが必要なデータを候補としてしまい、外部記憶装置への書き出し量が不要に増加する可能性がある。
【００１２】
また、主記憶装置から外部記憶装置への不要な書き出しが多数回反復することで、外部記憶装置の耐久性にも影響を与えかねない。
【００１３】
本発明は、上記事情に鑑みてなされたものであって、効率的なメモリ管理を行うことが可能な電子計算機、メモリ管理方法、およびメモリ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の電子計算機は、第１のデータを一次記憶装置へ格納するための格納要求時に、前記一次記憶装置の残容量が不足している場合、前記一次記憶装置により記憶されたデータのうち、前記一次記憶装置から二次記憶装置へスワップアウトされ、前記二次記憶装置から前記一次記憶装置へスワップインされ、かつ、その後に前記一次記憶装置において改変されていないデータである未改変データを抽出するデータ抽出部と、前記データ抽出部により抽出された前記未改変データのうち、前記一次記憶装置から破棄される第２のデータを決定する破棄データ決定部と、前記破棄データ決定部により決定された前記第２のデータを前記一次記憶装置から破棄するデータ破棄部と、を備える。
【００１５】
この構成によれば、一度退避（スワップアウト）して復旧（スワップイン）し、かつ未改変のデータを優先して破棄することで、二次記憶装置への書き出し量を減少させ、書き出しによる速度性能劣化や二次記憶装置の寿命短縮を防止することができる。このように、効率的なメモリ管理を行うことが可能である。
【００１６】
また、本発明のメモリ管理方法は、電子計算機におけるメモリ管理方法であって、第１のデータを一次記憶装置へ格納するための格納要求時に、前記一次記憶装置の残容量が不足している場合、前記一次記憶装置により記憶されたデータのうち、前記一次記憶装置から二次記憶装置へスワップアウトされ、前記二次記憶装置から前記一次記憶装置へスワップインされ、かつ、その後に前記一次記憶装置において改変されていないデータである未改変データを抽出するステップと、前記抽出された前記未改変データのうち、前記一次記憶装置から破棄される第２のデータを決定するステップと、前記決定された前記第２のデータを前記一次記憶装置から破棄するデータ破棄部と、を有する。
【００１７】
この方法によれば、一度退避（スワップアウト）して復旧（スワップイン）し、かつ未改変のデータを優先して破棄することで、二次記憶装置への書き出し量を減少させ、書き出しによる速度性能劣化や二次記憶装置の寿命短縮を防止することができる。このように、効率的なメモリ管理を行うことが可能である。
【００１８】
また、本発明のメモリ管理プログラムは、上記のメモリ管理方法の各ステップをコンピュータに実行させるプログラムである。
【００１９】
このプログラムによれば、一度退避（スワップアウト）して復旧（スワップイン）し、かつ未改変のデータを優先して破棄することで、二次記憶装置への書き出し量を減少させ、書き出しによる速度性能劣化や二次記憶装置の寿命短縮を防止することができる。このように、効率的なメモリ管理を行うことが可能である。
【発明の効果】
【００２０】
本発明によれば、効率的なメモリ管理を行うことが可能である。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態にかかる電子計算機の構成例を示すブロック図
【図２】本発明の実施形態にかかるメモリ管理の一例を説明するための図
【図３】本発明の実施形態にかかる電子計算機のスワップアウト時の動作例を示すフローチャート
【図４】本発明の実施形態にかかる電子計算機のスワップイン時の動作例を示すフローチャート
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態について、図面を参照して説明する。
【００２３】
（第１の実施形態)
図１は、本発明の実施形態にかかる電子計算機の構成例を示すブロック図である。図１に示した電子計算機１００は、スワップアウト指示部１０１、未改変情報抽出部１０２、出力対象決定部１０３、出力対象記憶部１０４、スワップアウト処理部１０５、データ出力部１０６、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｍａｇｅｍｅｎｔ  Ｕｎｉｔ：メモリ管理ユニット）１０７、メモリ管理部１０８、差分情報記憶部１０９、二次記憶管理情報記憶部１１０、スワップイン処理部１１１、およびデータ入力部１１２を有して構成される。
【００２４】
スワップアウト指示部１０１は、スワップアウト処理を開始するための要求であるスワップアウト指示を出力する。例えば、メモリ使用要求の発生時に、主記憶装置２００の残容量がこのメモリ使用要求の要求量を満たしていない場合に、スワップアウト指示を出力する。
【００２５】
未改変情報抽出部１０２は、外部記憶装置３００に退避された（書き出された）データのうち、主記憶装置２００に呼び戻され（書き戻され）、かつ未改変のデータを抽出する。例えば、未改変情報抽出部１０２は、第１のデータを主記憶装置２００へ格納するための格納要求時に、主記憶装置２００の残容量が不足している場合、主記憶装置２００により記憶されたデータのうち、主記憶装置２００から外部記憶装置３００へスワップアウトされ、外部記憶装置３００から主記憶装置２００へスワップインされ、かつ、その後に主記憶装置２００において改変されていないデータである未改変データを抽出するデータ抽出部としての機能を有する。
【００２６】
具体的には、未改変情報抽出部１０２は、二次記憶管理情報記憶部１１０に記憶された二次記憶管理情報を参照して、一度退避されたことがあるデータがあるか否かを検索する。二次記憶管理情報に含まれる所定のアドレスにおいてデータが格納されている場合には、その所定のアドレスにおいて一度退避されたことがあることを意味する。
【００２７】
また、未改変情報抽出部１０２は、差分情報記憶部１０９に記憶された差分情報を参照して、呼び戻されたデータであって改変されていないデータがあるか否かを検索する。差分情報記憶部１０９に含まれる所定のアドレスにおける差分情報が、主記憶装置２００と外部記憶装置３００とで差分がないことを示す場合には、その所定のアドレスにおいてデータが呼び戻され、改変されていないことを意味する。未改変情報抽出部１０２は、上記検索の結果を未改変情報として出力対象決定部１０３へ出力する。
【００２８】
出力対象決定部１０３は、メモリ使用要求に応じて空けるべきメモリ領域の容量を確保すべく、どの領域をあけるか、どの程度の容量空けるか、どのデータを退避または破棄させるか、等を決定する。このとき、出力対象決定部１０３は、未改変情報抽出部１０２からの未改変情報を参照する。そして、出力対象決定部１０３は、この決定の結果の情報を出力対象記憶部１０４に登録する。
【００２９】
また、出力対象決定部１０３は、出力対象のデータが単に破棄すべきデータであるか、スワップアウトすべきデータであるかを判定する。未改変情報に、一度外部記憶装置３００に退避され、主記憶装置２００に呼び戻され、かつ未改変のデータの情報が含まれる場合、この出力対象のデータは単に破棄すべきデータである。一方、これ以外のデータ、例えば、外部記憶装置３００に退避されていないデータ、主記憶装置２００へ呼び戻された後に改変されたデータである場合、この出力対象のデータは、スワップアウトすべきデータである。この判定結果は、スワップアウト処理部１０５およびデータ出力部１０６へ送られる。
【００３０】
このように、出力対象決定部１０３は、未改変情報抽出部１０２により抽出された未改変データのうち、主記憶装置２００から破棄される第２のデータを決定する破棄データ決定部としての機能を有する。
【００３１】
出力対象記憶部１０４は、出力対象のデータ（破棄対象のデータまたはスワップ対象のデータ）の情報を記憶する。この情報には、データの内容、データが主記憶装置２００において格納されたアドレスの情報などが含まれる。
【００３２】
スワップアウト処理部１０５は、スワップアウトが必要なときに、スワップアウトによるデータ書き出しを行うようデータ出力部１０６へ指示する。これにより、空き領域の拡張を図る。スワップアウト処理部１０５は、主記憶装置２００における必要な空き領域が確保されるまで、この動作を続ける。
【００３３】
また、スワップアウト処理部１０５は、データ出力部１０６にスワップアウト対象のデータの転送を命じる。また、スワップアウト処理部１０５は、データ出力部１０６に破棄対象のデータの破棄を命じる。
【００３４】
また、スワップアウト処理部１０５は、破棄されるまたはスワップアウトされる結果として、破棄後またはスワップアウト後の差分情報を差分情報記憶部１０９に登録する。
【００３５】
このように、スワップアウト処理部１０５は、出力対象決定部１０３により決定された第２のデータを主記憶装置２００から破棄するデータ破棄部としての機能を有する。
【００３６】
データ出力部１０６は、外部記憶装置３００へ退避後、主記憶装置２００へ呼び戻され、改変されていないデータを破棄する。これにより、空き領域が確保される。
【００３７】
また、データ出力部１０６は、このデータ破棄のみではメモリ使用要求に応じて確保すべきメモリ領域の容量が不足している場合、主記憶装置２００に記憶されたデータのうち、破棄すべきデータ以外のデータをスワップアウト対象のデータとして選択するよう、出力対象決定部１０３へ通知する。そして、出力対象決定部１０３は、出力対象決定部１０３により決定されたスワップアウト対象のデータを退避（スワップアウト）する。これにより、さらなる空き領域の確保を図る。
【００３８】
ＭＭＵ１０７は、メモリ使用要求を受けて動作を開始する。そして、主記憶装置２００に対して書き込み要求が発生していることを検知し、メモリ管理部１０８へ通知する。
【００３９】
メモリ管理部１０８は、ＯＳのメモリ管理機能を実現するものであり、例えばＭＭＵ１０７が所定のプログラムを実行することにより実現される。メモリ管理部１０８は、主記憶装置２００および外部記憶装置３００の具体的なアドレスおよびそのアドレスの領域に格納されたデータの情報を管理している。例えば、メモリ管理部１０８は、アドレス情報に基づいて、ＭＭＵからの書き換え指示がどの領域（アドレス領域）への書き換えをしようとしているかを認識する。また、書き換えによる変化の情報を管理し、この変化情報を用いて、主記憶装置２００と外部記憶装置３００との間の同じアドレス位置における情報の差分の情報を認識する。
【００４０】
また、メモリ管理部１０８は、この差分情報を差分情報記憶部１０９に書き込む。なお、差分情報には、主記憶装置２００および外部記憶装置３００のアドレス領域毎に、格納されたそれぞれのデータの情報や、これらのデータの差分についての情報が含まれる。差分情報は、スワップイン、スワップアウト等が発生して主記憶装置２００または外部記憶装置３００に格納されているデータが変更される度に更新される。
【００４１】
スワップイン処理部１１１は、図示しないＣＰＵにより実行されるミドルウェアやアプリケーションが必要とするデータが主記憶装置２００に格納されていない場合に、外部記憶装置３００からデータを転送する（読み込む）よう、データ入力部１１２へ通知する。このとき、スワップイン処理部１１１は、差分情報記憶部１０９に格納された差分情報を参照する。
【００４２】
データ入力部１１２は、スワップイン処理部１１１からの指示に応じて、外部記憶装置３００からスワップイン対象のデータを復旧（スワップイン）する。
【００４３】
なお、外部記憶装置３００に転送すべきデータが格納されているか否かについては、二次記憶管理情報記憶部１１０を参照することで確認できる。二次記憶管理情報には、二次記憶装置としての外部記憶装置３００のアドレス領域毎に格納されたデータの情報が含まれる。二次記憶管理情報は、スワップアウト等が発生して外部記憶装置３００に格納されているデータが変更される度に更新される。
【００４４】
なお、スワップアウト指示部１０１、未改変情報抽出部１０２、出力対象決定部１０３、スワップアウト処理部１０５、スワップイン処理部１１１は、電子計算機１００内のＲＯＭに格納されたメモリ管理プログラムを、ＣＰＵが実行することによって機能として実現される。これらは、ハードウェア(論理回路)で実現されてもよい。
【００４５】
また、図１に示すように、電子計算機１００には、主記憶装置２００および外部記憶装置３００が接続される。主記憶装置２００および外部記憶装置３００は、電子計算機１００に含まれるようにしてもよい。
【００４６】
主記憶装置２００は、例えばＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成できる。主記憶装置２００は一次記憶装置の一例である。
【００４７】
また、外部記憶装置３００は、例えばＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やＮＡＮＤ型フラッシュメモリ等で構成される。外部記憶装置３００は二次記憶装置の一例である。
【００４８】
次に、電子計算機１００のメモリ管理方式の一例について説明する。
【００４９】
本実施形態では、メモリ管理方式として、仮想記憶方式を採用する。メモリ管理部１０８は、物理メモリ上の領域と仮想メモリ上の領域の対応付け（マッピング）を行い、ＭＭＵ１０７と呼ばれる専用のハードウェアを用いて相互のアドレスの変換を行う。物理メモリ空間でのアドレスを物理アドレス、仮想メモリ空間でのアドレスを論理アドレスと呼ぶ。
【００５０】
ＯＳ上で動作するソフトウェア（例えばＯＳのプロセスなどのプログラムの一種）には、仮想メモリ領域が割り当てられ、ＯＳを介してメモリにアクセスする。このメモリには、主記憶装置２００および外部記憶装置３００が含まれる。これにより、物理メモリ上で細切れの領域を集めて一つの大きな仮想メモリ領域を確保することが可能であり、また、プログラムの側で物理メモリを管理する必要がなくなる。
【００５１】
また、ハードディスクなどの外部記憶装置３００に専用の領域を設け、仮想アドレスを割り当てることにより、仮想メモリ空間を物理メモリ空間より大きく取ることができる。この専用の領域は、スワップファイル、スワップ領域、スワップパーティションなどと呼ばれる。外部記憶装置３００上の領域に実際にアクセスするには、物理メモリ上にその内容を読み込まなければならない。そのため、物理メモリの中で現在使われているプログラムをスワッピング処理によって入れ替える。
【００５２】
このように、電子計算機１００は、仮想記憶方式を採用することで、運用時の物理メモリ空間のサイズを仮想的に増やすことができる。
【００５３】
図２は、電子計算機１００によるメモリ管理の一例を説明するための図である。
図２に示すように、アプリケーションやミドルウェア等によるＲＡＭ確保要求（メモリ使用要求の１つ）が発生すると、ＭＭＵ１０７およびメモリ管理部１０８は、メモリ管理機能を起動する。斜線を施されたデータＡが、主記憶装置２００から外部記憶装置３００へ一度書き出され、さらに外部記憶装置３００から主記憶装置２００へ書き戻され、その後において主記憶装置２００において未改変であるために、破棄対象となるデータである。外部記憶装置３００に格納されていないデータＢやデータＣではなく、データＡを破棄の対象とするので、スワップアウトの処理が不要となる。これにより、ソフトウェアの負担軽減が可能であり、外部記憶装置３００側の負担も減少する。また、外部記憶装置３００における性能劣化（保持性能等）や寿命短縮（消去が不完全となるなどの現象が生じる等）が抑えられることになる。よって、外部記憶装置３００の信頼性が向上する。
【００５４】
このように、電子計算機１００は、スワップアウト実施時、一度退避済み（スワップアウト済み）かつ未改変のデータを優先して破棄する。これにより、外部記憶装置３００への書き出し量を低減させ、書き出しによる速度低下、外部記憶装置３００の寿命短縮を防止できる。
【００５５】
次に、電子計算機１００のスワップアウト時の動作例について説明する。
図３は、電子計算機１００のスワップアウト時の動作例を示すフローチャートである。なお、ここでは、ＭＭＵ１０７の設定が書き込み許可の状態であることを想定している。なお、図３の説明においては、簡単のためスワップアウト処理部１０５がデータの破棄やスワップアウトを行うと記載している箇所があるが、実際にはデータ出力部１０６が行う。
【００５６】
ステップＳ１では、スワップアウト指示部１０１は、メモリ管理部１０８と協働して、スワップアウトの指示を行う。そして、ステップＳ２に進む。
【００５７】
ステップＳ２では、未改変情報抽出部１０２は、主記憶装置２００が記憶しているデータにおいて、一度退避したデータがあるか否かを判定する。つまり、外部記憶装置３００に格納されたデータがあるか否かを判定する。一度退避したデータが主記憶装置２００内に存在しない場合には、ステップＳ９に進む。
【００５８】
ステップＳ３では、未改変情報抽出部１０２は、一度退避されたと判定されたデータ（退避済みデータ）全体を対象として、退避済みデータ毎にステップＳ４〜Ｓ６の処理を実行する。
【００５９】
ステップＳ４では、未改変情報抽出部１０２は、対象の退避済みデータが未改変であるかを判定する。
【００６０】
ステップＳ５では、ステップＳ４にて未改変データであったときには、未改変情報抽出部１０２は、その未改変データおよび未改変データに関する情報を未改変データリストに追加する。一方、未改変データでないときには、退避済データのうちの他のデータについて同様の確認を行うべく、ステップＳ４に戻る。なお、未改変データリストは、スワップアウト対象となるデータの情報を保持するリストであり、例えば出力対象記憶部１０４に記憶されている。
【００６１】
ステップＳ６では、出力対象決定部１０３は、メモリ使用要求を満たすサイズ分（空けたいサイズ分）の候補（破棄候補）が揃っているか否かを判定する。
【００６２】
ステップＳ８では、ステップＳ６の要求を満たす候補が揃っている場合には、出力対象決定部１０３は、未改変データリストに登録されたデータを破棄対象のデータに設定する。そして、ステップＳ９に進む。
【００６３】
一方、ステップＳ７では、ステップＳ６の要求を満たす候補が揃っていない場合、エンド処理によってサブルーチンを終了する。
【００６４】
ステップＳ９では、出力対象決定部１０３は、メモリ使用要求を満たすサイズ分（空けたいサイズ分）の候補（破棄候補）が揃っているか否かを判定する。
【００６５】
ステップＳ１０では、ステップＳ９にて候補（破棄候補およびスワップアウト候補）が揃っている場合には、出力対象決定部１０３は、主記憶装置２００に格納された上記候補以外の他のデータから退避候補（スワップアウト候補）をさらに決定する。そして、ステップＳ１１に進む。
【００６６】
ステップＳ１１では、出力対象決定部１０３は、決定された退避候補をスワップアウト対象のデータに設定する。そして、ステップＳ１２に進む。
【００６７】
ステップＳ１２では、スワップアウト処理部１０５は、破棄またはスワップアウト対象のデータの全体を対象として、破棄またはスワップアウト対象のデータ毎に、以下の処理（ステップＳ１３〜Ｓ１６の処理）を繰り返し実行する。
【００６８】
ステップＳ１３では、スワップアウト処理部１０５は、処理対象の破棄またはスワップアウト対象のデータが、未改変データであるか否かを判定する。
【００６９】
ステップＳ１４では、ステップＳ１３にて未改変データであると判定された場合、スワップアウト処理部１０５は、主記憶装置２００に格納された破棄対象となっている処理対象のデータを破棄する。そして、ステップＳ１６に進む。
【００７０】
一方、ステップＳ１５では、ステップＳ１３にて未改変データであると判定されなかった場合、スワップアウト処理部１０５は、主記憶装置２００の空き容量や必要な解放量等を検討する。そして、スワップアウト処理部１０５は、主記憶装置２００に格納されたスワップアウト対象となっている処理対象のデータを破棄するとともに、外部記憶装置３００への処理対象のデータの書き出し（スワップアウト）を行う。これにより、メモリの空き空間が増大する。そして、ステップＳ１６に進む。
【００７１】
ステップＳ１６では、スワップアウト処理部１０５は、二次記憶管理情報記憶部１１０に記憶された二次記憶管理情報や差分情報記憶部１０９に記憶された差分情報の更新等を適宜実行する。これにより、主記憶装置２００において必要なメモリ空間が確保され、必要なデータ量分格納できる空きスペースが確保される。このスペースに、新たなデータが転送等されることになる。
【００７２】
ステップＳ１７では、エンド処理を行い、サブルーチンを終了する。
【００７３】
このようなスワップアウト時の動作によれば、一度退避して復旧し、かつ未改変である未改変データについてはスワップアウトすることなく破棄のみ行うことができる。したがって、スワップアウトの際のデータの主記憶装置２００からの読み出し、データの転送、外部記憶装置３００への書き込みが減少する。これに伴い、アドレスマッピングや動的再配置の負荷が減少する。また、データ転送等を行うソフトウェア等の負荷も減少する。また、外部記憶装置３００における書き込みの減少は、その書き込みに伴うデータ消去の回数の減少にもつながり、外部記憶装置３００の負担も軽減される。
【００７４】
次に、電子計算機１００のスワップイン時の動作例について説明する。
図４は、電子計算機１００のスワップイン時の動作例を示すフローチャートである。
【００７５】
電子計算機１００は、ページフォルトが発生したことを契機として図４の処理を開始する。ページフォルトとは、ＭＭＵ１０７がスワップイン動作をするときに生じるエラー全般を指す。なお、後述する書き込みフォルトは、書き込み禁止のフラグが立っているアドレス領域へ書き込みを試みたときに生じる書き込みエラーであり、ページフォルトの１つである。
【００７６】
例えば、書き込み禁止領域への書き込み等の指示によって、ページフォルトが発生する。ステップＳ２１では、ＭＭＵ１０７が、このページフォルトを検知して、通常のサブルーチンを脱して例外ルーチン（図４のステップＳ２２以降の処理）に入る。
【００７７】
ステップＳ２２では、メモリ管理部１０８は、ページフォルトが発生した領域が、主記憶装置２００においてスワップアウトされた領域（スワップアウト済領域）であるか否かを判定する。スワップアウト済み領域とは、任意のデータがスワップアウトされ、その後データが書き込まれていない領域である。
【００７８】
ステップＳ２３では、スワップアウト済み領域である場合には、スワップイン処理部１１１は、このスワップアウト済み領域へのスワップインを指示する。そして、ステップＳ２４へ進む。
【００７９】
ステップＳ２４では、スワップイン処理部１１１は、上記のスワップアウト済み領域へ、外部記憶装置３００からスワップイン対象のデータを主記憶装置２００へ読み込む。そして、ステップＳ２５へ進む。
【００８０】
ステップＳ２５では、スワップイン処理部１１１は、スワップインの内容に基づいて、二次記憶管理情報記憶部１１０が保持する二次記憶管理情報を更新する。そして、ステップＳ２６へ進む。
【００８１】
ステップＳ２６では、スワップイン処理部１１１は、スワップインの内容に基づいて、差分情報記憶部１０９が保持する差分情報を更新する。そして、ステップＳ２７へ進む。
【００８２】
ステップＳ２７では、スワップイン処理部１１１は、ＭＭＵ１０７の設定を書き込み禁止とする。具体的には、スワップイン処理部１１１は、ＭＭＵ１０７の設定として、スワップイン対象のデータが書き戻された領域を書き込み禁止の領域としてフラグを立てる。
【００８３】
一方、ステップＳ２８では、ステップＳ２２においてページフォルトが発生した領域がスワップアウト済み領域でない場合には、メモリ管理部１０８は、そのページフォルトが書き込みフォルトであるか否かを判定する。
【００８４】
ステップＳ２９では、ページフォルトが書き込みフォルトであった場合には、スワップイン処理部１１１は、ページフォルトが発生した領域が、過去にスワップアウトした領域であるか否かを判定する。過去にスワップアウトした領域とは、任意のデータがスワップアウトされ、その後任意のデータが書き込まれている領域である。
【００８５】
ステップＳ３０では、ページフォルトが発生した領域が過去にスワップした領域であった場合、スワップイン処理部１１１は、ＭＭＵ１０７の設定を書き込み許可に変更する。具体的には、スワップイン処理部１１１は、ＭＭＵ１０７の設定として、任意のデータが書き戻されている領域を書き込み許可の領域としてフラグを削除する。そして、スワップイン処理部１１１は、この領域に対して書き込み要求のあったデータの書き込み等を行う。
【００８６】
ステップＳ３１では、スワップイン処理部１１１は、差分情報記憶部１０９が保持する差分情報を適宜更新する。
【００８７】
一方、ステップＳ３２では、ステップＳ２８においてページフォルトが書き込みフォルトでなかった場合、または、ステップＳ２９においてページフォルトが発生した領域が過去にスワップした領域ではなかった場合、メモリ管理部１０８は、通常の例外処理を実施する。通常の例外処理とは、一般的なページフォルト発生時の例外処理である。例えば、メモリ管理部１０８は、実際に主記憶装置２００内の所定の領域を割り当てるなどの処理を行う。
【００８８】
このようなスワップイン時の動作によれば、主記憶装置２００へのスワップイン処理や既に格納されたデータの改変を適切に行うことができる。
【００８９】
このように、本実施形態の電子計算機１００によれば、一度退避（スワップアウト）して復旧（スワップイン）し、かつ未改変のデータを優先して破棄することで、二次記憶装置への書き出し量を減少させ、書き出しによる速度性能劣化や二次記憶装置の寿命短縮を防止することができる。このように、効率的なメモリ管理を行うことが可能である。
【００９０】
また、データ破棄部としてのスワップアウト処理部１０５が、主記憶装置２００への格納要求に対応する主記憶装置２００の容量を確保するよう、第２のデータを決定してもよい。
【００９１】
これにより、第１のデータを格納するために必要十分な量の主記憶装置２００のメモリ空間を確保することができる。
【００９２】
また、データ抽出部としての未改変情報抽出部１０２が、データ破棄部としてのスワップアウト処理部１０５により第２のデータが破棄された後に、主記憶装置２００の残容量が不足している場合、主記憶装置２００により記憶されたデータのうち、未改変データ以外の第３のデータを抽出し、スワップアウト処理部１０５が、抽出された第３のデータを主記憶装置２００から外部記憶装置３００へスワップアウトするとともに、第３のデータを主記憶装置２００から破棄してもよい。
【００９３】
これにより、空き容量がデータの破棄だけでは満足できないときであっても、スワップアウトによるデータ書き出しによって、主記憶装置２００の空き領域を確保できる。また、スワップアウトされるデータのアドレスを破棄されるデータの近傍とすれば、まとまった空き領域を確保することもできる。
【００９４】
また、データ抽出部としての未改変情報抽出部１０２が、主記憶装置２００および外部記憶装置３００における同一アドレスに記憶された各データの差分の情報である差分情報と、外部記憶装置３００に格納されたデータの情報である二次記憶管理情報と、に基づいて、未改変データを抽出してもよい。これにより、簡単にかつ確実に未改変データを抽出することができる。
【００９５】
なお、本発明は、上記実施形態の構成に限られるものではなく、特許請求の範囲で示した機能、または本実施形態の構成が持つ機能が達成できる構成であればどのようなものであっても適用可能である。
【００９６】
また、本発明は、上記実施形態の機能を実現するメモリ管理プログラムを、ネットワークあるいは各種記憶媒体を介して電子計算機１００に供給し、この電子計算機１００内のコンピュータが読み出して実行するメモリ管理プログラムも適用範囲である。
【産業上の利用可能性】
【００９７】
本発明は、効率的なメモリ管理を行うことが可能な電子計算機、メモリ管理方法、メモリ管理プログラム等に有用である。
【符号の説明】
【００９８】
１００  電子計算機
１０１  スワップアウト指示部
１０２  未改変情報抽出部
１０３  出力対象決定部
１０４  出力対象記憶部
１０５  スワップアウト処理部
１０６  データ出力部
１０７  ＭＭＵ
１０８  メモリ管理部
１０９  差分情報記憶部
１１０  二次記憶管理情報記憶部
１１１  スワップイン処理部
１１２  データ入力部
２００  主記憶装置
３００  外部記憶装置
【図１】
2013120549.tif 000003
【図２】
2013120549.tif 000004
【図３】
2013120549.tif 000005
【図４】
2013120549.tif 000006