(57)【特許請求の範囲】
【請求項１】
異なるセクタサイズを有する複数の記憶装置上のデータを保持するバッファキャッシュを管理するためのバッファキャッシュ管理装置によるバッファキャッシュ管理方法であって、
前記バッファキャッシュに使用するメモリ領域を前記複数の記憶装置のうちの最大のセクタサイズを基本管理単位として管理する基本管理単位管理ステップと、
アクセスが発生した場合、当該アクセスするセクタのサイズに応じて、そのデータを格納する区画を、前記基本管理単位を更に内部的に分割して管理する分割管理ステップと
を有することを特徴とするバッファキャッシュ管理方法。
【請求項２】
前記アクセスするセクタのサイズと同一サイズのキャッシュバッファ上の空きバッファを検索する空きバッファ検索ステップを更に有することを特徴とする請求項１に記載のバッファキャッシュ管理方法。
【請求項３】
前記空きバッファ検索ステップにおいてアクセスするセクタのサイズと同一サイズの空きバッファがなかった場合、バッファブロックでの空き領域を検索する空きバッファブロック検索ステップを更に有することを特徴とする請求項２に記載のバッファキャッシュ管理方法。
【請求項４】
前記空きバッファブロック検索ステップにおいて空きバッファブロックがなかった場合、ＬＲＵを含むアルゴリズムにより入れ替え対象のバッファを決定する入れ替え対象バッファ決定ステップと、
前記入れ替え対象バッファ決定ステップにより決定された入れ替え対象バッファとアクセスするセクタのサイズとを比較するバッファサイズ比較ステップと
を更に有することを特徴とする請求項３に記載のバッファキャッシュ管理方法。
【請求項５】
前記バッファサイズ比較ステップにおいて入れ替え対象バッファとアクセスするセクタのサイズが異なる場合、前記バッファブロックでの同期を行うために新たに入れ替え対象のバッファブロックを決定する入れ替え対象バッファブロック決定ステップと、
前記入れ替え対象バッファブロック決定ステップで決定された入れ替え対象バッファブロックを記憶装置と同期して、そのバッファブロックを空きバッファブロックとするバッファブロック同期ステップと、
前記バッファブロック同期ステップで同期したバッファブロックの管理の単位をバッファブロックサイズに戻すバッファブロック結合ステップと
を更に有することを特徴とする請求項４に記載のバッファキャッシュ管理方法。
【請求項６】
前記空きバッファブロック検索ステップにより検索された空きバッファブロックもしくは前記バッファブロック同期ステップにより同期された空きバッファブロックの管理サイズを、アクセスするセクタのサイズに分割して空きバッファを生成するバッファブロック分割ステップを更に有することを特徴とする請求項５に記載のバッファキャッシュ管理方法。
【請求項７】
前記バッファサイズ比較ステップにおいて入れ替え対象バッファとアクセスするセクタのサイズが同一である場合、その入れ替え対象バッファを記憶装置と同期して、そのバッファを空きバッファとするバッファ同期ステップを更に有することを特徴とする請求項６に記載のバッファキャッシュ管理方法。
【請求項８】
前記空きバッファ検索ステップにより検索されたアクセスするセクタと同一サイズの空きバッファもしくは前記バッファブロック分割ステップにより生成された空きバッファもしくは前記バッファ同期ステップにより生成された空きバッファに、アクセスするセクタをキャッシュするセクタキャッシュステップを更に有することを特徴とする請求項７に記載のバッファキャッシュ管理方法。
【請求項９】
異なるセクタサイズを有する複数の記憶装置上のデータを保持するバッファキャッシュを管理するためのバッファキャッシュ管理装置であって、
前記バッファキャッシュに使用するメモリ領域を前記複数の記憶装置のうちの最大のセクタサイズを基本管理単位として管理する基本管理単位管理手段と、
アクセスが発生した場合、当該アクセスするセクタのサイズに応じて、そのデータを格納する区画を、前記基本管理単位を更に内部的に分割して管理する分割管理手段と
を有することを特徴とするバッファキャッシュ管理装置。
【請求項１０】
異なるセクタサイズを有する複数の記憶装置上のデータを保持するバッファキャッシュを管理するためのバッファキャッシュ管理装置によるバッファキャッシュ管理方法をコンピュータに実行させるためのプログラムであって、
前記バッファキャッシュに使用するメモリ領域を前記複数の記憶装置のうちの最大のセクタサイズを基本管理単位として管理する基本管理単位管理ステップと、
アクセスが発生した場合、当該アクセスするセクタのサイズに応じて、そのデータを格納する区画を、前記基本管理単位を更に内部的に分割して管理する分割管理ステップと
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルシステムにおいて、異なるセクタサイズを有する複数の記憶装置上のデータを保持するバッファキャッシュを管理するためのバッファキャッシュ管理方法、バッファキャッシュ管理装置及びプログラムに関する。
【背景技術】
【０００２】
ファイルシステムとは、記憶装置に記録されているデータを管理する方式、管理を行なうソフトウェアや、記憶媒体に設けられた管理領域や管理情報のことである。
【０００３】
このファイルシステムでは、バッファキャッシュと呼ばれる機構を持つことが多い。これは、記憶装置から読み込んだデータ、または記憶装置に書き込むデータを一旦バッファキャッシュと呼ばれるメモリ領域に置くことで、参照の局所性を用いたアクセスの高速化、記憶装置へのアクセス回数の低減、先読みによる高速化などを行うためのものである。
【０００４】
記憶装置は、一般にセクタと呼ばれる固定サイズの物理的に連続な領域を最小単位としており、ファイルシステムでは、この単位にデータの記録再生を行う。一般に、そのサイズは、２のべき乗で規定される。
【０００５】
セクタのサイズは、ハードディスクやＳＤカードなどの代表的な記憶装置では、５１２バイトとなっている。この他、１Ｋ（１０２４）バイトまたは２Ｋバイトのセクタサイズのメディアも存在する。このため、５１２バイトと、これらの大容量のセクタサイズ間で、互換をとることが出来るようにする要求がある。
【０００６】
このような物理セクタサイズの異なる記憶装置上のデータを扱う場合、ＯＳ（ファイルシステム）と記憶装置のセクタサイズの違いを吸収する方式は既に提案されている（例えば、下記の特許文献１、下記の特許文献２、下記の特許文献３、下記の特許文献４など）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平４−１６５５２７号公報
【特許文献２】米国特許第５４８５４３９号明細書
【特許文献３】特開平４−１４１２７号公報
【特許文献４】特開平９−１４６７１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来の方式では、異なるセクタサイズを有する複数の記憶装置を扱いたい場合、アクセスする記憶装置を切り替える度にバッファキャッシュ上のデータを同期するか、記憶装置の数に応じてバッファキャッシュの領域を分割する必要がある。このため、「完全に同時に扱えない」、「バッファキャッシュの利用効率が悪い」といったような問題があった。
【０００９】
本発明は、このような問題点に鑑みてなされたものであり、バッファキャッシュ領域を記憶装置ごとに分割することなく、物理セクタサイズの異なる複数の記憶装置上のデータを管理する仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のバッファキャッシュ管理方法は、異なるセクタサイズを有する複数の記憶装置上のデータを保持するバッファキャッシュを管理するためのバッファキャッシュ管理装置によるバッファキャッシュ管理方法であって、前記バッファキャッシュに使用するメモリ領域を前記複数の記憶装置のうちの最大のセクタサイズを基本管理単位として管理する基本管理単位管理ステップと、アクセスが発生した場合、当該アクセスするセクタのサイズに応じて、そのデータを格納する区画を、前記基本管理単位を更に内部的に分割して管理する分割管理ステップとを有する。
また、本発明は、上述したバッファキャッシュ管理方法を実行するバッファキャッシュ管理装置、及び、当該バッファキャッシュ管理方法をコンピュータに実行させるためのプログラムを含む。
【発明の効果】
【００１１】
本発明によれば、バッファキャッシュ領域を記憶装置ごとに分割することなく、物理セクタサイズの異なる複数の記憶装置上のデータを同時に扱う（管理する）ことが出来るようになり、バッファキャッシュの利用効率を向上させることが出来る。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態により記憶装置上のデータが管理されるファイルシステムを含む全体構成の一例を示す模式図である。
【図２】本発明の実施形態を示し、最大物理セクタサイズの取得方法の処理手順の一例を示すフローチャートである。
【図３】本発明の実施形態を示し、バッファキャッシュ方法の一例を示すフローチャートである。
【図４】本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。
【図５】本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。
【図６】本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。
【図７】本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。
【図８】バッファのＬＲＵ順序と入れ替え対象ブロックの一例を示す模式図である。
【図９】図１に示すバッファキャッシュ管理システム（バッファキャッシュ管理装置）のハードウェア構成の一例を示す模式図である。
【発明を実施するための形態】
【００１３】
以下に、図面を参照しながら、本発明を実施するための形態（実施形態）について説明する。
【００１４】
ここでは、本発明に係るバッファキャッシュ管理システム（バッファキャッシュ管理装置）、バッファキャッシュ管理方法及びプログラムの実施形態を、図に基づいて説明する。
まず、図１は、本発明の実施形態により記憶装置上のデータが管理されるファイルシステムを含む全体構成の一例を示す模式図である。
【００１５】
図１において、アプリケーション１０１は、接続している記憶装置内のデータをプログラムにおいて利用したい場合、ファイルシステム１０２を介してドライバ１０４により記憶装置（１０５〜１０７）からデータを取得する。ただし、ファイルシステム１０２に内包されるバッファキャッシュ管理システム１０３により、既に目的のデータがバッファキャッシュ１０８にキャッシュされている場合には、記憶装置にはアクセスせず、バッファキャッシュ１０８からデータを取得する。
【００１６】
本実施形態では、「物理セクタサイズの異なる複数の記憶装置」と接続していることを前提にしており、図１の記憶装置１０５、１０６及び１０７は、それぞれ、物理セクタサイズが５１２バイト、１Ｋバイト、２Ｋバイトと異なる記憶装置である。これらの記憶装置上のデータについてバッファキャッシュ１０８の領域を「記憶装置ごと」に分割することなく管理する。
【００１７】
バッファキャッシュ管理システム（バッファキャッシュ管理装置：以下同様）１０３は、異なるセクタサイズを有する複数の記憶装置上のデータを保持するバッファキャッシュ１０８を管理するためのものである。
具体的に、バッファキャッシュ管理システム１０３は、バッファキャッシュ１０８に使用するメモリ領域を複数の記憶装置のうちの最大のセクタサイズを基本管理単位として管理する（基本管理単位管理ステップ）。図１に示す例では、２Ｋバイトを基本管理単位としている。そして、バッファキャッシュ管理システム１０３は、アクセスするセクタのサイズに応じて、そのデータを格納する区画を、基本管理単位（図１に示す例では２Ｋバイト）を更に内部的に分割して管理する（分割管理ステップ）。
【００１８】
上述したように、バッファキャッシュ１０８は、接続されている記憶装置のうち、最も大きい物理セクタサイズで管理される。この最大物理セクタサイズは、バッファキャッシュ管理システム１０３内の最大セクタサイズ記憶領域１０９に記憶されている。最大物理セクタサイズの取得方法は図２のフローチャートに従う。
【００１９】
図２は、本発明の実施形態を示し、最大物理セクタサイズの取得方法の処理手順の一例を示すフローチャートである。
【００２０】
まず、ステップＳ２０１において、例えばバッファキャッシュ管理システム１０３は、最大セクタサイズ（最大物理セクタサイズ）を０に初期化する。
【００２１】
続いて、ステップＳ２０２において、例えばバッファキャッシュ管理システム１０３は、接続済みの記憶装置を１つ認識する。
【００２２】
続いて、ステップＳ２０３において、例えばバッファキャッシュ管理システム１０３は、ステップＳ２０２で認識した記憶装置のセクタサイズを取得する。
【００２３】
続いて、ステップＳ２０４において、例えばバッファキャッシュ管理システム１０３は、ステップＳ２０３で取得したセクタサイズが、現在の最大セクタサイズ（最大物理セクタサイズ）と比較して大きいか否かを判断する。この判断の結果、ステップＳ２０３で取得したセクタサイズが、現在の最大セクタサイズ（最大物理セクタサイズ）と比較して大きい場合には、ステップＳ２０５に進む。
【００２４】
ステップＳ２０５に進むと、例えばバッファキャッシュ管理システム１０３は、ステップＳ２０３で取得したセクタサイズを、最大セクタサイズ（最大物理セクタサイズ）として更新する。
【００２５】
ステップＳ２０５の処理が終了した場合、或いは、ステップＳ２０４においてステップＳ２０３で取得したセクタサイズが現在の最大セクタサイズ（最大物理セクタサイズ）と比較して大きくない場合には、ステップＳ２０６に進む。
【００２６】
ステップＳ２０６に進むと、例えばバッファキャッシュ管理システム１０３は、全ての記憶装置のセクタサイズを取得したか否かを判断する。この判断の結果、全ての記憶装置のセクタサイズについては未だ取得していない場合には、ステップＳ２０７に進む。
【００２７】
ステップＳ２０７に進むと、例えばバッファキャッシュ管理システム１０３は、セクタサイズ未取得の次の記憶装置を認識する。その後、ステップＳ２０３に戻り、ステップＳ２０３以降の処理を行う。即ち、ステップＳ２０３〜ステップＳ２０５の処理を全ての記憶装置のセクタサイズを取得するまで繰り返し、最大セクタサイズ（最大物理セクタサイズ）を求める。
【００２８】
一方、ステップＳ２０６の判断の結果、全ての記憶装置のセクタサイズを取得した場合には、図２のフローチャートの処理を終了する。
【００２９】
よって、図１の場合、記憶装置１０７の物理セクタサイズが２Ｋバイトで最も大きいため、バッファキャッシュ管理システム１０３によるバッファキャッシュ１０８は、２Ｋバイトを基本単位に管理されることとなる。このとき、この２Ｋバイトごとのバッファエリアのことを「バッファブロック」と呼ぶことにする。
【００３０】
バッファキャッシュ１０８に目的のデータがない場合、キャッシュが発生するが、そのデータのキャッシュ方法は図３のフローチャートに従う。
図３は、本発明の実施形態を示し、バッファキャッシュ方法の一例を示すフローチャートである。
以下の［実施例１］〜［実施例３］によって、図３のフローチャートの各ステップに対応したフローチャートの説明を行う。
なお、以下の実施例におけるバッファキャッシュ管理システム１０３は、図９に示す情報処理装置（バッファキャッシュ管理装置）によって実行される。また、ＲＯＭ９３０の中に後述の実施例で挙げるフローチャートの処理をＣＰＵ９１０に実現させるプログラムを格納しておく。そして、プログラムを実行させる際にＲＯＭ９３０のプログラムをＲＡＭ９２０に読み出し、ＣＰＵ９１０が処理できるようにする。ここで、９５０はバスであり、ＲＯＭ９３０、ＲＡＭ９２０、ＣＰＵ９１０及びＨＤＤ９４０のデータをやりとりする。ＨＤＤ９４０は記憶装置であり、ＣＰＵ９１０によってセクタサイズが管理される対象となる。なお、図示はしていないが、ファイルシステムによって管理される記憶装置としては、ＨＤＤ（ハードディスクドライブ）以外にもフラッシュメモリやＳＳＤ（ソリッドステートディスク）等であってもよい。また、ＨＤＤ（記憶装置）９４０は、着脱可能であっても良い。
【実施例１】
【００３１】
バッファキャッシュ１０８にデータを読み込む際、ステップＳ３０１の空きバッファ検索ステップにおいて、例えばバッファキャッシュ管理システム１０３は、アクセスするセクタと同一サイズのキャッシュバッファ上の空きバッファがあるか否かを判断する。この判断の結果、アクセスするセクタと同一サイズのキャッシュバッファ上の空きバッファがある場合には、ステップＳ３１０のセクタキャッシュステップへ進む。ステップＳ３１０のセクタキャッシュステップへ進むと、例えばバッファキャッシュ管理システム１０３は、セクタサイズと同一サイズの空きバッファにデータをキャッシュして処理を終了する。
【００３２】
このときのバッファキャッシュの状態遷移を示したものが図４である。
図４は、本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。初期状態がバッファキャッシュ４０２であった場合、アクセスするセクタ４０１は、アクセスするセクタ４０１と同じセクタサイズの空きバッファのうち、最も先頭に近いバッファ４０４にキャッシュされる（バッファキャッシュ４０３参照）。
【００３３】
ここで、再び、図３の説明に戻る。
ステップＳ３０１の空きバッファ検索ステップにおいて、アクセスするセクタと同一サイズのキャッシュバッファ上の空きバッファが検索されなかった場合には、ステップＳ３０２の空きバッファブロック検索ステップへ進む。
【００３４】
続いて、ステップＳ３０２の空きバッファブロック検索ステップにおいて、例えばバッファキャッシュ管理システム１０３は、バッファブロックの空き領域があるか否かを判断する。この判断の結果、バッファブロックの空き領域がある場合には、ステップＳ３０８のバッファブロック分割ステップへ進む。
ステップＳ３０８のバッファブロック分割ステップにおいて、例えばバッファキャッシュ管理システム１０３は、検索された空きバッファブロックの管理サイズを、アクセスするセクタサイズに分割して空きバッファを生成する。その後、ステップＳ３１０のセクタキャッシュステップへ進み、例えばバッファキャッシュ管理システム１０３は、セクタサイズと同一サイズの空きバッファにデータをキャッシュして処理を終了する。
【００３５】
このときのバッファキャッシュの状態遷移を示したものが図５である。
図５は、本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。初期状態がバッファキャッシュ５０２であった場合、空きバッファブロック５０５が、アクセスするセクタ５０１のセクタサイズで分割されて、バッファキャッシュ５０３のような状態になる。その後、アクセスするセクタ５０１は、バッファキャッシュ５０４の状態のように分割された空きバッファのうち、最も先頭に近いバッファにキャッシュされる。
【００３６】
ここで、再び、図３の説明に戻る。
ステップＳ３０２の空きバッファブロック検索ステップにおいて、バッファブロックの空き領域がなかった場合には、ステップＳ３０３の入れ替え対象バッファ決定ステップに進む。
ステップＳ３０３の入れ替え対象バッファ決定ステップに進むと、例えばバッファキャッシュ管理システム１０３は、ＬＲＵ等のアルゴリズムにより入れ替え対象のバッファを決定する。
【００３７】
続いて、ステップＳ３０４のバッファサイズ比較ステップにおいて、例えばバッファキャッシュ管理システム１０３は、入れ替え対象バッファのサイズとアクセスするセクタのサイズとが異なるか否かを判断する。この判断の結果、入れ替え対象バッファのサイズとアクセスするセクタのサイズとが異なる場合には、ステップＳ３０５の入れ替え対象バッファブロック決定ステップへと進む。
ステップＳ３０５の入れ替え対象バッファブロック決定ステップへと進むと、例えばバッファキャッシュ管理システム１０３は、バッファブロックでの同期を行うために、新たに入れ替え対象のバッファブロックを決定する。
【００３８】
続いて、ステップＳ３０６のバッファブロック同期ステップにおいて、例えばバッファキャッシュ管理システム１０３は、ステップＳ３０５の入れ替え対象バッファブロック決定ステップで決定された入れ替え対象バッファブロックを記憶装置と同期して、そのバッファブロックを空きバッファブロックとする。
【００３９】
続いて、ステップＳ３０７のバッファブロック結合ステップにおいて、例えばバッファキャッシュ管理システム１０３は、ステップＳ３０６のバッファブロック同期ステップで同期したバッファブロックの管理の単位をバッファブロックサイズに戻す。
【００４０】
続いて、ステップＳ３０８のバッファブロック分割ステップにおいて、例えばバッファキャッシュ管理システム１０３は、検索された空きバッファブロックの管理サイズを、アクセスするセクタサイズに分割して空きバッファを生成する。その後、ステップＳ３１０のセクタキャッシュステップへ進み、例えばバッファキャッシュ管理システム１０３は、セクタサイズと同一サイズの空きバッファにデータをキャッシュして処理を終了する。
【００４１】
このときのバッファキャッシュの状態遷移を表したものが図６である。
図６は、本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。初期状態がバッファキャッシュ６０２であった場合、ＬＲＵにより決定された入れ替え対象のバッファを６０７とする。この入れ替え対象バッファ６０７と読み込みデータ６０１のサイズを比較すると、そのサイズが異なるため、バッファブロック単位での入れ替えを実行するために、入れ替え対象バッファブロックの決定をステップＳ３０５で行う。
【００４２】
ステップＳ３０５の入れ替え対象バッファブロック決定ステップでは、バッファごとのＬＲＵの順序づけを利用する。具体的には、バッファブロックごとにＬＲＵの順序の代表値を設定し、その代表値の値によって入れ替え対象を決定する。ただし、ここで利用するＬＲＵの順序付けは、ＬＲＵの順序の数字が小さい程、使用されてからの時間が経っているバッファであるものとする。
【００４３】
本発明において、その代表値の取り方は、「ブロック内で最も小さい（古い）値を代表値とする」、「ブロック内で最も大きい（新しい）値を代表値とする」、「ブロック内の平均値を取り代表値とする」の３種類を提案するが、実施例１では、これらのうち、「ブロック内で最も小さい（古い）値を代表値とする」方法について説明する。
【００４４】
ここで、図８は、バッファのＬＲＵ順序と入れ替え対象ブロックの一例を示す模式図である。
図８の８０１を、図６のバッファキャッシュ６０２のそれぞれのバッファのＬＲＵ順序を示したものとする。このとき、バッファブロックの代表値の取り方を「ブロック内で最も小さい（古い）値を代表値とする」方法で行うと、それぞれのバッファブロックの代表値は、図８の８０２のような数値になる。その結果、図８の８０２の中で最も代表値が小さいブロックである図８の８０５（図６の６０６）が入れ替え対象バッファブロックとして選択される。
【００４５】
入れ替え対象のバッファブロックが選択されたら、図６の６０４のように、そのブロックをブロックごと同期する。このとき、図６の６０３の状態のように管理単位がブロックサイズに戻り、同期されたブロックは空きバッファブロックとみなされる。
【００４６】
生成された空きバッファブロックは、アクセスするセクタ６０１のセクタサイズで分割され、６０５のような状態になる。その後、アクセスするセクタ６０１は、６０６の状態のように分割されたバッファのうち、最も先頭に近いバッファにキャッシュされる。
【００４７】
ここで、再び、図３の説明に戻る。
ステップＳ３０４の空きバッファサイズ比較ステップにおいて、入れ替え対象バッファのサイズとアクセスするセクタのサイズとが同一だと判断された場合には、ステップＳ３０９のバッファ同期ステップへ進む。
ステップＳ３０９のバッファ同期ステップへ進むと、例えばバッファキャッシュ管理システム１０３は、入れ替え対象バッファを記憶装置と同期して、そのバッファを空きバッファとする。その後、ステップＳ３１０のセクタキャッシュステップへ進み、例えばバッファキャッシュ管理システム１０３は、セクタサイズと同一サイズの空きバッファにデータをキャッシュして処理を終了する。
【００４８】
このときのバッファキャッシュの状態遷移を表したものが図７である。
図７は、本発明の実施例１を示し、バッファキャッシュの状態遷移の一例を示す模式図である。初期状態がバッファキャッシュ７０２であった場合、ＬＲＵにより決定された入れ替え対象バッファを７０６とする。この入れ替え対象バッファ７０６と読み込みデータ７０１のサイズを比較すると、そのサイズが同じであるため、バッファ単位での入れ替えを実行する。
【００４９】
入れ替え対象のバッファが選択されたら、７０４のようにそのバッファを同期する。このとき、バッファキャッシュ７０３の状態のように、同期されたバッファは空きバッファとみなされる。その後、アクセスするセクタ７０１は、バッファキャッシュ７０５の状態のように同期が行われ、空き状態となったバッファにキャッシュされる。
【実施例２】
【００５０】
本実施例２では、実施例１のステップＳ３０５の入れ替え対象バッファブロック決定ステップが「ブロック内で最も大きい（新しい）値を代表値とする」方法である場合について説明する。
【００５１】
図８の８０１を図６のバッファキャッシュ６０２のそれぞれのバッファのＬＲＵ順序を示したものとする。このとき、バッファブロックの代表値の取り方を「ブロック内で最も大きい（新しい）値を代表値とする」方法で行うと、それぞれのバッファブロックの代表値は、図８の８０３のような数値になる。その結果、図８の８０３の中で最も代表値が小さいブロックである図８の８０６が入れ替え対象バッファブロックとして選択される。
【００５２】
この方法は、実施例１と比べて、最近読み込まれたバッファが入れ替え対象となり難いという利点がある。
【００５３】
入れ替え対象のバッファブロックが選択されたら、後は、実施例１と同様に、そのブロックをブロックごと同期する。このとき、管理単位がブロックサイズに戻り、同期されたブロックは空きバッファブロックとみなされる。
【００５４】
生成された空きバッファブロックは、アクセスするセクタ６０１のセクタサイズで分割された後、アクセスするセクタ６０１は、分割されたバッファのうち、最も先頭に近いバッファにキャッシュされる。
【実施例３】
【００５５】
本実施例３では、実施例１のステップＳ３０５の入れ替え対象バッファブロック決定ステップが「ブロック内の平均値を取り代表値とする」方法である場合について説明する。
【００５６】
図８の８０１を図６のバッファキャッシュ６０２のそれぞれのバッファのＬＲＵ順序を示したものとする。このとき、バッファブロックの代表値の取り方を「ブロック内の平均値を取り代表値とする」方法で行うと、それぞれのバッファブロックの代表値は、図８の８０４のような数値になる。その結果、図８の８０４の中で最も代表値が小さいブロックである図８の８０７が入れ替え対象バッファブロックとして選択される。
【００５７】
入れ替え対象のバッファブロックが選択されたら、後は、実施例１と同様に、そのブロックをブロックごと同期する。このとき、管理単位がブロックサイズに戻り、同期されたブロックは空きバッファブロックとみなされる。
【００５８】
生成された空きバッファブロックは、アクセスするセクタ６０１のセクタサイズで分割される。その後、アクセスするセクタ６０１は、分割されたバッファのうち、最も先頭に近いバッファにキャッシュされる。
【００５９】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。
即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
このプログラム及び当該プログラムを記憶したコンピュータ読み取り可能な記録媒体は、本発明に含まれる。
【符号の説明】
【００６０】
１０１  アプリケーション、１０２  ファイルシステム、１０３  バッファキャッシュ管理システム、１０４  ドライバ、１０５〜１０７  記憶装置、１０８  バッファキャッシュ、１０９  最大セクタサイズ記憶領域
【図１】
0005709563.tif 000002
【図２】
0005709563.tif 000003
【図３】
0005709563.tif 000004
【図４】
0005709563.tif 000005
【図５】
0005709563.tif 000006
【図６】
0005709563.tif 000007
【図７】
0005709563.tif 000008
【図８】
0005709563.tif 000009
【図９】
0005709563.tif 000010