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