(57)【特許請求の範囲】
【請求項１】
一次記憶部と、前記一次記憶部よりもメモリアクセス速度が低く、前記一次記憶部よりも大容量のメモリから構成される二次記憶部とを有する仮想記憶装置において、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータと同一であるcleanページのデータを記憶する揮発性メモリと、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータとは異なるdirtyページのデータを記憶し、少なくともどのページが前記dirtyページであるかを示す情報を有するページテーブルが配置される不揮発性メモリと、
前記不揮発性メモリ上の前記dirtyページのデータを前記二次記憶部に反映させるとき、前記dirtyページのデータを前記揮発性メモリへ移動するページ移動部と
を具備することを特徴とする仮想記憶管理装置。
【請求項２】
一次記憶部と、前記一次記憶部よりもメモリアクセス速度が低く、前記一次記憶部よりも大容量のメモリから構成される二次記憶部とを有する仮想記憶装置において、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータと同一であるcleanページのデータを記憶する揮発性メモリと、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータとは異なるdirtyページのデータを記憶し、少なくともどのページが前記dirtyページであるかを示す情報を有するページテーブルが配置される不揮発性メモリと、
仮想メモリへのアクセスを管理する仮想記憶管理部と、
ファイルへのアクセスを管理するファイルシステム管理部と、
前記不揮発性メモリ上の前記dirtyページのデータを前記二次記憶部に反映させるとき、前記dirtyページのデータを前記揮発性メモリへ移動するページ移動部を有し、物理メモリをページング及びバッファキャッシュに振り分ける統合バッファキャッシュ管理部と、
を具備することを特徴とする仮想記憶管理装置。
【請求項３】
前記ページ移動部は、前記揮発性メモリのcleanページのデータを前記不揮発性メモリへ移動することを特徴とする請求項１又は２に記載の仮想記憶管理装置。
【請求項４】
前記揮発性メモリはＳＲＡＭ或いはＤＲＡＭであり、前記不揮発性メモリはＦｅＲＡＭ、ＭＲＡＭ、或いはＲｅＲＡＭであることを特徴とする請求項１又は２に記載の仮想記憶管理装置。
【請求項５】
一次記憶部と、前記一次記憶部よりもメモリアクセス速度が低く、前記一次記憶部よりも大容量のメモリから構成される二次記憶部とを有する記憶装置において、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータと同一であるcleanページのデータを記憶する揮発性メモリと、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータとは異なるdirtyページのデータを記憶し、少なくともどのページが前記dirtyページであるかを示す情報を有するページテーブルが配置される不揮発性メモリと、
前記不揮発性メモリ上の前記dirtyページのデータを前記二次記憶部に反映させるとき、前記dirtyページのデータを前記揮発性メモリへ移動するページ移動部と
を具備することを特徴とする記憶管理装置。
【請求項６】
一次記憶部と、前記一次記憶部よりもメモリアクセス速度が低く、前記一次記憶部よりも大容量のメモリから構成される二次記憶部とを有する記憶装置において、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータと同一であるcleanページのデータを記憶する揮発性メモリと、
前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータとは異なるdirtyページのデータを記憶し、少なくともどのページが前記dirtyページであるかを示す情報を有するページテーブルが配置される不揮発性メモリと、
メモリへのアクセスを管理する記憶管理部と、
ファイルへのアクセスを管理するファイルシステム管理部と、
前記不揮発性メモリ上の前記dirtyページのデータを前記二次記憶部に反映させるとき、前記dirtyページのデータを前記揮発性メモリへ移動するページ移動部を有し、物理メモリをページング及びバッファキャッシュに振り分ける統合バッファキャッシュ管理部と、
を具備することを特徴とする記憶管理装置。
【請求項７】
前記ページ移動部は、前記揮発性メモリのcleanページのデータを前記不揮発性メモリへ移動することを特徴とする請求項５又は６に記載の記憶管理装置。
【請求項８】
前記揮発性メモリはＳＲＡＭ或いはＤＲＡＭであり、前記不揮発性メモリはＦｅＲＡＭ、ＭＲＡＭ、或いはＲｅＲＡＭであることを特徴とする請求項５又は６に記載の記憶管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想記憶管理装置に関する。
【背景技術】
【０００２】
近年、処理情報の増大に対応するために、計算機システムでは仮想記憶技術が採用されている。仮想記憶とは、二次記憶部と一次記憶部の間で必要に応じてデータを移動することで、大容量で、且つアクセス速度の速いメモリ（仮想メモリ）が存在するかのようにアプリケーションプログラムに見せかける技術である。これを実現するために、メモリアクセス速度が速く、且つ比較的小容量の揮発性メモリや不揮発性メモリなどから構成される一次記憶部（主メモリ）と、一次記憶部よりもメモリアクセス速度が低く、大容量のハードディスクなどから構成される二次記憶部（仮想メモリ空間）とが設けられる。仮想メモリ空間と実メモリ空間の置き換え制御、並びに仮想アドレスから実アドレスに変換制御に関する技術の一つとして、ページを単位としたページング技術がある。ページングによるアドレス変換は、仮想メモリ上の仮想ページと物理メモリ上の物理ページとが対応付けられる（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１５８７７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の発明では、仮想ページに、一次記憶部と二次記憶部とが同一内容であるcleanページと、一次記憶部の書き換えられたメモリ内容が二次記憶部に反映されていないdirtyページとが存在する。仮想記憶では、停電のときにcleanページのデータは消失しないが、dirtyページのデータは消失するという問題点がある。dirtyページのデータが消失すると、計算機の再起動時にページテーブルを再構築してもデータを回復することができない問題がある。【０００５】
本発明は、停電時にdirtyページ及びcleanページの内容が消失しない仮想記憶管理装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様の仮想記憶管理装置は、一次記憶部と、前記一次記憶部よりもメモリアクセス速度が低く、前記一次記憶部よりも大容量のメモリから構成される二次記憶部とを有する仮想記憶装置において、前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータと同一であるcleanページのデータを記憶する揮発性メモリと、前記一次記憶部に設けられ、前記二次記憶部に記憶されるデータとは異なるdirtyページのデータを記憶し、少なくともどのページが前記dirtyページであるかを示す情報を有するページテーブルが配置される不揮発性メモリと、前記不揮発性メモリ上の前記dirtyページのデータを前記二次記憶部に反映させるとき、前記dirtyページのデータを前記揮発性メモリへ移動するページ移動部とを具備することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、停電時にdirtyページ及びcleanページの内容が消失しない仮想記憶管理装置を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施例１に係る計算機の構成を示すブロック図。
【図２】本発明の実施例１に係る仮想記憶管理装置の構成を示すブロック図。
【図３】本発明の実施例１に係るページテーブルの配置を示す図。
【図４】本発明の実施例１に係るページテーブルの構成を示す図。
【図５】本発明の実施例１に係る仮想メモリの参照処理を示すフローチャート。
【図６】本発明の実施例１に係る不揮発性メモリへの移動処理を示すフローチャート。
【図７】本発明の実施例１に係るページ移動処理を示すフローチャート。
【図８】本発明の実施例１に係る再起動時の処理を示すフローチャート。
【図９】本発明の実施例２に係る仮想記憶管理装置の構成を示すブロック図。
【発明を実施するための形態】
【０００９】
以下本発明の実施例について図面を参照しながら説明する。
【実施例１】
【００１０】
まず、本発明の実施例１に係る仮想記憶管理装置について、図面を参照して説明する。図１は計算機の構成を示すブロック図である。本実施例では、一次記憶部を、揮発性メモリと不揮発性メモリで構成する。そして、一次記憶部の揮発性メモリに仮想メモリのcleanページを配置し、一次記憶部の不揮発性メモリに仮想メモリのdirtyページを配置している。【００１１】
図１に示すように、計算機８０は、ＣＰＵ（Central  Processing  Unit）１、ＭＭＵ（Memory  Management  Unit）２、一次記憶部３（主メモリ）、及び二次記憶部４（例えば、大容量ディスクストレージ）などによって構成されている。【００１２】
計算機８０は、ページングによる仮想記憶に対応したオペレーティングシステムが動作する計算機である。ページングは、ページを単位とした仮想アドレスから実アドレスへ変換する技術である。ページングは、オペレーティングシステム及びＭＭＵ２により実行される。ページは、領域や単位をあらわす。各ページは、コード及びデータから構成され、仮想ページと物理ページがある。計算機８０は、エンドユーザが事務処理等を実行するコンピュータである。なお、計算機８０は、ネットワークを介してクライアントからの要求に対応処理するサーバ、或いは機器の制御を実行する組み込み計算機でもよい。【００１３】
ＣＰＵ１は、計算機８０の全体を統括制御する。ＣＰＵ１は、例えばオペレーティングシステムを主メモリから逐次読み込み、オペレーティングシステムに基づいてアプリケーションプログラムを実行する。【００１４】
ＭＭＵ２は、ＣＰＵ１の指示に基づいて、仮想ページと物理ページの変換ワークを行い、実際の主メモリのアクセスを行う。【００１５】
一次記憶部３（主メモリ）は、メモリアクセス速度が速く、且つランダムに書き込み可能である揮発性メモリ１１及び不揮発性メモリ１２によって構成されている。揮発性メモリ１１は、記憶されているデータが電源オフ時に消失する。揮発性メモリ１１には、ＳＲＡＭ（Static Random Access Memory）を用いているが、代わりにＤＲＡＭ（Dynamic Random Access Memory）などを用いてもよい。不揮発性メモリ１２は、記憶されているデータが電源をオフしても消失することはない。不揮発性メモリ１２には、ＦｅＲＡＭ（Ferroelectric Random Access Memory）を用いているが、代わりにＭＲＡＭ（Magnetic Random Access Memory）やＲｅＲＡＭ（Resistive Random Access Memory）などを用いてもよい。【００１６】
二次記憶部４は、一次記憶部３よりも大容量である。二次記憶部４には、ハードディスクストレージを用いているが、代わりにフラッシュメモリなどを用いてもよい。ＣＰＵ１は、一次記憶部３と二次記憶部４とをそれぞれ読み書きすることにより、一次記憶部３と二次記憶部４との間のデータ転送を実行する。なお、一次記憶部３と二次記憶部４との間にＤＭＡ（Direct  Memory  Access）コントローラを設け、ＣＰＵ１を介さずに直接読み書きを実行してもよい。【００１７】
図２は、実施形態に係る仮想記憶管理装置の構成を示すブロック図である。仮想記憶管理装置９０は、計算機８０内部に設けられ、仮想記憶管理を実行する。図２に示すように、仮想記憶管理装置９０には、アプリケーションプログラム２１、オペレーティングシステム２２、揮発性メモリ１１、及び不揮発性メモリ１２が設けられる。【００１８】
アプリケーションプログラム２１は、オペレーティングシステム２２に基づいてＣＰＵ１によって実行される。したがって、アプリケーションプログラム２１のプログラムコード及びデータは、仮想メモリ上に設けられる。ＣＰＵ１は、仮想アドレスを指定してアプリケーションプログラム２１を読み書きして、実行する。【００１９】
オペレーティングシステム２２には、仮想記憶管理部２３が設けられる。オペレーティングシステム２２のプログラムコード及びデータは、不揮発性メモリ１２に格納されている。なお、代わりに、オペレーティングシステム２２のプログラムコード及びデータを二次記憶部４に格納しておき、起動時に揮発性メモリ１１に読み込んでもよい。【００２０】
仮想記憶管理部２３には、ページ移動部２５が設けられる。仮想記憶管理部２３は、仮想記憶空間及び仮想アドレスを管理する。揮発性メモリ１１は、複数のcleanページ２７（例えば、cleanページ２７ａ，２７ｂ，２７ｃ，‥）が設けられる。不揮発性メモリ１２は、複数のdirtyページ２８（例えば、dirtyページ２８ａ，２８ｂ，２８ｃ，‥）とページテーブル記憶部５１が設けられる。【００２１】
ここで、dirtyページ２８は、一次記憶部３の書き換えられたデータが二次記憶部４にまだ反映されていなく、一次記憶部３のデータと、それに対応する二次記憶部４に格納されているデータとが異なるページであることを示している。cleanページ２７は、一次記憶部３のデータと、それに対応する二次記憶部４に格納されているデータとが同一であるページであることを示している。【００２２】
ページ移動部２５は、揮発性メモリ１１と不揮発性メモリ１２間のページの移動を実行する。例えば、物理ページの書き込みのときに、揮発性メモリ１１上のcleanページ２７のデータを不揮発性メモリ１２に移動させる。また、不揮発性メモリ１２上のdirtyページ２８のデータを揮発性メモリ１１に移動する。【００２３】
不揮発性メモリ１２のページテーブル記憶部５１は、cleanページとdirtyページの管理を行うページテーブルが設けられる。ページテーブル記憶部５１は、仮想記憶管理部２３とcleanページ及びdirtyページの情報のやりとりを行う。【００２４】
図３は、ページテーブルの配置を示す図である。図３に示すように、仮想記憶は、例えばページテーブル記憶部５１に設けられるページテーブル３１を使用したページングにより行われる。メモリアクセスに使用される仮想アドレス３３は、ページとオフセットによって構成されている。仮想アドレス３３のページ（例えば、ページＡ，Ｂ，Ｃ、‥）は、ページテーブルベースレジスタ３２により、論理ページ番号毎にページテーブル３１に配置される。ＭＭＵ２は、ページテーブル３１を参照して、仮想ページを物理ページに変換する。つまり、ページテーブル３１に配置された仮想アドレス３３のページは、ＭＭＵ２により参照され、一次記憶部３をアクセスする物理アドレス３４のブロックとして変換される。【００２５】
なお、オペレーティングシステム２２がページテーブル３１を参照し、ＭＭＵ２が一部のページのマッピングのみを格納するＴＬＢ（Translation Look−aside Buffer）を参照する方式でもよい。この場合、必要に応じてオペレーティングシステム２２がページテーブル３１を参照してＴＬＢの内容を入れ替えることになる。いずれの場合でも、ページテーブル３１の書き換えは、オペレーティングシステム２２が実行する。【００２６】
ページテーブル記憶部５１に設けられるページテーブル３１は、停電時に記憶データが消失しないように、例えば不揮発性メモリ１２に設けられる。なお、揮発性メモリ１１の物理ページを管理するページテーブルを分離して設けた場合、ページテーブル３１は揮発性メモリ１１に設け、不揮発性メモリ１２の物理ページを管理するページテーブルは不揮発性メモリ１２に設けてもよい（つまり、複数のページテーブルが不揮発性メモリ１２と揮発性メモリ１１に設けられる）。【００２７】
仮想記憶では、物理ページの割り当てを行うとき、仮想記憶管理部２３は、ページテーブル３１を用いて未使用物理ページを管理する。なお、代わりに、別途未使用物理ページを連結し、連結リストを作成して管理してもよい。【００２８】
未使用物理ページのリストは、すべて不揮発性メモリ１２に設けている。なお、ページテーブル３１の未使用物理ページだけを別に分離して、不揮発性メモリ１２に設けてもよい。【００２９】
ページテーブルには、少なくとも、論理ページ番号、物理ページ番号、ページがdirtyページかcleanページかを示す情報と、それに対応付けされた情報とが設けられる。【００３０】
図４は、ページテーブル３１の構成を示す図である。図４に示すように、例えば不揮発性メモリ１２に設けられたページテーブル３１は、ページテーブルベースレジスタ３２で指定されるアドレスに配置される（図中の論理ページ０，１，２，３、‥がエントリに相当する）。各エントリは、論理ページ番号順に配置され、仮想メモリアドレスの論理ページ番号を添字として参照が行われる。各エントリは、例えば物理ページ番号のデータ、Presenceビット、Dirty／Cleanを示すビット、不揮発性メモリ／揮発性メモリを示すビット、Disk Addrを示すデータ、Protectionを示すデータなどから構成される。【００３１】
Presenceビットは、論理ページ番号に対応する物理ページ番号がページテーブル３１に存在する場合に“１”となり、存在しない場合に“０”となる。Dirty／Cleanビットは、論理ページ番号のページがdirtyページである場合は“１”となり、cleanページである場合は“０”となる。不揮発性メモリ／揮発性メモリビットは、論理ページ番号のページデータが不揮発性メモリ１２にある場合は“１”となり、揮発性メモリ１１にある場合は“０”となる。【００３２】
Disk Addrのアドレスは、論理ページ番号に対応する二次記憶部４のディスクアドレスを示す。Protectionビットは、メモリ動作についての情報、例えばRead onlyなどを示す。【００３３】
次に、仮想記憶管理装置の動作について、図５乃至図８を参照して説明する。図５は仮想メモリの参照処理を示すフローチャートである。【００３４】
図５に示すように、仮想メモリの参照は、まず、仮想記憶管理装置９０に設けられるアプリケーションプログラム２１が論理アドレスを指定することで開始される。すると、仮想記憶管理装置９０に設けられるオペレーティングシステム２２は、アプリケーションプログラム２１が指定した論理アドレスから論理ページ番号の計算を行う（ステップＳ１１）。ここでは、論理アドレスの上位ビットが論理ページ番号となる。例えば、アドレス空間が３２ビットで、ページサイズが１ｋＢの場合、論理アドレスの上位２２ビットが論理ページ番号となる。【００３５】
次に、オペレーティングシステム２２は、論理ページ番号を添字としてページテーブル３１の情報を引くと、エントリが得られる（ステップＳ１２）。【００３６】
続いて、オペレーティングシステム２２は、図３に示すページテーブル３１の論理ページ番号で示すエントリのPresenceビットが“１”或いは“０”であるかの判定する（ステップＳ１３）。Presenceビットが“１”の場合、オペレーティングシステム２２は、当該エントリから物理アドレスを取得する（ステップＳ１７）。一方、Presenceビットが“０”の場合、論理ページ番号の内容が一次記憶部３上にはなく、二次記憶部４に退避されている。したがって、Presenceビットが“０”の場合、オペレーティングシステム２２は、揮発性メモリ１１上の未使用物理ページを割り当てる（ステップＳ１４）。【００３７】
そして、オペレーティングシステム２２は、論理ページ番号のページ内容を二次記憶部４から一次記憶部３のcleanページに読み出す（ステップＳ１５）。次に、オペレーティングシステム２２は、ページテーブル３１のエントリ更新を行う。具体的には、一次記憶部３に割り当てた物理ページ番号をそのエントリに書き込み、presenceビットを“１”にし、dirtyビットを“０”に置き換える。この場合、書き込み時の不揮発性メモリ１２への移動のためにページへの書き込みは禁止しておく（ステップＳ１６）。【００３８】
続いて、ＭＭＵ２は論理アドレスから物理アドレスへの変換を行う。物理アドレスは、当該エントリから読み出された物理ページ番号を上位ビットとし、論理アドレスの下位オフセットを下位ビットとすることにより生成される。例えば、アドレス空間が３２ビットでページサイズが１ｋＢの場合、物理ページ番号を上位２２ビットとし、論理アドレスのオフセットを下位１０ビットとするアドレスを生成する（ステップＳ１７）。【００３９】
そして、ＭＭＵ２は生成された物理アドレス３４を用いて一次記憶部３をアクセスする（ステップＳ１８）。【００４０】
ここでは、１つのページテーブル３１を用いて仮想メモリの参照を実行しているが、代わりに複数のページテーブルを用いて仮想メモリの参照を実行、或いはＴＬＢを用いて仮想メモリの参照を実行してもよい。また、レベルの異なるページテーブルを複数設けて、仮想メモリの参照を実行してもよい。【００４１】
図６は不揮発性メモリへの移動処理を示すフローチャートである。図６に示すように、cleanページへの書き込み時の不揮発性メモリ１２への移動は、MMU２でのフォールト判断を契機とし、copy  on  write方式で行う。【００４２】
まず、揮発性メモリ１１に対応する論理ページをオペレーティングシステム２２が読み出しのみ許可し、書き込みを禁止しておく。書き込みを実行した場合、フォールトが発生し、制御がオペレーティングシステム２２の仮想記憶管理部２３に移行する。仮想記憶管理部２３は、不揮発性メモリ１２上の未使用物理ページをページテーブル３１或いは未使用物理ページリストから取り出す（ステップＳ２１）。【００４３】
次に、不揮発性メモリ１２の未使用物理ページが不足しているかを仮想記憶管理部２３が判断する（ステップＳ２２）。不揮発性メモリ１２の未使用物理ページが不足していない場合、不揮発性メモリ１２へのコピーと進む。不揮発性メモリ１２の未使用物理ページが不足している場合、二次記憶部４への反映により仮想記憶管理部２３が未使用物理ページを増やす（ステップＳ２３）。【００４４】
続いて、揮発性メモリ１１上の物理ページの内容を、取り出した不揮発性メモリ１２上の物理ページに仮想記憶管理部２３がコピーする（ステップＳ２４）。【００４５】
そして、仮想記憶管理部２３がページテーブルエントリを書き換え、不揮発性メモリ１２上の物理ページを仮想ページに対応する物理ページにする。また、仮想記憶管理部２３は、仮想ページの書き込みを許可し、これ以降、書き込みが発生してもフォールトが発生しないようにする（ステップＳ２５）。【００４６】
次に、仮想記憶管理部２３は、揮発性メモリ１１上の物理ページを未使用物理ページに追加する（ステップＳ２６）。【００４７】
ここでは、二次記憶部４に退避されているページへの書き込みが発生した場合、一旦揮発性メモリ１１へのページングを実行し、直後にフォールトが発生して不揮発性メモリ１２への移動が実行される。代わりに、初めから不揮発性メモリ１２を仮想記憶管理部２３が割り当て、そこへページインすることによりページ移動の手順を省略してもよい。【００４８】
次に、dirtyページの二次記憶部４への反映について説明する。仮想記憶管理部２３は、書き込みのために多くの物理ページを不揮発性メモリ１２へ移動する。不揮発性メモリ１２の残量が少なくなった場合、仮想記憶管理部２３は、不揮発性メモリ１２上の一部の物理ページを選択してその内容を二次記憶部４へ反映する。ページの選択は、例えば最後の書き込みが実行されてから、時間が最も長いページを選択する。反映後、dirtyビットを仮想記憶管理部２３が“０“に置き換える。【００４９】
二次記憶部４への反映により、dirtyビットがcleanビットとして認識される。認識後、仮想記憶管理部２３のページ移動部２５は、物理ページを直ちに揮発性メモリ１１へ移動する。この場合、物理ページに再度書き込みが発生したときに不揮発性メモリ１２への移動処理の手順を省略してもよい。具体的には、物理ページを別の仮想ページに割り当てる必要が発生するまで、仮想記憶管理部２３は実際のページ移動を遅延し、不揮発性メモリ１２上に物理ページを残置してもよい。【００５０】
図７はページ移動処理を示すフローチャートである。図７に示すように、ページ移動では、まず、揮発性メモリ１１上の未使用物理ページを仮想記憶管理部２３がページテーブル３１或いは未使用物理ページリストから取り出す（ステップＳ３１）。【００５１】
次に、未使用物理ページが不足しているかの判断を仮想記憶管理部２３が行う（ステップＳ３２）。未使用物理ページが不足している場合、揮発性メモリ１１上の物理ページを仮想記憶管理部２３が選択し、選択された物理ページを未使用物理ページとして利用する。ページの選択は、例えば最後の読み出しが実行されてからの時間が最も長いページを仮想記憶管理部２３が選択する。揮発性メモリ１１上の物理ページの情報は、二次記憶部４に反映されているものであり、未使用物理ページにする場合新たに反映する必要がない（ステップＳ３３）。【００５２】
未使用物理ページが不足していない場合（或いは、物理ページの選択後）、仮想記憶管理部２３は不揮発性メモリ１２上の物理ページの情報を揮発性メモリ１１上の物理ページにコピーする（ステップＳ３４）。【００５３】
続いて、仮想記憶管理部２３は、ページテーブル３１を書き換え、揮発性メモリ１１上の物理ページを仮想ページに対応する物理ページとする。仮想記憶管理部２３は、仮想ページの書き込みを禁止し、これ以降の書き込みが発生したときのフォールトが発生するようにする。仮想記憶管理部２３は、不揮発性メモリ１２上のページを未処理物理ページに追加する（ステップＳ３５）。【００５４】
本実施例では、オペレーティングシステム２２は、不揮発性メモリ１２或いは二次記憶部４上の特定アドレスの特定ビットに、再起動時後のページテーブル３１の初期化が必要であるかを示すフラグを設ける。起動時に、オペレーティングシステム２２はこの特定ビットを“０”に設定する。オペレーティングシステム２２は、シャットダウン時に仮想メモリの継続使用が不要な場合、この特定ビットを“１”に置き換えてシャットダウンする。停電により計算機８０が突然停止した場合、この特定ビットは“０”のままとなる。【００５５】
図８は、再起動時の処理を示すフローチャートである。図８に示すように、再起動時の処理では、計算機８０の再起動後、オペレーティングシステム２２は、特定ビットを読み出す（ステップＳ４１）。【００５６】
次に、オペレーティングシステム２２は、読み出された特定ビットが“１”か“０”かの判断を行う（ステップＳ４２）。【００５７】
読み出された特定ビットが“１”の場合、即ち初期化が要求されているときのみ、ページテーブル３１の初期化をオペレーティングシステム２２が実行する。具体的には、仮想メモリに対応する物理メモリが存在しない状態にする。或いは、仮想メモリに対応する物理メモリにすべて“０”が書き込まれた状態にする（ステップＳ４３）。【００５８】
読み出された特定ビットが“０”の場合、即ち、停電後に計算機８０が再起動した場合、或いはオペレーティングシステム２２のシャットダウン時に二次記憶部４への反映が省略された場合、オペレーティングシステム２２は、不揮発性メモリ１２に保存されたページテーブル３１を再利用する（ステップＳ４４）。【００５９】
揮発性メモリ１１上の物理ページを管理するページテーブルを分離して管理する場合、オペレーティングシステム２２はこのページテーブルのみを常に初期化する。オペレーティングシステム２２は、フラグが“１”の場合のみ、不揮発性メモリ１２上の物理ページを管理するページテーブルを初期化する。【００６０】
このような処理により、不揮発性メモリ１２上の物理ページのページテーブル３１と、不揮発性メモリ１２上の物理ページの情報は、再起動後も保存される。なお、プログラムを継続して実行するために、プロセスのコンテキストなどの情報が停電時に消失しないようにするには、それらの情報を不揮発性メモリ１２に別途格納する。そして、計算機８０の再起動後にページテーブルと同様な方法を用いて再構築する必要がある。【００６１】
上述したように、本実施例の仮想記憶管理装置では、計算機８０に、ＣＰＵ１、ＭＭＵ２、一次記憶部３、及び二次記憶部４が設けられる。仮想記憶管理装置９０は、計算機８０内部に設けられ、アプリケーションプログラム２１、オペレーティングシステム２２、揮発性メモリ１１、及び不揮発性メモリ１２が設けられる。オペレーティングシステム２２は、ページ移動部２５を有する仮想記憶管理部２３が設けられる。揮発性メモリ１１は、複数のcleanページが設けられる。不揮発性メモリ１２は、複数のdirtyページとページテーブル記憶部５１が設けられる。ページ移動部２５は、不揮発性メモリ１２上のdirtyページのデータを二次記憶部４に反映させるとき、不揮発性メモリ１２上のdirtyページのデータを揮発性メモリ１１へ移動する。【００６２】
このため、cleanページ及びdirtyページの情報は、停電時に消失しない。また、停電後に計算機８０を再起動したとき、不揮発性メモリ１２の情報に基づいて仮想記憶のページテーブルが再構築されるので、どの仮想ページがdirtyページかという情報と、dirtyページの仮想ページへの書き込み情報とは再起動後も保存される。また、書き込みを頻繁に二次記憶部４に反映する必要がなくなり、二次記憶部４と物理メモリ間の入出力が減少でき、計算機８０の処理速度を向上できる。
【実施例２】
【００６３】
次に、本発明の実施例２に係る仮想記憶管理装置について、図面を参照して説明する。図９は仮想記憶管理装置の構成を示すブロック図である。本実施例では、オペレーティングシステムに仮想記憶管理部とファイルシステム管理部を設け、物理メモリをページングとバッファキャッシュに適宜振り分けている。【００６４】
以下、実施例１と同一構成部分には、同一符号を付してその部分の説明を省略し、異なる部分のみ説明する。【００６５】
図９に示すように、仮想記憶管理装置９１には、アプリケーションプログラム２１ａ、オペレーティングシステム２２ａ、揮発性メモリ１１、及び不揮発性メモリ１２が設けられる。仮想記憶管理装置９１は、実施例１と同様に計算機内部に設けられ、仮想記憶管理を実行する装置である。【００６６】
アプリケーションプログラム２１ａは、オペレーティングシステム２２ａに基づいてＣＰＵ１により実行される。したがって、アプリケーションプログラム２１ａのプログラムコード及びデータは、仮想メモリ上に設けられる。アプリケーションプログラム２１ａは、仮想アドレスを指定して読み書きを行う。ＣＰＵ１は、仮想メモリを指定してアプリケーションプログラム２１ａを読み書きして、実行する。【００６７】
オペレーティングシステム２２ａには、仮想記憶管理部２３ａ、統合バッファキャッシュ管理部４１、及びファイルシステム管理部４２が設けられる。統合バッファキャッシュ管理部４１には、ページ移動部２５が設けられる。【００６８】
図示しないバッファキャッシュは、物理メモリに設けられ、二次記憶部４のファイルデータの一部を物理メモリ上に保持する。バッファキャッシュは、ファイルの入出力の一部を物理メモリの参照のみで済ませて、二次記憶部４との入出力を減少し、処理を高速化する。【００６９】
仮想記憶管理部２３ａは、仮想メモリへのアクセスを管理する。ファイルシステム管理部４２は、ファイルへのアクセスを管理する。【００７０】
統合バッファキャッシュ管理部４１は、仮想メモリ及びファイルの処理を一元管理する。統合バッファキャッシュ管理部４１は、ページテーブル記憶部５１とcleanページ及びdirtyページの情報のやりとりを行う。統合バッファキャッシュ管理部４１は、実施例１と同様な動作をし、アプリケーションプログラム２１ａからオペレーティングシステム２２ａへのファイル書き込み要求に対して処理を実行する。具体的には、統合バッファキャッシュ管理部４１はアプリケーションプログラム２１ａがファイルへの書き込みを実行するときに、バッファキャッシュのページを揮発性メモリ１１から不揮発性メモリ１２に移動する。そして、統合バッファキャッシュ管理部４１はバッファキャッシュの情報を二次記憶部４上のファイルへ反映させるときに、バッファキャッシュのページを不揮発性メモリ１２から揮発性メモリ１１へ移動する。ここでは、実施例１のＭＭＵ２によるアドレス変換やページフォールトの発生がなく、すべてオペレーティングシステム２２ａが処理を実行する。【００７１】
本実施例では、統合バッファキャッシュ管理部４１による一元管理により、物理メモリをページングとバッファキャッシュに必要に応じて柔軟に振り分けている。このため、物理メモリを有効に活用することができる。例えば、仮想メモリを大量に消費するアプリケーションプログラム２１ａを実行するとき、ページングによる仮想メモリへ多くの物理メモリが割り当てられ、残り少量の物理メモリをバッファキャッシュとして割り当てることができる。【００７２】
上述したように、本実施例の仮想記憶管理装置では、アプリケーションプログラム２１ａ、オペレーティングシステム２２ａ、揮発性メモリ１１、及び不揮発性メモリ１２が設けられる。オペレーティングシステム２２ａには、仮想記憶管理部２３ａ、統合バッファキャッシュ管理部４１、及びファイルシステム管理部４２が設けられる。統合バッファキャッシュ管理部４１は、ページング及びバッファキャッシュを一元管理し、ページ移動部２５が設けられる。揮発性メモリ１１は、複数のcleanページが設けられる。不揮発性メモリ１２は、複数のdirtyページとページテーブル記憶部５１が設けられる。ページ移動部２５は、不揮発性メモリ１２上のdirtyページのデータを二次記憶部４に反映させるとき、不揮発性メモリ１２上のdirtyページのデータを揮発性メモリ１１へ移動する。【００７３】
このため、実施例１と同様な効果の他に、物理メモリをページングとバッファキャッシュに必要に応じて柔軟に振り分けているので、実施例１よりも物理メモリを有効に活用することができる。【００７４】
本発明は、上記実施例に限定されるものではなく、発明の趣旨を逸脱しない範囲で、種々、変更してもよい。【００７５】
実施例の仮想記憶管理装置は、一次記憶部及び二次記憶部を有する計算機に適用しているが、一次記憶部及び二次記憶部を有し、情報処理を行う移動体機器などの情報処理装置にも適用することができる。
【産業上の利用可能性】
【００７６】
本発明によれば、例えば計算機や情報処理装置などに適用することができる。
【符号の説明】
【００７７】
１  ＣＰＵ
２  ＭＭＵ
３  一次記憶部
４  二次記憶部
１１  揮発性メモリ
１２  不揮発性メモリ
２１、２１ａ  アプリケーションプログラム
２２、２２ａ  オペレーティングシステム
２３、２３ａ  仮想記憶管理部
２５  ページ移動部
２７ａ〜２７ｃ  cleanページ
２８ａ〜２８ｃ  dirtyページ
３１  ページテーブル
３２  ページテーブルベースレジスタ
３３  仮想アドレス
３４  物理アドレス
４１  統合バッファキャッシュ管理部
４２  ファイルシステム管理部
５１  ページテーブル記憶部
８０  計算機
９０  仮想記憶管理装置
【図１】
0005404798.tif 000002
【図２】
0005404798.tif 000003
【図３】
0005404798.tif 000004
【図４】
0005404798.tif 000005
【図５】
0005404798.tif 000006
【図６】
0005404798.tif 000007
【図７】
0005404798.tif 000008
【図８】
0005404798.tif 000009
【図９】
0005404798.tif 000010