(57)【要約】【課題】メインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、ＮＶメモリをメインメモリおよびストレージとして使用することができなかった。【解決手段】不揮発性の記録媒体であるＮＶメモリと、ＮＶメモリに対して、所定の単位でデータを読み書きするファイルシステム部と、実行が要求されたプロセスに対し、ＮＶメモリの所定の領域を割り当てるメモリ管理部とを備える情報処理装置により、メインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、ＮＶメモリをメインメモリおよびストレージとして使用することができる。【選択図】図１
2014063358.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の記録媒体であるＮＶメモリと、
前記ＮＶメモリに対して、所定の単位でデータを読み書きするファイルシステム部と、
実行が要求されたプロセスに対し、前記ＮＶメモリの所定の領域を割り当てるメモリ管理部とを備える情報処理装置。
【請求項２】
前記ファイルシステム部は、
前記１以上のファイルを識別するファイル識別子と、当該ファイルに対応する１以上の論理アドレスとを有するファイル管理情報が格納されるファイル管理情報格納手段と、
論理アドレスを物理アドレスに変換するための変換情報が格納される変換情報格納手段と、
前記１以上の各ファイルに対応する１以上の各論理アドレスを、前記変換情報を用いて１以上の物理アドレスに変換するアドレス変換手段と、
前記アドレス変換手段が取得した物理アドレスに対応するＮＶメモリの領域にファイルを書き込む書込手段と、
前記アドレス変換手段が取得した物理アドレスに対応するＮＶメモリの領域からファイルを読み出す読出手段とを備える請求項１記載の情報処理装置。
【請求項３】
前記ファイルシステム部は、
前記ＮＶメモリを、所定のサイズごと領域であるブロックとして管理し、
前記メモリ管理部は、
前記ＮＶメモリを、所定のサイズごと領域であるページとして管理し、
前記ブロックのサイズと、前記ページのサイズとが同一である請求項２記載の情報処理装置。
【請求項４】
前記メモリ管理部は、
所定のタイミングで、前記プロセスに割り当てたＮＶメモリの領域を解放し、
前記ファイルシステム部は、
前記ＮＶメモリの空き領域または使用領域を示す１以上の領域情報が格納される領域情報格納手段と、
前記メモリ管理部が解放した領域を空き領域として検出し、当該空き領域を示す領域情報を領域情報格納手段に蓄積する領域検出手段とをさらに備え、
前記ファイルシステム部は、
前記領域情報が示す空き領域にデータを書込み、
前記メモリ管理部は、
前記領域情報が示す空き領域を実行が要求されたプロセスに対して割り当てる請求項１から請求項３いずれか一項に記載の情報処理装置。
【請求項５】
揮発性の記録媒体である揮発性メモリをさらに具備し、
前記メモリ管理部は、
前記ＮＶメモリの空き領域の有無を判断する領域判断手段と、
前記領域判断手段が、前記ＮＶメモリに空き領域がないと判断した場合に、実行が要求されたプロセスに対し、前記揮発性メモリ上の所定の領域を割り当てるメモリ管理手段とを具備する請求項１から請求項４いずれか一項に記載の情報処理装置。
【請求項６】
不揮発性の記録媒体であるＮＶメモリと、
ファイルシステム部と、メモリ管理部とを用いて行われる情報処理方法であって、
前記ファイルシステム部が、
前記ＮＶメモリに対して、所定の単位でデータを読み書きするファイルシステムステップと、
前記メモリ管理部が、
実行が要求されたプロセスに対し、前記ＮＶメモリの所定の領域を割り当てるメモリ管理ステップとを備える情報処理方法。
【請求項７】
不揮発性の記録媒体であるＮＶメモリにアクセス可能なコンピュータを、
前記ＮＶメモリに対して、所定の単位でデータを読み書きするファイルシステム部と、
実行が要求されたプロセスに対し、前記ＮＶメモリの所定の領域を割り当てるメモリ管理部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを使用する情報処理装置等に関するものである。
【背景技術】
【０００２】
従来、いわゆるＵＳＢメモリ（特許文献１参照）や、Ｆｌａｓｈ  ＳＳＤ（特許文献２参照）などの不揮発性メモリ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Mｅｍｏｒｙ、以下、適宜、ＮＶメモリ）が開発されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】非特許文献１：“ＵＳＢメモリとは”、［online］、IT用語辞典 e-Words、［２０１２年８月６日検索］、インターネット［URL；http://e-words.jp/w/USBE383A1E383A2E383AA.html］
【非特許文献２】非特許文献２：“ＳＳＤとは”、［online］、IT用語辞典 e-Words、［２０１２年８月６日検索］、インターネット［URL；http://e-words.jp/w/SSD.html］
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、ＮＶメモリをメインメモリとして用いる研究、およびメインメモリをストレージとして用いる研究等により、ＮＶメモリを、メインメモリとして使用する領域と、ストレージとして使用する領域との２つの領域に分割し、それぞれの領域を、メインメモリおよびストレージとして使用することが可能となっている。ＮＶメモリを、メインメモリおよびストレージの両方として使用することができるということは、その両方を１つに融合できることを意味する。しかしながら、従来の研究等においては、メインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、ＮＶメモリをメインメモリおよびストレージとして使用することができなかった。
【課題を解決するための手段】
【０００５】
本第一の発明の情報処理装置は、不揮発性の記録媒体であるＮＶメモリと、ＮＶメモリに対して、所定の単位でデータを読み書きするファイルシステム部と、実行が要求されたプロセスに対し、ＮＶメモリの所定の領域を割り当てるメモリ管理部とを備える情報処理装置である。
【０００６】
このような構成により、メインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、ＮＶメモリをメインメモリおよびストレージとして使用することができる。
【０００７】
また、本第二の発明の情報処理装置は、第一の発明に対して、ファイルシステム部は、１以上のファイルを識別するファイル識別子と、ファイルに対応する１以上の論理アドレスとを有するファイル管理情報が格納されるファイル管理情報格納手段と、論理アドレスを物理アドレスに変換するための変換情報が格納される変換情報格納手段と、１以上の各ファイルに対応する１以上の各論理アドレスを、変換情報を用いて１以上の物理アドレスに変換するアドレス変換手段と、アドレス変換手段が取得した物理アドレスに対応するＮＶメモリの領域にファイルを書き込む書込手段と、アドレス変換手段が取得した物理アドレスに対応するＮＶメモリの領域からファイルを読み出す読出手段とを備える情報処理装置である。
【０００８】
このような構成により、ＮＶメモリに格納されているデータを、ファイルとして扱うことができる。
【０００９】
また、本第三の発明の情報処理装置は、第二の発明に対して、ファイルシステム部は、ＮＶメモリを、所定のサイズごと領域であるブロックとして管理し、メモリ管理部は、ＮＶメモリを、所定のサイズごと領域であるページとして管理し、ブロックのサイズと、ページのサイズとが同一である情報処理装置である。
【００１０】
このような構成により、メモリの割り当て、および解放処理を効率的に行うことができる。
【００１１】
また、本第四の発明の情報処理装置は、第一から第三いずれか１つの発明に対して、メモリ管理部は、所定のタイミングで、プロセスに割り当てたＮＶメモリの領域を解放し、ファイルシステム部は、ＮＶメモリの空き領域または使用領域を示す１以上の領域情報が格納される領域情報格納手段と、メモリ管理部が解放した領域を空き領域として検出し、空き領域を示す領域情報を領域情報格納手段に蓄積する領域検出手段とをさらに備え、ファイルシステム部は、領域情報が示す空き領域にデータを書込み、メモリ管理部は、領域情報が示す空き領域を実行が要求されたプロセスに対して割り当てる情報処理装置である。
【００１２】
このような構成により、解放されたＮＶメモリの空き領域を、ファイルシステムに空き領域として登録することができる。これにより、ファイルシステムの一貫性を保つことができる。
【００１３】
また、本第五の発明の情報処理装置は、第一から第四いずれか１つの発明に対して、揮発性の記録媒体である揮発性メモリをさらに具備し、メモリ管理部は、ＮＶメモリの空き領域の有無を判断する領域判断手段と、領域判断手段が、ＮＶメモリに空き領域がないと判断した場合に、実行が要求されたプロセスに対し、揮発性メモリ上の所定の領域を割り当てるメモリ管理手段とを具備する情報処理装置である。
【００１４】
このような構成により、ＮＶメモリの空き容量がない場合でも、揮発性メモリをメインメモリとして使用することができる。
【発明の効果】
【００１５】
本発明による情報処理装置等によれば、メインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、ＮＶメモリをメインメモリおよびストレージとして使用することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１における情報処理装置１のブロック図
【図２】同情報処理装置１の全体動作について説明するフローチャート
【図３】同空き領域の検出と領域の解放処理について説明するフローチャート
【図４】同変換情報の例を示す図
【図５】同領域情報の例を示す図
【図６】同ファイル管理情報の例を示す図
【図７】同領域情報の例を示す図
【図８】同ＱＥＭＵの起動コマンドの例を示す図
【図９】同物理アドレス空間への配置の例を示す図
【図１０】同仮想記憶システム等の関係を示す図
【図１１】同領域割当および解放を行ったときのスクリーンダンプを示す図
【図１２】同ベンチマーク結果を示す図
【図１３】同性能比較結果を示す図
【図１４】同回路構成の例を示す図
【図１５】同情報処理装置１のブロック図
【図１６】上記実施の形態におけるコンピュータシステムの概観図
【図１７】上記実施の形態におけるコンピュータシステムのブロック図
【発明を実施するための形態】
【００１７】
以下、本発明による情報処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
【００１８】
（実施の形態１）
本実施の形態において、ＮＶメモリを、ストレージとして使用する領域、メインメモリとして使用する領域とに分割することなく、ストレージ、およびメインメモリとして使用する情報処理装置１について説明する。なお、ここで、ストレージとは、いわゆる２次記憶装置や、補助記憶装置と呼ばれる記憶装置のことである。また、メインメモリとは、いわゆる１次記憶装置や、主記憶装置と呼ばれる記憶装置のことである。
【００１９】
図１は、本実施の形態における情報処理装置１のブロック図である。情報処理装置１は、ＮＶメモリ１１、揮発性メモリ１２、受付部１３、ファイルシステム部１４、メモリ管理部１５を備える。また、ファイルシステム部１４は、ファイル管理情報格納手段１４１、変換情報格納手段１４２、領域情報格納手段１４３、アドレス変換手段１４４、書込手段１４５、読出手段１４６、領域検出手段１４７を備える。また、メモリ管理部１５は、領域判断手段１５１、メモリ管理手段１５２を備える。
【００２０】
また、本実施の形態における情報処理装置１が備えるファイルシステム部１４、およびメモリ管理部１５は、例えば、いわゆるＯＳや、当該ＯＳのカーネルと呼ばれるものなどである。
【００２１】
ＮＶメモリ１１は、不揮発性の記録媒体である。ＮＶメモリ１１は、例えば、ＰＣＭ（Ｐａｈｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ、相変化メモリ）や、ＭＲＡＭ、ＲｅＭＡＭ、ＥＥＰＲＯＭ、フラッシュメモリなどである。また、ＮＶメモリ１１は、通常、不揮発性メモリであれば、その形状や種類などは、問わない。また、ＮＶメモリ１１は、例えば、バイト単位アクセスが可能な不揮発性メモリであれば、物理アドレスにてアクセスすることができる。また、ＮＶメモリ１１は、例えば、バイト単位アクセスが不可能な不揮発性メモリであっても、図１４に示すように、バッファＲＡＭを経由することで、物理アドレスにてアクセスすることができる。
【００２２】
また、ＮＶメモリ１１は、所定の単位のデータが格納される１以上の領域（以下、適宜、単位領域）を有する。所定の単位とは、通常、いわゆるサイズ（容量）であり、例えば、４ＫＢ（キロバイト）や、５１２Ｂ（バイト）などである。当該サイズは、予め決められていてもよいし、そうでなくてもよい。また、当該一の単位領域は、例えば、後述のファイルシステム部１４からは、「ブロック」として使用される。また、当該一の単位領域は、例えば、後述のメモリ管理部１５からは、「ページ」として使用される。つまり、当該一の単位領域は、通常、２以上の名称で呼ばれる。また、所定の単位は、例えば、ブロック、ページ、２以上のブロック、２以上のページであってもよい。また、本実施の形態において、当該ブロックのサイズと、当該ページのサイズとは、同一である。また、当該サイズは、４ＫＢであることが好適である。
【００２３】
揮発性メモリ１２は、揮発性の記録媒体である。揮発性メモリ１２は、通常、いわゆるＤＲＡＭであるが、ＳＲＡＭなどであってもよい。また、揮発性メモリ１２は、通常、いわゆる揮発性メモリであれば、その形状や種類などは問わない。
【００２４】
また、揮発性メモリ１２は、ＮＶメモリ１１と同様に、１以上の単位領域を有する。当該一の単位領域は、通常、後述のメモリ管理部１５から、「ページ」として使用される。なお、当該一の単位領域は、通常、後述のファイルシステム部１４から、「ブロック」として使用されない。
【００２５】
また、ＮＶメモリ１１と、揮発性メモリ１２は、通常、一の物理アドレス空間に配置される。当該物理アドレス空間は、通常、連続した１以上の物理アドレスを有する。また、「物理アドレス空間に配置される」とは、ＮＶメモリ１１、揮発性メモリ１２のそれぞれが有する各１以上の単位領域と、物理アドレスとを対応付けることである。つまり、当該一の単位領域は、物理アドレスにより識別される。また、当該一の単位領域は、例えば、論理アドレス（仮想アドレスともいう）により間接的に識別されてもよい。なお、当該一の単位領域は、ブロックまたはページと呼ばれるため、物理アドレスおよび論理アドレスを、以下、適宜、ブロック識別子またはページ識別子とする。
【００２６】
また、上記、ＮＶメモリ１１の物理アドレス空間への配置は、例えば、後述のファイルシステム部１４またはメモリ管理部１５が行う。また、当該配置は、例えば、アドレス空間配置部（図示せず）が行ってもよい。
【００２７】
また、ＮＶメモリ１１と、揮発性メモリ１２とには、通常、重複する物理アドレスが割り当てられることはない。
【００２８】
受付部１３は、指示や情報などを受け付ける。指示は、例えば、プログラムの実行の指示や、プロセスの実行の指示、プログラムやプロセスへのメモリ割当の指示、ファイル操作の指示などである。また、情報は、例えば、いわゆるコマンドや、当該コマンドに与える引数などである。また、これらの指示や情報は、通常、指示や情報を出力するプログラムが出力する。
【００２９】
ファイルシステム部１４は、いわゆるファイルシステムである。当該ファイルシステムは、例えば、ＰＲＡＭＦＳ（Ｐｅｒｓｉｓｔｅｎｔ  ａｎｄ  Ｐｒｏｔｅｃｔｅｄ  ＲＡＭ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）や、Ｅｘｔ２（Ｓｅｃｏｎｄ  Ｅｘｔｅｎｄｅｄ  Ｆｉｌｅｓｙｓｔｅｍ）、ＳＣＭＦＳ（Ａ  Ｆｉｌｅ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ）などである。また、当該ファイルシステムは、ＸＩＰ（ｅＸｅｃｕｔｅ−Ｉｎ−Ｐｌａｃｅ）をサポートしており、ＮＶメモリ１１を対象としたファイルシステムであれば、何でもよい。つまり、ファイルシステム部１４は、ＮＶメモリ１１を、いわゆるストレージとして使用する。また、ファイルシステム部１４は、通常、ＮＶメモリ１１を１以上の単位領域に分割し、当該一の単位領域を、ブロックとして使用する。
【００３０】
また、ファイルシステム部１４は、例えば、一のファイルをＮＶメモリ１１に書き込む場合、まず、当該一のファイルを、どの１以上のブロックに割り当てるのかを決定する。そして、ファイルシステム部１４は、当該一のファイルを、当該割り当てたブロックごとに分割し、ＮＶメモリ１１に書き込む。
【００３１】
また、一のファイルをＮＶメモリ１１に書き込んだ場合、ファイルシステム部１４は、通常、書き込んだファイルの識別子（以下、適宜、ファイル識別子）と、書込み先のブロックを識別するブロック識別子との対応を示すファイル管理情報を、任意の記憶領域または所定の記憶領域などに蓄積する。ファイル識別子は、例えば、ＩＤや、いわゆるファイル名などである。また、ファイル識別子は、ファイルを識別することができれば、その形式や内容などは、問わない。
【００３２】
また、ファイルシステム部１４は、例えば、一のファイルをＮＶメモリ１１から読み出す場合、まず、当該一のファイルが書き込まれている１以上のブロックを識別するブロック識別子を、ファイル管理情報から取得する。そして、ファイルシステム部１４は、取得した１以上のブロックの識別子が示すブロックから、１以上に分割されたファイルのデータを取得する。そして、ファイルシステム部１４は、取得した１以上のデータを結合し、ファイルを取得する。
【００３３】
また、ファイルシステム部１４は、例えば、一のファイルをＮＶメモリ１１から削除する場合、まず、当該一のファイルが書き込まれている１以上のブロックを識別するファイル識別子を、ファイル管理情報から取得する。そして、ファイルシステム部１４は、取得した１以上のブロックの識別子が示すブロックから、データを消去する。なお、当該「消去」には、通常、当該ファイル管理情報を削除することも含まれる。また、当該「消去」は、例えば、後述の領域情報を更新すること（使用領域であることを示す領域情報を、空き領域であることを示す領域情報に書き換える）ことであってもよい。
【００３４】
また、一のファイルをＮＶメモリ１１から削除した場合、ファイルシステム部１４は、通常、削除したファイルを識別するファイル識別子と、当該削除先のブロックを識別するブロック識別子との対応を示す情報を、当該情報を蓄積した任意の記憶領域や所定の記憶領域などから消去する。
【００３５】
なお、ファイルシステムは、公知の技術であるので、ファイルシステム部１４が行う処理や動作については、適宜、説明を省略する。また、ファイルシステム部１４は、例えば、ＮＶメモリ１１におけるファイルの管理や、空き領域の管理、ＮＶメモリ１１へのファイルの書込み、ＮＶメモリ１１からのファイルの読出しなどを、通常、後述の各手段により行う。
【００３６】
ファイル管理情報格納手段１４１には、ファイルを識別するファイル識別子と、当該ファイルに対応する１以上の論理アドレスとを有する１以上のファイル管理情報が格納される。当該論理アドレスは、物理アドレスであってもよい。
【００３７】
変換情報格納手段１４２には、論理アドレスを物理アドレスに変換するための変換情報が格納される。変換情報は、例えば、論理アドレスを代入することで、物理アドレスを算出する変換式や、一の論理アドレスと一の物理アドレスとの対応表、一の論理アドレスに対するオフセットなどである。変換情報は、後述のアドレス変換手段１４４が、一の論理アドレスを一の物理アドレスに変換するために用いる情報である。また、変換情報は、論理アドレスを物理アドレスに変換することができる情報であれば、その形式や内容などは、問わない。また、変換情報は、例えば、物理アドレスを論理アドレスに変換するための情報であってもよい。
【００３８】
領域情報格納手段１４３には、１以上の領域情報が格納される。領域情報とは、ＮＶメモリ１１において使用されていない１以上の単位領域である空き領域を示す情報である。なお、領域情報は、ＮＶメモリ１１において使用されている１以上の単位領域である使用領域を示す情報であってもよい。つまり、領域情報は、空き領域を示してもよいし、使用領域を示してもよい。
【００３９】
領域情報は、通常、一の論理アドレスと、フラグとを有する。当該論理アドレスは、物理アドレスであってもよい。また、当該フラグは、当該一の論理アドレスで識別される単位領域が、空き領域であるか、または使用領域であるかを示す。当該フラグは、例えば、空き領域を示す場合は「０」、使用領域を示す場合は「１」である。また、当該フラグは、例えば、空き領域を示す場合は「○」、使用領域を示す場合は「×」である。また、領域情報は、２つの論理アドレスを有していてもよい。この場合、領域情報は、当該２つの論理アドレスで示される論理アドレスの範囲に対応する単位領域が、空き領域であること、または使用領域であることを示す。
【００４０】
アドレス変換手段１４４は、一の論理アドレスを、変換情報格納手段１４２に格納されている変換情報を用いて、一の物理アドレスに変換する。当該「変換」には、通常、一の論理アドレスに対応する一の物理アドレスを、当該変換情報を用いて取得することも含まれる。また、アドレス変換手段１４４は、通常、一のファイルに対応する１以上の各論理アドレスを、変換情報を用いて１以上の物理アドレスに変換する。当該ファイルは、例えば、ＮＶメモリ１１に書き込むことを要求されたファイルや、ＮＶメモリ１１から読み出すことを要求されたファイルなどである。なお、当該書込みを要求する指示や、当該読出しを要求する指示は、通常、受付部１３が受け付ける。また、当該指示は、通常、ファイル識別子を有する。
【００４１】
アドレス変換手段１４４は、例えば、まず、受付部１３が受け付けた指示が有するファイル識別子を取得する。そして、アドレス変換手段１４４は、当該取得したファイル識別子に対応する論理アドレスを、ファイル管理情報格納手段１４１から取得する。そして、アドレス変換手段１４４は、当該取得した論理アドレスから、変換情報格納手段１４２に格納されている変換情報を用いて、物理アドレスを取得する。
【００４２】
例えば、変換情報が変換式である場合、アドレス変換手段１４４は、論理アドレスを当該変換式に代入し、物理アドレスを取得する。また、例えば、変換情報が対応表である場合、アドレス変換手段１４４は、論理アドレスに対応する物理アドレスを、当該対応表から取得する。また、例えば、変換情報がオフセットである場合、アドレス変換手段１４４は、論理アドレスに当該オフセットを加算し、物理アドレスを取得する。
【００４３】
また、アドレス変換手段１４４は、例えば、変換情報を用いて、物理アドレスを論理アドレスに変換してもよい。物理アドレスを論理アドレスに変換する方法や手順などは、論理アドレスを物理アドレスに変換する方法や手順などと同様であるので、説明を省略する。
【００４４】
書込手段１４５は、書込みが要求されたファイルを、ＮＶメモリに書き込む。これは、例えば、受付部１３が受け付けたファイル書込指示が有するファイル識別子に対応するデータを、ファイルとしてＮＶメモリに書き込むことである。
【００４５】
書込手段１４５は、例えば、書込みが要求されたファイルを、領域情報格納手段１４３に格納されている領域情報が示す空き領域のうち、どの１以上のブロックに書き込むのかを決定する。当該決定とは、書込先の１以上の各ブロックに対応する１以上の論理アドレスを取得することである。また、当該決定の方法は、問わない。書込手段１４５は、例えば、書込みが要求されたファイルのサイズに該当する１以上の連続する空き領域、または１以上の連続しない（不連続の）空き領域を検索し、当該空き領域に対応する論理アドレスを取得する。そして、書込手段１４５は、当該取得した１以上の論理アドレスをアドレス変換手段１４４に渡し、当該１以上の各論理アドレスに対応する１以上の物理アドレスを、アドレス変換手段１４４から取得する。そして、書込手段１４５は、当該ファイルを、当該取得した１以上の各物理アドレスに対応するブロックごとに分割し、当該分割したファイルを、各ブロックに書き込む。そして、書込手段１４５は、書き込んだファイルを識別するファイル識別子と、書き込んだ１以上の各ブロックに対応する論理アドレスとを対応付け、ファイル管理情報を作成する。そして、書込手段１４５は、当該ファイル管理情報をファイル管理情報格納手段１４１に蓄積する。また、この場合、書込手段１４５は、例えば、後述の領域検出手段１４７に、書き込んだファイルに対応する１以上の論理アドレスを、後述の領域検出手段１４７に渡してもよい。
【００４６】
読出手段１４６は、読出しが要求されたファイルを、ＮＶメモリから読み出す。これは、例えば、受付部１３が受け付けたファイル読出指示が有するファイル識別子に対応するデータを、ファイルとしてＮＶメモリから読み出すことである。
【００４７】
読出手段１４６は、例えば、読出しが要求されたファイルを識別するファイル識別子に対応する１以上の論理アドレスを、ファイル管理情報格納手段１４１から取得する。そして、読出手段１４６は、当該取得した１以上の論理アドレスをアドレス変換手段１４４に渡し、当該１以上の各論理アドレスに対応する１以上の物理アドレスを、アドレス変換手段１４４から取得する。そして、読出手段１４６は、当該１以上の各物理アドレスに対応するブロックから、データを読み出す。そして、読出手段１４６は、読み出した１以上のデータを結合し、ファイルとして取得する。
【００４８】
また、読出手段１４６は、例えば、削除が要求されたファイルを、ＮＶメモリから削除してもよい。この場合、削除の対象となるファイルに対応する１以上の物理アドレスの取得の方法や手順などは、読出しの対象となるファイルに対応する１以上の物理アドレスの取得の方法や手順などと同様であるので、説明を省略する。そして、読出手段１４６は、取得した１以上の物理アドレスに対応するブロックから、データを消去する。そして、読出手段１４６は、ファイル管理情報格納手段１４１から、当該削除するファイルに対応するファイル管理情報を削除する。また、この場合、読出手段１４６は、例えば、後述の領域検出手段１４７に、削除したファイルに対応する１以上の論理アドレスを、後述の領域検出手段１４７に渡してもよい。また、当該ファイルの削除は、図示しないファイル削除手段が行ってもよい。
【００４９】
領域検出手段１４７は、ＮＶメモリ１１の空き領域を検出する。そして、領域検出手段１４７は、当該空き領域を示す領域情報を、領域情報格納手段１４３に蓄積する。領域検出手段１４７は、例えば、ＮＶメモリ１１が有する１以上の各単位領域が、空き領域であるか否かを判断する。そして、領域検出手段１４７は、空き領域であると判断した１以上の各単位領域に対応する１以上の物理アドレスを取得する。そして、領域検出手段１４７は、当該１以上の物理アドレスをアドレス変換手段１４４に渡し、当該１以上の各物理アドレスに対応する１以上の論理アドレスを取得する。そして、領域検出手段１４７は、当該１以上の各論理アドレスと、空き領域であることを示すフラグとを対応付け、領域情報を作成する。そして、領域検出手段１４７は、当該領域情報を領域情報格納手段１４３に蓄積する。当該蓄積は、いわゆる追記や、上書き、更新などを含む概念である。また、領域検出手段１４７は、空き領域ではなく、使用領域を検出してもよい。
【００５０】
また、領域検出手段１４７は、例えば、新たに空き領域となった単位領域、または新たに使用領域となった単位領域を検出してもよい。新たに空き領域となった単位領域を検出する場合、領域検出手段１４７は、例えば、領域情報格納手段１４３に格納されている領域情報から、使用領域である１以上の単位領域を特定する。そして、領域検出手段１４７は、当該使用領域である１以上の単位領域が空き領域であるか否かを判断する。そして、領域検出手段１４７は、空き領域であると判断した１以上の各単位領域に対応する１以上の領域情報を作成し、当該領域情報を領域情報格納手段１４３に蓄積する。また、新たに使用領域となった単位領域を検出する場合、領域検出手段１４７は、例えば、領域情報格納手段１４３に格納されている領域情報から、空き領域である１以上の単位領域を特定する。そして、領域検出手段１４７は、当該空き領域である１以上の単位領域が使用領域であるか否かを判断する。そして、領域検出手段１４７は、使用領域であると判断した１以上の各単位領域に対応する１以上の領域情報を作成し、当該領域情報を領域情報格納手段１４３に蓄積する。なお、領域情報の作成の方法や手順などは、上記と同様であるので、説明を省略する。
【００５１】
また、領域検出手段１４７は、例えば、書込手段１４５がファイルを書き込んだ後や、読出手段１４６がファイルを削除した後、後述のメモリ管理部１５がプロセスに領域を割り当てた後、後述のメモリ管理部１５が領域を解放した後など、所定のタイミングにて、空き領域を検出する。
【００５２】
また、例えば、書込手段１４５から１以上の論理アドレスを受け取った場合、領域検出手段１４７は、当該１以上の各論理アドレスと、使用領域であることを示すフラグとを対応付け、１以上の領域情報を作成し、当該領域情報を領域情報格納手段１４３に蓄積する。また、例えば、読出手段１４６から１以上の論理アドレスを受け取った場合、領域検出手段１４７は、当該１以上の各論理アドレスと、空き領域であることを示すフラグとを対応付け、１以上の領域情報を作成し、当該領域情報を領域情報格納手段１４３に蓄積する。
【００５３】
また、例えば、領域情報「（０ｘ００００００００｜０），（０ｘ０００００００１｜０），（０ｘ０００００００２｜０）」が領域情報格納手段１４３に既に格納されているとする。当該領域情報は、論理アドレス「０ｘ００００００００」から「０ｘ０００００００２」までに対応するブロックが空き領域であることを意味する。また、領域検出手段１４７が領域情報「（０ｘ００００００００｜０），（０ｘ０００００００１｜１），（０ｘ０００００００２｜１）」を取得したとする。当該領域情報は、論理アドレス「０ｘ００００００００」から「０ｘ０００００００２」までに対応するブロックにおいて、論理アドレス「０ｘ００００００００」に対応するブロックのみが空き領域であることを意味する。この様な場合、領域検出手段１４７は、既に格納されている領域情報を、取得した領域情報で上書きする。
【００５４】
また、例えば、領域情報「０ｘ００００００００〜０ｘ０００００００２」が領域情報格納手段１４３に既に格納されているとする。当該領域情報は、論理アドレス「０ｘ００００００００」から「０ｘ０００００００２」までに対応するブロックが空き領域であることを意味する。また、領域検出手段１４７が領域情報「０ｘ０００００００３〜０ｘ０００００００５」を取得したとする。当該領域情報の意味は、上記と同様であるので、説明を省略する。この様な場合、領域検出手段１４７は、既に格納されている領域情報を「０ｘ００００００００〜０ｘ０００００００５」に書き換える。
【００５５】
以上より、領域情報格納手段１４３への領域情報の蓄積は、通常、領域検出手段１４７が行う。従って、例えば、単位領域にデータが保存されているが、見かけ上は当該単位領域を空き領域として使用する場合（単位領域からデータは削除せずに、管理上は当該単位領域を空き領域として使用する場合）は、読出手段１４６が、削除の対象となるファイルに対応する１以上の論理アドレスを取得し、領域検出手段１４７が、当該１以上の論理アドレスに空き領域であることを示すフラグを対応付け、領域情報格納手段１４３に蓄積する。
【００５６】
メモリ管理部１５は、いわゆるメモリ管理を行う。メモリ管理とは、例えば、実行が要求されたプロセスに対し、ＮＶメモリ１１の１以上の単位領域を割り当てることや、実行中のプロセスからの要求に応じて、ＮＶメモリ１１の１以上の単位領域を割り当てること、不要となったＮＶメモリ１１の１以上の単位領域を、空き領域として解放することなどである。つまり、メモリ管理部１５は、ＮＶメモリ１１を、いわゆるメインメモリとして使用する。また、メモリ管理部１５は、通常、ＮＶメモリ１１を１以上の単位領域に分割し、当該一の単位領域を、ページとして管理する。
【００５７】
なお、メモリ管理は、公知の技術であるので、メモリ管理部１５が行う処理や動作については、適宜、説明を省略する。また、メモリ管理部１５は、例えば、プロセスなどへのページの割り当てや、割り当てたページの解放などを、通常、後述の各手段により行う。
【００５８】
領域判断手段１５１は、ＮＶメモリ１１の空き領域の有無を判断する。このとき、領域判断手段１５１は、通常、実行が要求されたプロセスが要求するサイズと同サイズの空き領域の有無を判断する。また、領域判断手段１５１は、通常、ＮＶメモリ１１のすべての領域を、ファイルシステム部１４が使用しているか否かを判断する。領域判断手段１５１は、通常、これらの判断を、ファイル管理情報格納手段１４１に格納されているファイル管理情報、および領域情報格納手段１４３に格納されている領域情報を用いて判断する。つまり、領域判断手段１５１は、通常、領域情報格納手段１４３に格納されている領域情報により、ＮＶメモリ１１のすべての領域が使用領域であるか否かを判断する。そして、領域判断手段１５１は、ＮＶメモリ１１のすべての領域が使用領域である場合、ファイル管理情報格納手段１４１に格納されているファイル管理情報により、当該すべての使用領域にファイルが書き込まれているか否かを判断する。
【００５９】
メモリ管理手段１５２は、実行が要求されたプロセスに対し、ＮＶメモリ１１が有する１以上のページを割り当てる。当該プロセスは、通常、いわゆるユーザが実行などを要求したユーザプロセスである。また、当該「割り当てる」とは、当該プロセスのために当該１以上のページを確保することや、当該プロセスに対し当該１以上のページを使用することを許可することなどである。また、このとき、メモリ管理手段１５２は、通常、当該１以上のページを識別する論理アドレスを、当該プロセスに送信する。また、当該論理アドレスは、物理アドレスであってもよい。
【００６０】
また、メモリ管理手段１５２は、例えば、所定のタイミングで、上記プロセスに割り当てた１以上のページを解放する。当該「解放する」とは、当該１以上のページを、空き領域とすることである。また、所定のタイミングとは、例えば、プロセス実行の終了時や、正常終了時、再起動時などである。また、メモリ管理手段１５２は、例えば、当該ページの解放後に、解放した旨を、領域検出手段１４７に通知してもよい。また、メモリ管理手段１５２は、例えば、当該ページの解放後に、当該ページが空き領域であることを示す領域情報を、領域情報格納手段１４３に蓄積してもよい。
【００６１】
また、例えば、領域判断手段１５１が、ＮＶメモリ１１に空き領域がないと判断した場合、メモリ管理手段１５２は、実行が要求されたプロセスに対し、揮発性メモリ１２が有する１以上のページを割り当てる。
【００６２】
また、メモリ管理手段１５２は、例えば、メモリ管理ユニット（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ、ＭＭＵ）を含むと考えてもよいし、そうでないと考えてもよい。また、メモリ管理手段１５２は、例えば、ファイルシステム部１４を介して、ＮＶメモリ上の領域の確保や、その解放を行ってもよい。
【００６３】
また、ファイルシステム部１４、ファイル管理情報格納手段１４１、変換情報格納手段１４２、領域情報格納手段１４３、アドレス変換手段１４４、書込手段１４５、読出手段１４６、領域検出手段１４７、メモリ管理部１５、領域判断手段１５１、メモリ管理手段１５２は、通常、ＭＰＵやメモリ等から実現され得る。ファイルシステム部１４の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現してもよい。
【００６４】
次に、情報処理装置１の全体動作について、図２のフローチャートを用いて説明する。
【００６５】
（ステップＳ２０１）ファイルシステム部１４は、ＮＶメモリ１１、および揮発性メモリ１２を、同一の物理アドレス空間に配置する。当該配置は、メモリ管理部１５が行ってもよい。
【００６６】
（ステップＳ２０２）書込手段１４５は、受付部１３が指示を受け付けたか否かを判断する。受け付けた場合は、ステップＳ２０３に進み、そうでない場合は、ステップＳ２１５に進む。
【００６７】
（ステップＳ２０３）書込手段１４５は、ステップＳ２０２で受け付けた指示がファイル書込指示であるか否かを判断する。ファイル書込指示である場合は、ステップＳ２０４に進み、そうでない場合は、ステップＳ２０８に進む。
【００６８】
（ステップＳ２０４）書込手段１４５は、ステップＳ２０２で受け付けたファイル書込指示に対応するファイルを書き込むための１以上のブロックを確保する。当該「確保する」とは、当該１以上の各ブロックに対応する１以上の論理アドレスを取得することである。
【００６９】
（ステップＳ２０５）アドレス変換手段１４４は、変換情報格納手段１４２に格納されている変換情報を用いて、ステップＳ２０４で取得した１以上の論理アドレスを、１以上の物理アドレスに変換する。
【００７０】
（ステップＳ２０６）書込手段１４５は、ステップＳ２０５で取得した１以上の物理アドレスで識別される単位領域にファイルを書き込む。
【００７１】
（ステップＳ２０７）書込手段１４５は、ステップＳ２０６で書き込んだファイルの識別子と、ステップＳ２０４で取得した１以上の論理アドレスとを対応付け、ファイル管理情報としてファイル管理情報格納手段１４１に蓄積する。
【００７２】
（ステップＳ２０８）読出手段１４６は、ステップＳ２０２で受け付けた指示がファイル読出指示であるか否かを判断する。ファイル読出指示である場合は、ステップＳ２０９に進み、そうでない場合は、ステップＳ２１２に進む。
【００７３】
（ステップＳ２０９）読出手段１４６は、ステップＳ２０２で受け付けたファイル読出指示に対応する１以上の論理アドレスを、ファイル管理情報格納手段１４１から取得する。
【００７４】
（ステップＳ２１０）アドレス変換手段１４４は、ステップＳ２０９で取得した１以上の論理アドレスを、１以上の物理アドレスに変換する。
【００７５】
（ステップＳ２１１）読出手段１４６は、ステップＳ２１０で取得した１以上の物理アドレスで識別される単位領域からファイルを読み出す。
【００７６】
（ステップＳ２１２）読出手段１４６は、ステップＳ２０２で受け付けた指示がファイル削除指示であるか否かを判断する。ファイル削除指示である場合は、ステップＳ２１３に進み、そうでない場合は、ステップＳ２１７に進む。
【００７７】
（ステップＳ２１３）読出手段１４６は、ステップＳ２０２で受け付けたファイル削除指示に対応する１以上の論理アドレスを、ファイル管理情報格納手段１４１から取得する。
【００７８】
（ステップＳ２１４）アドレス変換手段１４４は、ステップＳ２１３で取得した１以上の論理アドレスを、１以上の物理アドレスに変換する。
【００７９】
（ステップＳ２１５）読出手段１４６は、ステップＳ２１４で取得した１以上の物理アドレスで識別される単位領域からファイルを削除する。
【００８０】
（ステップＳ２１６）読出手段１４６は、ステップＳ２１５で削除したファイルの識別子と、ステップＳ２１３で取得した１以上の論理アドレスとを有するファイル管理情報を、ファイル管理情報格納手段１４１から削除する。
【００８１】
（ステップＳ２１７）メモリ管理部１５は、ステップＳ２０２で受け付けた指示がプロセス実行指示であるか否かを判断する。プロセス実行指示である場合は、ステップＳ２１８に進み、そうでない場合は、ステップＳ２０２に戻る。
【００８２】
（ステップＳ２１８）領域判断手段１５１は、ＮＶメモリ１１に空き領域が存在するか否かを判断する。存在する場合は、ステップＳ２１９に進み、そうでない場合は、ステップＳ２２０に進む。
【００８３】
（ステップＳ２１９）メモリ管理手段１５２は、ステップＳ２０２で受け付けたプロセス実行指示に対応するプロセスを実行するための１以上のページを、ＮＶメモリ１１から確保する。当該「確保する」とは、当該ＮＶメモリ１１の１以上の各ページに対応する１以上の論理アドレスを取得することである。
【００８４】
（ステップＳ２２０）メモリ管理手段１５２は、ステップＳ２０２で受け付けたプロセス実行指示に対応するプロセスを実行するための１以上のページを、揮発性メモリ１２から確保する。当該「確保する」とは、当該揮発性メモリ１２の１以上の各ページに対応する１以上の論理アドレスを取得することである。
【００８５】
（ステップＳ２２１）アドレス変換手段１４４は、ステップＳ２１９またはステップＳ２２０で取得した１以上の論理アドレスを、１以上の物理アドレスに変換する。
【００８６】
（ステップＳ２２２）メモリ管理手段１５２は、ステップＳ２２１で取得した１以上の各物理アドレスで識別される１以上の単位領域を、ステップＳ２０２で受け付けたプロセス実行指示に対応するプロセスに割当て、当該プロセスを実行する。
【００８７】
（ステップＳ２２３）領域検出手段１４７およびメモリ管理手段１５２は、空き領域の検出および領域の解放を行う。この処理の詳細は、図３のフローチャートを用いて説明する。
【００８８】
なお、図２のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【００８９】
また、図２のフローチャートにおいて、領域判断手段１５１は、ＮＶメモリ１１に空き領域が存在するか否かを判断しなくてもよい。この場合、図２のステップＳ２１７において、ステップＳ２０２で受け付けた指示がプロセス実行指示である場合は、ステップＳ２１９に進む。
【００９０】
図３は、図２のフローチャートのステップＳ２２３の空き領域の検出と領域の解放処理を示すフローチャートである。
【００９１】
（ステップＳ３０１）領域検出手段１４７は、ＮＶメモリ１１の空き領域の検出のタイミングであるか否かを判断する。検出のタイミングである場合は、ステップＳ３０２に進み、そうでない場合は、ステップＳ３０４に進む。
【００９２】
（ステップＳ３０２）領域検出手段１４７は、ＮＶメモリ１１の空き領域を検出し、当該空き領域を示す領域情報を取得する。
【００９３】
（ステップＳ３０３）領域検出手段１４７は、ステップＳ３０２で取得した領域情報を領域情報格納手段１４３に蓄積する。
【００９４】
（ステップＳ３０４）メモリ管理手段１５２は、プロセスに割り当てた１以上の単位領域である割当領域の解放のタイミングであるか否かを判断する。解放のタイミングである場合は、ステップＳ３０５に進み、そうでない場合は、上位処理にリターンする。
【００９５】
（ステップＳ３０５）メモリ管理手段１５２は、プロセスに割り当てた１以上の単位領域である割当領域を解放する。そして、上位処理にリターンする。
【００９６】
（具体例）
次に、情報処理装置１の動作の具体例について説明する。なお、本具体例において、ＮＶメモリ１１と揮発性メモリ１２とは、同一の物理アドレス空間に配置されているものとする。また、ＮＶメモリ１１と揮発性メモリ１２とは、それぞれ、サイズが４ＫＢである１以上の単位領域を有しているものとする。
【００９７】
（例１）
本例において、変換情報格納手段１４２には、図４に示す変換情報が格納されているものとする。当該変換情報は、レコードを一意に特定するためのＩＤと、論理アドレスと、物理アドレスとを有する。また、領域情報格納手段１４３には、図５に示す領域情報が格納されているものとする。当該領域情報は、レコードを一意に特定するためのＩＤと、論理アドレスと、空き領域であるか否かを示すフラグ（項目名：空き）とを有する。当該フラグは、「０」は空き領域であることを示し、「１」は空き領域でない（使用領域である）ことを示す。また、図４および図５における一の論理アドレス（物理アドレス）は、ＮＶメモリ１１の一の単位領域（以下、適宜、ブロック）を識別するものである。
【００９８】
まず、ユーザが、情報処理装置１を操作し、ファイル名が「ｖ＿ｉｍｇ」である１０ＫＢのファイルを作成するための操作を行ったとする。すると、受付部１３は、当該ファイル名を有するファイル書込指示を受け付ける。
【００９９】
次に、書込手段１４５は、書き込むファイルのサイズが１０ＫＢであるので、図５の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの論理アドレスで識別されるブロックを、書き込むファイルの領域として確保する。このとき、書込手段１４５は、当該３つの論理アドレスと、使用領域であることを示すフラグ「１」とを対応付け、領域情報を作成し、当該領域情報を領域情報格納手段１４３に蓄積してもよい。
【０１００】
次に、アドレス変換手段１４４は、図５の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの各論理アドレスに対応する物理アドレスを、図４の変換情報から取得する。そして、アドレス変換手段１４４は、図４の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの物理アドレスを取得する。
【０１０１】
次に、書込手段１４５は、図４の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの各物理アドレスで識別される単位領域に、書込対象のファイルを書き込む。書込手段１４５は、例えば、書込対象のファイルを４ＫＢずつのデータに分割する（４ＫＢ、４ＫＢ、２ＫＢの３つのデータに分割する）。そして、書込手段１４５は、当該３つのデータを、当該３つの単位領域のそれぞれに書き込む。
【０１０２】
次に、書込手段１４５は、当該ファイルのファイル名「ｖ＿ｉｍｇ」と、確保した３つの論理アドレス「０ｘＦ００００００１」、「０ｘＦ００００００２」、「０ｘＦ００００００３」とを対応付け、ファイル管理情報としてファイル管理情報格納手段１４１に蓄積する。当該ファイル管理情報は、例えば、図６である。
【０１０３】
次に、領域検出手段１４７は、書込手段１４５がファイルをＮＶメモリに書き込んだので、空き領域の検出のタイミングであると判断し、ＮＶメモリ１１の空き領域を検出する。そして、領域検出手段１４７は、３つの物理アドレス「０ｘ１００００００１」、「０ｘ１００００００２」、「０ｘ１００００００３」のそれぞれで識別される単位領域が使用領域であることを示す領域情報を取得する。そして、領域検出手段１４７は、当該取得した領域情報を、領域情報格納手段１４３に蓄積する。この結果、領域情報格納手段１４３に格納されている領域情報は、図７となる。図７において、「ＩＤ＝０１１」から「ＩＤ＝０１３」までの領域情報が、領域検出手段１４７が取得した領域情報である。
【０１０４】
次に、ユーザが、情報処理装置１を操作し、ファイル名が「ｖ＿ｉｍｇ」であるファイルを読み出すための操作を行ったとする。すると、受付部１３は、当該ファイル名を有するファイル読出指示を受け付ける。
【０１０５】
次に、読出手段１４６は、ファイル名「ｖ＿ｉｍｇ」に対応する論理アドレスを、図６のファイル管理情報から取得する。そして、読出手段１４６は、図６のファイル管理情報から、「０ｘＦ００００００１」、「０ｘＦ００００００２」、「０ｘＦ００００００３」の３つの論理アドレスを取得する。
【０１０６】
次に、アドレス変換手段１４４は、図６の「ＩＤ＝００１」のレコードが有する３つの各論理アドレスに対応する物理アドレスを、図４の変換情報から取得する。そして、アドレス変換手段１４４は、図４の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの物理アドレスを取得する。
【０１０７】
次に、読出手段１４６は、図４の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの各物理アドレスで識別される単位領域から、ファイルを読み出す。読出手段１４６は、例えば、当該３つの各単位領域からデータを取得し、当該３つのデータを結合し、ファイルとして取得する。
【０１０８】
次に、ユーザが、情報処理装置１を操作し、ファイル名が「ｖ＿ｉｍｇ」であるファイルを削除するための操作を行ったとする。すると、受付部１３は、当該ファイル名を有するファイル削除指示を受け付ける。なお、当該ファイルに対応する物理アドレスの取得の方法は、上記と同様であるので、説明を省略する。
【０１０９】
次に、読出手段１４６は、図４の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの各物理アドレスで識別される単位領域から、データを削除する。このとき、読出手段１４６は、当該３つの各物理アドレスに対応する３つの論理アドレスと、空き領域であることを示すフラグ「０」とを対応付け、領域情報を作成し、当該領域情報を領域情報格納手段１４３に蓄積してもよい。
【０１１０】
次に、領域検出手段１４７は、読出手段１４６がファイルをＮＶメモリから削除したので、空き領域の検出のタイミングであると判断し、ＮＶメモリ１１の空き領域を検出する。そして、領域検出手段１４７は、３つの物理アドレス「０ｘ１００００００１」、「０ｘ１００００００２」、「０ｘ１００００００３」のそれぞれで識別される単位領域が、上記の削除により新たに空き領域となったことを示す領域情報を取得する。そして、領域検出手段１４７は、当該取得した領域情報を、領域情報格納手段１４３に蓄積する。この結果、領域情報格納手段１４３に格納されている領域情報は、図５となる。
【０１１１】
（例２）
本例において、変換情報格納手段１４２には、図４に示す変換情報が格納されているものとする。また、領域情報格納手段１４３には、図５に示す領域情報が格納されているものとする。また、例１について説明した処理や動作などについては、適宜、説明を省略する。
【０１１２】
まず、ユーザが、情報処理装置１を操作し、プログラム名が「ｐｇ＿ｓａｍｐｌｅ」であり、実行に１０ＫＢの領域を使用するプログラムを実行するための操作を行ったとする。当該プログラムは、例えば、ＮＶメモリに格納されていてもよいし、揮発性メモリ１２に格納されていてもよい。また、以下、当該プログラムを、プロセスと呼ぶこととする。すると、受付部１３は、当該プログラム名を有するプロセス実行指示を受け付ける。
【０１１３】
次に、領域判断手段１５１は、ＮＶメモリ１１に空き領域があるか否かを判断し、空き領域があると判断する。
【０１１４】
次に、メモリ管理手段１５２は、実行するプロセスが使用する領域が１０ＫＢであるので、図５の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの論理アドレスで識別されるページを、実行するプロセスが使用する領域として確保する。そして、アドレス変換手段１４４は、当該３つの各論理アドレスに対応する３つの物理アドレスを取得する。
【０１１５】
次に、メモリ管理手段１５２は、図４の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの各物理アドレスで識別される単位領域を、実行するプロセスに割り当てる。そして、メモリ管理手段１５２は、プロセスを実行する。
【０１１６】
次に、領域検出手段１４７は、空き領域の検出のタイミングであると判断し、ＮＶメモリの空き領域を検出し、領域情報を取得する。そして、領域検出手段１４７は、当該取得した領域情報を、領域情報格納手段１４３に蓄積する。この結果、領域情報格納手段１４３に格納されている領域情報は、図７となる。
【０１１７】
次に、ユーザが、情報処理装置１を操作し、情報処理装置１の電源をＯＦＦにする操作を行ったとする。すると、受付部１３は、電源をＯＦＦにする指示である電源ＯＦＦ指示を受け付ける。
【０１１８】
次に、メモリ管理手段１５２は、実行中のプロセスを強制終了する。そして、メモリ管理手段１５２は、当該プロセスに割り当てていた単位領域であり、図４の「ＩＤ＝０１１」から「ＩＤ＝０１３」の３つの各物理アドレスで識別される単位領域を解放する。
【０１１９】
次に、領域検出手段１４７は、空き領域の検出のタイミングであると判断し、ＮＶメモリの空き領域を検出し、領域情報を取得する。そして、領域検出手段１４７は、当該取得した領域情報を、領域情報格納手段１４３に蓄積する。この結果、領域情報格納手段１４３に格納されている領域情報は、図５となる。
【０１２０】
また、例えば、上記において、領域判断手段１５１が、ＮＶメモリ１１に空き領域があるか否かを判断し、空き領域がないと判断したとする。この場合、メモリ管理手段１５２は、揮発性メモリ１２の３つのページを、実行するプロセスが使用する領域として確保する。そして、メモリ管理手段１５２は、当該３つの各ページを識別する３つの論理アドレスを取得する。
【０１２１】
（例３）
本例において、情報処理装置１の具体的な実現方法について説明する。なお、本例において、ＮＶメモリ１１は、単に「ＮＶメモリ」と表記し、揮発性メモリ１２は、ＤＲＡＭであるものとする。また、情報処理装置１は、Ｌｉｎｕｘ（登録商標）カーネル（以下、カーネル）であるものとする。
【０１２２】
まず、エミュレータを用いて、ＮＶメモリ１１をメインメモリとして持つシステムをエミュレーションする。また、ＮＶメモリ１１をメインメモリとして使用する場合、広い物理アドレス空間を持つ６４ビット環境である方が望ましい。当該条件を満たすエミュレータは、例えば、ＱＥＭＵ（http://wiki.qemu.org/Main_Page）である。
【０１２３】
次に、ＮＶメモリの内容を保存するファイル「ｎｖｍｅｍｏｒｙ．ｉｍｇ」を用意する。そして、図８に示すコマンドを実行し、ＱＥＭＵを起動する。当該コマンドにより、１２８ＭＢ（メガバイト）のＤＲＡＭの領域が確保され、また、ファイル「ｎｖｍｅｍｏｒｙ．ｉｍｇ」のすべてが、ＮＶメモリとして物理アドレス「０ｘ１０００００００」からの領域にマッピングされた状態で、ＱＥＭＵが起動される。この結果、ＤＲＡＭのＮＶメモリは、図９の様に、物理アドレス空間に配置される。なお、ここで、カーネルは、ＤＲＡＭに格納されているものとし、ＤＲＡＭ上で展開し、ブート（起動）するものとする。
【０１２４】
次に、図１０は、カーネルにおける仮想記憶システム、メモリアロケータ、ファイルシステムの関係を示す図である。図１０において、仮想記憶システム（Ｖｉｔｒｕａｌ  Ｍｅｍｏｒｙ）は、ファイルシステム部１４、およびメモリ管理部１５が使用する仮想的なメモリであり、通常、論理アドレス空間である。また、メモリアロケータは、メモリ管理部１５、変換情報格納手段１４２、アドレス変換手段１４４に相当する。また、ファイルシステム（ＰＲＡＭＦＳ）は、ファイルシステム部１４に相当し、図１０の様に、通常、ＮＶメモリ上に構築される。また、当該ファイルシステムのブロックサイズは、メインメモリのページサイズである４ＫＢとする。
【０１２５】
また、ファイルシステムは、ＮＶメモリの領域管理の基盤として使用する。つまり、ファイルシステムがＮＶメモリの空き領域を管理し、メモリアロケータによる領域の確保および解放は、ファイルシステムを介して行う。
【０１２６】
また、単純なブロック単位でのファイルシステムからの領域の割り当てでは、性能への影響が大きい。従って、例えば、ファイルシステムからの領域確保は、まとめて行い、余った少数の領域をフリーリストにキャッシュする方法を採用してもよい。この方式では、領域確保と解放は次のように行う。領域確保要求に対し、フリーリスト中に空き領域があればそれを返す。なければ，まとめての領域確保を行った後に、空き領域を返す。解放時には、一定数（例えば、１２８ブロック）以上のブロックがフリーリストにある場合は、ファイルシステムに解放し、そうでなければフリーリストに追加する。
【０１２７】
また、メモリアロケータは、まず、ＤＲＡＭからではなく、ＮＶメモリから領域の確保を試みる。そして、メモリアロケータは、ＮＶメモリから領域を確保できた場合は、ＤＲＡＭからの領域の確保は行わない。また、解放時には、ＮＶメモリはＤＲＡＭとは別に解放処理を行う必要がある。そのため、メモリアロケータは、ＮＶメモリ領域の確保時に、そのページの属性として「ＮＶｍｅｍｏｒｙ」を追加する。そして、解放するページにこの属性が付いている場合は、ＮＶメモリの領域解放を行う関数を呼び出す。
【０１２８】
また、システムを正常終了するためには、一般的に、全てのプロセスにシグナルを送り終了処理を行い、ファイルシステムをアンマウントまたはリードオンリーに再マウントした後に、カーネルの終了処理に入る。リードオンリーに再マウントする時に、ＮＶメモリからの領域確保を停止することで、ＮＶメモリから割り当てられ使用中のページはなくなることになる。リードオンリーに再マウント後は、ＮＶメモリからの領域確保は行われないため、この時に、割当てのためにキャッシュされているページも解放する。
【０１２９】
（例４）
本例において、例３に示した実現方法により実現した情報処理装置１を動作させた結果などについて説明する。
【０１３０】
図１１は、メインメモリとファイルへの領域割当、および解放を行ったときのスクリーンダンプである。図１１において、最初の行は、ＰＲＡＭＦＳをルートファイルシステムとしてマウントし、カーネルをブートしていることを示す。また、カーネルをブートすると、まず、ｂｕｓｙｂｏｘのシェルが起動する。そこで、メインメモリとファイルへの領域割当ておよび解放を行うプログラムを実行している。プログラムの引数に「１６」を指定することで、１ＭＢから倍に増やしながら、１６ＭＢまでの領域割当てを行う。図１１より、メインメモリへの割当て、ファイルの作成を行うたびに、ファイルシステムの使用スペースが、その分だけ増加していくことがわかる。最後に、割り当てた領域の開放、ファイルの消去を行うことで、ファイルシステムの使用スペースは減少している。メインメモリからの解放時には一定量をキャッシュとして残すため、完全に最初の値には戻らない。
【０１３１】
また、図１２は、ＬＭｂｅｎｃｈ３ベンチマークスイートに含まれるｆｏｒｋ＋ｅｘｉｔ、ｆｏｒｋ＋ｅｘｅｃｖｅ、ｆｏｒｋ＋ｓｈを実行した結果を示す図である。図１２において、各値は、ＲＤＴＳＣ命令により取得した実行命令数を「１０００」で割った値である。また、図１２において、項目名「ベンチマーク」における「ＤＲＡＭ」は、ＮＶメモリを用いない場合の結果である。また、同「ＮＶメモリ（キャッシュ）」は、ファイルシステムからの領域確保はまとめて行い、余った少数の領域をフリーリストにキャッシュする方式を用いた場合の結果である。また、同「ＮＶメモリ（ページ毎）」は、当該方式を用いずに、ファイルシステムからブロック単位での領域確保を行った場合の結果である。また、「ｆｏｒｋ＋ｅｘｉｔ」はｆｏｒｋシステムコールによりプロセスを作成し終了するものである。また、「ｆｏｒｋ＋ｅｘｅｃｖｅ」は、「ｆｏｒｋ＋ｅｘｉｔ」に加え、さらにｅｘｅｃｖｅシステムコールにより別プログラムを起動するものである。また、「ｆｏｒｋ＋ｓｈ」は、シェルから別プログラムを起動するようにしたものである。
【０１３２】
図１２より、メインメモリに割り当てるための領域をフリーリストにキャッシュすることで、２３〜２６％性能向上が実現でき、ＤＲＡＭの場合と同等の性能を実現することができることがわかる。逆に、ファイルシステムをそのまま空き領域の管理機構として用いるだけでは効率が悪く、ＯＳ実行性能への影響があることがわかる。少数の領域をキャッシュすることで、領域割当て時のコストを削減し、ファイルシステムを空き領域の管理機構とするオーバヘッドを隠蔽することができる。
【０１３３】
また、図１３は、ページング機構との性能比較を行った結果を示す図である。当該比較は、ページングを行う場合と、ＮＶメモリから直接メモリを割り当てることができる場合とで、大量のメモリアクセスが発生するときに性能差が生じるかどうかを計測したものである。図１３において、横軸は、割当メモリサイズ、縦軸はＲＤＴＳＣ命令により取得した実行命令数を「１０００」で割った値である。
【０１３４】
図１３より、「ＤＲＡＭのみ」（凡例の１番目）と、「ＮＶメモリ（キャッシュ）」（凡例の３番目）とは、ほぼ同等の性能であるが、「ＤＲＡＭのみ」は、メモリが足りないため、１２８ＭＢ以上の割当てができない。また、「ＤＲＡＭとスワップファイルの組み合わせ」（凡例の２番目）は、５１２ＭＢまでの割当てができているが、「ＮＶメモリ（キャッシュ）」よりも約７．４倍のコスト（縦軸）がかかっている。また、「ＮＶメモリ（ページ毎）」（凡例の４番目）は、「ＮＶメモリ（キャッシュ）」よりも約１．８倍のコスト（縦軸）がかかっている。従って、ＮＶメモリをメインメモリとファイルシステムの両方に使用することで、ページングが不要になり、ＤＲＡＭのみの場合と同等の性能を維持することができることがわかる。
【０１３５】
以上、本実施の形態による情報処理装置１によれば、ＮＶメモリを領域分割することなく、メインメモリ、およびストレージとして使用することができる。これにより、ＮＶメモリを、メインメモリ領域、ストレージ領域と領域分割することなく使用することができ、単一システムで使用できるメモリ領域を増やすことができる。また、これにより、ページングが不要になるため、システムの処理性能を向上させることができる。
【０１３６】
また、本実施の形態による情報処理装置１によれば、プロセスに割り当てられ、その後、解放されたＮＶメモリ上の空き領域を、ファイルシステムに空き領域として登録することができる。これにより、ファイルシステムの一貫性を保つことができる。
【０１３７】
なお、本実施の形態において、ファイル管理情報格納手段１４１には、ファイルの識別子と、１以上の物理アドレスとを有するファイル管理情報が格納されてもよい。この場合、書込手段１４５は、通常、書込要求のあったファイルのファイル識別子と、当該ファイルを書き込んだ１以上のブロックを識別する物理アドレスとを対応付け、ファイル管理情報格納手段１４１に蓄積する。また、読出手段１４６は、読出要求または削除要求のあったファイルのファイル識別子に対応する１以上の物理アドレスを、ファイル管理情報格納手段１４１から取得する。
【０１３８】
また、本実施の形態において、情報処理装置１は、領域情報格納手段１４３を備えていなくてもよい。この場合、領域情報は、ファイル管理情報格納手段１４１に格納されていてもよいし、ファイル管理情報が有していてもよい。
【０１３９】
また、本実施の形態において、メモリ管理部１５は、例えば、プロセスを識別するプロセス識別子と、当該プロセスに対応する１以上の論理アドレスとを有する１以上のプロセス管理情報が格納されるプロセス管理情報格納手段（図示せず）を備えていてもよい。この場合、メモリ管理手段１５２は、通常、実行が要求されたプロセスを識別するプロセス識別子と、当該プロセスに割り当てた１以上の各ページを識別する１以上の論理アドレスとを対応付け、プロセス管理情報としてプロセス管理情報格納手段に蓄積する。また、当該論理アドレスは、物理アドレスであってもよい。
【０１４０】
また、本実施の形態において、情報処理装置１は、２以上のＮＶメモリ１１を備えていてもよい。この場合、当該２以上のＮＶメモリ１１は、通常、一の物理アドレス空間に、連続して配置されることが好適である。
【０１４１】
また、本実施の形態において、情報処理装置１は、揮発性メモリ１２を備えていなくてもよい。この場合の情報処理装置１のブロック図を、図１５に示す。また、この場合、ファイルシステム部１４は、通常、ＮＶメモリ１１が有する１以上の単位領域のうち、所定の数以下（合計サイズが所定のサイズ以下）の領域を使用する。言い換えると、ファイルシステム部１４は、ＮＶメモリ１１が有する１以上の単位領域のうち、所定の数以上（合計サイズが所定のサイズ以上）の領域を使用せずに残す。これは、メモリ管理部１５が使用する領域を確保するためである。
【０１４２】
また、本実施の形態において、ファイルシステム部１４とメモリ管理部１５とは、通常、ＮＶメモリ１１が有する１以上の単位領域を、ファイルシステム部１４が使用する領域と、メモリ管理部１５とが使用する領域とに区別することなく使用する。つまり、例えば、一の単位領域について、あるタイミングではファイルシステム部１４が当該領域を使用しているが、他のあるタイミングではメモリ管理部１５が当該領域を使用していることもある、ということである。これは、言い換えると、一の単位領域について、あるタイミングではメモリ管理部１５が当該領域を使用しているが、他のあるタイミングではファイルシステム部１４が当該領域を使用していることもある、ということである。
【０１４３】
また、本実施の形態において、情報処理装置１は、所定のサイズの１以上の単位領域を有する不揮発性の記録媒体であるＮＶメモリ１１と、前記１以上の単位領域に対してデータを読み書きするファイルシステム部１４と、実行中のプロセスからの要求に応じて、前記１以上の単位領域のうち、未使用の領域である１以上の空き領域を当該プロセスに割り当てるメモリ管理部１５とを備え、前記１以上の単位領域は、前記ファイルシステム部１４が使用する領域と、前記メモリ管理部１５が使用する領域とに区別されることなく使用される情報処理装置１であってもよい。
【０１４４】
また、本実施の形態において、情報処理装置１は、所定のサイズの１以上の単位領域を有する不揮発性の記録媒体であるＮＶメモリ１１と、前記ＮＶメモリ１１をストレージとして使用するファイルシステム部１４と、前記ＮＶメモリ１１をメインメモリとして使用するメモリ管理部１５とを備え、前記ファイルシステム部１４は、前記１以上の単位領域をブロックとして使用し、前記メモリ管理部１５は、前記１以上の単位領域をページとして使用する情報処理装置１であってもよい。
【０１４５】
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【０１４６】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【０１４７】
また、上記各実施の形態における情報処理装置を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、不揮発性の記録媒体であるＮＶメモリにアクセス可能なコンピュータを、前記ＮＶメモリに対して、所定の単位でデータを読み書きするファイルシステム部と、実行が要求されたプロセスに対し、前記ＮＶメモリの所定の領域を割り当てるメモリ管理部として機能させるためのプログラムである。
【０１４８】
なお、上記プログラムにおいて、ハードウェアでしか行われない処理は少なくとも含まれない。
【０１４９】
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体（例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【０１５０】
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
【０１５１】
また、図１６は、前述のプログラムを実行して、前述の実施の形態の情報処理装置等を実現するコンピュータシステム９の概観図である。前述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
【０１５２】
図１６において、コンピュータシステム９は、ＣＤ−ＲＯＭドライブ９０１１、ＦＤドライブ９０１２を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【０１５３】
図１７は、コンピュータシステム９のブロック図である。図１７において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０１１、ＦＤドライブ９０１２に加えて、ＭＰＵ９０１３と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９０１４と、ＭＰＵ９０１３に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのＲＡＭ９０１５と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク９０１６と、ＣＤ−ＲＯＭドライブ９０１１、ＦＤドライブ９０１２、ＭＰＵ９０１３等を相互に接続するバス９０１７とを備える。ここでは図示しないが、コンピュータ９０１は、さらに、ＬＡＮへの接続を提供するネットワークカードを備えていてもよい。
【０１５４】
コンピュータシステム９に、前述の実施の形態の情報処理装置等の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９１０１、またはＦＤ９１０２に記憶されて、ＣＤ−ＲＯＭドライブ９０１１またはＦＤドライブ９０１２に挿入され、さらにハードディスク９０１６に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９０１６に記憶されてもよい。プログラムは実行の際にＲＡＭ９０１５にロードされる。プログラムは、ＣＤ−ＲＯＭ９１０１、ＦＤ９１０２またはネットワークから直接、ロードされてもよい。
【０１５５】
プログラムは、コンピュータ９０１に、前述の実施の形態の情報処理装置等の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム９がどのように動作するかは周知であり、詳細な説明は省略する。
【０１５６】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１５７】
以上のように、本発明にかかる情報処理装置は、メインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、ＮＶメモリをメインメモリおよびストレージとして使用することができるという効果を有し、オペレーティングシステムの一機能等として有用である。
【符号の説明】
【０１５８】
１  情報処理装置
１１  ＮＶメモリ
１２  揮発性メモリ
１３  受付部
１４  ファイルシステム部
１５  メモリ管理部
１４１  ファイル管理情報格納手段
１４２  変換情報格納手段
１４３  領域情報格納手段
１４４  アドレス変換手段
１４５  書込手段
１４６  読出手段
１４７  領域検出手段
１５１  領域判断手段
１５２  メモリ管理手段
【図１】
2014063358.tif 000003
【図２】
2014063358.tif 000004
【図３】
2014063358.tif 000005
【図４】
2014063358.tif 000006
【図５】
2014063358.tif 000007
【図６】
2014063358.tif 000008
【図７】
2014063358.tif 000009
【図１２】
2014063358.tif 000010
【図１５】
2014063358.tif 000011
【図１６】
2014063358.tif 000012
【図１７】
2014063358.tif 000013
【図８】
2014063358.tif 000014
【図９】
2014063358.tif 000015
【図１０】
2014063358.tif 000016
【図１１】
2014063358.tif 000017
【図１３】
2014063358.tif 000018
【図１４】
2014063358.tif 000019