説明

ファイル割当テーブルのキャッシュ方法

【課題】磁気ディスク等へのアクセス回数を抑えることにより、処理速度の向上を図ることができるFAT領域のキャッシュ方法を提供する。
【解決手段】磁気ディスク10の管理情報領域のFAT13の情報を記憶する内部RAM20内に、磁気ディスク10のMセクタ分記憶可能なキャッシュ領域21を設け、このキャッシュ領域21にFAT13からMセクタ単位で読み出した連続するMセクタの情報を記憶させ、このキャッシュ領域21の情報に基づいて磁気ディスク10のデータ領域15に対するアクセスを行う。これにより、1セクタ単位でFAT13を読み出す処理に比べて記憶媒体へのアクセス回数が減少し、処理速度が向上する

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、磁気ディスク装置等の記憶媒体に格納するデータを管理するFAT(File Allocation Table:ファイル割当テーブル)のキャッシュ方法に関するものである。
【背景技術】
【0002】
磁気ディスク等の記憶媒体の記憶領域に格納するデータの管理は、ファイルシステムによって実現されている。従来のファイルシステムの1つであるFATファイルシステムは、パーソナルコンピュータ等の情報処理装置で一般的に用いられているもので、ファイルを構成するデータの物理的な格納位置をFATと呼ばれるテーブルで管理するという特徴を持っている。
【0003】
FATファイルシステムでは、記憶媒体の物理的な最小アクセス単位をセクタと呼び、連続する複数のセクタをまとめたクラスタと呼ぶ単位で、ファイルを構成するデータを管理している。このクラスタの状態を記憶しておくために、記憶媒体上のクラスタと1:1に対応するエントリ(開始位置)を持つ管理テーブルが用意されており、これをFATと呼んでいる。
【0004】
図2(a)〜(d)は、従来のFATファイルシステムにおける記憶領域内のデータ構造の一例を示す図である。
【0005】
図2(a)に示すように、このFATファイルシステムでは、磁気ディスク等における記憶領域の論理アドレスの先頭に管理情報領域を設け、その後方にデータ領域を設けている。管理情報領域は、MBR(Master Boot Record),BPB(BIOS Parameter Block),FAT1,FAT2,及びディレクトリエントリで構成されている。
【0006】
MBRは、OS(Operating System)を磁気ディスクから読み込んで起動するプログラムであるブート・ローダを読み出すプログラムが書き込まれた領域である。BPBは、システム起動時に最初に読み込まれる領域(ブートセクタ)に書き込まれた、1クラスタ当たりのセクタ数等のその磁気ディスクの物理的な属性が記述された領域である。FAT1,FAT2は、ファイルに含まれるデータの物理的な格納位置を示す重要な領域であることから、同一内容が二重化されて格納されるようになっている。
【0007】
ディレクトリエントリは、図2(b)に示すように、ファイル毎にそのファイルサイズやファイルを構成するデータの先頭部分が格納されているクラスタのクラスタ番号(開始クラスタ番号)等の情報を格納したものである。図2(b)に例示したディレクトリエントリは、“FILE1.TXT”というファイル名と、“10”という開始クラスタ番号と、“60kB(キロバイト)”というファイルサイズで構成されている。これは、FILE1.TXTという名前のファイルを構成するデータの先頭は、10番のクラスタに格納されており、ファイルを構成する全データのサイズの合計が60kBであることを示している。
【0008】
ファイルサイズが大きくて1つのクラスタでは格納しきれない場合、開始クラスタ番号で示されるクラスタに続くクラスタの番号を特定するための情報は、図2(c)に示すように、FAT上のリンク情報で示される。
【0009】
図2(c)のFATには、各クラスタ番号に対応したフィールドであるFATエントリが設けられており、各FATエントリには、対応するクラスタが既にデータの記憶領域として使用されているか否かの区分と、使用されている場合には、そのデータに続く次のデータが記憶されているクラスタの番号が格納される。なお、後続先のクラスタがない場合、FATエントリには、終端を意味する値として例えば0xFFF(但し、0xは16進数を意味する)が格納される。
【0010】
図2(c)の例では、10番のクラスタに対応するFATエントリに“11”が格納されているので、10番のクラスタは、11番のクラスタにリンクしていることになる。同様に、11番のクラスタに対応するFATエントリには“12”が、12番のクラスタに対応するFATエントリには“13”がそれぞれ格納されており、10番、11番、12番、13番のクラスタが、この順にリンクされていることになる。13番のクラスタに対応するFATエントリには0xFFFが格納されているが、これはリンクの終端を意味しているので、この13番のクラスタでファイルのデータが終了することになる。
【0011】
また、14番のクラスタに対応するFATエントリには“0”が格納されているが、これはそのクラスタがデータの記憶領域として使用されておらず、空き領域であることを意味している。
【0012】
これにより、磁気ディスク等のデータ領域には、図2(d)に示すように、FILE1.TXTという名前のファイルを構成するデータが、4つのクラスタ10〜13に分割され、データ1、データ2、データ3及びデータ4として格納されていることが示される。
【0013】
このようなFATファイルシステムでは、磁気ディスク等の記憶媒体にファイルを保存する場合、1セクタ単位でFATにアクセスし、空き領域となっているクラスタ番号を探し、データ領域の該当するクラスタにファイルのデータを保存すると共に、管理情報領域のディレクトリエントリとFATの情報を更新する。
【0014】
【特許文献1】特開2004−013276号公報
【特許文献2】特開2004−157997号公報
【発明の開示】
【発明が解決しようとする課題】
【0015】
しかしながら、近年、デジタルオーディオやデジタルカメラで操作するファイルサイズは数MBから数十MBと巨大化しており、従来のような1セクタ単位でのFATの管理方法では、1つのファイルを保存する度に、FATを更新するために磁気ディスク等へのアクセスが頻発する。このため、ファイルを保存したり読み出したりする処理に長大な時間がかかり、処理速度が低下するという課題があった。
【0016】
本発明は、巨大化したファイルを処理する場合でも、磁気ディスク等へのアクセス回数を抑えることにより、処理速度の向上を図ることができるFAT領域のキャッシュ方法を提供することを目的としている。
【課題を解決するための手段】
【0017】
本発明は、保存するデータを格納するデータ領域と該データ領域に保存されたデータの格納位置を管理するファイル割当テーブルとを有する記憶媒体に対して、前記データ領域に格納されたデータにアクセスするためにキャッシュメモリを設け、前記ファイル割当テーブルの情報を前記キャッシュメモリに記憶するファイル割当テーブルのキャッシュ方法において、前記記憶媒体の最小アクセス単位であるセクタのデータをM(但し、Mは複数)セクタ分記憶可能な記憶領域を有するキャッシュメモリを設け、前記ファイル割当テーブルにアクセスするときに、アクセス対象の情報が格納されるセクタから連続してM個のセクタにアクセスすることを特徴としている。
【発明の効果】
【0018】
本発明では、ファイル割当テーブルの情報を記憶するキャッシュメモリにMセクタ分記憶することができる記憶領域を設け、この記憶領域にファイル割当テーブルの連続するMセクタ分の情報を記憶させるようにしている。これにより、従来の1セクタ単位の処理に比べて記憶媒体へのアクセス回数が減少し、処理速度が向上するという効果がある。
【発明を実施するための最良の形態】
【0019】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例1】
【0020】
図1は、本発明の実施例を示す磁気ディスクのFATファイルシステムの構成図である。このFATファイルシステムは、磁気ディスク10と、この磁気ディスク10のFAT情報をコピーしてキャッシュとして使用するための内部RAM(Random Access Memory)20を有している。
【0021】
磁気ディスク10の記憶領域の論理アドレスの先頭には、MBR11、BPB12、FAT13、及びディレクトリエントリ14で構成された管理情報領域が設けられ、その後方にデータ領域15が設けられている。データ領域15は、磁気ディスク10の総記憶容量に応じて予め定められたセクタ数単位に区分され、その区分毎にクラスタ番号が順番に付与されている。
【0022】
FAT13には、データ領域15に設定されたクラスタ番号に対応するFATエントリが設けられており、各FATエントリには、対応するクラスタがファイルのデータ記憶領域として使用されているか否かの区分と、使用されている場合には、そのデータに続く次のデータが記憶されているクラスタの番号が格納されるようになっている。なお、後続先のクラスタがない終端のクラスタの場合、そのFATエントリには、終端を意味する値として、0xFFFが格納される。また、ファイルのデータの記憶領域として使用されていない、空き領域のクラスタに対応するFATエントリには、0x000が格納されている。
【0023】
全クラスタを管理するためのFATエントリの情報量は1セクタに収まらないので、FAT13は、連続する複数のセクタにまたがって格納されているが、FAT13は、1セクタ単位でも連続した複数セクタ単位でも、任意にアクセスできるようになっている。なお、図1中には、FAT13を1セクタ単位に分割して、FAT13−1,FAT13−2,…,FAT13−nと記載している。
【0024】
一方、内部RAM20は、データ処理のための作業用の記憶領域として使用されるものであるが、その一部の領域がFAT13の情報をコピーしてキャッシュとして用いるためのキャッシュ領域21として割り当てられている。このキャッシュ領域21は、複数セクタ分のFAT13の情報を記憶できる容量を有している。
【0025】
次に、このようなFATファイルシステムを用いたFAT領域のキャッシュ方法について説明する。
【0026】
先ず、システム起動時の初期設定により、磁気ディスク10のFAT領域にアクセスするときに1回のアクセスで連続して読み書きするセクタ数M(但し、Mは2以上の整数)を設定すると共に、磁気ディスク10のFAT領域に対応するFAT情報を、内部RAM20中に記憶しておくためのキャッシュ領域21を確保する。なお、キャッシュ領域21は、M×N(但し、Nは1以上の整数)セクタ分のFAT情報を記憶できる容量に設定する。
【0027】
次に、磁気ディスク10にファイルを保存する場合、磁気ディスク10のFAT領域をMセクタ単位で読み出してキャッシュ領域21に記憶し、そのFATエントリから空き領域のクラスタを探す。探し出したデータ領域15の空き領域のクラスタにファイルのデータを格納し、キャッシュ領域21の該当するFATエントリには、格納したデータ領域に対応するクラスタ番号を書き込む。保存するファイルサイズが1クラスタで収まらない場合には、更に空き領域のクラスタに残りのデータを保存し、キャッシュ領域21の該当するFATエントリにリンク情報を書き込む。
【0028】
キャッシュ領域21に記憶されたFAT情報により、対応するクラスタがすべてデータ記憶領域として使用されている状態となった時点で、このキャッシュ領域21のFAT情報を、磁気ディスク10の対応するFAT領域に書き戻す。更に、保存すべきデータが残っているときには、書き戻したFAT領域に続くMセクタのFAT領域を磁気ディスク10から読み出してキャッシュ領域21に記憶し、同様の処理を継続する。
【0029】
そして、保存対象のファイルのデータを磁気ディスク10にすべて格納した後、この磁気ディスク10の管理情報領域のディレクトリエントリ14に、保存したファイルのファイル名、開始クラスタ番号、及びファイルサイズ等の情報を登録する。
【0030】
磁気ディスク10からファイルを読み出す場合、磁気ディスク10の管理情報領域のディレクトリエントリ14を読み出し、該当するファイルの開始クラスタ番号を調べる。この開始クラスタ番号に対応するFATエントリを有するFAT領域を先頭にして、磁気ディスク10からMセクタ分のFAT領域を読み出し、キャッシュ領域21に記憶する。そして、キャッシュ領域21に記憶されたFATエントリのリンク情報に基づいて、磁気ディスク10のデータ領域15から、目的のファイルのデータを読み出す。なお、磁気ディスク10からキャッシュ領域21に読み出したMセクタ分のFAT領域のリンク情報で、目的のファイルをすべて読み出すことができない場合には、リンク情報に基づいて後続するMセクタ分のFAT領域を読み出し、同様の処理を継続する。
【0031】
磁気ディスク10からファイルを削除する場合、磁気ディスク10の管理情報領域のディレクトリエントリ14を読み出し、該当するファイルの開始クラスタ番号を調べる。この開始クラスタ番号に対応するFATエントリを有するFAT領域を先頭にして、磁気ディスク10からMセクタ分のFAT領域を読み出し、キャッシュ領域21に記憶する。そして、キャッシュ領域21に保持されたFATエントリの内の該当するFATエントリを0x000に書き換えることにより、該当するファイルが格納されているクラスタ番号をFATエントリから消去する。その後、消去対象のファイルが格納されているクラスタ番号が消去されたキャッシュ領域21の情報を、磁気ディスク10の対応するFAT領域に書き戻す。
【0032】
なお、磁気ディスク10からキャッシュ領域21に読み出したMセクタ分のFAT領域のリンク情報で目的のファイルが格納されているクラスタ番号をすべて消去することができない場合には、リンク情報に基づいて後続するMセクタ分のFAT領域を読み出し、同様の処理を継続する。そして、削除対象のファイルのFAT情報をすべて削除した後、磁気ディスク10の管理情報領域のディレクトリエントリ14から、削除したファイルのファイル名、開始クラスタ番号、及びファイルサイズ等の情報を抹消する。
【0033】
なお、既存ファイルの更新は、更新後のファイルを保存し、その後、更新前のファイルを削除することで行うことができる。
【0034】
以上のように、本実施例の磁気ディスクのFATファイルシステムは、磁気ディスク10のFAT情報をコピーしてキャッシュとして使用するための内部RAM20に、複数セクタ(Mセクタ)分のFAT情報を記憶できる容量を有するキャッシュ領域21を設け、複数セクタ単位で磁気ディスク10のFAT13にアクセスするようにしている。これにより、1セクタ単位に磁気ディスク10のFAT13にアクセスする場合に比べて、磁気ディスク10へのアクセス回数が激減され、処理の高速化ができるという利点がある。
【0035】
また、キャッシュ領域21は、Mセクタ分のFAT情報をN個同時に保持できるように、M×Nセクタ分の容量に設定しているので、例えば同時にN個のファイルに対する処理を行うことができるという利点がある。
【0036】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
(a) ファイルの記憶媒体として磁気ディスク10を例に説明したが、NAND型フラッシュメモリやメモリスティック、SD(Secure Digital)メモリカード等にも同様に適用可能である。
(b) 磁気ディスク10の管理情報領域のFAT13やディレクトリエントリ14の構成は、例示したものに限定されない。
【図面の簡単な説明】
【0037】
【図1】本発明の実施例を示す磁気ディスクのFATファイルシステムの構成図である。
【図2】従来のFATファイルシステムにおける記憶領域内のデータ構造の一例を示す図である。
【符号の説明】
【0038】
10 磁気ディスク
13 FAT
14 ディレクトリエントリ
15 データ領域
20 内部RAM
21 キャッシュ領域

