(57)【要約】    【課題】  記憶媒体上のファイルに対して読み出しまたは書き込み操作を行う場合に、多くのメモリリソースを使用することなく、かつ少ない計算量で操作指示されたファイルのデータ本体に対するクラスタ位置を求めることができるファイルシステムを提供する。    【解決手段】  ファイルシステムにおいては、ユーザプログラム１０１により指定されたファイルに対する操作指示が行われると、検索された開始クラスタ位置、ＦＡＴデータ（ファイル割り付け表）、およびＦＡＴキャッシュデータを参照して、ファイル操作部１０３により操作指示されたファイルのデータに対するディスク１０７内のクラスタ位置が求められる。この際に、新たなＦＡＴキャッシュデータが生成されると、上記ＦＡＴキャッシュデータは生成されたＦＡＴキャッシュデータへ更新される。【選択図】      図１
2007087063.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体のクラスタと該記憶媒体に格納されているファイルとの対応関係を示すＦＡＴデータが記録されているファイル割り付け表を参照して前記記憶媒体内のファイルの管理を行うファイルシステムであって、
ファイル操作の際に用いられる１つ以上のＦＡＴキャッシャデータを保持する記憶手段と、
ユーザにより指定されたファイルに対する操作指示を行うファイル操作手段と、
前記記憶媒体からディレクトリ情報を取得し、該ディレクトリ情報に基づいて前記ファイル操作手段により操作指示されたファイルに対する開始クラスタ位置を検索するディレクトリ操作手段と、
前記検索された開始クラスタ位置、前記ファイル割り付け表のＦＡＴデータ、および前記記憶手段に保持されているＦＡＴキャッシュデータを参照して、前記ファイル操作手段により操作指示されたファイルのデータ本体に対する前記記憶媒体内のクラスタ位置を求めるＦＡＴ操作手段とを備え、
前記ＦＡＴ操作手段は、新たなＦＡＴキャッシュデータを生成し、前記記憶手段に保持されているＦＡＴキャッシュデータを前記生成されたＦＡＴキャッシュデータへ更新するための更新処理を行うことを特徴とするファイルシステム。
【請求項２】
前記ＦＡＴ操作手段は、予め指定された間隔毎にＦＡＴキャッシュデータを生成し、該ＦＡＴキャッシュデータへの更新を行うことを特徴とする請求項１記載のファイルシステム。
【請求項３】
前記ＦＡＴ操作手段は、前記記憶手段に保持されているＦＡＴキャッシュデータのうち、最も古いＦＡＴキャッシュデータを前記生成されたＦＡＴキャッシュデータへ更新することを特徴とする請求項１記載のファイルシステム。
【請求項４】
前記ＦＡＴキャッシュデータには、少なくとも、前記記憶媒体上に存在するファイルを一意に特定可能なインデックス値、該ファイルを構成するクラスタのうちの１つのクラスタ番号、該クラスタ番号に対応する開始クラスタから数えたクラスタの累積数が含まれていることを特徴とする請求項１記載のファイルシステム。
【請求項５】
前記ＦＡＴキャッシュデータには、次に参照するＦＡＴキャッシュデータが存在するメモリ番地が含まれ、前記ＦＡＴキャッシュデータは、次のＦＡＴキャッシュデータと鎖状を成すように管理されることを特徴とする請求項４記載のファイルシステム。
【請求項６】
記憶媒体のクラスタと該記憶媒体に格納されているファイルとの対応関係を示すＦＡＴデータが記録されているファイル割り付け表を参照して前記記憶媒体内のファイルの管理を行うファイル管理方法であって、
ユーザにより指定されたファイルに対する操作指示を行うファイル操作工程と、
前記記憶媒体からディレクトリ情報を取得し、該ディレクトリ情報に基づいて前記ファイル操作手段により操作指示されたファイルに対する開始クラスタ位置を検索するディレクトリ操作工程と、
前記検索された開始クラスタ位置、前記ファイル割り付け表のＦＡＴデータ、および記憶手段に保持されている１つ以上のＦＡＴキャッシュデータを参照して、前記ファイル操作工程で操作指示されたファイルのデータ本体に対する前記記憶媒体内のクラスタ位置を求めるＦＡＴ操作工程とを有し、
前記ＦＡＴ操作工程では、新たなＦＡＴキャッシュデータを生成し、前記記憶手段に保持されているＦＡＴキャッシュデータを前記生成されたＦＡＴキャッシュデータへ更新するための更新処理を行うことを特徴とするファイル管理方法。
【請求項７】
記憶媒体のクラスタと該記憶媒体に保存されているファイルとの対応関係を示すＦＡＴデータが記録されるファイル割り付け表を参照して前記記憶媒体内のファイルの管理を行うシステムを構築するためのプログラムであって、
ユーザにより指定されたファイルに対する操作指示を行うファイル操作モジュールと、
前記記憶媒体からディレクトリ情報を取得し、該ディレクトリ情報に基づいて前記ファイル操作手段により操作指示されたファイルに対する開始クラスタ位置を検索するディレクトリ操作モジュールと、
前記検索された開始クラスタ位置、前記ファイル割り付け表のＦＡＴデータ、および記憶手段に保持されている１つ以上のＦＡＴキャッシュデータを参照して、前記ファイル操作モジュールにより操作指示されたファイルのデータ本体に対する前記記憶媒体内のクラスタ位置を求めるＦＡＴ操作モジュールとを有し、
前記ＦＡＴ操作モジュールは、新たなＦＡＴキャッシュデータを生成し、前記記憶手段に保持されているＦＡＴキャッシュデータを前記生成されたＦＡＴキャッシュデータへ更新するための更新処理を行うことを特徴とするプログラム。
【請求項８】
請求項７記載のプログラムをコンピュータ読み取り可能に格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル割り付け表（FAT: File Allocation Table）を使用してファイルを管理するファイルシステム、ファイル管理方法、プログラムおよび記憶媒体に関する。
【背景技術】
【０００２】
ファイル割り付け表を使用してファイルを管理するファイルシステムは、一般に、ＦＡＴファイルシステムと呼ばれている。また、ＦＡＴファイルシステムで使用されることを前提にフォーマットされたディスク媒体は、一般にＦＡＴ型ディスクと呼ばれている（例えば特許文献１参照）。
【０００３】
このＦＡＴ型ディスクにおいては、ユーザプログラムの入出力は、セクタと呼ばれる単位で行われる。セクタの大きさは、通常は５１２バイト（またはそのべき乗）である。
【０００４】
セクタを２のべき乗（１，２，４，８，１６，・j個集めたものは、クラスタと呼ばれ、ファイルはクラスタの集まりで表される。１クラスタが何セクタから構成されるか（以降、セクタ／クラスタ数で表す）は、ディスクによって異なる。
【０００５】
ＦＡＴ型ディスクのフォーマット例として、ＭＳ−ＤＯＳ（登録商標）で採用されているものについて図６〜図９を参照しながら説明する。図６はＭＳ−ＤＯＳ（登録商標）で採用されているＦＡＴ型ディスクのフォーマットの一例を示す図である。図７はＦＡＴ領域３０２の構造を示す図である。図８はルートディレクトリ領域３０３にある１つのファイルに対応するディレクトリエントリの構造を示す図である。図９は１つのファイルに関してＦＡＴ領域３０２、ルートディレクトリ領域３０３、データ領域３０４の間の関係を示す図である。
【０００６】
ＭＳ−ＤＯＳ（登録商標）で採用されているＦＡＴ型ディスクのフォーマットにおいては、図６に示すように、ディスクに対して、ブートセクタ（予約領域）３０１、複数のＦＡＴ領域３０２、ルートディレクトリ領域３０３、データ領域３０４が設けられる。ブートセクタ（予約領域）３０１は先頭のセクタ（論理セクタ番号０）であり、ファイル管理外の領域である。このブートセクタ３０１には、オペレーティングシステムをロードするためのブートプログラム、前述のセクタ／クラスタ数、後述するＦＡＴ領域に使用されているセクタの数、ルートディレクトリエントリの数などの情報が記録される。
【０００７】
ＦＡＴ領域３０２は、クラスタの所在とファイル本体（内容）へのクラスタの割り付け（アロケーション）状況を示すＦＡＴ項目を記録する領域である。ＦＡＴ領域３０２は、２重化されている。すなわち、ＦＡＴ領域３０２として、２つの領域ＦＡＴ１，ＦＡＴ２が設けられ、それぞれには同一の内容が記録される。各ＦＡＴ領域３０２は、ディスク上に連続して配置される。
【０００８】
現在一般に広く使用されているＦＡＴ型ディスクとしては、１クラスタ分のＦＡＴ項目を示すために、１２ビット、１６ビット、または３２ビットを使用するものがある。ここでは、１６ビットの場合を説明する。ＦＡＴ領域３０２においては、具体的には、図７に示すように、ＦＡＴ項目毎に管理するクラスタの位置とそのクラスタの使用状況が示されている。クラスタの使用状況が未使用の場合に対応する初期値は、００００ｈである。
【０００９】
ここで、あるファイルに初めてクラスタが割り付けられると、対応するＦＡＴ項目の内容は、使用中かつ最終クラスタであることを示すＦＦＦＦｈに変更される。ファイルの大きさが１クラスタ分では不足すると、このＦＡＴ項目の内容は、次に新しく割り付けられたクラスタの位置を示すクラスタ番号に変更される（同時に新たに追加されたクラスタのＦＡＴ項目の内容は、ＦＦＦＦｈに変更される）。これにより、１つのファイルに対して、次々と新たなクラスタを割り付けることができる。
【００１０】
ルートディレクトリ領域３０３は、ファイルの所在を管理する領域である。１つのファイルに対応する項目は、３２バイトからなる。具体的には、図８に示すように、ルートディレクトリ領域３０３には、ファイルの名前、大きさ(ファイルサイズ)、ファイルの先頭のクラスタ(開始クラスタ)番号などの情報が記録される。
【００１１】
データ領域３０４は、実際のファイルの内容（データ本体）、ルートディレクトリ以下に属するディレクトリに関する情報を記録する領域である。データ領域３０４は、クラスタ単位で管理され、どのクラスタがどのファイルに属しているかまたは未使用であるかについての情報は、ＦＡＴ領域３０２によって管理されている。１つのファイルに属するクラスタの群は、ＦＡＴ領域３０２によって論理的に連続して繋がっていればよく、物理的に連続して繋がる必要はない。
【００１２】
ここで、例えば１つのファイルに関して、ＦＡＴ領域３０２、ルートディレクトリ領域３０３、データ領域３０４のそれぞれの間には、図９に示すような関係がある。ルートディレクトリ領域３０３の開始クラスタ番号は、ＦＡＴ領域３０２の中の項目を指し、ＦＡＴ領域３０２は、そのファイルが使用しているデータ領域３０４の中のクラスタ番号を指している。このように、１つのファイルを構成するクラスタ群は、ＦＡＴをチェインとして繋げることによって論理的に繋がれている。
【００１３】
次に、ＦＡＴ型ディスクからのファイル内容の読み出し（または書き込み）処理について図１０を参照しながら説明する。図１０はＦＡＴ型ディスクからのファイル内容の読み出し（または書き込み）処理の手順を示すフローチャートである。ここでは、説明を簡単にするために、セクタ／クラスタ数を１とする。
【００１４】
まずステップＳ１００１において、ユーザプログラムにより、読み出し(または書き込み)の操作を行う対象のファイルの名前、読み出し（または書き込み）位置（バイト単位）、読み出し（または書き込み）サイズ（バイト単位）、読み出したデータを格納する（または書き込むデータが格納された）領域が指定される。
【００１５】
次いで、ステップＳ１００２において、指定された読み出し（または書き込み）位置に基づいて、当該位置がファイルのＦＡＴチェインの先頭から何クラスタ目であるかが計算により求められる。この計算には、次の（１）式が用いられる。
【００１６】
［読み出し位置］／（［セクタサイズ］×［セクタ/クラスタ数］）      （１）
ここで、上記（１）式の商が求めるクラスタの値となる。ここで、求められたクラスタの値は、ｎとする。
【００１７】
次いで、ステップＳ１００３においては、ルートディレクトリ領域３０３内の該当するファイル名の項目から開始クラスタ番号ｎｅｘｔが取得され、続くステップＳ１００４において、処理が終了したクラスタ数を示す処理済みのクラスタ数ｉに初期値として１が設定される。
【００１８】
次いで、ステップＳ１００５において、上記ステップＳ１００２で求められた値ｎと上記ステップＳ１００４の処理済みクラスタ数ｉとが比較され、両者が等しいか否かの判定が行われる。ここで、両者の値が等しくなければ、ステップＳ１００６において、開始クラスタ番号ｎｅｘｔが記録されているセクタが読み出され、続くステップＳ１００７において、ＦＡＴチェインの次のクラスタ番号が開始クラスタ番号ｎｅｘｔとされる。そして、ステップＳ１００８において、処理済みのクラスタ数ｉが１インクリメントされ、ステップＳ１００５へ戻る。
【００１９】
このように、ステップＳ１００６からステップＳ１００８までの処理が、ステップＳ１００５において、処理済みのクラスタ数ｉが上記ステップＳ１００２で求められたクラスタ数ｎと等しくなるまで繰り返される。これにより、ユーザプログラムにより指定されたファイル位置のデータが含まれるクラスタ番号を取得することができる。
【００２０】
そして、ステップＳ１００５において処理済みのクラスタ数ｉが上記ステップＳ１００２で求められたクラスタ数ｎと等しいと判定されると、ステップＳ１００９に進む。このステップにおいて、求められたクラスタ番号ｎｅｘｔに相当するセクタ番号が指定され、実際にディスクからのデータの読み出し（または書き込み）が行われる。そして、本処理は終了する。
【特許文献１】特開２００１−１０１０６４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、従来のＦＡＴファイルシステムの場合、その性質上、あるファイルに対する１回のデータ読み出し（または書き込み）操作毎に、実際のデータ読み出しまたは書き込み操作の前処理として、指定されたデータ位置がデータ領域３０４の何番目のクラスタに存在するのかを、開始クラスタからＦＡＴチェインを順に追うことによって求める必要がある。
【００２２】
また、ＦＡＴ型ディスクの場合、ＦＡＴ領域で各ファイルへのクラスタの割り当て状況を管理するという仕組みから、１つのファイルが使用しているクラスタの情報は、ＦＡＴ領域３０２に散在している場合がある。そのため、あるファイルのＦＡＴチェインを取得するためには、ＦＡＴ領域３０２からいくつかのセクタを読み出すことが必要となる。特に、動画データのようなファイルサイズの大きなファイルを扱う場合には、指定したファイル位置のデータを含むクラスタ番号を求めるために、より多くのＦＡＴ領域のセクタの読み出しが必要となり、かつ該当するクラスタ番号を求める計算を繰り返し実行する必要がある。その結果、１回の読み出しまたは書き込み処理に余分な時間が掛かることになる。
【００２３】
ＦＡＴ領域のセクタの読み出しに関しては、一度読み出したＦＡＴデータを、一時的にメモリ上に蓄積することによって、ディスクからＦＡＴデータを読み出す際に要する時間のオーバヘッドを低減させる方法が考えられる。また、一度求められたＦＡＴチェインを一時的にメモリ上に保持する方法も考えられる。しかし、使用可能なメモリリソース量が限られている環境下では、上述した方法は、必ずしも有効な方法とはならない。
【００２４】
本発明は、上記の課題に鑑みてなされたものであり、記憶媒体上のファイルに対して読み出しまたは書き込み操作を行う場合に、多くのメモリリソースを使用することなく、かつ少ない計算量で操作指示されたファイルのデータ本体に対するクラスタ位置を求めることができるファイルシステム、ファイル管理方法、プログラムおよび記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明は、上記目的を達成するため、記憶媒体のクラスタと該記憶媒体に格納されているファイルとの対応関係を示すＦＡＴデータが記録されているファイル割り付け表を参照して前記記憶媒体内のファイルの管理を行うファイルシステムであって、ファイル操作の際に用いられる１つ以上のＦＡＴキャッシャデータを保持する記憶手段と、ユーザにより指定されたファイルに対する操作指示を行うファイル操作手段と、前記記憶媒体からディレクトリ情報を取得し、該ディレクトリ情報に基づいて前記ファイル操作手段により操作指示されたファイルに対する開始クラスタ位置を検索するディレクトリ操作手段と、前記検索された開始クラスタ位置、前記ファイル割り付け表のＦＡＴデータ、および前記記憶手段に保持されているＦＡＴキャッシュデータを参照して、前記ファイル操作手段により操作指示されたファイルのデータ本体に対する前記記憶媒体内のクラスタ位置を求めるＦＡＴ操作手段とを備え、前記ＦＡＴ操作手段は、新たなＦＡＴキャッシュデータを生成し、前記記憶手段に保持されているＦＡＴキャッシュデータを前記生成されたＦＡＴキャッシュデータへ更新するための更新処理を行うことを特徴とするファイルシステムを提供する。
【００２６】
本発明は、上記目的を達成するため、記憶媒体のクラスタと該記憶媒体に格納されているファイルとの対応関係を示すＦＡＴデータが記録されているファイル割り付け表を参照して前記記憶媒体内のファイルの管理を行うファイル管理方法であって、ユーザにより指定されたファイルに対する操作指示を行うファイル操作工程と、前記記憶媒体からディレクトリ情報を取得し、該ディレクトリ情報に基づいて前記ファイル操作手段により操作指示されたファイルに対する開始クラスタ位置を検索するディレクトリ操作工程と、前記検索された開始クラスタ位置、前記ファイル割り付け表のＦＡＴデータ、および記憶手段に保持されている１つ以上のＦＡＴキャッシュデータを参照して、前記ファイル操作工程で操作指示されたファイルのデータ本体に対する前記記憶媒体内のクラスタ位置を求めるＦＡＴ操作工程とを有し、前記ＦＡＴ操作工程では、新たなＦＡＴキャッシュデータを生成し、前記記憶手段に保持されているＦＡＴキャッシュデータを前記生成されたＦＡＴキャッシュデータへ更新するための更新処理を行うことを特徴とするファイル管理方法を提供する。
【００２７】
本発明は、上記目的を達成するため、記憶媒体のクラスタと該記憶媒体に保存されているファイルとの対応関係を示すＦＡＴデータが記録されるファイル割り付け表を参照して前記記憶媒体内のファイルの管理を行うシステムを構築するためのプログラムであって、ユーザにより指定されたファイルに対する操作指示を行うファイル操作モジュールと、前記記憶媒体からディレクトリ情報を取得し、該ディレクトリ情報に基づいて前記ファイル操作手段により操作指示されたファイルに対する開始クラスタ位置を検索するディレクトリ操作モジュールと、前記検索された開始クラスタ位置、前記ファイル割り付け表のＦＡＴデータ、および記憶手段に保持されている１つ以上のＦＡＴキャッシュデータを参照して、前記ファイル操作モジュールにより操作指示されたファイルのデータ本体に対する前記記憶媒体内のクラスタ位置を求めるＦＡＴ操作モジュールとを有し、前記ＦＡＴ操作モジュールは、新たなＦＡＴキャッシュデータを生成し、前記記憶手段に保持されているＦＡＴキャッシュデータを前記生成されたＦＡＴキャッシュデータへ更新するための更新処理を行うことを特徴とするプログラムを提供する。
【００２８】
本発明は、上記目的を達成するため、請求項７記載のプログラムをコンピュータ読み取り可能に格納したことを特徴とする記憶媒体を提供する。
【発明の効果】
【００２９】
本発明によれば、記憶媒体上のファイルに対して読み出しまたは書き込み操作を行う場合に、多くのメモリリソースを使用することなく、かつ少ない計算量で操作指示されたファイルのデータ本体に対するクラスタ位置を求めることができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００３１】
図１は本発明の一実施の形態に係るＦＡＴファイルシステムのソフトウェア構成を示すブロック図である。
【００３２】
ＦＡＴファイルシステムは、図１に示すように、ＦＡＴキャッシュ管理方式を実現するＦＡＴファイルシステムプログラム１０２により構築される。ＦＡＴファイルシステムプログラム１０２は、ファイル操作部１０３、ディレクトリ操作部１０４、およびＦＡＴ操作部１０５を有する。
【００３３】
ファイル操作部１０３は、ファイルディスクリプタを管理し、ユーザプログラム１０１からの要求に応じた処理を行う。ファイル操作部１０３は、例えば、ファイル名などで指定されたファイルをオープンまたはクローズする処理、新規ファイルの作成、ファイル空間上のどの位置から読み出しまたは書き込み操作を行うかを示すファイルポインタの管理などを行う。
【００３４】
ディレクトリ操作部１０４は、ディスクドライバ部１０６を介してディスク（記憶媒体）１０７から読み出されたディレクトリエントリ情報を解析する。また、ディレクトリ操作部１０４は、ディレクトリエントリの解析、更新などを行う。例えば、ユーザプログラム１０１から指示されたファイルの検索、ファイルの先頭に当たるデータが含まれるクラスタ（開始クラスタ）番号の取得、最新のファイル情報のディレクエントリィへの書き込みなどが行われる。
【００３５】
ＦＡＴ操作部１０５は、ＦＡＴキャッシュデータのメモリ上への構築、更新、削除などを行う。また、ＦＡＴ操作部１０５は、ＦＡＴキャッシュデータを参照し、またはディスク１０７から読み出されたディレクトリエントリやＦＡＴ領域の情報を解析して、読み書きの対象となるファイルのファイル位置からディスク１０７上のクラスタ番号を取得する。また、ＦＡＴ操作部１０５は、ファイルのＦＡＴチェインを正しく形成してディスク１０７に書き込む処理などを行う。
【００３６】
ここで、ディスク１０７は、フロッピー(登録商標)ディスク、ハードディスク、またはフラッシュメモリカードなどの記憶媒体からなる。ディスクドライブ部１０６は、ディスク１０７の実際のデータ内容の読み出し、またはディスク１０７へのデータの書き込み処理を行う。
【００３７】
次に、本実施の形態のＦＡＴファイルシステムを実現するためのハードウエア構成について図２を参照しながら説明する。図２は図１のＦＡＴファイルシステムを実現するためのハードウエア構成を示すブロック図である。
【００３８】
本実施の形態のＦＡＴファイルシステムは、図２に示すように、ＣＰＵ２０１、ＲＡＭ２０２、ディスク１０７を有するディスク装置２０３、およびそれらを接続するためのシステムバス２０４を備える。ディスク装置２０３は、上記ディスクドライバ部１０６および上記ディスク１０７（図１に示す）を含む記憶装置である。上記ディスク１０７には、上記ユーザプログラム１０１、ＦＡＴファイルシステムプログラム１０２およびディスクドライバ部１０６を含む各種プログラム、ユーザにより作成されたデータおよび画像などのファイルが格納されている。ＣＰＵ２０１は、ディスク装置２０３から上記ユーザプログラム１０１、ＦＡＴファイルシステムプログラム１０２およびディスクドライバ部１０６を読み出してＲＡＭ２０２上にロードし、実行する。これにより、ＦＡＴキャッシュ管理方式を実現するＦＡＴファイルシステムが構築される。
【００３９】
次に、ＦＡＴ操作部１０５が操作するＦＡＴキャッシュについて図３を参照しながら説明する。図３は図１のＦＡＴ操作部１０５が操作するＦＡＴキャッシュの構成を示すブロック図である。
【００４０】
１つのＦＡＴキャッシュには、図３に示すように、ディスク上に存在するファイルを一意に特定することができるインデックス値、該ファイルを構成するクラスタのうちの１つのクラスタ番号、および該クラスタ番号に対応するファイルの先頭からの累積クラスタ数が含まれる。また、複数のＦＡＴキャッシュデータを管理するために、次のＦＡＴキャッシュデータを指し示すメモリ番地を保存することにより、ＦＡＴキャッシュデータが鎖状を成し、複数のＦＡＴキャッシュデータを順に追って処理することが可能にする。なお、ＦＡＴキャッシュチェインの最後のデータには、次のＦＡＴキャッシュデータを指し示すメモリ番地に０を記録することとする。
【００４１】
次に、本実施の形態のＦＡＴファイルシステムによるファイル内容の読み出し（または書き込み）処理について図４を参照しながら説明する。図４は本実施の形態のＦＡＴファイルシステムによるファイル内容の読み出し（または書き込み）処理の手順を示すフローチャートである。ここで、説明に使用するＦＡＴ型ディスクの記録フォーマット、ディレクトリエントリの構成、およびＦＡＴ領域の構成は、従来例で述べた図６〜図８に示すものと同じであるとする。
【００４２】
まずステップＳ８０１において、ユーザプログラム１０１により、読み出し(または書き込み)の操作を行う対象のファイルの名前、読み出し（または書き込み）位置（バイト単位）、読み出し（または書き込み）サイズ（バイト単位）、読み出したデータを格納する（または書き込むデータが格納された）領域が指定される。
【００４３】
次いで、ステップＳ８０２において、指定された読み出し（または書き込み）位置に基づいて、当該位置がファイルのＦＡＴチェインの先頭から何クラスタ目であるかが計算により求められる。そして、ステップＳ８０３において、ルートディレクトリ領域３０３内の該当するファイル名の項目から開始クラスタ番号ｎｅｘｔが取得される。続くステップＳ８０４において、処理が終了したクラスタ数を示す処理済みのクラスタ数ｉに初期値として１が設定される。
【００４４】
次いで、ステップＳ８０５において、上記ステップＳ８０２で求められた値ｎと上記ステップＳ８０４の処理済みクラスタ数ｉとが比較され、両者が等しいか否かの判定が行われる。ここで、両者の値が等しくなければ、ステップＳ８０６において、ＦＡＴキャッシュデータの検索が行われる。ここでは、ＦＡＴキャッシュチェイン（図３に示す）を参照して、クラスタ数ｉに対して、クラスタ数ｎ以下で、最も近い値のものが検索される。そして、ステップＳ８０７において、上記ステップＳ８０６の検索の結果から該当するキャッシュデータがあるか無いかの判定が行われる。ここで、該当するＦＡＴキャッシュデータがあれば、ステップＳ８０８において、該当するＦＡＴキャッシュデータのクラスタ数とクラスタ番号とが、それぞれ、処理済みクラスタ数ｉの初期値として、および開始クラスタ番号ｎｅｘｔの初期値として代入される。
【００４５】
次いで、ステップＳ８０９において、上記ステップＳ８０２で求められた値ｎと上記ステップＳ８０８の処理済みクラスタ数ｉとが比較され、両者が等しいか否かの判定が行われる。ここで、両者の値が等しくなければ、ステップＳ８１０において、開始クラスタ番号ｎｅｘｔが記録されているセクタが読み出され、続くステップＳ８１１において、ＦＡＴチェインの次のクラスタ番号が開始クラスタ番号ｎｅｘｔとされる。
【００４６】
次いで、ステップＳ８１２において、累積クラスタ数、クラスタ番号などの情報（図３に示す）をＦＡＴキャッシュへ保存するためのＦＡＴキャッシュ更新が行われる。このＦＡＴキャッシュ更新の詳細については後述する。そして、ステップＳ８１３において、処理済みのクラスタ数ｉが１インクリメントされ、ステップＳ８０９へ戻る。
【００４７】
このように、ステップＳ８１０からステップＳ８１３までの処理が、ステップＳ８０９において、処理済みのクラスタ数ｉが上記ステップＳ８０２で求められたクラスタ数ｎと等しくなるまで繰り返される。
【００４８】
そして、ステップＳ８０９において処理済みのクラスタ数ｉが上記ステップＳ８０２で求められたクラスタ数ｎと等しいと判定されると、ステップＳ８１４において、求められたクラスタ番号ｎｅｘｔに相当するセクタ番号が指定され、実際にディスク１０７からのデータの読み出し（または書き込み）が行われる。そして、本処理は終了する。
【００４９】
上記ステップＳ８０７において該当するＦＡＴキャッシュデータがないと判定された場合、上記ステップＳ８０８をスキップしてステップＳ８０８へ進む。
【００５０】
上記ステップＳ８０５において、上記ステップＳ８０２で求められた値ｎと上記ステップＳ８０４の処理済みクラスタ数ｉとが等しいと判定された場合、ステップＳ８１４へ進む。
【００５１】
このように、ステップＳ８０９からステップＳ８１３までの繰り返し処理を行う以前に、上記ステップＳ８０６によるＦＡＴキャッシュデータの検索を行うことにより、上記繰り返し処理の一部を省略することができる。その結果として操作目的のクラスタ番号を高速に求めることができる。
【００５２】
次に、上記ステップＳ８１２のＦＡＴキャッシュ更新処理について図５を参照しながら説明する。図５は図４のステップＳ８１２のＦＡＴキャッシュ更新処理の手順を示すフローチャートである。
【００５３】
本実施の形態においては、ユーザプログラム１０１などにより予め指定された一定の間隔毎に、ＦＡＴキャッシュデータが更新される。例えばキャッシュする間隔がバイト単位のサイズで指定された場合には、［指定間隔（バイト）］／（［セクタサイズ］ラ［セクタ/クラスタ数］）の計算が行われ、その商がキャッシュするクラスタの間隔ｓとして求められる。また、ＦＡＴキャッシュの数は有限個であり、古いＦＡＴキャッシュデータの内容を新しいものに更新する際には、キャッシュされたデータの参照時刻が最も古いものが置き換えの対象とされる。すなわち、いわゆるＬＲＵ（Least Recently Used）を用いたアルゴリズムでＦＡＴキャッシュデータの更新が行われる。
【００５４】
このＦＡＴキャッシュ更新処理においては、図５に示すように、まずステップＳ９０１において、ＦＡＴキャッシュチェイン中の最初のＦＡＴキャッシュデータ（ｃ）が取得される。次いで、ステップＳ９０２において、取得されたＦＡＴキャッシュデータ（ｃ）の内容が空（無効）であるか否かの判定が行われる。取得されたＦＡＴキャッシュデータ（ｃ）の内容が空（無効）でない場合、ステップＳ９０３において、取得されたＦＡＴキャッシュデータ（ｃ）がＦＡＴキャッシュインの最後のデータであるか否かの判定が行われる。ここで、取得されたＦＡＴキャッシュデータ（ｃ）がＦＡＴキャッシュインの最後のデータでなければ、ステップＳ９０４において、ＦＡＴキャッシュチェインの次のＦＡＴキャッシュデータ（ｃ）が取得され、上記ステップＳ９０２へ戻る。
【００５５】
上記ステップＳ９０２において取得されたＦＡＴキャッシュデータ（ｃ）の内容が空（無効）であると判定された場合、またはステップＳ９０３において取得されたＦＡＴキャッシュデータ（ｃ）がＦＡＴキャッシュインの最後のデータであると判定された場合、ステップＳ９０５において、保存対象となるＦＡＴキャッシュデータのうち、累積のクラスタ数ｎの値がＦＡＴキャッシュデータとして保存する間隔ｓの倍数であるか否かの判定が行われる。累積のクラスタ数ｎの値が間隔ｓの倍数でない場合、本処理は終了する。
【００５６】
これに対し、累積のクラスタ数ｎの値が間隔ｓの倍数である場合、ステップＳ９０６において、累積クラスタ数、クラスタ番号などを含むＦＡＴキャッシュデータが記録される。続くステップＳ９０７において、ＬＲＵに基づいたアルゴリズムでＦＡＴキャッシュチェインの更新（入れ換え）が行われる。そして、本処理は終了する。
【００５７】
本実施の形態においては、上記ステップＳ８０９からステップＳ８１３までのＦＡＴチェインの追跡の処理により、読み書き操作の対象となるクラスタが求められるまでの間に、取得された全てのクラスタがステップＳ８１２のＦＡＴキャッシュ更新処理の対象となる。従って、この場合、例えばファイルの読み出し位置を前回の読み出し位置よりも大きく飛ばしてデータを読み出す場合には、その途中にあるＦＡＴチェインのクラスタは、ＦＡＴキャッシュデータとして保存されることになる。
【００５８】
但し、このような必要が無い場合には、上記ステップＳ８１２のＦＡＴキャッシュ更新処理を上記ステップＳ８０９のＹＥＳの後に行うようにしてもよい。
【００５９】
本発明の目的は、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【００６０】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６１】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【００６２】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００６３】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００６４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も、本発明に含まれることは言うまでもない。
【００６５】
この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【００６６】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、ＯＳ（オペレーティングシステム）に供給されるスクリプトデータ等の形態から成ってもよい。
【図面の簡単な説明】
【００６７】
【図１】本発明の一実施の形態に係るＦＡＴファイルシステムのソフトウェア構成を示すブロック図である。
【図２】図１のＦＡＴファイルシステムを実現するためのハードウエア構成を示すブロック図である。
【図３】図１のＦＡＴ操作部１０５が操作するＦＡＴキャッシュの構成を示すブロック図である。
【図４】本実施の形態のＦＡＴファイルシステムによるファイル内容の読み出し（または書き込み）処理の手順を示すフローチャートである。
【図５】図４のステップＳ８１２のＦＡＴキャッシュ更新処理の手順を示すフローチャートである。
【図６】ＭＳ−ＤＯＳ（登録商標）で採用されているＦＡＴ型ディスクのフォーマットの一例を示す図である。
【図７】ＦＡＴ領域３０２の構造を示す図である。
【図８】ルートディレクトリ領域３０３にある１つのファイルに対応するディレクトリエントリの構造を示す図である。
【図９】１つのファイルに関してＦＡＴ領域３０２、ルートディレクトリ領域３０３、データ領域３０４の間の関係を示す図である。
【図１０】ＦＡＴ型ディスクからのファイル内容の読み出し（または書き込み）処理の手順を示すフローチャートである。
【符号の説明】
【００６８】
１０１  ユーザプログラム
１０２  ＦＡＴファイルシステムプログラム
１０３  ファイル操作部
１０４  ディレクトリ操作部
１０５  ＦＡＴ操作部
１０６  ディスクドライバ部
１０７  ディスク
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ディスク装置
【図１】
2007087063.tif 000003
【図２】
2007087063.tif 000004
【図３】
2007087063.tif 000005
【図４】
2007087063.tif 000006
【図５】
2007087063.tif 000007
【図６】
2007087063.tif 000008
【図７】
2007087063.tif 000009
【図８】
2007087063.tif 000010
【図９】
2007087063.tif 000011
【図１０】
2007087063.tif 000012