(57)【要約】【課題】ＦＡＴ型ディスク上のファイルへのデータ書き込みや削除といった動作を行う場合に、データの更新が必要となるＦＡＴ領域へのディスク入出力処理を軽減できるようにする。【解決手段】ＦＡＴのデータを変更する手段と、データの読み出しまたは書き込みを行う際の一時保存エリアの制御を行う手段と、前記一時保存エリアに記憶されたデータのうち、データの変更に応じて記録媒体へ書き込む手段とを有し、少なくとも１つのＦＡＴのデータを前記一時保存エリアから読み出して変更し、前記変更したデータを前記記録媒体に書き込む位置と、内容を重複して保存する他のＦＡＴの書き込み位置とをＦＡＴの大きさを用いて算出して、前記一時保存エリアに記憶するよう制御し、さらに、前記一時保存エリアに記憶された変更されたＦＡＴデータを記録媒体へ書き戻す際、他のＦＡＴの書き込み位置へ同一のデータを書き込む。【選択図】図１
2011118623.tif 000002
【特許請求の範囲】
【請求項１】
ファイルアロケーションテーブルの大きさの情報を取得する取得手段と、
前記ファイルアロケーションテーブルのデータを変更するＦＡＴ処理手段と、
データの読み出しまたは書き込みを行う際の一時保存エリアの制御を行うバッファ制御手段と、
前記一時保存エリアに記憶されたデータのうち、データの変更に応じて記録媒体へ書き込む同期手段とを有し、
前記ＦＡＴ処理手段は、少なくとも１つのファイルアロケーションテーブルのデータを前記一時保存エリアから読み出して変更し、前記変更したデータを前記記録媒体に書き込む位置と、同一の内容を保存する他のファイルアロケーションテーブルの書き込み位置とを前記取得手段により取得したファイルアロケーションテーブルの大きさを用いて算出して、前記一時保存エリアに記憶するよう前記バッファ制御手段を制御し、
前記同期手段は、前記一時保存エリアに記憶された変更されたファイルアロケーションテーブルのデータを記録媒体へ書き戻す際、前記他のファイルアロケーションテーブルの書き込み位置へ同一のデータを書き込むことを特徴とするデータ同期装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ同期装置に関し、特に、ＦＡＴファイルシステムに用いて好適な技術に関する。
【背景技術】
【０００２】
ファイルアロケーションテーブル（File Allocation Table、以下、ＦＡＴ）を用いてファイルデータを管理するファイルシステムは、一般にＦＡＴファイルシステムと呼ばれている。特に、ＦＡＴファイルシステム用に論理フォーマットされたハードディスク等の記録メディアは、ＦＡＴ型ディスクと呼ばれている。ユーザプログラムからの指示を受け、ＦＡＴ型ディスクに対してデータの読み出しや書き込みといった動作を行う場合、ＦＡＴファイルシステムでは、その入出力をセクタと呼ばれる単位で行う。ここで、１セクタの大きさは通常は５１２バイト、またはそのべき乗である。また、２のべき乗（１、２、４、８、１６、…）個のセクタの集合はクラスタと呼ばれており、ＦＡＴ型ディスク上に存在するファイルはクラスタの集合で表される。１クラスタが何個のセクタから構成されるかは主にＦＡＴ型ディスクの容量によってディスクの論理フォーマット時に決定される。
【０００３】
ＦＡＴファイルシステムにより、新規にファイルを作成する場合は以下のように行われる。まず、データ内容を記録するために、初めてファイルに未使用クラスタが割り付けられると、対応するＦＡＴ項目の値は未使用を示す0000Hから、使用中かつ最終クラスタであることを示すFFFFHに変更される。そして、同じファイルに対してデータを追加記録し続けると、データ内容の大きさが１クラスタ分では足りなくなる。そこで、ファイルの最終クラスタに対応するＦＡＴ項目の値は次に新しく追加して割り付けられる未使用クラスタの位置を示すクラスタ番号に変更される。このとき、新しく追加された未使用クラスタのＦＡＴ項目の値を0000HからFFFFHに変更する。これを繰り返すことにより１つのファイルに次々とクラスタを割り付けていくことができる。以前に作成したファイルが存在し、それにデータを追加していく場合も同様である。一方、ファイルの大きさを小さくする場合、もしくはファイルを削除する場合には、操作の結果そのファイルに割り当てておく必要の無くなったクラスタに対応するＦＡＴ項目の値を0000Hに変更する。そして、新たなファイルの大きさに対して最終クラスタに対応するＦＡＴ項目の値をFFFFHに変更する。
【０００４】
ここで、前述したようにディスク上のデータは、セクタ単位で入出力が行われる。したがって、ＦＡＴの内容を更新する際は、ディスク上のデータを直接変更するのではなく、高速に入出力できる半導体メモリなどに一時保存エリア（以下、バッファ）を設ける。そして、一旦そのバッファにディスク上の元データを蓄積し、これに対して必要な変更を行い、その後適宜バッファの内容をディスク上へ書き戻すといった処理が行われる。このように、バッファの内容をディスク上へ書き戻す処理はデータ同期と呼ばれている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３７０３１８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＦＡＴ型ディスクにおいては、ＦＡＴ１及びＦＡＴ２の内容を常に同じものにしておく必要がある。そのため、ファイルへのデータの追加書き込みや削除などの動作に伴ってＦＡＴを更新する際には、ＦＡＴ１及びＦＡＴ２の内容を、それぞれ一旦バッファ上へ読み出す。そして、それぞれに対して同じ変更を行ってからディスクに書き戻してデータを同期するといった処理が必要になる。
【０００７】
また、ＦＡＴ型ディスクの場合、ＦＡＴ領域で各ファイルへのクラスタの割り当て状況を管理するという仕組みから、１つのファイルが使用しているクラスタの情報はＦＡＴ領域に散在している可能性がある。そのため、たとえファイルのサイズが小さくとも、更新する必要のあるＦＡＴ１及びＦＡＴ２のセクタの数が多くなる場合がある。ＣＰＵ処理と比較して非常に多くの処理時間を要するディスクへの入出力動作が多くなって、結果的にファイル操作全体の処理時間が長くなるという問題がある。
【０００８】
本発明は前述の問題点に鑑み、ＦＡＴ型ディスク上のファイルへのデータ書き込みや削除といった動作を行う場合に、データの更新が必要となるＦＡＴ領域へのディスク入出力処理を軽減できるようにすることを目的としている。
【課題を解決するための手段】
【０００９】
本発明のデータ同期装置は、ファイルアロケーションテーブルの大きさの情報を取得する取得手段と、前記ファイルアロケーションテーブルのデータを変更するＦＡＴ処理手段と、データの読み出しまたは書き込みを行う際の一時保存エリアの制御を行うバッファ制御手段と、前記一時保存エリアに記憶されたデータのうち、データの変更に応じて記録媒体へ書き込む同期手段とを有し、前記ＦＡＴ処理手段は、少なくとも１つのファイルアロケーションテーブルのデータを前記一時保存エリアから読み出して変更し、前記変更したデータを前記記録媒体に書き込む位置と、同一の内容を保存する他のファイルアロケーションテーブルの書き込み位置とを前記取得手段により取得したファイルアロケーションテーブルの大きさを用いて算出して、前記一時保存エリアに記憶するよう前記バッファ制御手段を制御し、前記同期手段は、前記一時保存エリアに記憶された変更されたファイルアロケーションテーブルのデータを記録媒体へ書き戻す際、前記他のファイルアロケーションテーブルの書き込み位置へ同一のデータを書き込むことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、重複する一方のファイルアロケーションテーブルのバッファ上への読み出し処理を省略することができる。これにより、その分高速にファイルデータの書き込みや、ファイルの削除といった動作を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】データ同期装置の機能構成例を示すブロック図である。
【図２】データ同期装置のハードウェア構成例を示すブロック図である。
【図３】ＦＡＴ型ディスクのフォーマットの一例を示す図である。
【図４】ＦＡＴ領域の構造例を示す図である。
【図５】ルートディレクトリ領域に記録されている情報の一例を示す図である。
【図６】バッファの構成例を示す図である。
【図７】ＦＡＴの更新処理手順の一例を示すフローチャートである。
【図８】バッファデータの同期処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（第１の実施形態）
以下、本発明の第１の実施形態について図面を参照しながら説明する。
図１は、本実施形態に係るファイルアロケーションテーブル（ＦＡＴ）を用いたＦＡＴファイルシステムにおけるデータ同期装置の機能構成例を示すブロック図である。
図１において、１０１はＦＡＴファイルシステムを利用するユーザプログラムであり、１０２は本実施形態によるＦＡＴデータ同期方式を実現するＦＡＴファイルシステムプログラムである。１０３はユーザプログラム１０１からの要求を受け付け、ファイルディスクリプタを管理してファイル名などで指定されたファイルを開閉する処理や、新規ファイルの作成、読み出し、書き込み動作のファイルポインタの管理などを行うファイル処理部である。
【００１３】
１０４はディスクから読み出されたディレクトリエントリ情報を解析して、ユーザプログラム１０１から指示されたファイルの存在を検索するディレクトリ処理部である。また、ディレクトリ処理部１０４は、ファイルの先頭部分のデータの含まれるクラスタ（開始クラスタ）番号を取得するとともに、最新のファイル情報をディレクトリエントリに書き込むといったディレクトリエントリの解析や更新等を行う。１０５は読み出し及び書き込みの対象となるファイルのファイル位置からディスク上のクラスタ番号をディレクトリエントリやＦＡＴ領域の情報を解析して取得するＦＡＴ処理部である。また、ＦＡＴ処理部１０５は、ファイルへデータを追加したり、ファイルを削除した場合には当該ファイルのＦＡＴチェインを正しく形成してＦＡＴ領域に書き込んだりする処理などを行う。
【００１４】
１０６はファイル処理部１０３、ディレクトリ処理部１０４及びＦＡＴ処理部１０５からの要求により、内部管理する一時保存エリアのバッファ内に格納されている指定されたセクタのデータを要求元へ返す処理を行うバッファ制御部である。また、バッファ制御部１０６は、指示に従って変更されたバッファの内容をディスクに書き戻す処理も行う。１０７は実際のデータの格納領域となるハードディスク、またはフラッシュメモリカードといった記録媒体のディスク（記録メディア）１０８から各種データを読み出す、またはディスク１０８へデータを書き込むディスクドライバ部である。
【００１５】
図２は、本実施形態に係るデータ同期装置のハードウェア構成例を示すブロック図である。
図２において、２０１はＣＰＵであり、上述のユーザプログラム１０１やＦＡＴファイルシステムプログラム１０２をロードして実行する。２０２はＲＡＭであり、上述のユーザプログラム１０１やＦＡＴファイルシステムプログラム１０２、ディスクドライバ部１０７を機能させるプログラムを格納する。さらにＲＡＭ２０２は、バッファ制御部１０６によるディスク１０８上のデータの読み出し、または書き込みの際のバッファ領域として使用される。また、各ソフトウエアプログラムの動作時に使用する各種変数の退避、或は保存用のワークエリアとして使用される。２０３はファイルデータの格納領域となるＦＡＴ型のディスク１０８との間で読み出し及び書き込みを行うためのディスク装置である。２０４はＣＰＵ２０１、ＲＡＭ２０２、及びディスク装置２０３を接続するシステムバスである。
【００１６】
図６は、バッファ制御部１０６により制御されるバッファの構成例を示す図である。
図６において、バッファは、バッファの状態を示す状態ビット６０１、そのバッファの内容が存在するセクタ番号６０２、及びディスク１０８からバッファへとコピーされるデータ６０３本体に区分される。状態ビット６０１には、そのバッファの内容がディスク１０８への書き出しを要することを示すdirtyビットが含まれている。なお、それ以外の状態については任意であるとする。以上の構成のバッファは、ＲＡＭ２０２上にユーザプログラム１０１が動作するために十分な領域が確保される。
【００１７】
次に、本実施形態におけるＦＡＴファイルシステムによるＦＡＴの更新処理動作について説明する。なお、本実施形態におけるＦＡＴ型のディスク１０８の記録フォーマット、ディレクトリエントリの構成、およびＦＡＴ領域の構成はそれぞれ、図３、図４及び図５に示すものである。
【００１８】
図３は、ＦＡＴ型ディスクのフォーマットの一例を示す図であり、基本的な構造は、ＭＳ−ＤＯＳ（登録商標）で採用されているものと同じである。
図３において、３０１は先頭の１セクタ目（論理セクタ番号０）を示すブートセクタである。ブートセクタ３０１には、オペレーティングシステムをロードするためのブートプログラム、前述のセクタ／クラスタ数、後述するＦＡＴ領域に使用されているセクタの数、ルートディレクトリエントリの個数などの情報が記録されている。
【００１９】
３０２はＦＡＴ領域であり、クラスタの所在とファイル本体（内容）へのクラスタの割り付け（アロケーション）状況とを兼ねたそのクラスタ番号に続く次のクラスタ番号を示すＦＡＴ項目を記録する領域である。ＦＡＴ領域３０２は安全性を確保するために２重化されており、図３における第１のＦＡＴ領域（以降、ＦＡＴ１）と第２のＦＡＴ領域（以降、ＦＡＴ２）とには常に同一の内容のものが記録されるようになっている。また、ＦＡＴ１とＦＡＴ２はディスク上に連続して配置されている。
【００２０】
図４は、ＦＡＴ領域３０２の構造例を示す図である。現在一般に広く使用されているＦＡＴ型ディスクには、１クラスタ分のＦＡＴ項目を示すために、１２ビット、１６ビット、または３２ビットを使用するものがあるが、本実施形態では１６ビットの場合を例に説明する。
図４において、各ＦＡＴ項目の先頭からの位置は、そのままその項目で管理しているクラスタの位置に対応している。なお、各項目の初期値は0000H（１６進数０）であり、これは未使用状態を示している。
【００２１】
図３の説明に戻り、３０３はルートディレクトリ領域であり、ファイルの所在を管理する領域である。１つのファイルに対応する項目は３２バイトで表現される。ルートディレクトリ領域３０３には、図５に示すように、ファイルの名前や大きさ（ファイルサイズ）、そのファイルのデータが含まれている先頭のクラスタ（開始クラスタ）番号などの情報が記録されている。
【００２２】
３０４はデータ領域であり、実際のファイルの内容（データ本体）やルートディレクトリに属するディレクトリに関する情報を記録する領域である。ＦＡＴ領域３０２と同様、データ領域はクラスタ単位で管理され、そのクラスタが属しているファイルとクラスタとのつながりの順序、あるいは未使用クラスタであるといった情報はＦＡＴ領域３０２によって管理されている。したがって、あるファイルに属するクラスタの集合とクラスタとのつながりの順序はＦＡＴ領域３０２によって論理的に連続してつながっていることになり、データ領域３０４においては、必ずしも一つのファイルのデータが物理的に連続しているとは限らない。また、１つのＦＡＴ領域の大きさを示すＦＡＴセクタ数は、ファイルの処理の対象のディスクに最初にアクセスがあった時点で、ブートセクタ３０１からその値を求め、すでにそれがＲＡＭ２０２上に記憶されているものとする。
【００２３】
図７は、本実施形態におけるＦＡＴの更新処理手順の一例を示すフローチャートである。
まず、ステップＳ７０１において、ＦＡＴ処理部１０５の制御によりバッファ制御部１０６は、これから更新するＦＡＴ項目の存在するセクタの番号を、図６のセクタ番号６０２に記憶する。なお、ディスク１０８上に図３に示すようなＦＡＴ１、ＦＡＴ２の両方に存在するが、ここではＦＡＴ１の範囲にある該当のセクタ番号を記憶する。
【００２４】
次に、ステップＳ７０２において、バッファ制御部１０６は、ステップＳ７０１で記憶したセクタ番号のデータを図６のデータ６０３に書き込む。そして、ステップＳ７０３において、バッファ制御部１０６は、ステップＳ７０２で書き込まれたバッファ上で、指示通りに該当するＦＡＴ項目を変更する。そして、ステップＳ７０４において、バッファ制御部１０６は、変更を行ったことを示すため、状態ビット６０１のdirtyビットを立てて処理を終了する。
【００２５】
一方、バッファの同期処理はユーザプログラム１０１から任意のタイミングで指示されることにより適宜行われる。図８は、バッファデータの同期処理の手順の一例を示すフローチャートである。なお、図８に示す各処理は、バッファ制御部１０６の制御により行われる。
まず、ステップＳ８０１において、状態ビット６０１のdirtyビットを参照して、そのバッファがディスク１０８への書き込みを必要とするセクタのものであるか否かを判断する。ディスク１０８への書き込みが必要ない場合は、ステップＳ８０５に進む。
【００２６】
一方、ステップＳ８０１の判断の結果、ディスク１０８への書き込みを必要とするセクタのものである場合は、ステップＳ８０２に進む。そして、そのバッファのセクタ番号６０２を参照して、しかるべきＦＡＴ１領域のセクタへデータ６０３を書き込むようにディスクドライバ部１０７へと指示を出す。次に、ステップＳ８０３において、あらかじめ求められたＦＡＴサイズｎから、ＦＡＴ２の該当するセクタ番号を算出する。具体的には、セクタ番号６０２にＦＡＴサイズｎを足したものになる。
【００２７】
次に、ステップＳ８０４において、ステップＳ８０２で書き込むよう指示したバッファのデータ６０３を、ステップＳ８０３で求めた対応するＦＡＴ２領域のセクタへと書き込むようにディスクドライバ部１０７へ指示する。そして、ステップＳ８０５において、全てのバッファに対し処理が終了下か否かを判断し、終了していない場合はステップＳ８０１に戻り、終了した場合はそのまま処理を終了する。以上のように、ステップＳ８０１〜ステップＳ８０４までの処理は、全てのバッファに対して繰り返し行われる。このように、一切ＦＡＴ２領域の内容をバッファに読み出さず、ファイルへのデータの追加書込み、削除等のファイル操作に伴って変更されたＦＡＴデータを、ＦＡＴ１及びＦＡＴ２の両方へ同じ内容のデータを書き込むことができる。
【００２８】
なお、本実施形態では、図６に示す構成でＲＡＭ２０２に確保されたバッファはＦＡＴデータ専用とした。ところが、このバッファはディレクトリエントリデータやファイルデータ用のバッファと共通のバッファとして用いてもよい。その場合、状態ビット６０１にＦＡＴビットを設け、そのバッファがディレクトリエントリデータやファイルデータとは区別されることを示すこととする。バッファの同期操作の際に、状態ビット６０１を参照してＦＡＴビットが立っている（例えば零以外）場合にのみ、同じバッファのデータ６０３をＦＡＴ２の対応するセクタに書き込むことにより、同様の効果が得られる。
【００２９】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００３０】
１０５  ＦＡＴ処理部、１０６  バッファ制御部、１０７  ディスクドライバ部、１０８  ディスク
【図１】
2011118623.tif 000003
【図２】
2011118623.tif 000004
【図３】
2011118623.tif 000005
【図４】
2011118623.tif 000006
【図５】
2011118623.tif 000007
【図６】
2011118623.tif 000008
【図７】
2011118623.tif 000009
【図８】
2011118623.tif 000010