(57)【要約】【課題】  ファイルの削除処理を高速に行えるようにし、高速なアクセスを実現し、記録媒体の寿命短縮を回避するとともに、ファイルの復元が容易できるようにする。【解決手段】  ユーザが扱うファイルやディレクトリを実際の物理的なディスク上に対応させて、ファイルやディレクトリ自体を構成するファイル管理装置において、記録領域を複数の領域に分けて管理し、夫々の領域の未使用クラスタをチェーン構造で管理し、ファイル削除時は、そのファイルのクラスタを未使用クラスタチェーンの最後尾に結合する。未使用クラスタの並び替えも行う。【選択図】  図２
2006106810.tif 000002
【特許請求の範囲】
【請求項１】
単位領域から構成される記録媒体にファイルのデータを記録、管理するファイル管理装置において、
ファイルのデータを記録する夫々の単位領域をリンクさせて管理するデータリンク手段と、
夫々のファイルのデータを記録する先頭の単位領域へのポインタを記録するファイル開始記録手段と、
夫々のファイルのデータを記録する最後尾の単位領域へのポインタを記録するファイル終了記録手段と、
記録媒体の記録領域を複数の領域に分割し、その領域毎に未使用の単位領域をリンクさせて管理する未使用領域管理手段と、
前記分割される複数の領域毎に管理された未使用の単位領域の先頭の単位領域へのポインタを記録する未使用領域開始記録手段と、
前記分割される複数の領域毎に管理された未使用の単位領域の最後尾の単位領域へのポインタを記録する未使用領域終了記録手段と
を有することを特徴とするファイル管理装置。
【請求項２】
ファイルのデータ記録の際の単位領域の獲得を、前記未使用領域開始記録手段に記録される先頭の単位領域より行うことを特徴とする請求項１記載のファイル管理装置。
【請求項３】
ファイルの削除を行う際、前記ファイル開始記録手段に記録される単位領域へリンクさせるリンク手段と、
前記ファイル終了記録手段に記録される単位領域を未使用領域終了記録手段に記録する記録手段と
を有することを特徴とする請求項１又は請求項２記載のファイル管理装置。
【請求項４】
前記分割された複数の領域毎にアクセスの回数をカウントするカウント手段と
を有し、前記カウンタ手段の結果アクセス回数の少ない領域からファイル作成の際のデータ記録を行うことを特徴とする請求項１〜３のいずれか１項に記載のファイル管理装置。
【請求項５】
前記未使用領域管理手段にてリンクされている未使用領域を、近傍の未使用領域にリンクされるように再構築することを特徴とする請求項１〜４のいずれか１項に記載のファイル管理装置。
【請求項６】
単位領域から構成される記録媒体にファイルのデータを記録、管理するファイル管理方式において、
ファイルのデータを記録する夫々の単位領域をリンクさせて管理するデータリンクステップと、
夫々のファイルのデータを記録する先頭の単位領域へのポインタを記録するファイル開始記録ステップと、
夫々のファイルのデータを記録する最後尾の単位領域へのポインタを記録するファイル終了記録ステップと、
記録媒体の記録領域を複数の領域に分割し、その領域毎に未使用の単位領域をリンクさせて管理する未使用領域管理ステップと、
前記分割される複数の領域毎に管理された未使用の単位領域の先頭の単位領域へのポインタを記録する未使用領域開始記録ステップと、
前記分割される複数の領域毎に管理された未使用の単位領域の最後尾の単位領域へのポインタを記録する未使用領域終了記録ステップと
を有することを特徴とするファイル管理方法。
【請求項７】
ファイルのデータ記録の際の単位領域の獲得を、前記未使用領域開始記録ステップに記録される先頭の単位領域より行うことを特徴とする請求項６記載のファイル管理方法。
【請求項８】
ファイルの削除を行う際、前記ファイル開始記録ステップに記録される単位領域へリンクさせるリンクステップと、
前記ファイル終了記録ステップに記録される単位領域を未使用領域終了記録ステップに記録する記録ステップと
を有することを特徴とする請求項６又は請求項７記載のファイル管理方法。
【請求項９】
前記分割された複数の領域毎にアクセスの回数をカウントするカウントステップと
を有し、前記カウンタステップの結果アクセス回数の少ない領域からファイル作成の際のデータ記録を行うことを特徴とする請求項６〜８のいずれか１項に記載のファイル管理方法。
【請求項１０】
前記未使用領域管理ステップにてリンクされている未使用領域を、近傍の未使用領域にリンクされるように再構築することを特徴とする請求項６〜９のいずれか１項に記載のファイル管理方法。
【請求項１１】
請求項６記載の方法の各ステップをコンピュータに実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項１２】
請求項６記載の方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル管理装置、及びファイル管理方式に関し、特にユーザが扱うファイルやディレクトリを実際の物理的なディスク上に対応させて、ファイルやディレクトリ自体を構成するファイル管理装置、及びファイル管理方式に関するものである。
【背景技術】
【０００２】
従来、数多くのデータをファイルとして管理する方式として、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムが知られている。ＦＡＴファイルシステムは、ＭＳ−ＤＯＳやＷｉｎｄｏｗｓ（登録商標）で使用されていたが、現在では、Ｌｉｎｕｘや各種Ｕｎｉｘ（登録商標）などの汎用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のほか、ディジタルカメラやＭＰ３プレイヤーなどのコンシューマ向け機器、各種測定器など、フレキシブルディスクや着脱式のフラッシュメモリ（ＣＦカードなど）を備える様々な機器で広くサポートされている。今や、リムーバブルメディアにおけるデファクトスタンダードといえるファイル管理方式である。
【０００３】
図１２は、従来のＦＡＴファイルシステムの配列を示す。図１２を参照して、ＤＯＳやＷｉｎｄｏｗｓ（登録商標）のＦＡＴファイルシステムについて説明する。ＦＡＴファイルシステムは、ブートセクタと、２つのＦＡＴ、ルートディレクトリ（ディレクトリエントリ領域）、及びデータ領域とから構成される。ＦＡＴ２はＦＡＴ１と同一の内容が記録されており、ＦＡＴ１が壊れてもＦＡＴ２を参照することによりシステムは機能する。
【０００４】
ブートセクタには、論理的なセクタ長、トラック数、１トラック当たりのセクタ数など、記録媒体の論理構造データであるＢＰＢ（ＢＩＯＳ  Ｐａｒａｍｅｔｅｒ  Ｂｌｏｃｋ）や、ＤＯＳやＷｉｎｄｏｗｓ（登録商標）で使用されるブートストラップローダが記録される。
【０００５】
データ領域には、各ファイルのデータ本体が分割されて格納され、幾つかのセクタをひとまとめにしたクラスタと呼ばれる単位で管理される。ＦＡＴには、データ領域上の一連のクラスタの構成を示す情報、即ちクラスタの使用状況が記録されている。従って、分割されたファイルのデータがクラスタを単位として記録されているので、ファイルのデータのディスク上の物理的な位置は連続しているわけではない。
【０００６】
ＦＡＴファイルシステムは、フレキシブルディスクやハードディスクなどのブロックデバイス上のファイルやディレクトリを実際の物理的なディスク上に対応させ、ファイルやディレクトリ自体を構成する体系であり、ディレクトリエントリとＦＡＴという情報によって管理される。
【０００７】
図１３は、従来のＦＡＴエントリの一例を示す。この例では、ＦＡＴエントリ２から始まるファイルは、データ領域のクラスタ番号２（0x00000002）に記録され、続いてクラスタ番号３（0x00000003）、さらに、クラスタ番号４（0x00000004）、５（0x00000002）にその後のデータが記録されていることを示している。ＦＡＴエントリ５に0xFFFFFFFF（ＥＯＦマーク）が書き込まれていることから、このクラスタ番号がファイルデータの最終記録位置である。また、ＦＡＴエントリの値が0x00000000であるクラスタ６〜８は、未使用領域であることを示している。なおＦＡＴエントリ０、１は予約領域（ＲＳＶマーク）である。
【０００８】
ＦＡＴエントリのクラスタ番号は、ファイルデータが分割されて記録されるクラスタと１対１に対応しており、ファイル本体を構成するデータ領域上のクラスタ番号の集合のうち、夫々後に続くクラスタ番号を保持している。従って、例えクラスタの物理的位置が離れていても、ＦＡＴの一連のクラスタ番号を読み取っていけば、データ領域上に格納されているクラスタを順に読み出し、分割されたファイル本体を再構成することが可能である。また、後続するクラスタがないＦＡＴエントリ、即ち、対応するクラスタがファイルの最終クラスタである場合は、その旨を示すユニークな値0xFFFFFFFFが書き込まれる。また、値が0x00000000であるＦＡＴエントリは未使用領域であることを意味する。ただし、各ファイルの一連のクラスタ番号のうち、先頭のクラスタ番号だけはディレクトリエントリに書き込まれる。
【０００９】
図１４は、図１２に示したディレクトリエントリ領域に記録されるディレクトリエントリのフォーマットである。１つのディレクトリエントリは３２バイトで構成され、ファイル名、拡張子、属性、更新日時、開始クラスタ、ファイルサイズなどが記録される。
【００１０】
ＦＡＴファイルシステムの長所としては、以下のことが挙げられる。
（１）ＦＡＴチェーンを順に追えば、次々とファイルを構成するクラスタがわかるので、シーケンシャルファイルに向いている。
（２）ファイルの管理情報をあらかじめＲＡＭに読み込み常駐させておき、オーディオビデオ情報の再生中に余分なシークが発生しないようにしたい場合、ファイルの位置情報を示す情報やルートディレクトリがＦＡＴとして１箇所に集中しているので、ＲＡＭへ常駐させやすい。従って、ＭＳ−ＤＯＳやＷｉｎｄｏｗｓ（登録商標）に限らず、他の多くのＯＳでもサポートされることが多い。
【００１１】
一方で、ＦＡＴファイルシステムにも幾つかの短所が存在する。例えば、特開平４−１３９５４３号公報においては、ファイルを新しく作成する場合に、そのファイルに使用するためのＦＡＴとして未使用であるＦＡＴのうちＦＡＴ番号の小さい順にＦＡＴを割り当てるため、ファイルの削除、及び作成を頻繁に行うとＦＡＴ番号の小さいＦＡＴが常に使用されることになり、記録媒体の同じ部分ばかり使用されるので、記録媒体の寿命を縮めるという欠点を指摘している。さらに、削除したばかりのファイルにおいて、そのＦＡＴ番号が小さい場合には、次に新しくファイルを作成することにより、そのファイルのＦＡＴが使用されてしまうため、そのファイルの復元が不可能になるという欠点も指摘している。
【００１２】
その課題を解決するため、未使用ＦＡＴのチェーンを有し、未使用にになったＦＡＴは、その未使用ＦＡＴのチェーンの末尾に追加され、使用するときには、未使用ＦＡＴのチェーンの先頭から使用することにより上記課題を解決するファイル管理方式が開示されている（例えば、特許文献１を参照。）。
【００１３】
また、ファイル削除時に、それまでファイルを構成するクラスタの識別番号を保持していた全てのＦＡＴエントリを0x00000000にクリアしなければならなく、その作業自体は単純であるものの回数の多いループを伴い、結果的には処理が遅くなるという欠点を指摘している。さらに、ファイルの末尾に新たな領域をつなげるために、そのファイルに対応するＦＡＴエントリを順に最後まで操作しなければならず、やはり回数の多いループを処理しなければならないという問題がある。
【００１４】
その課題を解決するため、空き領域もファイルと同様に、チェーン構造により記述、管理し、ファイルの末尾となるＦＡＴエントリへのポインタを設けて管理することにより、空き領域や個々のファイル領域を表すチェーン構造の切り貼りだけで上記課題を解決するファイル管理方式が開示されている（例えば、特許文献２を参照。）。
【００１５】
【特許文献１】特開平４−１３９５４３号公報
【特許文献２】特開２００１−５６７７４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記従来例であっても、年々続く記録媒体の大容量化、処理するオーディオビデオ情報のファイルサイズの拡大化に伴い、更なるファイルシステムの高速化が必要とされている。また、ＦＡＴファイルシステムが、様々な機器で広くサポートされ、リムーバブルメディアにおけるデファクトスタンダードであるが故に、更なる高速化が必要であるという問題が存在しつづける。
【００１７】
本発明は、このような問題を解決するために提案されたものであり、その目的は、十分に高速なＣＰＵを使用できない環境下においても、高速なファイル管理を行うことができ、記録媒体の同じ部分ばかり使用することによる記録媒体の寿命の短縮を回避するとともに、削除したばかりのファイルの復元が容易であるファイル管理装置、及びファイル管理方式を提供することを目的とする。
【課題を解決するための手段】
【００１８】
この発明は、上述した課題を解決すべくなされたもので、本発明においては、単位領域から構成される記録媒体にファイルのデータを記録、管理するファイル管理方式において、ファイルのデータを記録する夫々の単位領域をリンクさせて管理するデータリンクステップと、夫々のファイルのデータを記録する先頭の単位領域へのポインタを記録するファイル開始記録ステップと、夫々のファイルのデータを記録する最後尾の単位領域へのポインタを記録するファイル終了記録ステップと、記録媒体の記録領域を複数の領域に分割し、その領域毎に未使用の単位領域をリンクさせて管理する未使用領域管理ステップと、前記分割される複数の領域毎に管理された未使用の単位領域の先頭の単位領域へのポインタを記録する未使用領域開始記録ステップと、前記分割される複数の領域毎に管理された未使用の単位領域の最後尾の単位領域へのポインタを記録する未使用領域終了記録ステップとを有することを特徴とするファイル管理方法等を提供する。
【発明の効果】
【００１９】
本発明によれば、ファイル管理装置及びファイル管理方法において、記録領域の未使用クラスタをチェーン構造で管理することにより、ファイルの削除処理を高速に行えるようにし、さらに、記録領域を複数の記録領域に分割して、夫々の記録領域に対して、未使用クラスタをチェーン構造で管理することにより、記録領域の分散を防ぎ、ディスク装置等の記録メディアにおいても高速なアクセスを可能にしたファイル管理装置、及びファイル管理方式を提供することが可能となる。
【００２０】
また、夫々の領域において、削除したファイルに使用されていたクラスタを、未使用クラスタのチェーン構造の最後尾に結合させ、使用するときはチェーン構造の先頭から使用することにより、さらに、夫々の記録領域において、使用回数の少ない記録領域にデータを記録することにより、記録媒体の同じ部分ばかり使用することによる記録媒体の寿命の短縮を回避するとともに、削除したばかりのファイルの復元が容易であるファイル管理装置、及びファイル管理方式を提供することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しながら、本発明の実施形態を説明する。
図１に、本発明の実施形態に係るファイル管理装置である情報処理装置のシステム全体の構成を示す。
同図において、ＣＰＵ１０１は、ファイル管理装置１００全体の制御を行う。メインメモリ１０５には、ＣＰＵ１０１により実行されるプログラム等がロードされる。グラフィックコントローラ１０７は、ディスプレイ１０８の表示を制御する。
【００２２】
ノースブリッジ１０３は、ＣＰＵローカルバス１０２、メモリバス１０４、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス１０６、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス１０９を接続するためのブリッジである。サウスブリッジ１１０は、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）バス１１１、１１３、ＰＣＩバス１１９、ＬＰＣ（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）バス１１５を接続するブリッジである。
【００２３】
ディスク装置１１２は、ＣＰＵ１０１により実行される各種のプログラム（オペレーティングシステム、デバイスドライバ、アプリケーションプログラム等）や、各種の管理情報を記録する。ディスク装置１１４に記録されたプログラムは必要に応じてメインメモリ１０５にロードされる。またディスク装置１１４には、各種データやコンテンツが記録される。
【００２４】
キーボードコントローラ１１６は、キーボード１１７によるキー入力操作を制御する。ＢＩＯＳ−ＲＯＭ１１８は、イニシャルプログラムローダ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を記録する。
【００２５】
ＰＣＩバス１１９には、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１２０が接続されている。ＮＩＣ１２０は記録装置１００をネットワーク（例えばＬＡＮ）に接続する。
【００２６】
次に、ディスク装置１１４に適用されるＦＡＴ型ファイルファイルシステムについて、図２及至図１１を参照して説明する。
図２は、ＦＡＴ２０１の構造を示す一例である。ＦＡＴ２０１は、ＦＡＴヘッダ２０２と、各クラスタに夫々対応する複数のＦＡＴエントリ２０４から構成される。
【００２７】
ＦＡＴヘッダ２０２には、記録領域を複数に分割（本実施系ではＮ分割）して管理する際の、記録領域管理テーブル２０３が含まれる。記録領域管理テーブル２０３には、記録領域毎に、未使用クラスタ開始ポインタ２０５、未使用クラスタ終了ポインタ２０６、クラスタアクセス回数２０７、記録領域開始ポインタ２０８、記録領域終了ポインタ２０９、及び使用クラスタ数２１０が含まれる。
【００２８】
記録領域開始ポインタ２０８と記録領域終了ポインタ２０９によって、分割された記録領域のうち、どのクラスタ領域が管理されているかが示されている。例えば図２の例では、ＦＡＴ番号２からＦＡＴ番号Ｍの記録領域をＮヶに分割し、分割された第１の記録領域の記録領域開始ポインタ２０８を２、記録領域終了ポインタをＭ／Ｎとしている。即ち、ＦＡＴ番号２のクラスタからＦＡＴ番号Ｍ／Ｎのクラスタまでを第１の記録領域としている。同様に、分割された第２の記録領域の記録領域開始ポインタ２０８をＭ／Ｎ＋１、記録領域終了ポインタを２×Ｍ／Ｎとしている。即ち、ＦＡＴ番号Ｍ／Ｎ＋１のクラスタからＦＡＴ番号２×Ｍ／Ｎのクラスタまでを第２の記録領域としている。なお、本実施形態においては、自然数Ｍは、自然数Ｎの整数倍としている。
【００２９】
未使用クラスタ開始ポインタ２０５には、その分割された記録領域のうち、データが記録されていない一連の未使用クラスタの先頭クラスタを示すＦＡＴ番号が記録される。未使用クラスタが存在しない場合、未使用クラスタ開始ポインタ２０５には、0xFFFFFFFFが記録される。同様に、未使用クラスタ終了ポインタ２０６には、その分割された記録領域のうち、データが記録されていない一連の未使用クラスタの最終クラスタを示すＦＡＴ番号が記録される。未使用クラスタが存在しない場合、未使用クラスタ終了ポインタ２０６にも、0xFFFFFFFFが記録される。
【００３０】
図２の例では、分割された第１の記録領域の、未使用クラスタ開始ポインタ２０５を６、未使用クラスタ終了ポインタ２０６をＭ／Ｎとしている。即ち、ＦＡＴ番号６のクラスタを一連の未使用クラスタの先頭とし、ＦＡＴ番号Ｍ／Ｎのクラスタを一連の未使用クラスタの最後尾としている。同様に、分割された第２の記録領域の、未使用クラスタ開始ポインタ２０５をＭ／Ｎ＋４、未使用クラスタ終了ポインタ２０６を２×Ｍ／Ｎとしている。即ち、ＦＡＴ番号Ｍ／Ｎ＋４のクラスタを一連の未使用クラスタの先頭とし、ＦＡＴ番号２×Ｍ／Ｎのクラスタを一連の未使用クラスタの最後尾としている。
【００３１】
クラスタアクセス回数２０７は、その分割された記録領域へのアクセスをクラスタ単位でカウントするカウンタである。図２の例では、分割された第１の記録領域へのクラスタアクセス回数２０７を２００としている。即ち、既に２００回のアクセスがあったことを示している。同様に、分割された第２の記録領域へのクラスタアクセス回数２０７を４０００としている。即ち、既に４０００回のアクセスがあったことを示している。
【００３２】
また使用クラスタ数２１０は、その分割された記録領域のうち、現在使用されているクラスタ数を記録する。図２の例では、分割された第１の記録領域の使用クラスタ数２１０を４としている。即ち、現在使用されているクラスタは４つであることを示している。同様に、分割された第２の記録領域の使用クラスタ数２１０を３としている。即ち、現在使用されているクラスタは３つであることを示している。
【００３３】
ＦＡＴエントリ２０４には、対応するクラスタに付与されているクラスタ番号と同一のＦＡＴ番号が付与されている。例えば、クラスタ番号２に対応するＦＡＴエントリ２０４には、ＦＡＴ番号２が付与される。ＦＡＴポインタには、クラスタの後方に連結される、クラスタに付与されているＦＡＴ番号が記録される。後方にクラスタが存在しない場合、即ち、対応するクラスタがファイルの末尾である場合、ＦＡＴポインタには、0xFFFFFFFFが記録される。
【００３４】
例えば、ディスク装置１１４に１つのファイルだけが、ＦＡＴ番号２、３、４、５が付与されている４つのクラスタに記録されている場合、図２に示すようにＦＡＴ番号２のＦＡＴポインタには、後方に連結されるクラスタに付与されているＦＡＴ番号３（0x00000003）が記録される。ＦＡＴ番号３のＦＡＴポインタには、後方に連結されるクラスタに付与されているＦＡＴ番号４（0x00000004）が記録される。ＦＡＴ番号４のＦＡＴポインタにも同様に記録がされている。ＦＡＴ番号５のＦＡＴポインタには、後方に連結されるクラスタが存在しないことを示す0xFFFFFFFFが記録される。
【００３５】
図３は、ＦＡＴ番号２、３、４、５が付与されている４つのクラスタに１つのファイルが記録されている様子を示している。ファイルの先頭のクラスタ（図３の例では、ＦＡＴ番号２のクラスタ）には、ファイルのサイズに関する情報を記録するサイズ記録領域３０１が設けられる。ファイルのデータは、２番目のクラスタ（図３の例ではＦＡＴ番号３のクラスタ）以降に記録される。なお、サイズ記録領域３０１をディレクトリエントリに設けるようにし、１番目のクラスタからファイルのデータを記録するようにしてもよい。
【００３６】
図４は、サイズ記録領域３０１の構成例を示している。サイズ記録領域３０１には、最終ＦＡＴ番号記録領域４０１、及び占有クラスタ数記録領域４０２が設けられている。最終ＦＡＴ番号記録領域４０１には、ファイルの最後尾のクラスタのＦＡＴ番号（図３の例では５）が記録される。占有クラスタ数記録領域４０２には、ファイルが使用するクラスタ数、即ち、サイズ記録領域３０１の記録されるクラスタと、データが記録されるクラスタの総和（図３の例では４）が記録される。
【００３７】
次にＦＡＴを利用するファイルの作成処理、ファイルの削除処理、未使用クラスタの並び替え処理について、図５及至図１１のフローチャートを参照して説明する。
最初に、ファイルの作成処理について、図５及至図８のフローチャートを参照して説明する。
【００３８】
ファイル作成時、そのデータの記録される領域が選択される（ステップＳ５０１）。即ち、Ｎヶに分割された記録領域のうち、どの記録領域に記録するのかが選択される。この記録領域選択処理について、図６のフローチャートを参照して説明する。
【００３９】
最初に、Ｘ、Ｙを初期化する（ステップＳ６０１）。即ち、Ｘ、及びＹに１を代入する。
【００４０】
次に、第Ｘの記録領域へのアクセス回数がＹ番目に少ないかどうかチェックする（ステップＳ６０２）。即ち、分割された各記録領域の管理テーブル２０３のクラスタアクセス回数２０７を夫々比較し、チェックする。最初はＸ、Ｙともに１であるため、第１の記録領域へのアクセス回数が１番目に少ないかどうかを、他の記録領域のクラスタアクセス回数２０７と比較しチェックする。チェックの結果、第Ｘの記録領域へのアクセス回数がＹ番目に少なくないと判断される場合、ステップＳ６０５へ移行する。また第Ｘの記録領域へのアクセス回数がＹ番目に少ないと判断される場合は、ステップＳ６０３へ移行する。
【００４１】
ステップＳ６０５では、Ｘの値を１だけインクリメントし、ステップＳ６０２へ移行する。即ち次の記録領域のチェックを行う。従って、ステップＳ６０２、ステップＳ６０５をループすることにより、アクセス回数のＹ番目に少ない記録領域を求める。
【００４２】
ステップＳ６０３では、第Ｘの記録領域に十分な未使用記録領域があるかどうかチェックする。通常はクラスタが１つ未使用であれば、十分な未使用記録領域があると判断されるが、分割された記録領域において、同一の記録領域から複数の領域を確保して記録したい場合、そのクラスタ数の未使用記録領域があるかどうかチェックする。未使用記録領域の有無に関しては、記録領域終了ポインタ２０９と記録領域開始ポインタ２０８の差分がその記録領域に含まれるクラスタ数となるから、そのクラスタ数から使用クラスタ数２１０を引いたクラスタ数が、未使用クラスタ数として求められる。チェックの結果、第Ｘの記録領域に十分な未使用記録領域がないと判断される場合、ステップＳ６０６へ移行する。また、第Ｘの記録領域に十分な未使用記録領域があると判断される場合は、ステップＳ６０４へ移行する。
【００４３】
ステップＳ６０６では、Ｙの値を１だけインクリメントし、Ｘを初期化、即ち、Ｘに１を代入し、ステップＳ６０７へ移行する。
【００４４】
ステップＳ６０７では、Ｙの値がＮより大きいかどうかチェックする。Ｙの値がＮより大きくなければステップＳ６０２へ移行し、Ｙの値がＮより大きければステップＳ６０８へ移行する。従って、ステップＳ６０２、ステップＳ６０３、ステップＳ６０６、ステップＳ６０７をループすることにより、十分な未使用領域がある記録領域を求める。
【００４５】
ステップＳ６０８では、十分な未使用記録領域は存在しないとして、処理を終了し、図５へリターンする。
【００４６】
ステップＳ６０４では、第Ｘの記録領域を選択し、処理を終了し、図５へリターンする。即ち、第Ｘの記録領域へのアクセス回数が少なく、かつ十分な未使用記録領域が確保可能であると判断し、第Ｘの記録領域を選択し、図５へリターンする。
【００４７】
図５のステップＳ５０１の記録領域選択において、十分な未使用記録領域が存在しない場合、処理を終了する。またあるいは、十分な未使用記録領域が確保可能であると判断される場合、選択された第Ｘの記録領域に対してステップＳ５０２以降の処理を行う。
【００４８】
ステップＳ５０２では、未使用クラスタＡの獲得を行う。即ち、ステップＳ５０１で選択された記録領域から未使用のクラスタに対応するＦＡＴ番号を獲得する。この未使用クラスタＡ獲得処理について、図７のフローチャートを参照して説明する。
【００４９】
最初に、選択された記録領域の管理テーブル２０３の未使用クラスタ開始ポインタ２０５を読み取り、Ｋに代入する（ステップＳ７０１）。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ開始ポインタ２０５は６であるので、Ｋには６が代入される。
【００５０】
次に、Ｋが0xFFFFFFFFであるかどうかチェックする（ステップＳ７０２）。即ち、選択された記録領域の管理テーブル２０３の未使用クラスタ開始ポインタに0xFFFFFFFFが記録されていて、未使用クラスタの存在しない状態かどうかチェックする。Ｋが0xFFFFFFFFである場合、即ち、選択された記録領域の全てのクラスタが使用されている、あるいは、使用できない場合、未使用クラスタは存在しないとして、ステップＳ７０７へ移行する。また、Ｋが0xFFFFFFFFでない場合、即ち、未使用クラスタがある場合、ステップＳ７０３へ移行する。
【００５１】
ステップＳ７０７では、未使用クラスタは存在せず、獲得できなかったとして、処理を終了し、図５へリターンする。
【００５２】
ステップＳ７０３では、ＦＡＴ番号ＫのＦＡＴポインタを読み取り、Ｌに代入する。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ開始ポインタ２０５は６であるから、ＦＡＴ番号６のＦＡＴポインタ0x00000007を読み取り、７がＬに代入される。
【００５３】
次に、選択された記録領域の管理テーブル２０３の未使用クラスタ開始ポインタ２０５にＬを記録する（ステップＳ７０４）。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ開始ポインタ２０５は６であり、ＦＡＴ番号６のＦＡＴポインタは0x00000007であるから、未使用クラスタ開始ポインタ２０５には、新たに７が記録される。
【００５４】
次に、選択された記録領域の管理テーブル２０３の使用クラスタ数２１０を１だけインクリメントする（ステップＳ７０５）。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ数２１０は、１インクリメントされ、４から５が新たに記録される。
【００５５】
次に、未使用クラスタＫを獲得できたとし、ＦＡＴ番号Ｋをリターン値とし、処理を終了し、図５へリターンする（ステップＳ７０６）。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ開始ポインタ２０５は６であるから、ＦＡＴ番号６のクラスタが未使用クラスタとして獲得され、図５へリターンする。
【００５６】
図５のステップＳ５０２の未使用クラスタＡ獲得処理において、未使用クラスタが獲得できなかった場合、処理を終了する。またあるいは、未使用クラスタが獲得できた場合、獲得できたクラスタのＦＡＴ番号をＡに代入する。即ち、図７のＫを図５のＡに代入し、ステップＳ５０３以降の処理を行う。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ開始ポインタ２０５は６であるから、ＦＡＴ番号６のクラスタが未使用クラスタとして獲得され、Ａには６が代入される。
【００５７】
ステップＳ５０３では、作成されるファイルのディレクトリエントリの開始クラスタにＡを記録する。即ちファイルの先頭となるクラスタのＦＡＴ番号がＡである旨を記録する。例えば図２の例で、第１の記録領域が選択されたならば、６がディレクトリエントリの開始クラスタに記録される。
【００５８】
次に、未使用クラスタＢの獲得を行う（ステップＳ５０４）。即ち、ステップＳ５０１で選択された記録領域から未使用のクラスタに対応するＦＡＴ番号を獲得する。この未使用クラスタＢ獲得処理については、ステップＳ５０２同様であるので省略する。未使用クラスタが獲得できなかった場合は、ステップＳ５１３へ移行する。またあるいは、未使用クラスタが獲得できた場合、獲得できたクラスタのＦＡＴ番号をＢに代入する。即ち、図７のＫを図５のＢに代入し、ステップＳ５０５へ移行する。例えば図２の例で、第１の記録領域が選択されたならば、ＦＡＴ番号７のクラスタが未使用クラスタとして獲得され、Ｂには７が代入される。
【００５９】
ステップＳ５１３では、クラスタＡを開放する。即ち、２つ目の未使用クラスタの獲得ができず、ファイル作成に失敗したために、エラー終了処理として、
ステップＳ５０２にて既に獲得してある未使用クラスタを開放する。このクラスタＡ開放処理について、図８のフローチャートを参照して説明する。なお、図８のフローチャートでは、開放処理を行うクラスタはＤとしている。即ち図８のフローチャートに処理を移行する際、図５のＡを図８のＤに代入して処理を行う。例えば図２の例で、第１の記録領域が選択されたならば、獲得されたクラスタＡのＦＡＴ番号は６であり、仮にステップ５０４にて未使用クラスタＢの獲得ができなかったならば、ＦＡＴ番号６のクラスタの開放処理を行う。即ち図８においてはクラスタ６の開放処理を行うことになり、Ｄは６になる。
【００６０】
最初に、選択された記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６を読み取り、Ｅに代入する（ステップＳ８０１）。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ終了ポインタ２０６はＭ／Ｎであるので、ＥにはＭ／Ｎが代入される。
【００６１】
次に、ＦＡＴ番号ＥのＦＡＴポインタにＤを記録する（ステップＳ８０２）。例えば図２の例で、第１の記録領域が選択されたならば、未使用クラスタ終了ポインタ２０６はＭ／Ｎであるので、ＦＡＴ番号Ｍ／ＮのＦＡＴポインタにＤ、即ち0x00000006が記録される。
【００６２】
次に、ＦＡＴ番号ＤのＦＡＴポインタに0xFFFFFFFFを記録する（ステップＳ８０３）。例えば図２の例で、第１の記録領域が選択されたならば、Ｄは６であるから、ＦＡＴ番号６のＦＡＴポインタに0xFFFFFFFFが記録される。
【００６３】
次に、選択された記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６にＤを記録する（ステップＳ８０４）。例えば図２の例で、第１の記録領域が選択されたならば、Ｄは６であるから、第１の記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６に６が記録される。
【００６４】
次に、選択された記録領域の管理テーブル２０３の使用クラスタ数２１０を１だけデクリメントする（ステップＳ８０５）。例えば図２の例で、第１の記録領域が選択されたならば、第１の記録領域の管理テーブル２０３の使用クラスタ数２１０は、図５のステップＳ５０２の未使用クラスタＡ獲得処理時、即ち図７のステップＳ７０５の使用クラスタ数１インクリメントで、４から５に記録されていたのを、このステップＳ８０５で１デクリメントし、５から４へ記録し、図８のクラスタＤ開放処理を終了し、図５へリターンする。
【００６５】
次にステップＳ５１４では、ディレクトリエントリの開始クラスタをクリアし、終了する。即ち、ステップＳ５０３にて、作成されるファイルのディレクトリエントリの開始クラスタにＡを記録しているのを、クリアし、終了する。なお、ここでファイル作成エラーとして、作成しようとしたファイルのディレクトリエントリ自体をクリアするようにしても良い。
【００６６】
ステップＳ５０５では、Ｃの初期化、即ち、獲得したクラスタ数をＣに代入する。ステップＳ５０２とステップＳ５０４にて２つのクラスタを獲得しているので、Ｃには２が代入される。
【００６７】
次に、ＦＡＴ番号ＡのＦＡＴポインタにＢを記録する（ステップＳ５０６）。即ちクラスタＡとクラスタＢの連結を行う。例えば図２の例で、第１の記録領域が選択されたならば、最初の時点ではＡは６であり、Ｂは７であるから、ＦＡＴ番号６のＦＡＴポインタに0x00000007を記録する。
【００６８】
次に、ＦＡＴ番号ＢのＦＡＴポインタに0xFFFFFFFFを記録する（ステップＳ５０７）。即ち、ＦＡＴ番号Ｂを、新規ファイルの暫定的な最終クラスタとして記録しておく。例えば図２の例で、第１の記録領域が選択されたならば、最初の時点ではＢは0x00000007であるから、ＦＡＴ番号７のＦＡＴポインタに0xFFFFFFFFを記録する。
【００６９】
次に、ＦＡＴ番号Ｂのクラスタに新規ファイルのデータを記録し、選択された記録領域の管理テーブル２０３のクラスタアクセス回数２０７を１だけインクリメントする（ステップＳ５０８）。例えば図２の例で、第１の記録領域が選択されたならば、最初の時点でＢは0x00000007であるから、ＦＡＴ番号７のクラスタの各セクタに新規ファイルのデータが記録され、クラスタアクセス回数２０７は１インクリメントされ、２００から２０１が新たに記録される。
【００７０】
次に、記録データにまだ記録されていない残りのデータがあるかどうかをチェックする（ステップＳ５０９）。即ち、ステップＳ５０８にて、記録したファイルのデータに対し、さらに後続するデータがあるかどうかチェックを行う。後続するデータがあるならばステップＳ５１０へ移行し、後続するデータが無ければファイル作成の終了として、ステップＳ５１５へ移行する。
【００７１】
ステップＳ５１０では、ＢをＡに代入する。第１の記録領域が選択されたならば、最初の時点でＢは0x00000007であるから、Ａに７が代入される。
【００７２】
次に、未使用クラスタＢの獲得を行う（ステップＳ５１１）。即ち、ステップＳ５０１で選択された記録領域から未使用のクラスタに対応するＦＡＴ番号を獲得する。この未使用クラスタＢ獲得処理については、ステップＳ５０２同様であるので省略する。未使用クラスタが獲得できなかった場合は、ステップＳ５１５へ移行する。またあるいは、未使用クラスタが獲得できた場合、獲得できたクラスタのＦＡＴ番号をＢに代入する。即ち、図７のＫを図５のＢに代入し、ステップＳ５１２へ移行する。例えば図２の例で、第１の記録領域が選択されたならば、最初の時点でＦＡＴ番号0x00000008のクラスタが未使用クラスタとして獲得され、Ｂには８が代入される。
【００７３】
ステップＳ５１２では、Ｃを１だけインクリメントし、ステップＳ５０６へ移行する。最初の時点では、ステップＳ５０５にて、Ｃには２が代入されているから、２から３が代入される。従って、ステップＳ５０６からステップＳ５１２のループを、新規ファイルの記録しようとしている残りのデータが存在し、未使用クラスタの獲得ができる間、繰り返し処理される。
【００７４】
ステップＳ５１５では、サイズ記録領域３０１の最終ＦＡＴ番号記録領域４０１に、最終ＦＡＴ番号としてＢを記録する。即ち、ファイル作成時に、ファイルの最後のデータを記録したクラスタのＦＡＴ番号を最終ＦＡＴ番号記録領域４０１に記録する。
【００７５】
次に、サイズ記録領域３０１の占有クラスタ数記録領域４０２に、占有クラスタ数としてＣを記録する（ステップＳ５１６）。即ち、そのファイルのデータ記録、及びサイズ記録領域に使用したクラスタの総数を占有クラスタ数記録領域４０２に記録する。
【００７６】
次に、選択された記録領域の管理テーブル２０３のクラスタアクセス回数２０７を２だけインクリメントする（ステップＳ５１７）。ただし、ステップＳ５１５、及びステップＳ５１６を同時に処理した場合は、クラスタアクセス回数２０７は、１だけインクリメントされる。
【００７７】
次に、ディレクトリエントリにファイルサイズ等各種データを記録し、終了する（ステップＳ５１８）。
以上が、ファイルの作成処理について処理の説明である。
【００７８】
次に、ファイルの削除処理について、図９のフローチャートを参照して説明する。
最初に、削除するファイルのディレクトリエントリの開始クラスタを読み取り、Ｓに代入する（ステップＳ９０１）。例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、ＦＡＴ番号２がディレクトリエントリの開始クラスタに記録されており、Ｓに２が代入される。
【００７９】
次に、ＦＡＴ番号Ｓのクラスタが属する、分割された記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６を読み取り、Ｔに代入する（ステップＳ９０２）。例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、ＦＡＴ番号２のクラスタは第１の記録領域に属し、第１の記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６はＭ／Ｎであるから、ＴにはＭ／Ｎが代入される。
【００８０】
次に、ＦＡＴ番号ＴのＦＡＴポインタにＳを記録する（ステップＳ９０３）。例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、Ｓに２が代入され、ＴにＭ／Ｎが代入されるから、ＦＡＴ番号Ｍ／ＮのＦＡＴポインタには0x00000002が記録される。
【００８１】
次に、サイズ記録領域３０１の最終ＦＡＴ番号記録領域４０１に記録されている最終ＦＡＴ番号を読み取り、Ｕに代入する（ステップＳ９０４）。例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、ファイルの最後のデータを記録したクラスタのＦＡＴ番号は５であり、最終ＦＡＴ番号記録領域４０１に記録されている。従って、Ｕに５が代入される。
【００８２】
次に、ＦＡＴ番号Ｓのクラスタが属する、分割された記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６にＵを記録する（ステップＳ９０５）。例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、ＦＡＴ番号２のクラスタは第１の記録領域に属し、Ｕに代入されているファイルの最後のデータを記録したクラスタのＦＡＴ番号は５であるから、第１の記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６に５が記録される。
【００８３】
次に、サイズ記録領域３０１の占有クラスタ数記録領域４０２に記録されている占有クラスタ数を読み取り、Ｔに代入する（ステップＳ９０６）。例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、ファイルのデータが記録されているクラスタ数は４であり、占有クラスタ数記録領域４０２に記録されている。従って、Ｔに４が代入される。
【００８４】
次に、ＦＡＴ番号Ｓのクラスタが属する、分割された記録領域の管理テーブル２０３の使用クラスタ数２１０からＴ減算した値を記録する（ステップＳ９０７）。例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、ＦＡＴ番号２のクラスタは第１の記録領域に属し、Ｔに代入されているファイルのデータが記録されているクラスタ数は４であるから、第１の記録領域の管理テーブル２０３の使用クラスタ数２１０に記録されている値、即ち４から４減算され、０が新たに記録される。即ち、第１の記録領域においては、１つのクラスタも使用されていないことを意味する。
【００８５】
次に、ＦＡＴ番号Ｓのクラスタが属する、分割された記録領域の管理テーブル２０３のクラスタアクセス回数２０７を２だけインクリメントする（ステップＳ９０８）。ただし、ステップＳ９０４、及びステップＳ９０６を同時に処理した場合は、クラスタアクセス回数２０７は、１だけインクリメントされる。
【００８６】
例えば図２の例で、ＦＡＴ番号２、３、４、５のクラスタに記録されているファイルを削除する場合、ＦＡＴ番号２のクラスタは第１の記録領域に属するから、第１の記録領域の管理テーブル２０３のクラスタアクセス回数２０７がインクリメントされる。
【００８７】
次に、削除されるファイルのディレクトリエントリをクリアし、終了する（ステップＳ９０９）。
以上が、ファイルの削除処理について処理の説明である。
【００８８】
次に、未使用クラスタの並び替え処理について、図１０、及び図１１のフローチャートを参照して説明する。
最初に、Ｆを初期化する（ステップＳ１００１）。即ち、Ｆに１を代入する。
【００８９】
次に、Ｆの値がＮより大きいかどうかチェックする（ステップＳ１００２）。Ｆの値がＮより大きくなければステップＳ１００３へ移行し、Ｆの値がＮより大きければ（１）、即ち図１１のステップＳ１１０１へ移行する。
【００９０】
ステップＳ１００３では、第Ｆの記録領域の管理テーブル２０３の未使用クラスタ開始ポインタ２０５を読み取り、Ｇに代入する。例えば図２の例で、Ｆが１、即ち第１の記録領域関して最初は、管理テーブル２０３の未使用クラスタ開始ポインタ２０５は６であり、Ｇに６が代入される。
【００９１】
次に、ＦＡＴ番号ＧのＦＡＴポインタを読み取り、Ｈに代入する（ステップＳ１００４）。例えば図２の例で、Ｆが１、即ち、第１の記録領域関して最初は、管理テーブル２０３の未使用クラスタ開始ポインタ２０５は６であり、Ｇに６が代入されているから、ＦＡＴ番号６のＦＡＴポインタ0x00000007がＨに代入される。
【００９２】
次に、ＦＡＴ番号ＧのＦＡＴポインタに、未使用領域であることを暫定で示す値、0x00000000を記録する（ステップＳ１００５）。例えば図２の例で、Ｆが１、即ち、第１の記録領域関して最初は、管理テーブル２０３の未使用クラスタ開始ポインタ２０５は６であり、Ｇに６が代入されているから、ＦＡＴ番号６のＦＡＴポインタに、0x00000000が記録される。
【００９３】
次に、ステップＳ１００４で代入されたＨの値が、0xFFFFFFFFであるかチェックする（ステップＳ１００６）。Ｈの値が0xFFFFFFFFであればステップＳ１００８へ移行し、Ｈの値が0xFFFFFFFFでなければステップＳ１００７へ移行する。即ち、第Ｆの記録領域の一連の未使用クラスタに関して、全てのＦＡＴポインタに0x00000000を記録したかどうかチェックする。
【００９４】
ステップＳ１００７では、Ｈの値をＧに代入し、ステップＳ１００４へ移行する。例えば図２の例で、Ｆが１、即ち第１の記録領域関して最初は、管理テーブル２０３の未使用クラスタ開始ポインタ２０５は６であり、ステップＳ１００４にて、ＦＡＴ番号６のＦＡＴポインタ0x00000007がＨに代入されていたから、７がＧに代入される。従って、ステップＳ１００４からステップＳ１００７をループすることにより、第Ｆの記録領域の一連の未使用クラスタに関して、全てのＦＡＴポインタに0x00000000を記録する。
【００９５】
ステップＳ１００８では、Ｆの値を１だけインクリメントし、ステップＳ１００２へ移行する。従って、ステップＳ１００２からステップＳ１００８をループすることにより、Ｎヶに分割された全ての記録領域に関して、一連の未使用クラスタの全てのＦＡＴポインタに、未使用である旨を暫定で示す、0x00000000を記録する。
【００９６】
ステップ１１０１では、Ｆを初期化する。即ち、Ｆに１を代入する。
次に、Ｆを初期化する（ステップＳ１００１）。即ち、Ｆに１を代入する。
次に、Ｆの値がＮより大きいかどうかチェックする（ステップＳ１１０２）。Ｆの値がＮより大きくなければステップＳ１１０３へ移行し、Ｆの値がＮより大きければ全ての未使用クラスタの並び替え処理が終了したと判断し、処理を終える。
【００９７】
ステップＳ１１０３では、第Ｆの記録領域の管理テーブル２０３の未使用クラスタ開始ポインタ２０５を読み取り、Ｇ、Ｈ、及びＩに代入する。例えば図２の例で、Ｆが１、即ち第１の記録領域関して最初は、管理テーブル２０３の未使用クラスタ開始ポインタ２０５は６であり、Ｇ、Ｈ、及びＩに６が代入される。
【００９８】
次に、Ｈの値が第Ｆの記録領域の管理テーブル２０３の記録領域終了ポインタ２０９に記録されている値と等しいかどうかチェックする（ステップＳ１１０４）。Ｈの値が第Ｆの記録領域の管理テーブル２０３の記録領域終了ポインタに記録されている値と等しければステップＳ１１０６へ移行し、等しくなければステップＳ１１０５へ移行する。
【００９９】
ステップＳ１１０５では、Ｈの値を１つインクリメントし、ステップＳ１１０７へ移行する。即ちＦＡＴ番号の１つ大きなＦＡＴポインタについて以降の処理を行う。
ステップＳ１１０６では、Ｈの値が第Ｆの記録領域の管理テーブル２０３の記録領域開始ポインタ２０８に記録されている値を読み取り、代入し、ステップＳ１１０７へ移行する。即ち、第Ｆの記録領域の先頭のＦＡＴ番号に対するＦＡＴポインタについて以降の処理を行う。
【０１００】
ステップＳ１１０７では、Ｈの値とＩの値が等しいかどうかチェックする。即ち、ステップＳ１１０３でＩにセットされた第Ｆの記録領域の管理テーブル２０３の未使用クラスタ開始ポインタ２０５の値と比較し、第Ｆの記録領域に関し、一通り処理が終了したかどうかチェックする。Ｈの値とＩの値が等しければステップＳ１１１２へ移行し、等しくなければステップＳ１１０８へ移行する。
【０１０１】
ステップＳ１１０８では、ＦＡＴ番号ＨのＦＡＴポインタを読み取り、Ｊに代入する。
次に、Ｊの値が0x00000000であるかどうかチェックする（ステップＳ１１０９）。即ち、ＦＡＴ番号ＨのＦＡＴポインタに、未使用である旨を暫定で示す、0x00000000が記録されているかチェックする。Ｊの値が0x00000000であればステップＳ１１１０へ移行し、0x00000000でなければステップＳ１１０４へ移行する。ステップＳ１１０７で第Ｆの記録領域に関し、一通り処理が終了したと判断されるか、未使用である旨を暫定で示されたＦＡＴ番号を見つけるまで、ステップＳ１１０４からステップＳ１１０９をループする。
【０１０２】
ステップＳ１１１０では、ＦＡＴ番号ＧのＦＡＴポインタにＨを代入する。即ち、ＦＡＴ番号Ｇで表される前の未使用クラスタと、ＦＡＴ番号Ｈの未使用クラスタの連結を行う。
次に、Ｈの値をＧに代入し、ステップＳ１１０４へ移行する（ステップＳ１１１１）。従って、ステップＳ１１０４からステップＳ１１１１をループすることにより、第Ｆの記録領域に関し、未使用クラスタの並び替えを行う。
【０１０３】
ステップＳ１１１２では、ＦＡＴ番号ＧのＦＡＴポインタに0xFFFFFFFFを記録する。即ち、ＦＡＴ番号Ｇのクラスタが、一連の未使用クラスタの最後尾クラスタである旨を記録する。
【０１０４】
次に、第Ｆの記録領域の管理テーブル２０３の未使用クラスタ終了ポインタ２０６に、Ｇを記録する（ステップＳ１１１３）。
次に、Ｆの値を１つインクリメントし、ステップＳ１１０２へ移行する（ステップＳ１１１４）。即ち、第Ｆの記録領域に関し、未使用クラスタの並び替え、及び管理テーブル２０３の修正を終了し、次の記録領域の処理へと進む。ステップＳ１１０２からステップＳ１１１４の処理を繰り返し行うことにより、全ての記録領域の、未使用クラスタの並び替えを行う。
【０１０５】
以上が、未使用クラスタの並び替え処理について処理の説明である。
なお、未使用クラスタの並び替え処理は、記録領域にフラグメンテーションを解消するためのデフラグ時に行っても良いし、ＣＰＵ等システムに負荷のかかっていないときに行っても良い。
【０１０６】
また、本実施形態では、その目的の１つである、ハードディスク装置などの記録メディアにおいて、シーク時間の短縮をできるだけ行えるようにするため、１つのファイルが複数の記録領域に跨って記録されない構成をとっているが、複数の記録領域に跨って記録できる構成をとっても良い。
【０１０７】
その場合、図７にて未使用クラスタがない場合、再度図６に示された記録領域の選択を行うことで実現できる。具体的には、図４に図示したサイズ記録領域３０１に、他の記録領域に記録する時点で、その記録領域における開始クラスタのＦＡＴ番号、他の記録領域への記録終了時点で、その記録領域における終了クラスタのＦＡＴ番号、及びその記録領域における占有クラスタを記録し、ファイル削除時は、それらの情報を用いて、その記録領域の管理テーブル２０３、ＦＡＴエントリに図９と同様の処理を行うことにより実現できる。また、この場合、図１０、及び図１１に示された未使用クラスタの並び替え処理に対しては何ら変更の必要がない。
【０１０８】
また、本実施形態では、図３に示されるように、ファイルの先頭クラスタにファイルのサイズに関する情報を記録するサイズ記録領域３０１を設けており、ファイルの実データは２番目以降のクラスタに記録するようにしているが、サイズ記録領域３０１をディレクトリエントリ、あるいはその他の場所で記録し、先頭クラスタからファイルの実データを記録するようにしても良い。
【０１０９】
また、ファイルの記録に使用されるクラスタ数をサイズ記録領域３０１の占有クラスタ数記録領域４０２に記録するよう実施したが、ディレクトリエントリのファイルサイズからクラスタ数を求めるようにしても良い。
【０１１０】
また、分割した夫々の記録領域の記録領域開始ポインタ２０８、及び記録領域終了ポインタ２０９を記録領域管理テーブル２０３に有するようにしたが、記録領域全体のクラスタ数を分割の数で割った値を用いて境界を分けるようにしても良い。
【０１１１】
また、上述した実施形態において図１に示したファイル管理装置１００は、図５〜１１に示す各処理の機能を実現する為のプログラムをメモリから読み出してＣＰＵ１０１が実行することによりその機能を実現させるものであったが、これに限定さるものではなく、各処理の全部または一部の機能を専用のハードウェアにより実現してもよい。また、上述したメモリは、光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＤ−ＲＯＭ等の読み出しのみが可能な記録媒体、ＲＡＭ以外の揮発性のメモリ、あるいはこれらの組合せによるコンピュータ読み取り、書き込み可能な記録媒体より構成されてもよい。
【０１１２】
また、ファイル管理装置１００の図５〜１１に示す各処理の機能を実現する為のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各処理を行っても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。具体的には、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含む。
【０１１３】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１１４】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現する為のものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０１１５】
また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体およびプログラムプロダクトは、本発明の範疇に含まれる。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【０１１６】
【図１】本実施形態に係るファイル管理装置のシステム全体の構成図である。
【図２】ＦＡＴ２０１の構成を示す一例の図である。
【図３】ファイル記録の一例を示す図である。
【図４】サイズ記録領域３０１の構成を示す図である。
【図５】ファイル作成処理を説明するフローチャートである。
【図６】記録領域選択処理を説明するフローチャートである。
【図７】未使用クラスタの獲得処理を説明するフローチャートである。
【図８】クラスタＤの開放処理を説明するフローチャートである。
【図９】ファイル削除処理を説明するフローチャートである。
【図１０】未使用クラスタの並び替え処理を説明するフローチャートである。
【図１１】未使用クラスタの並び替え処理を説明するフローチャートである。
【図１２】従来のＦＡＴファイルシステムの構成を示す図である。
【図１３】従来のＦＡＴエントリの一例を示す図である。
【図１４】ディレクトリエントリのフォーマット図である。
【符号の説明】
【０１１７】
１００  ファイル管理装置
１０１  ＣＰＵ
１０２  ＣＰＵローカルバス
１０３  ノースブリッジ
１０４  メモリバス
１０５  メインメモリ
１０６  ＡＧＰ（Accelerated Graphics Port）バス
１０７  グラフィックコントローラ
１０８  ディスプレイ
１０９、１１９  ＰＣＩ（Peripheral Component Interconnect）バス
１１０  サウスブリッジ
１１１、１１３  ＡＴＡ（AT Attachment）バス
１１２、１１４  ディスク装置
１１５  ＬＰＣ（Low Pin Count）バス
１１６  キーボードコントローラ
１１７  キーボード
１１８  ＢＩＯＳ−ＲＯＭ
１２０  ＮＩＣ（Network Interface card）
２０１  ＦＡＴ（File Allocation Table）エントリ
２０２  ＦＡＴヘッダ
２０３  記録領域管理テーブル
２０４  ＦＡＴヘッダ
２０５  未使用クラスタ開始ポインタ
２０６  未使用クラスタ終了ポインタ
２０７  クラスタアクセス回数
２０８  記録領域開始ポインタ
２０９  記録領域終了ポインタ
２１０  使用クラスタ数
３０１  サイズ記録領域
４０１  最終ＦＡＴ番号記録領域
４０２  占有クラスタ数記録領域
【図１】
2006106810.tif 000003
【図２】
2006106810.tif 000004
【図３】
2006106810.tif 000005
【図４】
2006106810.tif 000006
【図５】
2006106810.tif 000007
【図６】
2006106810.tif 000008
【図７】
2006106810.tif 000009
【図８】
2006106810.tif 000010
【図９】
2006106810.tif 000011
【図１０】
2006106810.tif 000012
【図１１】
2006106810.tif 000013
【図１２】
2006106810.tif 000014
【図１３】
2006106810.tif 000015
【図１４】
2006106810.tif 000016