以下、本発明による情報処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
(実施の形態1)
本実施の形態において、NVメモリを、ストレージとして使用する領域、メインメモリとして使用する領域とに分割することなく、ストレージ、およびメインメモリとして使用する情報処理装置1について説明する。なお、ここで、ストレージとは、いわゆる2次記憶装置や、補助記憶装置と呼ばれる記憶装置のことである。また、メインメモリとは、いわゆる1次記憶装置や、主記憶装置と呼ばれる記憶装置のことである。
図1は、本実施の形態における情報処理装置1のブロック図である。情報処理装置1は、NVメモリ11、揮発性メモリ12、受付部13、ファイルシステム部14、メモリ管理部15を備える。また、ファイルシステム部14は、ファイル管理情報格納手段141、変換情報格納手段142、領域情報格納手段143、アドレス変換手段144、書込手段145、読出手段146、領域検出手段147を備える。また、メモリ管理部15は、領域判断手段151、メモリ管理手段152を備える。
また、本実施の形態における情報処理装置1が備えるファイルシステム部14、およびメモリ管理部15は、例えば、いわゆるOSや、当該OSのカーネルと呼ばれるものなどである。
NVメモリ11は、不揮発性の記録媒体である。NVメモリ11は、例えば、PCM(Pahse Change Memory、相変化メモリ)や、MRAM、ReMAM、EEPROM、フラッシュメモリなどである。また、NVメモリ11は、通常、不揮発性メモリであれば、その形状や種類などは、問わない。また、NVメモリ11は、例えば、バイト単位アクセスが可能な不揮発性メモリであれば、物理アドレスにてアクセスすることができる。また、NVメモリ11は、例えば、バイト単位アクセスが不可能な不揮発性メモリであっても、図14に示すように、バッファRAMを経由することで、物理アドレスにてアクセスすることができる。
また、NVメモリ11は、所定の単位のデータが格納される1以上の領域(以下、適宜、単位領域)を有する。所定の単位とは、通常、いわゆるサイズ(容量)であり、例えば、4KB(キロバイト)や、512B(バイト)などである。当該サイズは、予め決められていてもよいし、そうでなくてもよい。また、当該一の単位領域は、例えば、後述のファイルシステム部14からは、「ブロック」として使用される。また、当該一の単位領域は、例えば、後述のメモリ管理部15からは、「ページ」として使用される。つまり、当該一の単位領域は、通常、2以上の名称で呼ばれる。また、所定の単位は、例えば、ブロック、ページ、2以上のブロック、2以上のページであってもよい。また、本実施の形態において、当該ブロックのサイズと、当該ページのサイズとは、同一である。また、当該サイズは、4KBであることが好適である。
揮発性メモリ12は、揮発性の記録媒体である。揮発性メモリ12は、通常、いわゆるDRAMであるが、SRAMなどであってもよい。また、揮発性メモリ12は、通常、いわゆる揮発性メモリであれば、その形状や種類などは問わない。
また、揮発性メモリ12は、NVメモリ11と同様に、1以上の単位領域を有する。当該一の単位領域は、通常、後述のメモリ管理部15から、「ページ」として使用される。なお、当該一の単位領域は、通常、後述のファイルシステム部14から、「ブロック」として使用されない。
また、NVメモリ11と、揮発性メモリ12は、通常、一の物理アドレス空間に配置される。当該物理アドレス空間は、通常、連続した1以上の物理アドレスを有する。また、「物理アドレス空間に配置される」とは、NVメモリ11、揮発性メモリ12のそれぞれが有する各1以上の単位領域と、物理アドレスとを対応付けることである。つまり、当該一の単位領域は、物理アドレスにより識別される。また、当該一の単位領域は、例えば、論理アドレス(仮想アドレスともいう)により間接的に識別されてもよい。なお、当該一の単位領域は、ブロックまたはページと呼ばれるため、物理アドレスおよび論理アドレスを、以下、適宜、ブロック識別子またはページ識別子とする。
また、上記、NVメモリ11の物理アドレス空間への配置は、例えば、後述のファイルシステム部14またはメモリ管理部15が行う。また、当該配置は、例えば、アドレス空間配置部(図示せず)が行ってもよい。
また、NVメモリ11と、揮発性メモリ12とには、通常、重複する物理アドレスが割り当てられることはない。
受付部13は、指示や情報などを受け付ける。指示は、例えば、プログラムの実行の指示や、プロセスの実行の指示、プログラムやプロセスへのメモリ割当の指示、ファイル操作の指示などである。また、情報は、例えば、いわゆるコマンドや、当該コマンドに与える引数などである。また、これらの指示や情報は、通常、指示や情報を出力するプログラムが出力する。
ファイルシステム部14は、いわゆるファイルシステムである。当該ファイルシステムは、例えば、PRAMFS(Persistent and Protected RAM File System)や、Ext2(Second Extended Filesystem)、SCMFS(A File System for Storage Class Memory)などである。また、当該ファイルシステムは、XIP(eXecute−In−Place)をサポートしており、NVメモリ11を対象としたファイルシステムであれば、何でもよい。つまり、ファイルシステム部14は、NVメモリ11を、いわゆるストレージとして使用する。また、ファイルシステム部14は、通常、NVメモリ11を1以上の単位領域に分割し、当該一の単位領域を、ブロックとして使用する。
また、ファイルシステム部14は、例えば、一のファイルをNVメモリ11に書き込む場合、まず、当該一のファイルを、どの1以上のブロックに割り当てるのかを決定する。そして、ファイルシステム部14は、当該一のファイルを、当該割り当てたブロックごとに分割し、NVメモリ11に書き込む。
また、一のファイルをNVメモリ11に書き込んだ場合、ファイルシステム部14は、通常、書き込んだファイルの識別子(以下、適宜、ファイル識別子)と、書込み先のブロックを識別するブロック識別子との対応を示すファイル管理情報を、任意の記憶領域または所定の記憶領域などに蓄積する。ファイル識別子は、例えば、IDや、いわゆるファイル名などである。また、ファイル識別子は、ファイルを識別することができれば、その形式や内容などは、問わない。
また、ファイルシステム部14は、例えば、一のファイルをNVメモリ11から読み出す場合、まず、当該一のファイルが書き込まれている1以上のブロックを識別するブロック識別子を、ファイル管理情報から取得する。そして、ファイルシステム部14は、取得した1以上のブロックの識別子が示すブロックから、1以上に分割されたファイルのデータを取得する。そして、ファイルシステム部14は、取得した1以上のデータを結合し、ファイルを取得する。
また、ファイルシステム部14は、例えば、一のファイルをNVメモリ11から削除する場合、まず、当該一のファイルが書き込まれている1以上のブロックを識別するファイル識別子を、ファイル管理情報から取得する。そして、ファイルシステム部14は、取得した1以上のブロックの識別子が示すブロックから、データを消去する。なお、当該「消去」には、通常、当該ファイル管理情報を削除することも含まれる。また、当該「消去」は、例えば、後述の領域情報を更新すること(使用領域であることを示す領域情報を、空き領域であることを示す領域情報に書き換える)ことであってもよい。
また、一のファイルをNVメモリ11から削除した場合、ファイルシステム部14は、通常、削除したファイルを識別するファイル識別子と、当該削除先のブロックを識別するブロック識別子との対応を示す情報を、当該情報を蓄積した任意の記憶領域や所定の記憶領域などから消去する。
なお、ファイルシステムは、公知の技術であるので、ファイルシステム部14が行う処理や動作については、適宜、説明を省略する。また、ファイルシステム部14は、例えば、NVメモリ11におけるファイルの管理や、空き領域の管理、NVメモリ11へのファイルの書込み、NVメモリ11からのファイルの読出しなどを、通常、後述の各手段により行う。
ファイル管理情報格納手段141には、ファイルを識別するファイル識別子と、当該ファイルに対応する1以上の論理アドレスとを有する1以上のファイル管理情報が格納される。当該論理アドレスは、物理アドレスであってもよい。
変換情報格納手段142には、論理アドレスを物理アドレスに変換するための変換情報が格納される。変換情報は、例えば、論理アドレスを代入することで、物理アドレスを算出する変換式や、一の論理アドレスと一の物理アドレスとの対応表、一の論理アドレスに対するオフセットなどである。変換情報は、後述のアドレス変換手段144が、一の論理アドレスを一の物理アドレスに変換するために用いる情報である。また、変換情報は、論理アドレスを物理アドレスに変換することができる情報であれば、その形式や内容などは、問わない。また、変換情報は、例えば、物理アドレスを論理アドレスに変換するための情報であってもよい。
領域情報格納手段143には、1以上の領域情報が格納される。領域情報とは、NVメモリ11において使用されていない1以上の単位領域である空き領域を示す情報である。なお、領域情報は、NVメモリ11において使用されている1以上の単位領域である使用領域を示す情報であってもよい。つまり、領域情報は、空き領域を示してもよいし、使用領域を示してもよい。
領域情報は、通常、一の論理アドレスと、フラグとを有する。当該論理アドレスは、物理アドレスであってもよい。また、当該フラグは、当該一の論理アドレスで識別される単位領域が、空き領域であるか、または使用領域であるかを示す。当該フラグは、例えば、空き領域を示す場合は「0」、使用領域を示す場合は「1」である。また、当該フラグは、例えば、空き領域を示す場合は「○」、使用領域を示す場合は「×」である。また、領域情報は、2つの論理アドレスを有していてもよい。この場合、領域情報は、当該2つの論理アドレスで示される論理アドレスの範囲に対応する単位領域が、空き領域であること、または使用領域であることを示す。
アドレス変換手段144は、一の論理アドレスを、変換情報格納手段142に格納されている変換情報を用いて、一の物理アドレスに変換する。当該「変換」には、通常、一の論理アドレスに対応する一の物理アドレスを、当該変換情報を用いて取得することも含まれる。また、アドレス変換手段144は、通常、一のファイルに対応する1以上の各論理アドレスを、変換情報を用いて1以上の物理アドレスに変換する。当該ファイルは、例えば、NVメモリ11に書き込むことを要求されたファイルや、NVメモリ11から読み出すことを要求されたファイルなどである。なお、当該書込みを要求する指示や、当該読出しを要求する指示は、通常、受付部13が受け付ける。また、当該指示は、通常、ファイル識別子を有する。
アドレス変換手段144は、例えば、まず、受付部13が受け付けた指示が有するファイル識別子を取得する。そして、アドレス変換手段144は、当該取得したファイル識別子に対応する論理アドレスを、ファイル管理情報格納手段141から取得する。そして、アドレス変換手段144は、当該取得した論理アドレスから、変換情報格納手段142に格納されている変換情報を用いて、物理アドレスを取得する。
例えば、変換情報が変換式である場合、アドレス変換手段144は、論理アドレスを当該変換式に代入し、物理アドレスを取得する。また、例えば、変換情報が対応表である場合、アドレス変換手段144は、論理アドレスに対応する物理アドレスを、当該対応表から取得する。また、例えば、変換情報がオフセットである場合、アドレス変換手段144は、論理アドレスに当該オフセットを加算し、物理アドレスを取得する。
また、アドレス変換手段144は、例えば、変換情報を用いて、物理アドレスを論理アドレスに変換してもよい。物理アドレスを論理アドレスに変換する方法や手順などは、論理アドレスを物理アドレスに変換する方法や手順などと同様であるので、説明を省略する。
書込手段145は、書込みが要求されたファイルを、NVメモリに書き込む。これは、例えば、受付部13が受け付けたファイル書込指示が有するファイル識別子に対応するデータを、ファイルとしてNVメモリに書き込むことである。
書込手段145は、例えば、書込みが要求されたファイルを、領域情報格納手段143に格納されている領域情報が示す空き領域のうち、どの1以上のブロックに書き込むのかを決定する。当該決定とは、書込先の1以上の各ブロックに対応する1以上の論理アドレスを取得することである。また、当該決定の方法は、問わない。書込手段145は、例えば、書込みが要求されたファイルのサイズに該当する1以上の連続する空き領域、または1以上の連続しない(不連続の)空き領域を検索し、当該空き領域に対応する論理アドレスを取得する。そして、書込手段145は、当該取得した1以上の論理アドレスをアドレス変換手段144に渡し、当該1以上の各論理アドレスに対応する1以上の物理アドレスを、アドレス変換手段144から取得する。そして、書込手段145は、当該ファイルを、当該取得した1以上の各物理アドレスに対応するブロックごとに分割し、当該分割したファイルを、各ブロックに書き込む。そして、書込手段145は、書き込んだファイルを識別するファイル識別子と、書き込んだ1以上の各ブロックに対応する論理アドレスとを対応付け、ファイル管理情報を作成する。そして、書込手段145は、当該ファイル管理情報をファイル管理情報格納手段141に蓄積する。また、この場合、書込手段145は、例えば、後述の領域検出手段147に、書き込んだファイルに対応する1以上の論理アドレスを、後述の領域検出手段147に渡してもよい。
読出手段146は、読出しが要求されたファイルを、NVメモリから読み出す。これは、例えば、受付部13が受け付けたファイル読出指示が有するファイル識別子に対応するデータを、ファイルとしてNVメモリから読み出すことである。
読出手段146は、例えば、読出しが要求されたファイルを識別するファイル識別子に対応する1以上の論理アドレスを、ファイル管理情報格納手段141から取得する。そして、読出手段146は、当該取得した1以上の論理アドレスをアドレス変換手段144に渡し、当該1以上の各論理アドレスに対応する1以上の物理アドレスを、アドレス変換手段144から取得する。そして、読出手段146は、当該1以上の各物理アドレスに対応するブロックから、データを読み出す。そして、読出手段146は、読み出した1以上のデータを結合し、ファイルとして取得する。
また、読出手段146は、例えば、削除が要求されたファイルを、NVメモリから削除してもよい。この場合、削除の対象となるファイルに対応する1以上の物理アドレスの取得の方法や手順などは、読出しの対象となるファイルに対応する1以上の物理アドレスの取得の方法や手順などと同様であるので、説明を省略する。そして、読出手段146は、取得した1以上の物理アドレスに対応するブロックから、データを消去する。そして、読出手段146は、ファイル管理情報格納手段141から、当該削除するファイルに対応するファイル管理情報を削除する。また、この場合、読出手段146は、例えば、後述の領域検出手段147に、削除したファイルに対応する1以上の論理アドレスを、後述の領域検出手段147に渡してもよい。また、当該ファイルの削除は、図示しないファイル削除手段が行ってもよい。
領域検出手段147は、NVメモリ11の空き領域を検出する。そして、領域検出手段147は、当該空き領域を示す領域情報を、領域情報格納手段143に蓄積する。領域検出手段147は、例えば、NVメモリ11が有する1以上の各単位領域が、空き領域であるか否かを判断する。そして、領域検出手段147は、空き領域であると判断した1以上の各単位領域に対応する1以上の物理アドレスを取得する。そして、領域検出手段147は、当該1以上の物理アドレスをアドレス変換手段144に渡し、当該1以上の各物理アドレスに対応する1以上の論理アドレスを取得する。そして、領域検出手段147は、当該1以上の各論理アドレスと、空き領域であることを示すフラグとを対応付け、領域情報を作成する。そして、領域検出手段147は、当該領域情報を領域情報格納手段143に蓄積する。当該蓄積は、いわゆる追記や、上書き、更新などを含む概念である。また、領域検出手段147は、空き領域ではなく、使用領域を検出してもよい。
また、領域検出手段147は、例えば、新たに空き領域となった単位領域、または新たに使用領域となった単位領域を検出してもよい。新たに空き領域となった単位領域を検出する場合、領域検出手段147は、例えば、領域情報格納手段143に格納されている領域情報から、使用領域である1以上の単位領域を特定する。そして、領域検出手段147は、当該使用領域である1以上の単位領域が空き領域であるか否かを判断する。そして、領域検出手段147は、空き領域であると判断した1以上の各単位領域に対応する1以上の領域情報を作成し、当該領域情報を領域情報格納手段143に蓄積する。また、新たに使用領域となった単位領域を検出する場合、領域検出手段147は、例えば、領域情報格納手段143に格納されている領域情報から、空き領域である1以上の単位領域を特定する。そして、領域検出手段147は、当該空き領域である1以上の単位領域が使用領域であるか否かを判断する。そして、領域検出手段147は、使用領域であると判断した1以上の各単位領域に対応する1以上の領域情報を作成し、当該領域情報を領域情報格納手段143に蓄積する。なお、領域情報の作成の方法や手順などは、上記と同様であるので、説明を省略する。
また、領域検出手段147は、例えば、書込手段145がファイルを書き込んだ後や、読出手段146がファイルを削除した後、後述のメモリ管理部15がプロセスに領域を割り当てた後、後述のメモリ管理部15が領域を解放した後など、所定のタイミングにて、空き領域を検出する。
また、例えば、書込手段145から1以上の論理アドレスを受け取った場合、領域検出手段147は、当該1以上の各論理アドレスと、使用領域であることを示すフラグとを対応付け、1以上の領域情報を作成し、当該領域情報を領域情報格納手段143に蓄積する。また、例えば、読出手段146から1以上の論理アドレスを受け取った場合、領域検出手段147は、当該1以上の各論理アドレスと、空き領域であることを示すフラグとを対応付け、1以上の領域情報を作成し、当該領域情報を領域情報格納手段143に蓄積する。
また、例えば、領域情報「(0x00000000|0),(0x00000001|0),(0x00000002|0)」が領域情報格納手段143に既に格納されているとする。当該領域情報は、論理アドレス「0x00000000」から「0x00000002」までに対応するブロックが空き領域であることを意味する。また、領域検出手段147が領域情報「(0x00000000|0),(0x00000001|1),(0x00000002|1)」を取得したとする。当該領域情報は、論理アドレス「0x00000000」から「0x00000002」までに対応するブロックにおいて、論理アドレス「0x00000000」に対応するブロックのみが空き領域であることを意味する。この様な場合、領域検出手段147は、既に格納されている領域情報を、取得した領域情報で上書きする。
また、例えば、領域情報「0x00000000〜0x00000002」が領域情報格納手段143に既に格納されているとする。当該領域情報は、論理アドレス「0x00000000」から「0x00000002」までに対応するブロックが空き領域であることを意味する。また、領域検出手段147が領域情報「0x00000003〜0x00000005」を取得したとする。当該領域情報の意味は、上記と同様であるので、説明を省略する。この様な場合、領域検出手段147は、既に格納されている領域情報を「0x00000000〜0x00000005」に書き換える。
以上より、領域情報格納手段143への領域情報の蓄積は、通常、領域検出手段147が行う。従って、例えば、単位領域にデータが保存されているが、見かけ上は当該単位領域を空き領域として使用する場合(単位領域からデータは削除せずに、管理上は当該単位領域を空き領域として使用する場合)は、読出手段146が、削除の対象となるファイルに対応する1以上の論理アドレスを取得し、領域検出手段147が、当該1以上の論理アドレスに空き領域であることを示すフラグを対応付け、領域情報格納手段143に蓄積する。
メモリ管理部15は、いわゆるメモリ管理を行う。メモリ管理とは、例えば、実行が要求されたプロセスに対し、NVメモリ11の1以上の単位領域を割り当てることや、実行中のプロセスからの要求に応じて、NVメモリ11の1以上の単位領域を割り当てること、不要となったNVメモリ11の1以上の単位領域を、空き領域として解放することなどである。つまり、メモリ管理部15は、NVメモリ11を、いわゆるメインメモリとして使用する。また、メモリ管理部15は、通常、NVメモリ11を1以上の単位領域に分割し、当該一の単位領域を、ページとして管理する。
なお、メモリ管理は、公知の技術であるので、メモリ管理部15が行う処理や動作については、適宜、説明を省略する。また、メモリ管理部15は、例えば、プロセスなどへのページの割り当てや、割り当てたページの解放などを、通常、後述の各手段により行う。
領域判断手段151は、NVメモリ11の空き領域の有無を判断する。このとき、領域判断手段151は、通常、実行が要求されたプロセスが要求するサイズと同サイズの空き領域の有無を判断する。また、領域判断手段151は、通常、NVメモリ11のすべての領域を、ファイルシステム部14が使用しているか否かを判断する。領域判断手段151は、通常、これらの判断を、ファイル管理情報格納手段141に格納されているファイル管理情報、および領域情報格納手段143に格納されている領域情報を用いて判断する。つまり、領域判断手段151は、通常、領域情報格納手段143に格納されている領域情報により、NVメモリ11のすべての領域が使用領域であるか否かを判断する。そして、領域判断手段151は、NVメモリ11のすべての領域が使用領域である場合、ファイル管理情報格納手段141に格納されているファイル管理情報により、当該すべての使用領域にファイルが書き込まれているか否かを判断する。
メモリ管理手段152は、実行が要求されたプロセスに対し、NVメモリ11が有する1以上のページを割り当てる。当該プロセスは、通常、いわゆるユーザが実行などを要求したユーザプロセスである。また、当該「割り当てる」とは、当該プロセスのために当該1以上のページを確保することや、当該プロセスに対し当該1以上のページを使用することを許可することなどである。また、このとき、メモリ管理手段152は、通常、当該1以上のページを識別する論理アドレスを、当該プロセスに送信する。また、当該論理アドレスは、物理アドレスであってもよい。
また、メモリ管理手段152は、例えば、所定のタイミングで、上記プロセスに割り当てた1以上のページを解放する。当該「解放する」とは、当該1以上のページを、空き領域とすることである。また、所定のタイミングとは、例えば、プロセス実行の終了時や、正常終了時、再起動時などである。また、メモリ管理手段152は、例えば、当該ページの解放後に、解放した旨を、領域検出手段147に通知してもよい。また、メモリ管理手段152は、例えば、当該ページの解放後に、当該ページが空き領域であることを示す領域情報を、領域情報格納手段143に蓄積してもよい。
また、例えば、領域判断手段151が、NVメモリ11に空き領域がないと判断した場合、メモリ管理手段152は、実行が要求されたプロセスに対し、揮発性メモリ12が有する1以上のページを割り当てる。
また、メモリ管理手段152は、例えば、メモリ管理ユニット(Memory Management Unit、MMU)を含むと考えてもよいし、そうでないと考えてもよい。また、メモリ管理手段152は、例えば、ファイルシステム部14を介して、NVメモリ上の領域の確保や、その解放を行ってもよい。
また、ファイルシステム部14、ファイル管理情報格納手段141、変換情報格納手段142、領域情報格納手段143、アドレス変換手段144、書込手段145、読出手段146、領域検出手段147、メモリ管理部15、領域判断手段151、メモリ管理手段152は、通常、MPUやメモリ等から実現され得る。ファイルシステム部14の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
次に、情報処理装置1の全体動作について、図2のフローチャートを用いて説明する。
(ステップS201)ファイルシステム部14は、NVメモリ11、および揮発性メモリ12を、同一の物理アドレス空間に配置する。当該配置は、メモリ管理部15が行ってもよい。
(ステップS202)書込手段145は、受付部13が指示を受け付けたか否かを判断する。受け付けた場合は、ステップS203に進み、そうでない場合は、ステップS215に進む。
(ステップS203)書込手段145は、ステップS202で受け付けた指示がファイル書込指示であるか否かを判断する。ファイル書込指示である場合は、ステップS204に進み、そうでない場合は、ステップS208に進む。
(ステップS204)書込手段145は、ステップS202で受け付けたファイル書込指示に対応するファイルを書き込むための1以上のブロックを確保する。当該「確保する」とは、当該1以上の各ブロックに対応する1以上の論理アドレスを取得することである。
(ステップS205)アドレス変換手段144は、変換情報格納手段142に格納されている変換情報を用いて、ステップS204で取得した1以上の論理アドレスを、1以上の物理アドレスに変換する。
(ステップS206)書込手段145は、ステップS205で取得した1以上の物理アドレスで識別される単位領域にファイルを書き込む。
(ステップS207)書込手段145は、ステップS206で書き込んだファイルの識別子と、ステップS204で取得した1以上の論理アドレスとを対応付け、ファイル管理情報としてファイル管理情報格納手段141に蓄積する。
(ステップS208)読出手段146は、ステップS202で受け付けた指示がファイル読出指示であるか否かを判断する。ファイル読出指示である場合は、ステップS209に進み、そうでない場合は、ステップS212に進む。
(ステップS209)読出手段146は、ステップS202で受け付けたファイル読出指示に対応する1以上の論理アドレスを、ファイル管理情報格納手段141から取得する。
(ステップS210)アドレス変換手段144は、ステップS209で取得した1以上の論理アドレスを、1以上の物理アドレスに変換する。
(ステップS211)読出手段146は、ステップS210で取得した1以上の物理アドレスで識別される単位領域からファイルを読み出す。
(ステップS212)読出手段146は、ステップS202で受け付けた指示がファイル削除指示であるか否かを判断する。ファイル削除指示である場合は、ステップS213に進み、そうでない場合は、ステップS217に進む。
(ステップS213)読出手段146は、ステップS202で受け付けたファイル削除指示に対応する1以上の論理アドレスを、ファイル管理情報格納手段141から取得する。
(ステップS214)アドレス変換手段144は、ステップS213で取得した1以上の論理アドレスを、1以上の物理アドレスに変換する。
(ステップS215)読出手段146は、ステップS214で取得した1以上の物理アドレスで識別される単位領域からファイルを削除する。
(ステップS216)読出手段146は、ステップS215で削除したファイルの識別子と、ステップS213で取得した1以上の論理アドレスとを有するファイル管理情報を、ファイル管理情報格納手段141から削除する。
(ステップS217)メモリ管理部15は、ステップS202で受け付けた指示がプロセス実行指示であるか否かを判断する。プロセス実行指示である場合は、ステップS218に進み、そうでない場合は、ステップS202に戻る。
(ステップS218)領域判断手段151は、NVメモリ11に空き領域が存在するか否かを判断する。存在する場合は、ステップS219に進み、そうでない場合は、ステップS220に進む。
(ステップS219)メモリ管理手段152は、ステップS202で受け付けたプロセス実行指示に対応するプロセスを実行するための1以上のページを、NVメモリ11から確保する。当該「確保する」とは、当該NVメモリ11の1以上の各ページに対応する1以上の論理アドレスを取得することである。
(ステップS220)メモリ管理手段152は、ステップS202で受け付けたプロセス実行指示に対応するプロセスを実行するための1以上のページを、揮発性メモリ12から確保する。当該「確保する」とは、当該揮発性メモリ12の1以上の各ページに対応する1以上の論理アドレスを取得することである。
(ステップS221)アドレス変換手段144は、ステップS219またはステップS220で取得した1以上の論理アドレスを、1以上の物理アドレスに変換する。
(ステップS222)メモリ管理手段152は、ステップS221で取得した1以上の各物理アドレスで識別される1以上の単位領域を、ステップS202で受け付けたプロセス実行指示に対応するプロセスに割当て、当該プロセスを実行する。
(ステップS223)領域検出手段147およびメモリ管理手段152は、空き領域の検出および領域の解放を行う。この処理の詳細は、図3のフローチャートを用いて説明する。
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
また、図2のフローチャートにおいて、領域判断手段151は、NVメモリ11に空き領域が存在するか否かを判断しなくてもよい。この場合、図2のステップS217において、ステップS202で受け付けた指示がプロセス実行指示である場合は、ステップS219に進む。
図3は、図2のフローチャートのステップS223の空き領域の検出と領域の解放処理を示すフローチャートである。
(ステップS301)領域検出手段147は、NVメモリ11の空き領域の検出のタイミングであるか否かを判断する。検出のタイミングである場合は、ステップS302に進み、そうでない場合は、ステップS304に進む。
(ステップS302)領域検出手段147は、NVメモリ11の空き領域を検出し、当該空き領域を示す領域情報を取得する。
(ステップS303)領域検出手段147は、ステップS302で取得した領域情報を領域情報格納手段143に蓄積する。
(ステップS304)メモリ管理手段152は、プロセスに割り当てた1以上の単位領域である割当領域の解放のタイミングであるか否かを判断する。解放のタイミングである場合は、ステップS305に進み、そうでない場合は、上位処理にリターンする。
(ステップS305)メモリ管理手段152は、プロセスに割り当てた1以上の単位領域である割当領域を解放する。そして、上位処理にリターンする。
(具体例)
次に、情報処理装置1の動作の具体例について説明する。なお、本具体例において、NVメモリ11と揮発性メモリ12とは、同一の物理アドレス空間に配置されているものとする。また、NVメモリ11と揮発性メモリ12とは、それぞれ、サイズが4KBである1以上の単位領域を有しているものとする。
(例1)
本例において、変換情報格納手段142には、図4に示す変換情報が格納されているものとする。当該変換情報は、レコードを一意に特定するためのIDと、論理アドレスと、物理アドレスとを有する。また、領域情報格納手段143には、図5に示す領域情報が格納されているものとする。当該領域情報は、レコードを一意に特定するためのIDと、論理アドレスと、空き領域であるか否かを示すフラグ(項目名:空き)とを有する。当該フラグは、「0」は空き領域であることを示し、「1」は空き領域でない(使用領域である)ことを示す。また、図4および図5における一の論理アドレス(物理アドレス)は、NVメモリ11の一の単位領域(以下、適宜、ブロック)を識別するものである。
まず、ユーザが、情報処理装置1を操作し、ファイル名が「v_img」である10KBのファイルを作成するための操作を行ったとする。すると、受付部13は、当該ファイル名を有するファイル書込指示を受け付ける。
次に、書込手段145は、書き込むファイルのサイズが10KBであるので、図5の「ID=011」から「ID=013」の3つの論理アドレスで識別されるブロックを、書き込むファイルの領域として確保する。このとき、書込手段145は、当該3つの論理アドレスと、使用領域であることを示すフラグ「1」とを対応付け、領域情報を作成し、当該領域情報を領域情報格納手段143に蓄積してもよい。
次に、アドレス変換手段144は、図5の「ID=011」から「ID=013」の3つの各論理アドレスに対応する物理アドレスを、図4の変換情報から取得する。そして、アドレス変換手段144は、図4の「ID=011」から「ID=013」の3つの物理アドレスを取得する。
次に、書込手段145は、図4の「ID=011」から「ID=013」の3つの各物理アドレスで識別される単位領域に、書込対象のファイルを書き込む。書込手段145は、例えば、書込対象のファイルを4KBずつのデータに分割する(4KB、4KB、2KBの3つのデータに分割する)。そして、書込手段145は、当該3つのデータを、当該3つの単位領域のそれぞれに書き込む。
次に、書込手段145は、当該ファイルのファイル名「v_img」と、確保した3つの論理アドレス「0xF0000001」、「0xF0000002」、「0xF0000003」とを対応付け、ファイル管理情報としてファイル管理情報格納手段141に蓄積する。当該ファイル管理情報は、例えば、図6である。
次に、領域検出手段147は、書込手段145がファイルをNVメモリに書き込んだので、空き領域の検出のタイミングであると判断し、NVメモリ11の空き領域を検出する。そして、領域検出手段147は、3つの物理アドレス「0x10000001」、「0x10000002」、「0x10000003」のそれぞれで識別される単位領域が使用領域であることを示す領域情報を取得する。そして、領域検出手段147は、当該取得した領域情報を、領域情報格納手段143に蓄積する。この結果、領域情報格納手段143に格納されている領域情報は、図7となる。図7において、「ID=011」から「ID=013」までの領域情報が、領域検出手段147が取得した領域情報である。
次に、ユーザが、情報処理装置1を操作し、ファイル名が「v_img」であるファイルを読み出すための操作を行ったとする。すると、受付部13は、当該ファイル名を有するファイル読出指示を受け付ける。
次に、読出手段146は、ファイル名「v_img」に対応する論理アドレスを、図6のファイル管理情報から取得する。そして、読出手段146は、図6のファイル管理情報から、「0xF0000001」、「0xF0000002」、「0xF0000003」の3つの論理アドレスを取得する。
次に、アドレス変換手段144は、図6の「ID=001」のレコードが有する3つの各論理アドレスに対応する物理アドレスを、図4の変換情報から取得する。そして、アドレス変換手段144は、図4の「ID=011」から「ID=013」の3つの物理アドレスを取得する。
次に、読出手段146は、図4の「ID=011」から「ID=013」の3つの各物理アドレスで識別される単位領域から、ファイルを読み出す。読出手段146は、例えば、当該3つの各単位領域からデータを取得し、当該3つのデータを結合し、ファイルとして取得する。
次に、ユーザが、情報処理装置1を操作し、ファイル名が「v_img」であるファイルを削除するための操作を行ったとする。すると、受付部13は、当該ファイル名を有するファイル削除指示を受け付ける。なお、当該ファイルに対応する物理アドレスの取得の方法は、上記と同様であるので、説明を省略する。
次に、読出手段146は、図4の「ID=011」から「ID=013」の3つの各物理アドレスで識別される単位領域から、データを削除する。このとき、読出手段146は、当該3つの各物理アドレスに対応する3つの論理アドレスと、空き領域であることを示すフラグ「0」とを対応付け、領域情報を作成し、当該領域情報を領域情報格納手段143に蓄積してもよい。
次に、領域検出手段147は、読出手段146がファイルをNVメモリから削除したので、空き領域の検出のタイミングであると判断し、NVメモリ11の空き領域を検出する。そして、領域検出手段147は、3つの物理アドレス「0x10000001」、「0x10000002」、「0x10000003」のそれぞれで識別される単位領域が、上記の削除により新たに空き領域となったことを示す領域情報を取得する。そして、領域検出手段147は、当該取得した領域情報を、領域情報格納手段143に蓄積する。この結果、領域情報格納手段143に格納されている領域情報は、図5となる。
(例2)
本例において、変換情報格納手段142には、図4に示す変換情報が格納されているものとする。また、領域情報格納手段143には、図5に示す領域情報が格納されているものとする。また、例1について説明した処理や動作などについては、適宜、説明を省略する。
まず、ユーザが、情報処理装置1を操作し、プログラム名が「pg_sample」であり、実行に10KBの領域を使用するプログラムを実行するための操作を行ったとする。当該プログラムは、例えば、NVメモリに格納されていてもよいし、揮発性メモリ12に格納されていてもよい。また、以下、当該プログラムを、プロセスと呼ぶこととする。すると、受付部13は、当該プログラム名を有するプロセス実行指示を受け付ける。
次に、領域判断手段151は、NVメモリ11に空き領域があるか否かを判断し、空き領域があると判断する。
次に、メモリ管理手段152は、実行するプロセスが使用する領域が10KBであるので、図5の「ID=011」から「ID=013」の3つの論理アドレスで識別されるページを、実行するプロセスが使用する領域として確保する。そして、アドレス変換手段144は、当該3つの各論理アドレスに対応する3つの物理アドレスを取得する。
次に、メモリ管理手段152は、図4の「ID=011」から「ID=013」の3つの各物理アドレスで識別される単位領域を、実行するプロセスに割り当てる。そして、メモリ管理手段152は、プロセスを実行する。
次に、領域検出手段147は、空き領域の検出のタイミングであると判断し、NVメモリの空き領域を検出し、領域情報を取得する。そして、領域検出手段147は、当該取得した領域情報を、領域情報格納手段143に蓄積する。この結果、領域情報格納手段143に格納されている領域情報は、図7となる。
次に、ユーザが、情報処理装置1を操作し、情報処理装置1の電源をOFFにする操作を行ったとする。すると、受付部13は、電源をOFFにする指示である電源OFF指示を受け付ける。
次に、メモリ管理手段152は、実行中のプロセスを強制終了する。そして、メモリ管理手段152は、当該プロセスに割り当てていた単位領域であり、図4の「ID=011」から「ID=013」の3つの各物理アドレスで識別される単位領域を解放する。
次に、領域検出手段147は、空き領域の検出のタイミングであると判断し、NVメモリの空き領域を検出し、領域情報を取得する。そして、領域検出手段147は、当該取得した領域情報を、領域情報格納手段143に蓄積する。この結果、領域情報格納手段143に格納されている領域情報は、図5となる。
また、例えば、上記において、領域判断手段151が、NVメモリ11に空き領域があるか否かを判断し、空き領域がないと判断したとする。この場合、メモリ管理手段152は、揮発性メモリ12の3つのページを、実行するプロセスが使用する領域として確保する。そして、メモリ管理手段152は、当該3つの各ページを識別する3つの論理アドレスを取得する。
(例3)
本例において、情報処理装置1の具体的な実現方法について説明する。なお、本例において、NVメモリ11は、単に「NVメモリ」と表記し、揮発性メモリ12は、DRAMであるものとする。また、情報処理装置1は、Linux(登録商標)カーネル(以下、カーネル)であるものとする。
まず、エミュレータを用いて、NVメモリ11をメインメモリとして持つシステムをエミュレーションする。また、NVメモリ11をメインメモリとして使用する場合、広い物理アドレス空間を持つ64ビット環境である方が望ましい。当該条件を満たすエミュレータは、例えば、QEMU(http://wiki.qemu.org/Main_Page)である。
次に、NVメモリの内容を保存するファイル「nvmemory.img」を用意する。そして、図8に示すコマンドを実行し、QEMUを起動する。当該コマンドにより、128MB(メガバイト)のDRAMの領域が確保され、また、ファイル「nvmemory.img」のすべてが、NVメモリとして物理アドレス「0x10000000」からの領域にマッピングされた状態で、QEMUが起動される。この結果、DRAMのNVメモリは、図9の様に、物理アドレス空間に配置される。なお、ここで、カーネルは、DRAMに格納されているものとし、DRAM上で展開し、ブート(起動)するものとする。
次に、図10は、カーネルにおける仮想記憶システム、メモリアロケータ、ファイルシステムの関係を示す図である。図10において、仮想記憶システム(Vitrual Memory)は、ファイルシステム部14、およびメモリ管理部15が使用する仮想的なメモリであり、通常、論理アドレス空間である。また、メモリアロケータは、メモリ管理部15、変換情報格納手段142、アドレス変換手段144に相当する。また、ファイルシステム(PRAMFS)は、ファイルシステム部14に相当し、図10の様に、通常、NVメモリ上に構築される。また、当該ファイルシステムのブロックサイズは、メインメモリのページサイズである4KBとする。
また、ファイルシステムは、NVメモリの領域管理の基盤として使用する。つまり、ファイルシステムがNVメモリの空き領域を管理し、メモリアロケータによる領域の確保および解放は、ファイルシステムを介して行う。
また、単純なブロック単位でのファイルシステムからの領域の割り当てでは、性能への影響が大きい。従って、例えば、ファイルシステムからの領域確保は、まとめて行い、余った少数の領域をフリーリストにキャッシュする方法を採用してもよい。この方式では、領域確保と解放は次のように行う。領域確保要求に対し、フリーリスト中に空き領域があればそれを返す。なければ,まとめての領域確保を行った後に、空き領域を返す。解放時には、一定数(例えば、128ブロック)以上のブロックがフリーリストにある場合は、ファイルシステムに解放し、そうでなければフリーリストに追加する。
また、メモリアロケータは、まず、DRAMからではなく、NVメモリから領域の確保を試みる。そして、メモリアロケータは、NVメモリから領域を確保できた場合は、DRAMからの領域の確保は行わない。また、解放時には、NVメモリはDRAMとは別に解放処理を行う必要がある。そのため、メモリアロケータは、NVメモリ領域の確保時に、そのページの属性として「NVmemory」を追加する。そして、解放するページにこの属性が付いている場合は、NVメモリの領域解放を行う関数を呼び出す。
また、システムを正常終了するためには、一般的に、全てのプロセスにシグナルを送り終了処理を行い、ファイルシステムをアンマウントまたはリードオンリーに再マウントした後に、カーネルの終了処理に入る。リードオンリーに再マウントする時に、NVメモリからの領域確保を停止することで、NVメモリから割り当てられ使用中のページはなくなることになる。リードオンリーに再マウント後は、NVメモリからの領域確保は行われないため、この時に、割当てのためにキャッシュされているページも解放する。
(例4)
本例において、例3に示した実現方法により実現した情報処理装置1を動作させた結果などについて説明する。
図11は、メインメモリとファイルへの領域割当、および解放を行ったときのスクリーンダンプである。図11において、最初の行は、PRAMFSをルートファイルシステムとしてマウントし、カーネルをブートしていることを示す。また、カーネルをブートすると、まず、busyboxのシェルが起動する。そこで、メインメモリとファイルへの領域割当ておよび解放を行うプログラムを実行している。プログラムの引数に「16」を指定することで、1MBから倍に増やしながら、16MBまでの領域割当てを行う。図11より、メインメモリへの割当て、ファイルの作成を行うたびに、ファイルシステムの使用スペースが、その分だけ増加していくことがわかる。最後に、割り当てた領域の開放、ファイルの消去を行うことで、ファイルシステムの使用スペースは減少している。メインメモリからの解放時には一定量をキャッシュとして残すため、完全に最初の値には戻らない。
また、図12は、LMbench3ベンチマークスイートに含まれるfork+exit、fork+execve、fork+shを実行した結果を示す図である。図12において、各値は、RDTSC命令により取得した実行命令数を「1000」で割った値である。また、図12において、項目名「ベンチマーク」における「DRAM」は、NVメモリを用いない場合の結果である。また、同「NVメモリ(キャッシュ)」は、ファイルシステムからの領域確保はまとめて行い、余った少数の領域をフリーリストにキャッシュする方式を用いた場合の結果である。また、同「NVメモリ(ページ毎)」は、当該方式を用いずに、ファイルシステムからブロック単位での領域確保を行った場合の結果である。また、「fork+exit」はforkシステムコールによりプロセスを作成し終了するものである。また、「fork+execve」は、「fork+exit」に加え、さらにexecveシステムコールにより別プログラムを起動するものである。また、「fork+sh」は、シェルから別プログラムを起動するようにしたものである。
図12より、メインメモリに割り当てるための領域をフリーリストにキャッシュすることで、23〜26%性能向上が実現でき、DRAMの場合と同等の性能を実現することができることがわかる。逆に、ファイルシステムをそのまま空き領域の管理機構として用いるだけでは効率が悪く、OS実行性能への影響があることがわかる。少数の領域をキャッシュすることで、領域割当て時のコストを削減し、ファイルシステムを空き領域の管理機構とするオーバヘッドを隠蔽することができる。
また、図13は、ページング機構との性能比較を行った結果を示す図である。当該比較は、ページングを行う場合と、NVメモリから直接メモリを割り当てることができる場合とで、大量のメモリアクセスが発生するときに性能差が生じるかどうかを計測したものである。図13において、横軸は、割当メモリサイズ、縦軸はRDTSC命令により取得した実行命令数を「1000」で割った値である。
図13より、「DRAMのみ」(凡例の1番目)と、「NVメモリ(キャッシュ)」(凡例の3番目)とは、ほぼ同等の性能であるが、「DRAMのみ」は、メモリが足りないため、128MB以上の割当てができない。また、「DRAMとスワップファイルの組み合わせ」(凡例の2番目)は、512MBまでの割当てができているが、「NVメモリ(キャッシュ)」よりも約7.4倍のコスト(縦軸)がかかっている。また、「NVメモリ(ページ毎)」(凡例の4番目)は、「NVメモリ(キャッシュ)」よりも約1.8倍のコスト(縦軸)がかかっている。従って、NVメモリをメインメモリとファイルシステムの両方に使用することで、ページングが不要になり、DRAMのみの場合と同等の性能を維持することができることがわかる。
以上、本実施の形態による情報処理装置1によれば、NVメモリを領域分割することなく、メインメモリ、およびストレージとして使用することができる。これにより、NVメモリを、メインメモリ領域、ストレージ領域と領域分割することなく使用することができ、単一システムで使用できるメモリ領域を増やすことができる。また、これにより、ページングが不要になるため、システムの処理性能を向上させることができる。
また、本実施の形態による情報処理装置1によれば、プロセスに割り当てられ、その後、解放されたNVメモリ上の空き領域を、ファイルシステムに空き領域として登録することができる。これにより、ファイルシステムの一貫性を保つことができる。
なお、本実施の形態において、ファイル管理情報格納手段141には、ファイルの識別子と、1以上の物理アドレスとを有するファイル管理情報が格納されてもよい。この場合、書込手段145は、通常、書込要求のあったファイルのファイル識別子と、当該ファイルを書き込んだ1以上のブロックを識別する物理アドレスとを対応付け、ファイル管理情報格納手段141に蓄積する。また、読出手段146は、読出要求または削除要求のあったファイルのファイル識別子に対応する1以上の物理アドレスを、ファイル管理情報格納手段141から取得する。
また、本実施の形態において、情報処理装置1は、領域情報格納手段143を備えていなくてもよい。この場合、領域情報は、ファイル管理情報格納手段141に格納されていてもよいし、ファイル管理情報が有していてもよい。
また、本実施の形態において、メモリ管理部15は、例えば、プロセスを識別するプロセス識別子と、当該プロセスに対応する1以上の論理アドレスとを有する1以上のプロセス管理情報が格納されるプロセス管理情報格納手段(図示せず)を備えていてもよい。この場合、メモリ管理手段152は、通常、実行が要求されたプロセスを識別するプロセス識別子と、当該プロセスに割り当てた1以上の各ページを識別する1以上の論理アドレスとを対応付け、プロセス管理情報としてプロセス管理情報格納手段に蓄積する。また、当該論理アドレスは、物理アドレスであってもよい。
また、本実施の形態において、情報処理装置1は、2以上のNVメモリ11を備えていてもよい。この場合、当該2以上のNVメモリ11は、通常、一の物理アドレス空間に、連続して配置されることが好適である。
また、本実施の形態において、情報処理装置1は、揮発性メモリ12を備えていなくてもよい。この場合の情報処理装置1のブロック図を、図15に示す。また、この場合、ファイルシステム部14は、通常、NVメモリ11が有する1以上の単位領域のうち、所定の数以下(合計サイズが所定のサイズ以下)の領域を使用する。言い換えると、ファイルシステム部14は、NVメモリ11が有する1以上の単位領域のうち、所定の数以上(合計サイズが所定のサイズ以上)の領域を使用せずに残す。これは、メモリ管理部15が使用する領域を確保するためである。
また、本実施の形態において、ファイルシステム部14とメモリ管理部15とは、通常、NVメモリ11が有する1以上の単位領域を、ファイルシステム部14が使用する領域と、メモリ管理部15とが使用する領域とに区別することなく使用する。つまり、例えば、一の単位領域について、あるタイミングではファイルシステム部14が当該領域を使用しているが、他のあるタイミングではメモリ管理部15が当該領域を使用していることもある、ということである。これは、言い換えると、一の単位領域について、あるタイミングではメモリ管理部15が当該領域を使用しているが、他のあるタイミングではファイルシステム部14が当該領域を使用していることもある、ということである。
また、本実施の形態において、情報処理装置1は、所定のサイズの1以上の単位領域を有する不揮発性の記録媒体であるNVメモリ11と、前記1以上の単位領域に対してデータを読み書きするファイルシステム部14と、実行中のプロセスからの要求に応じて、前記1以上の単位領域のうち、未使用の領域である1以上の空き領域を当該プロセスに割り当てるメモリ管理部15とを備え、前記1以上の単位領域は、前記ファイルシステム部14が使用する領域と、前記メモリ管理部15が使用する領域とに区別されることなく使用される情報処理装置1であってもよい。
また、本実施の形態において、情報処理装置1は、所定のサイズの1以上の単位領域を有する不揮発性の記録媒体であるNVメモリ11と、前記NVメモリ11をストレージとして使用するファイルシステム部14と、前記NVメモリ11をメインメモリとして使用するメモリ管理部15とを備え、前記ファイルシステム部14は、前記1以上の単位領域をブロックとして使用し、前記メモリ管理部15は、前記1以上の単位領域をページとして使用する情報処理装置1であってもよい。
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
また、上記各実施の形態における情報処理装置を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、不揮発性の記録媒体であるNVメモリにアクセス可能なコンピュータを、前記NVメモリに対して、所定の単位でデータを読み書きするファイルシステム部と、実行が要求されたプロセスに対し、前記NVメモリの所定の領域を割り当てるメモリ管理部として機能させるためのプログラムである。
なお、上記プログラムにおいて、ハードウェアでしか行われない処理は少なくとも含まれない。
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
また、図16は、前述のプログラムを実行して、前述の実施の形態の情報処理装置等を実現するコンピュータシステム9の概観図である。前述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
図16において、コンピュータシステム9は、CD−ROMドライブ9011、FDドライブ9012を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図17は、コンピュータシステム9のブロック図である。図17において、コンピュータ901は、CD−ROMドライブ9011、FDドライブ9012に加えて、MPU9013と、ブートアッププログラム等のプログラムを記憶するためのROM9014と、MPU9013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM9015と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク9016と、CD−ROMドライブ9011、FDドライブ9012、MPU9013等を相互に接続するバス9017とを備える。ここでは図示しないが、コンピュータ901は、さらに、LANへの接続を提供するネットワークカードを備えていてもよい。
コンピュータシステム9に、前述の実施の形態の情報処理装置等の機能を実行させるプログラムは、CD−ROM9101、またはFD9102に記憶されて、CD−ROMドライブ9011またはFDドライブ9012に挿入され、さらにハードディスク9016に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク9016に記憶されてもよい。プログラムは実行の際にRAM9015にロードされる。プログラムは、CD−ROM9101、FD9102またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、前述の実施の形態の情報処理装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム9がどのように動作するかは周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。