【特許請求の範囲】
【請求項1】
保存するデータを格納するデータ領域と該データ領域に保存されたデータの格納位置を管理するファイル割当テーブルとを有する記憶媒体に対して、前記データ領域に格納されたデータにアクセスするためにキャッシュメモリを設け、前記ファイル割当テーブルの情報を前記キャッシュメモリに記憶するファイル割当テーブルのキャッシュ方法であって、
前記記憶媒体の最小アクセス単位であるセクタのデータをM(但し、Mは複数)セクタ分記憶可能な記憶領域を有するキャッシュメモリを設け、前記ファイル割当テーブルにアクセスするときに、アクセス対象の情報が格納されるセクタから連続してM個のセクタにアクセスすることを特徴とするファイル割当テーブルのキャッシュ方法。
【請求項2】
前記キャッシュメモリは、Mセクタ分記憶できる記憶領域を、同時に処理する複数のファイルに応じてN(但し、Nは複数)個有することを特徴とする請求項1記載のファイル割当テーブルのキャッシュ方法。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2008−134777(P2008−134777A)
【公開日】平成20年6月12日(2008.6.12)
【国際特許分類】
【出願番号】特願2006−319822(P2006−319822)
【出願日】平成18年11月28日(2006.11.28)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【出願人】(301063740)データテクノロジー株式会社 (2)
【Fターム(参考)】