(57)【特許請求の範囲】
【請求項１】
主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、
前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、
を備え、
前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知し、
さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知し、
前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させる、メモリ制御装置。
【請求項２】
前記デバイスドライバは、前記制御部から通知を受けた前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの記憶しているデータが前記主記憶部に移動されるキャッシュブロックを選択する、請求項１に記載のメモリ制御装置。
【請求項３】
前記デバイスドライバは、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させる、請求項２に記載のメモリ制御装置。
【請求項４】
前記デバイスドライバは、
前記優先度情報を記憶し、
前記制御部から前記優先度情報の通知を受けた際に、前記優先度情報を更新し、
更新後の前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させる、請求項３に記載のメモリ制御装置。
【請求項５】
前記デバイスドライバは、
更新した前記優先度情報と、前記論理ブロックの使用状況に関する情報とを対応づけて記憶し、
前記優先度が同じ複数の論理ブロックのうちの、使用時期が最も古い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させる、請求項４に記載のメモリ制御装置。
【請求項６】
前記制御部は、前記メモリ制御装置の初回起動時に、前記優先度情報を前記デバイスドライバに通知する、請求項１〜５のいずれか１項に記載のメモリ制御装置。
【請求項７】
前記制御部は、前記キャッシュ部においてデータを記憶しないキャッシュブロックを割り当てる時に、前記優先度情報を前記デバイスドライバに通知する、請求項１〜５のいずれか１項に記載のメモリ制御装置。
【請求項８】
データを記憶する主記憶部と、
キャッシュブロックを複数有し、データを一時的に記憶するキャッシュ部と、
前記主記憶部へのデータの書き込み又は読み出しと、前記キャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、
前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、
を備え、
前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知し、
さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知し、
前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させる、メモリ装置。
【請求項９】
デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、
制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、
前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、
さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知することと、
前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させることと、
を含む、メモリ制御方法。
【請求項１０】
デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、
制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、
前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、
さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知することと、
前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させることと、
をコンピュータに実行させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラムに関する。
【背景技術】
【０００２】
メモリ装置は、例えば、データを記憶可能な主記憶部とキャッシュブロックを有し、デバイスドライバが、主記憶部とキャッシュブロックへのデータの記憶等を制御する。
【０００３】
上記のメモリ装置では、デバイスドライバによる処理の高速化等の観点から、主記憶部には更新頻度が少ないデータが記憶され、キャッシュブロックには更新頻度が多いデータが記憶される（特許文献１参照）。なお、キャッシュブロックの容量は主記憶部に比べて小さいので、キャッシュされるデータが増えると、例えば古いデータは、キャッシュブロックから主記憶部へ移動する。かかる処理は、いわゆるライトバック処理として知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−７００９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、Ｌｉｎｕｘ（登録商標）のようなオペレーティングシステムでは、デバイスの制御処理（ドライバ）を抽象化し、ファイルシステムの制御処理と分離している。この抽象化のため、ファイルシステム制御は、デバイス固有の特性を知らずに動作する。
【０００６】
そして、特許文献１のようにドライバ処理の高速化のためにキャッシュブロックをメモリ装置に構築した場合、デバイスドライバだけが、ライトバック処理のタイミングを制御することになる。この結果、データの更新頻度の高いキャッシュブロックがライトバック処理の対象となり、キャッシュブロックからユーザブロックへデータが移動してしまう問題がある。
【０００７】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、更新頻度の高いデータを記憶するキャッシュブロックがライトバック処理の対象となることを抑制することが可能な、新規かつ改良されたメモリ制御装置、メモリ装置、メモリ制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある観点によれば、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知する、メモリ制御装置が提供される。
【０００９】
また、前記デバイスドライバは、前記制御部から通知を受けた前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの記憶しているデータが前記主記憶部に移動されるキャッシュブロックを選択しても良い。
【００１０】
また、前記デバイスドライバは、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させても良い。
【００１１】
また、前記デバイスドライバは、前記優先度情報を記憶し、前記制御部から前記優先度情報の通知を受けた際に、前記優先度情報を更新し、更新後の前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させても良い。
【００１２】
また、前記デバイスドライバは、更新した前記優先度情報と、前記論理ブロックの使用状況に関する情報とを対応づけて記憶し、前記優先度が同じ複数の論理ブロックのうちの、使用時期が最も古い論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させても良い。
【００１３】
また、前記制御部は、前記メモリ制御装置の初回起動時に、前記優先度情報を前記デバイスドライバに通知しても良い。
【００１４】
また、前記制御部は、前記キャッシュ部においてデータを記憶しないキャッシュブロックを割り当てる時に、前記優先度情報を前記デバイスドライバに通知しても良い。
【００１５】
また、上記課題を解決するために、本発明の別の観点によれば、データを記憶する主記憶部と、キャッシュブロックを複数有し、データを一時的に記憶するキャッシュ部と、前記主記憶部へのデータの書き込み又は読み出しと、前記キャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知する、メモリ装置が提供される。
【００１６】
また、上記課題を解決するために、本発明の別の観点によれば、デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、を含む、メモリ制御方法が提供される。
【００１７】
また、上記課題を解決するために、本発明の別の観点によれば、デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、をコンピュータに実行させるための、プログラムが提供される。
【発明の効果】
【００１８】
以上説明したように本発明によれば、更新頻度の高いデータを記憶するキャッシュブロックがライトバック処理の対象となることを抑制できる。
【図面の簡単な説明】
【００１９】
【図１】メモリ管理装置１０の構成を示すブロック図である。
【図２】キャッシュ優先度の割当て例を示す図である
【図３】キャッシュ優先度の通知内容を示す図である。
【図４】キャッシュブロックの管理情報を示す図である。
【図５】オフセットアドレス毎のアドレス変換情報を示す図である。
【図６】メモリ管理装置１０の初回起動時の処理を説明するためのフローチャートである。
【図７】ＦＡＴ型ファイルシステムのパーティション構成を示す図である。
【図８】ファイル作成処理の概要を説明するためのフローチャートである。
【図９】ｗｒｉｔｅ処理におけるキャッシュ優先度の通知を説明するためのフローチャートである。
【図１０】書き換え処理を説明するためのフローチャートである。
【図１１】ライトバック処理（Ａ）を説明するためのフローチャートである。
【図１２】ライトバック処理（Ｂ）を説明するためのフローチャートである。
【図１３】ｃｌｏｓｅ処理におけるタイミング情報の通知を説明するためのフローチャートである。
【図１４】ｆｌｕｓｈ処理を説明するためのフローチャートである。
【図１５】ｍｋｄｉｒ処理におけるタイミング情報の通知を説明するためのフローチャートである。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２１】
なお、説明は以下の順序で行うものとする。
１．メモリ装置の概要
２．初回起動時の処理
３．ファイル作成時の処理
３−１．ファイル作成処理の概要
３−２．ｗｒｉｔｅ処理におけるキャッシュ優先度の通知
３−２−１．書き換え処理
３−３．ｃｌｏｓｅ処理におけるタイミング情報の通知
３−３−１．ｆｌｕｓｈ処理
４．ｍｋｄｉｒ処理におけるタイミング情報の通知
５．まとめ
【００２２】
＜１．メモリ装置の概要＞
図１を参照して、本実施形態に係るメモリ装置の一例であるメモリ管理装置１０の概要について説明する。図１は、メモリ管理装置１０の構成を示すブロック図である。
【００２３】
図１に示すように、メモリ管理装置１０は、アプリケーション部１１０と、オペレーティングシステム部１２０と、主記憶部の一例である主記憶領域部１３０と、キャッシュ部の一例であるキャッシュブロック部１４０を有する。
【００２４】
（アプリケーション部１１０）
アプリケーション部１１０は、メモリ管理装置１０における様々な機能を実現するためのものである。アプリケーション部１１０は、ファイルシステムに関する要求をオペレーションシステム部１２０に送る。例えば、アプリケーション部１１０は、ファイルの作成又は削除の要求や、ディレクトリの作成又は削除の要求を、オペレーションシステム部１２０に送る。
【００２５】
（オペレーションシステム部１２０）
オペレーションシステム部１２０は、メモリ管理装置１０の動作を制御するためのものである。オペレーションシステム部１２０は、アプリケーション部１１０の要求を受けて、主記憶領域部１３０とキャッシュブロック部１４０におけるデータの読み出しや書き込みの処理を制御する。オペレーションシステム部１２０は、アプリケーション部１１０の要求に応じた処理結果をアプリケーション部１１０に送る。
【００２６】
（主記憶部１３０）
主記憶領域部１３０は、不揮発性メモリであり、様々なデータを記憶する。主記憶領域部１３０は、データをファイル単位で扱うＦＡＴファイルシステムでフォーマットされている。
【００２７】
（キャッシュブロック部１４０）
キャッシュブロック部１４０は、不揮発性メモリであり、使用頻度（アクセス頻度）の高いデータを一時的に記憶する。キャッシュブロック部１４０は、キャッシュブロックを複数有し、各キャッシュブロックにデータを記憶可能である。キャッシュブロック部１４０も、ＦＡＴファイルシステムでフォーマットされている。なお、キャッシュブロック部１４０の容量は、主記憶部１３０の容量に比べて小さい。キャッシュブロック部１４０のデータ量が所定量を超えると、詳細は後述するが、キャッシュブロック部１４０のデータが主記憶部１３０に移動するライトバック処理が行われる。
【００２８】
（ファイルシステムについて）
ここで、ファイルシステムについて、ＦＡＴ（File  Allocation  Table）ファイルシステムを例に挙げて説明する。
【００２９】
ファイルシステムとは、記憶媒体（本実施形態における主記憶領域部１３０とキャッシュブロック部１４０）上においてファイルを管理するための仕組みである。具体的には、ファイルシステムは、ユーザが論理的に扱うファイルやディレクトリを、実際の物理的な記憶媒体上に対応させ、ファイルやディレクトリ自体を構成するシステムである。ＦＡＴファイルシステムは、ディレクトリエントリとＦＡＴと呼ばれる情報によって管理される。
【００３０】
ＦＡＴファイルシステムにおいて、ファイルはクラスタを単位として構成されているが、同一ファイルを構成する複数のクラスタの記憶媒体上の物理的な位置は必ずしも連続しているわけではない。複数のクラスタがどのような順につながって、１つのファイルを構成しているかを管理しているのが、ＦＡＴである。
【００３１】
ディレクトリとは、ファイルを管理するための階層構造を持つグループ名である。各ディレクトリに含まれるファイルの情報は、ディレクトリエントリと呼ばれる。ディレクトリエントリには、ファイルや他のディレクトリの名前、拡張子、属性、データサイズ、ファイルの開始クラスタの番号（開始クラスタ番号）等の情報が含まれている。最上位のディレクトリをルートディレクトリと呼び、下位のディレクトリをサブディレクトリと呼ぶ。
【００３２】
ＦＡＴファイルシステムによってフォーマットされた記憶媒体は、複数のＦＡＴ領域、ルートディレクトリ領域、実データ領域等を有する。ＦＡＴ領域は、データ領域に記憶されているデータのファイル本体の在り処を示す情報であるＦＡＴ項目を記憶する領域である。ＦＡＴ領域は、通常２つのＦＡＴ領域であり、２つのＦＡＴ領域には、同一の内容が記憶される。
【００３３】
ルートディレクトリ領域は、ファイルの在り処を管理する領域である。ルートディレクトリ領域には、ルートディレクトリに存在するファイルと、サブディレクトリに関する情報を記述したルートディレクトリエントリが記憶される。データ領域は、ファイルの内容（実データ）と、サブディレクトリ以下に存在するファイルとサブディレクトリに関する情報が記憶される。
【００３４】
そして、記憶媒体におけるデータのアクセスは、まず、ルートディレクトリエントリに記述された開始クラスタ番号を参照して、データ領域に記憶されたファイルの一部が読み出される。次に、ＦＡＴを参照して次のデータが記憶されたデータ領域内の位置が特定され、特定された位置のデータが読み出される。
【００３５】
（ファイルシステム制御部１５０）
図１に戻って、メモリ管理装置１０の構成の説明を続ける。オペレーティングシステム部１２０は、制御部の一例であるファイルシステム制御部１５０と、デバイスドライバの一例であるストレージデバイスドライバ（単に、デバイスドライバとも呼ぶ）１６０を有する。
【００３６】
ファイルシステム制御部１５０は、アプリケーション部１１０からの要求に応じた命令を、デバイスドライバ１６０に送る。例えば、ファイルシステム制御部１５０は、主記憶領域部１３０又はキャッシュブロック部１４０へのデータの書き込み又は読み出しを、デバイスドライバ１６０に命令する。
【００３７】
ファイルシステム制御部１５０は、キャッシュブロック部１４０の各キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度（以下、キャッシュ優先度とも呼ぶ）に関する優先度情報をデバイスドライバ１６０に通知する。具体的には、ファイルシステム制御部１５０は、メモリ管理装置１０の初回起動時や、キャッシュブロック部１４０においてデータを記憶しないキャッシュブロックを割り当てる時に、各キャッシュブロックが対応づけられた論理ブロックに対する優先度情報をデバイスドライバ１６０に通知する。
【００３８】
ここで、図２と図３を参照して、キャッシュ優先度の通知に伴うファイルシステム制御部１５０の処理を説明する。図２は、キャッシュ優先度の割当て例を示す図である。図３は、キャッシュ優先度の通知内容を示す図である。
【００３９】
まず、ファイルシステム制御部１５０は、デバイスドライバ１６０から論理ブロックのサイズを取得する。例えば図２に示すように１つの論理ブロックが４つのクラスタを含む場合には、論理ブロックのサイズは４クラスタとなる。
【００４０】
次に、ファイルシステム制御部１５０は、データが置かれる領域の用途を調査する。例えばＦＡＴ型フォーマットの場合、ファイルシステム制御部１５０は、使用中の全クラスタに対して、ファイル用かディレクトリ用かを調査する。図２では、全クラスタがファイル用として使用されている。
【００４１】
次に、ファイルシステム制御部１５０は、調査結果に基づいて、論理ブロック単位でのキャッシュ優先度を決定する。本実施形態のファイルシステム制御部１５０は、以下のように論理ブロックに対してキャッシュ優先度の割当てを行う。すなわち、ファイルシステム制御部１５０は、ＦＡＴが置かれる論理ブロックについては、常に更新されるため、キャッシュ優先度を高として割り当て、ディレクトリが置かれる論理ブロックについては、キャッシュ優先度を中として割り当てる。ファイルだけが置かれる論理ブロックについては、ディレクトリが置かれる論理ブロックよりも更新頻度が少なく、かつキャッシュしておく必要性が乏しいため、ファイルシステム制御部１５０は、キャッシュ優先度を低として割り当てる。例えば、図２の論理ブロックではファイルのみが置かれるので、ファイルシステム制御部１５０は、論理ブロックのキャッシュ優先度を低として割り当てる。
【００４２】
ファイルシステム制御部１５０は、全ての論理ブロックに対して上述した処理を行って、全ての論理ブロックに対してキャッシュ優先度を割り当てる。その後、ファイルシステム制御部１５０は、図３に示すように、全ての論理ブロックに割り当てたキャッシュ優先度を、デバイスドライバ１６０に通知する。
【００４３】
なお、上記では、論理ブロックに割り当てられる優先度が、高・中・低の３つであることとしたが、これに限定されない。例えば、割り当てられる優先度は、高・低の２つであっても良く、又は４つ以上であっても良い。
【００４４】
このように、ファイルシステム制御部１５０が優先度情報をデバイスドライバ１６０に通知することによって、デバイスドライバ１６０は、ライトバック処理の際にキャッシュ優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域１３０に移動させることを防止できる。また、前記データが主記憶領域１３０に移動することによる、前記データに対するアクセス時間が長くなることを防止できる。
【００４５】
また、ファイルシステム制御部１５０は、ライトバック処理（データ移動処理）を実行可能なタイミング情報を、デバイスドライバ１６０に通知する。具体的には、ファイルシステム制御部１５０は、アプリケーション部１１０から要求された処理内容を判別し、処理内容の判別結果から、要求された処理の後に他の処理が続けて要求されないと判定した場合に、タイミング情報をデバイスドライバ１６０に通知する。例えば、アプリケーション部１１０からファイルのｃｌｏｓｅ処理等を受けた場合に、ファイルシステム制御部１５０は、タイミング情報をデバイスドライバ１６０に通知する。
【００４６】
このように、ファイルシステム制御部１５０がタイミング情報をデバイスドライバ１６０に通知することによって、デバイスドライバ１６０は、他の処理（例えば、ｗｒｉｔｅ処理）の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してｗｒｉｔｅ処理等の他の処理の処理速度が低下することを防止できる。
【００４７】
（デバイスドライバ１６０）
図１に戻って、メモリ管理装置１０の構成の説明を続ける。デバイスドライバ１６０は、ファイルシステム制御部１５０からの命令を受けて、主記憶領域部１３０とキャッシュブロック１４０を制御する。デバイスドライバ１６０は、主記憶領域部１３０へのデータの書き込み又は読み出しと、キャッシュブロック部１４０へのデータの一時的な書き込み又は読み出しとを実行する。
【００４８】
デバイスドライバ１６０は、ファイルシステム制御部１５０から通知を受けた優先度情報に基づいて、ライトバック処理の際にデータが主記憶領域部１３０に移動されるキャッシュブロックを選択する。具体的には、デバイスドライバ１６０は、キャッシュブロック部１４０を構成する複数のキャッシュブロックのうちの、キャッシュ優先度が最も低いキャッシュブロックを選択する。そして、デバイスドライバ１６０は、選択したキャッシュ優先度が最も低いキャッシュブロックに記憶されているデータを、ライトバック処理の際に主記憶領域１３０に移動させる。これにより、ライトバック処理の際に、キャッシュ優先度が高いキャッシュブロックに記憶されたデータ（更新頻度が高いデータ）が、主記憶領域部１３０に移動されることを抑制できる。
【００４９】
なお、デバイスドライバ１６０は、キャッシュブロックが空いている場合には、論理ブロックのキャッシュ優先度に関係無く、空いているキャッシュブロックにデータを書き込む。一方で、キャッシュブロックが空いていない場合には、デバイスドライバ１６０は、ライトバック処理を行い、空きキャッシュブロックを確保する。
【００５０】
デバイスドライバ１６０は、ファイルシステム制御部１５０から通知を受けた優先度情報を、キャッシュブロックの管理情報の一部として記憶している。
【００５１】
ここで、図４を参照して、デバイスドライバ１６０が記憶しているキャッシュブロックの管理情報について説明する。図４は、キャッシュブロックの管理情報を示す図である。管理情報は、キャッシュされる論理ブロックと、キャッシュブロックとの対応関係を示すものである。
【００５２】
管理情報には、論理ブロックに関して、アドレスと、使用状況と、キャッシュ優先度の情報が含まれる。ここで、使用状況は、各論理ブロック（例えば、図４の４つの論理ブロック）を比較したものであり、数が小さいほど最近使用された（すなわち、データが書き込まれた）ことを示す。図４では、アドレス０の論理ブロックが、４つの論理ブロックの中で直近に使用されている。キャッシュ優先度として、高・中・低の３つのいずれかが論理ブロック毎に割り当てられる。キャッシュ優先度が高い論理ブロックほど、優先してキャッシュされる。図４では、アドレス０の論理ブロックの優先度が高となっている。なお、キャッシュできる論理ブロックの数には、上限があり、図４では５つである。
【００５３】
また、一つの論理ブロックに対して、複数のキャッシュブロックが割当て可能となっている。図４では、アドレス０の論理ブロックに対して、アドレス０のキャッシュブロックと、アドレス４のキャッシュブロックが割り当てられている。なお、一つの論理ブロックに割当て可能なキャッシュブロックの数には、上限があり、図４では３つである。
【００５４】
デバイスドライバ１６０は、論理ブロック内のオフセットアドレス毎のアドレス変換情報を記憶している。すなわち、デバイスドライバ１６０は、オフセットアドレスに対応するデータが、何れのキャッシュブロックのどのオフセットアドレスに記憶されているかを記憶している。
【００５５】
図５は、オフセットアドレス毎のアドレス変換情報を示す図である。図５では、アドレス０の論理ブロック内のオフセットアドレス毎の、アドレス変換情報が示されている。例えば、論理ブロック内のオフセットアドレス０に対応するデータは、キャッシュブロック０のオフセットアドレス３に記憶されている。
【００５６】
デバイスドライバ１６０は、ファイルシステム制御部１５０から優先度情報の通知を受けた際に、上述した管理情報を更新する。そして、デバイスドライバ１６０は、ライトバック処理の際に、更新後の優先度情報に基づいて、キャッシュ優先度が最も低いキャッシュブロックに記憶されているデータを、主記憶領域部１３０に移動させる。これにより、優先度情報を受けた後のライトバック処理において、キャッシュ優先度が最も低いキャッシブロックに記憶されたデータが、主記憶領域部１３０に移動することとなる。
【００５７】
キャッシュ優先度が同じ論理ブロックが複数ある場合には、デバイスドライバ１６０は、使用時期が古い論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、主記憶領域部１３０に移動させる。使用時期が古いキャッシュブロックは、使用時期が新しいキャッシュブロックに比べて、再度データを更新する確率が低い。このため、優先度が同じキャッシュブロックが複数ある場合でも、ライトバック処理の際に、更新頻度が高いデータが主記憶領域部１３０に移動することを抑制できる。
【００５８】
また、デバイスドライバ１６０は、上述したように、ファイルファイルシステム制御部１５０からライトバック処理のタイミング情報を受ける。デバイスドライバ１６０は、タイミング情報を受けると、ライトバック処理を実行するか否かを判定する。具体的には、デバイスドライバ１６０は、タイミング情報を受けると、管理情報内のキャッシュブロックの使用状態に基づいて、ライトバック処理を実行するか否かを判定する。
【００５９】
そして、デバイスドライバ１６０は、以下のような場合に、ライトバック処理を実行する。まず、デバイスドライバ１６０は、タイミング情報の通知を受けた際にキャッシュブロックを使用している論理ブロックの数が所定数に達している場合に、ライトバック処理を強制的に実行する。これにより、キャッシュ優先度の高い論理ブロックに対応するキャッシュブロックのみにデータを記憶させることができる。
【００６０】
また、デバイスドライバ１６０は、タイミング情報の通知を受けた際に論理ブロックに割り当てられているキャッシュブロックの数が所定数に達している場合に、ライトバック処理を強制的に実行する。これにより、１つの論理ブロックに過大にキャッシュブロックが割り当てられることを防止できる。
【００６１】
更に、デバイスドライバ１６０は、タイミング情報の通知を受けた際に前記キャッシュ部におけるデータを記憶しないキャッシュブロックの数が所定数以下の場合に、ライトバック処理を強制的に実行する。これにより、所定数の空きキャッシュブロックを維持することができる。
【００６２】
このように、デバイスドライバ１６０がタイミング情報を受けた際にライトバック処理を実行することで、他の処理中にライトバック処理が実行されることを防止できるので、他の処理の処理速度の低下を防止できる。
【００６３】
メモリ管理装置１０は、更に、不図示のＣＰＵ、ＲＯＭ、ＲＡＭ等を有する。ＣＰＵは、ＲＯＭや外部の記憶装置等から読み出されたプログラムをＲＡＭ上に展開して実行することで、各種の処理（後述するファイル作成処理等）を実現する。なお、プログラムは、記録媒体に記録されうる。
【００６４】
＜２．初回起動時の処理＞
上述したように、ファイルシステム制御部１５０は、メモリ管理装置１０の初回起動時に、優先度情報をデバイスドライバ１６０に通知する。以下においては、図６を参照して、メモリ管理装置１０の初回起動時の優先度情報の通知処理について説明する。図６は、メモリ管理装置１０の初回起動時の処理を説明するためのフローチャートである。本処理は、ＣＰＵがＲＯＭ等に記憶されたプログラムを実行することで、実現される。
【００６５】
図６のフローチャートは、アプリケーション部１１０が、ファイルシステム制御部１５０に対してマウントを要求するところから開始される（ステップＳ１０２）。ファイルシステム制御部１５０は、アプリケーション部１１０のマウント要求を受けると、マウント処理を実行する（ステップＳ１０４）。
【００６６】
ここで、ステップＳ１０４のマウント処理について説明する。
ファイルシステム制御部１５０は、アプリケーション部１１０に対して、例えばＩＳＯ／ＩＥＣ９９４５（ＰＯＳＩＸ）が定義するようなインターフェースを提供する。また、ファイルシステム制御部１５０は、ファイルシステム特有の構成（フォーマット）でデバイスドライバ１６０上のファイルやディレクトリを管理する。例えば、図７に示すように、ＩＳＯ／ＩＥＣ９２９３（ＪＩＳ  Ｘ  ０６０５）（ＦＡＴ型フォーマット）が定義するフォーマットが用いられる。図７は、ＦＡＴ型ファイルシステムのパーティション構成を示す図である。
【００６７】
そして、マウント処理は、ファイルシステム制御部１５０がアプリケーション部１１０に提供するインターフェースを有効にするための準備処理であり、デバイスドライバ１６０からフォーマットの情報を読み取る処理である。ここで、読み取られる情報は、図７のＦＡＴ型フォーマットのＢＰＢ（ＢＩＯＳパラメータブロック）領域、ＦＡＴ１領域、ＦＡＴ２領域に格納されている情報である。具体的には、読み取られる情報は、ファイルシステムフォーマットを管理するための情報の格納アドレスとサイズ、データの格納アドレスとサイズに関する情報である。なお、図７のＦＡＴ型フォーマットの各クラスタは、ディレクトリ又はファイルとして使用される。
【００６８】
図６のフローチャートに戻って、初回起動時の処理の説明を続ける。ステップＳ１０４のマウント処理の実行後、ファイルシステム制御部１５０は、デバイスドライバ１６０にキャッシュ優先度を通知する（ステップＳ１０６）。
【００６９】
次に、デバイスドライバ１６０は、通知を受けたキャッシュ優先度に基づいて、保持している各論理ブロックのキャッシュ優先度を更新する（ステップＳ１０８）。例えば、デバイスドライバ１６０は、キャッシュ優先度を中から高へ変更して、更新する。
【００７０】
次に、ファイルシステム制御部１５０は、マウント処理結果をアプリケーション部１１０へ送る（ステップＳ１１０）。アプリケーション部１１０がマウント処理結果を受けとると（ステップＳ１１２）、初回起動時の処理が終了する。
【００７１】
このように、初回起動時の処理においては、ファイルシステム制御部１５０からデバイスドライバ１６０にキャッシュ優先度が通知され、デバイスドライバ１６０は、保持している各論理ブロックのキャッシュ優先度を更新する。かかる場合には、ファイルシステム制御部１５０が優先度情報をデバイスドライバ１６０に通知することによって、デバイスドライバ１６０は、ライトバック処理の際にキャッシュ優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域１３０に移動させることを防止できる。
【００７２】
＜３．ファイル作成時の処理＞
上述したように初回起動時にキャッシュ優先度の通知が行われたが、ファイル作成時にもキャッシュ優先度の通知が行われる。そこで、以下においては、ファイル作成時のキャッシュ優先度の通知処理について説明する。
【００７３】
（３−１．ファイル作成処理の概要）
まず、図８を参照して、ファイル作成処理の概要について説明する。図８は、ファイル作成処理の概要を説明するためのフローチャートである。本処理は、ＣＰＵがＲＯＭ等に記憶されたプログラムを実行することで、実現される。
【００７４】
図８のフローチャートは、アプリケーション部１１０がファイルシステム制御部１５０に対してファイルのｏｐｅｎを要求するところから開始される（ステップＳ２０２）。ファイルシステム制御部１５０は、アプリケーション部１１０のｏｐｅｎ要求を受けると、ｏｐｅｎ処理を実行する（ステップＳ２０４）。なお、ｏｐｅｎ処理の実行の際にキャッシュ優先度の通知が行われるが、詳細については後述する。
【００７５】
アプリケーション部１１０は、ｏｐｅｎ処理の結果をファイルシステム制御部１５０から受け取る（ステップＳ２０６）。次に、アプリケーション部１１０は、ファイルシステム制御部１５０に対してファイルのｗｒｉｔｅを要求する（ステップＳ２０８）。
【００７６】
ファイルシステム制御部１５０は、アプリケーション部１１０のｗｒｉｔｅ要求を受けると、ｗｒｉｔｅ処理を実行する（ステップＳ２１０）。なお、ｗｒｉｔｅ処理の実行の際にキャッシュ優先度の通知が行われるが、詳細については後述する。
【００７７】
アプリケーション部１１０は、ｗｒｉｔｅ処理の結果をファイルシステム制御部１５０から受け取る（ステップＳ２１２）。そして、ファイルのｗｒｉｔｅを更に行う場合には（ステップＳ２１４：Ｙｅｓ）、上述したステップＳ２０８〜Ｓ２１２の処理が繰り返される。
【００７８】
一方で、ファイルのｗｒｉｔｅを終了する場合には（ステップＳ２１４：Ｎｏ）、アプリケーション部１１０は、ファイルシステム制御部１５０に対してファイルのｃｌｏｓｅを要求する（ステップＳ２１６）。
【００７９】
ファイルシステム制御部１５０は、アプリケーション部１１０のｃｌｏｓｅ要求を受けると、ｃｌｏｓｅ処理を実行する（ステップＳ２１８）。なお、ｃｌｏｓｅ処理の実行の際に、上述したタイミング情報の通知が行われるが、詳細については後述する。
【００８０】
アプリケーション部１１０は、ｃｌｏｓｅ処理の結果をファイルシステム制御部１５０から受け取る（ステップＳ２２０）。これにより、ファイル作成時の一連の処理が完了する。
【００８１】
（３−２．ｗｒｉｔｅ処理におけるキャッシュ優先度の通知）
図８のステップＳ２０４のｏｐｅｎ処理におけるキャッシュ優先度の通知処理と、ステップＳ２１０のｗｒｉｔｅ処理におけるキャッシュ優先度の通知処理は、同様である。このため、以下においては、ｗｒｉｔｅ処理におけるキャッシュ優先度の通知処理について説明する。
【００８２】
図９は、ｗｒｉｔｅ処理におけるキャッシュ優先度の通知を説明するためのフローチャートである。まず、ファイルシステム制御部１５０は、データの書き換え対象の領域（書換領域）を決める（ステップＳ３０２）。
【００８３】
次に、ファイルシステム制御部１５０は、書換領域に対応した論理ブロックのキャッシュ優先度に変更があるか否かを判定する（ステップＳ３０４）。キャッシュ優先度に変更がある場合には（ステップＳ３０４：Ｙｅｓ）、ファイルシステム制御部１５０は、デバイスドライバ１６０にキャッシュ優先度の通知を行う（ステップＳ３０６）。
【００８４】
ここで、キャッシュ優先度の通知に伴うファイルシステム制御部１５０の処理を説明する。図２を参照して前述したように、ファイルシステム制御部１５０は、論理ブロックの用途に基づいて、論理ブロックのキャッシュ優先度を割り当てる。その後、ファイルシステム制御部１５０は、論理ブロックに割り当てたキャッシュ優先度を、デバイスドライバ１６０に通知する。
【００８５】
なお、初回起動時の処理においては、図３を参照して前述したように、全ての論理ブロックの優先度を通知するものとしたが、ｗｒｉｔｅ処理においては、新規に割り当てられた論理ブロックのキャッシュ優先度のみを通知しても良い。これにより、通知の際のデータ量を少なくでき、キャッシュ優先度の通知の伴う処理時間を短縮できる。
【００８６】
図９のフローチャートに戻って、本処理の説明を続ける。デバイスドライバ１６０は、ファイルシステム制御部１５０から通知を受けたキャッシュ優先度に基づいて、保持している論理ブロックのキャッシュ優先度を更新する（ステップＳ３０８）。
【００８７】
ファイルシステム制御部１５０は、デバイスドライバ１６０にデバイスの書き換えを依頼する（ステップＳ３１０）。デバイス書き換えの依頼を受けたデバイスドライバ１６０は、対象ブロックのキャッシュ優先度に基づいて、書き換え処理を行う（ステップＳ３１２）。なお、書き換え処理の詳細については、後述する。
【００８８】
ファイルシステム制御部１５０は、書き換え処理の結果をデバイスドライバ１６０から受け取って、処理結果を確認する。そして、書き換え処理が終了するまで、上述したステップＳ３０２〜３１２の処理を繰り返す。
全ての書き換え処理が完了すると、本処理は終了し、図８のフローチャートに戻ることになる。
【００８９】
（３−２−１．書き換え処理）
図１０を参照して、図９のステップＳ３１２の書き換え処理について説明する。図１０は、書き換え処理を説明するためのフローチャートである。
【００９０】
書き換え処理において、デバイスドライバ１６０は、まず、ｗｒｉｔｅ命令の該当アドレスから、論理ブロックアドレスと論理ブロック内のオフセットアドレスを算出する（ステップＳ４０２）。デバイスドライバ１６０は、図４の管理情報と、図５のアドレス変換情報とに基づいて、論理ブロックアドレスと論理ブロック内のオフセットアドレスを算出する。
【００９１】
次に、デバイスドライバ１６０は、管理情報から、論理ブロックにキャッシュブロックが割当て済みか否かを判定する（ステップＳ４０４）。ステップＳ４０４で論理ブロックにキャッシュブロックが割当て済みである場合には（Ｙｅｓ）、デバイスドライバ１６０は、キャッシュブロックへのデータの追記が可能か否かを判定する（ステップＳ４０６）。
【００９２】
ステップＳ４０６でキャッシュブロックへのデータの追記が可能である場合には（Ｙｅｓ）、デバイスドライバ１６０は、キャッシュブロックにデータを書き込む（ステップＳ４０８）。そして、デバイスドライバ１６０は、管理情報を更新する（ステップＳ４１０）。
【００９３】
ステップＳ４０６でキャッシュブロックへのデータの追記が不可能である場合には（Ｎｏ）、デバイスドライバ１６０は、論理ブロックに割り当てられているキャッシュブロックの使用数を確認する（ステップＳ４１２）。そして、デバイスドライバ１６０は、論理ブロックに割り当てられているキャッシュブロックの使用数が上限数（例えば、図４に示す３つ）に達しているか否かを判定する（ステップＳ４１４）。
【００９４】
ステップＳ４１４でキャッシュブロックの使用数が上限数に達している場合には（Ｙｅｓ）、デバイスドライバ１６０は、空きキャッシュブロックを作成すべく、ライトバック処理（Ａ）を実行する（ステップＳ４１６）。
【００９５】
（ライトバック処理（Ａ）について）
ここで、図１１を参照して、ステップＳ４１６のライトバック処理（Ａ）について説明する。図１１は、ライトバック処理（Ａ）を説明するためのフローチャートである。
【００９６】
図１１のフローチャートで、デバイスドライバ１６０は、まず、有効データをキャッシュブロックから主記憶領域部１３０へ移動させる（ステップＳ５０２）。そして、デバイスドライバ１６０は、有効データが移動したキャッシュブロックを、空きキャッシュブロックとする（ステップＳ５０４）。有効データを移動させるキャッシュブロックは、１つ、又は複数であっても良い。
【００９７】
次に、デバイスドライバ１６０は、有効データが移動したキャッシュブロックについて、図２に示す管理情報を更新する（ステップＳ５０６）。これにより、ライトバック処理（Ａ）が完了し、図１０のフローチャートに戻る。
【００９８】
上述したライトバック処理（Ａ）の場合には、１つの論理ブロックに割り当てるキャッシュブロックの数を制限することにあるので、キャッシュブロック部１４０の容量が小さくても、更新頻度の高い複数の論理ブロックの各々にキャッシュブロックを割り当てることができる。
【００９９】
図１０のフローチャートに戻って、書き換え処理の説明を続ける。ステップＳ４１６のライトバック処理（Ａ）が完了すると、デバイスドライバ１６０は、空きのキャッシュブロック（有効データが移動したキャッシュブロック）を取得する（ステップＳ４２０）。その後、デバイスドライバ１６０は、空きのキャッシュブロックに新たにデータを書き込み（ステップＳ４０８）、管理情報を更新する（ステップＳ４１０）。
【０１００】
ステップＳ４０４で論理ブロックにキャッシュブロックが割当て済みでない場合には（Ｎｏ）、デバイスドライバ１６０は、キャッシュブロックを使用している論理ブロックの数を確認する（ステップＳ４２２）。そして、デバイスドライバ１６０は、キャッシュブロックを使用している論理ブロックの数が上限数（例えば、図４に示す５つ）に達しているか否かを判定する（ステップＳ４２４）。
【０１０１】
ステップＳ４２４でキャッシュブロックを使用している論理ブロックの数が上限数に達している場合には（Ｙｅｓ）、デバイスドライバ１６０は、空きキャッシュブロックを作成すべく、ライトバック処理（Ｂ）を実行する（ステップＳ４２６）。
【０１０２】
（ライトバック処理（Ｂ）について）
ここで、図１２を参照して、ライトバック処理（Ｂ）について説明する。図１２は、ライトバック処理（Ｂ）を説明するためのフローチャートである。
【０１０３】
デバイスドライバ１６０は、まず、管理情報から、キャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックを全て検索する（ステップＳ５５２）。そして、デバイスドライバ１６０は、キャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックが存在するか否かを判定する（ステップＳ５５４）。
【０１０４】
ステップＳ５５４でキャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックが存在する場合には（Ｙｅｓ）、デバイスドライバ１６０は、キャッシュ優先度が低の論理ブロックの中で最近使用されていない論理ブロックを検索する（ステップＳ５５６）。すなわち、デバイスドライバ１６０は、図４の管理情報の中で使用状況を示す値が大きい論理ブロックを検索する。
【０１０５】
次に、デバイスドライバ１６０は、ステップＳ５５６で検索された論理ブロックに割り当てられたキャッシュブロックの有効データを、主記憶領域部１３０に移動させる（ステップＳ５５８）。これにより、デバイスドライバ１６０は、キャッシュ優先度が低の同じ論理ブロックの中で最近使用されていない論理ブロックに割り当てられたキャッシュブロックを、空きキャッシュブロックにする（ステップＳ５６０）。なお、論理ブロックに複数のキャッシュブロックが割り当てられている場合には、デバイスドライバ１６０は、割り当てられたキャッシュブロックを、空きキャッシュブロックにする。そして、デバイスドライバ１６０は、管理情報を更新する（ステップＳ５６２）。
【０１０６】
ステップＳ５５４でキャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックが存在しない場合には（Ｎｏ）、デバイスドライバ１６０は、キャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックを全て検索する（ステップＳ５６４）。そして、デバイスドライバ１６０は、キャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックが存在するか否かを判定する（ステップＳ５６６）。
【０１０７】
ステップＳ５６６でキャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックが存在する場合には（Ｙｅｓ）、デバイスドライバ１６０は、キャッシュ優先度が中の論理ブロックの中で最近使用されていない論理ブロックを検索する（ステップＳ５５６）。そして、デバイスドライバ１６０は、前述したステップＳ５５８〜Ｓ５６２の処理を行う。
【０１０８】
ステップＳ５６６でキャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックが存在しない場合には（Ｎｏ）、デバイスドライバ１６０は、キャッシュ優先度が高の論理ブロックに割り当てられたキャッシュブロックを全て検索する（ステップＳ５６８）。次に、デバイスドライバ１６０は、キャッシュ優先度が高の論理ブロックの中で最近使用されていない論理ブロックを検索する（ステップＳ５５６）。そして、デバイスドライバ１６０は、前述したステップＳ５５８〜Ｓ５６２の処理を行う。
【０１０９】
ステップＳ５６２の管理情報の更新が行われると、ライトバック処理（Ｂ）が完了し、図１０のフローチャートに戻る。
【０１１０】
ライトバック処理（Ｂ）においては、デバイスドライバ１６０が、ファイルシステム制御部１５０から通知されたキャッシュ優先度に基づいて、キャッシュ優先度が低い論理ブロックに割り当てられたキャッシュブロックのデータを主記憶領域部１３０に移動させる。このため、ライトバック処理の際に、キャッシュ優先度が高い論理ブロックに割り当てられたキャッシュブロックに記憶されたデータ（更新頻度が高いデータ）が、主記憶領域部１３０に移動することを抑制できる。
【０１１１】
また、ライトバック処理（Ｂ）においては、キャッシュ優先度が同じ論理ブロックが複数ある場合には、デバイスドライバ１６０は、使用時期が最も古い論理ブロックに割り当てられたキャッシュブロックのデータを主記憶領域部１３０に移動させる。使用時期が最も古い論理ブロックは、その後に更新される可能性が低いので、他の論理ブロック（その後に更新される可能性が高い論理ブロック）に割り当てられたキャッシュブロックのデータが、主記憶領域部１３０に移動することを抑制できる。
【０１１２】
図１０のフローチャートに戻って、書き換え処理の説明を続ける。ステップＳ４２６のライトバック処理（Ｂ）が完了すると、デバイスドライバ１６０は、空きのキャッシュブロックを取得する（ステップＳ４２０）。その後、デバイスドライバ１６０は、空きのキャッシュブロックにデータを書き込み（ステップＳ４０８）、管理情報を更新する（ステップＳ４１０）。
【０１１３】
なお、ステップＳ４１８で空きキャッシュブロックがある場合には（Ｙｅｓ）、デバイスドライバ１６０は、ライトバック処理を行わずに、空いているキャッシュブロックを取得する（ステップＳ４２０）。一方で、ステップＳ４１８で空きキャッシュブロックが無い場合には（Ｎｏ）、デバイスドライバ１６０は、前述したライトバック処理（Ｂ）を行って（ステップＳ４２６）、空いているキャッシュブロックを取得する（ステップＳ４２０）。
【０１１４】
また、ステップＳ４２４でキャッシュブロックを使用している論理ブロックの数が上限数に達していない場合には（Ｎｏ）、デバイスドライバ１６０は、ライトバック処理を行わずに、空いているキャッシュブロックを取得する（ステップＳ４２０）。その後、デバイスドライバ１６０は、空きのキャッシュブロックにデータを書き込み（ステップＳ４０８）、管理情報を更新する（ステップＳ４１０）。
【０１１５】
このように、ｗｒｉｔｅ処理においては、ファイルシステム制御部１５０からデバイスドライバ１６０にキャッシュ優先度が通知され、デバイスドライバ１６０は、保持している各論理ブロックのキャッシュ優先度を更新する（ｏｐｅｎ処理も同様）。かかる場合には、ファイルシステム制御部１５０が優先度情報をデバイスドライバ１６０に通知することによって、デバイスドライバ１６０は、ライトバック処理の際に優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域１３０に移動させることを防止できる。
【０１１６】
（３−３．ｃｌｏｓｅ処理におけるタイミング情報の通知）
図１３を参照して、図８のステップＳ２１８のｃｌｏｓｅ処理におけるタイミング情報の通知について説明する。図１３は、ｃｌｏｓｅ処理におけるタイミング情報の通知を説明するためのフローチャートである。
【０１１７】
まず、ファイルシステム制御部１５０は、ファイルのｃｌｏｓｅ処理を行う（ステップＳ６０２）。ここで、ｃｌｏｓｅ処理は、ファイル作成における最終処理であり、ｏｐｅｎ処理やｗｒｉｔｅ処理とは異なり、続けて他の処理が実行される可能性が低い。このため、ｃｌｏｓｅ処理後のアイドル時間にライトバック処理を実行させることで、他の処理の処理速度が低下することを防止できる。
【０１１８】
ファイルシステム制御部１５０は、ｃｌｏｓｅ処理後のアイドル時間にライトバック処理が可能であることを示すタイミング情報を、デバイスドライバ１６０に通知する（ステップＳ６０４）。ファイルシステム制御部１５０は、タイミング情報の通知に伴い、デバイスドライバ１６０にｆｌｕｓｈ処理を要求する。ｆｌｕｓｈ処理は、強制的にライトバック処理を行う処理である。
【０１１９】
ｆｌｕｓｈ処理の要求を受けたデバイスドライバ１６０は、図１４のｆｌｕｓｈ処理を実行する（ステップＳ６０６）。なお、ｆｌｕｓｈ処理の詳細については、後述する。
【０１２０】
ｆｌｕｓｈ処理が完了すると、ファイルシステム制御部１５０は、ｃｌｏｓｅ処理結果をアプリケーション部１１０に送る（ステップＳ６０８）。これにより、本処理が終了し、図８のフローチャートに戻ることになる。
【０１２１】
（３−３−１．ｆｌｕｓｈ処理）
図１４を参照して、図１３のステップＳ６０６のｆｌｕｓｈ処理について説明する。図１４は、ｆｌｕｓｈ処理を説明するためのフローチャートである。
【０１２２】
デバイスドライバ１６０は、まず、空きキャッシュブロックの数が規定数以上であるか否か（例えば、空きのキャッシュブロックがあるか否か）を判定する（ステップＳ７０２）。
【０１２３】
ステップＳ７０２で空きのキャッシュブロックがあると判定された場合には（Ｙｅｓ）、デバイスドライバ１６０は、キャッシュブロックを使用している論理ブロックの数を確認する（ステップＳ７０４）。そして、デバイスドライバ１６０は、キャッシュブロックを使用している論理ブロックの数が上限数（図４の５つ）に達しているか否かを判定する（ステップＳ７０６）。
【０１２４】
ステップＳ７０６で論理ブロックの数が上限数に達している場合には（Ｙｅｓ）、デバイスドライバ１６０は、前述した図１２のライトバック処理（Ｂ）を実行する（ステップＳ７０８）。一方で、ステップＳ７０６で論理ブロックの数が上限数に達していない場合には（Ｎｏ）、デバイスドライバ１６０は、論理ブロックに割り当てられているキャッシュブロック使用数を確認する（ステップＳ７１０）。
【０１２５】
次に、デバイスドライバ１６０は、論理ブロックに割り当てられているキャッシュブロックの使用数が上限数（図４の３つ）に達しているか否かを判定する（ステップＳ７１２）。
【０１２６】
ステップＳ７１２でキャッシュブロックの使用数が上限数に達している場合には（Ｙｅｓ）、デバイスドライバ１６０は、前述した図１１のライトバック処理（Ａ）を実行する（ステップＳ７１４）。一方で、ステップＳ７１２でキャッシュブロックの使用数が上限数に達していない場合には（Ｎｏ）、デバイスドライバ１６０は、ライトバック処理（Ａ）、ライトバック処理（Ｂ）を実行せずに、本処理を終了する。
【０１２７】
ステップＳ７０２で空きのキャッシュブロックが無いと判定された場合には（Ｎｏ）、デバイスドライバ１６０は、前述した図１２のライトバック処理（Ｂ）を実行する（ステップＳ７１６）。これにより、本処理が完了し、図１３のフローチャートに戻る。
【０１２８】
このように、ｃｌｏｓｅ処理において、ファイルシステム制御部１５０がタイミング情報をデバイスドライバ１６０に通知することによって、デバイスドライバ１６０は、他の処理（例えば、ｗｒｉｔｅ処理）の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してｗｒｉｔｅ処理等の他の処理の処理速度が低下することを防止できる。
【０１２９】
（４．ｍｋｄｉｒ処理におけるタイミング情報の通知）
上記では、ライトバック処理のタイミング情報の通知が、ｃｌｏｓｅ処理の際に行われることとしたが、ディレクトリを作成するための処理であるｍｋｄｉｒ処理の際に行われうる。
【０１３０】
図１５を参照して、ｍｋｄｉｒ処理におけるライトバック処理のタイミング情報の通知について説明する。図１５は、ｍｋｄｉｒ処理におけるタイミング情報の通知を説明するためのフローチャートである。
【０１３１】
まず、ファイルシステム制御部１５０は、ファイルのｍｋｄｉｒ処理を行う（ステップＳ８０２）。ここで、ｍｋｄｉｒ処理は、ｃｌｏｓｅ処理と同様に、続けて他の処理が実行される可能性が低い。このため、ｍｋｄｉｒ処理後のアイドル時間にライトバック処理を実行させることで、他の処理の処理速度が低下することを防止できる。
【０１３２】
ファイルシステム制御部１５０は、ｍｋｄｉｒ処理後のアイドル時間にライトバック処理が可能であることを示すタイミング情報を、デバイスドライバ１６０に通知する（ステップＳ８０４）。ファイルシステム制御部１５０は、タイミング情報の通知に伴い、デバイスドライバ１６０にｆｌｕｓｈ処理を要求する。
【０１３３】
ｆｌｕｓｈ処理の要求を受けたデバイスドライバ１６０は、前述した図１４のｆｌｕｓｈ処理を実行する（ステップＳ８０６）。ｆｌｕｓｈ処理が完了すると、ファイルシステム制御部１５０は、ｍｋｄｉｒ処理結果をアプリケーション部１１０に送る（ステップＳ８０８）。これにより、本処理が終了する。
【０１３４】
このように、ｍｋｄｉｒ処理において、ファイルシステム制御部１５０がタイミング情報をデバイスドライバ１６０に通知することによって、デバイスドライバ１６０は、他の処理（例えば、ｗｒｉｔｅ処理）の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してｗｒｉｔｅ処理等の他の処理の処理速度が低下することを防止できる。
【０１３５】
なお、ライトバック処理のタイミング情報の通知は、ｃｌｏｓｅ処理やｍｋｄｉｒ処理以外の処理の際に実行されても良い。例えば、ｒｍｄｉｒ処理、ｕｎｌｉｎｋ処理、ｒｅｎａｍｅ処理も、その後に他の処理が続けて行われる可能性が低い処理であるので、タイミング情報の通知を行っても良い。ここで、ｒｍｄｉｒ処理は、ディレクトリを削除する処理である。ｕｎｌｉｎｋ処理は、ファイルを削除する処理である。ｒｅｎａｍｅ処理は、ファイル名を変更する処理、又はファイル名を移動する処理である。
【０１３６】
また、アプリケーション部１１０の判断で、しばらくオペレーティングシステム１２０に要求を出さないことが分かっている場合に、アプリケーション部１１０が、デバイスドライバ１６０にタイミング情報を通知しても良い。
【０１３７】
＜５．まとめ＞
上述した本実施形態では、ファイルシステム制御部１５０は、キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報をデバイスドライバ１６０に通知する。これにより、デバイスドライバ１６０は、ライトバック処理の際にキャッシュ優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域１３０に移動させることを防止できる。
【０１３８】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【０１３９】
上記実施形態では、メモリ管理装置１０は、主記憶領域部１３０とキャッシュブロック部１４０を備えることとしたが、これに限定されず、主記憶領域部１３０とキャッシュブロック１４０は、メモリ管理装置１０以外の装置に組み込まれても良い。かかる場合には、メモリ管理装置１０は、メモリ制御装置として機能することになる。
【０１４０】
また、上記実施形態では、主記憶領域部１３０及びキャッシュブロック部１４０が不揮発性メモリであることとしたが、これに限定されない。例えば、主記憶領域部１３０とキャッシュブロック部１４０のいずれか一方が、不揮発性メモリであっても良い。
【０１４１】
尚、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的に又は個別的に実行される処理をも含む。また時系列的に処理されるステップでも、場合によっては適宜順序を変更することが可能であることは言うまでもない。
【符号の説明】
【０１４２】
１０    メモリ管理装置
１１０    アプリケーション部
１２０    オペレーティングシステム部
１３０    主記憶領域部
１４０    キャッシュブロック部
１５０    ファイルシステム制御部
１６０    ストレージデバイスドライバ
【図１】
0005699712.tif 000002
【図２】
0005699712.tif 000003
【図３】
0005699712.tif 000004
【図４】
0005699712.tif 000005
【図５】
0005699712.tif 000006
【図６】
0005699712.tif 000007
【図７】
0005699712.tif 000008
【図８】
0005699712.tif 000009
【図９】
0005699712.tif 000010
【図１０】
0005699712.tif 000011
【図１１】
0005699712.tif 000012
【図１２】
0005699712.tif 000013
【図１３】
0005699712.tif 000014
【図１４】
0005699712.tif 000015
【図１５】
0005699712.tif 000016