(57)【要約】【課題】ユーザ空間にファイルシステムを備える記憶装置は、ファイルの読み込み時に、ページキャッシュと同じデータをバッファキャッシュにも保存してしまい、メモリを多く使用するという問題が存在した。【解決手段】ユーザ空間にファイルシステムを備えた記憶装置が、ファイル読み込み完了後にバッファキャッシュのデータをメモリ上から解放する。【選択図】図２
2013020583.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ空間にファイルシステムを備える情報記憶装置において、
ファイルを保持する記憶装置を特定する特定手段と、
前記記憶装置にあるファイルの読み込み時に、読み込む領域を特定する特定手段と、
前記記憶装置を特定する情報と前記記憶装置の領域の情報とに基づいてデータを保持するキャッシュを特定するキャッシュ特定手段と、
前記キャッシュ特定手段で特定されたデータをメモリ上から解放するキャッシュ解放手段とを備えることを特徴とする情報記憶装置。
【請求項２】
前記キャッシュ解放手段は、前記ファイルの読み込みで取得したデータが、前記キャッシュに記憶された後に解放を実行することを特徴とする請求項１に記載の情報記憶装置。
【請求項３】
前記キャッシュ解放手段は、前記ファイルの読み込みで取得したデータが、他のキャッシュに記憶された後に実行されることを特徴とする請求項１に記載の情報記憶装置。
【請求項４】
前記記憶装置を特定する情報と前記記憶装置の領域の情報とを前記キャッシュ特定手段に伝える手段を前記ユーザ空間にあるファイルシステムが備えることを特徴とする請求項１に記載の情報記憶装置。
【請求項５】
ユーザ空間にファイルシステムを備える情報記憶方法において、
ファイルを保持する記憶装置を特定する特定工程と、
前記記憶装置にあるファイルの読み込み時に、読み込む領域を特定する特定工程と、
前記記憶装置を特定する情報と前記記憶装置の領域の情報とに基づいてデータを保持するキャッシュを特定するキャッシュ特定工程と、
前記キャッシュ特定工程で特定されたデータをメモリ上から解放するキャッシュ解放工程とを備えることを特徴とする情報記憶方法。
【請求項６】
請求項５に記載の方法の各工程をコンピュータにて実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ空間にあるファイルシステムを用いてファイルを記憶、管理する技術に関する。
【背景技術】
【０００２】
近年、ユーザ空間にファイルシステムを備えた記憶装置が用いられ始めている。ユーザ空間にあるファイルシステムは、ファイル管理をユーザ空間で行う。ファイル管理とは、ファイルやディレクトリ等のデータを二次記憶装置に保存し、そのデータの読み書きや削除を行うことである。ユーザ空間にファイルシステムを備えた記憶装置を実現する方法には、Filesystem in Userspace（非特許文献１参照）のようなソフトウェアがある。
【０００３】
ユーザ空間にファイルシステムを備えた記憶装置は、バッファキャッシュとページキャッシュという２つのキャッシュを使用する。この２つのキャッシュの構成を、図８及び図９を用いて説明する。
【０００４】
図８は、バッファキャッシュを示す図である。図８において、９０１はバッファキャッシュ全体の領域を示す。９０２は、二次記憶装置から読み込んだファイルのデータを、バッファキャッシュ全体９０１の中に保存したものである。二次記憶装置読み込みデータ９０２は、ユーザ空間ファイルシステム要求データ９０３とバッファキャッシュ先読みデータ９０４とで構成される。９０３は、ユーザ空間ファイルシステムが要求して、二次記憶装置２０９から読み込んだデータである。ユーザ空間ファイルシステが読み込み要求をしたとき、このデータがユーザ空間ファイルシステムの用意したバッファにコピーされる。９０４は、二次記憶装置からデータを読み込むときに、前もって二次記憶装置の続きとなる領域を読み込んで取得したデータである。このデータは、一度目のユーザ空間ファイルシステムからの読み込み要求では、ユーザ空間ファイルシステムの用意したバッファにコピーされない。次にユーザ空間ファイルシステムが、続きとなる領域の読み込み要求を行ったとき、バッファキャッシュ先読みデータ９０４がユーザ空間ファイルシステムの用意したバッファにコピーされる。バッファキャッシュ先読みデータ９０４は、二次記憶装置読み込みデータ９０２の中に必ず存在するとは限らない。二次記憶装置読み込みデータ９０２がユーザ空間ファイルシステム要求データ９０３のみで構成される場合も存在する。
【０００５】
図９は、ページキャッシュを示す図である。図９において、１００１はページキャッシュ全体の領域を示す。１００２は、ユーザ空間ファイルシステムが仮想デバイスに書き込んだデータを、カーネルモジュールが読み込み、ページキャッシュ全体１００１の中に保存したものである。カーネルモジュール読み込みデータ１００２は、アプリケーション要求データ１００３と、ページキャッシュ先読みデータ１００４とで構成される。１００３は、アプリケーションが要求したデータである。アプリケーションが読み込み要求をしたとき、このデータがアプリケーションの用意したバッファにコピーされる。１００４は、ユーザ空間ファイルシステムに対してデータ読み込みを要求したときに、前もって続きとなる領域を読み込んで取得したデータである。このデータは、一度目の読み込みアプリケーションからの読み込み要求では、アプリケーションの用意したバッファにコピーされない。次にアプリケーションが、続きとなる領域の読み込み要求が行ったとき、ページキャッシュ先読みデータ１００４がアプリケーションの用意したバッファにコピーされる。このページキャッシュ先読みデータ１００４は、カーネルモジュール読み込みデータ１００２の中に、必ず存在するとは限らない。カーネルモジュール読み込みデータ１００２が、アプリケーション要求データ１００３のみで構成される場合も存在する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“Filesystem in Userspace”、インターネット＜URL:http://fuse.sourceforge.net/＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したとおり、ユーザ空間にファイルシステムを備えた記憶装置は、バッファキャッシュとページキャッシュという２つのキャッシュを使用する。そして、ファイルの読み込み時には、このバッファキャッシュとページキャッシュとに同じデータを保存する。ファイルの読み込み時、ユーザ空間ファイルシステムは、バッファキャッシュからファイルのデータを取得する。ここで取得するデータは、図８のユーザ空間ファイルシステム要求データ９０３にあたる。その後、ユーザ空間ファイルシステムは取得したデータを仮想デバイスに書き込む。カーネルモジュールは、仮想デバイスからそのデータを読み込み、読み込んだデータをページキャッシュにコピーする。このコピーによってページキャッシュの中に保存されたデータは、図９のカーネルモジュール読み込みデータ１００２にあたる。つまり、ファイルの読み込み時には、バッファキャッシュのユーザ空間ファイルシステム要求データ９０３が、ページキャッシュのカーネルモジュール読み込みデータ１００２にコピーされる。これにより、バッファキャッシュとページキャッシュとに同じデータを保存することになる。
【０００８】
アプリケーションからすると、ページキャッシュにファイルのデータがあれば、バッファキャッシュにアクセスせずキャッシュから読み込むことができる。そのため、ページキャッシュにあるカーネルモジュール読み込みデータ１００２が存在すれば、バッファキャッシュにあるユーザ空間ファイルシステム要求データ９０３は必要ない。以上より、従来は、ファイルの読み込み時に、ページキャッシュと同じデータをバッファキャッシュにも保存してしまい、メモリを多く使用するという問題が存在した。
【０００９】
そこで、本発明の目的は、ファイル読み込み完了後に、キャッシュのデータをメモリ上から解放することにある。
【課題を解決するための手段】
【００１０】
本発明の情報記憶装置は、ユーザ空間にファイルシステムを備える情報記憶装置において、ファイルを保持する記憶装置を特定する特定手段と、前記記憶装置にあるファイルの読み込み時に、読み込む領域を特定する特定手段と、前記記憶装置を特定する情報と前記記憶装置の領域の情報とに基づいてデータを保持するキャッシュを特定するキャッシュ特定手段と、前記キャッシュ特定手段で特定されたデータをメモリ上から解放する解放手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ファイル読み込み完了後に、キャッシュのデータをメモリ上から解放することが可能となる。これにより、キャッシュヒットによる読み込み性能を損なうことなく、メモリ使用量は、解放したバッファキャッシュのデータサイズ分だけ削減されることになる。また、本発明によれば、アプリケーションに特別な処理を施さなくても実現できるという利点が存在する。
【図面の簡単な説明】
【００１２】
【図１】本発明を適用可能な記憶装置の利用例を示す図である。
【図２】本発明の実施形態を用いたユーザ空間ファイルシステムを備え、かつカーネルモジュールがバッファキャッシュ解放手段を呼び出す記憶装置の利用例を示す図である。
【図３】本発明の実施形態におけるユーザ空間ファイルシステムが、読み込んだ二次記憶装置の領域の情報と二次記憶装置を特定する情報を通知する処理を示す図である。
【図４】本発明の実施形態における、カーネルモジュールへコピーする結果メッセージを示す図である。
【図５】本発明の実施形態における、カーネルモジュールがバッファキャッシュを解放する処理を示す図である。
【図６】本発明の実施形態を用いたユーザ空間ファイルシステムを備え、かつブロックデバイスアクセス関数がバッファキャッシュ解放手段を呼び出す記憶装置の利用例を示す図である。
【図７】本発明の実施形態における、ブロックデバイスアクセス関数がバッファキャッシュを解放する処理を示す図である。
【図８】バッファキャッシュの構成を示す図である。
【図９】ページキャッシュの構成を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１４】
先ず、本発明の第１の実施形態について説明する。図１は、本発明を適用可能な情報記憶装置の利用例を示す図である。図１において、１０２はＣＰＵであり、１０３はＩ／Ｏコントローラであり、１０４は二次記憶装置である。ファイルやディレクトリ等のデータは、二次記憶装置１０４に保持される。二次記憶装置１０４にあるファイルの操作は、Operating SystemからＩ／Ｏコントローラ１０３に対して、READ要求、WRITE要求を行うことで実現する。１０５は一時記憶装置である。一時記憶装置１０５は、プログラム及びデータを保存する。
【００１５】
図２は、本発明を適用可能なユーザ空間にファイルシステムを備えた記憶装置の利用例を示す図である。
【００１６】
図２において、２０３はアプリケーションである。アプリケーション２０３は、ファイルの読み込み要求を行う。読み込み要求をする時には、ファイルの読み込み開始位置と読み込むデータのサイズを指定する。要求が行われると、その要求がユーザ空間からカーネル空間に渡され、仮想ファイルシステム２０４がその要求を受け取る。
【００１７】
２０４は、カーネル空間２０２で動作する仮想ファイルシステムである。仮想ファイルシステム２０４は、アプリケーション２０３からファイルの読み込み要求を受け取る。要求を受け取ると、この要求をカーネルモジュール２０５が解釈できるように、ファイル管理の要求という型に変換する。変換した後、仮想ファイルシステム２０４は、カーネルモジュール２０５へこのファイル管理の要求を渡す。２０５はカーネル空間２０２に備えたモジュールである。カーネルモジュール２０５は、仮想ファイルシステム２０４からファイル管理の要求を受け取る。要求を受け取ると、カーネルモジュール２０５はこの要求を仮想デバイス２０６に書き込むことができるように、要求メッセージという型に変換する。変換した後、カーネルモジュール２０５は仮想デバイス２０６へこの要求メッセージを書き込む。
【００１８】
２０６は仮想デバイスである。仮想デバイス２０６はカーネルモジュール２０５とユーザ空間ファイルシステム２０７との間で、データをやり取りすることに用いられる。２０７はユーザ空間２０１で動作するファイルシステムである。ユーザ空間ファイルシステム２０７は、仮想デバイス２０６から要求メッセージを読み込む。読み込んだ要求メッセージから、読み込みの指示とファイルの読み込み開始位置を指定するオフセット、読み込むデータのサイズを取得する。取得したオフセットと読み込むデータのサイズを元に、読み込む二次記憶装置２１０の領域を特定する。また、どの二次記憶装置２１０を読み込むかは、ユーザ空間ファイルシステム２０７をマウントしたときに決定している。領域を特定後、ユーザ空間ファイルシステム２０７は、特定した二次記憶装置２１０の領域を読み込む要求を行う。
【００１９】
ユーザ空間ファイルシステム２０７からの読み込み要求は、アプリケーション２０３が要求した場合と同様に、仮想ファイルシステム２０４が受け取る。仮想ファイルシステム２０４は、この要求をブロックデバイスアクセス関数２０８が解釈できるように、ファイル管理の要求に変換する。変換した後、仮想ファイルシステム２０４は、ブロックデバイスアクセス関数２０８へこのファイル管理の要求を渡す。２０８はブロックデバイスを操作する関数である。ブロックデバイスアクセス関数２０８は、ファイルシステムを用いずに二次記憶装置２１０を操作する関数である。ブロックデバイスアクセス関数２０８は、仮想ファイルシステム２０４からファイル管理の要求を受け取る。そして、受け取った要求に従って二次記憶装置２１０からデータを読み込む。データの読み込みは、バッファキャッシュ２０９を間に介して行う。
【００２０】
２０９は、二次記憶装置２１０に対して、1つのブロックデバイスとして読み書きしたときのデータを蓄えるバッファキャッシュである。ブロックデバイスアクセス関数２０８が、二次記憶装置２１０からデータを読み込むと、そのデータはバッファキャッシュ２０９にコピーされる。その後、仮想ファイルシステム２０４が、バッファキャッシュ２０９にある二次記憶装置２１０から読み込んだデータをユーザ空間ファイルシステム２０７の用意したバッファにコピーする。
【００２１】
ユーザ空間ファイルシステム２０７は、二次記憶装置２１０からデータを読み込んだ後、読み込んだデータを仮想デバイス２０６に書き込むことができるように結果メッセージという型に変換する。変換した後、ユーザ空間ファイルシステム２０７がこの結果メッセージを仮想デバイス２０６に書き込む。カーネルモジュール２０５は、仮想デバイス２０６から結果メッセージを読み込む。カーネルモジュール２０５は、読み込んだ結果メッセージの中から、二次記憶装置２１０から読み込んだデータを取得する。そして、読み込んだデータをページキャッシュ２１１にコピーする。
【００２２】
２１１は二次記憶装置２１０のファイルに対して読み書きしたデータを蓄えるキャッシュである。仮想ファイルシステム２０４は、ページキャッシュ２１１にあるカーネルモジュール２０５からコピーされたデータを、アプリケーション２０３の用意したバッファにコピーする。
【００２３】
２１２は、ユーザ空間ファイルシステム２０７が読み込みを行った二次記憶装置２１０の領域と二次記憶装置２１０を特定する情報を、仮想デバイス２０６に書き込む手段である。ファイルを読み込むとき、ユーザ空間ファイルシステム２０７はどの二次記憶装置２１０から読み込むかを決定した上で、読み込む二次記憶装置２１０の領域を特定する。ユーザ空間ファイルシステム２０７は、この二次記憶装置２１０の読み込み領域の情報と二次記憶装置２１０を特定する情報を読み込み領域通知部２１２に渡す。読み込み領域通知部２１２は、この二次記憶装置２１０の読み込み領域の情報と二次記憶装置２１０を特定する情報を、仮想デバイス２０６に書き込む。
【００２４】
２１３は、バッファキャッシュ２０９にあるデータをメモリ上から解放する手段である。カーネルモジュール２０５は、読み込み領域通知部２１２によって仮想デバイス２０５に書き込まれた二次記憶装置２１０の読み込み領域の情報と二次記憶装置２１０を特定する情報を取得する。カーネルモジュール２０５は、この取得した情報を引数に、バッファキャッシュ解放部２１３を呼び出す。本実施形態におけるキャッシュ特定部２１２は、二次記憶装置２１０を特定する情報と二次記憶装置２１０の読み込み領域の情報とに基づいて、解放するバッファキャッシュ２０９のデータを特定する。特定後、バッファキャッシュ解放手段２１３は、特定したバッファキャッシュ２０９のデータをメモリ上から解放する。
解放するバッファキャッシュ２０９のデータを特定する方法を、Linux(登録商標)の場合を例に説明する。Linuxの場合、ユーザ空間のプロセスが二次記憶装置２１０を特定できる情報はファイルディスクリプタである。また、二次記憶装置２１０の読み込み領域の情報はファイル先頭からのオフセットとファイルサイズである。ユーザ空間のプロセスは、ファイルディスクリプタを通じて間接的にinodeを操作することができる。inodeはファイルの管理情報を格納するものである。Linuxの場合、バッファキャッシュ２０９は、ページという単位で管理され、inodeとファイル先頭からのオフセットでユニークに識別される。また、操作するバッファキャッシュ２０９のページの数は、操作するファイルのサイズによって決定する。そのため、inodeとファイル先頭からのオフセット、ファイルサイズを用いることで、解放するバッファキャッシュ２０９のデータを特定することができる。
【００２５】
次に、図３を用いて、ユーザ空間ファイルシステム２０７が二次記憶装置２１０からデータを読み込んだ後から、仮想デバイス２０６に読み込んだ結果を書き込むまでの処理手順を説明する。
【００２６】
図３において、ステップＳ３０１では、ユーザ空間ファイルシステム２０７が読み込み領域通知部２１２を呼び出す。そして、処理はステップＳ３０２に移行する。ステップＳ３０２では、読み込み領域通知部２１２が読み込んだ二次記憶装置２１０のデータの領域を特定する。読み込み領域通知部２１２は、ユーザ空間ファイルシステム２０７から読み込み領域の情報と二次記憶装置２１０を特定する情報を取得する。そして、処理はステップＳ３０３に移行する。
【００２７】
ステップＳ３０３では、読み込み領域通知部２１２が、読み込む二次記憶装置２１０の領域と二次記憶装置２１０を特定する情報を、仮想デバイス２０６に書き込む結果メッセージに追加する。これを、図４を用いて説明する。
【００２８】
図４は、本実施形態における、ユーザ空間ファイルシステム２０７が仮想デバイス２０６に書き込む結果メッセージである。図４において、４０１と４０２は従来の方法でも書き込んでいたデータである。４０３と４０４は、本実施形態で追加するデータである。４０１には、読み込んだ結果のヘッダ情報が格納される。ファイル読み込みでは、ユーザ空間ファイルシステム２０７がファイル読み込みをして取得した返り値と、二次記憶装置２１０から読み込んだデータのサイズが格納される。
【００２９】
４０２には、読み込んだ結果のデータが格納される。ファイル読み込みでは、二次記憶装置２１０から読み込んだデータが格納される。４０３には、ステップＳ３０２で取得した二次記憶装置２１０を特定する情報が格納される。４０４には、ステップＳ３０２で取得した二次記憶装置２１０の読み込み領域が格納される。結果メッセージにデータを追加後、処理はステップＳ３０４に移る。ステップＳ３０４は、読み込み領域通知部２１２が、ステップＳ３０３で作成した結果メッセージを仮想デバイス２０６に書き込む。
【００３０】
次に、図５を用いて、カーネルモジュール２０５が仮想デバイス２０６から結果メッセージを取得してから、バッファキャッシュ２０９のデータをメモリ上から解放するまでの処理手順を説明する。
【００３１】
ステップＳ５０１では、カーネルモジュール２０５が、読み込み領域通知部２１２によって仮想デバイス２０５に書き込まれた結果メッセージを読み込む。カーネルモジュール２０５は、結果メッセージから二次記憶装置２１０の読み込み領域の情報と二次記憶装置２１０を特定する情報を取得する。カーネルモジュール２０５は、この取得した情報を引数に、バッファキャッシュ解放部２１３を呼び出す。また、結果メッセージには、二次記憶装置２１０から読み込んだファイルのデータが含まれる。このデータは、カーネルモジュール２０５によってページキャッシュ２１１にコピーされる。カーネルモジュール２０５がこのコピーを実行する順番は、バッファキャッシュ解放部２１３を呼び出す前後どちらでもよい。そして、処理はステップＳ５０２に移行する。
【００３２】
ステップＳ５０２では、バッファキャッシュ解放部２１３が、ステップＳ５０１で指定された引数より、二次記憶装置２１０を特定する情報と二次記憶装置２１０の読み込み領域の情報を取得する。バッファキャッシュ解放部２１３は、この情報を元に解放するバッファキャッシュ２０９のデータを特定する。そして、処理はステップＳ５０３に移行する。
【００３３】
ステップＳ５０３では、バッファキャッシュ解放部２１３が、ステップＳ５０２で特定したバッファキャッシュ２０９のデータをメモリ上から解放する。このとき、ステップＳ５０２で特定されていないバッファキャッシュ２０９のデータは解放しない。
【００３４】
図８を用いて説明した通り、二次記憶装置読み込みデータ９０２は、ファイル読み込み時に、二次記憶装置２１０から読み込んだデータである。二次記憶装置読み込みデータ９０２は、ユーザ空間ファイルシステム要求データ９０３とバッファキャッシュ先読みデータ９０４とから構成される。
【００３５】
ユーザ空間ファイルシステム要求データ９０３は、ユーザ空間ファイルシステム２０７が要求したデータである。つまり、このデータは、ユーザ空間ファイルシステム２０７によって領域を特定して読み込まれた、二次記憶装置２１０のデータである。そのため、バッファキャッシュ解放部２１３はこのデータをメモリ上から解放する。
【００３６】
バッファキャッシュ先読みデータ９０４は、二次記憶装置２１０からデータを読み込み時に、前もって二次記憶装置２１０の続きとなる領域を読み込んで取得したデータである。つまり、このデータは、ユーザ空間ファイルシステム２０７によって領域を特定して読み込まれた、二次記憶装置２１０のデータではない。そのため、バッファキャッシュ解放部２１３はこのデータをメモリ上から解放しない。
【００３７】
以上が、本実施形態の説明である。本実施形態では、アプリケーション２０３がファイルの読み込みを行うと、ユーザ空間ファイルシステム２０７が二次記憶装置２１０からバッファキャッシュ２０９を介してデータを読み込む。データ読み込み後、ユーザ空間ファイルシステム２０７は読み込み領域通知部２１２を呼び出す。読み込み領域通知部２１２は、読み込みを行った二次記憶装置２１０の領域と二次記憶装置２１０を特定する情報を取得し、それを仮想デバイス２０６に書き込む。書き込まれたデータは、カーネルモジュール２０５が取得し、バッファキャッシュ解放部２１３を呼び出す。バッファキャッシュ解放部２１３は、読み込みを行った二次記憶装置２１０の領域と二次記憶装置２１０を特定する情報を元に、解放するバッファキャッシュ２０９のデータを特定する。そして、バッファキャッシュ解放部２１３は、その特定したバッファキャッシュ２０９のデータをメモリ上から解放する。これにより、ファイル読み込み完了後に、バッファキャッシュ２０９のデータをメモリ上から解放することが可能になる。そして、キャッシュヒットによる読み込み性能を損なうことなく、メモリ使用量は、解放したバッファキャッシュ２０９のデータサイズ分だけ削減されることになる。
【００３８】
次に、本発明の第２の実施形態について説明する。本実施形態は、ユーザ空間ファイルシステム２０７が、読み込んだ二次記憶装置２１０の領域の情報と二次記憶装置２１０を特定する情報を、カーネルモジュールに通知する機能を備えない。この点で、本実施形態は第１の実施形態と異なる。
【００３９】
図６は、第２の実施形態を適用可能なユーザ空間にファイルシステムを備える記憶装置の利用例を示す図である。図６において、図２に示した第１の実施形態と異なる点は、読み込み領域通知部２１２を備えないことである。また、第１の実施形態では、カーネルモジュール２０５がバッファキャッシュ解放部２１３を呼び出すとしたが、本実施形態ではブロックデバイスアクセス関数２０８が、バッファキャッシュ解放部２１３を呼び出す。
【００４０】
次に、図７を用いて、ブロックデバイスアクセス関数２０８が二次記憶装置２１０のデータをバッファキャッシュ２０９に読み出した後に、バッファキャッシュ２０９のデータをメモリ上から解放する処理手順を説明する。
【００４１】
図７において、ステップＳ５０２、Ｓ５０３に関しては、図５を用いて説明した通りであるため、説明を省略する。ステップＳ７０１では、ブロックデバイスアクセス関数２０８が、バッファキャッシュ解放部２１３を呼び出す。ブロックデバイスアクセス関数２０８は、どの二次記憶装置２１０から読み込むかを決定した上で、要求を受けた二次記憶装置２１０の領域のデータを読み込んでいる。つまり、ファイルの読み込み時に、ブロックデバイスアクセス関数２０８は、二次記憶装置２１０の読み込み領域と二次記憶装置２１０を特定する情報を取得している。ステップＳ７０１では、この情報を引数にバッファキャッシュ解放部２１３を呼び出す。
【００４２】
以上が、本実施形態の説明である。本実施形態では、アプリケーション２０３がファイルの読み込みを行うと、ユーザ空間ファイルシステム２０７が二次記憶装置２１０からバッファキャッシュ２０９を介してデータを読み込む。データ読み込み後、ブロックデバイスアクセス関数２０８は、バッファキャッシュ解放部２１３を呼び出す。バッファキャッシュ解放部２１３は、読み込みを行った二次記憶装置２１０の領域と二次記憶装置２１０を特定する情報を元に、解放するバッファキャッシュ２０９のデータを特定する。そして、バッファキャッシュ解放部２１３は、その特定したバッファキャッシュ２０９のデータをメモリ上から解放する。これにより、第１の実施形態と同様に、ファイル読み込み完了後に、バッファキャッシュ２０９のデータをメモリ上から解放することが可能になる。そして、キャッシュヒットによる読み込み性能を損なうことなく、メモリ使用量は、解放したバッファキャッシュ２０９のデータサイズ分だけ削減されることになる。
【００４３】
上述した実施形態においては、ユーザ空間のファイルシステムが扱う二次記憶装置が1つの場合について説明したが、これに限定されるものではなく、複数の二次記憶装置を扱ってもよい。プログラムコードを供給するための記憶媒体としては、例えば、光ディスク、磁気ディスク、光磁気ディスク、磁気テープ、不揮発性のメモリカードなどを用いることが出来る。これらの記憶媒体は、上記実施例の機能を実現する二次記憶装置としても用いることができる。なお、本発明はコンピュータ内のプログラムの実行によっても実現できることは当然である。
【００４４】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００４５】
１０１：記憶装置、１０２：ＣＰＵ、１０３：Ｉ／Ｏコントローラ、１０４：二次記憶装置、１０５：一次記憶装置
【図１】
2013020583.tif 000003
【図２】
2013020583.tif 000004
【図３】
2013020583.tif 000005
【図４】
2013020583.tif 000006
【図５】
2013020583.tif 000007
【図６】
2013020583.tif 000008
【図７】
2013020583.tif 000009
【図８】
2013020583.tif 000010
【図９】
2013020583.tif 000011