(57)【要約】【課題】ファイルアクセス処理を効率化するファイルアクセスプログラム、ファイルアクセス方法を提供することにある。【解決手段】ファイルアクセス処理をコンピュータに実行させるファイルアクセスプログラムであって、前記ファイルアクセス処理は、データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、前記クラスタ管理テーブルは、第１のクラスタと前記第１のクラスタに連鎖する後続の第２のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第１のクラスタに対応して第１の管理情報を有し、前記第１、第２のクラスタが不連続のアドレスに位置する場合に、前記第１のクラスタに対応して第２の管理情報を有する第１のテーブルと、前記不連続のアドレスに位置する前記第１、第２のクラスタのクラスタ識別情報を有する第２のテーブルとを有する。【選択図】図８
2015121925.tif 000002
【特許請求の範囲】
【請求項１】
ファイルアクセス処理をコンピュータに実行させるファイルアクセスプログラムであって、
前記ファイルアクセス処理は、
データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、
前記クラスタ管理テーブルは、第１のクラスタと前記第１のクラスタに連鎖する後続の第２のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第１のクラスタに対応して第１の管理情報を有し、前記第１、第２のクラスタが不連続のアドレスに位置する場合に、前記第１のクラスタに対応して第２の管理情報を有する第１のテーブルと、前記不連続のアドレスに位置する前記第１、第２のクラスタのクラスタ識別情報を有する第２のテーブルとを有するファイルアクセスプログラム。
【請求項２】
請求項１において、
前記第１のテーブルは、さらに、前記ファイルのデータを記憶しない第３のクラスタに対応して第３の管理情報を有し、前記ファイルの末尾の前記データを記憶する第４のクラスタに対応して第４の管理情報を有するファイルアクセスプログラム。
【請求項３】
請求項２において、
前記第１のテーブルは、さらに、前記第１乃至第４のクラスタと異なる第５のクラスタに対応して前記第２の管理情報を有し、
前記第２のテーブルは、さらに、前記第５のクラスタのクラスタ識別情報と、前記第５のクラスタの状態情報を有するファイルアクセスプログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記ファイルアクセス処理は、さらに、
前記複数のクラスタに対応して前記連鎖情報として前記後続のクラスタ識別情報を有するファイルアロケーションテーブル（以下、ＦＡＴ）を、前記クラスタ管理テーブルに変換する変換工程を有するファイルアクセスプログラム。
【請求項５】
請求項４において、
前記変換工程では、記憶媒体の装着を検知したときに、前記検知した記憶媒体の前記ＦＡＴを前記クラスタ管理テーブルに変換し、前記検知した記憶媒体の取り外しを検知したときに、前記クラスタ管理テーブルを前記ＦＡＴに逆変換するファイルアクセスプログラム。
【請求項６】
請求項４において、
前記クラスタ管理テーブルは第１の記憶領域に記憶され、
前記ＦＡＴは、前記第１の記憶領域よりアクセスが遅い第２の記憶領域に記憶されるファイアクセスプログラム。
【請求項７】
請求項６において、
前記変換工程では、前記第１の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第１の記憶領域の前記クラスタ管理テーブルを前記ＦＡＴに逆変換し前記第２の記憶領域に記憶させると共に、前記第２の記憶領域の前記アクセス対象のクラスタのエントリを含む前記ＦＡＴを前記クラスタ管理テーブルに変換し前記第１の記憶領域に読み出すファイルアクセスプログラム。
【請求項８】
請求項６において、
前記変換工程では、前記第１の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第１の記憶領域の前記クラスタ管理テーブルを前記第２の記憶領域に記憶させると共に、前記第２の記憶領域の前記アクセス対象のクラスタのエントリを含む前記ＦＡＴを前記クラスタ管理テーブルに変換し前記第１の記憶領域に読み出した後、前記第２の記憶領域に記憶された前記クラスタ管理テーブルを前記ＦＡＴに逆変換するファイルアクセスプログラム。
【請求項９】
請求項４において、
前記クラスタ管理テーブルは、第１の記憶領域、及び、前記第１の記憶領域よりアクセスが遅い第２の記憶領域に記憶され、
前記変換工程では、前記第１の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第１の記憶領域の前記クラスタ管理テーブルを前記第２の記憶領域に記憶させると共に、前記第２の記憶領域の前記アクセス対象のクラスタのエントリを含む前記クラスタ管理テーブルを前記第１の記憶領域に読み出すファイルアクセスプログラム。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第１のクラスタと連続するアドレスに位置する前記第２のクラスタに書き込むとき、前記第１のクラスタの前記第１のテーブルに前記第１の管理情報を記憶させ、前記第１のクラスタと連続しないアドレスに位置する前記第２のクラスタに書き込むとき、前記第１のクラスタの前記第１のテーブルに前記第２の管理情報を記憶させると共に、前記第２のテーブルに前記第１、第２のクラスタのクラスタ識別情報を記憶させるファイルアクセスプログラム。
【請求項１１】
請求項１乃至９のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第２のクラスタから読み出すとき、前記第１のテーブルに前記第１のクラスタに対応して前記第１の管理情報が記憶される場合に、前記第１のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、前記第１のテーブルに前記第１のクラスタに対応して前記第２の管理情報が記憶される場合に、前記第２のテーブルを参照し、前記第１のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出すファイルアクセスプログラム。
【請求項１２】
請求項１乃至１１のいずれかにおいて、
前記第１のテーブルが有する管理情報のサイズは、２ビットであるファイルアクセスプログラム。
【請求項１３】
データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、
前記クラスタ管理テーブルは、第１のクラスタと前記第１のクラスタに連鎖する後続の第２のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第１のクラスタに対応して第１の管理情報を有し、前記第１、第２のクラスタが不連続のアドレスに位置する場合に、前記第１のクラスタに対応して第２の管理情報を有する第１のテーブルと、前記不連続のアドレスに位置する前記第１、第２のクラスタのクラスタ識別情報を有する第２のテーブルとを有するファイルアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルアクセスプログラム、ファイルアクセス方法に関する。
【背景技術】
【０００２】
ＦＡＴ（File Allocation Tables）形式のファイルシステムでは、ファイルデータが複数のクラスタに分割して記憶され、クラスタ間の連鎖情報に基づいてファイルのデータが管理される。ＦＡＴ形式のファイルシステムは、ブートセクタ領域、ＦＡＴ領域、ファイル/ディレクトリ領域によって構成される（例えば、特許文献１、２）。
【０００３】
ブートセクタ領域は、記憶媒体全体の情報（記憶媒体の容量、クラスタサイズ等）を有する。ファイル/ディレクトリ領域は、ディレクトリエントリ及びファイルのデータを有する。ファイル/ディレクトリ領域は、単位領域であるクラスタに分割され、管理される。ディレクトリエントリは、ファイル名やファイルサイズ等の情報を有する。また、ＦＡＴ領域は、ファイルのデータを構成するクラスタの連鎖情報を有する。
【０００４】
具体的に、ＦＡＴ領域は、クラスタ毎に、クラスタの管理情報を有するＦＡＴエントリを有する。対応するクラスタの後続データがある場合、管理情報は、後続データが記憶されるクラスタの識別番号を示す。また、管理情報は、対応するクラスタの後続データがない場合にＥＯＣ (End Of Cluster)を示し、対応するクラスタにデータが記憶されない場合に空きを示す値を示す。また、管理情報は、対応するクラスタが不良クラスタである場合に不良クラスタを示す。
【０００５】
また、ＦＡＴ形式には、例えば、ＦＡＴ１２形式、ＦＡＴ１６形式、ＦＡＴ３２形式、ｅｘＦＡＴ形式等の種別がある。ＦＡＴ形式の種別に応じて、ＦＡＴエントリのサイズが異なる。例えば、ＦＡＴ１２形式の各ＦＡＴエントリのサイズは１２ｂｉｔであって、ＦＡＴ１６形式の各ＦＡＴエントリのサイズは１６ｂｉｔである。また、ＦＡＴ３２形式及びｅｘＦＡＴ形式の各ＦＡＴエントリのサイズは３２ｂｉｔである。
【０００６】
ＦＡＴエントリのサイズの拡張に伴って、管理可能なクラスタ数が増加することにより、管理可能な記録媒体の最大サイズが大きくなる。例えば、ＦＡＴ３２形式のファイルシステムは、ＦＡＴ１６形式のファイルシステムに対して、より大きなサイズの記録媒体を管理可能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−０３０９６９号公報
【特許文献２】特開２００４−０１３２７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ファイルアクセスプログラムは、全てのＦＡＴ形式の種別に対応する必要があるため、ファイルのアクセス処理が複雑化すると共に、プログラムの保守工数も増加する。また、ＦＡＴエントリのサイズの拡張に伴ってＦＡＴ全体のサイズが大きくなる。このため、ファイルアクセスプログラムが、キャッシュメモリにＦＡＴエントリを読み込んでアクセスする場合、キャッシュメモリに保持可能なＦＡＴエントリの割合が減少し、ＦＡＴエントリのキャッシュヒット率が低下する。したがって、クラスタの検索効率が低下し、ファイルのアクセス効率が低下する。
【０００９】
１つの側面は、本発明は、ファイルアクセス処理を効率化するファイルアクセスプログラム、ファイルアクセス方法を提供する。
【課題を解決するための手段】
【００１０】
第１の側面は、ファイルアクセス処理をコンピュータに実行させるファイルアクセスプログラムであって、前記ファイルアクセス処理は、データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、前記クラスタ管理テーブルは、第１のクラスタと前記第１のクラスタに連鎖する後続の第２のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第１のクラスタに対応して第１の管理情報を有し、前記第１、第２のクラスタが不連続のアドレスに位置する場合に、前記第１のクラスタに対応して第２の管理情報を有する第１のテーブルと、前記不連続のアドレスに位置する前記第１、第２のクラスタのクラスタ識別情報を有する第２のテーブルとを有する。
【発明の効果】
【００１１】
第１の側面によれば、第１のクラスタと第１のクラスタに連鎖する後続の第２のクラスタとがデータ領域内の連続するアドレスに位置する場合に第１の管理情報を、不連続のアドレスに位置する場合に第２の管理情報を有する第１のテーブルと、不連続のアドレスに位置する第１、第２のクラスタのクラスタ識別情報を有する第２のテーブルとに基づいて、ファイルにアクセスすることによって、ファイルアクセス処理を効率化する。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態例におけるファイルアクセス装置の一例について説明する図である。
【図２】本実施の形態例におけるファイルアクセス装置におけるソフトウェアの構成の一例を説明する図である。
【図３】ＦＡＴ形式のファイルシステムの概要を説明する例図である。
【図４】ＦＡＴ形式のファイルシステムの種別の概要を説明する図である。
【図５】ＦＡＴ２、及び、不連続クラスタリストの概要を説明する図である。
【図６】具体例における２つのファイル（ファイル１、２）のデータを構成するクラスタの連鎖状態を例示する図である。
【図７】ＦＡＴ１２形式、ＦＡＴ１６形式、ＦＡＴ３２形式の各ＦＡＴの具体例を示す図である。
【図８】ＦＡＴ２及び不連続クラスタリストの具体例を説明する図である。
【図９】一般的な記憶媒体のマウント時における処理を説明するフローチャート図である。
【図１０】本実施の形態例における記憶媒体のマウント時における処理を説明するフローチャート図である。
【図１１】ＦＡＴをＦＡＴ２及び不連続クラスタリストに変換する処理を説明するフローチャート図である。
【図１２】ＦＡＴ２及び不連続クラスタリストを、ＦＡＴに逆変換する処理を説明するフローチャート図である。
【図１３】一般的な記憶媒体からのデータ読み出し処理を説明するフローチャート図である。
【図１４】一般的な記憶媒体からのデータ書き込み処理を説明するフローチャート図である。
【図１５】本実施の形態例における記憶媒体からのファイルの読み出し処理を説明するフローチャート図である。
【図１６】本実施の形態例における記憶媒体へのファイルの書き込み処理を説明するフローチャート図である。
【図１７】第２の実施の形態例におけるＦＡＴ２及び不連続クラスタリストの格納場所を説明する図である。
【図１８】第２の実施の形態例における記憶媒体からのファイルの読み出し処理を説明するフローチャート図である。
【図１９】第２の実施の形態例における記憶媒体へのファイルの書き込み処理を説明するフローチャート図である。
【図２０】記憶媒体上のＦＡＴ２の書き戻し処理を説明するフローチャート図である。
【図２１】第３の実施の形態例におけるＦＡＴ２及び不連続クラスタリストの格納場所を説明する図である。
【発明を実施するための形態】
【００１３】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１４】
［ファイルアクセス装置の構成］
図１は、本実施の形態例におけるファイルアクセス装置の一例について説明する図である。図１のファイルアクセス装置は、例えば、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、ＲＯＭ（Read Only Memory）１３、表示部１４、入力部１５、メディアアクセス装置１６、二次記憶装置１７を有する。各部は、バス１８を介して相互に接続される。表示部１４は、例えば、ディレスプレイであって、入力部１５はキーボードやマウスである。メディアアクセス装置１６は、二次記憶装置１７へのアクセスを制御する装置である。ＲＯＭ１３には、例えば、本実施の形態例におけるファイルアクセスプログラムＰＲが記憶される。ファイルアクセスプログラムＰＲは、ＣＰＵ１１と協働することによって、本実施の形態例におけるファイルアクセス処理を実現する。
【００１５】
また、本実施の形態例において、ＲＡＭ１２は、例えば、ＦＡＴ(File Allocation Table)２ｔ１と不連続クラスタリストｔ２とを有する。ＦＡＴ２ｔ１、及び、不連続クラスタリストｔ２の詳細については後述する。二次記憶装置１７は、例えば、ＳＤメモリーカードやハードディスク等の記憶媒体である。二次記憶装置１７に記憶されるファイルｄｔは、二次記憶装置１７に対応するＦＡＴ形式のファイルシステムに基づいて記憶される。
【００１６】
［ソフトウェアの構成］
図２は、本実施の形態例におけるファイルアクセス装置におけるソフトウェアの構成の一例を説明する図である。図１に図示していないが、各ソフトウェアは、例えば、ファイルアクセス装置のＲＯＭ１３等に記憶される。
【００１７】
図２のソフトウェアは、例えば、アプリケーション２１、動画編集ライブラリ２２、ファイルシステムソフトウェア２３、メディアドライバ２４を有する。本実施の形態例におけるファイルアクセスプログラムＰＲ（図１）は、ファイルシステムソフトウェア２３の一部のプログラムである。また、図２のハードウェアは、メディアアクセス装置１６（図１）、メディア（二次記憶装置）１７（図１）を有する。
【００１８】
動画編集等を行うアプリケーション２１は、例えば、ユーザによる操作を受け付けると、ユーザの操作に対応する指示情報を生成し、動画編集ライブラリ２２に通知する。例えば、指示情報は、二次記憶装置１７に記憶されたファイルに対するデータの挿入処理、データの除去処理、ファイル間のデータの移動処理等を指示する情報である。そして、動画編集ライブラリ２２は、指示情報をファイルシステムソフトウェア２３のインタフェースに合わせて変換し、ファイルシステムソフトウェア２３に通知する。ファイルシステムソフトウェア２３は、通知された指示情報に基づいて、メディアドライバ２４を介して、二次記憶装置１７のファイルｄｔにアクセスする。
【００１９】
メディアアクセス装置１６は、メディアドライバ２４から入力される命令に基づいて、二次記憶装置１７に記憶されるファイルｄｔのデータに対する制御を行う。前述したとおり、本実施の形態例において、二次記憶装置１７はＦＡＴ形式に基づいてフォーマットされる。
【００２０】
続いて、ＦＡＴ形式のファイルシステムの概要を説明する。
【００２１】
［ＦＡＴ形式のファイルシステム］
図３は、ＦＡＴ形式のファイルシステムの概要を説明する例図である。図３の（Ａ）に示すように、ＦＡＴ形式のファイルシステムは、例えば、ブートセクタ領域Ｘ１、ＦＡＴ領域Ｘ２、ファイル/ディレクトリ領域Ｘ３の３つの領域に基づいて構成される。ブートセクタ領域Ｘ１は、二次記憶装置１７の容量やクラスタの単位サイズ等の二次記憶装置１７に係る情報を有する。ブートセクタ領域Ｘ１は、例えば、５１２バイトのセクタ単位に基づいて管理される。
【００２２】
ファイル/ディレクトリ領域Ｘ３は、ディレクトリエントリと呼ばれるファイル情報と、ファイルのデータとを有する。ファイル/ディレクトリ領域Ｘ３は、セクタより一回りサイズの大きいクラスタ単位（セクタサイズの２のｎ乗倍サイズ）に管理される。ディレクトリエントリは、例えば、各ファイルについて、ファイル名、拡張子、ファイルサイズ、データが記憶される先頭クラスタの番号等のファイル情報を有する。
【００２３】
ＦＡＴ領域Ｘ２は、ファイル/ディレクトリ領域Ｘ３内の各クラスタに対応して管理情報を有するＦＡＴエントリを有する。対応するクラスタにデータが記憶され、後続のデータがある場合、管理情報は、後続のデータが記憶されるクラスタのクラスタ番号を示す。また、対応するクラスタにデータが記憶され、後続のデータがない場合、管理情報は末端（ＥＯＣ：End Of Cluster）を示す。また、対応するクラスタにデータが記憶されない場合の管理情報は空きを示し、対応するクラスタが破損している場合の管理情報は不良クラスタを示す。なお、０番目と１番目のＦＡＴエントリには、予約領域を示す値が記憶される。
【００２４】
前述したとおり、ディレクトリエントリは、ファイルの最初のデータを格納する先頭クラスタのクラスタ番号を有する。そして、先頭クラスタのＦＡＴエントリは、次に連鎖するクラスタのクラスタ番号を有する。即ち、ＦＡＴ領域Ｘ２は、ファイルのデータを構成するクラスタの連鎖情報を有する。
【００２５】
図３の（Ｂ）は、ファイル（この例では、ファイル１）ｄｔのデータを構成するクラスタの連鎖構造を例示する図である。図３の（Ｂ）における正方形はクラスタを示し、正方形内に記述される番号はクラスタ番号を示す。図３の（Ｂ）に示すように、ファイル１ｄｔのデータは、クラスタ番号３のクラスタ（以下、クラスタ３）を先頭として、クラスタ４、クラスタ５、クラスタ１２、クラスタ１３に順次記憶される。したがって、図３の（Ａ）のファイル/ディレクトリ領域Ｘ３のディレクトリエントリは、ファイル１の先頭クラスタがクラスタ３である旨の情報を有する。また、ＦＡＴ領域Ｘ２のクラスタ番号３のＦＡＴエントリはクラスタ番号「４」を、クラスタ番号４のＦＡＴエントリは、クラスタ番号「５」を有する。そして、クラスタ番号１３のＦＡＴエントリは、最後尾のクラスタであることを示す情報「末端（ＥＯＣ）」を示す値を有する。
【００２６】
また、図３に示すＦＡＴ形式のファイルシステムには、例えば、ＦＡＴ１２形式、ＦＡＴ１６形式、ＦＡＴ３２形式、ｅｘＦＡＴ形式等の種別がある。ＦＡＴ形式の種別に応じてＦＡＴエントリのサイズが異なる。ここで、ＦＡＴ形式のファイルシステムの種別の概要を説明する。
【００２７】
［ＦＡＴ形式のファイルシステムの種別］
図４は、ＦＡＴ形式のファイルシステムの種別の概要を説明する図である。図４は、ＦＡＴ１２形式、ＦＡＴ１６形式、ＦＡＴ３２形式、ｅｘＦＡＴ形式のファイルシステムを採用する各ＳＤカードａ１〜ｄ１と、ＦＡＴ領域Ｘ２におけるＦＡＴｆｔａ〜ｆｔｄ（図３）を例示する。
【００２８】
図４のＦＡＴｆｔａは、ＦＡＴ１２形式のファイルシステムにおけるＦＡＴである。ＦＡＴｆｔａが有する各ＦＡＴエントリのサイズは、１２ｂｉｔである。ＦＡＴ１２形式のファイルシステムにおいて管理可能なクラスタの上限数は、１２ｂｉｔで表現可能な数に対応する。例えば、ＦＡＴ１２形式のファイルシステムの規格に基づく記憶媒体が管理可能な容量の最大サイズは、６４ＭＢである。このため、容量が３２ＭＢのＳＤカードａ１は、ＦＡＴ１２形式のファイルシステムに基づいてフォーマットされる。
【００２９】
図４のＦＡＴｆｔｂは、ＦＡＴ１６形式のファイルシステムにおけるＦＡＴである。ＦＡＴｆｔｂが有する各ＦＡＴエントリのサイズは１６ｂｉｔであって、ＦＡＴ１６形式のファイルシステムの規格に基づく記憶媒体が管理可能な容量の最大サイズは、例えば、２ＧＢである。このため、容量が１ＧＢのＳＤカードｂ１は、ＦＡＴ１６形式のファイルシステムに基づいてフォーマットされる。
【００３０】
また、図４のＦＡＴｆｔｃは、ＦＡＴ３２形式のファイルシステムにおけるＦＡＴである。ＦＡＴｆｔｃが有する各ＦＡＴエントリのサイズは３２ｂｉｔであって、ＦＡＴ３２形式のファイルシステムの規格（例えば、ＳＤＨＣ：SD High-Capacity）に基づく記憶媒体が管理可能な容量の最大サイズは、例えば、３２ＧＢである。このため、容量が８ＧＢのＳＤカードｃ１は、ＦＡＴ３２形式のファイルシステムに基づいてフォーマットされる。同様にして、ｅｘＦＡＴ形式のファイルシステムにおけるＦＡＴｆｔｄが有する各ＦＡＴエントリのサイズは３２ｂｉｔであって、ｅｘＦＡＴ形式のファイルシステムの規格（例えば、ＳＤＸＣ：SD eXtended Capacity）に基づく記憶媒体が管理可能な容量の最大サイズは、例えば、２ＴＢである。このため、容量が６４ＧＢのＳＤカードｃ１は、ｅｘＦＡＴ形式のファイルシステムに基づいてフォーマットされる。
【００３１】
図４に示すように、ＦＡＴエントリのサイズの拡張に伴い、ファイルシステムにおいて管理可能な容量の最大サイズが増加する。一方、図４に示すように、ＦＡＴエントリのサイズの拡張に伴って、ＦＡＴｆｔａ〜ｆｔｄのサイズも増加する。ＦＡＴｆｔａ〜ｆｔｄの一部をＲＡＭ１２等のキャッシュメモリに読み込んでファイルにアクセスする場合、ＦＡＴエントリのサイズの拡張に伴って、キャッシュメモリに保持可能なＦＡＴエントリの割合が減少し、キャッシュヒット率が低下する。これにより、クラスタの検索効率が低下し、ファイルのアクセス効率が低下する場合がある。
【００３２】
［第１の実施の形態例］
そこで、本実施の形態例におけるファイルアクセス処理は、クラスタの連鎖情報を有するクラスタ管理テーブルに基づいて、クラスタに分割して記憶されるファイルにアクセスする。クラスタ管理テーブルは、第１のクラスタと第１のクラスタに連鎖する後続の第２のクラスタとがデータ領域内の連続するアドレスに位置する場合に、第１のクラスタに対応して第１の管理情報を有し、第１、第２のクラスタが不連続のアドレスに位置する場合に、第１のクラスタに対応して第２の管理情報を有するＦＡＴ２（第１のテーブル）ｔ１と、不連続のアドレスに位置する第１、第２のクラスタのクラスタ識別情報を有する不連続クラスタリスト（第２のテーブル）ｔ２とを有する。
【００３３】
つまり、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ形式のファイルシステムの各ＦＡＴｆｔに基づいて生成された、複数の種別のＦＡＴ形式に共通のＦＡＴ２ｔ１及び不連続クラスタリストｔ２に基づいて、ファイル/ディレクトリ領域Ｘ３（図３）のクラスタにアクセスする。これにより、本実施の形態例におけるファイルアクセスプログラムは、ファイルシステムのＦＡＴｆｔの種類に関わらず、共通の処理に基づいて、ファイルアクセスを行うことができる。また、ＦＡＴ２ｔ１の各ＦＡＴエントリのサイズが小さいため、キャッシュメモリに保持可能なＦＡＴエントリの割合を増加させることができ、クラスタの検索効率を向上させることができる。
【００３４】
図５は、ＦＡＴ２ｔ１、及び、不連続クラスタリストｔ２の概要を説明する図である。ＦＡＴｔ１及び不連続クラスタリストｔ２は、例えば、二次記憶装置１７に対応するＦＡＴ形式のＦＡＴｆｔに基づいて生成される。
【００３５】
本実施の形態例におけるＦＡＴ２ｔ１の各ＦＡＴエントリは、各クラスタに対応して、例えば、２ｂｉｔの管理情報を有する。２ｂｉｔの管理情報は、例えば、管理情報「連続」「その他（不連続）」を含む。管理情報「連続」は、対応するクラスタに記憶されるデータの後続データが、ファイル/ディレクトリ領域Ｘ３（図３）の連続したアドレスに位置するクラスタに記憶されることを示す。また、管理情報「その他（不連続）」は、対応するクラスタに記憶されるデータの後続データが、ファイル/ディレクトリ領域Ｘ３の連続しないアドレスに位置するクラスタに記憶されることを示す。
【００３６】
また、不連続クラスタリストｔ２は、管理情報「その他（不連続）」を有するクラスタについて、クラスタのクラスタ番号に対応して、連鎖情報における後続のクラスタのクラスタ番号を有する。図５の例における不連続クラスタリストｔ２は、例えば、情報「０ｘ００００００１０, ０ｘ００００１２００」を有する。これは、クラスタ番号１６のクラスタ（以下、クラスタ１６）（１６進数で０ｘ００００００１０）に記憶されるデータの後続のデータが、クラスタ４６０８（１６進数で０ｘ００００１２００）に記憶されることを示す。
【００３７】
また、２ｂｉｔの管理情報は、さらに、管理情報「ＥＯＣ」「空き」を含む。管理情報「ＥＯＣ」は、対応するクラスタに記憶されるデータがファイルの最後尾のデータであることを示す。管理情報「空き」は、対応するクラスタにデータが記憶されないことを示す。また、対応するクラスタが不良クラスタである場合に、クラスタに対応するＦＡＴエントリに管理情報「その他（不連続）」が指定されてもよい。不連続クラスタリストｔ２は、管理情報「その他（不連続）」を有するクラスタについて、クラスタのクラスタ番号に対応して、不良クラスタである旨の情報「０ｘＦＦＦＦＦＦＦ７」を有する。図５の例における不連続クラスタリストｔ２は、例えば、情報「０ｘ０１２３０４５０, ０ｘＦＦＦＦＦＦＦ７」を有する。これは、クラスタ１９０７２０８０（１６進数で０ｘ０１２３０４５０）が、不良クラスタであることを示す。
【００３８】
なお、この例に限定されるものではなく、管理情報「その他（不連続）」は、対応するクラスタが不良クラスタ以外の状態を示す場合に、クラスタに対応するＦＡＴエントリに指定されてもよい。このとき、不連続クラスタリストｔ２は、管理情報「その他（不連続）」を有するクラスタについて、クラスタのクラスタ番号に対応して、当該クラスタの状態を示す状態情報を有する。
【００３９】
本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴｆｔの代わりに、図５に示すＦＡＴ２ｔ１及び不連続クラスタリストｔ２を参照して、ＦＡＴ形式のファイルシステムのファイル/ディレクトリ領域Ｘ３のクラスタにアクセスする。本実施の形態例におけるファイルアクセスプログラムＰＲは、不連続クラスタリストｔ２を利用することによって、各種類のＦＡＴ形式のＦＡＴｆｔを、２ｂｉｔのＦＡＴエントリを有するＦＡＴ２ｔ１に圧縮することができる。
【００４０】
新規に作成されるファイルのデータは、ファイル/ディレクトリ領域Ｘ３（図３）に連続して位置するクラスタに記憶されることが多い。したがって、対応するＦＡＴエントリが管理情報「連続」を有するクラスタの出現頻度は高い。ＦＡＴ形式のファイルシステムにおいて、ＦＡＴエントリに対応するクラスタのアドレスは、ＦＡＴエントリに応じて一意に定まる。したがって、対応するクラスタと後続クラスタとのアドレスが連続する場合、ＦＡＴエントリは後続クラスタのクラスタ番号を保持する必要がない。
【００４１】
また、不連続クラスタリストｔ２は、対応するＦＡＴエントリが管理情報「その他（不連続）」を有するクラスタの後続クラスタのクラスタ番号、または、クラスタの状態情報（例えば、不良クラスタである旨の情報）を有する。ＦＡＴ２ｔ１のＦＡＴエントリは、クラスタ番号を保持する必要がないことから、２ｂｉｔの領域で足る。なお、対応するＦＡＴエントリが管理情報「その他（不連続）」を有するクラスタの出現頻度は低い。このため、不連続クラスタリストｔ２のデータ量は抑えられると共に、不連続クラスタリストｔ２を参照する頻度は低い。
【００４２】
なお、図５の例において、不連続クラスタリストｔ２が有するクラスタ番号のサイズは、３２ｂｉｔである。本実施の形態例における不連続クラスタリストｔ２が有するクラスタ番号のサイズは、例えば、対応する全てのＦＡＴ形式のＦＡＴエントリのサイズのうち、最も大きいサイズに対応する。これにより、ファイルアクセスプログラムＰＲは、いずれのＦＡＴ形式であっても、ＦＡＴｆｔをＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換することができる。ただし、この例に限定されるものではなく、ファイルアクセスプログラムＰＲは、ＦＡＴ形式の種別毎にそれぞれ連続クラスタリストｔ２を生成してもよい。
【００４３】
次に、ＦＡＴ１２形式、ＦＡＴ１６形式、ＦＡＴ３２形式のファイルシステムにおけるＦＡＴｆｔ、及び、本実施の形態例におけるＦＡＴ２ｔ１、不連続クラスタリストｔ２を、具体例に基づいて説明する。
【００４４】
図６は、具体例における２つのファイル（ファイル１、２）ｄｔ１、ｄｔ２のデータを構成するクラスタの連鎖状態を例示する図である。図６の例において、ファイル１ｄｔ１のデータは、クラスタ２を先頭クラスタとして、クラスタ３、クラスタ４、クラスタ８、クラスタ９の順に記憶される。また、ファイル２ｄｔ２のデータは、クラスタ５を先頭クラスタとして、クラスタ６の順に記憶される。即ち、クラスタ２とクラスタ３、クラスタ３とクラスタ４、クラスタ５とクラスタ６、クラスタ８とクラスタ９は、ファイル/ディレクトリ領域Ｘ３（図３）における連続したアドレスに位置する。一方、クラスタ４とクラスタ８は、ファイル/ディレクトリ領域Ｘ３における不連続のアドレスに位置する。
【００４５】
図７は、ＦＡＴ１２形式、ＦＡＴ１６形式、ＦＡＴ３２形式の各ＦＡＴｆｔの具体例を示す図である。図７の具体例では、図６に示す２つのファイル１、２が、ＦＡＴ１２形式、ＦＡＴ１６形式、ＦＡＴ３２形式のファイルシステムに記憶される場合におけるＦＡＴｆｔｃ、ｆｔｂ、ｆｔｃを例示する。なお、各ＦＡＴｆｔｃ、ｆｔｂ、ｆｔｃにおける初めの２つのエントリｅ０、ｅ１は、予約領域（Reserved）である。以下、ＦＡＴ３２形式のファイルシステムにおけるＦＡＴｆｔをＦＡＴ３２ｆｔｃ、ＦＡＴ１６形式のファイルシステムにおけるＦＡＴｆｔをＦＡＴ１６ｆｔｂ、ＦＡＴ１２形式のファイルシステムにおけるＦＡＴｆｔをＦＡＴ１２ｆｔａと称する。
【００４６】
図７のＦＡＴｆｔｃは、ＦＡＴ３２形式のファイルシステムのＦＡＴ（ＦＡＴ３２）ｆｔである。ＦＡＴ３２ｆｔｃの各ＦＡＴエントリのサイズは３２ｂｉｔである。また、図６で前述したとおり、ファイル１のデータは、クラスタ２を先頭クラスタとして、クラスタ３、クラスタ４、クラスタ８、クラスタ９の順に記憶される。したがって、ＦＡＴ３２ｆｔｃにおいて、クラスタ２のＦＡＴエントリｅ２は、３２ｂｉｔのクラスタ番号「０ｘ０００００００３」を有する。また、クラスタ３のＦＡＴエントリｅ３は、３２ｂｉｔのクラスタ番号「０ｘ０００００００４」を、クラスタ４のＦＡＴエントリｅ４は、３２ｂｉｔのクラスタ番号「０ｘ０００００００８」を有する。そして、ファイル１の末尾のクラスタ９のＦＡＴエントリｅ９は、末端を示す３２ｂｉｔの値「０ｘＦＦＦＦＦＦＦＦ」を有する。
【００４７】
また、図６で前述したとおり、ファイル２のデータは、クラスタ５を先頭として、クラスタ６の順に記憶される。したがって、ＦＡＴ３２ｆｔｃにおいて、クラスタ５のＦＡＴエントリｅ５は、３２ｂｉｔのクラスタ番号「０ｘ０００００００６」を有し、クラスタ６のＦＡＴエントリｅ６は、ＥＯＣを示す３２ｂｉｔの値「０ｘＦＦＦＦＦＦＦＦ」を有する。
【００４８】
図７のＦＡＴｆｔｂは、ＦＡＴ１６形式のファイルシステムのＦＡＴ（ＦＡＴ１６）ｆｔである。ＦＡＴ１６ｆｔｂの各ＦＡＴエントリのサイズは１６ｂｉｔである。したがって、ＦＡＴ１６ｆｔｂにおいて、クラスタ２のＦＡＴエントリｅ２は、１６ｂｉｔのクラスタ番号「０ｘ０００３」を有する。また、クラスタ３のＦＡＴエントリｅ３は、１６ｂｉｔのクラスタ番号「０ｘ０００４」を、クラスタ４のＦＡＴエントリｅ４は、１６ｂｉｔのクラスタ番号「０ｘ０００８」を、ファイル１の末尾のクラスタ９のＦＡＴエントリｅ９は、末端を示す１６ｂｉｔの値「０ｘＦＦＦＦ」を有する。ファイル２についても同様である。
【００４９】
同様にして、図７のＦＡＴｆｔａは、ＦＡＴ１２形式のファイルシステムのＦＡＴ（ＦＡＴ１２）ｆｔである。ＦＡＴ１２ｆｔａの各ＦＡＴエントリのサイズは１２ｂｉｔである。したがって、ＦＡＴ１２ｆｔａにおいて、クラスタ２のＦＡＴエントリｅ２は、１２ｂｉｔのクラスタ番号「０ｘ００３」を有する。また、クラスタ３のＦＡＴエントリｅ３は、１２ｂｉｔのクラスタ番号「０ｘ００４」を、クラスタ４のＦＡＴエントリｅ４は、１２ｂｉｔのクラスタ番号「０ｘ００８」を、ファイル１の末尾のクラスタ９のＦＡＴエントリｅ９は、末端を示す１２ｂｉｔの値「０ｘＦＦＦ」を有する。ファイル２についても同様である。
【００５０】
図８は、本実施の形態例におけるＦＡＴ２ｔ１及び不連続クラスタリストｔ２の具体例を説明する図である。本実施の形態例におけるＦＡＴ２ｔ１の各ＦＡＴエントリｅ０〜ｅ９のサイズは２ｂｉｔである。ＦＡＴエントリｅ０〜ｅ９は、例えば、４つの管理情報「空き（０ｘ００）」「末端（０ｘ０１）」「連続（０ｘ１０）」「その他（０ｘ１１）」を有する。ただし、４つの管理情報と各値「０ｘ００」「０ｘ０１」「０ｘ１０」「０ｘ１１」との対応関係は、図８の例に限定されるものではない。
【００５１】
図６で前述したとおり、具体例において、クラスタ２とクラスタ３、クラスタ３とクラスタ４、クラスタ５とクラスタ６、クラスタ８とクラスタ９は、ファイル/ディレクトリ領域Ｘ３（図３）における連続したアドレスに位置する。一方、クラスタ４とクラスタ８は、ファイル/ディレクトリ領域における不連続のアドレスに位置する。したがって、ＦＡＴ２ｔ１のクラスタ２、３、５、８のＦＡＴエントリｅ２、ｅ３、ｅ５、ｅ８は、連続を示す値「０ｘ１０」を有する。
【００５２】
また、クラスタ４のＦＡＴエントリｅ４は、その他を示す値「０ｘ１１」を有する。また、不連続クラスタリストｔ２は、３２ｂｉｔのクラスタ番号「０ｘ０００００００４」に対応して、クラスタ番号「０ｘ０００００００８」を有する。また、クラスタ６、９のＦＡＴエントリｅ６、ｅ９は、末端を示す値「０ｘ０１」を有する。また、例えば、データを記憶しないクラスタ７のＦＡＴエントリｅ７は、空きを示す値「０ｘ００」を有する。
【００５３】
なお、図８の例では、ＦＡＴ２ｔ１が２ｂｉｔ幅のＦＡＴエントリを有する場合を例示したが、この例に限定されるものではない。ＦＡＴ２ｔ１は、２つの１ｂｉｔのテーブルによって構成されてもよい。また、前述したとおり、図８の例における不連続クラスタリストｔ２が有するクラスタ番号のサイズは、対応する全ての種類のＦＡＴ形式のファイルシステムにおけるＦＡＴエントリのサイズ（この例では、１２ｂｉｔ、１６ｂｉｔ、３２ｂｉｔ）のうち、最も大きいサイズ（この例では、３２ｂｉｔ）である。なお、不連続クラスタリストｔ２は、配列、線形リスト、木構造、ハッシュテーブル等によって実装されてもよい。
【００５４】
本実施の形態例におけるファイルアクセスプログラムＰＲは、例えば、ＳＤカード等の記憶媒体（図１の二次記憶装置１７）の装着を検知したときに、記憶媒体におけるファイルシステムのＦＡＴｆｔを、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換する。例えば、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２は、ＲＡＭ１２等のキャッシュメモリ（以下、ＦＡＴキャッシュと称する）に保持される。そして、ファイルアクセスプログラムＰＲは、記憶媒体の取り外しを検知すると、ＦＡＴ２ｔ１を記憶媒体におけるファイルシステムのＦＡＴｆｔに逆変換し、記憶媒体に書き戻す。続いて、記憶媒体の装着時（マウント）または取り外し（アンマウント）を検知した場合の処理を説明する。初めに、一般的なマウント時における処理の流れを説明する。
【００５５】
［フローチャート：記憶媒体のマウント］
図９は、一般的な記憶媒体のマウント時における処理を説明するフローチャート図である。一般的なファイルアクセスプログラムは、検知した記憶媒体からブートセクタを読み出し、ＲＡＭ上に展開する（Ｓ１１）。続いて、ファイルアクセスプログラムは、ブートセクタの内容に基づいて、ファイルシステムに異常があるか否かを判定する（Ｓ１２）。異常が検知された場合（Ｓ１２のＮＯ）、ファイルアクセスプログラムは、処理を終了する。一方、異常が検知されなかった場合（Ｓ１２のＹＥＳ）、ファイルアクセスプログラムは、記憶媒体からＦＡＴｆｔをＲＡＭ（ＦＡＴキャッシュ）１２に順次読み出す（Ｓ１３）。ファイルアクセスプログラムは、ＦＡＴキャッシュの容量を満たすまで（Ｓ１４）、ＦＡＴｆｔを読み出す。
【００５６】
図１０は、本実施の形態例における記憶媒体のマウント時における処理を説明するフローチャート図である。工程Ｓ２１〜Ｓ２３の処理は、図９のフローチャート図における工程Ｓ１１〜Ｓ１３と同様である。ファイルアクセスプログラムＰＲは、工程Ｓ２３において読み出したＦＡＴｆｔをＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換する（Ｓ２４）。変換処理の詳細は、別のフローチャート図（図１１）に基づいて後述する。ファイルアクセスプログラムＰＲは、ＦＡＴキャッシュの容量を満たすまで（Ｓ２５）、ＦＡＴｆｔを読み出して変換する。
【００５７】
図１０に示すように、本実施の形態例におけるファイルアクセスプログラムＰＲは、ファイルシステムのＦＡＴ（例えば、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２等）ｆｔをＦＡＴ２ｔ１に変換し、ＦＡＴキャッシュに読み込む。ＦＡＴ２ｔ１の各ＦＡＴエントリのサイズは、ＦＡＴｆｔよりも小さい。したがって、本実施の形態例におけるファイルアクセスプログラムＰＲによると、より広範囲のＦＡＴエントリをＦＡＴキャッシュに読み込むことができ、キャッシュヒット率を向上させることができる。
【００５８】
具体的に、例えば、ＦＡＴ１２ｆｔａ（図７）の各ＦＡＴエントリのサイズは１２ｂｉｔであって、ＦＡＴ２ｔ１（図８）のＦＡＴエントリのサイズは２ｂｉｔである。したがって、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１に基づくことにより、ＦＡＴ１２ｆｔａに対して、６倍のＦＡＴエントリをＦＡＴキャッシュに読み込むことができる。同様にして、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１に基づくことにより、ＦＡＴ１６ｆｔｂ（図７）に対して８倍のＦＡＴエントリを、ＦＡＴ３２ｆｔｃ（図７）に対して１６倍のＦＡＴエントリをＦＡＴキャッシュに読み込むことができる。
【００５９】
なお、本実施の形態例におけるファイルアクセスプログラムＰＲは、記憶媒体の取り外し（アンマウント）を検知すると、ＦＡＴキャッシュのＦＡＴ２ｔ１を、不連続クラスタリストｔ２に基づいて、ＦＡＴｆｔに逆変換する。
【００６０】
［フローチャート：変換処理］
続いて、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２とＦＡＴｆｔとの変換処理をフローチャート図に基づいて説明する。初めに、ＦＡＴｆｔをＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換する処理を説明する。
【００６１】
図１１は、ＦＡＴｆｔをＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換する処理を説明するフローチャート図である。図１１のフローチャート図では、ＦＡＴ１６ｆｔｂ（図７）を、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２（図８）に変換する処理を例示する。ファイルアクセスプログラムＰＲは、まず、変数ｉに値０を設定する（Ｓ３１）。次に、ファイルアクセスプログラムＰＲは、ＦＡＴ１６ｆｔｂのエントリＦＡＴ１６［ｉ］の値を取得する（Ｓ３２）。そして、ファイルアクセスプログラムＰＲは、エントリＦＡＴ１６［ｉ］の値を判定する（Ｓ３３）。
【００６２】
ファイルアクセスプログラムＰＲは、エントリＦＡＴ１６［ｉ］が空きを示す値「０ｘ００００」の場合に、エントリＦＡＴ２ｔ１［ｉ］に空きを示す値「０ｘ００」を設定し（Ｓ３４）、末端を示す値「０ｘＦＦＦＦ」の場合に、エントリＦＡＴ２ｔ１［ｉ］に末端を示す値「０ｘ０１」を設定する（Ｓ３５）。また、ファイルアクセスプログラムＰＲは、エントリＦＡＴ１６［ｉ］の値が、変数ｉの値をインクリメントした値と一致する場合に、エントリＦＡＴ２ｔ１［ｉ］に連続を示す値「０ｘ１０」を設定する（Ｓ３６）。
【００６３】
一方、エントリＦＡＴ１６［ｉ］の値が値「０ｘ００００」「０ｘＦＦＦＦ」「ｉ＋１」以外である場合、ファイルアクセスプログラムＰＲは、エントリＦＡＴ２ｔ１［ｉ］にその他（不連続）を示す値「０ｘ１１」を設定する（Ｓ３７）。そして、ファイルアクセスプログラムＰＲは、不連続クラスタリストｔ２に、クラスタ番号ｉと、後続のクラスタ番号を示すエントリＦＡＴ１６［ｉ］の値との対応関係を書き込む（Ｓ３８）。または、クラスタが不良クラスタである場合、ファイルアクセスプログラムＰＲは、不連続クラスタリストｔ２に、クラスタ番号ｉと、不良クラスタであることを示す値を書き込む。
【００６４】
続いて、ファイルアクセスプログラムＰＲは、変数ｉをインクリメントする（Ｓ３９）。そして、対象のＦＡＴ１６ｆｔｂの変換処理が完了していない場合（Ｓ４０のＮＯ）、ファイルアクセスプログラムＰＲは、工程Ｓ３２の処理に遷移し、エントリＦＡＴ１６［ｉ］の値を取得する（Ｓ３２）。一方、対象のＦＡＴ１６ｆｔｂの変換処理が完了した場合（Ｓ４０のＹＥＳ）、ファイルアクセスプログラムＰＲは変換処理を終了する。
【００６５】
図１２は、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２を、ＦＡＴｆｔに逆変換する処理を説明するフローチャート図である。図１２のフローチャート図では、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２を、ＦＡＴ１６ｆｔｂに変換する処理を例示する。ファイルアクセスプログラムＰＲは、まず、変数ｉに値０を設定する（Ｓ４１）。次に、ファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１のエントリＦＡＴ２ｔ１［ｉ］の値を取得する（Ｓ４２）。そして、ファイルアクセスプログラムＰＲは、エントリＦＡＴ２ｔ１［ｉ］の値を判定する（Ｓ４３）。
【００６６】
ファイルアクセスプログラムＰＲは、エントリＦＡＴ２ｔ１［ｉ］が空きを示す値「０ｘ００」である場合、ＦＡＴ１６ｆｔｂのエントリＦＡＴ１６［ｉ］に空きを示す値「０ｘ００００」を設定し（Ｓ４４）、末端を示す値「０ｘ０１」である場合、エントリＦＡＴ１６［ｉ］に末端を示す値「０ｘＦＦＦＦ」を設定する（Ｓ４５）。また、ファイルアクセスプログラムＰＲは、エントリＦＡＴ２ｔ１［ｉ］が連続を示す値「０ｘ１０」である場合、エントリＦＡＴ１６［ｉ］に、変数ｉをインクリメントした値を設定する（Ｓ４６）。また、エントリＦＡＴ２ｔ１［ｉ］がその他（不連続）を示す値「０ｘ１１」である場合、ファイルアクセスプログラムＰＲは、不連続クラスタリストｔ２を参照し、クラスタ番号ｉに対応する後続のクラスタ番号ｘを取得する（Ｓ４７）。そして、ファイルアクセスプログラムＰＲは、エントリＦＡＴ１６［ｉ］に、値ｘを設定する（Ｓ４６）。
【００６７】
続いて、ファイルアクセスプログラムＰＲは、変数ｉをインクリメントする（Ｓ４７）。そして、対象のＦＡＴ２ｔ１の変換処理が完了していない場合（Ｓ４８のＮＯ）、ファイルアクセスプログラムＰＲは、工程Ｓ４２の処理に遷移し、エントリＦＡＴ２ｔ１［ｉ］の値を取得する（Ｓ４２）。一方、対象のＦＡＴ２ｔ１の変換処理が完了した場合（Ｓ４８のＹＥＳ）、ファイルアクセスプログラムＰＲは変換処理を終了する。
【００６８】
図１１、図１２のフローチャート図では、ＦＡＴ１６ｆｔｂとＦＡＴ２ｔ１及び不連続クラスタリストｔ２との変換処理を例示した。同様にして、ＦＡＴ１２ｆｔａ、ＦＡＴ３２ｆｔｃ、ｅｘＦＡＴｆｔｄについても、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２との変換処理が用意される。処理の概要は、図１１、図１２のフローチャート図と同様である。
【００６９】
続いて、ファイルの読み出し処理及び書き込み処理をフローチャート図に基づいて説明する。本実施の形態例における処理を説明する前に、一般的なファイルの読み出し処理及び書き込み処理をフローチャート図に基づいて説明する。
【００７０】
［フローチャート：ファイル読み出し処理、書き込み処理］
図１３は、一般的な記憶媒体からのデータ読み出し処理を説明するフローチャート図である。まず、一般的なファイルアクセスプログラムは、ファイルシステムのＦＡＴ種別を判定する（Ｓ５１）。例えば、ＦＡＴ１６形式のファイルシステムの場合、ファイルアクセスプログラムは、変数ｉに読み出し対象ファイルの開始クラスタのクラスタ番号を設定する（Ｓ５２）。続いて、ファイルアクセスプログラムは、クラスタ番号ｉのクラスタのデータを記憶媒体のファイル/ディレクトリ領域Ｘ３（図３）から読み出す（Ｓ５３）。
【００７１】
次に、ファイルアクセスプログラムは、ＦＡＴ１６ｆｔｂにおけるクラスタ番号ｉのエントリＦＡＴ１６［ｉ］がＦＡＴキャッシュ上にあるか否かを判定する（Ｓ５４）。ＦＡＴキャッシュ上にない場合（Ｓ５４のＮＯ）、ファイルアクセスプログラムは、ＦＡＴキャッシュから不要なセクタを選択し、記憶媒体に書き出す（Ｓ５５）。即ち、ファイルアクセスプログラムは、ＦＡＴキャッシュの入れ替え処理を行う。そして、ファイルアクセスプログラムは、ＦＡＴ１６ｆｔｂから、エントリＦＡＴ１６［ｉ］を含み、セクタに保持可能なＦＡＴエントリを読み出し、ＦＡＴキャッシュに展開する（Ｓ５６）。
【００７２】
そして、ＦＡＴキャッシュ上にある場合（Ｓ５４のＹＥＳ）、または、ＦＡＴキャッシュの入れ替え処理を行った後（Ｓ５５、Ｓ５６）、ファイルアクセスプログラムは、ＦＡＴキャッシュ上のエントリＦＡＴ１６［ｉ］を読み出す。そして、ファイルアクセスプログラムは、エントリＦＡＴ１６［ｉ］を参照し、クラスタ番号ｉに記憶されるデータの後続のデータが記憶されるクラスタ番号を取得する（Ｓ５７）。また、ファイルアクセスプログラムは、次回の読み出し対象のクラスタ番号として、工程Ｓ５７で取得したクラスタ番号を変数ｉに設定する（Ｓ５８）。
【００７３】
エントリＦＡＴ１６［ｉ］の値が「０ｘＦＦＦＦ」である場合（Ｓ５９のＹＥＳ）、即ち、クラスタ番号ｉのクラスタが読み出し対象ファイルの最後尾のクラスタである場合、ファイルアクセスプログラムは処理を終了する。一方、エントリＦＡＴ１６［ｉ］の値が「０ｘＦＦＦＦ」ではない場合（Ｓ５９のＮＯ）、ファイルアクセスプログラムは、工程Ｓ５３の処理に遷移し、次回の読み出し対象のクラスタ番号ｉのクラスタのデータを読み出す（Ｓ５３）。
【００７４】
なお、ＦＡＴ１２形式、ＦＡＴ３２形式、ｅｘＦＡＴ形式のファイルシステムのファイルを読み出す場合も同様にして、ファイルアクセスプログラムは、工程Ｓ５２〜Ｓ５９と同様の処理を行う。ただし、工程Ｓ５２〜Ｓ５９の処理はデータ処理等に関してＦＡＴ形式の種別に応じて異なるため、データ読み出し処理は、ＦＡＴ形式の種別に応じて場合分けして記述される必要がある。これにより、プログラムの工数が増加すると共に、保守作業が煩雑になる。
【００７５】
なお、ＦＡＴキャッシュの入れ替え処理の発生頻度は、ＦＡＴ形式の種別に応じて異なる。この例では、セクタが５１２バイトの場合に基づいて説明する。ＦＡＴ１６形式の場合、ＦＡＴエントリのサイズは１６ｂｉｔ（＝２バイト）である。したがって、１セクタは、２５６（＝５１２÷２）個のＦＡＴエントリを保持可能である。このため、ＦＡＴキャッシュの入れ替え処理は、クラスタ２５６個の読み出し処理に対して１回の頻度で発生することが想定される。
【００７６】
同様にして、ＦＡＴ１２形式の場合、ＦＡＴエントリのサイズは１２ｂｉｔ（＝１．５バイト）であり、１セクタは３４１（≒５１２÷１．５）個のＦＡＴエントリを保持可能である。即ち、ＦＡＴ１２形式におけるＦＡＴキャッシュの入れ替え処理は、クラスタ３４１個の読み出し処理に対して１回の頻度で発生することが想定される。同様にして、ＦＡＴ３２形式の場合、ＦＡＴエントリのサイズは３２ｂｉｔ（＝４バイト）であり、１セクタは１２８（＝５１２÷４）個のＦＡＴエントリを保持可能である。したがって、ＦＡＴ３２形式におけるＦＡＴキャッシュの入れ替え処理は、クラスタ１２８個の読み出し処理に対して１回の頻度で発生することが想定される。
【００７７】
このように、ＦＡＴエントリのサイズの拡張に伴ってＦＡＴキャッシュに保持可能なＦＡＴエントリの割合が減少することから、ＦＡＴキャッシュの入れ替え処理の頻度は高くなる。これは、ＦＡＴエントリのサイズの拡張に伴って、記憶媒体に対するＩ／Ｏ処理がより頻繁に発生することを示し、アクセス効率が悪い。
【００７８】
図１４は、一般的な記憶媒体からのデータ書き込み処理を説明するフローチャート図である。まず、一般的なファイルアクセスプログラムは、記憶媒体のＦＡＴ種別を判定する（Ｓ６１）。例えば、ＦＡＴ１６形式のファイルシステムであって、全てのデータの書き込み処理が完了していない場合（Ｓ６２のＮＯ）、ファイルアクセスプログラムは、空きクラスタを１つ取得し、取得したクラスタのクラスタ番号を変数ｎに設定する（Ｓ６３）。なお、前回、取得した空きクラスタがある場合、ファイルアクセスプログラムは、前回の変数ｎの値を変数ｏｌｄ＿ｎに設定しておく（Ｓ６４）。変数ｏｌｄ＿ｎは、書き込み対象のファイルのクラスタ連鎖における前のクラスタのクラスタ番号を示す。そして、ファイルアクセスプログラムは、クラスタ番号ｎのクラスタにデータを書き込む（Ｓ６５）。
【００７９】
続いて、ファイルアクセスプログラムは、ＦＡＴ１６ｆｔｂにおけるクラスタ番号ｎのエントリＦＡＴ１６［ｎ］がＦＡＴキャッシュ上にあるか否かを判定する（Ｓ６６）。ＦＡＴキャッシュ上にない場合（Ｓ６６のＮＯ）、ファイルアクセスプログラムは、ＦＡＴキャッシュから不要なセクタを選択し、記憶媒体に書き戻す（Ｓ６７）。即ち、ファイルアクセスプログラムは、ＦＡＴキャッシュの入れ替え処理を行う。そして、ファイルアクセスプログラムは、ＦＡＴ１６ｆｔｂから、エントリＦＡＴ１６［ｉ］を含み、セクタに保持可能なＦＡＴエントリを読み出し、ＦＡＴキャッシュに展開する（Ｓ６８）。
【００８０】
ＦＡＴキャッシュ上にある場合（Ｓ６６のＹＥＳ）、または、ＦＡＴキャッシュの入れ替え処理をおこなった後（Ｓ６７、Ｓ６８）、ファイルアクセスプログラムは、ＦＡＴキャッシュ上のエントリＦＡＴ１６［ｎ］に、ファイルの最後尾を示す値「０ｘＦＦＦＦ」を書き込む（Ｓ６９）。次に、ファイルアクセスプログラムは、変数ｏｌｄ＿ｎに値が設定されているか否かを判定する（Ｓ７０）。変数ｏｌｄ＿ｎに値が設定されている場合（Ｓ７０のＹＥＳ）、ファイルアクセスプログラムは、エントリＦＡＴ１６［ｏｌｄ＿ｎ］に変数ｎの値を設定する（Ｓ７１）。これにより、クラスタ連鎖における前のクラスタのエントリＦＡＴ１６［ｏｌｄ＿ｎ］に、後続のクラスタのクラスタ番号ｎが記憶される。
【００８１】
そして、変数ｏｌｄ＿ｎに値が設定されていない場合（Ｓ７０のＮＯ）、または、エントリＦＡＴ１６［ｏｌｄ＿ｎ］に変数ｎの値を書き込んだ後（Ｓ７１）、ファイルアクセスプログラムは、工程Ｓ６２の処理に遷移して、データの書き込み処理が完了したか否かを判定する（Ｓ６２）。データの書き込み処理が完了していない場合（Ｓ６２のＮＯ）、ファイルアクセスプログラムは、再び、工程Ｓ６３〜Ｓ７１の処理を行う。一方、データの書き込み処理が完了した場合（Ｓ６２のＹＥＳ）、ファイルアクセスプログラムはデータ書き込み処理を終了する。
【００８２】
なお、図１３のファイルの読み出し処理と同様にして、ＦＡＴ１２形式、ＦＡＴ３２形式、ｅｘＦＡＴ形式のファイルシステムのファイルを読み出す場合も、ファイルアクセスプログラムは、工程Ｓ６２〜Ｓ７１と同様の処理を行う。ただし、工程Ｓ６２〜Ｓ７１の処理はデータ処理等に関してＦＡＴ形式の種別に応じて異なるため、データ書き込み処理は、ＦＡＴ形式の種別に応じて場合分けして記述される必要がある。これにより、プログラムの工数が増加すると共に、保守作業が煩雑になる。
【００８３】
また、図１３のファイルの読み出し処理と同様にして、ＦＡＴエントリのサイズの拡張に伴ってＦＡＴキャッシュに保持可能なＦＡＴエントリの割合が減少することから、ＦＡＴキャッシュの入れ替え処理の頻度は高くなる。これは、ＦＡＴエントリのサイズの拡張に伴って、記憶媒体に対するＩ／Ｏ処理がより頻繁に発生することを示し、アクセス効率が悪い。
【００８４】
続いて、本実施の形態例におけるファイルの読み出し処理及び書き込み処理をフローチャート図に基づいて説明する。
【００８５】
図１５は、本実施の形態例における記憶媒体からのファイルの読み出し処理を説明するフローチャート図である。まず、本実施の形態例におけるファイルアクセスプログラムＰＲは、変数ｉに読み出し対象ファイルの開始クラスタのクラスタ番号を設定する（Ｓ８１）。次に、ファイルアクセスプログラムＰＲは、クラスタ番号ｉのクラスタのデータを記憶媒体（図１の二次記憶装置１７）のファイル/ディレクトリ領域Ｘ３（図３）から読み出す（Ｓ８２）。
【００８６】
続いて、ファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１におけるクラスタ番号ｉのエントリＦＡＴ２ｔ１［ｉ］がＦＡＴキャッシュ上にあるか否かを判定する（Ｓ８３）。ＦＡＴキャッシュ上にない場合（Ｓ８３のＮＯ）、ファイルアクセスプログラムＰＲは、ＦＡＴキャッシュから不要なセクタを選択し、セクタ内のＦＡＴ２ｔ１及び不連続クラスタリストｔ２を記憶媒体のＦＡＴ形式のＦＡＴｆｔに変換する（Ｓ８４）。変換処理は、図１２のフローチャート図で説明したとおりである。
【００８７】
続いて、ファイルアクセスプログラムＰＲは、変換後のＦＡＴｆｔを記憶媒体に書き込む（Ｓ８５）。次に、ファイルアクセスプログラムＰＲは、記憶媒体上のＦＡＴｆｔから、クラスタ番号ｉのＦＡＴエントリを含み、セクタに保持可能なＦＡＴ２ｔ１のＦＡＴエントリの数に対応するＦＡＴエントリを読み出す（Ｓ８６）。そして、ファイルアクセスプログラムＰＲは、読み出したＦＡＴｆｔをＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換する（Ｓ８７）。変換処理は、図１１のフローチャート図で説明したとおりである。
【００８８】
本実施の形態例におけるファイルアクセスプログラムＰＲは、記憶媒体のファイルシステムのＦＡＴｆｔと、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２とを変換する。これにより、ファイルアクセスプログラムＰＲは、いずれの種別のＦＡＴ形式であっても、変換処理（Ｓ８４、Ｓ８７）以外の処理については、ＦＡＴ形式の種別に応じて場合分けて記述される必要がない。
【００８９】
そして、ＦＡＴキャッシュ上にある場合（Ｓ８３のＹＥＳ）、または、ＦＡＴキャッシュの入れ替え処理を行った後（Ｓ８４〜Ｓ８７）、ファイルアクセスプログラムＰＲは、ＦＡＴキャッシュ上のエントリＦＡＴ２ｔ１［ｉ］を読み出す（Ｓ８８）。エントリＦＡＴ２ｔ１［ｉ］の値が「０ｘ００（空き）」または「０ｘ０１（末端）」を示す値である場合（Ｓ８９）、ファイルアクセスプログラムＰＲは処理を終了する。また、エントリＦＡＴ２ｔ１［ｉ］の値が「０ｘ１０（連続）」を示す値である場合（Ｓ８９）、ファイルアクセスプログラムＰＲは、変数ｉの値をインクリメントし（Ｓ９０）、工程Ｓ８２の処理に遷移し、クラスタ番号ｉのクラスタのデータを記憶媒体のファイル/ディレクトリ領域Ｘ３から読み出す（Ｓ８２）。
【００９０】
また、エントリＦＡＴ２ｔ１［ｉ］の値が「０ｘ１１（その他）」を示す値である場合（Ｓ８９）、ファイルアクセスプログラムＰＲは、不連続クラスタリストｔ２からクラスタ番号ｉに基づいて、クラスタ連鎖におけるクラスタ番号ｉのクラスタの後続クラスタのクラスタ番号ｘを取得する（Ｓ９１）。そして、ファイルアクセスプログラムＰＲは、変数ｉに値ｘを設定し（Ｓ９２）、工程Ｓ８２の処理に遷移し、クラスタ番号ｉのクラスタのデータを記憶媒体のファイル/ディレクトリ領域Ｘ３から読み出す（Ｓ８２）。前述したとおり、値「０ｘ１１（その他）」を有するＦＡＴエントリの割合は少ない。したがって、ファイルアクセスプログラムＰＲは、主にＦＡＴ２ｔ１を参照することによって、ファイルの読み出し処理を行うことができる。
【００９１】
図１６は、本実施の形態例における記憶媒体へのファイルの書き込み処理を説明するフローチャート図である。まず、本実施の形態例におけるファイルアクセスプログラムＰＲは、全てのデータの書き込み処理が完了していない場合（Ｓ１０１のＮＯ）、空きクラスタを１つ取得し、取得したクラスタのクラスタ番号を変数ｎに設定する（Ｓ１０２）。なお、前回、取得した空きクラスタがある場合、ファイルアクセスプログラムＰＲは、前回の変数ｎの値を変数ｏｌｄ＿ｎに書き込んでおく（Ｓ１０３）。変数ｏｌｄ＿ｎは、クラスタ連鎖における前のクラスタのクラスタ番号を示す。
【００９２】
このとき、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴエントリのサイズが小さいことから、ＦＡＴキャッシュに保持可能なＦＡＴエントリの割合を増加させることができ、空きクラスタを高速に検索することができる。また、本実施の形態例におけるファイルアクセスプログラムＰＲは、サイズの小さいＦＡＴエントリに基づくことにより、ＣＰＵ１１が１回に処理可能なＦＡＴエントリの数が多くなるため、空きクラスタを高速に検索することができる。
【００９３】
そして、ファイルアクセスプログラムＰＲは、クラスタ番号ｎのクラスタにデータを書き込む（Ｓ１０４）。続いて、ファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１におけるクラスタ番号ｎのエントリＦＡＴ２ｔ１［ｎ］がＦＡＴキャッシュ上にあるか否かを判定する（Ｓ１０５）。ＦＡＴキャッシュ上にない場合（Ｓ１０５のＮＯ）、ファイルアクセスプログラムＰＲは、ＦＡＴキャッシュから不要なセクタを選択し、セクタ内のＦＡＴ２ｔ１及び不連続クラスタリストｔ２を記憶媒体上のＦＡＴ形式のＦＡＴｆｔに変換する（Ｓ１０６）。変換処理は、図１２のフローチャート図で説明したとおりである。
【００９４】
続いて、ファイルアクセスプログラムＰＲは、変換後のＦＡＴｆｔを記憶媒体に書き込む（Ｓ１０７）。次に、ファイルアクセスプログラムＰＲは、記憶媒体上のＦＡＴｆｔから、クラスタ番号ｎのＦＡＴエントリを含み、セクタに保持可能なＦＡＴ２ｔ１のＦＡＴエントリの数に対応するＦＡＴエントリを読み出す（Ｓ１０８）。そして、ファイルアクセスプログラムＰＲは、読み出したＦＡＴをＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換する（Ｓ１０９）。変換処理は、図１１のフローチャート図で説明したとおりである。
【００９５】
ＦＡＴキャッシュ上にある場合（Ｓ１０５のＹＥＳ）、または、ＦＡＴキャッシュの入れ替え処理をおこなった後（Ｓ１０６〜Ｓ１０９）、ファイルアクセスプログラムＰＲは、ＦＡＴキャッシュ上のエントリＦＡＴ２ｔ１［ｎ］に、ファイルの末尾を示す値「０ｘ０１」を書き込む（Ｓ１１０）。次に、ファイルアクセスプログラムＰＲは、変数ｏｌｄ＿ｎに値が設定されているか否かを判定する（Ｓ１１１）。変数ｏｌｄ＿ｎに値が設定されている場合（Ｓ１１１のＹＥＳ）、ファイルアクセスプログラムＰＲは、変数ｏｌｄ＿ｎをインクリメントした値が、変数ｎの値と一致するか否かを判定する（Ｓ１１２）。一致する場合（Ｓ１１２のＹＥＳ）、ファイルアクセスプログラムＰＲは、ＦＡＴキャッシュ上のエントリＦＡＴ２ｔ１［ｎ］に、連続を示す値「０ｘ１０」を書き込む（Ｓ１１３）。
【００９６】
一方、一致しない場合（Ｓ１１２のＮＯ）、ファイルアクセスプログラムＰＲは、ＦＡＴキャッシュ上のエントリＦＡＴ２ｔ１［ｎ］に、その他（不連続）を示す値「０ｘ１１」を書き込む（Ｓ１１４）。また、ファイルアクセスプログラムＰＲは、不連続クラスタリストｔ２に、クラスタ番号ｏｌｄ＿ｎとクラスタ番号ｎとの対応関係を書き込む（Ｓ１１５）。データを構成するクラスタは、ファイル/ディレクトリ領域Ｘ３の連続したアドレスに位置する確率が高い。したがって、ファイルアクセスプログラムＰＲは、主にＦＡＴ２ｔ１を参照することによって、ファイルの書き込み処理を行うことができる。
【００９７】
図１５、図１６のフローチャート図に示すように、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２に基づくことにより、ファイルシステムのＦＡＴ形式の種別がいずれであっても、変換処理を除くファイルアクセス処理を共通化できる。これにより、データ読み出し処理、及び、データ書き込み処理はＦＡＴ形式の種別に応じて場合分けされる必要がないため、プログラムの工数が抑えられると共に、保守作業が軽減される。
【００９８】
また、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１のＦＡＴエントリのサイズが小さいことから、ＦＡＴキャッシュに保持可能なＦＡＴエントリの割合を増加させることができ、ファイルのアクセスをより高速にすることができる。また、本実施の形態例におけるファイルアクセスプログラムＰＲによると、ＦＡＴ２ｔ１に基づくことにより、ＦＡＴキャッシュの入れ替え頻度を大幅に削減可能になる。
【００９９】
例えば、セクタが５１２バイトの場合、１セクタは、２０４８（＝５１２÷０．２５）個のＦＡＴ２のＦＡＴエントリを保持可能である。即ち、本実施の形態例において、ＦＡＴキャッシュの入れ替え処理は、クラスタ２０４８個の読み出し処理に対して１回の頻度で発生することが想定できる。前述したとおり、ＦＡＴキャッシュの入れ替え処理は、ＦＡＴ１２形式の場合はクラスタ３４１個の読み出し処理に対して１回、ＦＡＴ１６形式の場合はクラスタ２５６個の読み出し処理に対して１回、ＦＡＴ３２形式、ｅｘＦＡＴ形式の場合は、クラスタ１２８個の読み出し処理に対して１回の頻度で発生することが想定できる。したがって、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴキャッシュの入れ替え頻度を大幅に削減でき、記憶媒体に対するＩ／Ｏ処理を削減し、アクセス効率を向上させることができる。
【０１００】
また、本実施の形態例におけるＦＡＴエントリのサイズは、各ＦＡＴ形式のＦＡＴエントリに対して小さい。したがって、例えば、ＣＰＵ１１（図１）が３２ｂｉｔ単位にデータを処理する場合、ＣＰＵ１１が１回に処理可能なＦＡＴエントリの数が多くなり、より高速にＦＡＴエントリを処理することが可能になる。ファイルアクセスプログラムＰＲは、より高速にＦＡＴエントリを処理することにより、対象のクラスタをより高速に検索することができる。
【０１０１】
以上のように、本実施の形態例におけるファイルアクセスプログラムＰＲは、データ領域の複数のクラスタに分割して記憶されるファイルに、クラスタの連鎖情報を有するクラスタ管理テーブルｔ１、ｔ２に基づいてアクセスするアクセス工程を有する。また、クラスタ管理テーブルｔ１、ｔ２は、第１のクラスタと第１のクラスタに連鎖する後続の第２のクラスタとがデータ領域内の連続するアドレスに位置する場合に、第１のクラスタに対応して第１の管理情報を有し、第１、第２のクラスタが不連続のアドレスに位置する場合に、第１のクラスタに対応して第２の管理情報を有する第１のテーブル（ＦＡＴ２）ｔ１と、不連続のアドレスに位置する第１、第２のクラスタのクラスタ識別情報を有する第２のテーブル（不連続クラスタリスト）ｔ２とを有する。
【０１０２】
本実施の形態例におけるファイルアクセスプログラムＰＲは、第１のテーブル（ＦＡＴ２）ｔ１の各エントリのサイズが小さいため、キャッシュメモリに保持可能なエントリの割合を増加させることができ、キャッシュヒット率を向上させ、ファイルのアクセス効率を向上させることができる。また、ファイルアクセスプログラムＰＲは、第１のテーブル（ＦＡＴ２）の各エントリのサイズが小さいことにより、ＣＰＵ１１が一度に処理可能なエントリの数を多くすることができる。これにより、ファイルアクセスプログラムＰＲは、クラスタをより高速に検索することができ、ファイルのアクセス効率を向上させることができる。また、本実施の形態例におけるファイルアクセスプログラムＰＲは、第２のテーブル（不連続クラスタリスト）ｔ２に基づいて、対応するクラスタの後続のクラスタの位置を簡易に検出することができる。
【０１０３】
また、本実施の形態例におけるファイルアクセスプログラムＰＲは、複数の種類のファイルシステムのＦＡＴｆｔと互換性のある共通のクラスタ管理テーブルｔ１、ｔ２にしたがって、ファイルアクセスを行う。したがって、本実施の形態例におけるファイルアクセスプログラムＰＲは、ファイルシステムのＦＡＴ形式の種別に関わらず、統一した処理に基づいてファイルアクセスを行うことができる。これにより、プログラムが統一可能になると共に、保守工数が削減可能になる。
【０１０４】
また、本実施の形態例におけるファイルアクセスプログラムＰＲにおいて、第１のテーブルは、さらに、ファイルのデータを記憶しない第３のクラスタに対応して第３の管理情報を有し、ファイルの末尾のデータを記憶する第４のクラスタに対応して第４の管理情報を有する。これにより、ファイルアクセスプログラムは、空きのクラスタ及びファイルを構成する最後尾のクラスタの検索を高速化することができる。
【０１０５】
また、本実施の形態例におけるファイルアクセスプログラムＰＲにおいて、第１のテーブルは、さらに、第１乃至第４のクラスタと異なる第５のクラスタに対応して第２の管理情報を有し、第２のテーブルは、さらに、第５のクラスタのクラスタ識別情報と、第５のクラスタの状態情報を有する。これにより、ファイルアクセスプログラムは、不良クラスタ等の検索を高速化することができる。
【０１０６】
また、本実施の形態例におけるファイルアクセスプログラムＰＲは、さらに、複数のクラスタに対応して連鎖情報として後続のクラスタ識別情報を有するファイルアロケーションテーブル（以下、ＦＡＴ）を、クラスタ管理テーブルｔ１、ｔ２に変換する変換工程を有する。これにより、ファイルアクセスプログラムＰＲは、ファイルシステムのＦＡＴ形式の種別に関わらず、クラスタ管理テーブルｔ１、ｔ２に基づくことによって、統一した処理にしたがって、ファイルアクセスを行うことができる。
【０１０７】
また、本実施の形態例におけるファイルアクセスプログラムの変換工程では、記憶媒体の装着を検知したときに、検知した記憶媒体のＦＡＴｆｔをクラスタ管理テーブルに変換し、検知した記憶媒体の取り外しを検知したときに、クラスタ管理テーブルをＦＡＴｆｔに逆変換する。ファイルアクセスプログラムＰＲは、クラスタ管理テーブルｔ１、ｔ２をファイルシステムのＦＡＴｆｔに変換可能であることから、クラスタ管理テーブルｔ１、ｔ２は、ファイルシステムのＦＡＴｆｔと互換性を有する。
【０１０８】
また、本実施の形態例におけるファイルアクセスプログラムＰＲでは、クラスタ管理テーブルｔ１、ｔ２は第１の記憶領域（ＦＡＴキャッシュ、ＲＡＭ）１２に記憶され、ＦＡＴｆｔは、第１の記憶領域よりアクセスが遅い第２の記憶領域（記憶媒体、二次記憶装置）１７に記憶される。ファイルアクセスプログラムＰＲは、クラスタ管理テーブルｔ１、ｔ２をＦＡＴキャッシュに保持することによって、ＦＡＴキャッシュに保持可能なエントリの割合を増加させることができ、クラスタの検索を高速化できる。
【０１０９】
また、本実施の形態例におけるファイルアクセスプログラムＰＲの変換工程では、第１の記憶領域（ＦＡＴキャッシュ、ＲＡＭ）１２のクラスタ管理テーブルｔ１、ｔ２にアクセス対象のクラスタのエントリが含まれない場合に、第１の記憶領域１２のクラスタ管理テーブルｔ１、ｔ２をＦＡＴｆｔに逆変換し第２の記憶領域（記憶媒体、二次記憶装置）１７に記憶させると共に、第２の記憶領域１７のアクセス対象のクラスタのエントリを含むＦＡＴｆｔをクラスタ管理テーブルｔ１、ｔ２に変換し第１の記憶領域１２に読み出す。これにより、本実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴキャッシュのクラスタ管理テーブルｔ１、ｔ２の入れ替え処理を行うことができる。また、ファイルアクセスプログラムＰＲは、第１のテーブル（ＦＡＴ２）ｔ１の各エントリのサイズが小さいことにより、ＦＡＴキャッシュの入れ替え頻度を大幅に削減することができ、記憶媒体１７に対するＩ／Ｏ処理を削減し、アクセス効率を向上させることができる。
【０１１０】
また、本実施の形態例におけるファイルアクセスプログラムＰＲの変換工程では、第１の記憶領域（ＦＡＴキャッシュ、ＲＡＭ）１２のサイズに対応するクラスタ管理テーブルｔ１、ｔ２のエントリ数のＦＡＴｆｔのエントリを変換対象とする。ファイルアクセスプログラムＰＲは、エントリのサイズがクラスタ管理テーブルｔ１、ｔ２をＦＡＴキャッシュに保持することにより、ＦＡＴｆｔに対して、ＦＡＴキャッシュに保持可能なエントリの割合を増加させることができる。
【０１１１】
また、本実施の形態例におけるファイルアクセスプログラムＰＲのアクセス工程では、ファイルのデータを第１のクラスタと連続するアドレスに位置する第２のクラスタに書き込むとき、第１のクラスタの第１のテーブル（ＦＡＴ２）ｔ１に第１の管理情報を記憶させ、第１のクラスタと連続しないアドレスに位置する第２のクラスタに書き込むとき、第１のクラスタの第１のテーブル（ＦＡＴ２）ｔ１に第２の管理情報を記憶させると共に、第２のテーブル（不連続クラスタリスト）ｔ２に第１、第２のクラスタのクラスタ識別情報を記憶させる。これにより、本実施の形態例におけるファイルアクセスプログラムＰＲは、ファイルのデータの書き込み時に、クラスタ管理テーブルｔ１、ｔ２を生成することができる。
【０１１２】
また、本実施の形態例におけるファイルアクセスプログラムＰＲのアクセス工程では、ファイルのデータを第２のクラスタから読み出すとき、第１のテーブル（ＦＡＴ２）ｔ１に第１のクラスタに対応して第１の管理情報が記憶される場合に、第１のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、第１のテーブル（ＦＡＴ２）ｔ１に第１のクラスタに対応して第２の管理情報が記憶される場合に、第２のテーブル（不連続クラスタリスト）ｔ２を参照し、第１のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出す。これにより、本実施の形態例におけるファイルアクセスプログラムＰＲは、クラスタ管理テーブルｔ１、ｔ２に基づいて、ファイルのデータを読み出すことができる。
【０１１３】
［第２の実施の形態例］
第１の実施の形態例ではＦＡＴ２ｔ１及び不連続クラスタリストｔ２がＦＡＴキャッシュに記憶される場合を例示した。これに対し、第２の実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２を、ＦＡＴキャッシュに加えて、記憶媒体（図１の二次記憶装置１７）も記憶する。ファイルアクセスプログラムＰＲは、例えば、ＦＡＴキャッシュの入れ替え時に、ＦＡＴキャッシュ上のＦＡＴ２ｔ１及び不連続クラスタリストｔ２を記憶媒体に記憶させ、ＦＡＴキャッシュの入れ替え後に、記憶媒体上のＦＡＴ２ｔ１及び不連続クラスタリストｔ２をＦＡＴｆｔに変換し書き戻す。
【０１１４】
図１７は、第２の実施の形態例におけるＦＡＴ２ｔ１及び不連続クラスタリストｔ２の格納場所を説明する図である。図１７の（Ａ）（Ｂ）は、第１、第２の実施の形態例におけるＲＡＭ（ＦＡＴキャッシュ）１２及び二次記憶装置１７である。図１７の（Ａ）に示すように、第１の実施の形態例において、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２は、ＲＡＭ１２（ＦＡＴキャッシュ）に格納される。これに対し、図１７の（Ｂ）に示すように、第２の実施の形態例では、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２は、ＲＡＭ１２に加えて、さらに、二次記憶装置１７にも格納される。即ち、第２の実施の形態例における二次記憶装置１７は、ＦＡＴｆｔに加えて、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２を記憶する。
【０１１５】
続いて、第２の実施の形態例における処理を説明する。第２の実施の形態例における記憶媒体のマウント時の処理、及び、ＦＡＴｆｔとＦＡＴ２ｔ１及び不連続クラスタリストｔ２との変換処理は、第１の実施の形態例と同様である。第２の実施の形態例における記憶媒体からのファイルの読み出し処理、及び、記憶媒体へのファイルの書き込み処理をフローチャート図に基づいて説明する。
【０１１６】
［フローチャート］
図１８は、第２の実施の形態例における記憶媒体からのファイルの読み出し処理を説明するフローチャート図である。図１８の工程Ｓ１２１〜Ｓ１２３は、図１５に示す第１の実施の形態例における工程Ｓ８１〜Ｓ８３と同様である。ＦＡＴキャッシュ上にない場合（Ｓ１２３のＮＯ）、第２の実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴキャッシュから不要なセクタを選択し記憶媒体に書き込む（Ｓ１２４）。このとき、第２の実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２を、ＦＡＴｆｔに変換しない。
【０１１７】
次に、ファイルアクセスプログラムＰＲは、記憶媒体上のＦＡＴ２ｔ１から、クラスタ番号ｉのＦＡＴエントリを含むＦＡＴエントリをＦＡＴキャッシュに読み出す（Ｓ１２５）。なお、記憶媒体上のＦＡＴ２ｔ１にクラスタ番号ｉのＦＡＴエントリが含まれない場合、ファイルアクセスプログラムＰＲは、クラスタ番号ｉのＦＡＴエントリを含むＦＡＴｆｔを、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換してＦＡＴキャッシュに読み出す。クラスタ番号ｉのＦＡＴエントリを含むＦＡＴエントリを読み出した後の工程は、図１５のフローチャート図に示す第１の実施の形態例における工程Ｓ８８〜Ｓ９２と同様である。
【０１１８】
図１９は、第２の実施の形態例における記憶媒体へのファイルの書き込み処理を説明するフローチャート図である。工程Ｓ１３１〜Ｓ１３５の処理は、図１６に示す第１の実施の形態例における工程Ｓ１０１〜Ｓ１０５と同様である。ＦＡＴキャッシュ上にない場合（Ｓ１３５のＮＯ）、第２の実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴキャッシュから不要なセクタを選択し記憶媒体に書き込む（Ｓ１３６）。このとき、第２の実施の形態例におけるファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２を、ＦＡＴｆｔに変換しない。
【０１１９】
次に、ファイルアクセスプログラムＰＲは、記憶媒体上のＦＡＴ２ｔ１から、クラスタ番号ｉのＦＡＴエントリを含むＦＡＴエントリをＦＡＴキャッシュに読み出す（Ｓ１３７）。なお、記憶媒体上のＦＡＴ２ｔ１にクラスタ番号ｉのＦＡＴエントリが含まれない場合、ファイルアクセスプログラムＰＲは、クラスタ番号ｉのＦＡＴエントリを含むＦＡＴｆｔを、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２に変換してＦＡＴキャッシュに読み出す。クラスタ番号ｉのＦＡＴエントリを含むＦＡＴエントリを読み出した後の工程は、図１６のフローチャート図に示す第１の実施の形態例における工程Ｓ１１０〜Ｓ１１５と同様である。
【０１２０】
続いて、記憶媒体上のＦＡＴ２ｔ１及び不連続クラスタリストｔ２のＦＡＴｆｔへの書き戻し処理をフローチャート図に基づいて説明する。第２の実施の形態例におけるファイルアクセスプログラムＰＲは、例えば、ＦＡＴキャッシュの入れ替え後、別のタイミングで、記憶媒体上のＦＡＴ２ｔ１及び不連続クラスタリストｔ２をＦＡＴｆｔに変換し記憶媒体に書き戻す。例えば、ファイルアクセスプログラムＰＲは、処理の負荷が低いタイミングや、記憶媒体が取り外される前のタイミングに、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２をＦＡＴｆｔに変換して記憶媒体に書き戻す。
【０１２１】
図２０は、記憶媒体上のＦＡＴ２ｔ１及び不連続クラスタリストｔ２の書き戻し処理を説明するフローチャート図である。まず、ファイルアクセスプログラムＰＲは、記憶媒体上にＦＡＴ２ｔ１があるか否かを判定する（Ｓ１４１）。記憶媒体上にＦＡＴ２ｔ１がある場合（Ｓ１４１のＹＥＳ）、ファイルアクセスプログラムＰＲは、記憶媒体からＦＡＴキャッシュにＦＡＴ２ｔ１を読み出す（Ｓ１４２）。続いて、ファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１をＦＡＴｆｔに変換し、記憶媒体に書き込む（Ｓ１４３）。また、ファイルアクセスプログラムＰＲは、変換前のＦＡＴ２ｔ１及び不連続クラスタリストｔ２を削除する。
【０１２２】
これにより、ファイルアクセスプログラムＰＲは、記憶媒体上のＦＡＴ２ｔ１及び不連続クラスタリストｔ２を、ＦＡＴｆｔに書き戻す。第２の実施の形態例におけるファイルアクセスプログラムＰＲは、記憶媒体をマウントした後、記憶媒体の取り外しを検知するまでの間、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２を記憶媒体に記憶させておいてもよい。この場合、ファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２とＦＡＴｆｔとの変換処理の回数をより少なくすることができる。
【０１２３】
以上のように、第２の実施の形態例におけるファイルアクセスプログラムＰＲの変換工程では、第１の記憶領域のクラスタ管理テーブルｔ１、ｔ２にアクセス対象のクラスタのエントリが含まれない場合に、第１の記憶領域（ＦＡＴキャッシュ、ＲＡＭ）１２のクラスタ管理テーブルｔ１、ｔ２を第２の記憶領域（記憶媒体、二次記憶装置）１７に記憶させると共に、第２の記憶領域１７のアクセス対象のクラスタのエントリを含むＦＡＴｆｔをクラスタ管理テーブルｔ１、ｔ２に変換し第１の記憶領域１２に読み出した後、第２の記憶領域１７に記憶されたクラスタ管理テーブルｔ１、ｔ２をＦＡＴｆｔに逆変換する。
【０１２４】
これにより、第２の実施の形態例におけるファイルアクセスプログラムＰＲは、ファイルアクセス時のＦＡＴキャッシュの入れ替え処理において、クラスタ管理テーブルｔ１、ｔ２からＦＡＴｆｔへの変換処理を行わないことにより、ファイルアクセスを高速化することができる。また、クラスタ管理テーブルｔ１、ｔ２が記憶媒体１７に記憶されることにより、ファイルのデータの更新中にコンピュータの電源断が発生し、データの一部が破損した場合でも、ファイルアクセスプログラムＰＲは、記憶媒体１７上のクラスタ管理テーブルｔ１、ｔ２に基づいて、破損前のデータを復旧することができる。
【０１２５】
また、第１の実施の形態例と同様にして、第２の実施の形態例におけるファイルアクセスプログラムＰＲは、第１のテーブル（ＦＡＴ２）ｔ１の各エントリのサイズが小さいことにより、キャッシュヒット率を向上させ、ファイルのアクセス効率を向上させることができる。また、ファイルアクセスプログラムＰＲは、ＣＰＵ１１が一度に処理可能なエントリ数を増加させることにより、クラスタの検索を高速化し、ファイルへのアクセスを効率化できる。また、本実施の形態例におけるファイルアクセスプログラムＰＲは、ファイルシステムのＦＡＴ形式の種別に関わらず、プログラムを統一化できると共に、保守工数を削減できる。
【０１２６】
［第３の実施の形態例］
第３の実施の形態例では、ファイルアクセスプログラムＰＲがアクセスする二次記憶装置１７が、着脱されない固定の二次記憶装置１７である場合を例示する。二次記憶装置１７の着脱が発生しない場合、ファイルアクセスプログラムＰＲは、二次記憶装置１７上のＦＡＴ２ｔ１及び不連続クラスタリストｔ２のみに基づいて、ファイルを管理してもよい。この場合、ファイルアクセスプログラムＰＲは、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２をＦＡＴ形式のファイルシステムのＦＡＴｆｔに変換する必要がない。
【０１２７】
図２１は、第３の実施の形態例におけるＦＡＴ２ｔ１及び不連続クラスタリストｔ２の格納場所を説明する図である。図１７の（Ａ）（Ｂ）は、第１、第３の実施の形態例におけるＲＡＭ（ＦＡＴキャッシュ）１２及び二次記憶装置１７である。図１７の（Ａ）に示すように、第１の実施の形態例において、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２は、ＲＡＭ１２に格納される。これに対し、図１７の（Ｂ）に示すように、第３の実施の形態例では、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２は、ＲＡＭ１２に加えて、さらに、固定の二次記憶装置１７に記憶される。また、固定の二次記憶装置１７は、他のコンピュータで使用されることを想定する必要がないため、ＦＡＴ２ｔ１及び不連続クラスタリストｔ２のみを記憶し、ＦＡＴ形式のファイルシステムのＦＡＴｆｔを記憶しない。
【０１２８】
第３の実施の形態例におけるＦＡＴｆｔとＦＡＴ２ｔ１及び不連続クラスタリストｔ２との変換処理は、第１の実施の形態例と同様である。また、第３の実施の形態例における記憶媒体（二次記憶装置１７）からのファイルの読み出し処理、及び、記憶媒体へのファイルの書き込み処理は、第２の実施の形態例における図１８、図１９のフローチャート図と同様である。
【０１２９】
以上のように、第３の実施の形態例のファイルアクセスプログラムＰＲにおいて、クラスタ管理テーブルｔ１、ｔ２は、第１の記憶領域（ＦＡＴキャッシュ、ＲＡＭ）１２、及び、第１の記憶領域１２よりアクセスが遅い第２の記憶領域（記憶媒体、二次記憶装置）１７に記憶される。また、ファイルアクセスプログラムＰＲの変換工程では、第１の記憶領域１２のクラスタ管理テーブルｔ１、ｔ２にアクセス対象のクラスタのエントリが含まれない場合に、第１の記憶領域１２のクラスタ管理テーブルｔ１、ｔ２を第２の記憶領域１７に記憶させると共に、第２の記憶領域１７のアクセス対象のクラスタのエントリを含むクラスタ管理テーブルｔ１、ｔ２を第１の記憶領域１２に読み出す。
【０１３０】
これにより、第３の実施の形態例におけるファイルアクセスプログラムＰＲは、ファイルアクセス時のＦＡＴキャッシュの入れ替え処理において、クラスタ管理テーブルｔ１、ｔ２からＦＡＴｆｔへの変換処理を行わないことにより、より高速にファイルアクセスを行うことができる。
【０１３１】
また、第１の実施の形態例と同様にして、第３の実施の形態例におけるファイルアクセスプログラムＰＲは、第１のテーブル（ＦＡＴ２）ｔ１の各エントリのサイズが小さいことにより、キャッシュヒット率を向上させ、ファイルのアクセス効率を向上させることができる。また、ファイルアクセスプログラムＰＲは、ＣＰＵ１１が一度に処理可能なエントリ数を増加させることにより、クラスタの検索を高速化し、ファイルへのアクセスを効率化できる。また、本実施の形態例におけるファイルアクセスプログラムＰＲは、ファイルシステムのＦＡＴ形式の種別に関わらず、プログラムを統一化できると共に、保守工数を削減できる。
【０１３２】
以上の実施の形態をまとめると、次の付記のとおりである。
【０１３３】
（付記１）
ファイルアクセス処理をコンピュータに実行させるファイルアクセスプログラムであって、
前記ファイルアクセス処理は、
データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、
前記クラスタ管理テーブルは、第１のクラスタと前記第１のクラスタに連鎖する後続の第２のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第１のクラスタに対応して第１の管理情報を有し、前記第１、第２のクラスタが不連続のアドレスに位置する場合に、前記第１のクラスタに対応して第２の管理情報を有する第１のテーブルと、前記不連続のアドレスに位置する前記第１、第２のクラスタのクラスタ識別情報を有する第２のテーブルとを有するファイルアクセスプログラム。
【０１３４】
（付記２）
付記１において、
前記第１のテーブルは、さらに、前記ファイルのデータを記憶しない第３のクラスタに対応して第３の管理情報を有し、前記ファイルの末尾の前記データを記憶する第４のクラスタに対応して第４の管理情報を有するファイルアクセスプログラム。
【０１３５】
（付記３）
付記２において、
前記第１のテーブルは、さらに、前記第１乃至第４のクラスタと異なる第５のクラスタに対応して前記第２の管理情報を有し、
前記第２のテーブルは、さらに、前記第５のクラスタのクラスタ識別情報と、前記第５のクラスタの状態情報を有するファイルアクセスプログラム。
【０１３６】
（付記４）
付記１乃至３のいずれかにおいて、
前記ファイルアクセス処理は、さらに、
前記複数のクラスタに対応して前記連鎖情報として前記後続のクラスタ識別情報を有するファイルアロケーションテーブル（以下、ＦＡＴ）を、前記クラスタ管理テーブルに変換する変換工程を有するファイルアクセスプログラム。
【０１３７】
（付記５）
付記４において、
前記変換工程では、記憶媒体の装着を検知したときに、前記検知した記憶媒体の前記ＦＡＴを前記クラスタ管理テーブルに変換し、前記検知した記憶媒体の取り外しを検知したときに、前記クラスタ管理テーブルを前記ＦＡＴに逆変換するファイルアクセスプログラム。
【０１３８】
（付記６）
付記４において、
前記クラスタ管理テーブルは第１の記憶領域に記憶され、
前記ＦＡＴは、前記第１の記憶領域よりアクセスが遅い第２の記憶領域に記憶されるファイアクセスプログラム。
【０１３９】
（付記７）
付記６において、
前記変換工程では、前記第１の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第１の記憶領域の前記クラスタ管理テーブルを前記ＦＡＴに逆変換し前記第２の記憶領域に記憶させると共に、前記第２の記憶領域の前記アクセス対象のクラスタのエントリを含む前記ＦＡＴを前記クラスタ管理テーブルに変換し前記第１の記憶領域に読み出すファイルアクセスプログラム。
【０１４０】
（付記８）
付記６において、
前記変換工程では、前記第１の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第１の記憶領域の前記クラスタ管理テーブルを前記第２の記憶領域に記憶させると共に、前記第２の記憶領域の前記アクセス対象のクラスタのエントリを含む前記ＦＡＴを前記クラスタ管理テーブルに変換し前記第１の記憶領域に読み出した後、前記第２の記憶領域に記憶された前記クラスタ管理テーブルを前記ＦＡＴに逆変換するファイルアクセスプログラム。
【０１４１】
（付記９）
付記４において、
前記クラスタ管理テーブルは、第１の記憶領域、及び、前記第１の記憶領域よりアクセスが遅い第２の記憶領域に記憶され、
前記変換工程では、前記第１の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第１の記憶領域の前記クラスタ管理テーブルを前記第２の記憶領域に記憶させると共に、前記第２の記憶領域の前記アクセス対象のクラスタのエントリを含む前記クラスタ管理テーブルを前記第１の記憶領域に読み出すファイルアクセスプログラム。
【０１４２】
（付記１０）
付記４乃至９のいずれかにおいて、
前記変換工程では、前記第１の記憶領域のサイズに対応する前記クラスタ管理テーブルのエントリ数の前記ＦＡＴのエントリを変換するファイルアクセスプログラム。
【０１４３】
（付記１１）
付記１乃至１０のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第１のクラスタと連続するアドレスに位置する前記第２のクラスタに書き込むとき、前記第１のクラスタの前記第１のテーブルに前記第１の管理情報を記憶させ、前記第１のクラスタと連続しないアドレスに位置する前記第２のクラスタに書き込むとき、前記第１のクラスタの前記第１のテーブルに前記第２の管理情報を記憶させると共に、前記第２のテーブルに前記第１、第２のクラスタのクラスタ識別情報を記憶させるファイルアクセスプログラム。
【０１４４】
（付記１２）
付記１乃至１０のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第２のクラスタから読み出すとき、前記第１のテーブルに前記第１のクラスタに対応して前記第１の管理情報が記憶される場合に、前記第１のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、前記第１のテーブルに前記第１のクラスタに対応して前記第２の管理情報が記憶される場合に、前記第２のテーブルを参照し、前記第１のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出すファイルアクセスプログラム。
【０１４５】
（付記１３）
付記１乃至１２のいずれかにおいて、
前記第１のテーブルが有する管理情報のサイズは、２ビットであるファイルアクセスプログラム。
【０１４６】
（付記１４）
付記１乃至１３のいずれかにおいて、
前記第２のテーブルが有する前記クラスタ識別情報のサイズは、複数の種類の前記ＦＡＴが有するクラスタ識別情報のサイズのうち、最も大きいサイズであるファイルアクセスプログラム。
【０１４７】
（付記１５）
データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、
前記クラスタ管理テーブルは、第１のクラスタと前記第１のクラスタに連鎖する後続の第２のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第１のクラスタに対応して第１の管理情報を有し、前記第１、第２のクラスタが不連続のアドレスに位置する場合に、前記第１のクラスタに対応して第２の管理情報を有する第１のテーブルと、前記不連続のアドレスに位置する前記第１、第２のクラスタのクラスタ識別情報を有する第２のテーブルとを有するファイルアクセス方法。
【０１４８】
（付記１６）
付記１５において、
前記第１のテーブルは、さらに、前記ファイルのデータを記憶しない第３のクラスタに対応して第３の管理情報を有し、前記ファイルの末尾の前記データを記憶する第４のクラスタに対応して第４の管理情報を有するファイルアクセス方法。
【０１４９】
（付記１７）
付記１６において、
前記第１のテーブルは、さらに、前記第１乃至第４のクラスタと異なる第５のクラスタに対応して前記第２の管理情報を有し、
前記第２のテーブルは、さらに、前記第５のクラスタのクラスタ識別情報と、前記第５のクラスタの状態情報を有するファイルアクセス方法。
【０１５０】
（付記１８）
付記１５乃至１７のいずれかにおいて、
前記複数のクラスタに対応して前記連鎖情報として前記後続のクラスタ識別情報を有するファイルアロケーションテーブル（以下、ＦＡＴ）を、前記クラスタ管理テーブルに変換する変換工程を有するファイルアクセス方法。
【０１５１】
（付記１９）
付記１５乃至１８のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第１のクラスタと連続するアドレスに位置する前記第２のクラスタに書き込むとき、前記第１のクラスタの前記第１のテーブルに前記第１の管理情報を記憶させ、前記第１のクラスタと連続しないアドレスに位置する前記第２のクラスタに書き込むとき、前記第１のクラスタの前記第１のテーブルに前記第２の管理情報を記憶させると共に、前記第２のテーブルに前記第１、第２のクラスタのクラスタ識別情報を記憶させるファイルアクセス方法。
【０１５２】
（付記２０）
付記１５乃至１８のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第２のクラスタから読み出すとき、前記第１のテーブルに前記第１のクラスタに対応して前記第１の管理情報が記憶される場合に、前記第１のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、前記第１のテーブルに前記第１のクラスタに対応して前記第２の管理情報が記憶される場合に、前記第２のテーブルを参照し、前記第１のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出すファイルアクセス方法。
【符号の説明】
【０１５３】
１１：ＣＰＵ、１２：ＲＡＭ、１３：ＲＯＭ、１４：表示部、１５：入力部、１６：メディアアクセス装置、１７：二次記憶装置（記憶媒体）、ＰＲ：ファイルアクセスプログラム、ｔ１：ＦＡＴ２、ｔ２：不連続クラスタリスト、ｆｔ：ファイルシステムのＦＡＴ
【図１】
2015121925.tif 000003
【図２】
2015121925.tif 000004
【図３】
2015121925.tif 000005
【図４】
2015121925.tif 000006
【図５】
2015121925.tif 000007
【図６】
2015121925.tif 000008
【図７】
2015121925.tif 000009
【図８】
2015121925.tif 000010
【図９】
2015121925.tif 000011
【図１０】
2015121925.tif 000012
【図１１】
2015121925.tif 000013
【図１２】
2015121925.tif 000014
【図１３】
2015121925.tif 000015
【図１４】
2015121925.tif 000016
【図１５】
2015121925.tif 000017
【図１６】
2015121925.tif 000018
【図１７】
2015121925.tif 000019
【図１８】
2015121925.tif 000020
【図１９】
2015121925.tif 000021
【図２０】
2015121925.tif 000022
【図２１】
2015121925.tif 000023