(58)【調査した分野】(Int.Cl.,DB名)
記憶媒体のデータ領域の複数のクラスタに分割して記憶されるファイルの読み出し時に、前記複数のクラスタの連鎖情報として前記複数のクラスタ各々の後続クラスタのクラスタ識別情報を有するファイルアロケーションテーブル(以下、FATという)を、クラスタ管理テーブルに変換する変換工程と、
前記クラスタ管理テーブルをキャッシュメモリに格納する格納工程と、
前記キャッシュメモリに格納された前記クラスタ管理テーブルにより前記ファイルをアクセスするアクセス工程を有し、
前記変換工程は、
前記複数のクラスタの第1のクラスタと前記第1のクラスタに連鎖する後続の第2のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第1のクラスタに対応してFATの種別に共通のビット数の連続性情報を前記クラスタ管理テーブルの前記FATの種別に共通で前記クラスタのビット数より少ないビット数の第1のテーブルに設定し、
前記第1、第2のクラスタが不連続のアドレスに位置する場合に、前記第1のクラスタに対応して前記FATの種別に共通のビット数の不連続性情報を前記クラスタ管理テーブルの前記第1のテーブルに設定し、且つ前記不連続のアドレスに位置する前記第1、第2のクラスタの前記クラスタ識別情報を前記クラスタ管理テーブルの第2のテーブルに設定し、
前記アクセス工程では、前記ファイルのデータを前記第2のクラスタから読み出すとき、前記第1のテーブルに前記第1のクラスタに対応して前記連続性情報が記憶される場合に、前記第1のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、前記第1のテーブルに前記第1のクラスタに対応して前記不連続性情報が記憶される場合に、前記第2のテーブルを参照し、前記第1のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出し、
前記ファイルのデータを前記第1のクラスタと連続するアドレスに位置する前記第2のクラスタに書き込むとき、前記第1のクラスタの前記第1のテーブルに前記連続性情報を記憶させ、前記第1のクラスタと連続しないアドレスに位置する前記第2のクラスタに書き込むとき、前記第1のクラスタの前記第1のテーブルに前記不連続性情報を記憶させると共に、前記第2のテーブルに前記第1、第2のクラスタのクラスタ識別情報を記憶させるファイルアクセス方法。
【発明を実施するための形態】
【0013】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0014】
[ファイルアクセス装置の構成]
図1は、本実施の形態例におけるファイルアクセス装置の一例について説明する図である。
図1のファイルアクセス装置は、例えば、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、表示部14、入力部15、メディアアクセス装置16、二次記憶装置17を有する。各部は、バス18を介して相互に接続される。表示部14は、例えば、ディレスプレイであって、入力部15はキーボードやマウスである。メディアアクセス装置16は、二次記憶装置17へのアクセスを制御する装置である。ROM13には、例えば、本実施の形態例におけるファイルアクセスプログラムPRが記憶される。ファイルアクセスプログラムPRは、CPU11と協働することによって、本実施の形態例におけるファイルアクセス処理を実現する。
【0015】
また、本実施の形態例において、RAM12は、例えば、FAT(File Allocation Table)2t1と不連続クラスタリストt2とを有する。FAT2t1、及び、不連続クラスタリストt2の詳細については後述する。二次記憶装置17は、例えば、SDメモリーカードやハードディスク等の記憶媒体である。二次記憶装置17に記憶されるファイルdtは、二次記憶装置17に対応するFAT形式のファイルシステムに基づいて記憶される。
【0016】
[ソフトウェアの構成]
図2は、本実施の形態例におけるファイルアクセス装置におけるソフトウェアの構成の一例を説明する図である。
図1に図示していないが、各ソフトウェアは、例えば、ファイルアクセス装置のROM13等に記憶される。
【0017】
図2のソフトウェアは、例えば、アプリケーション21、動画編集ライブラリ22、ファイルシステムソフトウェア23、メディアドライバ24を有する。本実施の形態例におけるファイルアクセスプログラムPR(
図1)は、ファイルシステムソフトウェア23の一部のプログラムである。また、
図2のハードウェアは、メディアアクセス装置16(
図1)、メディア(二次記憶装置)17(
図1)を有する。
【0018】
動画編集等を行うアプリケーション21は、例えば、ユーザによる操作を受け付けると、ユーザの操作に対応する指示情報を生成し、動画編集ライブラリ22に通知する。例えば、指示情報は、二次記憶装置17に記憶されたファイルに対するデータの挿入処理、データの除去処理、ファイル間のデータの移動処理等を指示する情報である。そして、動画編集ライブラリ22は、指示情報をファイルシステムソフトウェア23のインタフェースに合わせて変換し、ファイルシステムソフトウェア23に通知する。ファイルシステムソフトウェア23は、通知された指示情報に基づいて、メディアドライバ24を介して、二次記憶装置17のファイルdtにアクセスする。
【0019】
メディアアクセス装置16は、メディアドライバ24から入力される命令に基づいて、二次記憶装置17に記憶されるファイルdtのデータに対する制御を行う。前述したとおり、本実施の形態例において、二次記憶装置17はFAT形式に基づいてフォーマットされる。
【0020】
続いて、FAT形式のファイルシステムの概要を説明する。
【0021】
[FAT形式のファイルシステム]
図3は、FAT形式のファイルシステムの概要を説明する例図である。
図3の(A)に示すように、FAT形式のファイルシステムは、例えば、ブートセクタ領域X1、FAT領域X2、ファイル/ディレクトリ領域X3の3つの領域に基づいて構成される。ブートセクタ領域X1は、二次記憶装置17の容量やクラスタの単位サイズ等の二次記憶装置17に係る情報を有する。ブートセクタ領域X1は、例えば、512バイトのセクタ単位に基づいて管理される。
【0022】
ファイル/ディレクトリ領域X3は、ディレクトリエントリと呼ばれるファイル情報と、ファイルのデータとを有する。ファイル/ディレクトリ領域X3は、セクタより一回りサイズの大きいクラスタ単位(セクタサイズの2のn乗倍サイズ)に管理される。ディレクトリエントリは、例えば、各ファイルについて、ファイル名、拡張子、ファイルサイズ、データが記憶される先頭クラスタの番号等のファイル情報を有する。
【0023】
FAT領域X2は、ファイル/ディレクトリ領域X3内の各クラスタに対応して管理情報を有するFATエントリを有する。対応するクラスタにデータが記憶され、後続のデータがある場合、管理情報は、後続のデータが記憶されるクラスタのクラスタ番号を示す。また、対応するクラスタにデータが記憶され、後続のデータがない場合、管理情報は末端(EOC:End Of Cluster)を示す。また、対応するクラスタにデータが記憶されない場合の管理情報は空きを示し、対応するクラスタが破損している場合の管理情報は不良クラスタを示す。なお、0番目と1番目のFATエントリには、予約領域を示す値が記憶される。
【0024】
前述したとおり、ディレクトリエントリは、ファイルの最初のデータを格納する先頭クラスタのクラスタ番号を有する。そして、先頭クラスタのFATエントリは、次に連鎖するクラスタのクラスタ番号を有する。即ち、FAT領域X2は、ファイルのデータを構成するクラスタの連鎖情報を有する。
【0025】
図3の(B)は、ファイル(この例では、ファイル1)dtのデータを構成するクラスタの連鎖構造を例示する図である。
図3の(B)における正方形はクラスタを示し、正方形内に記述される番号はクラスタ番号を示す。
図3の(B)に示すように、ファイル1dtのデータは、クラスタ番号3のクラスタ(以下、クラスタ3)を先頭として、クラスタ4、クラスタ5、クラスタ12、クラスタ13に順次記憶される。したがって、
図3の(A)のファイル/ディレクトリ領域X3のディレクトリエントリは、ファイル1の先頭クラスタがクラスタ3である旨の情報を有する。また、FAT領域X2のクラスタ番号3のFATエントリはクラスタ番号「4」を、クラスタ番号4のFATエントリは、クラスタ番号「5」を有する。そして、クラスタ番号13のFATエントリは、最後尾のクラスタであることを示す情報「末端(EOC)」を示す値を有する。
【0026】
また、
図3に示すFAT形式のファイルシステムには、例えば、FAT12形式、FAT16形式、FAT32形式、exFAT形式等の種別がある。FAT形式の種別に応じてFATエントリのサイズが異なる。ここで、FAT形式のファイルシステムの種別の概要を説明する。
【0027】
[FAT形式のファイルシステムの種別]
図4は、FAT形式のファイルシステムの種別の概要を説明する図である。
図4は、FAT12形式、FAT16形式、FAT32形式、exFAT形式のファイルシステムを採用する各SDカードa1〜d1と、FAT領域X2におけるFATfta〜ftd(
図3)を例示する。
【0028】
図4のFATftaは、FAT12形式のファイルシステムにおけるFATである。FATftaが有する各FATエントリのサイズは、12bitである。FAT12形式のファイルシステムにおいて管理可能なクラスタの上限数は、12bitで表現可能な数に対応する。例えば、FAT12形式のファイルシステムの規格に基づく記憶媒体が管理可能な容量の最大サイズは、64MBである。このため、容量が32MBのSDカードa1は、FAT12形式のファイルシステムに基づいてフォーマットされる。
【0029】
図4のFATftbは、FAT16形式のファイルシステムにおけるFATである。FATftbが有する各FATエントリのサイズは16bitであって、FAT16形式のファイルシステムの規格に基づく記憶媒体が管理可能な容量の最大サイズは、例えば、2GBである。このため、容量が1GBのSDカードb1は、FAT16形式のファイルシステムに基づいてフォーマットされる。
【0030】
また、
図4のFATftcは、FAT32形式のファイルシステムにおけるFATである。FATftcが有する各FATエントリのサイズは32bitであって、FAT32形式のファイルシステムの規格(例えば、SDHC:SD High-Capacity)に基づく記憶媒体が管理可能な容量の最大サイズは、例えば、32GBである。このため、容量が8GBのSDカードc1は、FAT32形式のファイルシステムに基づいてフォーマットされる。同様にして、exFAT形式のファイルシステムにおけるFATftdが有する各FATエントリのサイズは32bitであって、exFAT形式のファイルシステムの規格(例えば、SDXC:SD eXtended Capacity)に基づく記憶媒体が管理可能な容量の最大サイズは、例えば、2TBである。このため、容量が64GBのSDカードc1は、exFAT形式のファイルシステムに基づいてフォーマットされる。
【0031】
図4に示すように、FATエントリのサイズの拡張に伴い、ファイルシステムにおいて管理可能な容量の最大サイズが増加する。一方、
図4に示すように、FATエントリのサイズの拡張に伴って、FATfta〜ftdのサイズも増加する。FATfta〜ftdの一部をRAM12等のキャッシュメモリに読み込んでファイルにアクセスする場合、FATエントリのサイズの拡張に伴って、キャッシュメモリに保持可能なFATエントリの割合が減少し、キャッシュヒット率が低下する。これにより、クラスタの検索効率が低下し、ファイルのアクセス効率が低下する場合がある。
【0032】
[第1の実施の形態例]
そこで、本実施の形態例におけるファイルアクセス処理は、クラスタの連鎖情報を有するクラスタ管理テーブルに基づいて、クラスタに分割して記憶されるファイルにアクセスする。クラスタ管理テーブルは、第1のクラスタと第1のクラスタに連鎖する後続の第2のクラスタとがデータ領域内の連続するアドレスに位置する場合に、第1のクラスタに対応して第1の管理情報を有し、第1、第2のクラスタが不連続のアドレスに位置する場合に、第1のクラスタに対応して第2の管理情報を有するFAT2(第1のテーブル)t1と、不連続のアドレスに位置する第1、第2のクラスタのクラスタ識別情報を有する不連続クラスタリスト(第2のテーブル)t2とを有する。
【0033】
つまり、本実施の形態例におけるファイルアクセスプログラムPRは、FAT形式のファイルシステムの各FATftに基づいて生成された、複数の種別のFAT形式に共通のFAT2t1及び不連続クラスタリストt2に基づいて、ファイル/ディレクトリ領域X3(
図3)のクラスタにアクセスする。これにより、本実施の形態例におけるファイルアクセスプログラムは、ファイルシステムのFATftの種類に関わらず、共通の処理に基づいて、ファイルアクセスを行うことができる。また、FAT2t1の各FATエントリのサイズが小さいため、キャッシュメモリに保持可能なFATエントリの割合を増加させることができ、クラスタの検索効率を向上させることができる。
【0034】
図5は、FAT2t1、及び、不連続クラスタリストt2の概要を説明する図である。FATt1及び不連続クラスタリストt2は、例えば、二次記憶装置17に対応するFAT形式のFATftに基づいて生成される。
【0035】
本実施の形態例におけるFAT2t1の各FATエントリは、各クラスタに対応して、例えば、2bitの管理情報を有する。2bitの管理情報は、例えば、管理情報「連続」「その他(不連続)」を含む。管理情報「連続」は、対応するクラスタに記憶されるデータの後続データが、ファイル/ディレクトリ領域X3(
図3)の連続したアドレスに位置するクラスタに記憶されることを示す。また、管理情報「その他(不連続)」は、対応するクラスタに記憶されるデータの後続データが、ファイル/ディレクトリ領域X3の連続しないアドレスに位置するクラスタに記憶されることを示す。
【0036】
また、不連続クラスタリストt2は、管理情報「その他(不連続)」を有するクラスタについて、クラスタのクラスタ番号に対応して、連鎖情報における後続のクラスタのクラスタ番号を有する。
図5の例における不連続クラスタリストt2は、例えば、情報「0x00000010, 0x00001200」を有する。これは、クラスタ番号16のクラスタ(以下、クラスタ16)(16進数で0x00000010)に記憶されるデータの後続のデータが、クラスタ4608(16進数で0x00001200)に記憶されることを示す。
【0037】
また、2bitの管理情報は、さらに、管理情報「EOC」「空き」を含む。管理情報「EOC」は、対応するクラスタに記憶されるデータがファイルの最後尾のデータであることを示す。管理情報「空き」は、対応するクラスタにデータが記憶されないことを示す。また、対応するクラスタが不良クラスタである場合に、クラスタに対応するFATエントリに管理情報「その他(不連続)」が指定されてもよい。不連続クラスタリストt2は、管理情報「その他(不連続)」を有するクラスタについて、クラスタのクラスタ番号に対応して、不良クラスタである旨の情報「0xFFFFFFF7」を有する。
図5の例における不連続クラスタリストt2は、例えば、情報「0x01230450, 0xFFFFFFF7」を有する。これは、クラスタ19072080(16進数で0x01230450)が、不良クラスタであることを示す。
【0038】
なお、この例に限定されるものではなく、管理情報「その他(不連続)」は、対応するクラスタが不良クラスタ以外の状態を示す場合に、クラスタに対応するFATエントリに指定されてもよい。このとき、不連続クラスタリストt2は、管理情報「その他(不連続)」を有するクラスタについて、クラスタのクラスタ番号に対応して、当該クラスタの状態を示す状態情報を有する。
【0039】
本実施の形態例におけるファイルアクセスプログラムPRは、FATftの代わりに、
図5に示すFAT2t1及び不連続クラスタリストt2を参照して、FAT形式のファイルシステムのファイル/ディレクトリ領域X3のクラスタにアクセスする。本実施の形態例におけるファイルアクセスプログラムPRは、不連続クラスタリストt2を利用することによって、各種類のFAT形式のFATftを、2bitのFATエントリを有するFAT2t1に圧縮することができる。
【0040】
新規に作成されるファイルのデータは、ファイル/ディレクトリ領域X3(
図3)に連続して位置するクラスタに記憶されることが多い。したがって、対応するFATエントリが管理情報「連続」を有するクラスタの出現頻度は高い。FAT形式のファイルシステムにおいて、FATエントリに対応するクラスタのアドレスは、FATエントリに応じて一意に定まる。したがって、対応するクラスタと後続クラスタとのアドレスが連続する場合、FATエントリは後続クラスタのクラスタ番号を保持する必要がない。
【0041】
また、不連続クラスタリストt2は、対応するFATエントリが管理情報「その他(不連続)」を有するクラスタの後続クラスタのクラスタ番号、または、クラスタの状態情報(例えば、不良クラスタである旨の情報)を有する。FAT2t1のFATエントリは、クラスタ番号を保持する必要がないことから、2bitの領域で足る。なお、対応するFATエントリが管理情報「その他(不連続)」を有するクラスタの出現頻度は低い。このため、不連続クラスタリストt2のデータ量は抑えられると共に、不連続クラスタリストt2を参照する頻度は低い。
【0042】
なお、
図5の例において、不連続クラスタリストt2が有するクラスタ番号のサイズは、32bitである。本実施の形態例における不連続クラスタリストt2が有するクラスタ番号のサイズは、例えば、対応する全てのFAT形式のFATエントリのサイズのうち、最も大きいサイズに対応する。これにより、ファイルアクセスプログラムPRは、いずれのFAT形式であっても、FATftをFAT2t1及び不連続クラスタリストt2に変換することができる。ただし、この例に限定されるものではなく、ファイルアクセスプログラムPRは、FAT形式の種別毎にそれぞれ連続クラスタリストt2を生成してもよい。
【0043】
次に、FAT12形式、FAT16形式、FAT32形式のファイルシステムにおけるFATft、及び、本実施の形態例におけるFAT2t1、不連続クラスタリストt2を、具体例に基づいて説明する。
【0044】
図6は、具体例における2つのファイル(ファイル1、2)dt1、dt2のデータを構成するクラスタの連鎖状態を例示する図である。
図6の例において、ファイル1dt1のデータは、クラスタ2を先頭クラスタとして、クラスタ3、クラスタ4、クラスタ8、クラスタ9の順に記憶される。また、ファイル2dt2のデータは、クラスタ5を先頭クラスタとして、クラスタ6の順に記憶される。即ち、クラスタ2とクラスタ3、クラスタ3とクラスタ4、クラスタ5とクラスタ6、クラスタ8とクラスタ9は、ファイル/ディレクトリ領域X3(
図3)における連続したアドレスに位置する。一方、クラスタ4とクラスタ8は、ファイル/ディレクトリ領域X3における不連続のアドレスに位置する。
【0045】
図7は、FAT12形式、FAT16形式、FAT32形式の各FATftの具体例を示す図である。
図7の具体例では、
図6に示す2つのファイル1、2が、FAT12形式、FAT16形式、FAT32形式のファイルシステムに記憶される場合におけるFATftc、ftb、ftcを例示する。なお、各FATftc、ftb、ftcにおける初めの2つのエントリe0、e1は、予約領域(Reserved)である。以下、FAT32形式のファイルシステムにおけるFATftをFAT32ftc、FAT16形式のファイルシステムにおけるFATftをFAT16ftb、FAT12形式のファイルシステムにおけるFATftをFAT12ftaと称する。
【0046】
図7のFATftcは、FAT32形式のファイルシステムのFAT(FAT32)ftである。FAT32ftcの各FATエントリのサイズは32bitである。また、
図6で前述したとおり、ファイル1のデータは、クラスタ2を先頭クラスタとして、クラスタ3、クラスタ4、クラスタ8、クラスタ9の順に記憶される。したがって、FAT32ftcにおいて、クラスタ2のFATエントリe2は、32bitのクラスタ番号「0x00000003」を有する。また、クラスタ3のFATエントリe3は、32bitのクラスタ番号「0x00000004」を、クラスタ4のFATエントリe4は、32bitのクラスタ番号「0x00000008」を有する。そして、ファイル1の末尾のクラスタ9のFATエントリe9は、末端を示す32bitの値「0xFFFFFFFF」を有する。
【0047】
また、
図6で前述したとおり、ファイル2のデータは、クラスタ5を先頭として、クラスタ6の順に記憶される。したがって、FAT32ftcにおいて、クラスタ5のFATエントリe5は、32bitのクラスタ番号「0x00000006」を有し、クラスタ6のFATエントリe6は、EOCを示す32bitの値「0xFFFFFFFF」を有する。
【0048】
図7のFATftbは、FAT16形式のファイルシステムのFAT(FAT16)ftである。FAT16ftbの各FATエントリのサイズは16bitである。したがって、FAT16ftbにおいて、クラスタ2のFATエントリe2は、16bitのクラスタ番号「0x0003」を有する。また、クラスタ3のFATエントリe3は、16bitのクラスタ番号「0x0004」を、クラスタ4のFATエントリe4は、16bitのクラスタ番号「0x0008」を、ファイル1の末尾のクラスタ9のFATエントリe9は、末端を示す16bitの値「0xFFFF」を有する。ファイル2についても同様である。
【0049】
同様にして、
図7のFATftaは、FAT12形式のファイルシステムのFAT(FAT12)ftである。FAT12ftaの各FATエントリのサイズは12bitである。したがって、FAT12ftaにおいて、クラスタ2のFATエントリe2は、12bitのクラスタ番号「0x003」を有する。また、クラスタ3のFATエントリe3は、12bitのクラスタ番号「0x004」を、クラスタ4のFATエントリe4は、12bitのクラスタ番号「0x008」を、ファイル1の末尾のクラスタ9のFATエントリe9は、末端を示す12bitの値「0xFFF」を有する。ファイル2についても同様である。
【0050】
図8は、本実施の形態例におけるFAT2t1及び不連続クラスタリストt2の具体例を説明する図である。本実施の形態例におけるFAT2t1の各FATエントリe0〜e9のサイズは2bitである。FATエントリe0〜e9は、例えば、4つの管理情報「空き(0x00)」「末端(0x01)」「連続(0x10)」「その他(0x11)」を有する。ただし、4つの管理情報と各値「0x00」「0x01」「0x10」「0x11」との対応関係は、
図8の例に限定されるものではない。
【0051】
図6で前述したとおり、具体例において、クラスタ2とクラスタ3、クラスタ3とクラスタ4、クラスタ5とクラスタ6、クラスタ8とクラスタ9は、ファイル/ディレクトリ領域X3(
図3)における連続したアドレスに位置する。一方、クラスタ4とクラスタ8は、ファイル/ディレクトリ領域における不連続のアドレスに位置する。したがって、FAT2t1のクラスタ2、3、5、8のFATエントリe2、e3、e5、e8は、連続を示す値「0x10」を有する。
【0052】
また、クラスタ4のFATエントリe4は、その他を示す値「0x11」を有する。また、不連続クラスタリストt2は、32bitのクラスタ番号「0x00000004」に対応して、クラスタ番号「0x00000008」を有する。また、クラスタ6、9のFATエントリe6、e9は、末端を示す値「0x01」を有する。また、例えば、データを記憶しないクラスタ7のFATエントリe7は、空きを示す値「0x00」を有する。
【0053】
なお、
図8の例では、FAT2t1が2bit幅のFATエントリを有する場合を例示したが、この例に限定されるものではない。FAT2t1は、2つの1bitのテーブルによって構成されてもよい。また、前述したとおり、
図8の例における不連続クラスタリストt2が有するクラスタ番号のサイズは、対応する全ての種類のFAT形式のファイルシステムにおけるFATエントリのサイズ(この例では、12bit、16bit、32bit)のうち、最も大きいサイズ(この例では、32bit)である。なお、不連続クラスタリストt2は、配列、線形リスト、木構造、ハッシュテーブル等によって実装されてもよい。
【0054】
本実施の形態例におけるファイルアクセスプログラムPRは、例えば、SDカード等の記憶媒体(
図1の二次記憶装置17)の装着を検知したときに、記憶媒体におけるファイルシステムのFATftを、FAT2t1及び不連続クラスタリストt2に変換する。例えば、FAT2t1及び不連続クラスタリストt2は、RAM12等のキャッシュメモリ(以下、FATキャッシュと称する)に保持される。そして、ファイルアクセスプログラムPRは、記憶媒体の取り外しを検知すると、FAT2t1を記憶媒体におけるファイルシステムのFATftに逆変換し、記憶媒体に書き戻す。続いて、記憶媒体の装着時(マウント)または取り外し(アンマウント)を検知した場合の処理を説明する。初めに、一般的なマウント時における処理の流れを説明する。
【0055】
[フローチャート:記憶媒体のマウント]
図9は、一般的な記憶媒体のマウント時における処理を説明するフローチャート図である。一般的なファイルアクセスプログラムは、検知した記憶媒体からブートセクタを読み出し、RAM上に展開する(S11)。続いて、ファイルアクセスプログラムは、ブートセクタの内容に基づいて、ファイルシステムに異常があるか否かを判定する(S12)。異常が検知された場合(S12のNO)、ファイルアクセスプログラムは、処理を終了する。一方、異常が検知されなかった場合(S12のYES)、ファイルアクセスプログラムは、記憶媒体からFATftをRAM(FATキャッシュ)12に順次読み出す(S13)。ファイルアクセスプログラムは、FATキャッシュの容量を満たすまで(S14)、FATftを読み出す。
【0056】
図10は、本実施の形態例における記憶媒体のマウント時における処理を説明するフローチャート図である。工程S21〜S23の処理は、
図9のフローチャート図における工程S11〜S13と同様である。ファイルアクセスプログラムPRは、工程S23において読み出したFATftをFAT2t1及び不連続クラスタリストt2に変換する(S24)。変換処理の詳細は、別のフローチャート図(
図11)に基づいて後述する。ファイルアクセスプログラムPRは、FATキャッシュの容量を満たすまで(S25)、FATftを読み出して変換する。
【0057】
図10に示すように、本実施の形態例におけるファイルアクセスプログラムPRは、ファイルシステムのFAT(例えば、FAT12、FAT16、FAT32等)ftをFAT2t1に変換し、FATキャッシュに読み込む。FAT2t1の各FATエントリのサイズは、FATftよりも小さい。したがって、本実施の形態例におけるファイルアクセスプログラムPRによると、より広範囲のFATエントリをFATキャッシュに読み込むことができ、キャッシュヒット率を向上させることができる。
【0058】
具体的に、例えば、FAT12fta(
図7)の各FATエントリのサイズは12bitであって、FAT2t1(
図8)のFATエントリのサイズは2bitである。したがって、本実施の形態例におけるファイルアクセスプログラムPRは、FAT2t1に基づくことにより、FAT12ftaに対して、6倍のFATエントリをFATキャッシュに読み込むことができる。同様にして、本実施の形態例におけるファイルアクセスプログラムPRは、FAT2t1に基づくことにより、FAT16ftb(
図7)に対して8倍のFATエントリを、FAT32ftc(
図7)に対して16倍のFATエントリをFATキャッシュに読み込むことができる。
【0059】
なお、本実施の形態例におけるファイルアクセスプログラムPRは、記憶媒体の取り外し(アンマウント)を検知すると、FATキャッシュのFAT2t1を、不連続クラスタリストt2に基づいて、FATftに逆変換する。
【0060】
[フローチャート:変換処理]
続いて、FAT2t1及び不連続クラスタリストt2とFATftとの変換処理をフローチャート図に基づいて説明する。初めに、FATftをFAT2t1及び不連続クラスタリストt2に変換する処理を説明する。
【0061】
図11は、FATftをFAT2t1及び不連続クラスタリストt2に変換する処理を説明するフローチャート図である。
図11のフローチャート図では、FAT16ftb(
図7)を、FAT2t1及び不連続クラスタリストt2(
図8)に変換する処理を例示する。ファイルアクセスプログラムPRは、まず、変数iに値0を設定する(S31)。次に、ファイルアクセスプログラムPRは、FAT16ftbのエントリFAT16[i]の値を取得する(S32)。そして、ファイルアクセスプログラムPRは、エントリFAT16[i]の値を判定する(S33)。
【0062】
ファイルアクセスプログラムPRは、エントリFAT16[i]が空きを示す値「0x0000」の場合に、エントリFAT2t1[i]に空きを示す値「0x00」を設定し(S34)、末端を示す値「0xFFFF」の場合に、エントリFAT2t1[i]に末端を示す値「0x01」を設定する(S35)。また、ファイルアクセスプログラムPRは、エントリFAT16[i]の値が、変数iの値をインクリメントした値と一致する場合に、エントリFAT2t1[i]に連続を示す値「0x10」を設定する(S36)。
【0063】
一方、エントリFAT16[i]の値が値「0x0000」「0xFFFF」「i+1」以外である場合、ファイルアクセスプログラムPRは、エントリFAT2t1[i]にその他(不連続)を示す値「0x11」を設定する(S37)。そして、ファイルアクセスプログラムPRは、不連続クラスタリストt2に、クラスタ番号iと、後続のクラスタ番号を示すエントリFAT16[i]の値との対応関係を書き込む(S38)。または、クラスタが不良クラスタである場合、ファイルアクセスプログラムPRは、不連続クラスタリストt2に、クラスタ番号iと、不良クラスタであることを示す値を書き込む。
【0064】
続いて、ファイルアクセスプログラムPRは、変数iをインクリメントする(S39)。そして、対象のFAT16ftbの変換処理が完了していない場合(S40のNO)、ファイルアクセスプログラムPRは、工程S32の処理に遷移し、エントリFAT16[i]の値を取得する(S32)。一方、対象のFAT16ftbの変換処理が完了した場合(S40のYES)、ファイルアクセスプログラムPRは変換処理を終了する。
【0065】
図12は、FAT2t1及び不連続クラスタリストt2を、FATftに逆変換する処理を説明するフローチャート図である。
図12のフローチャート図では、FAT2t1及び不連続クラスタリストt2を、FAT16ftbに変換する処理を例示する。ファイルアクセスプログラムPRは、まず、変数iに値0を設定する(S41)。次に、ファイルアクセスプログラムPRは、FAT2t1のエントリFAT2t1[i]の値を取得する(S42)。そして、ファイルアクセスプログラムPRは、エントリFAT2t1[i]の値を判定する(S43)。
【0066】
ファイルアクセスプログラムPRは、エントリFAT2t1[i]が空きを示す値「0x00」である場合、FAT16ftbのエントリFAT16[i]に空きを示す値「0x0000」を設定し(S44)、末端を示す値「0x01」である場合、エントリFAT16[i]に末端を示す値「0xFFFF」を設定する(S45)。また、ファイルアクセスプログラムPRは、エントリFAT2t1[i]が連続を示す値「0x10」である場合、エントリFAT16[i]に、変数iをインクリメントした値を設定する(S46)。また、エントリFAT2t1[i]がその他(不連続)を示す値「0x11」である場合、ファイルアクセスプログラムPRは、不連続クラスタリストt2を参照し、クラスタ番号iに対応する後続のクラスタ番号xを取得する(S47)。そして、ファイルアクセスプログラムPRは、エントリFAT16[i]に、値xを設定する(S46)。
【0067】
続いて、ファイルアクセスプログラムPRは、変数iをインクリメントする(S47)。そして、対象のFAT2t1の変換処理が完了していない場合(S48のNO)、ファイルアクセスプログラムPRは、工程S42の処理に遷移し、エントリFAT2t1[i]の値を取得する(S42)。一方、対象のFAT2t1の変換処理が完了した場合(S48のYES)、ファイルアクセスプログラムPRは変換処理を終了する。
【0068】
図11、
図12のフローチャート図では、FAT16ftbとFAT2t1及び不連続クラスタリストt2との変換処理を例示した。同様にして、FAT12fta、FAT32ftc、exFATftdについても、FAT2t1及び不連続クラスタリストt2との変換処理が用意される。処理の概要は、
図11、
図12のフローチャート図と同様である。
【0069】
続いて、ファイルの読み出し処理及び書き込み処理をフローチャート図に基づいて説明する。本実施の形態例における処理を説明する前に、一般的なファイルの読み出し処理及び書き込み処理をフローチャート図に基づいて説明する。
【0070】
[フローチャート:ファイル読み出し処理、書き込み処理]
図13は、一般的な記憶媒体からのデータ読み出し処理を説明するフローチャート図である。まず、一般的なファイルアクセスプログラムは、ファイルシステムのFAT種別を判定する(S51)。例えば、FAT16形式のファイルシステムの場合、ファイルアクセスプログラムは、変数iに読み出し対象ファイルの開始クラスタのクラスタ番号を設定する(S52)。続いて、ファイルアクセスプログラムは、クラスタ番号iのクラスタのデータを記憶媒体のファイル/ディレクトリ領域X3(
図3)から読み出す(S53)。
【0071】
次に、ファイルアクセスプログラムは、FAT16ftbにおけるクラスタ番号iのエントリFAT16[i]がFATキャッシュ上にあるか否かを判定する(S54)。FATキャッシュ上にない場合(S54のNO)、ファイルアクセスプログラムは、FATキャッシュから不要なセクタを選択し、記憶媒体に書き出す(S55)。即ち、ファイルアクセスプログラムは、FATキャッシュの入れ替え処理を行う。そして、ファイルアクセスプログラムは、FAT16ftbから、エントリFAT16[i]を含み、セクタに保持可能なFATエントリを読み出し、FATキャッシュに展開する(S56)。
【0072】
そして、FATキャッシュ上にある場合(S54のYES)、または、FATキャッシュの入れ替え処理を行った後(S55、S56)、ファイルアクセスプログラムは、FATキャッシュ上のエントリFAT16[i]を読み出す。そして、ファイルアクセスプログラムは、エントリFAT16[i]を参照し、クラスタ番号iに記憶されるデータの後続のデータが記憶されるクラスタ番号を取得する(S57)。また、ファイルアクセスプログラムは、次回の読み出し対象のクラスタ番号として、工程S57で取得したクラスタ番号を変数iに設定する(S58)。
【0073】
エントリFAT16[i]の値が「0xFFFF」である場合(S59のYES)、即ち、クラスタ番号iのクラスタが読み出し対象ファイルの最後尾のクラスタである場合、ファイルアクセスプログラムは処理を終了する。一方、エントリFAT16[i]の値が「0xFFFF」ではない場合(S59のNO)、ファイルアクセスプログラムは、工程S53の処理に遷移し、次回の読み出し対象のクラスタ番号iのクラスタのデータを読み出す(S53)。
【0074】
なお、FAT12形式、FAT32形式、exFAT形式のファイルシステムのファイルを読み出す場合も同様にして、ファイルアクセスプログラムは、工程S52〜S59と同様の処理を行う。ただし、工程S52〜S59の処理はデータ処理等に関してFAT形式の種別に応じて異なるため、データ読み出し処理は、FAT形式の種別に応じて場合分けして記述される必要がある。これにより、プログラムの工数が増加すると共に、保守作業が煩雑になる。
【0075】
なお、FATキャッシュの入れ替え処理の発生頻度は、FAT形式の種別に応じて異なる。この例では、セクタが512バイトの場合に基づいて説明する。FAT16形式の場合、FATエントリのサイズは16bit(=2バイト)である。したがって、1セクタは、256(=512÷2)個のFATエントリを保持可能である。このため、FATキャッシュの入れ替え処理は、クラスタ256個の読み出し処理に対して1回の頻度で発生することが想定される。
【0076】
同様にして、FAT12形式の場合、FATエントリのサイズは12bit(=1.5バイト)であり、1セクタは341(≒512÷1.5)個のFATエントリを保持可能である。即ち、FAT12形式におけるFATキャッシュの入れ替え処理は、クラスタ341個の読み出し処理に対して1回の頻度で発生することが想定される。同様にして、FAT32形式の場合、FATエントリのサイズは32bit(=4バイト)であり、1セクタは128(=512÷4)個のFATエントリを保持可能である。したがって、FAT32形式におけるFATキャッシュの入れ替え処理は、クラスタ128個の読み出し処理に対して1回の頻度で発生することが想定される。
【0077】
このように、FATエントリのサイズの拡張に伴ってFATキャッシュに保持可能なFATエントリの割合が減少することから、FATキャッシュの入れ替え処理の頻度は高くなる。これは、FATエントリのサイズの拡張に伴って、記憶媒体に対するI/O処理がより頻繁に発生することを示し、アクセス効率が悪い。
【0078】
図14は、一般的な記憶媒体からのデータ書き込み処理を説明するフローチャート図である。まず、一般的なファイルアクセスプログラムは、記憶媒体のFAT種別を判定する(S61)。例えば、FAT16形式のファイルシステムであって、全てのデータの書き込み処理が完了していない場合(S62のNO)、ファイルアクセスプログラムは、空きクラスタを1つ取得し、取得したクラスタのクラスタ番号を変数nに設定する(S63)。なお、前回、取得した空きクラスタがある場合、ファイルアクセスプログラムは、前回の変数nの値を変数old_nに設定しておく(S64)。変数old_nは、書き込み対象のファイルのクラスタ連鎖における前のクラスタのクラスタ番号を示す。そして、ファイルアクセスプログラムは、クラスタ番号nのクラスタにデータを書き込む(S65)。
【0079】
続いて、ファイルアクセスプログラムは、FAT16ftbにおけるクラスタ番号nのエントリFAT16[n]がFATキャッシュ上にあるか否かを判定する(S66)。FATキャッシュ上にない場合(S66のNO)、ファイルアクセスプログラムは、FATキャッシュから不要なセクタを選択し、記憶媒体に書き戻す(S67)。即ち、ファイルアクセスプログラムは、FATキャッシュの入れ替え処理を行う。そして、ファイルアクセスプログラムは、FAT16ftbから、エントリFAT16[i]を含み、セクタに保持可能なFATエントリを読み出し、FATキャッシュに展開する(S68)。
【0080】
FATキャッシュ上にある場合(S66のYES)、または、FATキャッシュの入れ替え処理をおこなった後(S67、S68)、ファイルアクセスプログラムは、FATキャッシュ上のエントリFAT16[n]に、ファイルの最後尾を示す値「0xFFFF」を書き込む(S69)。次に、ファイルアクセスプログラムは、変数old_nに値が設定されているか否かを判定する(S70)。変数old_nに値が設定されている場合(S70のYES)、ファイルアクセスプログラムは、エントリFAT16[old_n]に変数nの値を設定する(S71)。これにより、クラスタ連鎖における前のクラスタのエントリFAT16[old_n]に、後続のクラスタのクラスタ番号nが記憶される。
【0081】
そして、変数old_nに値が設定されていない場合(S70のNO)、または、エントリFAT16[old_n]に変数nの値を書き込んだ後(S71)、ファイルアクセスプログラムは、工程S62の処理に遷移して、データの書き込み処理が完了したか否かを判定する(S62)。データの書き込み処理が完了していない場合(S62のNO)、ファイルアクセスプログラムは、再び、工程S63〜S71の処理を行う。一方、データの書き込み処理が完了した場合(S62のYES)、ファイルアクセスプログラムはデータ書き込み処理を終了する。
【0082】
なお、
図13のファイルの読み出し処理と同様にして、FAT12形式、FAT32形式、exFAT形式のファイルシステムのファイルを読み出す場合も、ファイルアクセスプログラムは、工程S62〜S71と同様の処理を行う。ただし、工程S62〜S71の処理はデータ処理等に関してFAT形式の種別に応じて異なるため、データ書き込み処理は、FAT形式の種別に応じて場合分けして記述される必要がある。これにより、プログラムの工数が増加すると共に、保守作業が煩雑になる。
【0083】
また、
図13のファイルの読み出し処理と同様にして、FATエントリのサイズの拡張に伴ってFATキャッシュに保持可能なFATエントリの割合が減少することから、FATキャッシュの入れ替え処理の頻度は高くなる。これは、FATエントリのサイズの拡張に伴って、記憶媒体に対するI/O処理がより頻繁に発生することを示し、アクセス効率が悪い。
【0084】
続いて、本実施の形態例におけるファイルの読み出し処理及び書き込み処理をフローチャート図に基づいて説明する。
【0085】
図15は、本実施の形態例における記憶媒体からのファイルの読み出し処理を説明するフローチャート図である。まず、本実施の形態例におけるファイルアクセスプログラムPRは、変数iに読み出し対象ファイルの開始クラスタのクラスタ番号を設定する(S81)。次に、ファイルアクセスプログラムPRは、クラスタ番号iのクラスタのデータを記憶媒体(
図1の二次記憶装置17)のファイル/ディレクトリ領域X3(
図3)から読み出す(S82)。
【0086】
続いて、ファイルアクセスプログラムPRは、FAT2t1におけるクラスタ番号iのエントリFAT2t1[i]がFATキャッシュ上にあるか否かを判定する(S83)。FATキャッシュ上にない場合(S83のNO)、ファイルアクセスプログラムPRは、FATキャッシュから不要なセクタを選択し、セクタ内のFAT2t1及び不連続クラスタリストt2を記憶媒体のFAT形式のFATftに変換する(S84)。変換処理は、
図12のフローチャート図で説明したとおりである。
【0087】
続いて、ファイルアクセスプログラムPRは、変換後のFATftを記憶媒体に書き込む(S85)。次に、ファイルアクセスプログラムPRは、記憶媒体上のFATftから、クラスタ番号iのFATエントリを含み、セクタに保持可能なFAT2t1のFATエントリの数に対応するFATエントリを読み出す(S86)。そして、ファイルアクセスプログラムPRは、読み出したFATftをFAT2t1及び不連続クラスタリストt2に変換する(S87)。変換処理は、
図11のフローチャート図で説明したとおりである。
【0088】
本実施の形態例におけるファイルアクセスプログラムPRは、記憶媒体のファイルシステムのFATftと、FAT2t1及び不連続クラスタリストt2とを変換する。これにより、ファイルアクセスプログラムPRは、いずれの種別のFAT形式であっても、変換処理(S84、S87)以外の処理については、FAT形式の種別に応じて場合分けて記述される必要がない。
【0089】
そして、FATキャッシュ上にある場合(S83のYES)、または、FATキャッシュの入れ替え処理を行った後(S84〜S87)、ファイルアクセスプログラムPRは、FATキャッシュ上のエントリFAT2t1[i]を読み出す(S88)。エントリFAT2t1[i]の値が「0x00(空き)」または「0x01(末端)」を示す値である場合(S89)、ファイルアクセスプログラムPRは処理を終了する。また、エントリFAT2t1[i]の値が「0x10(連続)」を示す値である場合(S89)、ファイルアクセスプログラムPRは、変数iの値をインクリメントし(S90)、工程S82の処理に遷移し、クラスタ番号iのクラスタのデータを記憶媒体のファイル/ディレクトリ領域X3から読み出す(S82)。
【0090】
また、エントリFAT2t1[i]の値が「0x11(その他)」を示す値である場合(S89)、ファイルアクセスプログラムPRは、不連続クラスタリストt2からクラスタ番号iに基づいて、クラスタ連鎖におけるクラスタ番号iのクラスタの後続クラスタのクラスタ番号xを取得する(S91)。そして、ファイルアクセスプログラムPRは、変数iに値xを設定し(S92)、工程S82の処理に遷移し、クラスタ番号iのクラスタのデータを記憶媒体のファイル/ディレクトリ領域X3から読み出す(S82)。前述したとおり、値「0x11(その他)」を有するFATエントリの割合は少ない。したがって、ファイルアクセスプログラムPRは、主にFAT2t1を参照することによって、ファイルの読み出し処理を行うことができる。
【0091】
図16は、本実施の形態例における記憶媒体へのファイルの書き込み処理を説明するフローチャート図である。まず、本実施の形態例におけるファイルアクセスプログラムPRは、全てのデータの書き込み処理が完了していない場合(S101のNO)、空きクラスタを1つ取得し、取得したクラスタのクラスタ番号を変数nに設定する(S102)。なお、前回、取得した空きクラスタがある場合、ファイルアクセスプログラムPRは、前回の変数nの値を変数old_nに書き込んでおく(S103)。変数old_nは、クラスタ連鎖における前のクラスタのクラスタ番号を示す。
【0092】
このとき、本実施の形態例におけるファイルアクセスプログラムPRは、FATエントリのサイズが小さいことから、FATキャッシュに保持可能なFATエントリの割合を増加させることができ、空きクラスタを高速に検索することができる。また、本実施の形態例におけるファイルアクセスプログラムPRは、サイズの小さいFATエントリに基づくことにより、CPU11が1回に処理可能なFATエントリの数が多くなるため、空きクラスタを高速に検索することができる。
【0093】
そして、ファイルアクセスプログラムPRは、クラスタ番号nのクラスタにデータを書き込む(S104)。続いて、ファイルアクセスプログラムPRは、FAT2t1におけるクラスタ番号nのエントリFAT2t1[n]がFATキャッシュ上にあるか否かを判定する(S105)。FATキャッシュ上にない場合(S105のNO)、ファイルアクセスプログラムPRは、FATキャッシュから不要なセクタを選択し、セクタ内のFAT2t1及び不連続クラスタリストt2を記憶媒体上のFAT形式のFATftに変換する(S106)。変換処理は、
図12のフローチャート図で説明したとおりである。
【0094】
続いて、ファイルアクセスプログラムPRは、変換後のFATftを記憶媒体に書き込む(S107)。次に、ファイルアクセスプログラムPRは、記憶媒体上のFATftから、クラスタ番号nのFATエントリを含み、セクタに保持可能なFAT2t1のFATエントリの数に対応するFATエントリを読み出す(S108)。そして、ファイルアクセスプログラムPRは、読み出したFATをFAT2t1及び不連続クラスタリストt2に変換する(S109)。変換処理は、
図11のフローチャート図で説明したとおりである。
【0095】
FATキャッシュ上にある場合(S105のYES)、または、FATキャッシュの入れ替え処理をおこなった後(S106〜S109)、ファイルアクセスプログラムPRは、FATキャッシュ上のエントリFAT2t1[n]に、ファイルの末尾を示す値「0x01」を書き込む(S110)。次に、ファイルアクセスプログラムPRは、変数old_nに値が設定されているか否かを判定する(S111)。変数old_nに値が設定されている場合(S111のYES)、ファイルアクセスプログラムPRは、変数old_nをインクリメントした値が、変数nの値と一致するか否かを判定する(S112)。一致する場合(S112のYES)、ファイルアクセスプログラムPRは、FATキャッシュ上のエントリFAT2t1[n]に、連続を示す値「0x10」を書き込む(S113)。
【0096】
一方、一致しない場合(S112のNO)、ファイルアクセスプログラムPRは、FATキャッシュ上のエントリFAT2t1[n]に、その他(不連続)を示す値「0x11」を書き込む(S114)。また、ファイルアクセスプログラムPRは、不連続クラスタリストt2に、クラスタ番号old_nとクラスタ番号nとの対応関係を書き込む(S115)。データを構成するクラスタは、ファイル/ディレクトリ領域X3の連続したアドレスに位置する確率が高い。したがって、ファイルアクセスプログラムPRは、主にFAT2t1を参照することによって、ファイルの書き込み処理を行うことができる。
【0097】
図15、
図16のフローチャート図に示すように、本実施の形態例におけるファイルアクセスプログラムPRは、FAT2t1及び不連続クラスタリストt2に基づくことにより、ファイルシステムのFAT形式の種別がいずれであっても、変換処理を除くファイルアクセス処理を共通化できる。これにより、データ読み出し処理、及び、データ書き込み処理はFAT形式の種別に応じて場合分けされる必要がないため、プログラムの工数が抑えられると共に、保守作業が軽減される。
【0098】
また、本実施の形態例におけるファイルアクセスプログラムPRは、FAT2t1のFATエントリのサイズが小さいことから、FATキャッシュに保持可能なFATエントリの割合を増加させることができ、ファイルのアクセスをより高速にすることができる。また、本実施の形態例におけるファイルアクセスプログラムPRによると、FAT2t1に基づくことにより、FATキャッシュの入れ替え頻度を大幅に削減可能になる。
【0099】
例えば、セクタが512バイトの場合、1セクタは、2048(=512÷0.25)個のFAT2のFATエントリを保持可能である。即ち、本実施の形態例において、FATキャッシュの入れ替え処理は、クラスタ2048個の読み出し処理に対して1回の頻度で発生することが想定できる。前述したとおり、FATキャッシュの入れ替え処理は、FAT12形式の場合はクラスタ341個の読み出し処理に対して1回、FAT16形式の場合はクラスタ256個の読み出し処理に対して1回、FAT32形式、exFAT形式の場合は、クラスタ128個の読み出し処理に対して1回の頻度で発生することが想定できる。したがって、本実施の形態例におけるファイルアクセスプログラムPRは、FATキャッシュの入れ替え頻度を大幅に削減でき、記憶媒体に対するI/O処理を削減し、アクセス効率を向上させることができる。
【0100】
また、本実施の形態例におけるFATエントリのサイズは、各FAT形式のFATエントリに対して小さい。したがって、例えば、CPU11(
図1)が32bit単位にデータを処理する場合、CPU11が1回に処理可能なFATエントリの数が多くなり、より高速にFATエントリを処理することが可能になる。ファイルアクセスプログラムPRは、より高速にFATエントリを処理することにより、対象のクラスタをより高速に検索することができる。
【0101】
以上のように、本実施の形態例におけるファイルアクセスプログラムPRは、データ領域の複数のクラスタに分割して記憶されるファイルに、クラスタの連鎖情報を有するクラスタ管理テーブルt1、t2に基づいてアクセスするアクセス工程を有する。また、クラスタ管理テーブルt1、t2は、第1のクラスタと第1のクラスタに連鎖する後続の第2のクラスタとがデータ領域内の連続するアドレスに位置する場合に、第1のクラスタに対応して第1の管理情報を有し、第1、第2のクラスタが不連続のアドレスに位置する場合に、第1のクラスタに対応して第2の管理情報を有する第1のテーブル(FAT2)t1と、不連続のアドレスに位置する第1、第2のクラスタのクラスタ識別情報を有する第2のテーブル(不連続クラスタリスト)t2とを有する。
【0102】
本実施の形態例におけるファイルアクセスプログラムPRは、第1のテーブル(FAT2)t1の各エントリのサイズが小さいため、キャッシュメモリに保持可能なエントリの割合を増加させることができ、キャッシュヒット率を向上させ、ファイルのアクセス効率を向上させることができる。また、ファイルアクセスプログラムPRは、第1のテーブル(FAT2)の各エントリのサイズが小さいことにより、CPU11が一度に処理可能なエントリの数を多くすることができる。これにより、ファイルアクセスプログラムPRは、クラスタをより高速に検索することができ、ファイルのアクセス効率を向上させることができる。また、本実施の形態例におけるファイルアクセスプログラムPRは、第2のテーブル(不連続クラスタリスト)t2に基づいて、対応するクラスタの後続のクラスタの位置を簡易に検出することができる。
【0103】
また、本実施の形態例におけるファイルアクセスプログラムPRは、複数の種類のファイルシステムのFATftと互換性のある共通のクラスタ管理テーブルt1、t2にしたがって、ファイルアクセスを行う。したがって、本実施の形態例におけるファイルアクセスプログラムPRは、ファイルシステムのFAT形式の種別に関わらず、統一した処理に基づいてファイルアクセスを行うことができる。これにより、プログラムが統一可能になると共に、保守工数が削減可能になる。
【0104】
また、本実施の形態例におけるファイルアクセスプログラムPRにおいて、第1のテーブルは、さらに、ファイルのデータを記憶しない第3のクラスタに対応して第3の管理情報を有し、ファイルの末尾のデータを記憶する第4のクラスタに対応して第4の管理情報を有する。これにより、ファイルアクセスプログラムは、空きのクラスタ及びファイルを構成する最後尾のクラスタの検索を高速化することができる。
【0105】
また、本実施の形態例におけるファイルアクセスプログラムPRにおいて、第1のテーブルは、さらに、第1乃至第4のクラスタと異なる第5のクラスタに対応して第2の管理情報を有し、第2のテーブルは、さらに、第5のクラスタのクラスタ識別情報と、第5のクラスタの状態情報を有する。これにより、ファイルアクセスプログラムは、不良クラスタ等の検索を高速化することができる。
【0106】
また、本実施の形態例におけるファイルアクセスプログラムPRは、さらに、複数のクラスタに対応して連鎖情報として後続のクラスタ識別情報を有するファイルアロケーションテーブル(以下、FAT)を、クラスタ管理テーブルt1、t2に変換する変換工程を有する。これにより、ファイルアクセスプログラムPRは、ファイルシステムのFAT形式の種別に関わらず、クラスタ管理テーブルt1、t2に基づくことによって、統一した処理にしたがって、ファイルアクセスを行うことができる。
【0107】
また、本実施の形態例におけるファイルアクセスプログラムの変換工程では、記憶媒体の装着を検知したときに、検知した記憶媒体のFATftをクラスタ管理テーブルに変換し、検知した記憶媒体の取り外しを検知したときに、クラスタ管理テーブルをFATftに逆変換する。ファイルアクセスプログラムPRは、クラスタ管理テーブルt1、t2をファイルシステムのFATftに変換可能であることから、クラスタ管理テーブルt1、t2は、ファイルシステムのFATftと互換性を有する。
【0108】
また、本実施の形態例におけるファイルアクセスプログラムPRでは、クラスタ管理テーブルt1、t2は第1の記憶領域(FATキャッシュ、RAM)12に記憶され、FATftは、第1の記憶領域よりアクセスが遅い第2の記憶領域(記憶媒体、二次記憶装置)17に記憶される。ファイルアクセスプログラムPRは、クラスタ管理テーブルt1、t2をFATキャッシュに保持することによって、FATキャッシュに保持可能なエントリの割合を増加させることができ、クラスタの検索を高速化できる。
【0109】
また、本実施の形態例におけるファイルアクセスプログラムPRの変換工程では、第1の記憶領域(FATキャッシュ、RAM)12のクラスタ管理テーブルt1、t2にアクセス対象のクラスタのエントリが含まれない場合に、第1の記憶領域12のクラスタ管理テーブルt1、t2をFATftに逆変換し第2の記憶領域(記憶媒体、二次記憶装置)17に記憶させると共に、第2の記憶領域17のアクセス対象のクラスタのエントリを含むFATftをクラスタ管理テーブルt1、t2に変換し第1の記憶領域12に読み出す。これにより、本実施の形態例におけるファイルアクセスプログラムPRは、FATキャッシュのクラスタ管理テーブルt1、t2の入れ替え処理を行うことができる。また、ファイルアクセスプログラムPRは、第1のテーブル(FAT2)t1の各エントリのサイズが小さいことにより、FATキャッシュの入れ替え頻度を大幅に削減することができ、記憶媒体17に対するI/O処理を削減し、アクセス効率を向上させることができる。
【0110】
また、本実施の形態例におけるファイルアクセスプログラムPRの変換工程では、第1の記憶領域(FATキャッシュ、RAM)12のサイズに対応するクラスタ管理テーブルt1、t2のエントリ数のFATftのエントリを変換対象とする。ファイルアクセスプログラムPRは、エントリのサイズがクラスタ管理テーブルt1、t2をFATキャッシュに保持することにより、FATftに対して、FATキャッシュに保持可能なエントリの割合を増加させることができる。
【0111】
また、本実施の形態例におけるファイルアクセスプログラムPRのアクセス工程では、ファイルのデータを第1のクラスタと連続するアドレスに位置する第2のクラスタに書き込むとき、第1のクラスタの第1のテーブル(FAT2)t1に第1の管理情報を記憶させ、第1のクラスタと連続しないアドレスに位置する第2のクラスタに書き込むとき、第1のクラスタの第1のテーブル(FAT2)t1に第2の管理情報を記憶させると共に、第2のテーブル(不連続クラスタリスト)t2に第1、第2のクラスタのクラスタ識別情報を記憶させる。これにより、本実施の形態例におけるファイルアクセスプログラムPRは、ファイルのデータの書き込み時に、クラスタ管理テーブルt1、t2を生成することができる。
【0112】
また、本実施の形態例におけるファイルアクセスプログラムPRのアクセス工程では、ファイルのデータを第2のクラスタから読み出すとき、第1のテーブル(FAT2)t1に第1のクラスタに対応して第1の管理情報が記憶される場合に、第1のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、第1のテーブル(FAT2)t1に第1のクラスタに対応して第2の管理情報が記憶される場合に、第2のテーブル(不連続クラスタリスト)t2を参照し、第1のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出す。これにより、本実施の形態例におけるファイルアクセスプログラムPRは、クラスタ管理テーブルt1、t2に基づいて、ファイルのデータを読み出すことができる。
【0113】
[第2の実施の形態例]
第1の実施の形態例ではFAT2t1及び不連続クラスタリストt2がFATキャッシュに記憶される場合を例示した。これに対し、第2の実施の形態例におけるファイルアクセスプログラムPRは、FAT2t1及び不連続クラスタリストt2を、FATキャッシュに加えて、記憶媒体(
図1の二次記憶装置17)も記憶する。ファイルアクセスプログラムPRは、例えば、FATキャッシュの入れ替え時に、FATキャッシュ上のFAT2t1及び不連続クラスタリストt2を記憶媒体に記憶させ、FATキャッシュの入れ替え後に、記憶媒体上のFAT2t1及び不連続クラスタリストt2をFATftに変換し書き戻す。
【0114】
図17は、第2の実施の形態例におけるFAT2t1及び不連続クラスタリストt2の格納場所を説明する図である。
図17の(A)(B)は、第1、第2の実施の形態例におけるRAM(FATキャッシュ)12及び二次記憶装置17である。
図17の(A)に示すように、第1の実施の形態例において、FAT2t1及び不連続クラスタリストt2は、RAM12(FATキャッシュ)に格納される。これに対し、
図17の(B)に示すように、第2の実施の形態例では、FAT2t1及び不連続クラスタリストt2は、RAM12に加えて、さらに、二次記憶装置17にも格納される。即ち、第2の実施の形態例における二次記憶装置17は、FATftに加えて、FAT2t1及び不連続クラスタリストt2を記憶する。
【0115】
続いて、第2の実施の形態例における処理を説明する。第2の実施の形態例における記憶媒体のマウント時の処理、及び、FATftとFAT2t1及び不連続クラスタリストt2との変換処理は、第1の実施の形態例と同様である。第2の実施の形態例における記憶媒体からのファイルの読み出し処理、及び、記憶媒体へのファイルの書き込み処理をフローチャート図に基づいて説明する。
【0116】
[フローチャート]
図18は、第2の実施の形態例における記憶媒体からのファイルの読み出し処理を説明するフローチャート図である。
図18の工程S121〜S123は、
図15に示す第1の実施の形態例における工程S81〜S83と同様である。FATキャッシュ上にない場合(S123のNO)、第2の実施の形態例におけるファイルアクセスプログラムPRは、FATキャッシュから不要なセクタを選択し記憶媒体に書き込む(S124)。このとき、第2の実施の形態例におけるファイルアクセスプログラムPRは、FAT2t1及び不連続クラスタリストt2を、FATftに変換しない。
【0117】
次に、ファイルアクセスプログラムPRは、記憶媒体上のFAT2t1から、クラスタ番号iのFATエントリを含むFATエントリをFATキャッシュに読み出す(S125)。なお、記憶媒体上のFAT2t1にクラスタ番号iのFATエントリが含まれない場合、ファイルアクセスプログラムPRは、クラスタ番号iのFATエントリを含むFATftを、FAT2t1及び不連続クラスタリストt2に変換してFATキャッシュに読み出す。クラスタ番号iのFATエントリを含むFATエントリを読み出した後の工程は、
図15のフローチャート図に示す第1の実施の形態例における工程S88〜S92と同様である。
【0118】
図19は、第2の実施の形態例における記憶媒体へのファイルの書き込み処理を説明するフローチャート図である。工程S131〜S135の処理は、
図16に示す第1の実施の形態例における工程S101〜S105と同様である。FATキャッシュ上にない場合(S135のNO)、第2の実施の形態例におけるファイルアクセスプログラムPRは、FATキャッシュから不要なセクタを選択し記憶媒体に書き込む(S136)。このとき、第2の実施の形態例におけるファイルアクセスプログラムPRは、FAT2t1及び不連続クラスタリストt2を、FATftに変換しない。
【0119】
次に、ファイルアクセスプログラムPRは、記憶媒体上のFAT2t1から、クラスタ番号iのFATエントリを含むFATエントリをFATキャッシュに読み出す(S137)。なお、記憶媒体上のFAT2t1にクラスタ番号iのFATエントリが含まれない場合、ファイルアクセスプログラムPRは、クラスタ番号iのFATエントリを含むFATftを、FAT2t1及び不連続クラスタリストt2に変換してFATキャッシュに読み出す。クラスタ番号iのFATエントリを含むFATエントリを読み出した後の工程は、
図16のフローチャート図に示す第1の実施の形態例における工程S110〜S115と同様である。
【0120】
続いて、記憶媒体上のFAT2t1及び不連続クラスタリストt2のFATftへの書き戻し処理をフローチャート図に基づいて説明する。第2の実施の形態例におけるファイルアクセスプログラムPRは、例えば、FATキャッシュの入れ替え後、別のタイミングで、記憶媒体上のFAT2t1及び不連続クラスタリストt2をFATftに変換し記憶媒体に書き戻す。例えば、ファイルアクセスプログラムPRは、処理の負荷が低いタイミングや、記憶媒体が取り外される前のタイミングに、FAT2t1及び不連続クラスタリストt2をFATftに変換して記憶媒体に書き戻す。
【0121】
図20は、記憶媒体上のFAT2t1及び不連続クラスタリストt2の書き戻し処理を説明するフローチャート図である。まず、ファイルアクセスプログラムPRは、記憶媒体上にFAT2t1があるか否かを判定する(S141)。記憶媒体上にFAT2t1がある場合(S141のYES)、ファイルアクセスプログラムPRは、記憶媒体からFATキャッシュにFAT2t1を読み出す(S142)。続いて、ファイルアクセスプログラムPRは、FAT2t1をFATftに変換し、記憶媒体に書き込む(S143)。また、ファイルアクセスプログラムPRは、変換前のFAT2t1及び不連続クラスタリストt2を削除する。
【0122】
これにより、ファイルアクセスプログラムPRは、記憶媒体上のFAT2t1及び不連続クラスタリストt2を、FATftに書き戻す。第2の実施の形態例におけるファイルアクセスプログラムPRは、記憶媒体をマウントした後、記憶媒体の取り外しを検知するまでの間、FAT2t1及び不連続クラスタリストt2を記憶媒体に記憶させておいてもよい。この場合、ファイルアクセスプログラムPRは、FAT2t1及び不連続クラスタリストt2とFATftとの変換処理の回数をより少なくすることができる。
【0123】
以上のように、第2の実施の形態例におけるファイルアクセスプログラムPRの変換工程では、第1の記憶領域のクラスタ管理テーブルt1、t2にアクセス対象のクラスタのエントリが含まれない場合に、第1の記憶領域(FATキャッシュ、RAM)12のクラスタ管理テーブルt1、t2を第2の記憶領域(記憶媒体、二次記憶装置)17に記憶させると共に、第2の記憶領域17のアクセス対象のクラスタのエントリを含むFATftをクラスタ管理テーブルt1、t2に変換し第1の記憶領域12に読み出した後、第2の記憶領域17に記憶されたクラスタ管理テーブルt1、t2をFATftに逆変換する。
【0124】
これにより、第2の実施の形態例におけるファイルアクセスプログラムPRは、ファイルアクセス時のFATキャッシュの入れ替え処理において、クラスタ管理テーブルt1、t2からFATftへの変換処理を行わないことにより、ファイルアクセスを高速化することができる。また、クラスタ管理テーブルt1、t2が記憶媒体17に記憶されることにより、ファイルのデータの更新中にコンピュータの電源断が発生し、データの一部が破損した場合でも、ファイルアクセスプログラムPRは、記憶媒体17上のクラスタ管理テーブルt1、t2に基づいて、破損前のデータを復旧することができる。
【0125】
また、第1の実施の形態例と同様にして、第2の実施の形態例におけるファイルアクセスプログラムPRは、第1のテーブル(FAT2)t1の各エントリのサイズが小さいことにより、キャッシュヒット率を向上させ、ファイルのアクセス効率を向上させることができる。また、ファイルアクセスプログラムPRは、CPU11が一度に処理可能なエントリ数を増加させることにより、クラスタの検索を高速化し、ファイルへのアクセスを効率化できる。また、本実施の形態例におけるファイルアクセスプログラムPRは、ファイルシステムのFAT形式の種別に関わらず、プログラムを統一化できると共に、保守工数を削減できる。
【0126】
[第3の実施の形態例]
第3の実施の形態例では、ファイルアクセスプログラムPRがアクセスする二次記憶装置17が、着脱されない固定の二次記憶装置17である場合を例示する。二次記憶装置17の着脱が発生しない場合、ファイルアクセスプログラムPRは、二次記憶装置17上のFAT2t1及び不連続クラスタリストt2のみに基づいて、ファイルを管理してもよい。この場合、ファイルアクセスプログラムPRは、FAT2t1及び不連続クラスタリストt2をFAT形式のファイルシステムのFATftに変換する必要がない。
【0127】
図21は、第3の実施の形態例におけるFAT2t1及び不連続クラスタリストt2の格納場所を説明する図である。
図17の(A)(B)は、第1、第3の実施の形態例におけるRAM(FATキャッシュ)12及び二次記憶装置17である。
図17の(A)に示すように、第1の実施の形態例において、FAT2t1及び不連続クラスタリストt2は、RAM12に格納される。これに対し、
図17の(B)に示すように、第3の実施の形態例では、FAT2t1及び不連続クラスタリストt2は、RAM12に加えて、さらに、固定の二次記憶装置17に記憶される。また、固定の二次記憶装置17は、他のコンピュータで使用されることを想定する必要がないため、FAT2t1及び不連続クラスタリストt2のみを記憶し、FAT形式のファイルシステムのFATftを記憶しない。
【0128】
第3の実施の形態例におけるFATftとFAT2t1及び不連続クラスタリストt2との変換処理は、第1の実施の形態例と同様である。また、第3の実施の形態例における記憶媒体(二次記憶装置17)からのファイルの読み出し処理、及び、記憶媒体へのファイルの書き込み処理は、第2の実施の形態例における
図18、
図19のフローチャート図と同様である。
【0129】
以上のように、第3の実施の形態例のファイルアクセスプログラムPRにおいて、クラスタ管理テーブルt1、t2は、第1の記憶領域(FATキャッシュ、RAM)12、及び、第1の記憶領域12よりアクセスが遅い第2の記憶領域(記憶媒体、二次記憶装置)17に記憶される。また、ファイルアクセスプログラムPRの変換工程では、第1の記憶領域12のクラスタ管理テーブルt1、t2にアクセス対象のクラスタのエントリが含まれない場合に、第1の記憶領域12のクラスタ管理テーブルt1、t2を第2の記憶領域17に記憶させると共に、第2の記憶領域17のアクセス対象のクラスタのエントリを含むクラスタ管理テーブルt1、t2を第1の記憶領域12に読み出す。
【0130】
これにより、第3の実施の形態例におけるファイルアクセスプログラムPRは、ファイルアクセス時のFATキャッシュの入れ替え処理において、クラスタ管理テーブルt1、t2からFATftへの変換処理を行わないことにより、より高速にファイルアクセスを行うことができる。
【0131】
また、第1の実施の形態例と同様にして、第3の実施の形態例におけるファイルアクセスプログラムPRは、第1のテーブル(FAT2)t1の各エントリのサイズが小さいことにより、キャッシュヒット率を向上させ、ファイルのアクセス効率を向上させることができる。また、ファイルアクセスプログラムPRは、CPU11が一度に処理可能なエントリ数を増加させることにより、クラスタの検索を高速化し、ファイルへのアクセスを効率化できる。また、本実施の形態例におけるファイルアクセスプログラムPRは、ファイルシステムのFAT形式の種別に関わらず、プログラムを統一化できると共に、保守工数を削減できる。
【0132】
以上の実施の形態をまとめると、次の付記のとおりである。
【0133】
(付記1)
ファイルアクセス処理をコンピュータに実行させるファイルアクセスプログラムであって、
前記ファイルアクセス処理は、
データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、
前記クラスタ管理テーブルは、第1のクラスタと前記第1のクラスタに連鎖する後続の第2のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第1のクラスタに対応して第1の管理情報を有し、前記第1、第2のクラスタが不連続のアドレスに位置する場合に、前記第1のクラスタに対応して第2の管理情報を有する第1のテーブルと、前記不連続のアドレスに位置する前記第1、第2のクラスタのクラスタ識別情報を有する第2のテーブルとを有するファイルアクセスプログラム。
【0134】
(付記2)
付記1において、
前記第1のテーブルは、さらに、前記ファイルのデータを記憶しない第3のクラスタに対応して第3の管理情報を有し、前記ファイルの末尾の前記データを記憶する第4のクラスタに対応して第4の管理情報を有するファイルアクセスプログラム。
【0135】
(付記3)
付記2において、
前記第1のテーブルは、さらに、前記第1乃至第4のクラスタと異なる第5のクラスタに対応して前記第2の管理情報を有し、
前記第2のテーブルは、さらに、前記第5のクラスタのクラスタ識別情報と、前記第5のクラスタの状態情報を有するファイルアクセスプログラム。
【0136】
(付記4)
付記1乃至3のいずれかにおいて、
前記ファイルアクセス処理は、さらに、
前記複数のクラスタに対応して前記連鎖情報として前記後続のクラスタ識別情報を有するファイルアロケーションテーブル(以下、FAT)を、前記クラスタ管理テーブルに変換する変換工程を有するファイルアクセスプログラム。
【0137】
(付記5)
付記4において、
前記変換工程では、記憶媒体の装着を検知したときに、前記検知した記憶媒体の前記FATを前記クラスタ管理テーブルに変換し、前記検知した記憶媒体の取り外しを検知したときに、前記クラスタ管理テーブルを前記FATに逆変換するファイルアクセスプログラム。
【0138】
(付記6)
付記4において、
前記クラスタ管理テーブルは第1の記憶領域に記憶され、
前記FATは、前記第1の記憶領域よりアクセスが遅い第2の記憶領域に記憶されるファイアクセスプログラム。
【0139】
(付記7)
付記6において、
前記変換工程では、前記第1の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第1の記憶領域の前記クラスタ管理テーブルを前記FATに逆変換し前記第2の記憶領域に記憶させると共に、前記第2の記憶領域の前記アクセス対象のクラスタのエントリを含む前記FATを前記クラスタ管理テーブルに変換し前記第1の記憶領域に読み出すファイルアクセスプログラム。
【0140】
(付記8)
付記6において、
前記変換工程では、前記第1の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第1の記憶領域の前記クラスタ管理テーブルを前記第2の記憶領域に記憶させると共に、前記第2の記憶領域の前記アクセス対象のクラスタのエントリを含む前記FATを前記クラスタ管理テーブルに変換し前記第1の記憶領域に読み出した後、前記第2の記憶領域に記憶された前記クラスタ管理テーブルを前記FATに逆変換するファイルアクセスプログラム。
【0141】
(付記9)
付記4において、
前記クラスタ管理テーブルは、第1の記憶領域、及び、前記第1の記憶領域よりアクセスが遅い第2の記憶領域に記憶され、
前記変換工程では、前記第1の記憶領域の前記クラスタ管理テーブルにアクセス対象の前記クラスタのエントリが含まれない場合に、前記第1の記憶領域の前記クラスタ管理テーブルを前記第2の記憶領域に記憶させると共に、前記第2の記憶領域の前記アクセス対象のクラスタのエントリを含む前記クラスタ管理テーブルを前記第1の記憶領域に読み出すファイルアクセスプログラム。
【0142】
(付記10)
付記4乃至9のいずれかにおいて、
前記変換工程では、前記第1の記憶領域のサイズに対応する前記クラスタ管理テーブルのエントリ数の前記FATのエントリを変換するファイルアクセスプログラム。
【0143】
(付記11)
付記1乃至10のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第1のクラスタと連続するアドレスに位置する前記第2のクラスタに書き込むとき、前記第1のクラスタの前記第1のテーブルに前記第1の管理情報を記憶させ、前記第1のクラスタと連続しないアドレスに位置する前記第2のクラスタに書き込むとき、前記第1のクラスタの前記第1のテーブルに前記第2の管理情報を記憶させると共に、前記第2のテーブルに前記第1、第2のクラスタのクラスタ識別情報を記憶させるファイルアクセスプログラム。
【0144】
(付記12)
付記1乃至10のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第2のクラスタから読み出すとき、前記第1のテーブルに前記第1のクラスタに対応して前記第1の管理情報が記憶される場合に、前記第1のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、前記第1のテーブルに前記第1のクラスタに対応して前記第2の管理情報が記憶される場合に、前記第2のテーブルを参照し、前記第1のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出すファイルアクセスプログラム。
【0145】
(付記13)
付記1乃至12のいずれかにおいて、
前記第1のテーブルが有する管理情報のサイズは、2ビットであるファイルアクセスプログラム。
【0146】
(付記14)
付記1乃至13のいずれかにおいて、
前記第2のテーブルが有する前記クラスタ識別情報のサイズは、複数の種類の前記FATが有するクラスタ識別情報のサイズのうち、最も大きいサイズであるファイルアクセスプログラム。
【0147】
(付記15)
データ領域の複数のクラスタに分割して記憶されるファイルに、前記クラスタの連鎖情報を有するクラスタ管理テーブルに基づいてアクセスするアクセス工程を有し、
前記クラスタ管理テーブルは、第1のクラスタと前記第1のクラスタに連鎖する後続の第2のクラスタとが前記データ領域内の連続するアドレスに位置する場合に、前記第1のクラスタに対応して第1の管理情報を有し、前記第1、第2のクラスタが不連続のアドレスに位置する場合に、前記第1のクラスタに対応して第2の管理情報を有する第1のテーブルと、前記不連続のアドレスに位置する前記第1、第2のクラスタのクラスタ識別情報を有する第2のテーブルとを有するファイルアクセス方法。
【0148】
(付記16)
付記15において、
前記第1のテーブルは、さらに、前記ファイルのデータを記憶しない第3のクラスタに対応して第3の管理情報を有し、前記ファイルの末尾の前記データを記憶する第4のクラスタに対応して第4の管理情報を有するファイルアクセス方法。
【0149】
(付記17)
付記16において、
前記第1のテーブルは、さらに、前記第1乃至第4のクラスタと異なる第5のクラスタに対応して前記第2の管理情報を有し、
前記第2のテーブルは、さらに、前記第5のクラスタのクラスタ識別情報と、前記第5のクラスタの状態情報を有するファイルアクセス方法。
【0150】
(付記18)
付記15乃至17のいずれかにおいて、
前記複数のクラスタに対応して前記連鎖情報として前記後続のクラスタ識別情報を有するファイルアロケーションテーブル(以下、FAT)を、前記クラスタ管理テーブルに変換する変換工程を有するファイルアクセス方法。
【0151】
(付記19)
付記15乃至18のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第1のクラスタと連続するアドレスに位置する前記第2のクラスタに書き込むとき、前記第1のクラスタの前記第1のテーブルに前記第1の管理情報を記憶させ、前記第1のクラスタと連続しないアドレスに位置する前記第2のクラスタに書き込むとき、前記第1のクラスタの前記第1のテーブルに前記第2の管理情報を記憶させると共に、前記第2のテーブルに前記第1、第2のクラスタのクラスタ識別情報を記憶させるファイルアクセス方法。
【0152】
(付記20)
付記15乃至18のいずれかにおいて、
前記アクセス工程では、前記ファイルのデータを前記第2のクラスタから読み出すとき、前記第1のテーブルに前記第1のクラスタに対応して前記第1の管理情報が記憶される場合に、前記第1のクラスタと連続したアドレスに位置するクラスタからデータを読み出し、前記第1のテーブルに前記第1のクラスタに対応して前記第2の管理情報が記憶される場合に、前記第2のテーブルを参照し、前記第1のクラスタのクラスタ識別情報に対応するクラスタ識別番号のクラスタからデータを読み出すファイルアクセス方法。