JP5619198B2 - 情報処理装置、情報処理方法、およびプログラム - Google Patents

情報処理装置、情報処理方法、およびプログラム Download PDF

Info

Publication number
JP5619198B2
JP5619198B2 JP2013019170A JP2013019170A JP5619198B2 JP 5619198 B2 JP5619198 B2 JP 5619198B2 JP 2013019170 A JP2013019170 A JP 2013019170A JP 2013019170 A JP2013019170 A JP 2013019170A JP 5619198 B2 JP5619198 B2 JP 5619198B2
Authority
JP
Japan
Prior art keywords
file
area
areas
identification data
identifying
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013019170A
Other languages
English (en)
Other versions
JP2014149758A (ja
Inventor
三木 聡
聡 三木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
FIXSTARS CORPORATION
Original Assignee
FIXSTARS CORPORATION
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FIXSTARS CORPORATION filed Critical FIXSTARS CORPORATION
Priority to JP2013019170A priority Critical patent/JP5619198B2/ja
Priority to PCT/JP2013/078734 priority patent/WO2014119063A1/ja
Priority to US14/765,366 priority patent/US10503702B2/en
Publication of JP2014149758A publication Critical patent/JP2014149758A/ja
Application granted granted Critical
Publication of JP5619198B2 publication Critical patent/JP5619198B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Description

本発明は、不揮発性メモリを使用する情報処理装置等に関するものである。
従来、SSD(非特許文献1参照)や、EEPROM(非特許文献2参照)などの不揮発性メモリ(Non−Volatile Memory、以下、適宜、NVメモリ)が開発されている。
"SSDとは"、[online]、IT用語辞典 e-Words、[2013年1月23日検索]、インターネット[URL;http://e-words.jp/w/SSD.html] "EEPROMとは"、[online]、IT用語辞典 e-Words、[2013年1月23日検索]、インターネット[URL;http://e-words.jp/w/EEPROM.html]
近年、NVメモリをメインメモリとして用いる研究、およびメインメモリをストレージとして用いる研究等により、NVメモリをメインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、NVメモリをメインメモリおよびストレージとして使用することが可能となっている。NVメモリを、メインメモリおよびストレージの両方として使用することができるということは、その両方を1つに融合できることを意味する。また、当該融合により、システムの処理性能向上につながるという利点がある。しかしながら、その一方で、ファイルシステムのブロックを直接メインメモリの一部とすることには、実装面、管理面での欠点もある。これは、つまり、従来のNVメモリをメインメモリおよびストレージとして用いる方法では、システムの異常終了時においてファイルシステムの不整合を起こす可能性があった。
本発明は、不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するファイル管理手段と、プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける受付手段と、前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、前記ファイル管理手段によって管理されているいずれのファイルを構成する領域でもない領域のうちから1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理する割当手段とを備え、前記ファイル管理手段は、前記割当手段によっていずれかの領域がプロセスに割り当てられた場合、当該割り当てられた領域を識別する領域識別データを、いずれかのファイルを識別するファイル識別データに対応付けて記憶手段に記憶させることにより、当該割り当てられた領域をファイルとして管理する情報処理装置を第1の態様として提供する。
このような構成により、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができる。
また、本発明は、不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するファイル管理手段と、プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける受付手段と、前記ファイル管理手段によって管理されている或るファイルを構成する1以上の領域を識別する領域識別データを取得し、当該取得した領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させることにより未割当の領域を管理し、前記要求に応じて、管理している未割当の1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理するとともに、当該プロセスに割り当てた領域を未割当として管理している領域から除外する割当手段とを備える情報処理装置を第2の態様として提供する。
このような構成により、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができる。
また、本発明は、上記の第2の態様にかかる情報処理装置において、前記割当手段は、前記要求に応じたプロセスへの領域の割り当てを行う前に、前記或るファイルを構成する全ての領域の領域識別データを取得し、取得した領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させる、という構成を第3の態様として提供する。
このような構成により、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができる。
また、本発明は、上記の第2の態様にかかる情報処理装置において、前記割当手段は、前記受付手段によって前記要求が受け付けられたとき、管理している未割当の領域の数量が前記要求に応じた数量に対し不足する場合、前記或るファイルを構成する1以上の領域の領域識別データのうち当該不足を補う数量の未取得の領域識別データを取得し、当該取得した領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させた後、前記要求に応じたプロセスに対する領域の割り当てを行う、という構成を第4の態様として提供する。
このような構成により、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができる。
また、本発明は、不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するファイル管理手段と、プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける受付手段とを備え、前記ファイル管理手段は、前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、管理しているいずれのファイルを構成する領域でもない領域のうちの1以上の領域を識別する領域識別データを、新たなファイル識別データに対応付けて記憶手段に記憶させることにより、当該1以上の領域を新たなファイルとして管理し、前記要求に応じて、前記新たなファイルを構成する1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理する割当手段を備える情報処理装置を第5の態様として提供する。
このような構成により、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができる。
本発明による情報処理装置等によれば、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができる。
実施の形態1における情報処理装置1のブロック図 同情報処理装置1の全体動作について説明するフローチャート 同領域の割当処理について説明するフローチャート 同領域の解放処理について説明するフローチャート 同ファイル管理情報の例を示す図 同ファイル管理情報の例を示す図 同メモリ管理情報の例を示す図 同メモリ管理情報の例を示す図 同ファイル管理情報の例を示す図 同システムの構成例を示す図 同関数のプロトタイプ宣言の例を示す図 同関数の呼び出しの例を示す図 同閾値の変更例を示す図 同メモリ割当コストの比較の実験結果を示す図 同QEMUの起動コマンドの例を示す図 同不整合報告の結果を示す図 同ファイルシステムの整合性への影響の実験結果を示す図 同実行命令数、キャッシュミス回数の計測結果を示す図 上記実施の形態におけるコンピュータシステムの概観図 上記実施の形態におけるコンピュータシステムのブロック図
以下、本発明による情報処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
(実施の形態1)
本実施の形態において、メインメモリとして使用する領域とストレージとして使用する領域とを区別することなく、NVメモリをメインメモリおよびストレージとして使用する情報処理装置1であって、メインメモリとして使用する領域をファイルシステムにて管理する情報処理装置1について説明する。なお、ここで、ストレージとは、いわゆる2次記憶装置や、補助記憶装置と呼ばれる記憶装置のことである。また、メインメモリとは、いわゆる1次記憶装置や、主記憶装置と呼ばれる記憶装置のことである。また、「メインメモリとして使用する領域」は、「実行中のプロセスが使用する領域」と言い換えてもよい。
図1は、本実施の形態における情報処理装置1のブロック図である。情報処理装置1は、NVメモリ11、受付部12、ファイルシステム部13、メモリ管理部14を備える。また、ファイルシステム部13は、ファイル管理情報格納手段131を備える。また、メモリ管理部14は、領域識別子格納手段141、未使用領域検出手段142、ファイル管理情報追記手段143、領域識別子取得手段144、割当手段145を備える。
また、本実施の形態における情報処理装置1が備えるファイルシステム部13、およびメモリ管理部14は、例えば、いわゆるOSや、当該OSのカーネルと呼ばれるものなどである。
NVメモリ11は、不揮発性の記録媒体である。NVメモリ11は、例えば、PCM(Pahse Change Memory、相変化メモリ)や、MRAM、ReMAM、EEPROM、フラッシュメモリなどである。また、NVメモリ11は、通常、不揮発性メモリであれば、その形状や種類などは、問わない。また、NVメモリ11は、例えば、バイト単位アクセスが可能な不揮発性メモリであることが好適である。
また、NVメモリ11は、通常、1以上の領域を有する。当該領域には、通常、プロセスが使用するデータが格納される。当該プロセスは、例えば、ジョブや、タスク、スレッドなどと呼ばれる場合もある。また、当該データは、例えば、ファイルや、ファイルの一部、変数に代入された値などである。また、領域のサイズ(容量)は、通常、予め決められている。当該サイズは、例えば、4KB(キロバイト)や、512B(バイト)などである。また、当該一の領域は、例えば、後述のファイルシステム部13からは、「ブロック」として使用される。また、当該一の領域は、例えば、後述のメモリ管理部14からは、「ページ」として使用される。つまり、当該一の領域は、通常、2以上の名称で呼ばれる。また、本実施の形態において、当該ブロックのサイズと、当該ページのサイズとは、同一である。また、当該サイズは、4KBであることが好適である。
なお、NVメモリ11が有する1以上の各領域を、以下、適宜、「NVメモリ11の領域」、または「領域」とする。また、データが書き込まれていない領域や、データの書き込みが許可されている領域などを、以下、適宜、未使用領域とする。また、データが書き込まれている領域や、データの書き込みが許可されていない領域などを、以下、適宜、使用領域とする。
また、NVメモリ11は、通常、一の物理アドレス空間に配置される。当該物理アドレス空間は、通常、連続した1以上の物理アドレスを有する。また、「物理アドレス空間に配置される」とは、NVメモリ11が有する1以上の各領域と、一の物理アドレスとが対応付けられることである。つまり、当該一の領域は、一の物理アドレスにより識別される。また、当該一の領域は、例えば、論理アドレスや仮想アドレスなどにより間接的に識別されてもよい。
また、NVメモリ11が有する1以上の各領域は、領域識別子により識別される。領域識別子とは、当該1以上の各領域を識別する情報である。領域識別子は、例えば、物理アドレスや、論理アドレス、仮想アドレスなどである。つまり、領域識別子は、当該1以上の各領域を、直接的または間接的に識別する情報であればよい。
また、上記、NVメモリ11の物理アドレス空間への配置は、通常、後述のファイルシステム部13が行う。また、当該配置は、例えば、後述のメモリ管理部14が行ってもよい。また、当該配置は、例えば、図示しないアドレス空間配置部が行ってもよい。
受付部12は、指示や情報などを受け付ける。指示は、例えば、プログラムの実行の指示や、プロセスの実行の指示、プロセスへの領域の割当の指示、ファイル操作の指示などである。また、情報は、例えば、いわゆるコマンドや、当該コマンドに与える引数などである。また、これらの指示や情報は、通常、指示や情報を出力するプログラムが出力する。
ファイルシステム部13は、いわゆるファイルシステムである。当該ファイルシステムは、通常、ディスクファイルシステム(ローカルファイルシステム)である。また、当該ファイルシステムは、例えば、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を対象としたファイルシステムであれば、何でもよい。つまり、ファイルシステム部13は、NVメモリ11を、いわゆるストレージとして使用する。また、ファイルシステム部13は、通常、NVメモリ11を1以上の領域に分割し、当該一の領域を、ブロックとして使用する。
また、ファイルシステム部13は、ファイルシステムであるので、NVメモリ11に保存されている1以上のファイルを管理する。「ファイルを管理する」とは、例えば、書き込みを要求されたファイルをNVメモリ11に書き込むこと、読み出しを要求されたファイルをNVメモリ11から読み出すこと、削除を要求されたファイルをNVメモリ11から削除すること、当該書き込みに応じて、当該書き込んだファイルを管理するための情報(以下、適宜、ファイル管理情報)をファイル管理情報格納手段131に蓄積すること、当該削除に応じて、当該削除したファイルに対応するファイル管理情報をファイル管理情報格納手段131から削除すること、ファイルが書き込まれていない領域を識別する領域識別子をファイル管理情報格納手段131に蓄積すること、ファイルが書き込まれている領域の識別子を要求に応じてファイル管理情報格納手段131から取得することなどである。また、ファイルを削除することとは、例えば、NVメモリ11からはファイルを削除せず、当該ファイルに対応するファイル管理情報を削除することや、当該ファイル管理情報にファイルが削除されたことを示すフラグを付与することなどであってもよい。
なお、ファイルシステム部13は、ファイルシステムであり、OSの機能である。従って、「ファイルを管理する」とは、ファイルシステムが行う処理や、ファイルシステムの機能のすべてを含むと考えてよい。また、ファイルシステムには、いわゆる仮想ファイルシステムを含むと考えてもよい。
ここで、ファイル管理情報とは、ファイルを管理するための情報である。ファイル管理情報は、通常、少なくとも、ファイル識別子と、領域識別子とを有する。また、一のファイル識別子は、通常、1以上の領域識別子と対応付いている。ファイル識別子は、例えば、任意の文字列や、任意の数値、いわゆるファイル名などである。また、ファイル識別子は、ファイルを識別することができれば、その形式や内容などは、問わない。
また、ファイル管理情報は、例えば、ファイルが作成された日時や、ファイルが更新された日時、ファイルのアクセス権(パーミッション)、ファイルを作成したユーザなどのファイルの属性を示す情報を有していてもよい。また、これらの情報は、通常、一のファイル識別子に対応付いている。
例えば、一のファイルをNVメモリ11に書き込む場合、ファイルシステム部13は、例えば、まず、当該一のファイルを、どの1以上の領域に書き込むのかを決定する。当該1以上の領域は、通常、未使用領域である。そして、ファイルシステム部13は、当該一のファイルを、当該決定した領域ごとの1以上のデータに分割する。そして、ファイルシステム部13は、当該分割した1以上のデータを、当該決定した1以上の各領域に書き込む。
また、例えば、一のファイルをNVメモリ11に書き込んだ場合、ファイルシステム部13は、通常、書き込んだファイルを識別するファイル識別子と、書き込み先の1以上の各領域を識別する1以上の領域識別子との対応を示すファイル管理情報を、ファイル管理情報格納手段131に蓄積する。当該蓄積は、通常、ファイル管理情報格納手段131への追記である。
また、例えば、一のファイルをNVメモリ11から読み出す場合、ファイルシステム部13は、まず、当該一のファイルが書き込まれている1以上の領域を識別する領域識別子を、ファイル管理情報から取得する。そして、ファイルシステム部13は、取得した1以上の領域識別子が示す領域から、1以上に分割されたファイルのデータを取得する。
また、例えば、一のファイルをNVメモリ11から削除する場合、ファイルシステム部13は、まず、当該一のファイルが書き込まれている1以上の領域を識別するファイル識別子を、ファイル管理情報から取得する。そして、ファイルシステム部13は、取得した1以上の領域識別子が示す領域から、データを消去する。なお、当該「消去」には、通常、当該ファイル管理情報を削除することも含まれる。
また、例えば、一のファイルをNVメモリ11から削除した場合、ファイルシステム部13は、通常、削除したファイルを識別するファイル識別子を有するファイル管理情報を、ファイル管理情報格納手段131から削除する。
また、例えば、一のファイルをNVメモリ11から削除する場合、ファイルシステム部13は、例えば、当該一のファイルを識別するファイル識別子を有するファイル管理情報を、ファイル管理情報格納手段131から削除することのみを行ってもよい。また、当該ファイル管理情報の削除は、例えば、当該ファイル管理情報に削除したことを示すフラグを付与することであってもよい。
また、ここで、「ファイルシステムの不整合」とは、ファイルシステムの整合性が保たれていない状態のことである。当該状態は、例えば、上記のファイル管理情報において、ファイル識別子が対応付いていない領域識別子を有している状態のことである。言い換えると、当該状態は、ファイル管理情報が領域識別子のみを有している状態のことである。つまり、「ファイルシステムの不整合」とは、ファイル管理情報において使用領域として管理されている領域が、どのファイルからも使用されていない状態のことである。
また、ファイルシステム部13は、例えば、1以上の領域を管理するための情報であるファイル領域管理情報を保持していてもよい。「領域を管理する」とは、一の領域が未使用領域であるのか使用領域であるのかを管理することである。ファイル領域管理情報は、例えば、未使用領域を識別する1以上の領域識別子を有する。また、ファイル領域管理情報は、例えば、使用領域を識別する1以上の領域識別子を有する。また、ファイル領域管理情報は、例えば、未使用領域および使用領域を識別する1以上の領域識別子を有する。未使用領域および使用領域を識別する1以上の領域識別子を有する場合、当該1以上の各領域識別子には、通常、領域が未使用領域であるのか使用領域であるのかを示すフラグが対応付いている。また、ファイル領域管理情報は、例えば、図示しないファイル領域管理情報格納手段に格納されていてもよい。
例えば、NVメモリ11にファイルを書き込んだ場合、ファイルシステム部13は、当該書き込んだ1以上の各領域を識別する1以上の領域識別子を、使用領域を識別する領域識別子として、ファイル領域管理情報格納手段に蓄積する。また、同じ領域識別子が既に格納されている場合、ファイルシステム部13は、当該領域識別子を削除してもよいし、当該領域識別子に使用領域であることを示すフラグを付与してもよい。
また、例えば、NVメモリ11からファイルを削除した場合、ファイルシステム部13は、当該削除した1以上の各領域を識別する1以上の領域識別子を、未使用領域を識別する領域識別子として、ファイル領域管理情報格納手段に蓄積する。また、同じ領域識別子が既に格納されている場合、ファイルシステム部13は、当該領域識別子を削除してもよいし、当該領域識別子に未使用領域であることを示すフラグを付与してもよい。
また、ファイルを書き込む領域を決定する場合、ファイルシステム部13は、例えば、上記のファイル領域管理情報を用いて、当該ファイルを書き込む領域を決定してもよい。当該「ファイルを書き込む領域を決定する」とは、通常、1以上の各未使用領域を識別する1以上の領域識別子を取得することである。例えば、ファイル領域管理情報が未使用領域を識別する1以上の領域識別子を有する場合、ファイルシステム部13は、通常、書き込むファイルのサイズに合う1以上の領域識別子を、ファイル領域管理情報から取得する。また、例えば、ファイル領域管理情報が使用領域を識別する1以上の領域識別子を有する場合、ファイルシステム部13は、通常、書き込むファイルのサイズに合う1以上の領域識別子であり、ファイル領域管理情報が有さない1以上の領域識別子を取得する。また、例えば、ファイル領域管理情報が未使用領域および使用領域を識別する1以上の領域識別子を有する場合、ファイルシステム部13は、通常、書き込むファイルのサイズに合う1以上の領域識別子であり、未使用領域であることを示すフラグが対応付いている1以上の領域識別子を、ファイル領域管理情報から取得する。
なお、ファイルシステムは、公知の技術であるので、ファイルシステム部13が行う処理や動作については、適宜、説明を省略する。
ファイル管理情報格納手段131には、1以上のファイル管理情報が格納される。当該1以上のファイル管理情報の集合を、以下、適宜、ファイル管理情報群とする。また、ファイル管理情報については、説明済みであるので、説明を省略する。
メモリ管理部14は、いわゆるメモリ管理を行う。メモリ管理とは、例えば、実行中のプロセスからの要求に応じて、NVメモリ11が有する1以上の領域を確保し、当該確保した領域を当該プロセスに割り当てることや、プロセスが終了した場合に、当該プロセスに割り当てられていた1以上の領域を、未使用領域として解放することなどである。
「1以上の領域を確保する」とは、当該1以上の各領域を識別する1以上の領域識別子を取得することである。
また、実行中のプロセスは、通常、1つの仮想アドレス空間を持つ。従って、「1以上の領域を割り当てる」とは、通常、当該仮想アドレス空間が有する1以上の各仮想アドレスと、1以上の各領域識別子とを対応付けることや、当該1以上の領域識別子をプロセスに渡すことなどである。当該領域識別子は、通常、物理アドレスである。また、このとき、メモリ管理部14は、プロセスを識別するプロセス識別子を対応付けてもよい。また、このとき、メモリ管理部14は、当該対応付けた結果を示す情報(以下、適宜、メモリ管理情報)を、NVメモリ11に蓄積する。また、当該領域の割り当てを、以下、適宜、領域割当、メモリ割当、ブロック割当、ページ割当などとする。
また、「1以上の領域を解放する」とは、通常、仮想アドレスと領域識別子との対応付けを解除することである。この場合、メモリ管理部14は、通常、当該対応付けを示すメモリ管理情報を、NVメモリ11から削除する。
ここで、メモリ管理情報とは、NVメモリ11の未使用領域や使用領域を管理するための情報である。また、メモリ管理情報は、通常、少なくとも、1以上の仮想アドレスと、1以上の物理アドレスとを有する。また、当該1以上の各仮想アドレスと、1以上の各物理アドレスとは、通常、1対1で対応付いている。また、当該対応付いた情報には、プロセスを識別するプロセス識別子が対応付いていてもよい。プロセス識別子は、例えば、プロセス名や、プロセスの番号などである。また、プロセス識別子は、プロセスを識別することができれば、その形式や内容などは、問わない。また、プロセス管理情報は、1以上の仮想アドレスと1以上の物理アドレスとが対応付いた情報であってもよいし、当該対応付いた情報を1以上有する情報であってもよい。
また、メモリ管理部14が確保する1以上の領域は、通常、ファイルシステム部13がファイルとして使用し得る1以上の領域である。「ファイルとして使用し得る1以上の領域」とは、ファイルが書き込まれる可能性のある1以上の領域や、ファイルが書き込まれている1以上の領域、書き込まれているデータがファイルとして扱われる可能性のある1以上の領域などである。つまり、当該1以上の領域は、1以上の未使用領域であってもよいし、1以上の使用領域であってもよい。また、メモリ管理部14は、通常、ファイルシステム部13を介して1以上の領域の確保を行う。「ファイルシステム部13を介して」とは、ファイル管理情報格納手段131に格納されているファイル管理情報を用いて、1以上の領域を確保することである。
また、メモリ管理部14は、プロセスに割り当てた領域や、未使用領域、使用領域などの管理を行う。当該「管理」とは、例えば、仮想アドレスと領域識別子との対応を示す情報を予め決められた記憶領域に蓄積することや、未使用領域を識別する1以上の領域識別子を予め決められた記憶領域に蓄積すること、使用領域を識別する1以上の領域識別子を予め決められた記憶領域に蓄積することなどである。また、当該予め決められた記憶領域とは、通常、NVメモリ11が有する領域である。
なお、メモリ管理は、公知の技術であるので、メモリ管理部14が行う処理や動作については、適宜、説明を省略する。また、メモリ管理部14は、例えば、1以上の領域の確保や、当該確保した1以上の領域のプロセスへの割り当て、割り当てた1以上の領域の解放などを、通常、後述の各手段により行う。
領域識別子格納手段141には、1以上の領域識別子が格納される。領域識別子については、説明済みであるので、説明を省略する。なお、当該領域識別子は、通常、物理アドレスである。
未使用領域検出手段142は、NVメモリ11から未使用領域を検出し、当該未使用領域を識別する1以上の領域識別子を取得する。「未使用領域を検出する」とは、未使用領域を特定することである。また、未使用領域検出手段142は、通常、プロセスから要求されたサイズに合う1以上の未使用領域を検出する。当該「プロセスから要求されたサイズに合う」とは、通常、当該要求されたサイズが収まることである。つまり、当該1以上の未使用領域のサイズは、通常、当該要求されたサイズ以上のサイズであり、当該要求されたサイズとの差が最小であるサイズである。また、未使用領域検出手段142は、通常、当該1以上の領域識別子を、ファイル管理情報を用いて取得する。当該ファイル管理情報は、ファイル管理情報格納手段131に格納されているファイル管理情報である。
例えば、未使用領域検出手段142は、まず、NVメモリ11が有する1以上の各領域を識別する1以上の領域識別子を取得する。当該1以上の領域識別子は、例えば、予めNVメモリ11に格納されているものとする。そして、未使用領域検出手段142は、当該取得した1以上の領域識別子のうち、ファイル管理情報が有さない1以上の領域識別子を取得する。
例えば、NVメモリ11が配置された物理アドレス空間が有する物理アドレスが、「0xF0000001」、「0xF0000002」、「0xF0000003」、「0xF0000004」であるとする。また、ファイル管理情報が有する領域識別子が、物理アドレス「0xF0000001」、「0xF0000004」であるとする。また、NVメモリ11が有する1以上の各領域のサイズが、「4KB」であるとする。また、プロセスから要求されたサイズが、「3KB」であるとする。この様な場合、確保すべき領域の数は、1つである。従って、未使用領域検出手段142は、物理アドレス「0xF0000002」、「0xF000000」により識別される2つの領域を未使用領域として検出する。そして、未使用領域検出手段142は、当該2つの物理アドレスのうちの1つを取得する。
なお、未使用領域検出手段142が取得した1以上の各領域識別子により識別される1以上の領域は、通常、領域の割り当てを要求したプロセスに割り当てられる。また、当該割り当ては、通常、後述の割当手段145が行う。また、当該割り当ては、未使用領域検出手段142が行ってもよい。
ファイル管理情報追記手段143は、ファイル管理情報格納手段131にファイル管理情報を追記する。「ファイル管理情報を追記する」とは、ファイル管理情報格納手段131にファイル管理情報を蓄積し、ファイル管理情報格納手段131に格納されているファイル管理情報群に、新たなレコード(ファイル管理情報)を追記することである。また、当該ファイル管理情報格納手段131に蓄積されるファイル管理情報は、一のファイル識別子と1以上の領域識別子とが対応付いた情報である。当該1のファイル識別子は、通常、ファイル管理情報格納手段131に格納されている1以上のファイル識別子のいずれかである。また、当該1以上の領域識別子は、通常、未使用領域検出手段142が取得した1以上の領域識別子である。
ファイル管理情報追記手段143は、例えば、以下の手順により、ファイル管理情報を追記する。
(a−1)未使用領域検出手段142が取得した1以上の領域識別子を取得する。
(a−2)ファイル管理情報が有する1以上のファイル識別子から、1つのファイル識別子を取得する。
(a−3)(a−1)で取得した1以上の領域識別子と、(a−2)で取得した1つのファイル識別子とを対応付けて、ファイル管理情報を作成する。
(a−4)(a−3)で作成したファイル管理情報を、ファイル管理情報格納手段131に追記する。
また、ファイル管理情報追記手段143は、例えば、以下の手順により、ファイル管理情報を追記してもよい。
(b−1)未使用領域検出手段142が取得した1以上の領域識別子を取得する。
(b−2)(b−1)で取得した1以上の領域識別子を、ファイル管理情報格納手段131に追記する。
(b−3)ファイル管理情報が有する1以上のファイル識別子から、1つのファイル識別子を取得する。
(b−4)(b−3)で取得した1つのファイル識別子を、(b−2)で追記した1以上の領域識別子に対応付けて、ファイル管理情報格納手段131に追記する。
なお、上記の(b−2)において、「領域識別子を追記する」とは、ファイル管理情報格納手段131に領域識別子を蓄積し、ファイル管理情報格納手段131に格納されているファイル管理情報群に、当該領域識別子を新たなレコードとして追記することである。
また、上記の(b−4)において、「領域識別子に対応付けてファイル識別子を追記する」とは、ファイル管理情報格納手段131にファイル識別子を追記し、当該ファイル識別子を上記の(b−2)で追記したレコードに含めることである。
また、上記の(a−2)、(b−3)で取得する1つのファイル識別子は、通常、予め決められた方法により取得される。当該「予め決められた方法」とは、例えば、ランダムに選ぶことや、予め決められた順序で選ぶことなどである。予め決められた順序とは、例えば、ファイル識別子の昇順または降順、日時の昇順または降順などである。
また、ファイル管理情報追記手段143は、結果的に、上記の1以上の領域識別子と、上記の1つのファイル識別子とが対応付いたファイル管理情報を、ファイル管理情報格納手段131に蓄積することができればよく、その手順や方法などは、問わない。
領域識別子取得手段144は、ファイル管理情報格納手段131から、1以上の領域識別子を取得する。当該1以上の領域識別子は、ファイル管理情報格納手段131に格納されているファイル管理情報が有する領域識別子である。そして、領域識別子取得手段144は、当該取得した1以上の領域識別子を、領域識別子格納手段141に蓄積する。
また、領域識別子取得手段144は、通常、2つの方法のいずれかにより、1以上の領域識別子を取得する。当該2つの方法のうちの1つを、以下、適宜、事前確保とする。また、当該2つの方法のうちのもう1つを、以下、適宜、オンデマンド確保とする。
事前確保の場合、領域識別子取得手段144は、通常、予め決められたタイミングで、ファイル管理情報格納手段131から、すべての領域識別子を取得する。当該予め決められたタイミングとは、通常、情報処理装置1の起動の直後である。また、当該予め決められたタイミングとは、例えば、情報処理装置1の起動中や、最初にプロセスの実行の要求があった直後、最初に実行の要求があったプロセスの実行が開始された直後などであってもよい。
また、オンデマンド確保の場合、領域識別子取得手段144は、通常、実行中のプロセスから要求があるたびに、当該要求に応じて、領域識別子を取得する。また、このとき、領域識別子取得手段144は、通常、まず、領域識別子格納手段141に1以上の領域識別子が格納されているか否かを判断する。そして、格納されていない場合に、領域識別子取得手段144は、領域識別子を取得する。また、このとき、領域識別子取得手段144は、プロセスから要求されたサイズに合う1以上の領域識別子を取得する。
なお、領域識別子取得手段144が取得した1以上の各領域識別子により識別される1以上の領域は、通常、領域の割り当てを要求したプロセスに割り当てられる。また、当該割り当ては、通常、後述の割当手段145が行う。また、当該割り当ては、領域識別子取得手段144が行ってもよい。
割当手段145は、実行中のプロセスからの要求に応じて、1以上の領域を当該プロセスに割り当てる。また、割当手段145は、当該割り当ての結果を示すプロセス管理情報を、予め決められた記憶領域に蓄積する。当該予め決められた記憶領域とは、通常、NVメモリ11が有する領域である。
例えば、未使用領域検出手段142が1以上の領域識別子を取得した場合、割当手段145は、当該1以上の各領域識別子により識別される1以上の領域を、割り当てを要求したプロセスに割り当てる。当該割り当ての方法を、以下、適宜、半直接融合方式とする。半直接融合方式では、当該割り当てに加え、ファイル管理情報追記手段143により、未使用領域検出手段142が取得した1以上の領域識別子と、ファイル管理情報が有する1以上のファイル識別子のいずれかとが対応付いたファイル管理情報を、ファイル管理情報格納手段131に追記する。これに対し、当該1以上の領域識別子のファイル管理情報格納手段131への蓄積のみを行う割り当ての方法を、以下、適宜、直接融合方式とする。つまり、直接融合方式では、未使用領域検出手段142が取得した1以上の各領域識別子により識別される1以上の領域をプロセスに割り当て、当該1以上の領域識別子をファイル管理情報格納手段131に追記する。これに対し、半直接融合方式では、当該割り当てと当該追記に加え、ファイル識別子を、追記した1以上の領域識別子に対応付けてファイル管理情報格納手段131に追記する。
また、例えば、領域識別子取得手段144が1以上の領域識別子を取得した場合、割当手段145は、領域識別子取得手段144が取得し、領域識別子格納手段141に格納されている1以上の領域識別子のうちのいずれかにより識別される領域を、割り当てを要求したプロセスに割り当てる。当該割り当ての方法を、以下、適宜、間接融合方式とする。そして、割当手段145は、プロセスに割り当てた1以上の各領域を識別する1以上の領域識別子を、領域識別子格納手段141から削除する。
例えば、領域識別子取得手段144が事前確保により1以上の領域識別子を取得した場合、割当手段145は、領域識別子格納手段141に格納されている1以上の領域識別子から、プロセスが要求したサイズに合う1以上の各領域を識別する1以上の領域識別子を取得する。そして、割当手段145は、当該1以上の各領域識別子により識別される1以上の領域を、割り当てを要求したプロセスに割り当てる。
また、例えば、領域識別子取得手段144がオンデマンド確保により1以上の領域識別子を取得した場合、割当手段145は、領域識別子格納手段141に格納されている1以上の各領域識別子により識別される1以上の領域を、割り当てを要求したプロセスに割り当てる。
また、割当手段145は、例えば、実行中のプロセスからの要求に応じて、当該プロセスが要求したサイズと同サイズのファイルをNVメモリ11に書き込むことを、ファイルシステム部13に指示してもよい。当該「ファイルを書き込む」ことは、ファイルを作成することである。そして、割当手段145は、ファイルシステム部13から、ファイルが書き込まれた領域を識別する1以上の領域識別子を受信する。そして、割当手段145は、当該1以上の各領域識別子により識別される1以上の領域を、割り当てを要求したプロセスに割り当てる。当該割り当ての方法を、以下、適宜、mmap方式とする。
また、メモリ管理部14は、例えば、1以上の領域を管理するための情報であるメモリ領域管理情報を保持していてもよい。メモリ管理情報の形式や内容などは、ファイル領域管理情報と同様であるので、説明を省略する。また、メモリ領域管理情報は、図示しないメモリ領域管理情報格納手段に格納されていてもよい。
例えば、プロセスに1以上の領域を割り当てた場合、割当手段145は、当該割り当てた1以上の各領域を識別する1以上の領域識別子を、使用領域を識別する領域識別子として、メモリ領域管理情報格納手段に蓄積する。また、同じ領域識別子が既に格納されている場合、割当手段145は、例えば、当該領域識別子を削除してもよいし、当該領域識別子に、使用領域であることを示すフラグを対応付けてもよい。
また、例えば、プロセスの実行が終了した場合、割当手段145は、当該プロセスに割り当てていた1以上の各領域を識別する1以上の領域識別子を、未使用領域を識別する領域識別子として、メモリ領域管理情報格納手段に蓄積する。また、同じ領域識別子が既に格納されている場合、割当手段145は、例えば、当該識別子を削除してもよいし、当該領域識別子に、未使用領域であることを示すフラグを対応付けて蓄積してもよい。
また、プロセスに割り当てる領域を決定する場合、割当手段145は、例えば、メモリ領域管理情報を用いて、当該領域を決定してもよい。
なお、受付部12における情報や指示などの入力手段は、メニュー画面によるものや、キーボードなど、何でもよい。受付部12は、メニュー画面の制御ソフトウェアや、キーボード等の入力手段のデバイスドライバなどで実現され得る。
また、ファイルシステム部13、メモリ管理部14、未使用領域検出手段142、ファイル管理情報追記手段143、領域識別子取得手段144、割当手段145は、通常、MPUやメモリ等から実現され得る。また、ファイルシステム部13などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。なお、ファイルシステム部13などは、ハードウェア(専用回路)で実現されてもよい。
また、ファイル管理情報格納手段131、領域識別子格納手段141は、通常、NVメモリ11が有する1以上の領域で実現される。また、ファイル管理情報格納手段131などは、例えば、NVメモリ11以外の不揮発性の記録媒体や、揮発性の記録媒体で実現されてもよい。また、ファイル管理情報格納手段131などに所定の情報が記憶される過程は、問わない。例えば、当該所定の情報は、記録媒体や、通信回線、入力デバイスなどを介してファイル管理情報格納手段131などに記憶されてもよい。
次に、情報処理装置1の全体動作について、フローチャートを用いて説明する。図2は、情報処理装置1の全体動作を示すフローチャートである。
(ステップS201)ファイルシステム部13は、NVメモリ11を物理アドレス空間に配置する。当該配置は、メモリ管理部14が行ってもよい。
(ステップS202)メモリ管理部14は、プロセスへの領域の割当方法が、間接融合方式かつ事前確保であるか否かを判断する。例えば、当該領域の割当方法を示す情報が所定の記憶領域に格納されている場合、メモリ管理部14は、当該情報により領域の割当方法を判断する。そして、間接融合方式かつ事前確保である場合は、ステップS203に進み、そうでない場合は、ステップS205に進む。
(ステップS203)領域識別子取得手段144は、ファイル管理情報格納手段131に格納されているすべての領域識別子を取得する。
(ステップS204)領域識別子取得手段144は、取得した1以上の領域識別子を、領域識別子格納手段141に蓄積する。
(ステップS205)ファイルシステム部13は、受付部12がファイル書込指示を受け付けたか否かを判断する。ファイル書込指示とは、ファイルをNVメモリ11に書き込むための指示である。また、ファイル書込指示は、通常、ファイル識別子と、ファイルを構成するデータとを有する。そして、受け付けた場合は、ステップS206に進み、そうでない場合は、ステップS209に進む。
(ステップS206)ファイルシステム部13は、ファイルを書き込むための1以上の領域を確保するために、1以上の領域識別子を取得する。
(ステップS207)ファイルシステム部13は、ステップS206で取得した1以上の各領域識別子が識別する1以上の領域に、ファイルを書き込む。
(ステップS208)ファイルシステム部13は、ステップS206で取得した1以上の領域識別子と、ステップS207で書き込んだファイルを識別するファイル識別子とを対応付け、ファイル管理情報としてファイル管理情報格納手段131に蓄積する。
(ステップS209)ファイルシステム部13は、受付部12がファイル読出指示を受け付けたか否かを判断する。ファイル読出指示とは、ファイルをNVメモリ11から読み出すための指示である。また、ファイル読出指示は、通常、ファイル識別子を有する。そして、受け付けた場合は、ステップS210に進み、そうでない場合は、ステップS212に進む。
(ステップS210)ファイルシステム部13は、読み出すファイルが書き込まれている1以上の各領域を識別する1以上の領域識別子を、ファイル管理情報格納手段131から取得する。
(ステップS211)ファイルシステム部13は、ステップS210で取得した1以上の各領域識別子により識別される1以上の領域から、ファイルを読み出す。
(ステップS212)ファイルシステム部13は、受付部12がファイル削除指示を受け付けたか否かを判断する。ファイル削除指示とは、ファイルをNVメモリ11から削除するための指示である。また、ファイル削除指示は、通常、ファイル識別子を有する。そして、受け付けた場合は、ステップS213に進み、そうでない場合は、ステップS216に進む。
(ステップS213)ファイルシステム部13は、削除するファイルが書き込まれている1以上の各領域を識別する1以上の領域識別子を、ファイル管理情報格納手段131から取得する。
(ステップS214)ファイルシステム部13は、ステップS213で取得した1以上の各領域識別子により識別される1以上の領域から、ファイルを削除する。
(ステップS215)ファイルシステム部13は、ステップS213で取得した1以上の領域識別子を有するファイル管理情報を、ファイル管理情報格納手段131から削除する。
(ステップS216)メモリ管理部14は、受付部12がプロセス実行指示を受け付けたか否かを判断する。プロセス実行指示とは、プロセスを実行するための指示である。また、プロセス実行指示は、通常、プロセス識別子を有する。そして、受け付けた場合は、ステップS217に進み、そうでない場合は、ステップS205に戻る。
(ステップS217)情報処理装置1は、プロセスを実行する。
(ステップS218)メモリ管理部14は、実行中のプロセスからの要求に応じて、当該プロセスに1以上の領域を割り当てる。この処理の詳細は、図3のフローチャートを用いて説明する。
(ステップS219)メモリ管理部14は、プロセスの実行が終了したか否かを判断する。終了した場合は、ステップS220に進み、そうでない場合は、ステップS219に戻る。
(ステップS220)メモリ管理部14は、実行が終了したプロセスに割り当てられていた1以上の領域を解放する。この処理の詳細は、図4のフローチャートを用いて説明する。
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
図3は、図2のフローチャートのステップS218の領域の割当処理を示すフローチャートである。
(ステップS301)メモリ管理部14は、プロセスへの領域の割当方法が、半直接融合方式であるか否かを判断する。半直接融合方式である場合は、ステップS302に進み、そうでない場合は、ステップS305に進む。
(ステップS302)未使用領域検出手段142は、ファイル管理情報格納手段131に格納されているファイル管理情報を用いて、プロセスから要求されたサイズに合う1以上の未使用領域を検出し、当該1以上の各未使用領域を識別する1以上の領域識別子を取得する。
(ステップS303)ファイル管理情報追記手段143は、ステップS302で取得した1以上の領域識別子と、ファイル管理情報が有する1以上のファイル識別子のいずれかとを対応付け、ファイル管理情報を作成する。
(ステップS304)ファイル管理情報追記手段143は、ステップS303で作成したファイル管理情報を、ファイル管理情報格納手段131に追記する。
(ステップS305)メモリ管理部14は、プロセスへの領域の割当方法が、間接融合方式かつ事前確保であるか否かを判断する。間接融合方式かつ事前確保である場合は、ステップS306に進み、そうでない場合は、ステップS307に進む。
(ステップS306)割当手段145は、領域識別子格納手段141から、プロセスから要求されたサイズに合う1以上の領域識別子を取得する。
(ステップS307)メモリ管理部14は、プロセスへの領域の割当方法が、間接融合方式かつオンデマンド確保であるか否かを判断する。間接融合方式かつオンデマンド確保である場合は、ステップS308に進み、そうでない場合は、ステップS312に進む。
(ステップS308)領域識別子取得手段144は、領域識別子格納手段141に1以上の領域識別子が格納されているか否かを判断する。格納されている場合は、ステップS311に進み、そうでない場合は、ステップS309に進む。
(ステップS309)領域識別子取得手段144は、ファイル管理情報格納手段131から、プロセスから要求されたサイズに合う1以上の領域識別子を取得する。
(ステップS310)領域識別子取得手段144は、ステップS309で取得した1以上の領域識別子を、領域識別子格納手段141に蓄積する。
(ステップS311)割当手段145は、領域識別子格納手段141から、プロセスから要求されたサイズに合う1以上の領域識別子を取得する。また、このとき、割当手段145は、当該取得した1以上領域識別子を、領域識別子格納手段141から削除する。当該削除は、例えば、削除したことを示すフラグを付与することであってもよい。
(ステップS312)メモリ管理部14は、プロセスへの領域の割当方法が、mmap方式であるか否かを判断する。mmap方式である場合は、ステップS313に進み、そうでない場合は、ステップS315に進む。
(ステップS313)割当手段145は、プロセスから要求されたサイズと同サイズのファイルを書き込むためのファイル書込指示を、ファイルシステム部13に送信する。
(ステップS314)割当手段145は、ファイルシステム部13から、ファイルが書き込まれた領域を識別する1以上の領域識別子を受信する。
(ステップS315)割当手段145は、ステップS302で取得した1以上の領域識別子、またはステップS306で取得した1以上の領域識別子、またはステップS311で取得した1以上の領域識別子、またはステップS314で受信した1以上の領域識別子を、領域の割り当てを要求したプロセスに割り当てる。また、割当手段145は、通常、当該割り当ての結果を示すメモリ管理情報を、図示しないメモリ管理情報格納手段に蓄積する。そして、上位処理にリターンする。
図4は、図2のフローチャートのステップS220の領域の解放処理を示すフローチャートである。
(ステップS401)割当手段145は、プロセスへの領域の割当方法が、半直接融合方式であるか否かを判断する。半直接融合方式である場合は、ステップS402に進み、そうでない場合は、ステップS404に進む。
(ステップS402)割当手段145は、プロセスに割り当てていた1以上の各領域を識別する1以上の領域識別子を有するファイル管理情報を、ファイル管理情報格納手段131から削除する。
(ステップS403)割当手段145は、プロセスに割り当てていた1以上の各領域を識別する1以上の領域識別子を有するメモリ管理情報を、図示しないメモリ管理情報格納手段から削除する。
(ステップS404)割当手段145は、プロセスへの領域の割当方法が、間接融合方式であるか否かを判断する。間接融合方式である場合は、ステップS405に進み、そうでない場合は、ステップS408に進む。
(ステップS405)割当手段145は、プロセスに割り当てていた1以上の各領域を識別する1以上の領域識別子を、図示しないメモリ管理情報格納手段から取得する。
(ステップS406)割当手段145は、ステップS405で取得した1以上の領域識別子を、領域識別子格納手段141に蓄積する。当該削除は、例えば、削除したことを示すフラグを削除することであってもよい。
(ステップS407)割当手段145は、ステップS405で取得した1以上の領域識別子を有するメモリ管理情報を、図示しないメモリ管理情報格納手段から削除する。
(ステップS408)割当手段145は、プロセスへの領域の割当方法が、mmap方式であるか否かを判断する。mmap方式である場合は、ステップS409に進み、そうでない場合は、上位処理にリターンする。
(ステップS409)割当手段145は、プロセスに割り当てていた1以上の各領域を識別する1以上の領域識別子を、図示しないメモリ管理情報格納手段から取得する。
(ステップS410)割当手段145は、ステップS409で取得した1以上の各領域識別子により識別される1以上の領域に書き込まれているファイルを削除するためのファイル削除指示を、ファイルシステム部13に送信する。
(ステップS411)割当手段145は、ステップS409で取得した1以上の領域識別子を有するメモリ管理情報を、図示しないメモリ管理情報格納手段から削除する。そして、上位処理にリターンする。
(具体例)
次に、情報処理装置1の動作の具体例について説明する。なお、本具体例において、NVメモリ11は、一の物理アドレス空間に配置されているものとする。また、NVメモリ11は、サイズが4KBである1以上の領域を有しているものとする。
(例1)
本例において、半直接融合方式による領域割当の例について説明する。なお、本例において、ファイル管理情報格納手段131には、図5に示す1以上のファイル管理情報が格納されているものとする。当該ファイル管理情報は、レコードを一意に特定するためのIDと、ファイル識別子(項目名:ファイル)と、物理アドレスとを有する。当該物理アドレスは、領域識別子である。また、図5のファイル管理情報は、例えば、物理アドレス「0x00000001」、「0x00000002」、「0x00000003」のそれぞれにより識別される3つの領域に、ファイル識別子「file01」により識別されるファイルが書き込まれていることを示す。
まず、ユーザが、情報処理装置1を操作し、任意のプログラムを実行する操作を行ったとする。すると、受付部12は、当該プログラムをプロセスとして実行するためのプロセス実行指示を受け付ける。当該プロセス実行指示は、プロセス識別子「proc01」を有するものとする。そして、情報処理装置1は、当該プロセス識別子により識別される上記プログラムを、プロセスとして実行する。
次に、実行中のプロセスが、10KBの領域を割り当てることを要求したとする。すると、受付部12は、領域を割り当てるための指示である領域割当指示を受け付ける。当該領域割当指示は、プロセス識別子「proc01」と、割り当てる領域のサイズ「10KB」を有しているものとする。
次に、未使用領域検出手段142は、図5のファイル管理情報を用いて、サイズ「10KB」に合う1以上の未使用領域を検出し、当該1以上の各領域を識別する1以上の物理アドレスを取得する。NVメモリ11が有する各領域のサイズは、「4KB」であるので、未使用領域検出手段142は、3つの物理アドレスを取得する。ここで、図5において、当該図に記載されている物理アドレス以外の物理アドレスにより識別される領域は、未使用領域であるものとする。この結果、未使用領域検出手段142は、「0x00000004」、「0x00000005」、「0x00000006」の物理アドレスを取得したものとする。
次に、ファイル管理情報追記手段143は、図5のファイル管理情報から、任意のファイル識別子を取得する。この結果、ファイル管理情報追記手段143は、図5の「ID=001」のファイル識別子「file01」を取得したものとする。このとき、ファイル管理情報追記手段143は、ファイル識別子を昇順にソートした際の先頭のファイル識別子を取得すると予め決められていたものとする。
次に、ファイル管理情報追記手段143は、上記で取得した3つの物理アドレス「0x00000004」、「0x00000005」、「0x00000006」と、上記で取得したファイル識別子「file01」を対応付け、ファイル管理情報を作成する。そして、ファイル管理情報追記手段143は、当該作成したファイル管理情報をファイル管理情報格納手段131に蓄積し、図5のファイル管理情報群に追記する。当該追記後のファイル管理情報は、図6である。図6において、「ID=008」から「ID=010」までが、追記したファイル管理情報である。
次に、割当手段145は、未使用領域検出手段142が取得した3つの物理アドレスにより識別される3つの領域を、プロセス識別子「proc01」により識別されるプロセスに割り当てる。そして、割当手段145は、当該割り当ての結果を示すメモリ管理情報を、図示しないメモリ管理情報格納手段に蓄積する。当該蓄積したメモリ管理情報は、図7である。当該メモリ管理情報は、レコードを一意に特定するためのIDと、プロセス識別子(項目名:プロセス)と、仮想アドレスと、物理アドレスとを有する。また、当該メモリ管理情報は、プロセス識別子「proc01」により識別されるプロセスの仮想アドレス空間が有する仮想アドレス「0xF0000001」、「0xF0000002」、「0xF0000003」のそれぞれと、物理アドレス「0x00000004」、「0x00000005」、「0x00000006」のそれぞれとが対応付いていることを示す。
(例2)
本例において、間接融合方式による領域割当の例について説明する。なお、本例において、ファイル管理情報格納手段131には、図5に示すファイル管理情報が格納されているものとする。
まず、事前確保の例について説明する。例1と同様に、ユーザが、情報処理装置1を操作し、任意のプログラムを実行するための操作を行ったとする。ここで、受付部12が受け付ける指示などは、例1と同様であるので、説明を省略する。
次に、領域識別子取得手段144は、図5のファイル管理情報が有するすべての物理アドレス(7つ)を取得する。そして、領域識別子取得手段144は、当該取得した7つの物理アドレスを、領域識別子格納手段141に蓄積する。
次に、割当手段145は、プロセス識別子「proc01」により識別されるプロセスが要求するサイズ「10KB」に合う3つの物理アドレスを、領域識別子格納手段141から取得する。この結果、割当手段145は、「0x00000011」、「0x00000012」、「0x00000013」の3つの物理アドレスを取得したものとする。また、割当手段145は、当該3つの物理アドレスを、領域識別子格納手段141から削除する。当該削除は、例えば、削除したことを示すフラグを付与することであってもよい。
次に、割当手段145は、取得した3つの物理アドレスにより識別される3つの領域を、プロセス識別子「proc01」により識別されるプロセスに割り当てる。そして、割当手段145は、当該割り当ての結果を示すメモリ管理情報を、図示しないメモリ管理情報格納手段に蓄積する。当該蓄積したメモリ管理情報は、図8である。当該メモリ管理情報が有する情報や、当該メモリ管理情報が示す意味などは、図7と同様であるので、説明を省略する。
次に、プロセス識別子「proc01」により識別されるプロセスの実行が終了したとする。すると、割当手段145は、図8のメモリ管理情報から、プロセス識別子「proc01」に対応する物理アドレス「0x00000011」、「0x00000012」、「0x00000013」を取得する。そして、割当手段145は、図8のメモリ管理情報を、メモリ管理情報格納手段から削除する。
次に、割当手段145は、取得した3つの物理アドレスを、領域識別子格納手段141に蓄積する。当該蓄積は、例えば、削除したことを示すフラグを削除することであってもよい。
次に、オンデマンド確保の例について説明する。上記と同様に、プロセス識別子「proc01」により識別されるプロセスが実行されており、当該プロセスがサイズ「10KB」の領域の割り当てを要求しているとする。
次に、領域識別子取得手段144は、領域識別子格納手段141に1以上の領域識別子が格納されているか否かを判断する。この結果、領域識別子取得手段144は、1以上の領域識別子が格納されていないと判断したものとする。
次に、領域識別子取得手段144は、プロセス識別子「proc01」により識別されるプロセスが要求するサイズ「10KB」に合う3つの物理アドレスを、図5のファイル管理情報から取得する。この結果、領域識別子取得手段144は、「0x00000011」、「0x00000012」、「0x00000013」の3つの物理アドレスを取得したものとする。そして、領域識別子取得手段144は、当該3つの物理アドレスを、領域識別子格納手段141に蓄積する。
次に、割当手段145は、領域識別子格納手段141に格納されている3つの物理アドレス「0x00000011」、「0x00000012」、「0x00000013」を取得する。また、割当手段145は、当該3つの物理アドレスを、領域識別子格納手段141から削除する。
次に、割当手段145は、取得した3つの物理アドレスにより識別される3つの領域を、プロセス識別子「proc01」により識別されるプロセスに割り当てる。そして、割当手段145は、当該割り当ての結果を示すメモリ管理情報を、図示しないメモリ管理情報格納手段に蓄積する。当該蓄積したメモリ管理情報は、図8である。
なお、プロセスの実行の終了後のメモリ管理情報の削除などの例については、上記と同様であるので、説明を省略する。
(例3)
本例において、mmap方式による領域割当の例について説明する。なお、本例において、ファイル管理情報格納手段131には、図5に示すファイル管理情報が格納されているものとする。
まず、例1と同様に、プロセス識別子「proc01」により識別されるプロセスが実行されており、当該プロセスがサイズ「10KB」の領域の割当を要求しているとする。
次に、割当手段145は、サイズ「10KB」のファイルをNVメモリ11に書き込むためのファイル書込指示を、ファイルシステム部13に送信する。当該ファイル書込指示は、ファイルのサイズ「10KB」を有しているものとする。
次に、受付部12は、上記のファイル書込指示を受け付ける。そして、ファイルシステム部13は、当該ファイル書込指示に従い、任意のファイル識別子を取得する。また、ファイルシステム部13は、図5のファイル管理情報を用いて、ファイルのサイズ「10KB」に合う3つの未使用領域を識別する物理アドレスを取得する。この結果、ファイルシステム部13は、ファイル識別子「file99」を取得したものとする。また、ファイルシステム部13は、「0x00000004」、「0x00000005」、「0x00000006」の物理アドレスを取得したものとする。
次に、ファイルシステム部13は、取得した3つの各物理アドレスにより識別される3つの領域に、ファイルを書き込む。そして、ファイルシステム部13は、当該書き込みの結果を示すファイル管理情報を、ファイル管理情報格納手段131に蓄積し、図5のファイル管理情報群に追記する。当該追記後のファイル管理情報は、図9である。当該ファイル管理情報が有する情報や、当該ファイル管理情報が示す意味などは、図5と同様であるので、説明を省略する。
次に、ファイルシステム部13は、ファイルを書き込んだ領域を識別する3つの物理アドレスを、メモリ管理部14に送信する。
次に、割当手段145は、3つの物理アドレス「0x00000004」、「0x00000005」、「0x00000006」を受信する。そして、割当手段145は、当該3つの物理アドレスにより識別される3つの領域を、プロセス識別子「proc01」により識別されるプロセスに割り当てる。そして、割当手段145は、当該割り当ての結果を示すメモリ管理情報を、図示しないメモリ管理情報格納手段に蓄積する。当該蓄積したメモリ管理情報は、図7である。
なお、プロセスの実行の終了後のメモリ管理情報の削除などの例については、例1、例2と同様であるので、説明を省略する。
(例4)
本例において、情報処理装置1の具体的な実現方法の例について説明する。なお、本例において、NVメモリ11は、単に「NVメモリ」と表記するものとする。また、情報処理装置1は、Linux(登録商標)カーネル(以下、カーネル)であるものとする。
まず、情報処理装置1を構成するシステムの構成例について説明する。当該構成例を示す図は、図10である。図10は、NVメモリとファイルシステムが融合されたシステムを示す概念図である。NVメモリが有する領域を、ストレージとして使用する領域、メインメモリとして使用する領域とに区別することなく、NVメモリをストレージおよびメインメモリの両方に使用できるようにするために、情報処理装置1は、NVメモリが有する領域を、ファイルシステムにより管理する。NVメモリ上のファイルシステムにファイルを格納する場合は、通常と同様に、ファイルのデータを格納するためのブロックが割り当てられる。ファイルに格納されたプログラムテキストおよびデータは、XIPにより、メインメモリとして直接参照できる。それ以外に、空きメモリ領域を必要とする場合は、ファイルシステムから空きブロックを取得する。図10のプロセスは、ファイルのテキストをXIPによりマップし、ヒープに必要な領域は空きブロックを取得しマップしている。なお、空きメモリ領域、空きブロックは、共に、未使用領域のことである。
次に、半直接融合方式の実現方法の例について説明する。半直接融合方式の実装には、ファイルシステムから確保したブロックへの参照を、事前に作成されたファイルに追加および削除する機能が必要となる。ファイルシステムからのブロック確保は、直接融合方式の実装を用いる。なお、直接融合方式の実現方法は、情報処理学会論文誌Vol.54、No.3に掲載予定の論文「Non−Volatileメインメモリとファイルシステムの融合」を参照されたい。また、ブロックへの参照を追加および削除するファイルは、ユーザプログラムから指定する。そのための機能を、キャラクタ型のデバイスドライバとして実装する。
また、ブロックへの参照を追加および削除するファイルの識別子を受け取るために、デバイスドライバのioctlインタフェースを使用する。ioctlインタフェースを実装した関数のプロトタイプ宣言は、例えば、図11である。
図11の関数は、ファイルの識別子として、ファイルディスクリプタを受け取る。その値は、3番目の引数「arg」で受け取る。また、当該関数は、「fget()」を用いて、ファイルディスクリプタからfile構造体を取得する。file構造体はファイルの実体を表すため、そこからinode番号や、ファイルを操作する関数などをたどることができる。inodeとは、ファイルシステムのデータ構造であり、公知であるので、詳細な説明を省略する。また、2番目の引数「cmd」で、半直接融合方式、間接融合方式(事前確保またはオンデマンド確保)のいずれを用いるかを指定する。
半直接融合方式は、確保したブロックのファイルシステム内でのオフセットを、参照を追加するファイル内のオフセットとし、ブロックをファイルに追加する。参照の追加および削除のための実装は、ファイルシステムの内部構造に依存するため、使用するファイルシステム(例えば、Ext2やPRAMFS)のそれぞれに必要である。PRAMFSの内部構造は単純である。従って、PRAMFSに実装する場合は、ファイルのinodeを直接操作する関数を実装する。また、Ext2の内部構造はやや複雑である。従って、Ext2に実装する場合は、可能な限り既存のコードを呼び出すことで、追加と削除を行う実装とする。そのため、Ext2への実装は、余分なブロック確保と解放を伴う冗長な実装となる。
次に、間接融合方式の実現方法の例について説明する。間接融合方式の実装には、事前およびオンデマンド確保のどちらについても、ファイルに割り当てたブロックのアドレスを取得する機能、メモリ割当には未使用の空きブロックを管理する機能が必要となる。メモリ割当に使用するファイルの識別子は、半直接融合方式で実装したデバイスドライバにより受け取る。また、プロセスからの、メモリアロケータを通した、メモリ割当および解放要求のインタフェースは、直接融合方式と同じである。
空きブロックの管理には、いわゆるフリーリストを用いる。空きブロックをメインメモリとして割り当てるには、ファイルに割り当てたブロックのアドレスを取得する必要がある。ファイルにブロックを割り当て、そのアドレスを取得するには、XIPをサポートするファイルシステムが提供するインタフェースである「get_xip_mem()」を用いる。図12に示すコードの様に「get_xip_mem()」を呼び出すことで、ファイル内の「offset」に対応するブロックのカーネル内の仮想アドレスおよび物理ページ番号を、それぞれ「kmem」、「pfn」に受け取ることができる。第3引数は、ブロックを確保するか否かを指定する。図12の様に「1」を指定するとブロックが確保され、「0」を指定するとブロックは確保されない。
また、事前確保では、初期化時に、図12の「offset」を、ファイルの先頭から最後のブロックに対応した値に変更していく。その結果、すべてのブロックが確保され、それらの仮想アドレスおよび物理ページ番号を取得することができる。そして、確保したブロックのアドレスを用いて、フリーリストを作成する。また、オンデマンド確保の場合、ファイルの先頭からブロックを割り当てていくが、フリーリストが空の場合に新たにブロックを確保する。事前確保およびオンデマンド確保のいずれにおいても、メモリ解放時には、ブロックはフリーリストに戻され、ファイルシステムに解放されない。
上記のように、間接融合方式は、ファイルシステムのインタフェースを用いて実装できるため、ファイルシステムへの変更は不要であり、またファイルシステムごとの実装も不要である。
次に、mmap方式の実現方法の例について説明する。mmap方式は、ファイルシステムからブロックを確保し、プロセスへのメモリ割当に使用するために、mmapシステムコール(以下、適宜、「mmap」)を用いる方式である。従って、mmap方式を実現するために、カーネル内への新規の実装は、不要である。mmap方式によるメモリ割当を行うには、プログラムでメモリ割当を行う際に、mmapシステムコールを用いるようにする。しかしながら、既存のプログラムの多くでは、メモリ割当には「malloc()」が用いられている。Linux(登録商標)で標準的に用いられている標準Cライブラリ「GNU Libc」では、小さなメモリ割当にはヒープ領域が、大きなメモリ割当には「mmap」により確保された領域が割り当てられるようになっている。この割り当てる領域が小さいか大きいかを判断するための閾値を、図13の様に変更することで、プログラムを修正せずに、常に「mmap」が用いられるようになる。
(例5)
本例において、例4に示した実現方法により実現した情報処理装置1を動作させた実験結果などについて説明する。
まず、メモリ割当コストの比較の実験結果について説明する。
(実験環境)
NVメモリをメインメモリとして持つシステムは、一般的に入手可能な状態ではない。また、アクセス遅延の差、書き込み回数の制限は考慮しないとし、DRAMの一部をNVメモリとみなして実験を行った。実験には、「Intel Atom D2700 2.13GHz」を用いた。ハイパースレッディング機能はBIOSで無効化し、1CPUの状態で計測した。DRAMの一部をNVメモリとみなすため、8GBのDRAMを搭載し、当該DRAMの後半の4GBの領域をNVメモリとして使用することにした。カーネルが認識するDRAM領域を制限するために、カーネルに「mem=128M」オプションを渡し、DRAMとしては128MBだけ使用する状態で実験を行った。なお、DRAMのみの場合の実験は、上記のメインメモリの分割を行わない状態で行った。
(実験結果)
メモリ割当コストを計測するため、引数で指定された容量のメモリ領域を確保し、その領域の各ページの先頭部分に対し書き込みを行うプログラムを作成し、実行した。測定結果には、メモリ割当コストのみが含まれ、解放コストは含まれない。実行したのは、DRAMのみ、直接融合方式、半直接融合方式、間接融合方式(事前確保およびオンデマンド確保)、mmap方式の5つの方式の場合である。DRAMのみの場合を除き、Ext2とPRAMFSの2つのファイルシステムで実行した。当該実行結果は、図14である。図14において、横軸は割当メモリサイズ(MB)、縦軸はRDTSC(Read Time Stamp Counter)により取得した値をクロック値で割ることで得た実行時間(ミリ秒)である。
また、図14の実行結果から、以下の3つのことがわかる。
(1)Ext2における半直接融合方式のコストが大きい
(2)mmap方式のコストはExt2およびPRAMFSの両方で大きい
(3)最もコストが低いのは間接融合方式(事前確保)である
また、図14において、間接融合方式(事前確保)と比較して、直接融合方式、半直接融合方式、間接融合方式(オンデマンド確保)、mmap方式の各方式は、PRAMFSでは、それぞれ2.3%、2.5%、1.2%、27.9%、コストが大きい。一方、Ext2では、それぞれ5.2%、111.5%、3.2%、73.6%、コストが大きい。間接融合方式(オンデマンド確保)では、より大きなメモリ割当が発生するたびに、ファイルへのブロック割当が発生する。しかしながら、一度割り当てられたブロックは、解放後はフリーリストで管理され再利用されるため、間接融合方式(オンデマンド確保)では、割当コストへの影響は小さい。半直接融合方式は、PRAMFSではコストへの影響は小さく済んでいる一方で、Ext2のコストは大きくなっている。半直接融合方式のExt2での実装は、余分なブロック確保と解放を伴う、冗長なものとなっているため、その影響が大きいと考えられる。mmap方式と他方式との最も際立った違いは、ファイルシステムからのブロック確保の方式にある。間接融合方式では、基本的にはフリーリストから1ブロック取得するだけである。一方、直接融合方式では、フリーリストが空になるたびに、ファイルシステムから複数ブロックを一括確保する。mmap方式では、ページ割当要求に対し、1ブロックずつファイルシステムから確保する必要がある。従って、実験結果から、ファイルシステムからのブロック確保コストの影響を受けること、一括確保の効果が大きいことがわかる。
次に、ファイルシステムの整合性への影響の実験結果について説明する。
(実験環境)
比較に用いるファイルシステムは、ファイルシステムの修復ツールが提供されているExt2とする。そして、直接融合方式、半直接融合方式、間接融合方式(事前確保およびondemand確保)、mmap方式の5つの方式によりメモリ割当を行った場合について比較を行う。当該比較は、メモリ確保を行うプログラムを実行し、512MBの領域を確保した状態で強制終了させた場合について、OS再起動後にファイルシステム修復ツール(e2fsck)が検出するファイルシステムの不整合報告数により行う。
NVメモリ上のファイルシステムに対するファイルシステム修復ツールの適用は、異常終了後、再起動してからになる。それには、再起動時にNVメモリ領域の内容が保存されている必要があるため、再起動時にメモリが初期化されてしまう実機は使用できない。そこで、QEMU(http://wiki.qemu.org/Main_Page)にNVメインメモリのエミュレーション機能を追加したものを、評価環境として用いる。図15に示すコマンドを実行すると、128MBのDRAMの領域が確保され、また、ファイル「nvmemory.img」のすべてが、NVメモリとして物理アドレス「0x10000000」からの領域にマッピングされた状態で、QEMUが起動する。
また、ファイル「nvmemory.img」には、異常終了時の内容が、再起動後にも保持される。異常終了は、QEMUのプロセスを強制終了することで、模擬する。
(実験結果)
ファイルシステム修復ツール(e2fsck)が検出したファイルシステムの不整合報告の結果は、図16である。図16より、直接融合方式では、空きブロック数に異常があるという報告が、合計で6つあった。一方、残りの半直接融合方式、間接融合方式(事前確保およびondemand確保)、mmap方式では、不整合の報告はなかった。直接融合方式は、ファイルシステムから直接ブロックを確保し、メインメモリへの割り当てに使用するため、どこからも参照されないが使用中のブロックができる。そのため、ファイルシステムの空きブロック数(Free blocks count)に不整合を引き起こす。実験結果では、その空きブロック数の不整合が、ファイルシステム全体と、複数のブロックグループで異なっているという報告が出ており、直接融合方式に直接起因する不整合であると考えられる。空きブロック数の不整合は、比較的軽微な不整合ではあるが、放置すると、ファイルシステムがメモリリーク状態となってしまうため、修復する必要がある。
半直接融合方式、間接融合方式(事前確保およびondemand確保)、mmap方式の5つの方式は、メインメモリへの割り当てに使用するために、ファイルシステムから確保したブロックは、すべてファイルから参照される。そのため、行った実験では、不整合を引き起こすことはなかった。しかしながら、これは、どのような場合にも不整合を引き起こさないことを保証するものではない。ファイルシステムに操作を行っている途中での異常終了は、不整合を引き起こす可能性がある。しかしながら、そのような不整合は、通常のファイル操作でも起こりうるものであり、上記の5つの方式によるメモリ割当に起因して起こるわけではない。
次に、ファイルシステムにおける空き領域管理方式の影響についての検証結果について説明する。
上記の実験結果より、ファイルシステムからのブロック確保コストの影響が大きいことがわかる。特に、mmap方式では、1ブロックずつ確保するため、ファイルシステムの空き領域管理方式の影響を大きく受ける。そこで、単純な内部構造を持つPRAMFSを対象とし、ファイルシステムにおける空き領域管理方式を、メモリ上の操作に適した構造とすることで、ブロック確保コストを軽減し、その影響を検証する。
ファイルシステムから1ブロックの確保に必要な操作は、直接融合方式および間接融合方式では、基本的にはフリーリストから要素を1つ取り出すだけである。一方、mmap方式では、ファイルシステムの空き領域管理方式を通してブロック確保を行う。PRAMFSは、空き領域管理にビットマップを採用しているため、ビットマップの検索コストがかかる。シークに時間のかかるHDDでは、ファイル内部のフラグメントの原因となるため、空きブロックをリストで管理する方式は、通常、使用されない。一方、ビットマップは、あるブロックに近い別の空きブロックを見つけやすく、内部フラグメントを抑制できるため、多くのファイルシステムで用いられている。しかしながら、シーク時間を考慮する必要のないNVメモリ上にファイルシステムを構築する場合、検索に時間のかかるビットマップの利点はない。
また、ファイルシステムの空き領域管理方式の軽量化が、mmap方式でのメモリ割当コストの軽減につながることを検証するため、PRAMFSの空き領域管理にリストを用いるように変更した。それにより、間接融合方式と同じコストで、ファイルシステムから1ブロックの確保が可能になる。また、ビットマップデータを置く必要がなくなるため、ファイルシステムの管理領域が小さくなり、その分をデータ領域に使用することができるようになる。
また、上記と同様に、各方式でメモリ割当を行うプログラムを実行した。当該実行結果は、図17である。図17において、空き領域管理方式にリストを用いるように変更した結果は、「PRAMFS2」として示されている。空き領域管理方式の軽量化により、mmap方式によるメモリ割当コストは58.2%減少している。一方、他方式のコストへの影響は、ほとんど見られない。
また、図17において、mmap方式のメモリ割当コストが大きく減少したことで、間接融合方式(事前確保)と比較しても46.8%低く、mmap方式は、最もコストの低い方式となった。このような大きな減少の理由を調査するために、Performance Monitoring Counter(PMC)を用いて、実行命令数、キャッシュミスの回数を計測した。また、同じ実験をQEMUでも行い、実行命令数を計測した。当該結果は、図18である。図18において、QEMUによるTSC(Time Stamp Counter)の計測は、実行命令数を表すのに対し、AtomによるTSCの計測は、実行時間を表す。また、図18において、「Instruction Retired」は、実行命令数、「LLC(Last Level Cache) Misses」は、すべてのL2キャッシュミスの回数、「MEM LOAD RETIRED.L2 HIT」は、L1データキャッシュをミスしL2キャッシュにヒットしたロード命令数、「MEM LOAD RETIRED.L2 MISS」は、L2キャッシュをミスしたロード命令数である。
図18において、QEMUにおける実行命令数と、Atomにおける実行命令数は、割り込みの影響があるため完全には一致しないが、近い値となっている。実行命令数では、空き領域管理方式の軽量化により、mmap方式のメモリ割当コストの減少は37.5%となり、実行時間ほどの大きな減少とはなっていない。実行時間の差を広げる原因となったと考えられるのが、キャッシュミスの回数である。図18において、「LLC Misses」、「MEM LOAD RETIRED.L2 MISS」の両方で、大きな差が見られる。「Atom D2700」のL2キャッシュは、コアあたり512KBであり、現在のノートPC用プロセッサと比較しても小さい。従って、空き領域管理方式の軽量化により、アクセスするデータの多くが、Atomのキャッシュにのる効果があったと考えられる。実際に、8MBのL3キャッシュを持つ「Xeon E3−1270」で実験を行ったところ、メモリ割当コストの減少は26.0%となり、キャッシュサイズが影響していることを裏付けている。
以上の実験から、NVメモリ上に構築するファイルシステムは、HDDとの性質の違いから、異なった内部構造を持つべき場合があり、空き領域管理方式はその1つであることがわかった。
以上、本実施の形態による情報処理装置1によれば、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができる。
なお、本実施の形態において、前述のファイル管理情報、ファイル領域管理情報、メモリ管理情報、メモリ領域管理情報は、例えば、1つの情報で表現されてもよい。当該情報を、領域管理情報とする。領域管理情報は、例えば、NVメモリ11が配置された物理アドレス空間が有するすべての物理アドレスを有する。当該1以上の各物理アドレスには、例えば、ファイル識別子や、論理アドレス、プロセス識別子、仮想アドレス、当該物理アドレスにより識別される領域が未使用領域であるか使用領域であるかを示すフラグなどが対応付いている。
また、本実施の形態において、ファイル管理情報は、例えば、一のファイル識別子と、一の領域識別子と、領域の数を示す情報(以下、適宜、領域数情報)とを有する情報であってもよい。この場合、これら3つの情報は、通常、対応付いている。また、この場合、当該一の領域識別子は、通常、当該一のファイル識別子により識別されるファイルが書き込まれている先頭の領域を識別する。また、領域数情報は、通常、当該先頭の領域から連続して書き込まれている領域の数を示す。
例えば、当該領域識別子が「0x00000011」であり、領域数情報が「3」であるとする。この場合、当該ファイル管理情報は、領域識別子「0x00000011」、「0x00000012」、「0x00000013」により識別される3つの領域に、ファイルが書き込まれていることを意味する。
また、上記の場合、ファイル管理情報は、一のファイル識別子と、一の領域識別子と、領域数情報とを有する情報を1以上有する情報であってもよい。
また、本実施の形態において、メモリ管理部14は、ファイル管理情報が有する1以上のファイル識別子のいずれかを取得するファイル識別子取得手段を備えていてもよい。この場合、ファイル識別子取得手段は、通常、ファイル管理情報が有する1以上のファイル識別子を、予め決められた方法により取得する。また、この場合、ファイル管理情報追記手段143は、通常、未使用領域検出手段142が取得した1以上の領域識別子と、ファイル識別子取得手段が取得した1つのファイル識別子とを対応付け、ファイル管理情報を作成する。
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
また、上記各実施の形態における情報処理装置を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、不揮発性の記録媒体であるNVメモリとにアクセス可能なコンピュータを、前記NVメモリに保存されている1以上のファイルを管理するファイルシステム部と、実行中のプロセスからの要求に応じて、前記ファイルシステム部がファイルとして使用し得る前記NVメモリの領域を確保し、当該確保した領域を当該プロセスに割り当てるメモリ管理部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
また、図19は、前述のプログラムを実行して、前述の実施の形態の情報処理装置等を実現するコンピュータシステム9の概観図である。前述の実施の形態は、コンピュータハードウェア、およびその上で実行されるコンピュータプログラムで実現され得る。
図19において、コンピュータシステム9は、CD−ROMドライブ9011、FDドライブ9012を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図20は、コンピュータシステム9のブロック図である。図20において、コンピュータ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がどのように動作するかは周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
以上のように、本発明にかかる情報処理装置は、NVメモリをメインメモリおよびストレージとして使用する場合に、システムの異常終了時におけるファイルシステムの不整合を減らすことができるという効果を有し、オペレーティングシステムの一機能等として有用である。
1 情報処理装置
11 NVメモリ
12 受付部
13 ファイルシステム部
14 メモリ管理部
131 ファイル管理情報格納手段
141 領域識別子格納手段
142 未使用領域検出手段
143 ファイル管理情報追記手段
144 領域識別子取得手段
145 割当手段

Claims (11)

  1. 不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するファイル管理手段と、
    プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける受付手段と、
    前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、前記ファイル管理手段によって管理されているいずれのファイルを構成する領域でもない領域のうちから1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理する割当手段と
    を備え、
    前記ファイル管理手段は、前記割当手段によっていずれかの領域がプロセスに割り当てられた場合、当該割り当てられた領域を識別する領域識別データを、いずれかのファイルを識別するファイル識別データに対応付けて記憶手段に記憶させることにより、当該割り当てられた領域をファイルとして管理する
    情報処理装置。
  2. 不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するファイル管理手段と、
    プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける受付手段と、
    前記ファイル管理手段によって管理されている或るファイルを構成する1以上の領域を識別する領域識別データを取得し、当該取得した領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させることにより未割当の領域を管理し、前記要求に応じて、管理している未割当の1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理するとともに、当該プロセスに割り当てた領域を未割当として管理している領域から除外する割当手段と
    を備える情報処理装置。
  3. 前記割当手段は、前記要求に応じたプロセスへの領域の割り当てを行う前に、前記或るファイルを構成する全ての領域の領域識別データを取得し、取得した領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させる
    請求項に記載の情報処理装置。
  4. 前記割当手段は、前記受付手段によって前記要求が受け付けられたとき、管理している未割当の領域の数量が前記要求に応じた数量に対し不足する場合、前記或るファイルを構成する1以上の領域の領域識別データのうち当該不足を補う数量の未取得の領域識別データを取得し、当該取得した領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させた後、前記要求に応じたプロセスに対する領域の割り当てを行う
    請求項に記載の情報処理装置。
  5. 不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するファイル管理手段と、
    プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける受付手段と
    を備え、
    前記ファイル管理手段は、前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、管理しているいずれのファイルを構成する領域でもない領域のうちの1以上の領域を識別する領域識別データを、新たなファイル識別データに対応付けて記憶手段に記憶させることにより、当該1以上の領域を新たなファイルとして管理し、
    前記要求に応じて、前記新たなファイルを構成する1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理する割当手段を備える
    情報処理装置。
  6. 情報処理装置が、不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するステップと、
    前記情報処理装置が、プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付けるステップと、
    前記情報処理装置が、前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、管理しているいずれのファイルを構成する領域でもない領域のうちから1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理するステップと、
    前記情報処理装置が、いずれかの領域をプロセスに割り当てた場合、当該割り当てた領域を識別する領域識別データを、いずれかのファイルを識別するファイル識別データに対応付けて記憶手段に記憶させることにより、当該割り当てた領域をファイルとして管理するステップと
    を備える情報処理方法。
  7. 情報処理装置が、不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理するステップと、
    前記情報処理装置が、プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付けるステップと、
    前記情報処理装置が、管理している或るファイルを構成する1以上の領域を識別する領域識別データを取得し、当該取得した1以上の領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させることにより未割当の領域を管理するステップと、
    前記情報処理装置が、前記要求に応じて、管理している未割当の1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理するステップと、
    前記情報処理装置が、プロセスに割り当てた1以上の領域を未割当の領域として管理している領域から除外するステップと
    を備える情報処理方法。
  8. 情報処理装置が、不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けてファイル管理情報として記憶手段に記憶させることによりファイルを管理するステップと、
    前記情報処理装置が、プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付けるステップと、
    前記情報処理装置が、前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、管理しているいずれのファイルを構成する領域でもない領域のうちの1以上の領域を識別する領域識別データを、新たなファイル識別データに対応付けて記憶手段に記憶させることにより、当該1以上の領域を新たなファイルとして管理するステップと、
    前記情報処理装置が、前記要求に応じて、前記新たなファイルを構成する1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理するステップと
    を備える情報処理方法。
  9. コンピュータに、
    不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理する処理と、
    プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける処理と、
    前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、管理しているいずれのファイルを構成する領域でもない領域のうちから1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理する処理と、
    1以上の領域をプロセスに割り当てた場合、当該1以上の領域を識別する領域識別データを、いずれかのファイルを識別するファイル識別データに対応付けて記憶手段に記憶させることにより、当該1以上の領域をファイルとして管理する処理と
    を実行させるためのプログラム。
  10. コンピュータに、
    不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりファイルを管理する処理と、
    プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける処理と、
    管理している或るファイルを構成する1以上の領域を識別する領域識別データを取得し、当該取得した1以上の領域識別データを未割当の領域を識別する領域識別データとして記憶手段に記憶させることにより未割当の領域を管理する処理と、
    前記要求に応じて、管理している未割当の1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理する処理と、
    プロセスに割り当てた1以上の領域を未割当の領域として管理している領域から除外する処理と
    を実行させるためのプログラム。
  11. コンピュータに、
    不揮発性の記録媒体であるNVメモリが有する1以上の領域のうちの1以上の領域を1つのファイルとし、当該ファイルを識別するファイル識別データと当該ファイルを構成する1以上の領域を識別する領域識別データとを対応付けてファイル管理情報として記憶手段に記憶させることによりファイルを管理する処理と、
    プログラムに従いプロセスを実行する実行手段から当該プロセスに対する領域の割り当ての要求を受け付ける処理と、
    前記要求に応じて、前記NVメモリが有する1以上の領域のうちの、管理しているいずれのファイルを構成する領域でもない領域のうちの1以上の領域を識別する領域識別データを、新たなファイル識別データに対応付けて記憶手段に記憶させることにより、当該1以上の領域を新たなファイルとして管理する処理と、
    前記要求に応じて、前記新たなファイルを構成する1以上の領域をプロセスに割り当て、当該プロセスを識別するプロセス識別データと当該プロセスに割り当てた1以上の領域を識別する領域識別データとを対応付けて記憶手段に記憶させることによりプロセスに割り当てられている領域を管理する処理と
    を実行させるためのプログラム。
JP2013019170A 2013-02-04 2013-02-04 情報処理装置、情報処理方法、およびプログラム Expired - Fee Related JP5619198B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013019170A JP5619198B2 (ja) 2013-02-04 2013-02-04 情報処理装置、情報処理方法、およびプログラム
PCT/JP2013/078734 WO2014119063A1 (ja) 2013-02-04 2013-10-23 情報処理装置、情報処理方法、およびプログラム
US14/765,366 US10503702B2 (en) 2013-02-04 2013-10-23 Information processing device, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013019170A JP5619198B2 (ja) 2013-02-04 2013-02-04 情報処理装置、情報処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2014149758A JP2014149758A (ja) 2014-08-21
JP5619198B2 true JP5619198B2 (ja) 2014-11-05

Family

ID=51261799

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013019170A Expired - Fee Related JP5619198B2 (ja) 2013-02-04 2013-02-04 情報処理装置、情報処理方法、およびプログラム

Country Status (3)

Country Link
US (1) US10503702B2 (ja)
JP (1) JP5619198B2 (ja)
WO (1) WO2014119063A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933751B (zh) * 2015-12-29 2019-12-24 澜起科技股份有限公司 用于保护动态随机访问存储器的方法和设备
JP7003470B2 (ja) * 2017-07-18 2022-01-20 富士通株式会社 情報処理装置、情報処理方法、及びプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778766B2 (ja) * 1992-09-25 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ランダム・アクセス可能かつ書換え可能メモリを用いる外部記憶装置におけるプログラム直接実行の制御方法および装置
US5675725A (en) * 1993-07-19 1997-10-07 Cheyenne Advanced Technology Limited Computer backup system operable with open files
JP3753598B2 (ja) * 2000-07-06 2006-03-08 株式会社日立製作所 計算機、計算機システムおよびデータ転送方法
JP2004362464A (ja) * 2003-06-06 2004-12-24 Sony Corp 不揮発メモリを利用したコンピュータシステム
JP2006222581A (ja) * 2005-02-08 2006-08-24 Canon Inc 画像形成装置及びその制御方法、コンピュータプログラム及び記憶媒体
TWI359377B (en) * 2005-04-05 2012-03-01 Ibm System and method for providing execute-in-place f
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7849302B2 (en) * 2006-04-10 2010-12-07 Apple Inc. Direct boot arrangement using a NAND flash memory
JP4984677B2 (ja) * 2006-06-27 2012-07-25 ソニー株式会社 情報処理装置
US8645438B2 (en) * 2009-06-30 2014-02-04 Sandisk Technologies Inc. File system and method of file access
US9411517B2 (en) * 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices

Also Published As

Publication number Publication date
US10503702B2 (en) 2019-12-10
JP2014149758A (ja) 2014-08-21
WO2014119063A1 (ja) 2014-08-07
US20160085771A1 (en) 2016-03-24

Similar Documents

Publication Publication Date Title
WO2014171223A1 (ja) 情報処理装置、情報処理方法、およびプログラム
US8447918B2 (en) Garbage collection for failure prediction and repartitioning
US10339056B2 (en) Systems, methods and apparatus for cache transfers
KR101404083B1 (ko) 반도체 디스크 및 그것의 동작 방법
US20190102291A1 (en) Data storage device and method for operating non-volatile memory
US8832371B2 (en) Storage system with multiple flash memory packages and data control method therefor
TWI533152B (zh) 資料儲存裝置及方法
KR102275563B1 (ko) 호스트-관리 비휘발성 메모리
US9946477B2 (en) Information processing apparatus, information processing method, and computer program product
JP2016506585A (ja) データストレージのための方法及びシステム
CN113867647A (zh) 虚拟存储系统及其控制方法
US8892810B2 (en) Semiconductor device and memory protection method
CN107391038B (zh) 资料存储型闪存的数据写入方法、闪存及存储介质
US10216529B1 (en) Method and system for sharing driver pages
JP2019194780A (ja) 情報処理装置、データ管理プログラム及びデータ管理方法
US8151086B2 (en) Early detection of an access to de-allocated memory
JP2021033845A (ja) メモリシステムおよび制御方法
JP5619198B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP5492731B2 (ja) 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム
JP6219560B2 (ja) 情報処理装置、情報処理方法、およびプログラム
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
KR101950759B1 (ko) 저장 장치의 메모리 컨트롤러가 수행하는 가비지 컬렉션 방법 및 메모리 컨트롤러
CN107562639B (zh) 擦除块读请求处理方法与装置
CN107562654B (zh) Io命令处理方法与装置
US10853257B1 (en) Zero detection within sub-track compression domains

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140714

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140916

R150 Certificate of patent or registration of utility model

Ref document number: 5619198

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees
S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370