(57)【特許請求の範囲】
【請求項１】
記憶媒体に記憶しているファイルのファイル名と当該ファイルの先頭にあるデータを記憶している先頭クラスタのアドレスとを対応付けてエントリとして記憶するディレクトリエントリと、前記ファイルの１つが記憶されている複数のクラスタの並び順をチェインとして記憶するファイルアロケーションテーブルと、を前記記憶媒体上で管理する情報処理装置であって、
前記ディレクトリエントリのエントリに、前記チェイン上で前記先頭クラスタに連続する所定個数のクラスタを読み出すべき順序で読み出すために、該所定個数のクラスタのそれぞれのアドレスをその読出順で保持する拡張情報を書き込む書込手段と、
前記記憶媒体に記憶しているファイルにアクセスする際に、前記ディレクトリエントリと前記拡張情報とを参照して前記記憶媒体にアクセスする実行手段と
前記実行手段の読み出したデータが、アクセスするファイルの末尾のデータであるか否かを判定する判定手段とを備え、
前記拡張情報で前記読出順で保持されている前記所定個数のクラスタのアドレスそれぞれが示すクラスタから、その読出順に従ってデータを読み出して行き、その読出順の最後の読出順で読み出したデータが前記実行手段のアクセスするファイルの末尾のデータでないと前記判定手段が判定した際に、前記実行手段は前記最後の読出順で読み出したデータに続く次のデータを含むクラスタのアドレスを前記ファイルアロケーションテーブルから読み出す
ことを特徴とする情報処理装置。
【請求項２】
前記書込手段は、前記記憶媒体について前記ファイル名が記憶された領域の直前に前記拡張情報を書き込む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記書込手段は、前記エントリの先頭に該エントリが前記拡張情報を記憶していることを示すインデックスを付加する
ことを特徴とする請求項１又は２のいずれか１項に記載の情報処理装置。
【請求項４】
記憶媒体に記憶しているファイルのファイル名と当該ファイルの先頭にあるデータを記憶している先頭クラスタのアドレスとを対応付けてエントリとして記憶するディレクトリエントリと、前記ファイルの１つが記憶されている複数のクラスタの並び順をチェインとして記憶するファイルアロケーションテーブルと、を前記記憶媒体上で管理する情報処理方法であって、
前記ディレクトリエントリのエントリに、前記チェイン上で前記先頭クラスタに連続する所定個数のクラスタを読み出すべき順序で読み出すために、該所定個数のクラスタのそれぞれのアドレスをその読出順で保持する拡張情報を書き込む書込工程と、
前記記憶媒体に記憶しているファイルにアクセスする際に、前記ディレクトリエントリと前記拡張情報とを参照して前記記憶媒体にアクセスする実行工程と
前記実行工程の読み出したデータが、アクセスするファイルの末尾のデータであるか否かを判定する判定工程とを備え、
前記拡張情報で前記読出順で保持されている前記所定個数のクラスタのアドレスそれぞれが示すクラスタから、その読出順に従ってデータを読み出して行き、その読出順の最後の読出順で読み出したデータが前記実行工程のアクセスするファイルの末尾のデータでないと前記判定工程が判定した際に、前記実行工程は前記最後の読出順で読み出したデータに続く次のデータを含むクラスタのアドレスを前記ファイルアロケーションテーブルから読み出す
ことを特徴とする情報処理方法。
【請求項５】
記憶媒体に記憶しているファイルのファイル名と当該ファイルの先頭にあるデータを記憶している先頭クラスタのアドレスとを対応付けてエントリとして記憶するディレクトリエントリと、前記ファイルの１つが記憶されている複数のクラスタの並び順をチェインとして記憶するファイルアロケーションテーブルと、を前記記憶媒体上で管理する情報処理を、コンピュータに機能させるためのプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記コンピュータを、
前記ディレクトリエントリのエントリに、前記チェイン上で前記先頭クラスタに連続する所定個数のクラスタを読み出すべき順序で読み出すために、該所定個数のクラスタのそれぞれのアドレスをその読出順で保持する拡張情報を書き込む書込手段と、
前記記憶媒体に記憶しているファイルにアクセスする際に、前記ディレクトリエントリと前記拡張情報とを参照して前記記憶媒体にアクセスする実行手段と
前記実行手段の読み出したデータが、アクセスするファイルの末尾のデータであるか否かを判定する判定手段として機能させ、
前記拡張情報で前記読出順で保持されている前記所定個数のクラスタのアドレスそれぞれが示すクラスタから、その読出順に従ってデータを読み出して行き、その読出順の最後の読出順で読み出したデータが前記実行手段のアクセスするファイルの末尾のデータでないと前記判定手段が判定した際に、前記実行手段は前記最後の読出順で読み出したデータに続く次のデータを含むクラスタのアドレスを前記ファイルアロケーションテーブルから読み出す
ためのプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶媒体に記憶しているファイルのファイル名と当該ファイルの先頭にあるデータを記憶している先頭クラスタのアドレスとを対応付けてエントリとして記憶するディレクトリエントリと、前記ファイルの１つが記憶されている複数のクラスタの並び順をチェインとして記憶するファイルアロケーションテーブルと、を前記記憶媒体上で管理する情報処理装置及びその方法、記録媒体に関するものである。
【０００２】
【従来の技術】
＜ＦＡＴファイルシステム＞
ファイル割り当て表（ＦＡＴ：Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）を使用してファイルを管理するファイルシステムは、一般にＦＡＴファイルシステムと呼ばれている。また、ＦＡＴファイルシステムで使用されることを前提にフォーマットされたディスク媒体は、一般にＦＡＴ型ディスクと呼ばれている。
【０００３】
図１３は、主にＭｉｃｒｏｓｏｆｔ社の提供するオペレーティングシステム（ＯＳ）であるＭＳ−ＤＯＳ／ＭＳ−Ｗｉｎｄｏｗｓ／ＭＳ−Ｗｉｎｄｏｗｓ９５，９８／ＭＳ−ＷｉｎｄｏｗｓＮＴで使用されるＦＡＴ型ディスクの記録フォーマットの例を示したものである。
【０００４】
ＦＡＴ型ディスクに限らず「ディスク」と呼ばれる記憶媒体は、セクタと呼ばれる単位で複数のブロックに分割され、ディスク上に記録されたデータはセクタ単位で読み書きが行われる。１セクタには、通常５１２バイト、もしくは１，０２４バイトのデータを記録できる。
【０００５】
１３０１は先頭の１セクタ（論理セクタ番号０）を示しており、一般にブートセクタと呼ばれている。ブートセクタ１３０１には、オペレーティングシステムをロードするためのブートプログラムや、後述するＦＡＴやルートディレクトリエントリを構成するセクタの個数などの情報が記録されている。
【０００６】
１３０２はＦＡＴであり、ファイルへのクラスタの割り当て（アロケーション）状況を記録する領域である。ＦＡＴ１３０２は、図１３に示すように２重化され（図１３のＦＡＴ１とＦＡＴ２）、ディスク上に連続して配置されている。つまり、ＦＡＴ１とＦＡＴ２には常に同じ内容のものが記録されている。
【０００７】
１３０３はルートディレクトリエントリである。ルートディレクトリエントリ１３０３の１つの項目は、３２バイトで構成され、各項目にはＦＡＴ型ディスクのルートディレクトリに存在するファイルやディレクトリ（サブディレクトリ）の名前、ファイルの大きさ（バイト単位で表されたファイルのサイズ）、後述するデータ領域においてディレクトリエントリ上のファイルに対応する実際のファイルの内容（データ本体）が記録されているクラスタ群の内、ファイルの先頭にあるデータが記録されたクラスタの番号（開始クラスタ番号）などの情報が記録されている。
【０００８】
１３０４はデータ領域であり、実際のファイルの内容（データ本体）やサブディレクトリに関する情報を記録する領域である。データ領域１３０４は、クラスタと呼ばれる単位で管理されている。クラスタとは、連続する複数のセクタを一つの単位とするもので、１クラスタは２のべき乗（１，２，４，８，１６，・・・）で表される個数のセクタで構成されている。以降では説明を簡単にするために、１クラスタは１セクタで構成されているものとする。
【０００９】
図１４は図１３のＦＡＴ１３０２領域に記録された内容の概念図である。ＦＡＴ１３０２の各項目１４０２は、データ領域１３０４のクラスタ番地１４０３と１対１に対応するようになっている。ＦＡＴ１３０２の各項目１４０２は、ファイルの読出時に正しい順番で、そのファイルを構成するクラスタ群の読出が行えるように、クラスタ群の並び順（ＦＡＴチェイン）を記録するために使われる。つまり、ＦＡＴ１３０２の各項目１４０２の内容には、次に読み出すべきクラスタ番地の値を順に記録して行き、データの最後となるクラスタには、それが最後のクラスタであることを表す値（例えば、ＦＦＦＦｈ）を記録する。以上によりファイルを構成するクラスタ群の順番を正しくつなげることができる。
【００１０】
図１４を参照してさらに具体的に説明すれば、例えば、あるルートディレクトリに存在するファイルの開始クラスタ番地１４０１が、ルートディレクトリエントリ１３０３に記録された情報より０００４ｈ番地であったとすると、ＦＡＴ項目１４０２の０００４ｈ番目の項目には、０００５ｈと書かれているので、続きのデータ（１４０３の‘ｂ’）がデータ領域１３０４の０００５ｈ番目のクラスタ番地に記録されていることが分かる。同様にして、ＦＡＴ項目１４０２の０００５ｈ番目の項目には０００Ａｈと書かれているので、さらに続きのデータ（１４０３の‘ｃ’）が０００Ａｈ番目のクラスタ番地に記録されていることが分かる。ＦＡＴ項目１４０２の０００Ａｈ番目の項目には、ＦＡＴチェインの終了を示すＦＦＦＦｈが書かれているので、データ領域１３０４の０００Ａｈ番目のクラスタ番地が最後のデータが含まれているクラスタ番地となる。尚、データ領域１３０４のクラスタの内、どのファイルにも使用されていないクラスタ（未使用クラスタ）に対応するＦＡＴ項目１４０２には、未使用を表す値として００００ｈが書かれている。
＜ＦＡＴファイルシステムにおけるデータの読み書き＞
次に、従来のＦＡＴファイルシステムにおいて、ＦＡＴ型ディスク上に存在するファイルをオープンし、そのファイルのデータを読み書きする場合の処理の流れを説明する。説明を簡単にするため、読み書きするファイルは、ルートディレクトリ上のものを対象とし、エラー処理の説明も省略する。
＜ファイルの読出処理＞
まず、ファイルの読出処理について説明する。
【００１１】
あるユーザプログラムからファイル名が指定され、そのファイルの読出が要求（ファイルオープン）されると、始めにルートディレクトリエントリ１３０３のデータを読み出し、ユーザプログラムから与えられたファイル名と一致するファイル名を含むエントリを検索する。ファイル名が一致するエントリが見つかると、そのエントリ項目からデータ本体が記録されているデータ領域１３０４の開始クラスタ番地とファイルサイズを取得する。データ領域１３０４の開始クラスタ番地に記録された実際のファイルデータを読み取ると、次に前述のＦＡＴ１３０２領域を読み出し、開始クラスタ番地に対応する位置に記録されたＦＡＴ項目のデータを解析し、続きのファイルデータが記録されているクラスタ番地を算出する。以下、同様にして、開始クラスタ番地を起点にＦＡＴチェインをたどり、最後のデータが含まれるクラスタ番地に至るまでファイルデータを次々に読み出して行く。
＜ファイルの新規作成処理＞
次に、データの書込処理の内、ファイルの新規作成処理について説明する。
【００１２】
まず、ファイルオープンが要求されると、ルートディレクトリエントリ１３０３のデータを読み出し、与えられたファイル名が既にルートディレクトリエントリ１３０３上に存在するものと重複しないことを確認する。ファイル名が重複していない場合、ルートディレクトリエントリ１３０３上に、この新規ファイル用のディレクトリエントリを作成する。次に、ＦＡＴ１３０２のＦＡＴ項目のデータを読み出して、未使用（００００ｈ）の値が記録されたＦＡＴ項目を検索する。未使用の値が記録されたＦＡＴ項目が見つかったらデータ領域１３０４の対応するクラスタ番地に、所望のデータを書き込む。それと同時に、ＦＡＴ１３０２において未使用クラスタとして見つけられたクラスタ番地に対応するＦＡＴ項目の値を未使用（００００ｈ）から使用中（ＦＦＦＦｈ）に書き換える。データ領域１３０４に書き込むべきデータが１クラスタ内では収まり切らない場合には、同様にして、さらにＦＡＴ１３０２上で未使用の値が記録されたＦＡＴ項目を検索し、そのＦＡＴ項目に対応するデータ領域１３０４のクラスタ番地にデータを書き込む。同時に、未使用クラスタとして見つけられたクラスタ番地に対応するＦＡＴ項目の値をＦＦＦＦｈに書き換える。この時、さらに加えて一つ前の処理で検索されたクラスタ番地に対応するＦＡＴ項目の値を、ＦＦＦＦｈから今回の処理で検索されたクラスタ番地に書き換える。この手順を繰り返すことによって、クラスタの並び順が次々に記録され、ＦＡＴチェインが完成する。
【００１３】
以上の手順により、全てのデータをデータ領域１３０４に書き込み、また、ＦＡＴ１３０２へのＦＡＴチェインの書込も終了したら、最後に先に確保した新規ファイル用のディレクトリエントリに、新規ファイル名、開始クラスタ番地、ファイルサイズなどの情報を記録する。このようにして、ファイルの新規作成が完了する。
＜既存ファイルへのデータ追加書込処理＞
既存ファイルへのデータ追加書込処理は、ファイルの読出処理と同様にして、ファイルオープンが要求されると、まず、開始クラスタ番地とＦＡＴ１３０２のデータからＦＡＴチェインを順にたどり最後のデータが記録されているクラスタ番地を得る。このクラスタには、既存のデータがクラスタのサイズ内の途中まで書き込まれている。従って、クラスタの途中まで埋められたデータの末尾に続けて追加書込対象のデータを書き込んで行く。追加書込対象のデータが、そのクラスタ内に収まり切らなかった場合には、ファイルの新規処理の場合と同様に、ＦＡＴ１３０２から未使用の値が記録されたＦＡＴ項目を検索し、データ領域１３０４の対応する未使用クラスタにデータを書き込むと同時に、対応するＦＡＴ項目を書き換え、ＦＡＴチェインを完成させる。
【００１４】
最後に、ルートディレクトリエントリ１３０３にデータ追加書込後のファイルサイズなどの情報を記録する。
＜既存ファイルへのデータ上書処理＞
既存ファイルへのデータ上書処理は、現在のＦＡＴチェインにより得られるクラスタの並び順にしたがって、開始クラスタ番地から順に各ＦＡＴ項目に対応するデータ領域１３０４のクラスタを所望のデータで上書きして行く。この時、既存ファイルのデータサイズが上書対象のファイルのデータサイズより大きい場合には、上書対象のファイルのデータの最終クラスタに対応するＦＡＴ項目の値にはＦＦＦＦｈを書き込む。また、上書きされる以前のＦＡＴチェインの内で上書対象のデータで埋められなかった余りのクラスタに対応するＦＡＴ項目の値については、未使用クラスタであることを示す００００ｈを書き込む。反対に、上書対象のファイルのデータサイズが既存ファイルのデータサイズよりも大きい場合には、上書きされる以前のＦＡＴチェインから得られるクラスタ全てに所望のデータを書き込んだ後、既存ファイルへのデータ追加書込処理と同様にして、ＦＡＴ１３０２上で未使用の値が記録されたＦＡＴ項目を検索し、そのＦＡＴ項目に対応するデータ領域１３０４の未使用クラスタにデータを書き込んで行く。
【００１５】
最後に、ルートディレクトリエントリ１３０３にデータ上書後のファイルサイズなどの情報を記録する。
【００１６】
【発明が解決しようとする課題】
しかしながら、上記従来のＦＡＴファイルシステムのように、あるファイルに割り当てられたクラスタの状況をＦＡＴ１３０２に記録して管理する方法では、ＦＡＴ１３０２とデータ領域１３０４が分離されている。また、あるファイルのデータ本体が記録されたクラスタもデータ領域１３０４上に散在するため、ファイルの読出を行う場合には、データ領域１３０４から１クラスタ分のデータを読み出す毎に、対応するＦＡＴ項目の読み出しと、次に読み出すクラスタを算出する処理を行う必要がある。また、ファイルへのデータ書込を行う場合にも、データを書き込むべきクラスタを検索するためにはＦＡＴ１３０２に散在するＦＡＴ項目を検索する必要がある。このように、従来のＦＡＴファイルシステムではＦＡＴ１３０２に記録された次のクラスタアドレスへのポインタを頼りに、ＦＡＴチェインをたどって行くという仕様のため、ファイルの読出／書込処理に負担がかかり、また、その処理に時間を要するという問題があった。
【００１７】
本発明は上記の問題点に艦みてなされたものであり、記憶媒体上に記憶されたデータへのアクセスを高速に行うことができる情報処理装置及びその方法、記録媒体を提供することを目的とする。
【００１８】
【課題を解決するための手段】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
記憶媒体に記憶しているファイルのファイル名と当該ファイルの先頭にあるデータを記憶している先頭クラスタのアドレスとを対応付けてエントリとして記憶するディレクトリエントリと、前記ファイルの１つが記憶されている複数のクラスタの並び順をチェインとして記憶するファイルアロケーションテーブルと、を前記記憶媒体上で管理する情報処理装置であって、
前記ディレクトリエントリのエントリに、前記チェイン上で前記先頭クラスタに連続する所定個数のクラスタを読み出すべき順序で読み出すために、該所定個数のクラスタのそれぞれのアドレスをその読出順で保持する拡張情報を書き込む書込手段と、
前記記憶媒体に記憶しているファイルにアクセスする際に、前記ディレクトリエントリと前記拡張情報とを参照して前記記憶媒体にアクセスする実行手段と
前記実行手段の読み出したデータが、アクセスするファイルの末尾のデータであるか否かを判定する判定手段とを備え、
前記拡張情報で前記読出順で保持されている前記所定個数のクラスタのアドレスそれぞれが示すクラスタから、その読出順に従ってデータを読み出して行き、その読出順の最後の読出順で読み出したデータが前記実行手段のアクセスするファイルの末尾のデータでないと前記判定手段が判定した際に、前記実行手段は前記最後の読出順で読み出したデータに続く次のデータを含むクラスタのアドレスを前記ファイルアロケーションテーブルから読み出す。
【００２０】
また、好ましくは、前記書込手段は、前記記憶媒体について前記ファイル名が記憶された領域の直前に前記拡張情報を書き込む。
【００２２】
また、好ましくは、前記書込手段は、前記エントリの先頭に該エントリが前記拡張情報を記憶していることを示すインデックスを付加する。
【００２４】
上記の目的を達成するための本発明による情報処理方法は以下の構成を備える。即ち、
記憶媒体に記憶しているファイルのファイル名と当該ファイルの先頭にあるデータを記憶している先頭クラスタのアドレスとを対応付けてエントリとして記憶するディレクトリエントリと、前記ファイルの１つが記憶されている複数のクラスタの並び順をチェインとして記憶するファイルアロケーションテーブルと、を前記記憶媒体上で管理する情報処理方法であって、
前記ディレクトリエントリのエントリに、前記チェイン上で前記先頭クラスタに連続する所定個数のクラスタを読み出すべき順序で読み出すために、該所定個数のクラスタのそれぞれのアドレスをその読出順で保持する拡張情報を書き込む書込工程と、
前記記憶媒体に記憶しているファイルにアクセスする際に、前記ディレクトリエントリと前記拡張情報とを参照して前記記憶媒体にアクセスする実行工程と
前記実行工程の読み出したデータが、アクセスするファイルの末尾のデータであるか否かを判定する判定工程とを備え、
前記拡張情報で前記読出順で保持されている前記所定個数のクラスタのアドレスそれぞれが示すクラスタから、その読出順に従ってデータを読み出して行き、その読出順の最後の読出順で読み出したデータが前記実行工程のアクセスするファイルの末尾のデータでないと前記判定工程が判定した際に、前記実行工程は前記最後の読出順で読み出したデータに続く次のデータを含むクラスタのアドレスを前記ファイルアロケーションテーブルから読み出す。
【００２５】
上記の目的を達成するための本発明による記録媒体は以下の構成を備える。即ち、
記憶媒体に記憶しているファイルのファイル名と当該ファイルの先頭にあるデータを記憶している先頭クラスタのアドレスとを対応付けてエントリとして記憶するディレクトリエントリと、前記ファイルの１つが記憶されている複数のクラスタの並び順をチェインとして記憶するファイルアロケーションテーブルと、を前記記憶媒体上で管理する情報処理を、コンピュータに機能させるためのプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記コンピュータを、
前記ディレクトリエントリのエントリに、前記チェイン上で前記先頭クラスタに連続する所定個数のクラスタを読み出すべき順序で読み出すために、該所定個数のクラスタのそれぞれのアドレスをその読出順で保持する拡張情報を書き込む書込手段と、
前記記憶媒体に記憶しているファイルにアクセスする際に、前記ディレクトリエントリと前記拡張情報とを参照して前記記憶媒体にアクセスする実行手段と
前記実行手段の読み出したデータが、アクセスするファイルの末尾のデータであるか否かを判定する判定手段として機能させ、
前記拡張情報で前記読出順で保持されている前記所定個数のクラスタのアドレスそれぞれが示すクラスタから、その読出順に従ってデータを読み出して行き、その読出順の最後の読出順で読み出したデータが前記実行手段のアクセスするファイルの末尾のデータでないと前記判定手段が判定した際に、前記実行手段は前記最後の読出順で読み出したデータに続く次のデータを含むクラスタのアドレスを前記ファイルアロケーションテーブルから読み出す。
【００２６】
【発明の実施の形態】
以下、図面を参照して本発明の好適な実施形態を詳細に説明する。
＜システム横成＞
本実施形態の説明で使用するＦＡＴ型ディスクの記録フォーマット、およびＦＡＴの構成は、従来例で述べた図１３、図１４と同じものであるので、その説明は省略する。
【００２７】
まず、本実施形態のＦＡＴファイルシステムを実現する情報処理装置の機能構成について、図１を用いて説明する。
【００２８】
図１は本実施形態の情報処理装置の機能構成を示す図である。
【００２９】
１０１は本ＦＡＴファイルシステムを利用するユーザプログラムである。１０２はＦＡＴファイルシステムを実現するＦＡＴファイルシステムプログラムである。１０３はユーザプログラム１０１からの要求を受付け、ファイル名などで指定されたファイルをオープン／クローズする処理や、新規ファイルの作成、既存ファイルの削除処理、ファイル空間上のどの位置から読出／書込操作を行うかを示すファイルポインタの管理などを行なうファイル管理部である。
【００３０】
１０４はディスクから読み出されたディレクトリエントリ情報を解析して、ユーザプログラム１０１から指示されたファイルの存在を検索したり、またファイルへの書込処理などの操作によって変化した最新のディレクトリエントリ情報をディスクに書き込むといったディレクトリ構造の管理を行うディレクトリエントリ管理部である。１０５はディスクから読み出されたＦＡＴの情報を解析して、読み書きの対象となるファイルのディスク上のクラスタアドレスを算出したり、ファイルのＦＡＴチェインを正しく形成してディスクに書き込む処理などを行うＦＡＴ管理部である。
【００３１】
１０６はデータの格納領域となる不図示のフロッピーディスクやハードディスク、またはフラッシュメモリカードといったディスク記憶媒体への読出／書込処理を行うディスクドライバ部である。
【００３２】
次に、上述の情報処理装置のハードウェア構成について、図２を用いて説明する。
【００３３】
図２は本実施形態の情報処理装置のハードウェア構成を示すブロック図である。
【００３４】
図２において、２０１はＣＰＵであり、上述のユーザプログラム１０１やＦＡＴファイルシステムプログラム１０２をロードして実行する。２０２はＲＡＭであり、上述のユーザプログラム１０１やＦＡＴファイルシステムプログラム１０２を格納するほか、ディスク上にあるデータの読出／書込の際にバッファとして使用されたり、各プログラムの動作時に使用する各種変数の退避保存用のワークエリアとして使用される。２０３はデータ格納領域となるディスクを有するディスク装置である。尚、ディスクには、フロッピーディスク、ハードディスク等の記憶媒体が含まれる。２０４はＣＰＵ２０１、ＲＡＭ２０２、ディスク装置２０３を相互に接続するシステムバスである。
【００３５】
次に、本実施形態のディレクトリエントリの各項目について、図３〜図５を用いて説明する。
【００３６】
図３〜図５は本実施形態のディレクトリエントリの各項目を示す図である。
【００３７】
尚、図３〜図５に示すディレクトリエントリの１エントリは、３２バイトで構成されているものとする。
【００３８】
図３は、個々のファイルのＦＡＴ情報をクラスタの割り当て順にしたがって記録するために使用されるディレクトリエントリの構造を示している。従来のＦＡＴ１３０２（図１３）と区別するため、以降では、便宜上このディレクトリエントリをＥＸＴ−ＦＡＴと呼ぶ。また、ＥＸＴ−ＦＡＴにおいて、ＦＡＴ項目に対応するものをＥＸＴ−ＦＡＴ項目と呼ぶ。
【００３９】
ＥＸＴ−ＦＡＴの先頭の１バイト（００ｈバイト目）には、後述する図４、図５の２種のディレクトリエントリと区別するため、また、従来のＦＡＴファイルシステムとの互換性を保つために、インデックスとしてビット７に１を立てたものが記録されている。０Ｂｈ〜０Ｄｈ、および１Ａｈ〜１Ｂｈは、従来のディレクトリエントリの構造と互換性を保つために予約領域とする。残りのスロットには、そのファイルに割り当てられたクラスタ番地が、下位のクラスタ番地から割り当て順にスロットに収まる分だけ記録されている。本実施形態では、クラスタ番地を１６ｂｉｔ（２バイト）値で表すものとする。従って、本実施形態のＥＸＴ−ＦＡＴには、１３クラスタ分のＦＡＴ情報を記録することができる。
【００４０】
図４は“ａｂｃｄｅｆｇｈｉｊｋｌｍｎ．ｘｙｚ”などといったいわゆるロングファイル名を記録するために使用されるディレクトリエントリの構造を示している。先頭の１バイト（００ｈバイト目）には、複数に分割されたロングファイル名のエントリが正しい順番に並ぶように、ディレクトリエントリの並び順を表すインデックス（０１ｈから始まる数値）が、０Ｂｈバイト目には属性として固定値０Ｆが、１Ａｈ〜１Ｂｈバイトには開始クラスタ番号として固定値００００Ｈがそれぞれ記録されている。ロングファイル名を記録する最後のディレクトリエントリには、最後であることを示すためにインデックスのビット６に１を立てる。０Ｃｈ〜０Ｄｈは予約領域である。残りのスロットには、下位アドレスから順に１文字ずつ、ロングファイル名をＵｎｉｃｏｄｅに変換したものが記録されている。
【００４１】
図５は前述のロングファイル名から所定の手段により、８文字の「名前」＋「．」（ドット）＋３文字の「拡張子」（例えば、“ａｃｂｄｅｆ~１．ｘｙｚ”）という形式（いわゆる８．３形式のショートファイル名）に自動的に生成されたファイル名などを記録するために使用されるディレクトリエントリの構造を示している。００ｈ〜０７ｈには「名前」、０８ｈ〜０Ａｈには「拡張子」が記録されている。「名前」または「拡張子」がそれぞれ８文字あるいは３文字に満たない場合には、下位アドレスの方向に文字を詰めて埋め、残りのスロットを空白（ＡＳＣＩＩ  Ｃｏｄｅの２０ｈ）で埋める。０Ｂｈにはファイルの属性が、０Ｅｈ〜１１ｈにはファイルの作成時刻と日付が、１２ｈ〜１３ｈにはファイルがアクセスされた日付が、１６ｈ〜１９ｈにはファイルを作成、あるいはファイルが更新された最新の時刻と日付が、１Ａｈ〜１Ｂｈにはファイルデータの開始クラスタ番号が、１Ｃｂ〜１Ｆｈにはファイルサイズがそれぞれ記録されている。０Ｃｈ〜０Ｄｈ、１４ｈ〜１５ｈは予約領域となっている。
【００４２】
図３〜図５の各ディレクトリエントリ項目で、いずれの用途にも使用されていない未使用なディレクトリエントリでは、未使用であることを示すために先頭の１バイトに００ｈを記録する。
【００４３】
次に、１ファイルに対するディレクトリエントリの構成について、図６を用いて説明する。
【００４４】
図６は本実施形態の１ファイルに対するディレクトリエントリの構成を示す図である。
【００４５】
図６では、特に、ディレクトリエントリ上で、図３〜図５の各ディレクトリエントリの項目がどのように配置されているかを示している。ある１つのファイルに対するディレクトリエントリは、図３〜図５の順で下位のアドレスから連続して並び、個々のファイルのディレクトリエントリ情報を形成している。
【００４６】
次に、本実施形態のディレクトリエントリの全体構成について、図７を用いて説明する。
【００４７】
図７は本実施形態のディレクトリエントリの全体構成を示す図である。
【００４８】
図７は、特に、ディレクトリエントリ全体を表し、前述の個々のファイルに対するディレクトリエントリ情報がどのように配置されているかの一例を示している。尚、本実施形態では、個々のファイルのディレクトリエントリ上での並び順は特に規定しない。
＜詳細動作説明＞
次に、本実施形態におけるＦＡＴファイルシステムの動作について、図９〜図１２を用いて説明する。尚、説明を簡単にするため読出／書込操作を行うファイルは、ＦＡＴ型ディスクのルートディレクトリ上にあるものを対象とする。またエラー処理についても省略する。
＜ファイルの読出処理＞
まず、ファイルの読出処理は、大きく分けて、読出対象のファイルの検索処理、検索されたファイルを実際に読み出すファイルの読出処理から構成される。特に、図８でファイルの検索処理、図９でファイルの読出処理を説明する。
【００４９】
ユーザプログラム１０１がファイルオープンを要求すると、ステップＳ８０１で、ファイル管理部１０３は、ファイルオープン対象のファイルを数値として表すためのファイルディスクリプタを確保する。続いて、ディスク上にユーザプログラム１０１で指定されたファイルを検索する。
【００５０】
ファイルの検索は、まず、検索対象のファイルがディレクトリエントリ上に存在するか否かを判定するために、各ディレクトリエントリを解析する。そして、ステップＳ８１５で、全ディレクトリエントリの解析が終了したか否かを判定する。全ディレクトリエントリの解析が終了した場合（ステップＳ８１５でＹＥＳ）、処理を終了する。一方、全ディレクトリエントリの解析が終了していない場合（ステップＳ８１５でＮＯ）、ステップＳ８１６に進み、１セクタ分のディレクトリエントリの解析を終了したか否かを判定する。１セクタ分のディレクトリエントリが解析が終了していない場合（ステップＳ８１６でＮＯ）、ステップＳ８１７に進み、ディレクトリエントリの読込位置を示すポインタを移動する。一方、１セクタ分のディレクトリエントリの解析が終了した場合（ステップＳ８１６でＹＥＳ）、ステップＳ８０２に進む。
【００５１】
ステップＳ８０２で、ルートディレクトリエントリ１３０３の先頭の１セクタ分のディレクトリエントリデータをＲＡＭ２０２上に確保されたメモリバッファに読み込む。次に、メモリバッファにはいくつかのファイルに対応するディレクトリエントリが読み込まれているため、ステップＳ８０３で、ディレクトリ管理部１０４は各ディレクトリエントリ項目の先頭の１バイトを比較し、ディレクトリエントリがＥＸＴ−ＦＡＴ情報を含むディレクトリエントリであるか否かを判定する。ディレクトリエントリがＥＸＴ−ＦＡＴ情報を含むディレクトリエントリでない場合（ステップＳ８０３でＮＯ）、ステップＳ８０６に進む。一方、ディレクトリエントリがＥＸＴ−ＦＡＴ情報を含むディレクトリエントリである場合、つまり、７ビット目に１が立っている場合（ステップＳ８０３でＹＥＳ）、ステップＳ８０４に進み、ディレクトリエントリがＥＸＴ−ＦＡＴ情報を含むディレクトリエントリと認識して、そのＥＸＴ−ＦＡＴ情報を変数に記憶する。続いて、ステップＳ８０５で、ディレクトリエントリの読込位置を示すポインタを移動する。
【００５２】
ステップＳ８０６で、現在のポインタの位置から３２バイト先にある次のディレクトリエントリの先頭１バイトを解析し、ディレクトリエントリがロングファイル名のディレクトリエントリであるか否かを判定する。ディレクトリエントリがロングファイル名のディレクトリエントリでない場合（ステップＳ８０６でＮＯ）、ステップＳ８１２に進む。一方、ディレクトリエントリがロングファイル名のディレクトリエントリである場合、つまり、６ビット目に１が立っている場合（ステップＳ８０６でＹＥＳ）、ステップＳ８０７に進み、ディレクトリエントリがロングファイル名のディレクトリエントリであると認識して、ロングファイル名を構築する。ステップＳ８０９で、ディレクトリエントリの読込位置を示すポインタを移動する。ステップＳ８１０で、ロングファイル名のディレクトリエントリが残っているか否かを判定する。残っている場合（ステップＳ８１０でＹＥＳ）、ステップＳ８０８に戻る。一方、残っていない場合（ステップＳ８１０でＮＯ）、ステップＳ８１１に進む。
【００５３】
このロングファイル名の構築は、ディレクトリエントリの先頭１バイトの下位５ビットからロングファイル名のエントリ数が分かるため、ステップＳ８０８〜ステップＳ８１０で、ロングファイル名のエントリ数の分、次々にエントリを解析しながらロングファイル名を構築する。そして、ステップＳ８１１で、そのロングファイル名を変数に記憶する。
【００５４】
ロングファイル名を構築し終えたら、ステップＳ８１２で、現在のポインタの位置から３２バイト先にある次のエントリの先頭１バイトを解析し、ディレクトリエントリがショートファイル名のディレクトリエントリであるか否かを判定する。ディレクトリエントリがショートファイル名のディレクトリエントリでない場合（ステップＳ８１２でＮＯ）、ステップＳ８１５に進む。一方、ディレクトリエントリがショートファイル名のディレクエントリである場合（ステップＳ８１２でＹＥＳ）、ステップＳ８１３に進み、ショートファイル名、ファイルの開始クラスタ番号、ファイルのサイズ等の情報を得て変数に記憶する。
【００５５】
以上のようにして、ルートディレクトリエントリにあるファイル名を取得し、ステップＳ８１４で、取得したファイル名と、ユーザプログラム１０１により指定されたファイル名と一致するか否かを判定する。ファイル名が一致する場合（ステップＳ８１４でＹＥＳ）、処理を終了する。一方、ファイル名が一致しない場合（ステップＳ８１４でＮＯ）、ステップＳ８１５に進む。
【００５６】
このようにして、ルートディレクトリエントリ上のデータを読み込み、指定されたファイル名と取得したファイル名が一致するか、またはルートディレクトリエントリ上のデータを全て読み出し、指定されたファイル名が存在するか否かを判定するための解析が終了するまで、上記処理を繰り返す。
【００５７】
次に、検索されたファイルの読出処理について、図９を用いて説明する。
【００５８】
まず、ステップＳ９０１で、ショートファイル名のディレクトリエントリから既に変数に記憶されたファイルの開始クラスタアドレスを用い、対応するクラスタのデータを読み込む。次に、読み込んだデータがデータの末尾であるか否かを判定する。末尾である場合（ステップＳ９０４でＹＥＳ）、処理を終了する。一方、末尾でない場合（ステップＳ９０４でＮＯ）、ステップＳ９０５に進み、指定されたサイズ分のファイルのデータの読出が終了したか否かを判定する。読出が終了した場合（ステップＳ９０５でＹＥＳ）、処理を終了する。一方、読出が終了していない場合（ステップＳ９０５でＮＯ）、ステップＳ９０６に進む。
【００５９】
ステップＳ９０６で、ＥＸＴ−ＦＡＴのＦＡＴチェイン情報が終了しているか否かを判定する。終了していない場合（ステップＳ９０６でＮＯ）、ステップＳ９０２に進み、既に変数に記憶されたＥＸＴ−ＦＡＴ情報から、開始クラスタアドレスに記録されたデータに続く次のデータを含むクラスタアドレスを読み取る。ステップＳ９０３で、読み取ったクラスタアドレスのデータを読み込む。
【００６０】
以降は、ＥＸＴ−ＦＡＴ情報の各項目を順にたどりながら、ユーザプログラム１０１で指定されたファイルのデータを終端までの読出が終了するか（ステップＳ９０４でＹＥＳ）、または、指定されたサイズ分のファイルのデータの読出が終了するまで（ステップＳ９０５でＹＥＳ）、データの読出動作を繰り返す。
【００６１】
一方、ステップＳ９０６において、ＥＸＴ−ＦＡＴのＦＡＴチェイン情報が終了している場合（ステップＳ９０６でＹＥＳ）、つまり、ＥＸＴ−ＦＡＴ情報に記録された各項目が示すクラスタアドレスのデータを全て読み込んだにもかかわらず、依然指定されたファイルのデータの末尾までデータを読み込んでいないか、または、指定されたサイズ分のファイルのデータの読出が終了していない場合、ステップＳ９０７に進み、ＥＸＴ−ＦＡＴ情報の最後に記録されたＥＸＴ−ＦＡＴ項目から、対応するＦＡＴ１３０２のＦＡＴ項目を読み出し、読出が完了しているデータに続く次のデータを含むクラスタアドレスをＦＡＴ１３０２から読み取る。
【００６２】
以降は、ＦＡＴファイルシステムの動作と同様にして、ＦＡＴチェインを順にたどり、読み取ったクラスタアドレスのデータを読み込んで行く。
＜ファイルの新規作成処理＞
次に、データの書込処理の内、ファイルの新規作成処理について、図１０を用いて説明する。
【００６３】
ファイルの新規作成処理では、前処理として、図８で説明したファイルの検索処理とほぼ同様の処理が行われる。異なる点としては、ファイルの検索の目的が、ユーザプログラム１０１から指定されたファイル名がディレクトリエントリ上に存在しないことを検索することである。従って、ファイルの新規作成処理では、同じファイル名のディレクトリエントリが見つけられるとエラーとなって、即座に、その処理は終了となる。ディレクトリエントリを全て検索した結果、同じファイル名のファイルが存在しなければ、図１０のステップＳ１００１に進む。
【００６４】
ステップＳ１００１以降の処理では、従来のＦＡＴファイルシステムにおけるファイルの新規作成処理とほぼ同様な処理を行う。すなわち、まず、ステップＳ１００１で、ディレクトリ管理部１０４が新現ファイル用のディレクトリエントリを確保する。このディレクトリエントリは、既に、図３〜図７で説明した通りであり、３つのディレクトリエントリをルートディレクトリエントリ１３０３上の連続した領域に確保する。
【００６５】
次に、ステップＳ１００２で、ＦＡＴ管理部１０５がＦＡＴ１３０２のデータを読み出して、未使用（００００ｈ）の値が記録されたＦＡＴ項目を検索することで、そのＦＡＴ項目に対応する未使用クラスタを検索する。未使用クラスタが見つかったら、ステップＳ１００３で、そのＦＡＴ項目の値を使用中を示すＦＦＦＦｈに書き換える。次に、ステップＳ１００６で、ＥＸＴ−ＦＡＴに空きがあるか否かを判定する。空きがない場合（ステップＳ１００６でＮＯ）、ステップＳ１００５に進む。一方、空きがある場合（ステップＳ１００６でＹＥＳ）、ステップＳ１００４に進む。
【００６６】
次に、ステップＳ１００４で、ＥＸＴ−ＦＡＴの先頭の項目（先頭のアドレス２バイト）の値を、使用中を示すＦＦＦＦｈに書き換える。次に、ステップＳ１００５で、データ領域１３０４の対応するクラスタ番地に、ユーザプログラム１０１から与えられた所望のデータを書き込む。
【００６７】
次に、書込対象のデータ全ての書込が終了したか否かを判定する。終了した場合（ステップＳ１００７でＹＥＳ）、ステップＳ１００８に進む。一方、終了していない場合（ステップＳ１００７でＮＯ）、つまり、データ領域１３０４に書込対象のデータが１クラスタ内では収まり切れず、依然データが残っている場合、ステップＳ１００２に戻り、同様にしてさらにＦＡＴ１３０２上で未使用の値が記録されたＦＡＴ項目を検索し、見つかったら対応するそのＦＡＴ項目の値をＦＦＦＦｈに書き換える（ステップＳ１００３）。
【００６８】
この時、ステップＳ１００３の処理では、さらに加えて前回の処理の検索されたＦＡＴ項目の値を、今回の処理で検索されたＦＡＴ項目に対応するクラスタ番地に書き換える。該当するＥＸＴ−ＦＡＴの各項目（現状態では、先頭の２バイト、および次の２バイト）に対しても同様な操作を行う（ステップＳ１００４）。また、ＥＸＴ−ＦＡＴに記録できる１３クラスタ分のＦＡＴが全て埋められた場合（ステップＳ１００６でＮＯ）、ステップＳ１００４は省略される。最後に対応するクラスタ番地にデータを書き込む（ステップＳ１００５）。
【００６９】
この処理を繰り返すことによって、クラスタの並び順が次々にＦＡＴ１３０２およびＥＸＴ−ＦＡＴに記録され、ＦＡＴチェインが完成する。
【００７０】
以上の処理により、書込対象のデータ全てのデータ領域１３０４への書込が終了した場合（ステップＳ１００７のＹＥＳ）、また、ＦＡＴ１３０２および、ＥＸＴ−ＦＡＴへのＦＡＴチェインの書込も終了したら、ステップＳ１００８で、ディレクトリ管理部１０４がルートディレクトリエントリ１３０３に新親ファイル名（ロングファイル名、ショートファイル名）、開始クラスタ番地、ファイルサイズなどの情報を記録する。このようにして、新規ファイルが作成される。
＜既存ファイルへのデータ追加書込処理＞
既存ファイルへのデータ追加書込処理について、図１１を用いて説明する。
【００７１】
既存ファイルへのデータ追加書込処理は、図９のファイルの読出処理と同様にしてファイルディスクリプタを確保し、ファイルオープンを要求した後、ステップＳ１１０１で、注目クラスタがファイルの最終クラスタであるか否かを判定する。最終クラスタである場合（ステップＳ１１０１でＹＥＳ）、ステップＳ１１０５に進む。一方、最終クラスタでない場合（ステップＳ１１０１でＮＯ）、ステップＳ１１０３に進む。ステップＳ１１０３で、ＥＸＴ−ＦＡＴのＦＡＴチェイン情報が終了しているか否かを判定する。終了していない場合（ステップＳ１１０３でＮＯ）、ステップＳ１１０２に進み、ＦＡＴ管理部１０５が開始クラスタ番地と、ＥＸＴ−ＦＡＴ項目からＦＡＴチェインを順にたどり最後のクラスタを得る。
【００７２】
一方、終了している場合（ステップＳ１１０３でＹＥＳ）、つまり、ユーザプログラム１０１で指定されたファイルのサイズがＥＸＴ−ＦＡＴに記録できるクラスタ分（本実施形態では１３クラスタ）を越えていた場合、ステップＳ１１０４に進み、ＦＡＴ１３０２からＦＡＴチェインを順にたどり最後のクラスタを得る。最終クラスタが得られたら、ステップＳ１１０５に進む。
【００７３】
最終クラスタには、既存のデータがクラスタのサイズ内の途中まで書き込まれている。従って、ステップＳ１１０５で、まず、クラスタの途中まで埋められたデータの末尾に続けて追加する所望のデータを書き込む。
【００７４】
次に、ステップＳ１１０６で、書込対象のデータ全ての書込が終了したか否かを判定する。書込が終了した場合（ステップＳ１１０６でＹＥＳ）、ステップＳ１１１１に進む。一方、書込が終了していない場合（ステップＳ１１０６でＮＯ）、つまり、追加する所望のデータがそのクラスタ内に収まり切らなかった場合、ファイルの新規作成処理と同様にステップＳ１１０７で、ＦＡＴ１３０２から未使用クラスタを検索する。未使用クラスタが見つかったら、ステップＳ１１０８で、未使用クラスタに対応するＦＡＴ１３０２の項目の値を、使用中を示すＦＦＦｈに書き換える。
【００７５】
次に、ステップＳ１１０８で、ＥＸＴ−ＦＡＴに空きがあるか否かを判定する。空きがない場合（ステップＳ１１０９でＮＯ）、ステップＳ１１０５に進む。一方、空きがある場合（ステップＳ１１０９でＹＥＳ）、ステップＳ１１１０に進み、ＥＸＴ−ＦＡＴの先頭の項目（先頭のアドレス２バイト）の値を、使用中を示すＦＦＦＦｈに書き換え、ＦＡＴチェインを完成させる。
【００７６】
その後、データ領域１３０４の未使用クラスタに所望のデータを書き込み（ステップＳ１１０５）、以上の処理を繰り返してデータを追加書込して行く。最後に、ステップＳ１１１１で、ディレクトリ管理部１０４がルートディレクトリエントリ１３０３にデータ追加書込後のファイルサイズなどの情報を記録する。
＜既存ファイルへのデータ上書処理＞
既存ファイルへのデータ上書処理について、図１２を用いて説明する。
【００７７】
既存のファイルへのデータ上書処理は、図９のファイルの読出処理と同様に、ファイルディスクリプタを確保し、ファイルオープンを要求した後、ステップＳ１２０９で、開始クラスタ番地から順に各ＥＸＴ−ＦＡＴ項目あるいはＦＡＴ項目に対応するデータ領域１３０４のクラスタを、ユーザプログラム１０１より指定された上書対象ののデータで上書する。ステップＳ１２１０で、上書対象のデータ全ての書込が終了したか否かを判定する。終了した場合（ステップＳ１２１０でＹＥＳ）、ステップＳ１２１１に進む。一方、終了していない場合（ステップＳ１２１０でＮＯ）、ステップＳ１２０１に進む。
【００７８】
ステップＳ１２０１で、注目クラスタがファイルの最終クラスタであるか否かを判定する。最終クラスタである場合（ステップＳ１２０１でＹＥＳ）、ステップＳ１２０５に進む。一方、最終クラスタでない場合（ステップＳ１２０１でＮＯ）、ステップＳ１２０３に進む。ステップＳ１２０３で、ＥＸＴ−ＦＡＴのＦＡＴチェイン情報が終了しているか否かを判定する。終了していない場合（ステップＳ１２０３でＮＯ）、ステップＳ１２０２進み、ＦＡＴ管理部１０５が開始クラスタ番地と、ＥＸＴ−ＦＡＴ項目からＦＡＴチェインを順にたどり最後のクラスタを得る。
【００７９】
一方、終了している場合（ステップＳ１２０３でＹＥＳ）、つまり、ユーザプログラム１０１で指定されたファイルのサイズがＥＸＴ−ＦＡＴに記録できるクラスタ分（本実施形態では１３クラスタ）を越えていた場合、ステップＳ１２０４に進み、ＦＡＴ１３０２からＦＡＴチェインを順にたどり最後のクラスタを得る。最終クラスタが得られたら、ステップＳ１２０５に進む。
【００８０】
最終クラスタには、既存のデータがクラスタのサイズ内の途中まで書き込まれている。従って、ステップＳ１１０５で、まず、クラスタの途中まで埋められたデータの末尾に続けて追加する所望のデータを書き込む。
【００８１】
ステップＳ１２０５で、ＦＡＴ１３０２から未使用の値が記録されたＦＡＴ項目を検索することで、そのＦＡＴ項目に対応する未使用クラスタを検索する。未使用クラスタが見つかったら、ステップＳ１２０６で、そのＦＡＴ項目の値を使用中を示すＦＦＦＦｈに書き換える。
【００８２】
次に、ステップＳ１２０７で、ＥＸＴ−ＦＡＴに空きがあるか否かを判定する。空きがない場合（ステップＳ１２０７でＮＯ）、ステップＳ１２０９に進む。一方、空きがある場合（ステップＳ１２０７でＹＥＳ）、ステップＳ１２０８に進み、ＥＸＴ−ＦＡＴエントリの先頭の項目（先頭のアドレス２バイト）の値を、使用中を示すＦＦＦＦｈに書き換え、ＦＡＴチェインを完成させる。
【００８３】
そして、ステップＳ１２１０において、書込対象のデータ全ての書込が終了した場合、つまり、既存のファイルのデータサイズが上書対象のファイルのデータサイズより大きい場合、ステップＳ１２１１で、ＦＡＴ管理部１０５は上書対象のファイルのデータの最終クラスタに対応するＥＸＴ−ＦＡＴ項目あるいはＦＡＴ１３０２項目の値を、使用中を示すＦＦＦＦｈに書き換える。また、上書される以前のＦＡＴチェインの内で上書するデータで埋められなかった余りのクラスタに対応するＥＸＴ−ＦＡＴ項目あるいはＦＡＴ１３０２項目の値を、未使用クラスタであることを示す００００ｈに書き換える。そして、ステップＳ１２１２で、ディレクトリ管理部１０４がルートディレクトリエントリ１３０３にデータ上書き終了後のファイルサイズなどの情報を記録する。
【００８４】
以上説明したように、本実施形態によれば、ＦＡＴファイルシステムは、個々のファイルのディレクトリエントリ上にＥＸＴ−ＦＡＴと呼ぶＦＡＴチェインの一部を記録する領域を設ける。そして、ファイルの読出／書込等の操作に伴うＦＡＴチェインの読出時には、ＥＸＴ−ＦＡＴに記録されたＦＡＴチェインを優先的に使用する。これにより、ＦＡＴ上のＦＡＴチェインを参照しなくても、ＥＸＴ−ＦＡＴに記録されたＦＡＴチェインを参照することで、操作対象のデータに対しアクセスことができる。これにより、操作対象のデータの解析に要する時間を短縮し、従来のＦＡＴファイルシステムとの互換性を保ちながら、ＦＡＴチェインの読出を高速に行うことができる。
【００８５】
尚、本発明は、複数の機器（例えばホストコンピュータ、インタフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００８６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００８７】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００８９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９０】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９１】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した図８〜図１２に示すフローチャートに対応するプログラムコードが格納されることになる。
【００９２】
【発明の効果】
以上説明したように、本発明によれば、記憶媒体上に記憶されたデータへのアクセスを高速に行うことができる情報処理装置及びその方法、記録媒体を提供できる。
【図面の簡単な説明】
【図１】本実施形態の情報処理装置の機能構成を示す図である。
【図２】本実施形態の情報処理装置のハードウェア構成を示すブロック図である。
【図３】本実施形態のディレクトリエントリの各項目を示す図である。
【図４】本実施形態のディレクトリエントリの各項目を示す図である。
【図５】本実施形態のディレクトリエントリの各項目を示す図である。
【図６】本実施形態の１ファイルに対するディレクトリエントリの構成を示す図である。
【図７】本実施形態のディレクトリエントリの全体構成を示す図である。
【図８】本発明の実施形態のファイルの検索処理を示すフローチャートである。
【図９】本発明の実施形態のファイルの読出処理を示すフローチャートである。
【図１０】本発明の実施形態のファイルの新規作成処理を示すフローチャートである。
【図１１】本発明の実施形態の既存ファイルへのデータ追加書込処理を示すフローチャートである。
【図１２】本発明の実施形態の既存ファイルへのデータ上書処理を示すフローチャートである。
【図１３】ＦＡＴ型ディスクの記録フォーマットの一例を示す図である。
【図１４】本発明の実施形態のＦＡＴ型ディスクのＦＡＴ領域の概念を示す図である。
【符号の説明】
１０１  ユーザプログラム
１０２  ＦＡＴファイルシステムプログラム
１０３  ファイル管理部
１０４  ディレクトリ管理部
１０５  ＦＡＴ管理部
１０６  ディスクドライバ部
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ディスク装置
２０４  システムバス
【図１】
0004434379.tif 000002
【図２】
0004434379.tif 000003
【図３】
0004434379.tif 000004
【図４】
0004434379.tif 000005
【図５】
0004434379.tif 000006
【図６】
0004434379.tif 000007
【図７】
0004434379.tif 000008
【図８】
0004434379.tif 000009
【図９】
0004434379.tif 000010
【図１０】
0004434379.tif 000011
【図１１】
0004434379.tif 000012
【図１２】
0004434379.tif 000013
【図１３】
0004434379.tif 000014
【図１４】
0004434379.tif 000015