ユーザ空間にファイルシステムを備える情報記憶装置において、ファイルを保持する記憶装置を特定する特定手段と、前記記憶装置にあるファイルの読み込み時に、読み込む領域を特定する特定手段と、前記記憶装置を特定する情報と前記記憶装置の領域の情報とに基づいてデータを保持するキャッシュを特定するキャッシュ特定手段と、前記キャッシュ特定手段で特定されたデータをメモリ上から解放するキャッシュ解放手段とを備えることを特徴とする情報記憶装置。前記キャッシュ解放手段は、前記ファイルの読み込みで取得したデータが、前記キャッシュに記憶された後に解放を実行することを特徴とする請求項1に記載の情報記憶装置。前記キャッシュ解放手段は、前記ファイルの読み込みで取得したデータが、他のキャッシュに記憶された後に実行されることを特徴とする請求項1に記載の情報記憶装置。前記記憶装置を特定する情報と前記記憶装置の領域の情報とを前記キャッシュ特定手段に伝える手段を前記ユーザ空間にあるファイルシステムが備えることを特徴とする請求項1に記載の情報記憶装置。ユーザ空間にファイルシステムを備える情報記憶方法において、ファイルを保持する記憶装置を特定する特定工程と、前記記憶装置にあるファイルの読み込み時に、読み込む領域を特定する特定工程と、前記記憶装置を特定する情報と前記記憶装置の領域の情報とに基づいてデータを保持するキャッシュを特定するキャッシュ特定工程と、前記キャッシュ特定工程で特定されたデータをメモリ上から解放するキャッシュ解放工程とを備えることを特徴とする情報記憶方法。請求項5に記載の方法の各工程をコンピュータにて実行させるためのプログラム。上述したとおり、ユーザ空間にファイルシステムを備えた記憶装置は、バッファキャッシュとページキャッシュという2つのキャッシュを使用する。そして、ファイルの読み込み時には、このバッファキャッシュとページキャッシュとに同じデータを保存する。ファイルの読み込み時、ユーザ空間ファイルシステムは、バッファキャッシュからファイルのデータを取得する。ここで取得するデータは、図8のユーザ空間ファイルシステム要求データ903にあたる。その後、ユーザ空間ファイルシステムは取得したデータを仮想デバイスに書き込む。カーネルモジュールは、仮想デバイスからそのデータを読み込み、読み込んだデータをページキャッシュにコピーする。このコピーによってページキャッシュの中に保存されたデータは、図9のカーネルモジュール読み込みデータ1002にあたる。つまり、ファイルの読み込み時には、バッファキャッシュのユーザ空間ファイルシステム要求データ903が、ページキャッシュのカーネルモジュール読み込みデータ1002にコピーされる。これにより、バッファキャッシュとページキャッシュとに同じデータを保存することになる。アプリケーションからすると、ページキャッシュにファイルのデータがあれば、バッファキャッシュにアクセスせずキャッシュから読み込むことができる。そのため、ページキャッシュにあるカーネルモジュール読み込みデータ1002が存在すれば、バッファキャッシュにあるユーザ空間ファイルシステム要求データ903は必要ない。以上より、従来は、ファイルの読み込み時に、ページキャッシュと同じデータをバッファキャッシュにも保存してしまい、メモリを多く使用するという問題が存在した。そこで、本発明の目的は、ファイル読み込み完了後に、キャッシュのデータをメモリ上から解放することにある。本発明の情報記憶装置は、ユーザ空間にファイルシステムを備える情報記憶装置において、ファイルを保持する記憶装置を特定する特定手段と、前記記憶装置にあるファイルの読み込み時に、読み込む領域を特定する特定手段と、前記記憶装置を特定する情報と前記記憶装置の領域の情報とに基づいてデータを保持するキャッシュを特定するキャッシュ特定手段と、前記キャッシュ特定手段で特定されたデータをメモリ上から解放する解放手段とを備えることを特徴とする。本発明によれば、ファイル読み込み完了後に、キャッシュのデータをメモリ上から解放することが可能となる。これにより、キャッシュヒットによる読み込み性能を損なうことなく、メモリ使用量は、解放したバッファキャッシュのデータサイズ分だけ削減されることになる。また、本発明によれば、アプリケーションに特別な処理を施さなくても実現できるという利点が存在する。以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。先ず、本発明の第1の実施形態について説明する。図1は、本発明を適用可能な情報記憶装置の利用例を示す図である。図1において、102はCPUであり、103はI/Oコントローラであり、104は二次記憶装置である。ファイルやディレクトリ等のデータは、二次記憶装置104に保持される。二次記憶装置104にあるファイルの操作は、OperatingSystemからI/Oコントローラ103に対して、READ要求、WRITE要求を行うことで実現する。105は一時記憶装置である。一時記憶装置105は、プログラム及びデータを保存する。図2は、本発明を適用可能なユーザ空間にファイルシステムを備えた記憶装置の利用例を示す図である。図2において、203はアプリケーションである。アプリケーション203は、ファイルの読み込み要求を行う。読み込み要求をする時には、ファイルの読み込み開始位置と読み込むデータのサイズを指定する。要求が行われると、その要求がユーザ空間からカーネル空間に渡され、仮想ファイルシステム204がその要求を受け取る。204は、カーネル空間202で動作する仮想ファイルシステムである。仮想ファイルシステム204は、アプリケーション203からファイルの読み込み要求を受け取る。要求を受け取ると、この要求をカーネルモジュール205が解釈できるように、ファイル管理の要求という型に変換する。変換した後、仮想ファイルシステム204は、カーネルモジュール205へこのファイル管理の要求を渡す。205はカーネル空間202に備えたモジュールである。カーネルモジュール205は、仮想ファイルシステム204からファイル管理の要求を受け取る。要求を受け取ると、カーネルモジュール205はこの要求を仮想デバイス206に書き込むことができるように、要求メッセージという型に変換する。変換した後、カーネルモジュール205は仮想デバイス206へこの要求メッセージを書き込む。206は仮想デバイスである。仮想デバイス206はカーネルモジュール205とユーザ空間ファイルシステム207との間で、データをやり取りすることに用いられる。207はユーザ空間201で動作するファイルシステムである。ユーザ空間ファイルシステム207は、仮想デバイス206から要求メッセージを読み込む。読み込んだ要求メッセージから、読み込みの指示とファイルの読み込み開始位置を指定するオフセット、読み込むデータのサイズを取得する。取得したオフセットと読み込むデータのサイズを元に、読み込む二次記憶装置210の領域を特定する。また、どの二次記憶装置210を読み込むかは、ユーザ空間ファイルシステム207をマウントしたときに決定している。領域を特定後、ユーザ空間ファイルシステム207は、特定した二次記憶装置210の領域を読み込む要求を行う。ユーザ空間ファイルシステム207からの読み込み要求は、アプリケーション203が要求した場合と同様に、仮想ファイルシステム204が受け取る。仮想ファイルシステム204は、この要求をブロックデバイスアクセス関数208が解釈できるように、ファイル管理の要求に変換する。変換した後、仮想ファイルシステム204は、ブロックデバイスアクセス関数208へこのファイル管理の要求を渡す。208はブロックデバイスを操作する関数である。ブロックデバイスアクセス関数208は、ファイルシステムを用いずに二次記憶装置210を操作する関数である。ブロックデバイスアクセス関数208は、仮想ファイルシステム204からファイル管理の要求を受け取る。そして、受け取った要求に従って二次記憶装置210からデータを読み込む。データの読み込みは、バッファキャッシュ209を間に介して行う。209は、二次記憶装置210に対して、1つのブロックデバイスとして読み書きしたときのデータを蓄えるバッファキャッシュである。ブロックデバイスアクセス関数208が、二次記憶装置210からデータを読み込むと、そのデータはバッファキャッシュ209にコピーされる。その後、仮想ファイルシステム204が、バッファキャッシュ209にある二次記憶装置210から読み込んだデータをユーザ空間ファイルシステム207の用意したバッファにコピーする。ユーザ空間ファイルシステム207は、二次記憶装置210からデータを読み込んだ後、読み込んだデータを仮想デバイス206に書き込むことができるように結果メッセージという型に変換する。変換した後、ユーザ空間ファイルシステム207がこの結果メッセージを仮想デバイス206に書き込む。カーネルモジュール205は、仮想デバイス206から結果メッセージを読み込む。カーネルモジュール205は、読み込んだ結果メッセージの中から、二次記憶装置210から読み込んだデータを取得する。そして、読み込んだデータをページキャッシュ211にコピーする。211は二次記憶装置210のファイルに対して読み書きしたデータを蓄えるキャッシュである。仮想ファイルシステム204は、ページキャッシュ211にあるカーネルモジュール205からコピーされたデータを、アプリケーション203の用意したバッファにコピーする。212は、ユーザ空間ファイルシステム207が読み込みを行った二次記憶装置210の領域と二次記憶装置210を特定する情報を、仮想デバイス206に書き込む手段である。ファイルを読み込むとき、ユーザ空間ファイルシステム207はどの二次記憶装置210から読み込むかを決定した上で、読み込む二次記憶装置210の領域を特定する。ユーザ空間ファイルシステム207は、この二次記憶装置210の読み込み領域の情報と二次記憶装置210を特定する情報を読み込み領域通知部212に渡す。読み込み領域通知部212は、この二次記憶装置210の読み込み領域の情報と二次記憶装置210を特定する情報を、仮想デバイス206に書き込む。213は、バッファキャッシュ209にあるデータをメモリ上から解放する手段である。カーネルモジュール205は、読み込み領域通知部212によって仮想デバイス205に書き込まれた二次記憶装置210の読み込み領域の情報と二次記憶装置210を特定する情報を取得する。カーネルモジュール205は、この取得した情報を引数に、バッファキャッシュ解放部213を呼び出す。本実施形態におけるキャッシュ特定部212は、二次記憶装置210を特定する情報と二次記憶装置210の読み込み領域の情報とに基づいて、解放するバッファキャッシュ209のデータを特定する。特定後、バッファキャッシュ解放手段213は、特定したバッファキャッシュ209のデータをメモリ上から解放する。解放するバッファキャッシュ209のデータを特定する方法を、Linuxの場合を例に説明する。Linuxの場合、ユーザ空間のプロセスが二次記憶装置210を特定できる情報はファイルディスクリプタである。また、二次記憶装置210の読み込み領域の情報はファイル先頭からのオフセットとファイルサイズである。ユーザ空間のプロセスは、ファイルディスクリプタを通じて間接的にinodeを操作することができる。inodeはファイルの管理情報を格納するものである。Linuxの場合、バッファキャッシュ209は、ページという単位で管理され、inodeとファイル先頭からのオフセットでユニークに識別される。また、操作するバッファキャッシュ209のページの数は、操作するファイルのサイズによって決定する。そのため、inodeとファイル先頭からのオフセット、ファイルサイズを用いることで、解放するバッファキャッシュ209のデータを特定することができる。次に、図3を用いて、ユーザ空間ファイルシステム207が二次記憶装置210からデータを読み込んだ後から、仮想デバイス206に読み込んだ結果を書き込むまでの処理手順を説明する。図3において、ステップS301では、ユーザ空間ファイルシステム207が読み込み領域通知部212を呼び出す。そして、処理はステップS302に移行する。ステップS302では、読み込み領域通知部212が読み込んだ二次記憶装置210のデータの領域を特定する。読み込み領域通知部212は、ユーザ空間ファイルシステム207から読み込み領域の情報と二次記憶装置210を特定する情報を取得する。そして、処理はステップS303に移行する。ステップS303では、読み込み領域通知部212が、読み込む二次記憶装置210の領域と二次記憶装置210を特定する情報を、仮想デバイス206に書き込む結果メッセージに追加する。これを、図4を用いて説明する。図4は、本実施形態における、ユーザ空間ファイルシステム207が仮想デバイス206に書き込む結果メッセージである。図4において、401と402は従来の方法でも書き込んでいたデータである。403と404は、本実施形態で追加するデータである。401には、読み込んだ結果のヘッダ情報が格納される。ファイル読み込みでは、ユーザ空間ファイルシステム207がファイル読み込みをして取得した返り値と、二次記憶装置210から読み込んだデータのサイズが格納される。402には、読み込んだ結果のデータが格納される。ファイル読み込みでは、二次記憶装置210から読み込んだデータが格納される。403には、ステップS302で取得した二次記憶装置210を特定する情報が格納される。404には、ステップS302で取得した二次記憶装置210の読み込み領域が格納される。結果メッセージにデータを追加後、処理はステップS304に移る。ステップS304は、読み込み領域通知部212が、ステップS303で作成した結果メッセージを仮想デバイス206に書き込む。次に、図5を用いて、カーネルモジュール205が仮想デバイス206から結果メッセージを取得してから、バッファキャッシュ209のデータをメモリ上から解放するまでの処理手順を説明する。ステップS501では、カーネルモジュール205が、読み込み領域通知部212によって仮想デバイス205に書き込まれた結果メッセージを読み込む。カーネルモジュール205は、結果メッセージから二次記憶装置210の読み込み領域の情報と二次記憶装置210を特定する情報を取得する。カーネルモジュール205は、この取得した情報を引数に、バッファキャッシュ解放部213を呼び出す。また、結果メッセージには、二次記憶装置210から読み込んだファイルのデータが含まれる。このデータは、カーネルモジュール205によってページキャッシュ211にコピーされる。カーネルモジュール205がこのコピーを実行する順番は、バッファキャッシュ解放部213を呼び出す前後どちらでもよい。そして、処理はステップS502に移行する。ステップS502では、バッファキャッシュ解放部213が、ステップS501で指定された引数より、二次記憶装置210を特定する情報と二次記憶装置210の読み込み領域の情報を取得する。バッファキャッシュ解放部213は、この情報を元に解放するバッファキャッシュ209のデータを特定する。そして、処理はステップS503に移行する。ステップS503では、バッファキャッシュ解放部213が、ステップS502で特定したバッファキャッシュ209のデータをメモリ上から解放する。このとき、ステップS502で特定されていないバッファキャッシュ209のデータは解放しない。図8を用いて説明した通り、二次記憶装置読み込みデータ902は、ファイル読み込み時に、二次記憶装置210から読み込んだデータである。二次記憶装置読み込みデータ902は、ユーザ空間ファイルシステム要求データ903とバッファキャッシュ先読みデータ904とから構成される。ユーザ空間ファイルシステム要求データ903は、ユーザ空間ファイルシステム207が要求したデータである。つまり、このデータは、ユーザ空間ファイルシステム207によって領域を特定して読み込まれた、二次記憶装置210のデータである。そのため、バッファキャッシュ解放部213はこのデータをメモリ上から解放する。バッファキャッシュ先読みデータ904は、二次記憶装置210からデータを読み込み時に、前もって二次記憶装置210の続きとなる領域を読み込んで取得したデータである。つまり、このデータは、ユーザ空間ファイルシステム207によって領域を特定して読み込まれた、二次記憶装置210のデータではない。そのため、バッファキャッシュ解放部213はこのデータをメモリ上から解放しない。以上が、本実施形態の説明である。本実施形態では、アプリケーション203がファイルの読み込みを行うと、ユーザ空間ファイルシステム207が二次記憶装置210からバッファキャッシュ209を介してデータを読み込む。データ読み込み後、ユーザ空間ファイルシステム207は読み込み領域通知部212を呼び出す。読み込み領域通知部212は、読み込みを行った二次記憶装置210の領域と二次記憶装置210を特定する情報を取得し、それを仮想デバイス206に書き込む。書き込まれたデータは、カーネルモジュール205が取得し、バッファキャッシュ解放部213を呼び出す。バッファキャッシュ解放部213は、読み込みを行った二次記憶装置210の領域と二次記憶装置210を特定する情報を元に、解放するバッファキャッシュ209のデータを特定する。そして、バッファキャッシュ解放部213は、その特定したバッファキャッシュ209のデータをメモリ上から解放する。これにより、ファイル読み込み完了後に、バッファキャッシュ209のデータをメモリ上から解放することが可能になる。そして、キャッシュヒットによる読み込み性能を損なうことなく、メモリ使用量は、解放したバッファキャッシュ209のデータサイズ分だけ削減されることになる。次に、本発明の第2の実施形態について説明する。本実施形態は、ユーザ空間ファイルシステム207が、読み込んだ二次記憶装置210の領域の情報と二次記憶装置210を特定する情報を、カーネルモジュールに通知する機能を備えない。この点で、本実施形態は第1の実施形態と異なる。図6は、第2の実施形態を適用可能なユーザ空間にファイルシステムを備える記憶装置の利用例を示す図である。図6において、図2に示した第1の実施形態と異なる点は、読み込み領域通知部212を備えないことである。また、第1の実施形態では、カーネルモジュール205がバッファキャッシュ解放部213を呼び出すとしたが、本実施形態ではブロックデバイスアクセス関数208が、バッファキャッシュ解放部213を呼び出す。次に、図7を用いて、ブロックデバイスアクセス関数208が二次記憶装置210のデータをバッファキャッシュ209に読み出した後に、バッファキャッシュ209のデータをメモリ上から解放する処理手順を説明する。図7において、ステップS502、S503に関しては、図5を用いて説明した通りであるため、説明を省略する。ステップS701では、ブロックデバイスアクセス関数208が、バッファキャッシュ解放部213を呼び出す。ブロックデバイスアクセス関数208は、どの二次記憶装置210から読み込むかを決定した上で、要求を受けた二次記憶装置210の領域のデータを読み込んでいる。つまり、ファイルの読み込み時に、ブロックデバイスアクセス関数208は、二次記憶装置210の読み込み領域と二次記憶装置210を特定する情報を取得している。ステップS701では、この情報を引数にバッファキャッシュ解放部213を呼び出す。以上が、本実施形態の説明である。本実施形態では、アプリケーション203がファイルの読み込みを行うと、ユーザ空間ファイルシステム207が二次記憶装置210からバッファキャッシュ209を介してデータを読み込む。データ読み込み後、ブロックデバイスアクセス関数208は、バッファキャッシュ解放部213を呼び出す。バッファキャッシュ解放部213は、読み込みを行った二次記憶装置210の領域と二次記憶装置210を特定する情報を元に、解放するバッファキャッシュ209のデータを特定する。そして、バッファキャッシュ解放部213は、その特定したバッファキャッシュ209のデータをメモリ上から解放する。これにより、第1の実施形態と同様に、ファイル読み込み完了後に、バッファキャッシュ209のデータをメモリ上から解放することが可能になる。そして、キャッシュヒットによる読み込み性能を損なうことなく、メモリ使用量は、解放したバッファキャッシュ209のデータサイズ分だけ削減されることになる。上述した実施形態においては、ユーザ空間のファイルシステムが扱う二次記憶装置が1つの場合について説明したが、これに限定されるものではなく、複数の二次記憶装置を扱ってもよい。プログラムコードを供給するための記憶媒体としては、例えば、光ディスク、磁気ディスク、光磁気ディスク、磁気テープ、不揮発性のメモリカードなどを用いることが出来る。これらの記憶媒体は、上記実施例の機能を実現する二次記憶装置としても用いることができる。なお、本発明はコンピュータ内のプログラムの実行によっても実現できることは当然である。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータまたはCPUやMPU等がプログラムを読み出して実行する処理である。