(57)【要約】【課題】ファイルアロケーションテーブルの構築が必要になったとしても、連続データ記録におけるデータ書き込みを継続できるようにする。【解決手段】複数のクラスタを有する記憶媒体にファイルを記録する記録装置にて、ファイルを構成するデータが格納されたクラスタの順番を管理するテーブルを更新せずに連続したクラスタにデータを書き込む第１の書き込み方式、又はクラスタにデータを書き込む度にクラスタの順番を書き込んでテーブルを更新する第２の書き込み方式で記憶媒体にデータを書き込む書き込み手段を有し、第１の書き込み方式で書き込み中に、データの書き込み周期よりテーブルの更新に要する期間が大きくなる所定の条件が満たされると、書き込み方式を第２の書き込み方式に切り替えることで、データ書き込みに支障をきたすことなく連続データ記録におけるデータ書き込みを継続できるようにする。【選択図】図２
2020077036.tif 000002
【特許請求の範囲】
【請求項１】
複数のクラスタを有する記憶媒体にファイルを記録する記録装置であって、
ファイルを構成するデータが格納された前記クラスタの順番を管理するテーブルを更新せずに連続したクラスタにデータを書き込む第１の書き込み方式、又は前記クラスタにデータを書き込む度に前記クラスタの順番を書き込んで前記テーブルを更新する第２の書き込み方式で前記記憶媒体にデータを書き込む書き込み手段と、
前記第１の書き込み方式で書き込み中に、データの書き込み周期より前記テーブルの更新に要する期間が大きくなる所定の条件が満たされると、書き込み方式を前記第２の書き込み方式に切り替える制御手段とを有することを特徴とする記録装置。
【請求項２】
前記テーブルの更新に要する期間がデータの書き込みが発生する間隔より大きいことを前記所定の条件とすることを特徴とする請求項１記載の記録装置。
【請求項３】
前記第１の書き込み方式で前記記憶媒体へ書き込み済みのデータサイズが所定のサイズより大きいことを前記所定の条件とすることを特徴とする請求項１記載の記録装置。
【請求項４】
前記テーブルの更新に要する期間は、前記第１の書き込み方式でデータが書き込まれた前記クラスタについて前記テーブルへの順番の書き込み、及び当該テーブルの前記記憶媒体へ書き込みに要する期間であることを特徴とする請求項１〜３の何れか１項に記載の記録装置。
【請求項５】
前記制御手段は、新規のファイルである場合には前記書き込み手段の書き込み形式を前記第１の書き込み方式に設定することを特徴とする請求項１〜４の何れか１項に記載の記録装置。
【請求項６】
前記制御手段は、データの書き込みに係るリクエストで前記第２の書き込み方式が指定されている場合には前記書き込み手段の書き込み形式を前記第２の書き込み方式に設定することを特徴とする請求項５記載の記録装置。
【請求項７】
前記制御手段は、前記記憶媒体に書き込むデータ形式が前記テーブルへのクラスタの順番の書き込みを要するデータ形式である場合には前記書き込み手段の書き込み形式を前記第２の書き込み方式に設定することを特徴とする請求項５又は６記載の記録装置。
【請求項８】
ファイルシステムにより前記書き込み手段及び前記制御手段の処理を実行することを特徴とする請求項１〜７の何れか１項に記載の記録装置。
【請求項９】
複数のクラスタを有する記憶媒体にファイルを記録する記録方法であって、
ファイルを構成するデータが格納された前記クラスタの順番を管理するテーブルを更新せずに連続したクラスタにデータを書き込む第１の書き込み方式、又は前記クラスタにデータを書き込む度に前記クラスタの順番を書き込んで前記テーブルを更新する第２の書き込み方式で前記記憶媒体にデータを書き込む書き込み工程と、
前記第１の書き込み方式で書き込み中に、データの書き込み周期より前記テーブルの更新に要する期間が大きくなる所定の条件が満たされると、書き込み方式を前記第２の書き込み方式に切り替える制御工程とを有することを特徴とする記録方法。
【請求項１０】
複数のクラスタを有する記憶媒体にファイルを記録する記録方法をコンピュータに実行させるプログラムであって、
ファイルを構成するデータが格納された前記クラスタの順番を管理するテーブルを更新せずに連続したクラスタにデータを書き込む第１の書き込み方式、又は前記クラスタにデータを書き込む度に前記クラスタの順番を書き込んで前記テーブルを更新する第２の書き込み方式で前記記憶媒体にデータを書き込む書き込みステップと、
前記第１の書き込み方式で書き込み中に、データの書き込み周期より前記テーブルの更新に要する期間が大きくなる所定の条件が満たされると、書き込み方式を前記第２の書き込み方式に切り替える制御ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録装置、記録方法、及びプログラムに関する。
【背景技術】
【０００２】
デジタルカメラ等の組込み機器の記憶媒体には、ＳＤカード等の着脱可能な記憶媒体が用いられることが多い。そのような記憶媒体のファイルシステムのフォーマットには、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムが多く用いられている。また、記憶媒体へのアクセスは多様なアプリケーションが必要とし、それらが記録するデータの種類も様々である（静止画記録、連写、動画記録、その他）。記録するデータの種類は、ＭＰ４形式のように論理的なデータの並び替えが必須なものや、Ｊｐｅｇ形式のように論理的なデータの並び替えが不要なものがある。
【０００３】
ＦＡＴファイルシステムは、大きくシステム領域とデータ領域とに分類される。データ領域は、クラスタと呼ばれる単位で構成され、動画や静止画等のデータや、実データのメタデータを管理するためのディレクトリ等が記録される。ディレクトリで管理するメタデータを記録する領域はディレクトリエントリと呼ばれ、ファイルやディレクトリ１つにつき１つ存在する。システム領域は、記憶媒体の情報を記録する領域や、各クラスタの連結状況や使用状況等の状態を管理するファイルアロケーションテーブル等から構成される。
【０００４】
ＦＡＴファイルシステムでは、通常、クラスタ単位のデータ書き込みの度にファイルアロケーションテーブルの更新が必要である（ＦＡＴ更新方式）。それに対して、ＦＡＴファイルシステムにおいて、高速アクセスを行うために連続したクラスタへ書き込まれたデータであればファイルアロケーションテーブルの更新を必要としない方法（非ＦＡＴ更新方式）が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９５７５９７２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デジタルカメラのようにリアルタイムデータとして動画記録可能な記録装置には、動画を一定サイズで分割して複数ファイルへ連続記録する機能を有するものがある。この機能は、記録中のファイルが一定サイズ又は一定時間になると強制的にクローズし、新規ファイルをオープンして続きのデータの記録を継続する。このとき、ファイルのヘッダ情報が全データ記録完了後に作成しなければいけないフォーマットである場合には、記録データの論理的な並べ替えが必要となる。その結果、連続したクラスタへの書き込みという非ＦＡＴ更新方式の条件を満たせず、記録済みデータに対するファイルアロケーションテーブルの構築が必要となる。ファイルアロケーションテーブルを構築する期間は、次のデータ記録ができない。しかしながら、高ビットレートでの動画記録の場合、所定間隔以内に次なるデータ記録を処理する必要がある。よって、記録済みデータに対するファイルアロケーションテーブルの構築期間がデータ書き込み間隔より長くなってしまうと、次なるデータの書き込み動作に支障をきたしてしまう。
【０００７】
本発明は、このような問題に鑑みてなされたものであり、ファイルアロケーションテーブルの構築が必要になったとしても、連続データ記録におけるデータ書き込みを継続できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る記録装置は、複数のクラスタを有する記憶媒体にファイルを記録する記録装置であって、ファイルを構成するデータが格納された前記クラスタの順番を管理するテーブルを更新せずに連続したクラスタにデータを書き込む第１の書き込み方式、又は前記クラスタにデータを書き込む度に前記クラスタの順番を書き込んで前記テーブルを更新する第２の書き込み方式で前記記憶媒体にデータを書き込む書き込み手段と、前記第１の書き込み方式で書き込み中に、データの書き込み周期より前記テーブルの更新に要する期間が大きくなる所定の条件が満たされると、書き込み方式を前記第２の書き込み方式に切り替える制御手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明は、データの書き込み周期よりテーブルの更新に要する期間が大きくなる場合に書き込み形式を切り替えることで、ファイルアロケーションテーブルの構築が必要になったとしても、連続データ記録におけるデータ書き込みを継続することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態における記録装置を有する撮像装置の例を示す図である。
【図２】第１の実施形態における記録装置の構成例を示す図である。
【図３】ＦＡＴファイルシステムを説明する図である。
【図４】第１の実施形態におけるファイルオープン処理の例を示すフローチャートである。
【図５】第１の実施形態における書き込み処理の例を示すフローチャートである。
【図６】第１の実施形態におけるＦＡＴ構築処理の例を示すフローチャートである。
【図７】第１の実施形態における読み出し処理の例を示すフローチャートである。
【図８】第１の実施形態におけるファイルクローズ処理の例を示すフローチャートである。
【図９】第１の実施形態におけるファイル結合処理の例を示すフローチャートである。
【図１０】第２の実施形態における書き込み処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を図面に基づいて説明する。
【００１２】
（第１の実施形態）
本発明の第１の実施形態について説明する。第１の実施形態として、ファイルシステムを介してファイル入出力を行うシステムにおいて、ファイルシステムに対してデータ書き込みリクエストを発行した場合に、ファイルシステム内で書き込み条件に応じてファイル書き込み方式を切り替える例を説明する。なお、以下の説明において、ＦＡＴ更新方式は、クラスタ単位のデータ書き込みの度にファイルアロケーションテーブルの更新を行うファイル書き込み方式である。また、非ＦＡＴ更新方式は、ファイルアロケーションテーブルの更新を必要としない連続したクラスタへデータ書き込みを行うファイル書き込み方式である。
【００１３】
図１は、第１の実施形態における記録装置を有する撮像装置の例を示す外観図である。本実施形態においては、撮像装置としてデジタル一眼レフカメラを例に説明する。図１において、１００はデジタル一眼レフカメラ本体（記録装置）である。タッチスクリーン１０１は、画像やアプリケーションのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）や各種情報を表示するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）画面を備える。また、タッチスクリーン１０１は、ＬＣＤ画面に重ねるようにタッチパネルを配置しており、ＧＵＩと連動させた直観的な操作を可能にする。
【００１４】
シャッターボタン１０２は、撮影指示を行うための操作部である。モードダイアル１０３は、各種モードを切り替えるための操作部である。操作部１０５は、ユーザーからの各種操作を受け付ける電子ダイヤル、タッチパネル、各種スイッチ、ボタン等の操作部材より成る操作部である。電子ダイヤル１０６は、操作部１０５に含まれる回転操作可能な操作部材である。電源スイッチ１０７は、電源オン／電源オフを切り替えるスイッチである。グリップ１０４は、本体を構成する部品であるが、右手で本体を把持しつつ、右手の親指で電子ダイヤル１０６等の操作部１０５を操作しやすくなるよう設計されている。
【００１５】
記憶媒体１０８は、メモリカードやハードディスク等の外部メディアである。記憶媒体スロット１０９は、記憶媒体１０８を格納するためのスロットである。記憶媒体スロット１０９に格納された記憶媒体１０８は、デジタルカメラ１００との通信が可能となる。蓋１１０は、記憶媒体スロット１０９の蓋である。
【００１６】
図２は、第１の実施形態における記録装置の構成例を示す図である。本実施形態における記録装置は、図２に示されるように、一般的なコンピュータを用いても構成可能なものである。本実施形態における記録装置では、内部バス２００に対して、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１、フラッシュメモリ２０２、メモリ２０３、表示制御部２０４、入力部２０５、及びメディアスロット２０６が接続される。内部バス２００に接続される各部は、内部バス２００を介して互いにデータの入出力ができるように構成されている。
【００１７】
ＣＰＵ２０１は、記録装置１００の各部を制御する。フラッシュメモリ２０２は、画像データやその他のデータ、及びＣＰＵ２０１が動作するための各種プログラム等が格納される。メモリ２０３は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。ＣＰＵ２０１は、例えばメモリ２０３をワークメモリとして用いて、フラッシュメモリ２０２に格納されるプログラムに従って処理を実行することで、各種処理を実行する。例えば、ＣＰＵ２０１は、プログラムに従って処理を実行することで、書き込み手段及び制御手段の機能が実現される。なお、ＣＰＵ２０１が動作するためのプログラムは、フラッシュメモリ２０２に格納されるのに限られず、例えば図示しないハードディスク等に記憶しておいてもよい。
【００１８】
表示制御部２０４は、ディスプレイ２０８に対して画像や各種情報等を表示させるための表示信号を出力する。ディスプレイ２０８は、図１に示したタッチスクリーン１０１のＬＣＤ画面に対応する。例えば、ＣＰＵ２０１がプログラムに従って生成した表示制御信号が表示制御部２０４に供給される。表示制御部２０４は、この表示制御信号に基づいて表示信号を生成しディスプレイ２０８に出力する。例えば、表示制御部２０４は、ＣＰＵ２０１が生成する表示制御信号に基づいて、ＧＵＩを構成するＧＵＩ画面や、フラッシュメモリ２０２から読み出した画像データを複合化した映像をディスプレイ２０８に表示させる。
【００１９】
入力部２０５は、ユーザー操作を受け付け、操作に応じた制御信号を生成してＣＰＵ２０１に供給する。例えば、入力部２０５は、ユーザー操作を受け付ける入力手段として、電子ダイヤルやタッチパネル等を有する。電子ダイヤルは回転操作を検出する部材であり、一定角度動くたびに電子パルスを発生させる入力手段である。この電子ダイヤルは、例えば図１に示した操作部１０５の１つである電子ダイヤル１０６に対応する。また、タッチパネルは、例えば平面的に構成された入力部に対して接触された位置に応じた座標情報が検出されるようにした入力手段である。このタッチパネルは、例えば図１に示した操作部１０５の１つであるタッチスクリーン１０１のタッチパネルに対応する。ＣＰＵ２０１は、これら入力手段に対してなされたユーザー操作に応じて入力部２０５で生成される制御信号に基づき、プログラムに従い記録装置１００の各部を制御する。これにより、記録装置１００に対し、ユーザー操作に応じた動作を行わせることができる。なお、電子ダイヤルやタッチパネルに限らず、キーボードといった文字情報入力デバイスやマウス等のポインティングデバイスも入力デバイスとして使用可能である。
【００２０】
なお、入力部２０５としてタッチパネルを用いる場合、入力部２０５とディスプレイ２０８とを一体的に構成することができる。これは、例えば図１に示したタッチスクリーン１０１のタッチパネルに対応する。例えば、タッチパネルを光の透過率がディスプレイ２０８の表示を妨げないように構成し、ディスプレイ２０８の表示面の上層に取り付ける。そして、タッチパネルにおける入力座標とディスプレイ２０８上の表示座標とを対応付ける。これにより、恰もユーザーがディスプレイ２０８上に表示された画面を直接的に操作可能であるかのようなＧＵＩを構成することができる。
【００２１】
メディアスロット２０６は、ＳＤカードやＣＦカードといった外部記憶媒体２０７が装着可能とされ、ＣＰＵ２０１の制御に基づいて、装着された外部記憶媒体２０７からのデータの読み出しや、外部記憶媒体２０７に対するデータの書き込みを行う。メディアスロット２０６は、図１に示した記憶媒体スロット１０９に対応し、外部記憶媒体２０７は、図１に示した記憶媒体１０８に対応する。なお、メディアスロット２０６が装着可能な外部記憶媒体２０７は、メモリカード等の不揮発性の半導体メモリに限られず、例えばＣＤやＤＶＤといったディスク記録媒体であってもよい。
【００２２】
なお、本実施形態における記録装置をデジタル一眼レフカメラに適用した場合を例に説明したが、これに限定されるものではなく、記憶媒体１０８へのデータ保存を行う記録装置であれば、本発明は適用可能である。例えば、本発明は、携帯電話端末や携帯型の画像ビューワ、プリンタ装置に設けられた印刷画像選択及び確認のためのディスプレイ、デジタルフォトフレーム、オーディオグラフィックイコライザ等に適用可能である。
【００２３】
図３は、本実施形態に適用可能なＦＡＴファイルシステムを説明する図である。ＦＡＴファイルシステムは、少なくともディレクトリエントリ部とファイルアロケーションテーブルと空き領域テーブルとから構成される。ＦＡＴファイルシステムでは、それらを用いて、所望のファイルを書き込み若しくは読み出しする際に、記憶媒体のデータ部において、どの領域へアクセスすればよいかを管理している。
【００２４】
図３（Ａ）にディレクトリエントリ部の一例を示す。ディレクトリエントリ部は、ディレクトリエントリとその属性を管理している。エントリ３０１、３０６は、ディレクトリエントリであり、少なくともファイル名３０２、ＦＡＴ更新方式フラグ３０３、データサイズ３０４、及び先頭クラスタ番号３０５を保持する。ファイル名３０２はファイルの名称であり、ＦＡＴ更新方式フラグ３０３はファイル書き込み方式を示すフラグである。また、データサイズ３０４は書き込み済みデータサイズであり、先頭クラスタ番号３０５はファイルが保存されている先頭クラスタの番号である。ＦＡＴファイルシステムでは、ディレクトリエントリ３０１や３０６は、１個以上存在することができる。
【００２５】
図３（Ｂ）にファイルアロケーションテーブルの一例を示す。ファイルアロケーションテーブルは、ファイルを構成するデータが格納されたクラスタの順番情報を管理するテーブルである。ファイルアロケーションテーブルの各要素３０７〜３１７は、データが格納される記憶媒体の各クラスタと１対１に対応している。例えば、クラスタ番号１に該当する要素３０７は、そのクラスタが未使用であることを示している。また、例えば、クラスタ番号２に該当する要素３０８は、そのクラスタが使用中であって、次なるデータがクラスタ番号３のクラスタに格納されていること、すなわちファイルを構成するデータのリンク先を示している。また、例えば、クラスタ番号４に該当する要素３１０は、そのクラスタが使用中であって、クラスタ番号４のクラスタに格納されているデータがファイルを構成する最後のデータであることを示している。
【００２６】
図３（Ｃ）に空き領域テーブルの一例を示す。空き領域テーブルは、データが格納される記憶媒体の１クラスタに対して１ビットを割り当てたテーブルである。空き領域テーブルの各ビット３１８〜３２８には、対応するクラスタが使用中であれば１ｂ（ｂはバイナリ値であることを示す）が設定され、未使用であれば０ｂが設定される。
【００２７】
図３（Ｄ）にデータ部の一例を示す。データ部は、複数のクラスタに分割された記憶媒体の記憶領域である。データ部の各クラスタ３２９〜３３９が、それぞれファイルアロケーションテーブルの各要素３０７〜３１７と空き領域テーブルの各ビット３１８〜３２８とに対応している。例えば、ファイルアロケーションテーブルにおけるクラスタ番号１の要素３０７はデータ部３２９に対応し、クラスタ番号２の要素３０８はデータ部３３０に対応している。また、空き領域テーブルにおける第１ビット３１８はデータ部３２９に対応し、空き領域テーブルの第２ビット３１９はデータ部３３０に対応している。なお、図３（Ｄ）に示していないが、データが格納される記憶媒体において、先頭の数クラスタはファイルシステム用に予約されていたり、ディレクトリエントリ用途等に使用されたりする。
【００２８】
ディレクトリエントリ部、ファイルアロケーションテーブル、及び空き領域テーブルは、データが格納される記憶媒体の所定の領域に保存されている。記録装置のＣＰＵ２０１は、メディアスロット２０６に外部記憶媒体２０７が差し込まれたことを検出したら、必要に応じて、その一部もしくは全体をメモリ２０３に読み出し、後述する各種処理の中で必要な情報を外部記憶媒体２０７へ書き戻す。
【００２９】
次に、ファイルシステムにおける各処理について説明する。ここで、第１の実施形態では、ファイル書き込み方式として非ＦＡＴ更新方式がデフォルト設定として適用されるものとする。
＜ファイルオープン（Ｏｐｅｎ）処理＞
ファイルシステムにおけるファイルオープン（Ｏｐｅｎ）処理について説明する。
図４は、第１の実施形態におけるファイルオープン処理の例を示すフローチャートである。アプリケーション等からファイルシステムに対するファイルオープンリクエストが発生することで、図４に示すファイルオープン処理が開始される。なお、ファイルオープンリクエストは、処理対象のファイル名（ディレクトリパス含む）を伴って発行される。
【００３０】
ファイルオープン処理が開始されると、ステップＳ４０１では、ＣＰＵ２０１は、処理対象のファイルが新規作成するファイルであるか否かを判別する。具体的には、ＣＰＵ２０１は、発生したファイルオープンリクエストで指定されたファイル名に該当するディレクトリエントリが存在するか否かを判定する。該当するディレクトリエントリが存在しない、すなわち処理対象のファイルが新規作成するファイルであるとＣＰＵ２０１が判定した場合、ステップＳ４０２へ遷移する。一方、該当するディレクトリエントリが存在する、すなわち処理対象のファイルが既に存在するファイルであるとＣＰＵ２０１が判定した場合、ステップＳ４０５へ遷移する。
【００３１】
ステップＳ４０２では、ＣＰＵ２０１は、ファイルを新規作成する。具体的には、ＣＰＵ２０１は、ファイルオープンリクエストで指定されたファイルに対応するディレクトリエントリを作成する。その後、ステップＳ４０３へ遷移する。
【００３２】
ステップＳ４０３では、ＣＰＵ２０１は、ディレクトリエントリの属性を決定し、決定した属性をファイルディスクリプタ及びステップＳ４０２において作成したディレクトリエントリに保持する。具体的には、ＣＰＵ２０１は、ステップＳ４０２において新規作成したディレクトリエントリの属性として、ファイル名３０２、ＦＡＴ更新方式フラグ３０３、データサイズ３０４、及び先頭クラスタ番号３０５を設定する。ＣＰＵ２０１は、ファイル名３０２にはファイルオープンリクエストで指定された文字列を設定し、ＦＡＴ更新方式フラグ３０３にはデフォルト設定として非ＦＡＴ更新方式を示すフラグを設定する。また、ＣＰＵ２０１は、データサイズ３０４には初期値として０を設定し、先頭クラスタ番号３０５には空き領域テーブルから取得できる空き領域に該当する未使用クラスタ番号を設定する。ここで決定した属性は、ファイルディスクリプタとしてメモリ２０３に領域を確保して各属性を保持するとともに、作成したディレクトリエントリへ設定し、外部記憶媒体２０７へ書き戻す。その後、ステップＳ４０４へ遷移する。
【００３３】
ステップＳ４０４では、ＣＰＵ２０１は、ファイルディスクリプタをリクエスト発行元へ返却する。具体的には、ＣＰＵ２０１は、作成したディレクトリエントリとしてメモリ２０３に確保した属性が保持されている領域をファイルオープンリクエストの発行元へ通知する。このファイルディスクリプタは、後述するファイル書き込み処理やファイル読み出し処理で使用される。ステップＳ４０４の処理が終わると、ＣＰＵ２０１は、ファイルオープン処理を終了する。
【００３４】
また、ステップＳ４０５では、ＣＰＵ２０１は、ディレクトリエントリを読み出し、読み出したディレクトリエントリの属性をファイルディスクリプタに保持する。具体的には、ＣＰＵ２０１は、ファイルオープンリクエストで指定されたファイルに対応するディレクトリエントリを読み出し、ファイルディスクリプタとしてメモリ２０３に領域を確保して読み出した各属性を保持する。したがって、新規ファイルでない既存のファイルである場合、ファイル書き込み形式は、前の形式（前のクローズ処理時の形式）に応じて、非ＦＡＴ更新方式又はＦＡＴ更新方式が設定される。その後、ステップＳ４０４へ遷移する。
【００３５】
なお、前述した説明では、新規作成するファイルである場合、ファイル書き込み方式として非ＦＡＴ更新方式がデフォルト設定として設定されるようにしているが、これに限定されるものではない。作成するファイルの拡張子（ファイルの種類）に応じて、非ＦＡＴ更新方式又はＦＡＴ更新方式を設定するようにしてもよい。また、ファイルオープンリクエストでファイル書き込み方式を指定できるようにし、指定に応じて非ＦＡＴ更新方式又はＦＡＴ更新方式を設定するようにしてもよい。
【００３６】
＜書き込み処理＞
次に、ファイルシステムにおける書き込み処理について説明する。
図５は、第１の実施形態における書き込み処理の例を示すフローチャートである。アプリケーション等からファイルシステムに対する書き込みリクエストが発生することで、図５に示す書き込み処理が開始される。なお、書き込みリクエストは、ファイルオープン処理で返却されたファイルディスクリプタを伴って発行される。
【００３７】
書き込み処理が開始されると、ステップＳ５０１では、ＣＰＵ２０１は、ファイル書き込み方式が非ＦＡＴ更新方式であるかＦＡＴ更新方式であるかを判別する。具体的には、ＣＰＵ２０１は、書き込みリクエストに指定されたファイルディスクリプタに保持されているＦＡＴ更新方式フラグを確認する。ＦＡＴ更新方式フラグが非ＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ５０２へ遷移し、ＦＡＴ更新方式フラグがＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ５１１へ遷移する。
【００３８】
ステップＳ５０２では、ＣＰＵ２０１は、書き込みリクエストを受領した時刻と回数をメモリ２０３に保持する。その後、ステップＳ５０３へ遷移する。
【００３９】
ステップＳ５０３では、ＣＰＵ２０１は、平均書き込み間隔とＦＡＴ構築期間を算出する。平均書き込み間隔とは、書き込みリクエストが発生する時間間隔の平均値として算出されるデータの書き込み周期であり、ＦＡＴ構築期間とは、処理対象のファイルに関してファイルアロケーションテーブルの作成及び書き込みに要する時間である。具体的には、ＣＰＵ２０１は、ステップＳ５０２において保持した書き込みリクエストの受領時刻と回数から平均書き込み間隔を算出する。平均書き込み間隔は、すべての書き込みリクエストについて１つ前の書き込みリクエストに対する受領時刻の差分を保持しておき、その合計を（リクエストの総数−１）で割ることで算出しても良い。また、書き込みリクエスト毎に間隔の平均を算出した値をファイルディスクリプタに関連付けて保持しておき、新たな書き込みリクエストにおける間隔と、既に計算済みの間隔の平均値とをリクエスト回数を用いて加重平均することで算出しても良い。また、ＣＰＵ２０１は、ファイルディスクリプタに保持されているデータサイズから使用クラスタ数を算出し、「（クラスタ１つあたりの更新時間＋クラスタ１つあたりの外部記憶媒体２０７への書き込み時間）×クラスタ数」でＦＡＴ構築期間を算出する。その後、ステップＳ５０４へ遷移する。
【００４０】
ステップＳ５０４では、ＣＰＵ２０１は、ステップＳ５０２においてメモリ２０３に保持した最新の書き込みリクエストの受領時刻と、ステップＳ５０３において算出した平均書き込み間隔とをファイルディスクリプタに関連付けて保持する。その後、ステップＳ５０５へ遷移する。
【００４１】
ステップＳ５０５では、ＣＰＵ２０１は、ステップＳ５０３において算出した平均書き込み間隔とＦＡＴ構築期間とを比較し、平均書き込み間隔がＦＡＴ構築期間より大きいか否かを判定する。平均書き込み間隔がＦＡＴ構築期間より大きいとＣＰＵ２０１が判定した場合にはステップＳ５０６へ遷移し、ＦＡＴ構築期間が平均書き込み間隔より大きいとＣＰＵ２０１が判定した場合にはステップＳ５１０へ遷移する。
【００４２】
ステップＳ５０６では、ＣＰＵ２０１は、書き込み先クラスタの空き容量と書き込みデータサイズの残量とを比較し、書き込み先クラスタの空き容量が書き込みデータサイズの残量より大きいか否かを判定する。具体的には、ＣＰＵ２０１は、ファイルディスクリプタの属性であるデータサイズを読み出し、クラスタサイズで割った余りをクラスタサイズから減じることで書き込み先クラスタの空き容量を算出する。また、ＣＰＵ２０１は、書き込みリクエストに指定されているデータサイズから書き込み済みデータサイズを減じることで書き込みデータサイズの残量を算出する。そして、ＣＰＵ２０１は、算出した書き込み先クラスタの空き容量と書き込みデータサイズの残量とを比較し、書き込み先クラスタの空き容量の方が大きいとＣＰＵ２０１が判定した場合にはステップＳ５０７へ遷移する。一方、書き込みデータサイズの残量の方が大きいとＣＰＵ２０１が判定した場合にはステップＳ５０８へ遷移する。
【００４３】
ステップＳ５０７では、ＣＰＵ２０１は、クラスタへデータを書き込む。具体的には、ＣＰＵ２０１は、ファイルディスクリプタの属性であるデータサイズを読み出して、クラスタサイズで割った商と余りの値を計算する。計算して得られた商が書き込み済みクラスタ数であり、余りが書き込み途中クラスタの書き込み済みサイズである。さらに、ＣＰＵ２０１は、ファイルディスクリプタの属性である先頭クラスタ番号を読み出し、読み出した先頭クラスタ番号に書き込み済みクラスタ数を加えたクラスタ番号を書き込み先クラスタとする。ＣＰＵ２０１は、このようにして決定した外部記憶媒体２０７の書き込み先クラスタへ、書き込み済みデータに続いて残りの書き込みデータをすべて書き込む。そして、ＣＰＵ２０１は、書き込んだデータサイズを、ファイルディスクリプタの属性であるデータサイズに加算するとともに、ディレクトリエントリのデータサイズ３０４にも同じ値を設定し、外部記憶媒体２０７へ書き戻す。ステップＳ５０７の処理が終わると、ＣＰＵ２０１は、書き込み処理を終了する。
【００４４】
ステップＳ５０８では、ＣＰＵ２０１は、クラスタの終端までデータを書き込む。具体的には、ＣＰＵ２０１は、ファイルディスクリプタの属性であるデータサイズを読み出して、クラスタサイズで割った商と余りの値を計算する。計算して得られた商が書き込み済みクラスタ数であり、余りが書き込み途中クラスタの書き込み済みサイズである。さらに、ＣＰＵ２０１は、ファイルディスクリプタの属性である先頭クラスタ番号を読み出し、先頭クラスタ番号に書き込み済みクラスタ数を加えたクラスタ番号を書き込み先クラスタとする。ＣＰＵ２０１は、このようにして決定した外部記憶媒体２０７の書き込み先クラスタへ、書き込み済みデータに続いてクラスタの終端まで残りの書き込みデータを書き込む。そして、ＣＰＵ２０１は、書き込んだデータサイズを、ファイルディスクリプタの属性であるデータサイズに加算するともに、ディレクトリエントリのデータサイズ３０４にも同じ値を設定し、外部記憶媒体２０７へ書き戻す。その後、ステップＳ５０９へ遷移する。
【００４５】
ステップＳ５０９では、ＣＰＵ２０１は、次に書き込み先となるクラスタの使用可否を判断する。具体的には、ＣＰＵ２０１は、空き領域テーブルを参照して、ステップＳ５０８においてデータを書き込んだクラスタに続くクラスタが未使用状態（０ｂ）であるか否かを確認する。ＣＰＵ２０１は、未使用状態であると判定した場合には、そのクラスタに対応する空き領域テーブルのビットを使用状態（１ｂ）に変更して外部記憶媒体２０７へ書き戻した後に、ステップＳ５０６へ遷移する。一方、使用状態（１ｂ）であるとＣＰＵ２０１が判定した場合には、ステップＳ５１０へ遷移する。
【００４６】
ステップＳ５１０では、ＣＰＵ２０１は、ＦＡＴ構築処理を行う。ＦＡＴ構築処理の詳細は後述する。ＦＡＴ構築処理が終了した後、ファイルディスクリプタと残りの書き込みデータとそのサイズを伴ってステップＳ５１１へ遷移する。
【００４７】
ステップＳ５１１では、ＣＰＵ２０１は、一般的な書き込み処理を行い、外部記憶媒体２０７のクラスタにデータを書き込むとともに、ファイルディスクリプタやディレクトリエントリ等の更新をする。具体的には、ステップＳ５０１から遷移した場合には、ＣＰＵ２０１は、書き込みリクエストで指定されたファイルディスクリプタと書き込みデータと書き込みサイズを伴って処理を行う。一方で、ステップＳ５１０から遷移した場合には、ＣＰＵ２０１は、書き込みリクエストで更新されたファイルディスクリプタと残りの書き込みデータとそのサイズを伴って処理を行う。この書き込み処理は広く普及しているＦＡＴファイルシステムによる書き込み処理（ＦＡＴ更新方式での書き込み処理）を行うものであり、詳細は割愛する。ステップＳ５１１の処理が終わると、ＣＰＵ２０１は、書き込み処理を終了する。
【００４８】
このように本実施形態における書き込み処理では、ファイル書き込み方式が非ＦＡＴ更新方式であって、算出したＦＡＴ構築期間が平均書き込み間隔より大きいと判定した場合、ＦＡＴ構築処理を行ってファイル書き込み方式をＦＡＴ更新方式に切り替える。また、ファイル書き込み方式が非ＦＡＴ更新方式であるが、次のクラスタが使用できずに非ＦＡＴ更新方式でのデータ書き込みを継続できない場合、ＦＡＴ構築処理を行ってファイル書き込み方式をＦＡＴ更新方式に切り替える。
【００４９】
前述した書き込み処理において、ステップＳ５０５では、平均書き込み間隔とＦＡＴ構築期間の所定割合（例えば８０％）とを比較するようにしても良い。このようにすることで、ＦＡＴ構築処理を余裕もって実施することが可能となる。また、「平均書き込み間隔／（クラスタ１つあたりの更新時間＋クラスタ１つあたりの外部記憶媒体２０７への書き込み時間）」によって、書き込み間隔内に更新可能なクラスタ数を算出しておく。その算出した更新可能なクラスタ数に対して、書き込み済みデータサイズに該当するクラスタ数が大きいか小さいかで判断するようにしても良い。つまり、書き込み済みデータサイズが所定のサイズより大きいか小さいかで判断するようにしても良い。また、書き込み済みデータサイズに該当するクラスタ数と更新可能なクラスタ数の所定割合（例えば８０％）とを比較するようにしても良い。
【００５０】
また、前述した書き込み処理において、ステップＳ５０６において書き込み済みクラスタ数と書き込み途中のクラスタの書き込み済みサイズとを算出しておき、それをステップＳ５０７及びＳ５０８の処理において使用するようにしても良い。
【００５１】
＜ＦＡＴ構築処理＞
次に、ファイルシステムにおけるＦＡＴ構築処理について説明する。
図６は、第１の実施形態におけるＦＡＴ構築処理の例を示すフローチャートである。
【００５２】
ＦＡＴ構築処理が開始されると、ステップＳ６０１では、ＣＰＵ２０１は、構築するファイルアロケーションテーブルの開始位置を特定する。具体的には、ＣＰＵ２０１は、リクエストに指定されたファイルディスクリプタに保持されている先頭クラスタ番号とデータサイズとを取得し、先頭クラスタ番号をファイルアロケーションテーブルにおける更新対象の要素にする。その後、ステップＳ６０２へ遷移する。
【００５３】
ステップＳ６０２では、ＣＰＵ２０１は、ファイルアロケーションテーブルにおける更新対象の要素が示すリンク先を更新する。具体的には、ＣＰＵ２０１は、更新対象の要素が示すリンク先を次のクラスタ番号に更新する。その後、ステップＳ６０３へ遷移する。
【００５４】
ステップＳ６０３では、ＣＰＵ２０１は、ファイルアロケーションテーブル更新の完了判定を行う。具体的には、ＣＰＵ２０１は、ステップＳ６０１において取得したデータサイズのデータをすべて格納することができるクラスタ数分だけファイルアロケーションテーブルの要素を更新したか否かを判定する。ＣＰＵ２０１は、更新完了と判定した場合、最後のリンク先に該当する要素のリンク先にファイルの終わりを示すＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）を設定して、ステップＳ６０４へ遷移する。一方、ＣＰＵ２０１は、更新完了ではない、すなわち更新する要素が残っていると判定した場合、次のクラスタ番号を更新対象の要素にして、ステップＳ６０２へ遷移する。
【００５５】
ステップＳ６０４では、ＣＰＵ２０１は、非ＦＡＴ更新方式からＦＡＴ更新方式へファイル書き込み方式を切り替える。具体的には、ＣＰＵ２０１は、ファイルディスクリプタの属性であるＦＡＴ更新方式フラグをＦＡＴ更新方式を示すように変更する。また、ＣＰＵ２０１は、処理対象のファイルディスクリプタに対応するディレクトリエントリの属性であるＦＡＴ更新方式フラグ３０３を同じくＦＡＴ更新方式を示すように変更し外部記憶媒体２０７へ書き戻す。ステップＳ６０４の処理が終わると、ＣＰＵ２０１は、ＦＡＴ構築処理を終了する。
【００５６】
こうすることで、図５に示した書き込み処理において、ＦＡＴ更新方式フラグ３０３をＦＡＴ更新方式へ変更した後に続く書き込みリクエストは、例え非ＦＡＴ更新方式で記録可能であってもＦＡＴ更新方式で書き込みを行うことになる。その結果、非ＦＡＴ更新方式でリアルタイムデータの記録中に、データ書き込み間隔以内にＦＡＴ構築が不可能なサイズになることを防止することができる。
【００５７】
＜読み出し処理＞
次に、ファイルシステムにおける読み出し処理について説明する。
図７は、第１の実施形態における読み出し処理の例を示すフローチャートである。アプリケーション等からファイルシステムに対する読み出しリクエストが発生することで、図７に示す読み出し処理が開始される。なお、読み出しリクエストは、ファイルオープン処理で返却されたファイルディスクリプタを伴って発行される。
【００５８】
読み出し処理が開始されると、ステップＳ７０１では、ＣＰＵ２０１は、ファイル書き込み方式が非ＦＡＴ更新方式であるかＦＡＴ更新方式であるかを判別する。具体的には、ＣＰＵ２０１は、読み出しリクエストに指定されたファイルディスクリプタに保持されているＦＡＴ更新方式フラグを確認する。ＦＡＴ更新方式フラグが非ＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ７０２へ遷移し、ＦＡＴ更新方式フラグがＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ７０５へ遷移する。
【００５９】
ステップＳ７０２では、ＣＰＵ２０１は、読み出しリクエストに指定されたファイルディスクリプタに保持されている先頭クラスタ番号とデータサイズとを取得する。その後、ステップＳ７０３へ遷移する。
【００６０】
ステップＳ７０３では、ＣＰＵ２０１は、外部記憶媒体２０７からデータを読み出す。具体的には、ＣＰＵ２０１は、ファイルディスクリプタで管理されているデータ読み出し位置を取得する。このデータ読み出し位置は、先頭クラスタ番号で特定されるデータ部の先頭位置からのオフセットサイズであり、ディレクトリエントリには無い属性で、ファイルディスクリプタが独自に管理している。ＣＰＵ２０１は、ステップＳ７０２において取得した先頭クラスタ番号が指し示すデータ部の先頭位置からデータ読み出し位置分だけスキップした位置からデータを読み出す。そして、ＣＰＵ２０１は、読み出しリクエストで指定されたデータサイズ分のデータを読み出して、読み出しリクエストの発行元が指定したメモリ２０３に確保されているデータ格納領域（指定バッファ）へコピーする。その後、ステップＳ７０４へ遷移する。
【００６１】
ステップＳ７０４では、ＣＰＵ２０１は、データ読み出し位置を更新してファイルディスクリプタに保持する。具体的には、ＣＰＵ２０１は、ファイルディスクリプタの属性であるデータ読み出し位置に、ステップＳ７０３において実際に読み出したデータサイズを加算し、更新後のデータ読み出し位置とする。ステップＳ７０４の処理が終わると、ＣＰＵ２０１は、読み出し処理を終了する。
【００６２】
ステップＳ７０５では、ＣＰＵ２０１は、一般的な読み出し処理を行い、外部記憶媒体２０７のクラスタからデータを読み出す。この読み出し処理は広く普及しているＦＡＴファイルシステムによる読み出し処理（ファイルアロケーションテーブルを参照した読み出し処理）を行うものであり、詳細は割愛する。ステップＳ７０５の処理が終わると、ＣＰＵ２０１は、読み出し処理を終了する。
【００６３】
＜ファイルクローズ（Ｃｌｏｓｅ）処理＞
次に、ファイルシステムにおけるファイルクローズ処理について説明する。
図８は、第１の実施形態におけるファイルクローズ処理の例を示すフローチャートである。アプリケーション等からファイルシステムに対するファイルクローズリクエストが発生することで、図８に示すファイルクローズ処理が開始される。なお、ファイルクローズリクエストは、ファイルオープン処理で返却されたファイルディスクリプタを伴って発行される。
【００６４】
ファイルクローズ処理が開始されると、ステップＳ８０１では、ＣＰＵ２０１は、ディレクトリエントリの更新を行う。具体的には、ＣＰＵ２０１は、指定されたファイルディスクリプタの属性を用いて、ディレクトリエントリのファイル名３０２、ＦＡＴ更新方式フラグ３０３、データサイズ３０４、及び先頭クラスタ番号３０５を更新し、外部記憶媒体２０７へ書き戻す。その後、ステップＳ８０２へ遷移する。
【００６５】
ステップＳ８０２では、ＣＰＵ２０１は、処理対象のファイルに係るファイルディスクリプタを破棄する。具体的には、ＣＰＵ２０１は、メモリ２０３に確保した処理対象ファイルに対応するファイルディスクリプタの領域をすべて破棄することで、指定されたファイルディスクリプタを使用不可能にする。この処理の後、破棄したファイルディスクリプタに対する書き込みリクエストや読み込みリクエストが発生した場合、エラーとしてリクエストを処理する。ステップＳ８０２の処理が終わると、ＣＰＵ２０１は、ファイルクローズ処理を終了する。
【００６６】
＜ファイル結合処理＞
次に、ファイルシステムにおけるファイル結合処理について説明する。
図９は、第１の実施形態におけるファイル結合処理の例を示すフローチャートである。アプリケーション等からファイルシステムに対するファイル結合リクエストが発生することで、図９に示すファイル結合処理が開始される。なお、ファイル結合リクエストは、結合する前部ファイル名（ディレクトリパス含む）と後部ファイル名（ディレクトリパス含む）とを伴って発行される。
【００６７】
ファイル結合処理が開始されると、ステップＳ９０１では、ＣＰＵ２０１は、結合対象の前部ファイルに対するファイルオープン処理を行う。この処理は、前部ファイルのファイル名を指定した図４に示したファイルオープン処理である。その後、ステップＳ９０２へ遷移する。
ステップＳ９０２では、ＣＰＵ２０１は、結合対象の後部ファイルに対するファイルオープン処理を行う。この処理は、後部ファイルのファイル名を指定した図４に示したファイルオープン処理である。その後、ステップＳ９０３へ遷移する。
【００６８】
ステップＳ９０３では、ＣＰＵ２０１は、前部ファイルのファイルディスクリプタを指定して、図６に示したＦＡＴ構築処理を行う。その後、ステップＳ９０４へ遷移する。
ステップＳ９０４では、ＣＰＵ２０１は、後部ファイルのファイルディスクリプタを指定して、図６に示したＦＡＴ構築処理を行う。その後、ステップＳ９０５へ遷移する。
なお、前述したステップＳ９０１〜Ｓ９０４の処理は、ステップＳ９０１の処理とステップＳ９０３の処理との処理順序、及びステップＳ９０２の処理とステップＳ９０４の処理との処理順序が保証されれば、図示した順序と異なってもよい。
【００６９】
ステップＳ９０５では、ＣＰＵ２０１は、ディレクトリエントリとファイルアロケーションテーブルの更新を行う。具体的には、ＣＰＵ２０１は、前部ファイルに対応するファイルアロケーションテーブルにおける最後の要素のリンク先部を、後部ファイルの先頭クラスタ番号に書き換えて、外部記憶媒体２０７へ書き戻す。また、ＣＰＵ２０１は、前部ファイルのディレクトリエントリ３０１のデータサイズ３０４を新たなデータサイズに更新するとともに、ＦＡＴ更新方式フラグ３０３をＦＡＴ更新方式に変更して、外部記憶媒体２０７へ書き戻す。新たなデータサイズは、「（前部ファイルのクラスタ数×クラスタサイズ）＋後部ファイルのデータサイズ」により算出される。その後、ステップＳ９０６へ遷移する。
【００７０】
ステップＳ９０６では、ＣＰＵ２０１は、ファイルディスクリプタの更新を行う。具体的には、ＣＰＵ２０１は、ステップＳ９０１で取得した前部ファイルのファイルディスクリプタの属性であるデータサイズを、ステップＳ９０４で算出した新たなデータサイズで更新するとともに、ＦＡＴ更新方式フラグをＦＡＴ更新方式へ変更する。その後、ステップＳ９０７へ遷移する。
【００７１】
ステップＳ９０７では、ＣＰＵ２０１は、結合対象の後部ファイルに対するファイルクローズ処理を行う。この処理は、後部ファイルのファイルディスクリプタを指定した図８に示したファイルクローズ処理である。その後、ステップＳ９０８へ遷移する。
ステップＳ９０８では、ＣＰＵ２０１は、ファイル結合処理によって不要になるディレクトリエントリの削除を行う。具体的には、ＣＰＵ２０１は、ステップＳ９０７で解放した後部ファイルのファイルディスクリプタに対応するディレクトリエントリを、外部記憶媒体２０７から削除することで、後部ファイルのみでファイルが存在できないようにする。その後、ステップＳ９０９へ遷移する。
【００７２】
ステップＳ９０９では、ＣＰＵ２０１は、結合対象の前部ファイルに対するファイルクローズ処理を行う。この処理は、前部ファイルのファイルディスクリプタを指定した図８に示したファイルクローズ処理である。ステップＳ９０９の処理が終わると、ＣＰＵ２０１は、ファイル結合処理を終了する。
【００７３】
こうすることにより、処理後の前部ファイルのディレクトリエントリの先頭クラスタ番号からデータサイズ分だけのデータは、前部ファイルと後部ファイルのデータ部にあたるクラスタすべてがファイルアロケーションテーブルで結合されたものと一致する。これにより、前部ファイルのディレクトリエントリが、全データを指し示すディレクトリエントリとなる。この処理を行うことで、ヘッダ部をファイルの先頭に配置するような論理的なデータの並び替えを実現することができる。
【００７４】
第１の実施形態によれば、非ＦＡＴ更新方式で周期的なデータの記録において、データ書き込み間隔以内にファイルアロケーションテーブルの構築が不可能なサイズになる前に、ファイル書き込み形式をＦＡＴ更新方式へ切り替えることができる。したがって、非ＦＡＴ更新方式での連続データ記録中にファイルアロケーションテーブルの構築が必要になったとしても、データ書き込みに支障をきたすことなく、連続データ記録におけるデータ書き込みを継続することができる。
【００７５】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第２の実施形態として、ファイルシステムを介してファイル入出力を行うシステムにおいて、ファイルシステムに対してデータ書き込みリクエストを発行した場合に、ファイルシステム内でデータ種別に応じてファイル書き込み方式を切り替える例を説明する。第２の実施形態における記録装置は、ファイルシステムにおける書き込み処理が前述した第１の実施形態における記録装置と異なり、その他は第１の実施形態と同様であるので、以下ではファイルシステムにおける書き込み処理について説明する。
【００７６】
図１０は、第２の実施形態における書き込み処理の例を示すフローチャートである。アプリケーション等からファイルシステムに対する書き込みリクエストが発生することで、図１０に示す書き込み処理が開始される。なお、書き込みリクエストは、ファイルオープン処理で返却されたファイルディスクリプタを伴って発行される。
【００７７】
書き込み処理が開始されると、ステップＳ１００１では、ＣＰＵ２０１は、図５に示したステップＳ５０１と同様にして、ファイル書き込み方式が非ＦＡＴ更新方式であるかＦＡＴ更新方式であるかを判別する。ＦＡＴ更新方式フラグが非ＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ１００２へ遷移し、ＦＡＴ更新方式フラグがＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ１０１６へ遷移する。
【００７８】
ステップＳ１００２では、ＣＰＵ２０１は、書き込むデータのデータ形式が判別可能であるか否かを判定する。具体的には、ＣＰＵ２０１は、書き込みリクエストによって書き込むべきデータが、ファイルの先頭付近であり、そこにデータ形式が判別可能なヘッダ情報等が含まれるか否かを判定する。データ形式が判別可能な情報が含まれデータ形式が判別可能であるとＣＰＵ２０１が判定した場合、ステップＳ１００３へ遷移する。一方、データ形式が判別可能な情報が含まれずデータ形式の判別が不可能であるとＣＰＵ２０１が判定した場合、ステップＳＳ１００５へ遷移する。
【００７９】
ステップＳ１００３では、ＣＰＵ２０１は、書き込みリクエストによって書き込むデータのデータ形式を判別する。具体的には、ＣＰＵ２０１は、判別可能なデータ形式であり、かつ、最終的にＦＡＴ構築が必須なデータ形式であるか否かを判定する。最終的にＦＡＴ構築が必須なデータ形式であるとＣＰＵ２０１が判定した場合にはステップＳ１００４へ遷移し、最終的にＦＡＴ構築が必須なデータ形式ではないとＣＰＵ２０１が判定した場合にはステップＳ１００５へ遷移する。つまり、ファイルのヘッダ部（先頭付近）でファイル形式が判別可能な場合であり、そのファイル形式が最終的にＦＡＴ構築が必須であれば、最初からＦＡＴ更新方式として処理し、それ以外では非ＦＡＴ更新方式として処理する。
【００８０】
ステップＳ１００４では、ＣＰＵ２０１は、書き込みリクエストに指定されたファイルディスクリプタに保持されているＦＡＴ更新方式フラグに、ＦＡＴ更新形式を示すフラグを設定し、ステップＳ１００６へ遷移する。
ステップＳ１００５では、ＣＰＵ２０１は、書き込みリクエストに指定されたファイルディスクリプタに保持されているＦＡＴ更新方式フラグに、非ＦＡＴ更新形式を示すフラグを設定し、ステップＳ１００６へ遷移する。
【００８１】
ステップＳ１００６では、ＣＰＵ２０１は、ファイル書き込み方式が非ＦＡＴ更新方式であるかＦＡＴ更新方式であるかを判別する。具体的には、ＣＰＵ２０１は、書き込みリクエストに指定されたファイルディスクリプタに保持されているＦＡＴ更新方式フラグを確認する。ＦＡＴ更新方式フラグが非ＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ１００７へ遷移し、ＦＡＴ更新方式フラグがＦＡＴ更新方式を示しているとＣＰＵ２０１が判定した場合にはステップＳ１０１６へ遷移する。
【００８２】
ステップＳ１００７〜ステップＳ１０１５の処理は、図５に示した第１の実施形態におけるステップＳ５０２〜ステップＳ５１０の処理と同様であるので、その説明は省略する。
【００８３】
ステップＳ１０１６では、ＣＰＵ２０１は、一般的な書き込み処理を行い、外部記憶媒体２０７のクラスタにデータを書き込むとともに、ファイルディスクリプタやディレクトリエントリ等の更新をする。具体的には、ステップＳ１００１又はステップＳ１００６から遷移した場合には、ＣＰＵ２０１は、書き込みリクエストで指定されたファイルディスクリプタと書き込みデータと書き込みサイズを伴って処理を行う。一方で、ステップＳ１０１５から遷移した場合には、ＣＰＵ２０１は、書き込みリクエストで更新されたファイルディスクリプタと残りの書き込みデータとそのサイズを伴って処理を行う。この書き込み処理は広く普及しているＦＡＴファイルシステムによる書き込み処理（ＦＡＴ更新方式での書き込み処理）を行うものであり、詳細は割愛する。ステップＳ１０１６の処理が終わると、ＣＰＵ２０１は、書き込み処理を終了する。
【００８４】
第２の実施形態によれば、第１の実施形態と同様の効果が得られるとともに、ファイルシステムが判別可能な必ず並び替えが発生するデータ形式であれば、ファイル書き込み方式を最初からＦＡＴ更新形式に設定して処理を行うことができる。また、ファイルオープン処理において、ステップＳ４０３でディレクトリエントリの属性を決定する場合、ＦＡＴ更新方式フラグ３０３を、指定されたファイル名の拡張子で判断しても問題はない。また、ファイルオープンリクエストのオプションとしてデータ並び替え発生の有無を指定できるような構成にすることで、ファイルオープン処理の中でファイル書き込み方式を決定しても問題はない。
【００８５】
本発明に係る記録装置をデジタルカメラに適用した例を示したが、本発明の適用先はこれに限定されず、データ記録機能を利用する記録装置であれば本発明を適用可能である。例えば、スマートフォン、タブレット端末、ポータブルナビゲーションシステム、（ノート）パソコン、ウェアブルデバイス又は携帯ゲーム機等に本発明を適用することができる。
【００８６】
さらに、本発明は、各実施形態の１以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの１つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００８７】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００８８】
２００：内部バス  ２０１：ＣＰＵ  ２０２：フラッシュメモリ  ２０３：メモリ  ２０４：表示制御部  ２０５：入力部  ２０６：メディアスロット  ２０７：外部記憶媒体  ２０８：ディスプレイ
【図１】
2020077036.tif 000003
【図２】
2020077036.tif 000004
【図３】
2020077036.tif 000005
【図４】
2020077036.tif 000006
【図５】
2020077036.tif 000007
【図６】
2020077036.tif 000008
【図７】
2020077036.tif 000009
【図８】
2020077036.tif 000010
【図９】
2020077036.tif 000011
【図１０】
2020077036.tif 000012