(57)【要約】【課題】メディアに記録されるファイルについての再生処理速度の向上。【解決手段】更新前のファイルデータ（追記前データ）に続けて追記データを追加するようにしてファイルを更新するときには、先ず、追記前データと同じクラスタ数のデフラグ用予約領域を設定し、このデフラグ用予約領域に続くクラスタの連続領域に対して追記データを記録する。この後において、例えばＣＰＵの処理負荷などが一定以下に軽くなったとされると、追記前データをデフラグ用予約領域に移動させるようにして記録し直し、この段階で更新ファイルのフラグメントを解消する。【選択図】図９
2006164017.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体に対してデータを記録する記録手段と、
上記記憶媒体に記憶されるデータについて所定の単位データにより管理する管理手段と、
上記記憶媒体に記憶済みの単位データであった更新対象データに続けて、追記データを追加するようにして、単位データの内容の更新を行う場合において、上記記憶媒体における上記更新対象データを書き込み可能なだけの容量の空き領域が、この更新対象データのための予約領域として確保されるようにする予約領域確保手段と、
上記記録手段により、上記予約領域に続く記憶領域に対して上記追記データが記録されるようにする追記データ記録手段と、
更新後の単位データについて、上記更新対象データに続けて上記追記データが連結されて形成されるものとして、上記管理手段により管理されるようにするための処理を実行する第１次更新手段と、
上記第１次更新手段の処理が終了した後において、上記記録手段により上記更新対象データを上記予約領域に記録させる更新対象データ記録手段と、
上記更新対象データ記録手段により、上記予約領域に記録された更新対象データに続けて上記追記データが連結されて形成されるものとして、上記管理手段により管理されるようにするための処理を実行する第２次更新手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
上記記録手段は、
所定の最小記録データ単位によりデータを記録するようにされているとともに、
上記管理手段は、
上記単位データについて、１以上の最小記録データ単位の連結により形成されるものとして管理を行うものとされ、
上記第１次更新手段及び上記第２次更新手段は、
上記更新対象データを成す最小記録データ単位における有効データの終端に続けて上記追記データが連結されるものとして、上記管理手段により管理されるようにするための処理を実行する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
上記管理手段は、
記憶媒体上における上記最小記録データ単位ごとに対応する指示領域の集合により形成され、上記指示領域に対して、次に連結されるべき最小記録データ単位を示す情報を格納するようにされた主テーブル情報を備えることで、上記単位データについて１以上の最小記録データ単位の連結により形成されるものとして管理を行うとともに、上記主テーブル情報と同様の構造を有する副テーブル情報を備え、
上記第１次更新手段及び上記第２次更新手段は、
上記更新対象データに対応する上記主テーブル情報の管理内容に対応して決定される所定の指示領域に対して、上記更新対象データを成す最後の最小記録データ単位における有効データのサイズを格納する、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
上記記録手段は、
所定の最小記録データ単位によりデータを記録するようにされているとともに、
上記管理手段は、
記憶媒体上における上記最小記録データ単位ごとに対応する指示領域の集合により形成され、上記指示領域に対して、次に連結されるべき最小記録データ単位を示す情報を格納するようにされた主テーブル情報を備えることで、上記単位データについて１以上の最小記録データ単位の連結により形成されるものとして管理を行うとともに、上記主テーブル情報と同様の構造を有する副テーブル情報を備え、
上記予約領域確保手段は、
上記主テーブル情報については、上記予約領域に対応する最小記録データ単位の指示領域について、未使用でない領域として管理されるようにするための所要の情報が格納されるように上記管理手段を制御し、
上記副テーブル情報については、上記更新対象データに対応する上記主テーブル情報の管理内容に対応して決定される所定の指示領域に対して、上記予約領域の位置を示す情報が格納されるように上記管理手段を制御する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
上記管理手段は、
単位データごとに設けられるもので、１つの単位データに対してアクセスするための起点となるための所定の情報を格納したエントリ情報を備えるものとされたうえで、
上記第１次更新手段及び第２次更新手段による処理結果に応じて、上記エントリ情報の構造における所定位置に格納され、対応する単位データにおける更新対象データのための上記予約領域が確保されているか否かを示す確保状態指示情報についての変更を行う、指示情報管理手段をさらに備える、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
記憶媒体に対してデータを記録する記録手順と、
上記記憶媒体に記憶されるデータについて所定の単位データにより管理する管理手順と、
上記記憶媒体に記憶済みの単位データであった更新対象データに続けて、追記データを追加するようにして、単位データの内容の更新を行う場合において、上記記憶媒体における上記更新対象データを書き込み可能なだけの容量の空き領域が、この更新対象データのための予約領域として確保されるようにする予約領域確保手順と、
上記記録手順により、上記予約領域に続く記憶領域に対して上記追記データが記録されるようにする追記データ記録手順と、
更新後の単位データについて、上記更新対象データに続けて上記追記データが連結されて形成されるものとして、上記管理手順により管理されるようにするための処理を実行する第１次更新手順と、
上記第１次更新手順としての処理が終了した後において、上記記録手順により上記更新対象データを上記予約領域に記録させる更新対象データ記録手順と、
上記更新対象データ記録手順により、上記予約領域に記録された更新対象データに続けて上記追記データが連結されて形成されるものとして、上記管理手順により管理されるようにするための処理を実行する第２次更新手順と、
を実行することを特徴とする情報処理方法。
【請求項７】
記憶媒体に対してデータを記録する記録手順と、
上記記憶媒体に記憶されるデータについて所定の単位データにより管理する管理手順と、
上記記憶媒体に記憶済みの単位データであった更新対象データに続けて、追記データを追加するようにして、単位データの内容の更新を行う場合において、上記記憶媒体における上記更新対象データを書き込み可能なだけの容量の空き領域が、この更新対象データのための予約領域として確保されるようにする予約領域確保手順と、
上記記録手順により、上記予約領域に続く記憶領域に対して上記追記データが記録されるようにする追記データ記録手順と、
更新後の単位データについて、上記更新対象データに続けて上記追記データが連結されて形成されるものとして、上記管理手順により管理されるようにするための処理を実行する第１次更新手順と、
上記第１次更新手順としての処理が終了した後において、上記記録手順により上記更新対象データを上記予約領域に記録させる更新対象データ記録手順と、
上記更新対象データ記録手順により、上記予約領域に記録された更新対象データに続けて上記追記データが連結されて形成されるものとして、上記管理手順により管理されるようにするための処理を実行する第２次更新手順と、
を情報処理装置に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばファイルなどの単位によりデータが記録される記憶媒体に対応する情報処理装置と、その方法に関する。また、このような情報処理装置が実行するプログラムに関する。
【背景技術】
【０００２】
一般に、メディア（記憶媒体、記憶装置）に記憶されるデータは、ファイルシステム（若しくはファイルシステム相当のデータ管理情報）により、ファイル単位（若しくはファイル相当のデータ単位）により管理されるようになっている。ファイルシステムでは、通常、１つのファイルを形成するデータを複数に分割したデータ部分が、記憶媒体上において物理的に離散して記録されているとしても、これらのデータ部分が連結されて適正に１つのファイルとして管理されるようになっている。
【０００３】
しかしながら、データ部分が離散的に記録されて管理されるファイルについて、例えば再生などの処理を実行する場合には、これらのデータ部分ごとにアクセスが必要となる。つまり、１つのファイルを対象として処理を実行するのに複数回のアクセスが必要となって、処理速度などのパフォーマンスの低下を招くことになる。
特に、ＨＤＤ（ハードディスクドライブ）や各種光学ディスク状記録媒体などのディスク状記録媒体では、アクセス時間として、データ記録再生のためのヘッドを物理的に移動させるシーク動作を伴うことから、この問題が顕著となる。
【０００４】
このための対策としては、例えば、メディアに記憶済みとされている全データを対象としたデフラグ、あるいは最適化といわれる、メディアメンテナンスの処理を実行させることが知られている。このようなデフラグの処理を実行した結果、メディアに記憶されているファイルとしてのデータは、物理的、論理的な連続性が得られることとなる。これにより、ファイルを処理するときには、まず最初に先頭のデータにアクセスし、以降は物理的、論理的に連続してデータの読み出しを実行していけばよいことになる。つまり、シーク動作を伴うアクセス動作は最初の１回のみとなって、その分、処理速度は高速となる。ちなみに、このようなデフラグのためのメディアメンテナンスは、パーソナルコンピュータなどにも代表されるように、ユーザ操作に応じて実行するようになっているのが一般的である。
【０００５】
また、特許文献１に記載される、動画情報を記録するための構成を適用すれば、１ファイルを形成するデータを離散させることなく、１つのまとまった記憶領域に対して連続的に書き込まれた状態で記憶させることができる。
【０００６】
【特許文献１】特開２００４−８６８２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明としても、ファイルなどの単位データを形成するデータがメディア上で物理的連続性を有して記録されるようにして、データ処理速度などのパフォーマンスが向上されるようにすることを目的とする。
１ファイルを形成するデータが断片化し得る典型的な例としては、既にメディアに記憶されているファイルについての更新として、更新前のファイルのデータ（更新対象データ：追記前データ）の後ろに続けるようにして新規内容のデータ（追記データ）を追加するようなかたちで行う場合を挙げることができる。
このようなファイルの更新にあたり、メディアに既に記憶されていたファイルデータである追記前データの記録領域の直後に対しても、既に他のファイルなどのデータが記録されているとすると、追記前データの記録領域に続けて追記データを記録することはできない。この場合には、追記前データの記録領域とは物理的に離れることになる空き領域を探して追記データを記録することになる。この結果、１ファイルを形成するデータが、前半の追記前データと後半の追記データとで離散的に記録されてしまうことになる。
本発明としては、特に、このようにして追記による更新が行われる単位データ（ファイル）についてのフラグメントを解消するための構成に関して、できるだけ効率的なものとなるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
そこで本発明は上記した課題を考慮して、情報処理装置として次のように構成する。
つまり、記憶媒体に対してデータを記録する記録手段と、記憶媒体に記憶されるデータについて所定の単位データにより管理する管理手段とを備える。
また、記憶媒体に記憶済みの単位データであった更新対象データに続けて、追記データを追加するようにして、単位データの内容の更新を行う場合において、記憶媒体における更新対象データを書き込み可能なだけの容量の空き領域が、この更新対象データのための予約領域として確保されるようにする予約領域確保手段と、記録手段により、予約領域に続く記憶領域に対して追記データが記録されるようにする追記データ記録手段と、更新後の単位データについて、更新対象データに続けて追記データが連結されて形成されるものとして、上記管理手段により管理されるようにするための処理を実行する第１次更新手段を備える。
また、第１次更新手段の処理が終了した後において、記録手段により更新対象データを予約領域に記録させる更新対象データ記録手段と、この更新対象データ記録手段により、予約領域に記録された更新対象データに続けて追記データが連結されて形成されるものとして、管理手段により管理されるようにするための処理を実行する第２次更新手段とを備えることとした。
【０００９】
また、情報処理方法としては、記憶媒体に対してデータを記録する記録手順と、記憶媒体に記憶されるデータについて所定の単位データにより管理する管理手順と、記憶媒体に記憶済みの単位データであった更新対象データに続けて、追記データを追加するようにして、単位データの内容の更新を行う場合において、記憶媒体における上記更新対象データを書き込み可能なだけの容量の空き領域が、この更新対象データのための予約領域として確保されるようにする予約領域確保手順と、記録手順により予約領域に続く記憶領域に対して追記データが記録されるようにする追記データ記録手順と、更新後の単位データについて、上記更新対象データに続けて追記データが連結されて形成されるものとして管理手順により管理されるようにするための処理を実行する第１次更新手順と、この第１次更新手順としての処理が終了した後において、上記記録手順により上記更新対象データを上記予約領域に記録させる更新対象データ記録手順と、この更新対象データ記録手順により、予約領域に記録された更新対象データに続けて追記データが連結されて形成されるものとして管理手順により管理されるようにするための処理を実行する第２次更新手順とを実行するものとして構成することとした。
【００１０】
また、上記情報処理方法としての手順を情報処理装置に実行させるようにしてプログラムを構成することとした。
【００１１】
上記各構成によれば、本発明は、記憶媒体に記憶済みであった単位データである更新対象データ（追記前データ）に続けて追記データを追加するようにして、単位データの内容を更新する場合を前提としている。
そのうえで、単位データを更新するのにあたっては、先ず、記憶媒体上で、更新対象データのための空き容量を予約領域として確保し、さらに、この予約領域に続くとされる記憶領域に対して追記データを記録するようにされる。また、ここまでの段階において、記憶媒体に記憶されている更新対象データと追記データとの連結により、更新後の単位データが形成されるように管理を行うこととする。
そして、上記のようにして更新後の単位データを管理した後の所定の機会、タイミングでもって更新対象データを予約領域に記録する。また、これに応じて、更新後の単位データとしては、この予約領域に記録された更新対象データと追記データとの連結により形成されるものとして管理されるようにする。ここまでの段階に至ると、更新対象データと追記データは、記憶媒体上で連続する記憶領域に記憶されている状態が得られることになる。
また、上記したことによると、本発明では、先ず、追記データの記録を実行して、この追記データと、更新前のデータとを連結させることで、単位データを形成するものとして管理することとしている。この段階では、単位データとしては、更新前のデータと追記データとが記憶媒体上で離散して記憶されている可能性があるものの、単位データの更新処理としては一旦完結させている。そして、この後において、更新前データの予約領域への記録を実行することで、最終的に、断片化が解消された更新後の単位データを得ることとしている。つまり、解消された更新後の単位データを得るまでの記録動作としては、追記データの記録と、予約領域への更新前データの記録との２つを実行すべきことになるが、これらの記録動作について、それぞれ全く異なる機会、タイミングにおいて実行されるようにしている。
【発明の効果】
【００１２】
このようにして、本発明は、更新対象データに続けて追記データが追加されるようにして更新される単位データについて、これらの更新対象データと追記データとが記憶媒体上で離散しないようにして、連続的に記録されている状態を得ることができる。これにより、この単位データを対象とする再生などのデータ処理に関しての処理速度を向上させることが可能となる。
また、２つの記録動作（追記データの記録、予約領域への更新対象データの記録）が、一連の動作として実行されるのではなく、異なる機会、タイミングにより実行されるようにしていることで、断片化の無い更新後の単位データを得るまでに必要とされる総合的な処理時間、処理負担は分散されることになる。このことは、本発明としての単位データ更新のための処理が効率的なものとなっている、ということを意味する。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を実施するための最良の形態（以下、実施の形態という）について説明する。本実施の形態としては、本発明としての情報処理装置の構成をデジタルビデオカメラに適用した場合を例に挙げることとする。
【００１４】
図１は、本実施の形態としてのデジタルビデオカメラ１の構成例を示すブロック図である。
この図に示すデジタルビデオカメラ１において、光学系部２は、撮像レンズ、絞りなどを備えて成り、入射された光を撮像光として、光電変換部３に結像させる。また、光学系部２においては、フォーカス（焦点）調整のためのフォーカス調整機構や、絞り値に応じて絞りを可変する絞り可変機構などを備えているものとされ、このような機構部の駆動は、カメラ機能部６から出力される駆動信号によって行われる。カメラ機能部６は、ＣＰＵ１０の制御に応じて、しかるべきフォーカス状態や絞りの状態等が得られるように所要の駆動信号を出力するようにされている。
また、例えば光学ズーム機能を与えることとした場合には、光学系部２においてズームレンズを移動させるズーム機構を設けると共に、上記と同様にして、ＣＰＵ１０の制御に応じて上記ズーム機構を移動させる駆動部を設けるようにすればよい。さらに、カメラ機能部６として、ストロボを設けたうえで、ストロボ発光機能を与えるように構成することもできる。
【００１５】
光電変換部３は、例えば光電変換素子であるＣＣＤ(Charge Coupled Device)を備えて構成され、光学系部２から入射されて受光面にて結像された撮像光を光電変換することで撮像信号を生成してビデオ信号処理部４に出力する。撮影時においては、例えば露出設定結果に応じて決定されるシャッター速度の指示が、ＣＰＵ１０からビデオ信号処理部４に通知される。ビデオ信号処理部４では、通知されたシャッター速度に対応する走査タイミング信号を光電変換部３に出力する。光電変換部３は、この走査タイミング信号に応じて走査を行うようにして、光電変換処理を実行して映像信号を出力するようにされる。
【００１６】
ビデオ信号処理部４は、光電変換部３から入力されたアナログのビデオ信号（撮像画像信号）について、例えばゲイン調整、サンプルホールド処理を施すことによって波形整形を行ったうえで、Ａ／Ｄ変換を行うことで、デジタルとしてのビデオ信号データに変換する。そして、この変換処理によって得られたデジタルビデオ信号について、例えば、表示用輝度データの生成処理などをはじめ、表示部７にて表示が行われるようにするためのビデオ信号処理を実行する。これに伴い、ビデオ信号処理部４では、ＣＰＵ１０の制御に応じてキャラクタ画像なども撮像画像に重畳して表示可能なように、いわゆるオンスクリーンディスプレイのための信号処理も実行可能とされている。
表示部７として採用される実際のディスプレイデバイスについては特に限定されるべきものではないが、現状においては、広く液晶ディスプレイパネルが採用されている。
【００１７】
また、ビデオ信号処理部４は、光電変換部３から入力されたアナログビデオ信号を変換して得たデジタルビデオ信号について、例えば所定方式による圧縮符号化処理を施して、圧縮ビデオデータを生成することが可能とされている。
また、本実施の形態のデジタルビデオカメラは、スチルカメラ機能も備える。つまり、撮像画像信号について、写真としての所定形式による静止画データファイルを生成することが可能とされているが、このような画像処理も、ビデオ信号処理部４によって行われる。
【００１８】
また、ビデオ信号処理部４では、光電変換部３から入力された画像（映像）信号や、後述するメディアから読み出されたＡＶ(Audio Video)データのファイル（ＡＶファイル）などを、所定方式のアナログビデオ信号又はデジタルビデオ信号に変換して、画像入出力部５を介して外部機器などに出力可能とされている。
画像入出力部５は、外部から所定方式のビデオ信号を入力可能ともされており、この入力したビデオ信号をビデオ信号処理部４の処理を経て表示部７に表示させることが可能とされる。また、ビデオ信号処理部４は、画像入出力部５が入力したビデオ信号について、光電変換部３から入力されたアナログビデオ信号と同様にして、記録用データに変換してメディアコントローラ１３に転送することもできる。
これに対応して、画像入出力部５は、例えば所定方式に従った映像（画像）信号出力端子／映像信号入力端子を備える。
【００１９】
また、本実施の形態のデジタルビデオカメラ１は、音声処理部８及び音声入出力部９を備えることで、音声信号の入出力も可能とされている。
先ず、音声入力については、音声入出力部９としてマイクロフォンなどを備え、外部音声の収音を行って音声信号に変換して音声を入力するようにされる。そして、このようにして入力した音声信号を音声処理部８に出力する。音声処理部８は、例えば、撮像画像の圧縮符号化に対応する音声圧縮符号化方式により符号化された圧縮オーディオデータに変換するなどの音声信号処理を施す。
【００２０】
ＣＰＵ１０は、ビデオ信号処理部４により得られた撮像画像についての圧縮ビデオデータと、音声処理部８により得られた収音音声についての圧縮オーディオデータとにより、所定形式のＡＶファイルを形成するための制御処理を実行するようにされる。このＡＶファイルは、圧縮ビデオデータを再生して出力される動画像に対して、圧縮オーディオデータを再生して出力される音声の再生時間軸が同期したものとなっている。なお、実際にＡＶファイルを形成するための構成としては、ＣＰＵ１０がプログラムを実行して得られるデジタル信号処理となるソフトウェア構成とされてもよいし、あるいは、ＡＶファイルを形成するためのハードウェアを備えるとともに、ＣＰＵ１０がこのハードウェアについての動作を制御する構成としてもよい。
上記ＡＶファイルとしてのデータは、記録用データとして、例えばＣＰＵ１０の制御によってメディアコントローラ１３に転送される。また、ＣＰＵ１０は、ビデオ信号処理部４によって生成された写真画像としての所定形式の静止画データファイルについても、記録用データとしてメディアコントローラ１３に転送することができる。
【００２１】
音声入出力部９としては、音声信号入力端子などを備えて外部のオーディオ機器などからオーディオ信号を入力するようにも構成することができる。上記音声信号入力端子から入力されたオーディオ信号については、音声処理部８は、所定形式によるデジタルオーディオデータファイルに変換するようにされる。ＣＰＵ１０は、このようなデジタルオーディオデータファイルのデータについても、記録用データとしてメディアコントローラ１３に転送することができる。
【００２２】
メディアコントローラ１３は、ＣＰＵ１０との連携により、所定の異なる種別の外部のメディア（記憶媒体）、外部記憶デバイス（記憶装置）に対応して、これらのメディアに対するデータ処理に関する制御処理を実行可能に構成される。ここでいうメディアに対するデータ処理とは、メディアのフォーマット処理や、メディアの記憶領域に対するファイル及びファイル管理のための情報（ファイル管理情報）などの書き込み／読み出し処理など、メディアに記憶されるべきデータに関連する何らかの処理をいう。
【００２３】
本実施の形態では、メディアコントローラ１３に対しては、先ず、ハードディスクドライブ（ＨＤＤ）が接続されている。ＨＤＤは、周知のようにしてハードディスクといわれる、記憶媒体として磁気ディスクを備える記憶デバイスであり、現状においては、比較的低コストでギガバイトクラスの大容量が得られる。また、周知のようにして、記憶媒体である磁気ディスクに対する物理的なデータの読み出し／書き込みは、磁気ヘッドにより、磁気ディスク上に形成されるトラックをトレースしながら磁界印加、磁界検出を行うことによって実現される。
また、この場合のＨＤＤとしては、例えばデジタルビデオカメラ１に固定的に内蔵されるものとしてもよいし、デジタルビデオカメラ１（ホスト）に対して装脱可能な、所定の規格に従ったリムーバブル形態とされてもよい。
【００２４】
また、この図では、メディアコントローラ１３は、所定方式の光ディスク、光磁気ディスク、及び半導体メモリ素子を備える記憶デバイスである半導体記憶装置などにも対応してデータ処理が可能であることとされている。
光ディスク及び光磁気ディスクなどに対応する場合の実際としては、これらの記録（記憶）媒体に対応してデータの書き込み／読み出しが可能に構成されたドライブとしてのデバイスを備え、これらのデバイスとメディアコントローラ１３とを接続することになる。
また、半導体記憶装置に対応する場合は、半導体記憶装置の実際の規格に従って、この半導体記憶装置が装脱されるスロットを、デジタルビデオカメラ１の本体に備える。このスロットに対して半導体記憶装置が適正に装填されると、半導体記憶装置のピン端子がスロットのコネクタ部位の電極と接続され、これにより、半導体記憶装置は、メディアコントローラ１３との間で通信が可能に接続されることになる。
【００２５】
メディアコントローラ１３は、先に説明したようにして、記録用データが転送されてくるのに応じて、この記録用データを、メディアコントローラ１３と接続されているメディア（記憶媒体、記憶装置）のうちから対象として選択されているメディアに対してさらに転送する。データが転送されたメディアでは、メディアコントローラ１３側からの指示に応じて記憶領域に対してデータを書き込んで記憶させる。このようにしてメディアに記憶されるデータがファイルとして記憶管理されることになる。なお、メディアに記憶されるファイルの管理は所定方式のファイルシステムによって行われる。
【００２６】
また、例えばメディアに記憶されているファイルについての再生として、ＡＶファイルを再生するときには、ＣＰＵ１０及びメディアコントローラ１３は、指定されたＡＶファイルにアクセスして読み出しを行う。このようにして読み出されるＡＶファイルは、例えばＣＰＵ１０の処理により、圧縮ビデオデータと圧縮オーディオデータとに分離され、圧縮ビデオデータについてはビデオ信号処理部４に受け渡し、圧縮オーディオ信号については、音声処理部８に受け渡すようにされる。
この場合のビデオ信号処理部４及び音声処理部８は、それぞれ、上記のようにして転送されてきた圧縮ビデオデータ、圧縮オーディオデータについて、復調処理を含む所要の再生信号処理を実行する。これにより、圧縮ビデオデータを再生した画像を表示部７にて表示するとともに、この画像の再生時間に同期して、圧縮オーディオデータを再生して得られる音声信号を、音声入出力部９が有するとされるスピーカにより音声として出力させたり、ヘッドフォン端子から出力させることができる。
【００２７】
また、例えばメディアから再生されたオーディオデータファイルは、音声処理部８の音声信号処理を経た後に、音声入出力部９を介して、外部に対して所定形式のオーディオ信号、オーディオデータとして出力することも可能とされている。この場合、音声入出力部９としては、音声処理部８から出力される所定のオーディオ信号、オーディオデータの形式に対応するオーディオ出力端子を備えることになる。
【００２８】
ＣＰＵ(Central Processing Unit)１０は、プログラムを実行することでデジタルビデオカメラ１についての各種制御処理を実行する。ＲＯＭ１１は、ＣＰＵ１０が実行する各種プログラムのほか、ＣＰＵ１０が処理を実行するのに使用する各種設定情報などが記憶されている。ＲＡＭ１２は、ＣＰＵ１０がプログラムに従った処理を実行するときの作業領域として使用されるもので、各種の演算処理結果などのデータが保持される。
また、不揮発性メモリ１２ａは、例えばフラッシュメモリなどをはじめとした、電源供給が停止しても記憶内容が消去されない性質のメモリ素子により形成され、ＣＰＵ１０の制御によって、データの書き込み／読み出しが実行される。この不揮発性メモリ１２ａに記憶されるべきデータ（情報）としては、適宜内容の変更が行われる設定情報などが一般的であるが、特に限定されるものではなく、実際のデジタルビデオカメラ１の仕様などに応じて所要の各種の情報を記憶することとされればよい。
【００２９】
この場合の操作入力部１５は、デジタルビデオカメラ１に備えられる各種操作子を一括して示しているものとされる。例えば、この操作入力部１５における操作子としては、写真撮影時に操作されるシャッターボタン、撮影モードなどを選択する操作子、パラメータのアップ／ダウンを行うための操作子などが含まれる。さらには、操作入力部１５として、例えば表示部７の表示画面を利用したＧＵＩ(Graphical User Interface)としての入力操作を実現するための構成を備えてもよい。
【００３０】
通信部１６は、ＣＰＵ１０の制御に応じて、所定のデータ通信方式により外部デバイスと通信を行うためのハードウェア、ソフトウェアを実装して構成される部位である。この通信部１６が対応するデータ通信方式としては、有線、無線を問わず特に限定されるべきものではなく、また、対応するデータ通信方式の数も限定されるべきものでない。現状であれば、データ通信方式としては、有線ではEthernet（商標）などのネットワーク、USB(Universal Serial Bus)、IEEE(the Institute of Electrical and Electronic Engineers)1394などのデータバス規格などを挙げることができる。また、無線であれば、Bluetooth（商標）などのデバイス間近距離無線通信、IEEE802.11a/b/gなどの無線ＬＡＮ(Local Area Network)規格を挙げることができる。
【００３１】
電源部１７は、デジタルビデオカメラ１における各種のハードウェアデバイスに対して動作電源を供給するもので、例えばバッテリや電源アダプタからの電力供給を受けて動作する電源回路などを備えて構成される。
【００３２】
上記のようにして、本実施の形態のデジタルビデオカメラ１では、主としては、撮像／収音により得られるＡＶファイルを、ＨＤＤ、各種光学ディスク状記録媒体（光磁気ディスクを含む）、半導体記憶装置などのメディア（記憶媒体）に対して記憶させることができるようになっている。
上記のようにしてメディアに記憶されるファイルは、通常は、所定フォーマットによるファイルシステムにより管理されることになるのであるが、本実施の形態としては、ＦＡＴ(File Allocation Table)ファイルシステムにより管理されるものとしている。ＦＡＴファイルシステムは、周知のようにして、ツリー型のディレクトリ構造によりファイルを管理するようにされており、また、データの書き込み／読み出しについては、クラスタといわれる論理的な最小データ管理単位により行うものとされている。クラスタは、メディアにおける物理的なデータ書き込み／読み出しの最小単位であるセクタを所定数にまとめたものが１単位となる。
【００３３】
図２は、ＦＡＴファイルシステムの一般的なシステム構成を階層モデルにより示している。
先ず、この階層モデルとしては、ソフトウェア層と、その下層となるハードウェア層に大別される。
ソフトウェア層は、この場合には、メディアに対してホスト（実施の形態ではデジタルビデオカメラ１）となるデバイスにおいて、ＣＰＵが実行するプログラム、及び各種ファームウェア、ミドルウェアなどにより実現されるソフトウェア処理が対応するものとされる。この場合のソフトウェア層は、図示するように、上層から下層にかけて、アプリケーション１００、ファイルシステム１０１、デバイスドライバ１０２の各層が位置する。
ハードウェア層には、メディアそのものの物理的な記憶領域が位置するものとして考えることができる。
【００３４】
アプリケーション１００は、例えばファイルの記録／再生機能などを有して、メディアを使用するアプリケーションソフトウェアが対応し、ファイルレベルでのアクセス要求をファイルシステム１０１に対して行う。
【００３５】
ファイルシステム１０１は、ファイルシステムとしての機能を実現するソフトウェアが対応する。本実施の形態では、ＦＡＴファイルシステムを採用することとしているので、ファイルシステム１０１の機能を提供するソフトウェアとしても、ＦＡＴファイルシステムに対応して構成されるものとなる。
このファイルシステム１０１では、アプリケーション１００からのファイルレベルによるアクセス要求を、ＦＡＴファイルシステムのフォーマットにおけるデータの管理単位となるクラスタのレベルに変換して、デバイスドライバ１０２に対してアクセス要求を行う。
【００３６】
デバイスドライバ１０２は、コントロール対象のデバイスとなるメディアをコントロールするためのソフトウェアが対応し、上記ファイルシステム１０１からのＦＡＴファイルシステムフォーマットに従ったクラスタレベルによるアクセス要求を、メディア１０３上におけるデータの記録再生単位であるセクタのレベルに変換して、メディア１０３へのアクセス要求を行う。
【００３７】
この場合のメディア１０３は、論理的にはＦＡＴファイルシステムに従ってフォーマット（初期化）されたものとなる。図１では、ＨＤＤ、光学ディスク状記録媒体、半導体記憶装置など、メディアコントローラ１３と接続されている記憶媒体、記憶装置がここでのメディア１０３に相当する。そして、メディア１０３は、デバイスドライバ１０２からのセクタレベルのアクセス要求に応答して、指定されたセクタアドレスからデータを読み出して、デバイスドライバ１０２に返す。つまり、セクタレベルでのアクセス応答を実行する。
デバイスドライバ１０２は、メディア１０３からのセクタレベルでのアクセス応答、つまりセクタ単位でのデータの受け取りを行い、この受け取ったデータについて、クラスタ単位によるデータとして扱ってファイルシステム１０１に受け渡す（クラスタレベルでのアクセス応答）。
ファイルシステム１０１は、デバイスドライバ１０２から受け取ったデータを、ファイルレベルのデータとしてアプリケーション１００に受け渡すようにされる。アプリケーション１００は、ファイルとして受け取ったデータについて、例えばユーザによる操作入力などに応じたアプリケーションレベルでの所要の処理を実行する。
【００３８】
また、ＦＡＴファイルシステムは、記憶ファイルをツリー型のディレクトリ構造により管理し、また、ファイルをクラスタ単位の集合として管理するようにされている。このようなファイル管理、データ管理は、周知のようにしてディレクトリエントリ、及びＦＡＴといわれるテーブル情報を備えることにより実現されるものとなる。ディレクトリエントリは、メディア上におけるファイル、ディレクトリ（サブディレクトリ）の所在をクラスタレベルで示す情報であり、ＦＡＴは、ディレクトリ、ファイルを成すクラスタレベルでのチェイン（リンク、連結）を示す情報である。
【００３９】
図３は、ＦＡＴの規格に従ったメディアのフォーマット構造を示している。
ＦＡＴの形式としては複数が規定されているのであるが、ここでは、ＦＡＴ１６及びＦＡＴ３２の各形式に対応するフォーマット構造を示すこととする。
先ず、図３の左側に示されるＦＡＴ１６に対応するフォーマット構造から説明する。
この図に示す構造は、ＬＢＡ(Logical Block Addressing)に従った論理的なものとなっている。つまり、最も上を先頭セクタ（LBA=0）として、以降、下に向かってブロック（セクタ）の番号が進んでいくものとなる。
また、ＦＡＴのファイルシステムでは、１つの物理的記憶領域を複数のパーティションに分割可能とされているが、ここでは説明の便宜上、１パーティションとした場合のフォーマット構造を示している。
【００４０】
先ず、LBA=0として表される先頭セクタは、ＭＢＲ(Master Boot Recorder) といわれる、ブート領域となっている。
【００４１】
ＭＢＲの構造を図４（ａ）に示す。
１セクタは５１２バイトのサイズであり、従って、ＭＢＲとしても５１２バイトとなる。図４（ａ）では、このＭＢＲの領域における５１２バイトについて、先頭から最終のバイト位置を、0000h〜01FFhまでの１６進法による番号を振って表現したうえで、１６バイト単位を１列として配列して示している。なお、１６進法の表記を行うのにあたっては、上記0000h、或いは01FFhのようにして、数値の最後尾に１６進法表記であることを示すhを付すこととする。
先ず、バイト位置0000h〜01BDhまでの４４６バイトの領域は、ＯＳ(Operating System)起動用のメディアとして使用される場合において、その起動（ブート：boot）のためのコード（起動コード）が格納される領域である。
【００４２】
ＭＢＲにおけるバイト位置01BEh〜01FDhまでの６４バイトの領域は、パーティションテーブルとされており、起動時において必要とされるパーティションごとに関する所定の情報が格納される。このパーティションテーブルの領域は、さらに１６バイト単位で４つの領域に分割されることになっており、これらの４分割された領域は、先頭から順に、パーティション１、パーティション２、パーティション３、パーティション４に対応する領域となっている。これらのこれらのパーティションごとに対応する各領域は、パーティションごとのエントリの領域となる。
【００４３】
また、ＭＢＲにおける最終の２バイトの領域には、現セクタがＭＢＲであることの識別子として55AAhが格納される。
【００４４】
上記パーティションのエントリは、図４（ｂ）に示す構造を有するものとされる。先ず、最上位のバイト位置00hは、該当パーティションについての、起動ドライブとしての指定の有無を示すフラグを格納する領域とされる。
また、続くバイト位置01h〜03hによる３バイトの領域は、該当パーティションの開始セクタをＣＨＳ（Cylinder/Head/Sector）により表現した値が格納される。バイト位置05h〜07hから成る３バイトの領域により、該当パーティションの終了セクタをＣＨＳにより表現した値が格納される。
また、バイト位置08h〜0Bhによる４バイトの領域により、該当パーティションの開始セクタをＬＢＡにより示す値を格納することとしている。
【００４５】
バイト位置0Ch〜0Fhから成る４バイトの領域は、該当パーティションのデータサイズ（パーティションサイズ）を示す値を格納する。
【００４６】
バイト位置04hが示す１バイトの領域は、システム識別子ともいわれる、該当パーティションが対応するプラットフォーム、ファイルシステムなどのタイプを示す値を格納する。
【００４７】
説明を図３に戻す。
ＭＢＲとしての先頭セクタに続けては所定セクタ数による空き領域を設けることとしている。そして、この空き領域より後となるセクタ領域により、パーティション単位の領域を形成する。
【００４８】
１パーティション内における先頭セクタから所定のバイト数までによる領域は、システム関連の情報を格納するシステム領域となる。
このシステム領域において先頭セクタから開始される所定バイト数の領域は、ＢＰＢ(BIOS Parameter Block/Boot Parameter Block)とされ、ここでは現パーティションに関して、例えばホスト側のＢＩＯＳ(Basic Input/Output System)などのように、ブロックデバイスコントロールのためのプログラムが利用すべき所要のデータが格納される。ＢＰＢに格納する情報においては、次に説明するＦＡＴ領域の数、メインのＦＡＴ領域の開始セクタ、ＦＡＴ領域のセクタ数などの情報を含む。
【００４９】
ＢＰＢに続けてはＦＡＴ１、ＦＡＴ２のＦＡＴ領域が順に配置される。通常は、ＦＡＴ１，２のいずれか一方の領域がメインのＦＡＴ領域として使用される。他方のＦＡＴ領域は、一般的には、メインのＦＡＴ領域の内容をコピーしたミラー領域として使用するなど、例えばメインのＦＡＴ領域の予備領域、バックアップ用領域として使用される。
【００５０】
これらのＦＡＴ領域は、ＦＡＴエントリが、データ領域内のクラスタ番号順に配列されて形成される領域とされる。ＦＡＴエントリと、データ領域内のクラスタとは１対１で対応しており、ＦＡＴエントリには、ディレクトリ、ファイルの記憶結果に応じて、該当クラスタについての情報として、例えば、未使用、該当ファイルにおいて現クラスタの次にチェインされるクラスタ番号、不良クラスタ、EOF(End Of File：ファイルにおける最終クラスタ)などのうちから、何れかを示す情報が格納される。
ＦＡＴ１６フォーマットでは、クラスタ番号を２バイト（１６ビット）により表すこととしており、これに応じて、ＦＡＴエントリの個々のサイズも２バイトとされている。
【００５１】
ＦＡＴ１，ＦＡＴ２の領域に続けては、所定サイズのルートディレクトリエントリが配置される。このルートディレクトリエントリには、ルートディレクトリにおけるディレクトリ、ファイルなどについてのディレクトリエントリが格納される。
【００５２】
ルートディレクトリより下位のセクタ領域が、データ領域となる。このデータ領域に対するデータの書き込み／読み出しは、ＦＡＴファイルシステムにより管理される。従って、図示するようにして、ファイルシステムのフォーマット構造としては、１以上の所定数のセクタの連続から成るクラスタ単位によりデータ領域を管理することになる。上記もしたように、ＦＡＴ領域は、原則として、このデータ領域を形成する全クラスタに対応するＦＡＴエントリを有して形成されるものとなる。
【００５３】
続いては図３の右側に示されるＦＡＴ３２に対応するフォーマット構造について説明する。
ＦＡＴ３２対応のフォーマット構造としても、LBA=0で表される先頭セクタにＭＢＲを配置している。そして、このＭＢＲに続けて配置する所定セクタ数の空き領域に続けて、パーティション単位の領域を配置していくようにされる。
【００５４】
ＦＡＴ３２対応のフォーマット構造のパーティション領域にけるシステム領域としては、ＢＰＢに続けてＦＳｉｎｆｏの領域を設けることとしている。
ＦＳｉｎｆｏは、該当パーティションにおける空き容量を計算するのに利用する所定の情報を格納する領域である。ＦＡＴ１，ＦＡＴ２のＦＡＴ領域は、ＦＳｉｎｆｏに続けて順次配置される。
【００５５】
ＦＡＴ３２のフォーマットの場合のＦＡＴ領域も、クラスタと１対１で対応するＦＡＴエントリがクラスタ番号順に配列されて形成され、ＦＡＴエントリには、ディレクトリ、ファイルの記憶結果に応じて、該当クラスタについての所定の情報が格納される。ただし、ＦＡＴ３２のフォーマットでは、クラスタ番号を４バイト（３２ビット）で表現することから、ＦＡＴエントリの個々のサイズも４バイトで区切られることになる。
【００５６】
また、ＦＡＴ３２のフォーマット構造では、ＦＡＴ１６のフォーマット構造においてシステム領域内に設けられていたルートディレクトリエントリの領域が省略されている。
ＦＡＴ３２のフォーマット構造では、ルートディレクトリはデータ領域内におかれることなっている。データ領域におけるルートディレクトリの開始クラスタ番号は、ＢＰＢにおける所定領域（RootClus）に格納される値により示されており、ルートディレクトリにアクセスするときには、上記RootClusを参照して認識したクラスタ番号にアクセスするようにされる。RootClusが示すルートディレクトリの開始クラスタ番号は、通常、２である。
【００５７】
データ領域は、この場合においても、ＦＡＴ３２のファイルシステムによりクラスタ単位でデータの書き込み／読み出しが管理される領域となる。
【００５８】
図５に、ＦＡＴのファイルシステムにおいて規定されるディレクトリエントリの構造を示す。なお、ここでは、ＦＡＴ３２に対応するディレクトリエントリの構造を示している。
この場合、ディレクトリエントリは３２バイトとされている。この図においては、上位バイトから下位バイトまでの各バイト位置を、0h〜1Fhまでの値により示している。
ディレクトリエントリを形成する３２バイトにおいて、最上位のバイト位置0hからバイト位置7hまでの８バイトの領域は、現ディレクトリエントリが示す現ファイル又は現ディレクトリの名称を格納する。
続く下位のバイト位置8hからバイト位置Ahまでの３バイトの領域は、現ファイルのファイル形式に応じた拡張子が格納される。
【００５９】
続く下位のバイト位置Bhには、現ファイル／現ディレクトリについての属性を示す値が格納される。
バイト位置Chは、ここでは予約領域とされている。
バイト位置Dh〜Fhまでの３バイトの領域は、現ファイル／現ディレクトリの作成時刻を示す値を格納する。
バイト位置10h−11hによる２バイトの領域は、現ファイル／現ディレクトリの作成日付を示す値を格納する。
バイト位置12h−13hによる２バイトの領域は、現ファイル／現ディレクトリに対するアクセスが最後に行われた日（最終アクセス日付）を示す値を格納する。
【００６０】
また、バイト位置14h−15hによる２バイト領域とバイト位置1Ah−1Bhによる２バイト領域との計４バイトの領域によっては、現ファイル／現ディレクトリが記憶されるメディア上の先頭位置をクラスタ番号により示すようにされる。つまり、この計４バイトの領域には現ファイル／現ディレクトリについての先頭クラスタ番号の値が格納される。バイト位置14h−15hによる２バイト領域に対しては、先頭クラスタ番号についての上位４バイトの値を格納する。バイト位置1Ah−1Bhによる２バイト領域に対しては、先頭クラスタ番号についての下位４バイトの値を格納する。
【００６１】
バイト位置16h−17hによる２バイト領域は、現ファイル／現ディレクトリについての記録（最後の更新）が実行された時刻（記録時刻）を示す値を格納する。
バイト位置18h−19hによる２バイト領域は、現ファイル／現ディレクトリについての記録（最後の更新）が実行された日付（記録日付）を示す値を格納する。
バイト位置1Ch〜1Fhまでの４バイトの領域は、現ファイル／現ディレクトリについてのサイズ（容量）を示す値を格納する。
【００６２】
図６は、ＦＡＴファイルシステムによるファイル管理例を示している。なお、この図においては、ＦＡＴ３２に従ってフォーマットされた場合を示している。
ここでは、データ領域において、少なくともファイルＡ、ファイルＢ、ファイルＣ、ファイルＤが記憶されているものとしたうえで、ファイルＡ，Ｂ，Ｃ，Ｄのディレクトリエントリを、それぞれ図６（ａ）（ｂ）（ｃ）（ｄ）に示す。なお、この図における説明としては、ディレクトリエントリにおける先頭クラスタ番号(バイト位置14h-15h/1Ah-1Bh)
の情報が主要であることから、他の領域の情報については省略している箇所がある。
【００６３】
また、図６（ｅ）は、ＦＡＴ領域の一部を示すもので、ファイルＡ，Ｂ，Ｃ，Ｄの記憶結果に対応するＦＡＴエントリの内容を有している。なお、この図６（ｅ）においては、図示が簡略でわかりやすくなることを考慮して、ほぼファイルＡ，Ｂ，Ｃ，Ｄのみに対応したＦＡＴエントリ内容のみを抜き出したものとなっている。なお、前述もしたように、ＦＡＴ３２では、個々のＦＡＴエントリは３２ビットのサイズを有する。
また、この図６（ｅ）に示すＦＡＴ領域におけるＦＡＴエントリは、00000000h、00000010h、00000020h、00000030h・・・として示されるように、ＦＡＴエントリに対応するクラスタ番号の値が１桁ごとにインクリメントされる行と、各行が示すクラスタ番号の値に対して足し合わせる最下位桁の値である、＋00h〜＋0Fhが示される列とのマトリクスにより配列されている。例えば、00000000hの行と＋07hの列が交差する位置のＦＡＴエントリは、クラスタ番号00000007hに対応する。
【００６４】
ＦＡＴファイルシステムにおいては、クラスタ番号00000000h、00000001hで表される先頭クラスタとこれに続く２番目のクラスタの２クラスタは予約領域（RSV）となる。これに応じて、クラスタ番号00000000h、00000001hに対応する各ＦＡＴエントリも予約領域として規定されている。
そして、上記ＦＡＴエントリに格納する値として、現クラスタの次にチェインするクラスタ番号は、00000002h〜0FFFFFF6hで表すこととしている。また、EOF（該当クラスタを含むファイルにおける最終クラスタ（ファイルの終端クラスタ））については、EOF＝0FFFFFFFhにより表すこととしている。また、図６（ｅ）においては、未使用クラスタであることを「−」で示しているが、例えば実際には00000000hの値により表すこととしている。
【００６５】
ファイルＡにアクセスするためには、先ず、図６（ａ）に示すファイルＡのディレクトリエントリにアクセスすることになるが、このファイルＡのディレクトリエントリそのものに対するアクセスは例えば次のようにして行われる。
ファイルアクセスのコマンドが絶対パスによるものである場合を例に挙げると、ファイルＡのディレクトリエントリに対するアクセスのためには、先ず、ルートディレクトリにアクセスし、ここからパスに従ってディレクトリエントリをたどっていくようにされる。また、ディレクトリエントリを辿っていく過程において、或るカレントディレクトリのサブディレクトリを辿ることになる場合があるが、周知のようにして、親ディレクトリと子ディレクトリの親子関係についても、ディレクトリエントリにより表現される。このためには、例えば親ディレクトリ側のディレクトリエントリには、名称として子ディレクトリを示すものを設けておき、この親ディレクトリ側のディレクトリエントリにより示される子ディレクトリのディレクトリエントリには、親ディレクトリが存在することを示す情報を名称の領域に格納したディレクトリエントリを設けるようにされる。これにより、親から子、及び子から親の両方向に対してディレクトリを辿っていくことができる。
そして、上記のようにしてパスに従ってディレクトリエントリをたどる結果、アクセス先として、最終的にはファイルＡのディレクトリエントリに到達することになる。
【００６６】
ファイルＡのディレクトリエントリへのアクセスが行われると、続いては、このファイルＡのディレクトリエントリを起点として、ファイルＡそのものへのアクセスが行われることになる。
ファイルＡそのものへのアクセスとしては、概念的には次のようなものとなる。
ファイルＡにアクセスするためには、ファイルＡのディレクトリエントリにおける先頭（開始）クラスタ番号を取得する。この先頭クラスタ番号は、データ領域においてファイルＡのデータが記憶される開始クラスタ番号を示しており、この場合には、図６（ａ）に示すようにして00000007hとなっている。つまり、この段階で、ファイルＡの開始クラスタ番号が00000007hであることが認識される。
そこで、ファイルシステムは、図６（ｅ）に示すＦＡＴ領域において、クラスタ番号00000007hに対応するＦＡＴエントリにアクセスして、このＦＡＴエントリに格納される値を参照する。この場合、クラスタ番号00000007hに対応するＦＡＴエントリには、00000008hを格納している。これにより、ファイルシステムは、ファイルＡのデータは、クラスタ番号00000007hのクラスタのデータに続けて、クラスタ番号00000008hのクラスタのデータが連結されていることを認識する。そこで、次にクラスタ番号00000008hに対応するＦＡＴエントリにアクセスして参照すると、ここには、00000009hが格納されているので、ファイルＡのデータは、さらにクラスタ番号00000008hのクラスタのデータに続けて、クラスタ番号00000009hのクラスタのデータを連結することが認識される。そこでまた、クラスタ番号00000009hのＦＡＴエントリを参照すると、ここにはEOFを示す値が格納されているので、ファイルＡは、クラスタ番号00000009hのクラスタが終端であることが認識される。
このことから、ファイルＡは、図６（ｆ）のクラスタチェインに示すようにして、クラスタ番号00000007h-00000008h-00000009hの順によるクラスタのデータの連結により形成されることが認識されることになる。ファイルシステムは、クラスタ番号00000007h-00000008h-00000009hのクラスタにアクセスしていくようにされ、これにより、ファイルＡに対するアクセスが行われることになる。
【００６７】
上記説明から分かるように、データ領域に記憶されるファイルのデータの位置は、ディレクトリエントリに格納される先頭クラスタ番号と、この先頭クラスタ番号を起点として参照するＦＡＴ領域のＦＡＴエントリの内容によって示されており、これらの情報を参照することで、ファイルへのアクセスが可能となっている。
また、データ領域に記憶されるファイルについての、ツリー型ディレクトリ構造による管理は、ディレクトリエントリにより表現されているものであることも分かる。
【００６８】
そして、残るファイルＢ，Ｃ，Ｄの記憶位置については、上記ディレクトリエントリ及びＦＡＴ領域から成るファイル管理情報により、次のようにして管理されている。
先ず、ファイルＢについては、図６（ｂ）のディレクトリエントリに示すようにして、ファイルの先頭（開始）クラスタのクラスタ番号が0000000Ahであることが示されている。そこで、図６（ｅ）に示すＦＡＴ領域のクラスタ番号0000000Ahに対応するＦＡＴエントリを参照すると、次のクラスタを示すチェイン情報としてクラスタ番号0000001Fhが示されている。そこで、さらにＦＡＴエントリを辿って、クラスタ番号0000001Fhに対応するＦＡＴエントリを参照すると、チェイン情報としてクラスタ番号00000025hが格納されている。クラスタ番号00000025hに対応するＦＡＴエントリには、クラスタ番号00000031hが格納されている。クラスタ番号00000031hに対応するＦＡＴエントリにはクラスタ番号00000030hが格納されている。クラスタ番号00000030hに対応するＦＡＴエントリにはEOFであることを示す値が格納されている。
このようにして、ファイルＢは、ディレクトリエントリ及びＦＡＴ領域により、図６（ｇ）に示すようにして、クラスタ番号0000000Ah-0000001Fh-00000025h-00000031h-00000030hの順に従ったクラスタに記憶されるデータの連結により形成されることが表現される。
【００６９】
また、ファイルＣについては、図６（ｃ）に示すようにして、先ず、ファイルＣのディレクトリエントリにおいて、ファイルの先頭（開始）クラスタとしてクラスタ番号0000001Bhが示されている。このことに基づき、図６（ｅ）に示すＦＡＴ領域におけるクラスタ番号0000001BのＦＡＴエントリを起点として参照した内容によっては、ファイルＣは、図６（ｈ）に示すように、クラスタ番号0000001Bh-00000011h-00000012h-00000013h-00000014h-00000003hの順に従ったクラスタに記憶されるデータの連結により形成される。
【００７０】
ファイルＤについては、図６（ｄ）に示すファイルＤのディレクトリエントリにおいて、ファイルの先頭（開始）クラスタとしてクラスタ番号0000002Chが示されている。これに基づいて、図６（ｅ）に示すＦＡＴ領域におけるクラスタ番号0000002CのＦＡＴエントリを起点として参照した内容としては、ファイルＤは、図６（ｉ）に示すように、クラスタ番号0000002Ch-0000002Dh-0000002Eh-0000002Fh-00000038h-00000039h-0000003Ah-0000003Bhの順に従ったクラスタに記憶されるデータの連結により形成される。
【００７１】
これまでに説明したＦＡＴファイルシステムのフォーマット内容をふまえて、先ず、本発明に至った事情について、図７を参照して説明しておく。
図７（ａ）は、ＦＡＴ領域の内容に応じたファイル管理例を模式的に示している。この図においては、列番号１〜４と、行番号１〜ｎとのマトリクスによりクラスタを配列を示している。実際のクラスタ順に対するこの図のクラスタ順の対応としては、先ず、列番号に応じてクラスタ番号が１インクリメントするようになっており、行番号に応じてクラスタ番号は４インクリメントするようにされる。つまり、［行番号−列番号]による表現を行ったとすると、図７における先頭クラスタは、［１−１］となり、続いて、［１−２］［１−３］［１−４］［２−１］［２−２］・・・の順で実際にクラスタ番号が１つずつインクリメントされていくことになる。
【００７２】
この図７（ａ）では、ファイルＡ，Ｂ，Ｃ，Ｄの４つのファイルがメディアに対して記録（記憶）済みとなっている状態が示されている。
ファイルＡは、クラスタ［１−１］〜［５−４］までのクラスタ番号的に連続する２０クラスタを使用したうえで、このクラスタ順に従ったクラスタチェインにより記録されているものとして管理される。このファイルＡについての実際のＦＡＴファイルシステムによる管理としては、先ず、ファイルＡに対応するディレクトリエントリによってクラスタ［１−１］の実際のクラスタ番号を、先頭クラスタとして格納し、ＦＡＴ領域（ＦＡＴ１）において、クラスタ［１−１］〜［５−４］のクラスタ順に応じたクラスタチェインが示されるように、クラスタ［１−１］〜［５−３］に対応するＦＡＴエントリに対して、しかるべきチェイン先クラスタの番号を格納する。そして、クラスタ［５−４］に対応するＦＡＴエントリに対してEOF(End Of File)を示す値を格納する。
【００７３】
ファイルＢは、クラスタ［６−１］〜［７−４］の連続する８クラスタを使用して、このクラスタ順に従ったクラスタチェインにより記録されているものとして管理される。
ファイルＣは、クラスタ［８−１］〜［１２−２］の連続する１８クラスタを使用して、このクラスタ順に従ったクラスタチェインにより記録されているものとして管理される。
ファイルＤは、クラスタ［１２−３］〜［１７−２］の連続する２０クラスタを使用して、このクラスタ順に従ったクラスタチェインにより記録されているものとして管理される。
【００７４】
この図７（ａ）に示される状態からファイルＢを更新するのにあたり、既にメディアに記録されているファイルＢとしての内容のデータに続けるようにして、新規な内容のデータ（追記データ）を追加する場合を考えてみる。ここでは、追記データとして４クラスタ分を追加記録するものとする。
図７（ａ）の記録状態によると、更新元となる記録済みのファイルＢの最終クラスタ［７−４］に続く［８−１］以降の４クラスタは、ファイルＣのために既に使用されている。従って、ファイルＢの追記データを、上記クラスタ［８−１］以降を使用して記録することはできない。
【００７５】
そこで、このような場合には、次に説明するようにしてファイルＢの追記データを追記する。なお、以降の説明にあたり、図７（ａ）にも示したようにして、更新前のファイルＢとして、クラスタ［６−１］〜［７−４］を使用して記録されているデータについては「追記前データ（更新対象データ）」といい、この追記前データに続けて追加すべき４クラスタを使用するデータについては、「追記データ」ということにする。
【００７６】
先に説明した図７（ａ）の記録状態によると、ファイルＤの最終クラスタ［１７−２］に続く、クラスタ［１７−３］以降が未使用領域、つまり空き領域となっている。そこで、ファイルＢの追記データについては、例えば図７（ｂ）に示すようにして、クラスタ［１７−３］〜［１８ー２］の連続する４クラスタを使用して記録するようにされる。
そして、ＦＡＴ領域（ＦＡＴ１）については、ファイルＢの追記前データの最終クラスタ［７−４］に対して、追記データの先頭クラスタ［１７−３］がチェインするようにしてＦＡＴエントリを編集するようにされる。これにより、ファイルＢ全体としては、更新前のファイルＢである追記前データの直後に対して、追記データを連結して形成されるものとして管理されることになる。なお、これをクラスタチェインとしてみた場合には、クラスタ［６−１］〜［７−４］→［１７−３］〜［１８ー２］の順による１２クラスタの連結によりファイルＢが形成されるようにして管理していることになる。
【００７７】
このようにして、ＦＡＴファイルシステムではクラスタ単位のチェイン構造によりファイルを形成するデータについて管理していることで、追記データを追加するようにしてファイルを更新する場合においては、更新元ファイルのデータ（追記前データ）と追記データとについてクラスタ番号的に連続せずに、離散して記録されている状態にあっても、更新前のデータと追記データとを連結させた構造により１つのファイルとして管理することができるようになっている。
このようにしてクラスタ番号的に離散しているデータ部分を連結して１ファイルを形成できることはＦＡＴファイルシステムの利点ではあるが、このことは、別の観点からみた場合には、次のような問題を抱えることになる。
【００７８】
ここで、メディアとしてＨＤＤを考えてみる。ＨＤＤは、記録媒体そのものとしてはディスク状記録媒体の１つである磁気ディスクを採用している。ＨＤＤをＦＡＴファイルシステムの下でフォーマット（初期化）した場合、周知のようにして、記録トラック上のセクタといわれる記憶単位領域を所定数連続させるようにして区切ることで、クラスタとしての記憶領域単位を形成するようにされる。そして、このようにして形成したクラスタに対して、記録トラックの進行に沿って、順次、クラスタ番号をインクリメントするようにして割り当てていくようにされる。
【００７９】
このようなフォーマットにおいて、クラスタ番号が連続せずに離れているということは、磁気ディスク上における物理的な位置も、トラック上で連続することなく離れているということになる。従って、先に図７（ｂ）により説明したファイルＢのようにして、セクタ番号が離れている複数のデータ部から成るものとしてＨＤＤ上で管理した場合には、これらのデータ部が、磁気ディスク上において物理的に離散して記録されることになる。
【００８０】
また、ＨＤＤは、磁気ヘッドによりトラックに対するデータの書き込み／読み出しを行うようにされている。従って、ＨＤＤにおいて記憶されているファイルなどのデータにアクセスするためには、そのデータが書き込まれているトラックに対してアクセスが行われるように、物理的に磁気ヘッドを移動させるシークといわれる動作が必要となる。このことから、周知のようにして、ＨＤＤなどのディスクメディアにおけるアクセス時間は、シーク動作に要するシーク時間が必ず含まれることになる。
【００８１】
アクセス時間が長くなると、例えばファイルのデータの転送速度の低下が生じて、ファイル再生処理速度などのパフォーマンスの低下を招く。従って、アクセス時間はできるだけ短縮されることが好ましいとされているが、上記もしているように、ＨＤＤなどでは、上記したシーク時間が存在することは避けられない。
【００８２】
このことを前提として、図７（ｂ）に示したファイルＢの再生などのデータ処理を実行する場合のことを考えてみると、追記前データを成すクラスタ領域と、追記データを成すクラスタ領域とは、ＨＤＤ上での記録位置としても離散している状態にあることになる。従って、ファイルＢを対象としてデータ処理を実行するためには、追記前データのクラスタ領域に対するアクセスと、追記データのクラスタ領域に対するアクセスとの２回のアクセスを実行することとなり、その分、アクセス時間は長時間化することとなる。
特に、このようにしてファイルを成す複数のデータ部が離散的に記録される場合の実際としては、データ部間のクラスタ番号が相当に離れていることで、記録媒体上における物理的な記録位置も相当に離間する状態となることがある。この場合、これらのデータ部に対応するクラスタ領域間でのシーク時間は相当に長いものとなり、上記したファイル処理速度の低下はより顕著なものとなる。
また、例えばフラッシュメモリなどの半導体メモリ素子を用いた半導体記憶装置などに関しても、データ処理対象のファイルが、上記クラスタに相当する領域単位として離散的に記録されて成る構造の場合には、例えば実データの連続性を得るための処理負荷などの要因でオーバーヘッドが生じ、ファイル処理速度のパフォーマンスが低下する可能性が無いとはいえない。
このことから、ファイル処理速度の観点からすれば、１ファイルを形成するデータの先頭から終端までが、連続したクラスタ領域（若しくは、クラスタ相当の単位領域）を使用して記録される状態にあることが好ましいということになる。
【００８３】
そこで、本実施の形態としては、以降説明するようにして、既にメディアに記録されていた更新元ファイルのデータを追記前データとして、この追記前データに続けて追記データを追加するようにしてファイルの更新を行う（追記更新）のにあたり、追記前データ部分と追記データ部分とがクラスタレベルで離散することなく、追記前データ部分に続くクラスタ領域に新規データ部分が記録される状態が得られるようにファイル更新処理を構成する。これにより、更新後のファイルのデータ処理に関して、複数のデータ部が離散的に記録されることに起因するオーバーヘッドを解消して、データ処理速度の向上を図るようにされる。
【００８４】
図８及び図９は、本実施の形態としてのファイルの追記更新の手順例を示している。
図８（ａ）に、ファイルの追記更新前のファイル管理状態例を示す。なお、この図８（ａ）としては、先に説明した図７（ａ）と同じファイル管理状態を示している。そして、この場合にも、ファイルＢを更新対象として、更新前のファイルデータである追記前データに続けて４クラスタを消費する追記データを追加してファイル更新を行うものとする。つまり、更新されるファイルＢの内容としては図７の場合と同一である。ここでの説明にあたっては、更新元のファイルＢを形成し、更新後はファイルＢの前半部となるデータ部、つまり、クラスタ［６−１］〜［７−４］を使用して記録されるデータ部が追記前データとなる。また、この追記前データに続けて追加すべき内容の４クラスタによるデータが追記データとなる。
【００８５】
そして、ファイルＢについて追記更新を実行する場合には、次のようにしてファイルＢについての処理を実行する。
ファイルＢは、追記前データにより８クラスタを消費しており、追記データにより４クラスタを消費するので、追記更新後のファイルＢとしては、１２クラスタを消費するものとして考えることができる。
そこで、本実施の形態としては、ファイルＢを更新するのにあたり、先ず、図８（ｂ）に示すようにして、メディアの記録領域から、この１２クラスタが連続して未使用（空き領域）となっている領域を探し出して、最終的なファイルＢのデータ記録に使用するクラスタ領域（更新ファイル用領域）として確保するようにされる。図８（ｂ）においては、ファイルＤの終端クラスタ［１７−２］に続く、クラスタ［１７−３］以降のクラスタが全て未使用になっていることとしており、これに応じて、ここでは、クラスタ［１７−３］を先頭クラスタとして、クラスタ［２０−２］までの１２クラスタを更新ファイル用領域として確保している。
【００８６】
上記のようにしてクラスタ［１７−３］〜クラスタ［２０−２］までの更新ファイル用領域を確保すると、続いては、図９（ａ）に示すようにして、更新ファイル用領域における先頭のクラスタ［１７−３］から連続する８セクタの領域を、デフラグ用予約領域としてさらに確保するようにされる。この場合において、更新ファイル用領域について８セクタとしているのは、ファイルＢの追記前データが８セクタを使用していることに対応する。
また、上記のようにして、更新ファイル用領域にデフラグ用予約領域を確保すると共に、同じ更新ファイル用領域においてデフラグ用予約領域に続く４クラスタ分の領域であるクラスタ［１９−３］〜［２０−２］に対して、ファイルＢの追記データを記録する。
これにより、１２クラスタの更新ファイル用領域としての空き領域は、前側の連続するクラスタ［１７−３］〜［１９−２］による８クラスタ分の領域によるデフラグ用予約領域と、これに続く後ろ側４クラスタ分の領域によるファイルＢの追記データのための書き込み領域として使用されたことになる。
【００８７】
そして、上記図９（ａ）に示すようにしてファイルの追記データを記録した段階において、ひとまず、クラスタ［６−１］〜［７−４］を使用して記録される追記前データと、クラスタ［１９−３］〜［２０−２］を使用して記録される追記データとの連結により、ファイルＢが形成されるものとして管理されるように、ディレクトリエントリ及びＦＡＴ領域（ＦＡＴ１、ＦＡＴ２）などから成るファイル管理情報について書き換えのための編集を行っておくようにされる。
従って、この図９（ａ）に示す記録状態においても、ファイルＢについては断片化（フラグメント:fragmentation）は生じているものの、追記前データに続いて追記データが論理的に連結して形成される更新ファイルとして適正に管理されていることになる。
【００８８】
本実施の形態では、ファイルの追記更新の処理として、先ずは、この図９（ａ）までの処理を終了した段階で、第１段階を完結させることとしている。そして、この第１段階としての処理までを終了させた後において、例えば所定の機会、タイミングで、第２段階としての処理を実行する。第２段階を実行するタイミングとしては、例えばＣＰＵの処理負荷やメディアドライブなどの処理負荷が所定以下となって、一定以上の安定性と速度によるメディアへのデータの書き込み／読み出し動作が得られるようになった動作状況になった場合とすることが考えられる。
【００８９】
第２段階の処理は、図９（ａ）〜図９（ｂ）への遷移として示すように、クラスタ［６−１］〜［７−４］に記録されていたファイルＢの追記前データとしての８クラスタ分のデータを、デフラグ用領域として確保されたクラスタ［１７−３］〜［１９−２］の８クラスタ分の領域に対してコピーするようにして記録を行う。また、これとともに、元々ファイルＢの追記前データが記録されていたクラスタ［６−１］〜［７−４］については、未使用領域として管理されるようにする。つまり、見かけ上は、追記前データのデータを、クラスタ［６−１］〜［７−４］からクラスタ［１７−３］〜［１９−２］に移動させる。
このような追記前データの移動が行われる結果、ファイルＢを形成するものとしてメディア上に存在するデータとしては、クラスタ［１７−３］〜［１９−２］の追記前データと、クラスタ［１９−３］〜［２０−２］の追記データとなる。つまり、ファイルＢは、先頭クラスタ［１７−３］〜終端クラスタ［２０−２］までの、クラスタ番号的に連続する１２のクラスタチェインにより形成されることになる。
そして、これに対応して、ファイル管理情報としても、ファイルＢについては、先頭クラスタ［１７−３］〜終端クラスタ［２０−２］の１２クラスタのクラスタチェインにより形成されるものとして管理されるようにその内容を書き換えるようにされる。
このような第２段階の処理が実行される結果、ファイルＢとしては、断片化が無いようにしてメディアに記録された状態が得られることになる。つまり、ファイルＢとしてデフラグされた状態を得るものである。
【００９０】
以上説明した手順により、本実施の形態では、追記データの追加を伴って更新すべきファイルについてクラスタレベルでの断片化を生じさせないようにしている。これにより、先に説明したように、１ファイルのデータ処理を実行する場合において、断片化された２以上のデータ部分にアクセスする必要は無くなることから、それだけデータ処理にあたってのアクセス総時間が短縮され、データ処理速度も向上されることになる。
【００９１】
また、本実施の形態では、最終的に追記更新ファイルのデフラグを完了させるまでに、図８（ａ）（ｂ）を経て、図９（ａ）に示すまでの第１段階としての処理と、図９（ｂ）に示す第２段階の処理とで、時間的な実行タイミングを分割することとしている。
例えば、ファイルの追記更新処理として、第１段階から第２段階までの処理を１つの完結した処理シーケンスとして実行させることとした場合、実際のメディアへのデータの書き込み処理は、１シーケンスの処理において、図９（ａ）に示す追記データの書き込みと、図９（ｂ）に示す追記前データの移動書き込みとの２回を実行しなければならないことになる。すると、１つの処理シーケンスにおいて、データ書き込みのためのアクセスが２回生じることとなって、その分、アクセス総時間も長いものとなる結果、ファイル更新に要するデータ処理時間も長くなってしまう。また、データ処理の負荷もそれだけ重いものとなる。このことは、例えばファイル更新が完了するまでの待ち時間が長くなったり、また、プログラム実行処理の安定性を低下させる要因となるなど、ユーザに必要以上のストレスを与えたり、機器の信頼性を低下させることなどにつながり得る。
そこで、本実施の形態のようにして、先ずは、図９（ａ）の処理を終了した第１段階までで完結できるようにしておけば、この段階においては、データ記録のためのアクセスとしては、追記データに対する１回で済むことになり、その分、データ処理時間が短縮され、データ処理負荷も軽くなる。従って、例えばこの時点でのファイル更新完了の待ち時間なども短いものとなり、ユーザのストレスも軽減される。また、プログラム実行処理の安定性も確保できる。そして、以降において、例えば処理負荷の軽いときなどにバックグラウンド処理として図９（ｂ）の第２段階の処理を実行することで、ユーザが意識しないうちに、安定した処理によりファイルＢのデフラグは完了していることになる。
【００９２】
上記図８及び図９により説明した手順により、追記更新ファイルについてのクラスタレベルでのフラグメントは解消されるのであるが、単にこのままの手順のみを実行したとすると、クラスタに格納されるファイルの実データ（有効データ）のレベルでみた場合には、ファイルを形成するデータとして不連続性を生じる場合がある。換言すると、例えば、クラスタレベルでデータ処理を実行するファイルシステム１０２の階層レベルでは、ファイルのフラグメントは解消されているが、ファイルとしての実データを処理するアプリケーション１００のレベルでは、ファイルのデータについて不連続性を生じ得る。この点について、図１０を参照して説明する。
【００９３】
図１０は、メディアにおけるデータ領域をクラスタ単位による連結として示している。クラスタ番号は、図の左から右にかけてインクリメントされていくものとされる。
図１０（ａ）には、ファイルＡ、ファイルＢ、ファイルＣ、ファイルＤが記録済みとされている状態が示されている。ファイルＡは、データ領域の先頭から連続する３クラスタを使用して記録されている。ファイルＢは、ファイルＡの最終クラスタに続く、連続する５クラスタを使用して記録されている。ファイルＣは、ファイルＢの最終クラスタに続く、連続する４クラスタを使用して記録され、ファイルＤは、ファイルＣの最終クラスタに続く、連続する２３クラスタを使用して記録されている。ファイルＤの最終クラスタより後ろのクラスタは未使用（空き領域）であることとする。
【００９４】
この図１０（ａ）に示す状態から、ファイルＢについて、２クラスタを消費する追記データを追加するようにして追記更新を行うものとすると、本実施の形態としては、先ず、図１０（ｂ）に示すようにして、ファイルＢのための更新ファイル用領域を確保する。この場合には、ファイルＢの追記前データが５クラスタを使用し、ファイルＢの追記データが２クラスタを使用するので、計７クラスタの更新ファイル用領域を確保する。そして、更新ファイル用領域の先頭から５クラスタをデフラグ用予約領域として確保し、残る２クラスタに追記データを書き込むようにされる。ここで追記更新処理としての第１段階が終了する。
そして、追記更新の第２段階の処理として、追記前データを、図１０（ｂ）に示すクラスタ位置から、図１０（ｃ）に示すようにしてデフラグ用予約領域に対して移動させることで、クラスタ単位としてみた場合には、ファイルＢの追記前データに続けて追記データが記録された状態、つまり、ファイルについてデフラグされた状態を得る。
【００９５】
しかしながら、ファイルＢの追記前データは、本来は、追記更新前においては、１つの完結したファイルとして管理されていたものである。このために、図１０（ａ）のファイルＢとして示すようにして、その最終クラスタは、ファイルＢとしての実データのサイズが、ちょうどクラスタサイズの整数倍である場合を除いて、実データの終端からクラスタ終端までを占有する無効データを含むことになる。
そして、このようなファイルを対象として、上記したようにして本実施の形態としてのファイルの追記更新を行ったとすると、図１０（ｃ）のファイルＢとして示すようにして、ファイルＢが使用するクラスタａ〜ｇまでの連続する７クラスタにおいて、追記前データの終端に対応するクラスタｅに無効データが存在することになる。つまり、１ファイルを形成するクラスタとしてはフラグメントが無い状態で連続しているのに、その途中のクラスタにおいて無効データの領域が挿入されている状態を生じさせる。
【００９６】
ＦＡＴファイルシステムでは、基本的に、クラスタ番号が連続的にインクリメントされるクラスタチェインの領域に関しては、この領域内で終端となるクラスタを除いて、各クラスタには、完全に実データで埋められていることが通常であるとしており、例えばアプリケーションレベルでのデータ処理としても、このことを前提としたアルゴリズムとなっているのが一般的である。
このことからすると、本実施の形態としてのファイルの追記更新を行うことによっては、図１０（ｃ）のファイルＢに示すようにして、クラスタ番号がインクリメントされるようにして連結するクラスタ領域の途中のクラスタにおいて無効データが含まれるという、フォーマット違反的な状態が生じることになる。そして、このような構造のファイルＢについて、再生などのデータ処理をアプリケーションが実行すると、途中のクラスタの無効データまでを不用意に処理して適正なデータ処理結果が得られなくなる可能性がある。
【００９７】
本実施の形態としては、メディアの記録領域に対する追記更新データについての記録処理としては、図１０により説明した手順のままとする。従って、実際においても、図１０（ｃ）に示すようにして、追記更新後のファイルとしては、クラスタレベルではデフラグされた状態にあるが、途中のクラスタにおいて無効データを含む状態となっている場合がある。そのうえで、本実施の形態では、ファイル再生などのデータ処理時において、この途中のクラスタの無効データを廃棄して、追記更新されたファイルを形成する実データの適正な連結状態が得られるように構成する。この点について、図１０のファイルＢを例に、図１１により説明する。
【００９８】
図１１（ａ）には、ファイルシステム１０１によるレベルでの、図１０（ｃ）に示されるファイルＢについての管理状態を模式的に示している。ファイルシステムでは、ファイルＢについて、クラスタ番号的にインクリメントされるクラスタａ〜ｇまでの７クラスタの連結により形成されるものとして管理している。ただし、図１０により説明したように、追記前データの終端クラスタに対応するクラスタｅにおいては、無効データを含む。
本実施の形態では、ファイルを対象として再生などのデータ処理を実行するのにあたり、例えばアプリケーションレベルでは、図１１（ｂ）に示すようにして、クラスタｅにおけるファイル中途の無効データを廃棄して、同じクラスタｅの有効データの終端に続けて、クラスタｆのクラスタ開始位置の実データが連結されたファイルデータを扱えるように構成される。
【００９９】
続いては、上記のようにして行われる本実施の形態としてのファイルの追記更新の処理を実現するための構成として、ＦＡＴファイルシステムの下でのファイル管理構成について、図１２〜図１６を参照して説明する。
先ず、以降の説明を行うのにあたり、本実施の形態におけるＦＡＴ領域の扱いについて説明しておく。先に説明したようにＦＡＴ領域は、例えばＦＡＴ１とＦＡＴ２との複数の領域を設けることができるようになっている。本実施の形態では、先の説明のとおりに、ＦＡＴ領域として、少なくともＦＡＴ１，ＦＡＴ２の２つの領域をメディアフォーマット時に形成して使用するものとする。そのうえで、ＦＡＴ１については、先に図６にて説明したようにファイルデータをクラスタチェイン構造により管理するメインのＦＡＴ領域（主テーブル情報）として使用する。ＦＡＴ２については、基本的には、ＦＡＴ１の予備としてのミラー領域とされて、ＦＡＴ１と同様の内容を保持するようにされるが、ファイルの追記更新に応じては、ファイル管理に必要となる付加的な内容を所定規則に従って格納するようにして編集が行われるべき領域（副テーブル情報）として扱われる。
【０１００】
図１２（ａ）には、追記更新が行われる前のＦＡＴ１の具体的な内容例を示している。この図１２（ａ）において追記更新の対象となるファイル（追記更新対象ファイル）のデータに対応する内容は、クラスタ番号00000011h−00000012h−00000013h−00000014hに対応する４クラスタ分のＦＡＴエントリ領域Ａｒ１に格納されている。この図１２（ａ）に示す段階では、追記更新対象ファイルのデータは、追記更新が行われる前のデータとなるので、「追記前データ」となる。
ここでは追記前データに対応しているＦＡＴエントリ領域Ａｒ１を形成する各ＦＡＴエントリ（指示領域）については、先に図６により説明したように、チェイン先のクラスタ番号を示す値を格納するものとなる。そして、この場合においては、先ず、クラスタ番号00000011hに対応するＦＡＴエントリに00000012hが格納され、クラスタ番号00000012hに対応するＦＡＴエントリに00000013hが格納され、クラスタ番号00000013hに対応するＦＡＴエントリに00000014hが格納され、クラスタ番号00000014hに対応するＦＡＴエントリにEOFを示す値が格納されている。つまり、この場合の追記更新対象のファイルは、クラスタ番号00000011h−00000012h−00000013h−00000014hの４クラスタを使用して記録されていることになる。また、クラスタ番号がインクリメントされる順で連結されていることで、この段階で、追記更新対象ファイル（追記前データ）にはフラグメントは生じていないことになる。
【０１０１】
また、この図１２（ａ）に示される段階での、追記更新対象ファイルについてのディレクトリエントリとしては、図１４（ａ）に示すようにして、先頭クラスタ番号として、00000011hを格納することになる。また、図示していないが、サイズとしては、４クラスタを使用して実際に格納している有効データの容量値を格納することになる。
【０１０２】
また、先に図５を参照して説明したように、ディレクトリエントリにおけるバイト位置Chとしての１バイト（８ビット）は予約領域とされているが、本実施の形態では、この予約領域において、図１５に示すようにして、デフラグ用予約領域確保フラグを格納する領域を定義する。
図１５には、ディレクトリエントリのバイト位置Chの領域を、ビット位置０〜ビット位置７までの８ビットによるビット列構造により示している。そして、ここでは、デフラグ用予約領域確保フラグのためのビット領域として、ビット位置７の１ビットを割り当てることとしている。
ここでは、デフラグ用予約領域確保フラグとして、０のビット値を格納している場合には、このディレクトリエントリが管理するファイルについて、デフラグ用予約領域としてのクラスタ領域が確保されている状態には無いことを示し、１のビット値を格納している場合に、デフラグ用予約領域としてのクラスタ領域が確保されている状態に有ることを示すものとして定義する。
なお、ディレクトリエントリの予約領域において、デフラグ用予約領域確保フラグを格納するための領域としては、ビット位置７以外のビット位置とされてもよい。
また、ここでは説明の便宜上、ディレクトリエントリのバイト位置Chの予約領域における、残りのビット位置０〜ビット位置６までの７ビットの領域は未定義とされて、それぞれ０のビット値を格納しているものとする。
【０１０３】
説明を図１４（ａ）に戻すと、追記更新が行われる前の追記更新対象ファイルとしては、デフラグ用予約領域は未だ確保されていない状態にあるから、デフラグ用予約領域確保フラグとしては０を格納しており、従って、バイト位置Chの予約領域としては00hを示すことになる。
【０１０４】
そして、この場合においては、図１２（ａ）に示すようにして管理される更新対象ファイルについて、更新前の更新対象ファイルのデータである追記前データに続けて、４クラスタを使用するサイズの追記データを追加的に連結させるようにして、ファイルの更新を行うものとする。
前述もしたように、本実施の形態のファイルの追記更新は、デフラグ用予約領域を確保し、追記データを記録する第１段階の処理と、追記前データをデフラグ用予約領域に移動させる第２段階の処理との、２段階の処理手順を踏むこととしている。第１段階としての処理が完了した段階に対応するＦＡＴ１の内容を図１２（ｂ）に示し、ＦＡＴ２の内容を図１２（ｃ）に示す。
【０１０５】
追記更新の第１段階の処理としては、先ず、図８（ｂ）により説明したように更新ファイル用領域を確保する。更新前の図１２（ａ）の状態としては、クラスタ番号0000001Ch以降のクラスタ領域を未使用（空き領域）として管理しているものとする。そこで、この場合には、このクラスタ番号0000001Chを先頭として、クラスタ番号00000023hまでの連続する８クラスタを、更新ファイル用領域として確保する。ここでのＦＡＴ１において、このクラスタ番号0000001Ch〜00000023hまでに対応するＦＡＴエントリ領域については、ＦＡＴエントリ領域Ａｒ４とする。
なお、この場合において、更新ファイル用領域について８クラスタを確保しているのは、ここでの追記前データが４クラスタを使用し、追記データも４クラスタを使用しており、従って、更新ファイル用領域としては、これらのクラスタ使用数を加算した８（＝４＋４）クラスタが、更新ファイル用領域Ａｒ２として必要であることによる。
【０１０６】
そのうえで、図１２（ｂ）のＦＡＴ１の内容にも反映されているようにして、更新ファイル用領域における、先頭から連続する４クラスタを、デフラグ用予約領域として確保する。また、更新ファイル用領域において、上記デフラグ用予約領域の後ろに続くとされる終端までの４クラスタに対して追記データを記録する。
このような第１段階までの処理結果に応じて、図１２（ｂ）に示されるＦＡＴ１において、更新対象ファイルに対応するＦＡＴエントリ領域としては、追記前データに対応する領域Ａｒ１と、追記データに対応する領域Ａｒ２と、デフラグ用予約領域に対応する領域Ａｒ３とが存在することになる。
【０１０７】
そして、このようにして第１段階までの処理により追記データをメディアに記録した後においては、ＦＡＴ１における更新対象ファイルに対応するＦＡＴエントリ領域については、図１６（ａ）に示すようにして定義したＦＡＴエントリを使用する。つまり、図１２（ｂ）に示される、追記前データに対応する領域Ａｒ１、追記データに対応する領域Ａｒ３、及びデフラグ用予約領域に対応する領域Ａｒ４については、この図１６（ａ）に示す定義によるＦＡＴエントリを使用することになる。
【０１０８】
図１６（ａ）に示されるＦＡＴエントリは、ＦＡＴファイルシステムフォーマットがＦＡＴ３２であることに対応して、３２ビット（第０ビット〜第２７ビット）とされている。
本来の基本的なＦＡＴ３２のフォーマットの下では、３２ビットのＦＡＴエントリにおける第４ビットから第２７ビットまでの下位２８ビットにより、チェイン先となる次のクラスタ番号を格納することとされている。そして、従来としては、残る上位第０ビット〜第３ビットまでの４ビットは未使用とされて、ビット値としては0,0,0,0(0h)を格納することとされている。
本実施の形態では、これまで未使用であった上位４ビットについて、図のようにして定義する。つまり、例えば、この上位４ビットにおける最下位の第３ビットについて、追記前データの終端クラスタであることを示す、終端クラスタ指示フラグのための領域として定義する。
ここでは、終端クラスタ指示フラグのビット値が０である場合には、そのＦＡＴエントリに対応するクラスタは、追記前データにおける終端クラスタではないことを示し、１である場合には、そのＦＡＴエントリに対応するクラスタが、追記前データにおける終端クラスタであることを示すものとする。
また、この場合においても、ＦＡＴエントリの上位４ビット内における終端クラスタ指示フラグを格納するための領域としては、第３ビット以外のビット位置とされてもよい。
また、ここでも、ＦＡＴエントリの上位４ビットにおける終端クラスタ指示フラグ以外の領域は未定義であり、それぞれ０のビット値を格納しているものとする。
【０１０９】
上記図１６（ａ）に示すＦＡＴエントリの定義をふまえて、図１２（ｂ）に示される第１段階までの処理終了後の、更新対象ファイルに対応するＦＡＴ１のＦＡＴエントリ領域（領域Ａｒ１、Ａｒ２、Ａｒ３）の具体的内容について説明する。
先ず、領域Ａｒ１としては、図１２（ａ）の領域Ａｒ１と同様に、追記前データに対応しており、クラスタ番号00000011h−00000012h−00000013h−00000014hに対応するＦＡＴエントリから成る。
追記前データを形成するこれらのクラスタに対応するＦＡＴエントリとして、先ず、先頭のクラスタ番号00000011hに対応するＦＡＴエントリとしては、下位２８ビットにチェイン先のクラスタ番号として0000012hを格納することになる。また、このＦＡＴエントリに対応するクラスタは、追記前データの終端クラスタではないので、ＦＡＴエントリの第３ビットの終端クラスタ指示フラグは０となり、上位４ビットは0hとなる。従って、ＦＡＴエントリ全体では、00000012hを示すことになる。
続く、クラスタ番号00000012h、00000013hに対応する各ＦＡＴエントリとしては、終端クラスタ指示フラグについては０を格納し、下位２８ビットによりチェイン先のクラスタ番号を格納することになるので、それぞれ、ＦＡＴエントリ全体では00000013h、00000014hを示すことになる。そして、追記前データの終端クラスタとなるクラスタ番号00000014hに対応するＦＡＴエントリについては、終端クラスタ指示フラグについて１を格納することになる。また、下位２８ビットについては、チェイン先のクラスタ番号として、追記データの先頭クラスタ番号を示す値を格納することになる。従って、ＦＡＴエントリ全体としては、10000020hを示すことになる。
【０１１０】
次に、同じ図１２（ｂ）に示される、追記データに対応する領域Ａｒ２としては、クラスタ番号00000020h−00000021h−00000022h−00000023hに対応するＦＡＴエントリにより形成される。追記データを形成するクラスタのなかには、当然のこととして、追記前データの終端クラスタは存在しないから、これらのＦＡＴエントリにおける終端クラスタ指示フラグは、全て０のビット値を格納することになる。そして、下位２８ビットによりチェイン先のクラスタ番号を格納する。これにより、領域Ａｒ２のうちで、先頭から３つまでのクラスタ番号00000020h−00000021h−00000022hに対応するＦＡＴエントリには、それぞれ、00000021h、00000022h、00000023hを格納することになる。そして、領域Ａｒ２において最後（４番目）となるクラスタ番号00000023hに対応するＦＡＴエントリが、追記更新されたファイルの終端クラスタに対応するので、このＦＡＴエントリにはEOFを示す値を格納することになる。
【０１１１】
また、図１２（ｂ）においてデフラグ用予約領域に対応の領域Ａｒ３としては、追記データに対応する領域Ａｒ２の直前にて連続する４クラスタに相当する、クラスタ番号0000001Ch−0000001Dh−0000001Eh−0000001Fhに対応するＦＡＴエントリから成る。
クラスタをデフラグ用予約領域として確保しようとするのにあたっては、デフラグ用予約領域に対応する予約対応領域Ａｒ４のＦＡＴエントリについて、未使用ではないことが示される値を格納することが、必要最小限の条件であるというように考えることができる。従って、予約対応領域Ａｒ４のＦＡＴエントリに対しては、未使用を示す以外で、適正なファイル管理に影響を与えない任意の値を格納すればよいということがいえる。しかし、本実施の形態では、予約対応領域Ａｒ４のＦＡＴエントリについて、例えば以降における追記更新のための処理効率などを考慮して、下記の内容の値を格納することとしている。
【０１１２】
つまり、ＦＡＴ１のデフラグ用予約領域に対応する領域Ａｒ３としては、第２段階の処理により追記前データが移動記録されるクラスタ領域となることを見越して、このときのクラスタチェインの情報を格納することとしている。
具体的には、この場合の領域Ａｒ３において、先頭となるクラスタ番号0000001ChのＦＡＴエントリにはチェイン先のクラスタ番号0000001Dhを格納し、次のクラスタ番号0000001DhのＦＡＴエントリにはチェイン先のクラスタ番号0000001Ehを格納し、次のクラスタ番号0000001EhのＦＡＴエントリにはチェイン先のクラスタ番号0000001Fhを格納する。また、領域Ａｒ３において終端クラスタに対応するクラスタ番号0000001FhのＦＡＴエントリには、追記前データの終端クラスタとなるクラスタ番号00000014hに対応するＦＡＴエントリと同じ値をコピーするようにして格納する。
【０１１３】
また、更新対象ファイルのディレクトリエントリについても、追記更新についての第１段階までの処理を終了させたのに応じて変更が行われる。図１２（ｂ）に対応する更新対象ファイルのディレクトリエントリであれば、図１４（ａ）から図１４（ｂ）に示すようにして内容を変更する。
まず、第１段階までの処理を完結させたことで、メディア上でデフラグ用予約領域が確保されている状態にあるので、デフラグ用予約領域確保フラグについては１をセットすることになる。従って、バイト位置Chの予約領域は01hを示すことになる。
また、ここでの図示はしていないが、追加記録が完了したことに伴って、更新日時に対応する記録時刻、記録日付の情報が、第１段階までの処理を終了させたとする時刻、日付に応じて変更される。また、サイズに関しては、追記データとしての実データ分が加算されるようにして変更されることになる。
また、先頭クラスタ番号としては、追記前データの先頭クラスタを示すことになるが、このクラスタは、追記更新前と、追記更新のための第１段階までの処理の終了後とでは変化はないので、図１４（ａ）と同様にして、00000011hを格納することになり、結果的に変化はない。
【０１１４】
第１段階までの処理を終了した状態において、例えば更新対象ファイルを再生するために、この図１４（ｂ）に示すディレクトリエントリの先頭クラスタ番号を参照したとする。すると、この先頭クラスタ番号としては00000011hを示しているので、ＦＡＴ１におけるクラスタ番号00000011hに対応するＦＡＴエントリにアクセスすることになる。つまり、更新対象ファイルにおける追記前データの先頭クラスタに対応するＦＡＴエントリにアクセスする。そして、以降、ＦＡＴエントリに記述されるクラスタチェインを辿っていくことで、クラスタ番号00000011h−00000012h−00000013h−00000014h−00000020h−00000021h−00000022h−00000023hの順でのクラスタの連結により更新対象ファイルが形成されているものとして管理されていることになる。ファイルの追記更新についての第１段階までの処理を終了した状態においても、更新対象ファイルについては、追記前データと追記データとがクラスタレベルで適正に連結されるようにして管理されていることになる。
【０１１５】
図１２（ｃ）は、上記図１２（ｂ）に対応するＦＡＴ２の内容を示している。つまり、図１２（ａ）に示すようにして記録済みとされていた更新前の更新対象ファイルについて、第１段階までの処理（デフラグ用予約領域確保、追記データ記録）を終了した後のＦＡＴ２の内容となる。
先にも説明したように、ＦＡＴ２の基本的な用途はメインのＦＡＴ領域であるＦＡＴ１の予備としてのミラー領域とされるもので、原則としては、ＦＡＴ１の内容がコピーされるが、追記更新されたファイルに関しては、所要位置のＦＡＴエントリに対して、チェイン先のクラスタ番号とは異なる所定内容の情報を格納することになる。図１２（ｃ）の説明に先立って、このことについて図１６（ｂ）（ｃ）を参照して説明しておく。
【０１１６】
図１６（ｂ）は、第１段階までの処理を終了した段階での、ＦＡＴ２におけるＦＡＴエントリとして、追記前データの先頭クラスタに対応するＦＡＴエントリの定義内容を示している。この図に示すようにして、ＦＡＴ２において、ＦＡＴエントリが、追記前データの先頭クラスタに対応するものである場合には、本来であればチェイン先のクラスタ番号を格納すべき下位２８ビットの領域に対して、現在において、更新対象ファイルのために確保されているデフラグ用予約領域の先頭クラスタ番号を格納するようにされる。
また、第１段階までの処理を終了した段階での、ＦＡＴ１側の追記前データの先頭クラスタに対応するＦＡＴエントリには、終端クラスタ指示フラグとして１のビット値がセットされている状態にある。従って、終端クラスタ指示フラグについて１がセットされているＦＡＴ１側のＦＡＴエントリと同じクラスタ番号に対応する、ＦＡＴ２側のＦＡＴエントリについて、図１６（ｂ）に示す定義内容のＦＡＴエントリを使用する、というように規定することもできる。
【０１１７】
図１６（ｃ）は、第１段階までの処理を終了した段階での、ＦＡＴ２におけるＦＡＴエントリとして、追記前データの終端クラスタに対応するＦＡＴエントリの定義内容を示している。ＦＡＴ２において、ＦＡＴエントリが、追記前データの終端クラスタに対応するものである場合には、図示するようにして、追記前データの終端クラスタの領域に対して実際に格納されている有効データのサイズを示す値を格納するようにされる。なお、この図では、ＦＡＴエントリを形成する３２ビットの全てを使用して有効データサイズを表現することとしているが、所定のビット位置の３２ビット未満のビット領域を使用して有効データサイズを表現するようにしてもよい。
【０１１８】
図１２（ｃ）に示される、ＦＡＴ２における更新対象ファイルに関連する領域（領域Ａｒ１、Ａｒ２、Ａｒ３）のＦＡＴエントリ内容について説明していく。
先ず、この段階では追記前データに対応する領域Ａｒ１としては、図１２（ｂ）に示す領域Ａｒ１と同様にして、クラスタ番号00000011h−00000012h−00000013h−00000014hに対応するＦＡＴエントリの集合となる。
そして、この図１２（ｃ）の領域Ａｒ１において、追記前データの先頭クラスタに対応するクラスタ番号00000011hのＦＡＴエントリとしては、図１６（ｂ）により説明した、デフラグ用予約領域の先頭クラスタ番号を格納するものとなる。この場合には、デフラグ用予約領域の先頭クラスタのクラスタ番号は0000001Chであるので、図１２（ｃ）におけるクラスタ番号00000011hのＦＡＴエントリには、この値を格納することになる。
図１２（ｃ）の領域Ａｒ１において、上記クラスタ番号00000011hに続く、クラスタ番号00000012h−00000013hに対応するＦＡＴエントリは、ＦＡＴ１におけるクラスタ番号00000012h−00000013hの値をコピーした内容としている。
そして、図１２（ｃ）の領域Ａｒ１において、終端となるクラスタ番号00000013hに対応するＦＡＴエントリには、図１６（ｃ）により説明したように、追記前データの終端クラスタにおいて実際に格納される有効データのサイズ(Size)を示す値を格納する。
【０１１９】
図１２（ｃ）において、追記データに対応する領域Ａｒ２については、図１２（ｂ）に示す領域Ａｒ３のＦＡＴエントリの内容がそのままコピーされている。
【０１２０】
図１２（ｃ）においてデフラグ用予約領域に対応する領域Ａｒ３は、先ず、先頭から３番目までのクラスタ番号0000001Ch−0000001Dh−0000001Ehについては、図１２（ｂ）に示すＦＡＴ１の内容がコピーされている。そして、終端となる４番目のクラスタ番号0000001Fhに関しては、図１２（ｂ）のＦＡＴ１側のＦＡＴエントリにおいて、終端クラスタ指示フラグについて１がセットされている。これに応じて、図１２（ｃ）に示すようにして、ＦＡＴ２側では、図１６（ｃ）に示した、追記前データの終端クラスタにおける有効データのサイズを示す値を格納することになる。
【０１２１】
先に述べたように、更新対象ファイルに対応するＦＡＴエントリ領域について、図１２（ｂ）に示す内容とすることで、第１段階までの処理を終了した段階においても、クラスタレベルでの追記前データと追記データとの連結が適正に管理される。しかしながら、単にクラスタレベルにおいて追記前データと追記データとの連結を管理するだけでは、図１０にて説明したように、追記前データの終端クラスタの無効データがファイルデータの途中に含まれる場合があるという不都合を生じる。
本実施の形態では、この対策として、図１２（ｃ）に示すようにして、ＦＡＴ２におけるしかるべきクラスタのＦＡＴエントリに対して、追記前データの終端クラスタの有効データサイズを格納するようにしている。
つまり、ファイルシステム１０１の処理としてファイル再生を実行するためにＦＡＴ１を参照している過程で、終端クラスタ指示フラグについて１のビット値がセットされたＦＡＴエントリを参照したときには、ＦＡＴ２側における同位置のＦＡＴエントリを参照するようにされる。つまり、図１２（ｂ）のＦＡＴエントリＡを参照したときに、図１２（ｃ）のＦＡＴエントリＢも参照するようにされる。すると、このＦＡＴエントリＢには、追記前データの終端クラスタの有効データサイズが示されているので、この有効データサイズの情報をアプリケーション１００に渡すようにされる。アプリケーション１００では、追記前データの終端クラスタに格納されているデータを処理するときに、有効データサイズの情報が示すサイズ分のデータまでを有効データとして扱って処理を実行するようにされる。これにより、例えば図１１に示したようにして、無効データを含まないファイルデータを得ることができる。
【０１２２】
そして、上記図１２（ｂ）、図１２（ｃ）に示される第１段階までの処理を実行した後において、追記前データをデフラグ用予約領域に対して移動記録させる第２段階としての処理を終了させた段階での、ＦＡＴ１，ＦＡＴ２の内容を、それぞれ図１３（ａ）、図１３（ｂ）に示す。また、第２段階としての処理に応じては、更新対象ファイルのディレクトリエントリは、図１４（ｂ）から図１４（ｃ）に示す内容に変更される。
先ず、更新対象ファイルのディレクトリエントリに関しては、先頭クラスタ番号に格納する値について、00000011hから0000001Chに変更する。また、追記前データをデフラグ用予約領域に移動させた結果として、メディア上でデフラグ用予約領域が確保される状態は無くなることから、デフラグ用予約領域確保フラグについては１から０のビット値に変更することになる。
なお、記録時刻、記録日付、及びサイズなどは、図１４（ｂ）における第１段階までを終了した段階でのディレクトリエントリと同じでよい。
【０１２３】
そして、第２段階の処理終了後のＦＡＴ１の内容は、図１３（ａ）に示すようにして、先ずは、第１段階終了までの段階においては追記前データを管理していた領域Ａｒ１を成すＦＡＴエントリの各々には、未使用であることを示す値を格納するようにされる。これにより、以降、クラスタ番号00000011h−00000012h−00000013h−00000014hの４クラスタは未使用（空き）領域として管理されることになる。
また、領域Ａｒ３については、クラスタ番号0000001Ch−0000001Dh−0000001Eh−0000001Fhの連続する４クラスタについて、デフラグ用予約領域として管理していたものが、追記前データが記録される領域として管理することになる。
【０１２４】
この領域Ａｒ３において、先ず、先頭から３番目までのクラスタ番号0000001Ch−0000001Dh−0000001Ehに対応するＦＡＴエントリには、それぞれ、チェイン先のクラスタ番号を示す値が格納される。また、領域Ａｒ３において終端となるクラスタ番号0000001Fhに対応するＦＡＴエントリは、図１６（ａ）に示す定義に従って、終端クラスタ指示フラグについて１をセットして、追記前データの終端クラスタであることを示したうえで、下位２８ビットにより、チェイン先のクラスタ番号として、追記データの先頭となるクラスタ番号を示すようにされる。これにより、クラスタ番号0000001Fhに対応するＦＡＴエントリには、10000020hが格納されることになる。
【０１２５】
また、図１３（ａ）における領域Ａｒ２としては、図１２（ｂ）に示した第１段階までの処理を終了した段階での領域Ａｒ２と同様にして、追記データに対応する。従って、クラスタ番号00000020h−00000021h−00000022hに対応するＦＡＴエントリには、それぞれチェイン先のクラスタ番号を格納し、クラスタ番号00000023hに対応するＦＡＴエントリにEOFを示す値を格納する。また、これらのＦＡＴエントリにおける終端クラスタ指示フラグは、全て０のビット値となる。
【０１２６】
ここで、更新対象ファイルに関するＦＡＴ１の内容として、上記図１３（ａ）と図１２（ｂ）とを比較してみると、先ず、図１３（ａ）では追記前データに対応し、図１２（ａ）ではデフラグ用予約領域に対応した領域Ａｒ３の各ＦＡＴエントリは、全て同じ内容となっている。つまり、この領域Ａｒ３については、デフラグ用予約領域を管理するものから、追記データを管理するものとして機能が変化するものの、格納される内容については変更が無い。そして、このことは、第２段階の処理に伴って、ＦＡＴ１を編集するのにあたり、それまでデフラグ用予約領域を管理していたＦＡＴエントリの領域については、内容の書き換えを実行することが無いということになる。
また、追記データに対応する領域Ａｒ２のＦＡＴエントリについても、図１３（ａ）と図１２（ｂ）とで変更は無い。
そして、図１２（ｂ）と図１３（ａ）とで内容が変更されているのは領域Ａｒ１のみとなっている。領域Ａｒ１は、先にも述べたように、追記データのクラスタチェインを示すクラスタ番号を格納していた状態から、未使用を示す値を格納する状態に書き換えが行われている。
このようにして、本実施の形態では、第２段階の処理に伴うＦＡＴ１の編集処理ができるだけ効率的なものとなるように配慮している。
【０１２７】
また、第２段階の処理終了後のＦＡＴ２については、図１３（ｂ）に示される。
先ず、ＦＡＴ２においても、第１段階終了までの段階においては追記前データに対応していた領域Ａｒ１については、それぞれのＦＡＴエントリに未使用であることを示す値を格納する。つまり、この領域については、図１３（ａ）に示されるＦＡＴ１の内容をコピーしたものとなっている。
【０１２８】
また、ＦＡＴ２においても、第１段階終了までの段階においてはデフラグ用予約領域に対応していた領域Ａｒ３については、ＦＡＴ１に従って追記前データに対応することになる。このために、領域Ａｒ３において、先頭から３番目までのクラスタ番号0000001Ch−0000001Dh−0000001Ehに対応するＦＡＴエントリには、それぞれ、図１３（ａ）における同位置のＦＡＴエントリと同じ値を格納するようにされる。ただし、４番目となる終端のクラスタ番号0000001Fhに対応するＦＡＴエントリについては、クラスタ番号0000001Fhが追記前データの終端クラスタ（終端クラスタ指示フラグ＝１のＦＡＴエントリ）であることに対応して、図１６（ｃ）により説明した定義に従って、追記前データの終端クラスタにおける有効データサイズ（Size）を示す値を格納することになる。
また、図１３（ｂ）に示す領域Ａｒ２については、図１３（ａ）と同様にして追記データに対応するものとなり、ＦＡＴ１側の領域Ａｒ２のＦＡＴエントリの内容をコピーしたものとなる。
ここでも、更新対象ファイルに関するＦＡＴ２の内容について、図１３（ｂ）と図１２（ｃ）とを比較してみると、第１段階終了までの段階においては追記前データに対応していた領域Ａｒ１について、未使用を示す値に書き換えられているのみで、他の領域Ａｒ２，Ａｒ３については、ＦＡＴエントリ内容についての変更は無い。
【０１２９】
このようにして第２段階の処理が終了した後においては、更新対象ファイルは、クラスタ番号0000001Ch〜00000023hまでの連続した８クラスタを使用して、これらのクラスタについて、クラスタ番号の昇順に従って連結されるようにして形成されるものとして管理されることになる。また、この場合においても、ＦＡＴ１において終端クラスタ指示フラグ＝１がセットされているＦＡＴエントリを参照したときには、同じ位置のＦＡＴ２のＦＡＴエントリを参照して有効データサイズを認識することができる。つまり、第１段階までの処理を終了させている場合と同様にして、ファイルデータの中間に無効データを含まないようにして、適正にデータ処理を実行することができるようになっている。
【０１３０】
図１７のフローチャートは、ファイルの追記更新のための第１段階の処理を実現するために、ＣＰＵ１０が実行するものとされる処理を示している。確認のために述べておくと第１段階の処理とは、デフラグ用予約領域を確保すると共に、追記データを記録するまでの処理となる。
この図に示す処理は、上記もしているように、例えばＣＰＵ１０が、ＲＯＭ１１（あるいはＨＤＤなどのメディア）にインストールされるようにして記憶されるＯＳ(Operating System)や所定のアプリケーション１００などのプログラムを実行することで実現されるもので、メディアに対するデータ処理などのメディア制御に関しては、図２に示したＦＡＴファイルシステム階層構造の下での処理となる。この点については、以降説明するフローチャートとしての図に関しても同様である。
【０１３１】
ファイルの追記更新にあたっては、先ず、ステップＳ１０１に示すようにして、今回のファイルの追記更新により、更新前のファイルのデータに続けて追加記録すべき追記データのサイズtkszを認識する。また、次のステップＳ１０２により、更新前のファイルデータである追記前データを格納するクラスタのうちで、終端クラスタにおける空き領域のサイズtmszを認識する。
前述もしたように、ファイルとしての有効データのサイズがクラスタサイズの整数倍で無い場合には、そのファイルを格納するクラスタにおける終端クラスタにおいては、有効データの終端がクラスタの途中に位置することとなり、この有効データの終端からクラスタの終端までを無効データにより埋めるようにしている。この無効データのサイズが、ここでの空き領域のサイズtmszとなる。従って、この空き領域のサイズtmszを算出するのにあたっては、例えば、先ず、更新前のファイルデータ（追記前データ）をクラスタサイズにより除算した剰余を求める。この剰余の値が、追記前データの終端クラスタにおける有効データサイズということになる。そこで、クラスタサイズからこの剰余の値を減算すれば、空き領域のサイズtmszが得られる。
【０１３２】
ステップＳ１０３では、上記ステップＳ１０１、Ｓ１０２により認識した追記データのサイズtkszと空き容量サイズtmszとについて、tksz＞tmszが成立するか否かについて判別する。
ここで、追記データのサイズtkszが空き容量サイズtmsz以下であって否定の判別結果が得られたとすると、今回の追記データは、追記前データの終端クラスタの空き容量を使用して全て記録できるということになる。そこで、この場合には、ステップＳ１１２に進む。
ステップＳ１１２においては、更新元となるファイルデータ（追記前データ）の終端クラスタにおいて、有効データの終端に連結させるようにして追記データを記録するための処理を実行する。このためには、例えば追記前データの終端クラスタをメディアから読み出してワークＲＡＭに展開したうえで、このワークＲＡＭ上で、追記前データの有効データの終端に続けて追記データを連結するようにしてデータ内容を更新する。そして、このようにして更新したデータを、元の追記前データの終端クラスタのデータとして、メディアに書き込むための処理を実行するようにされる。また、この処理結果に応じて、例えば、更新対象ファイルについてのディレクトリエントリにおけるサイズや更新日時などをはじめとした所要の情報についても変更するようにされる。
【０１３３】
一方、ステップＳ１０３にてtksz＞tmszが成立するとして否定の判別結果が得られた場合には、上記のようにして、追記前データの終端クラスタに対して追記データを追加記録することはできない。この場合には、ステップＳ１０４以降の処理に移行する。このステップＳ１０４からステップＳ１１１までの処理が、本実施の形態としての追記更新のための第１段階の処理に相当する。
【０１３４】
ステップＳ１０４では、先ず、デフラグ用予約領域として必要なクラスタ数numcrを算出する。このためには、更新元のファイルデータ（追記前データ）のサイズについてクラスタサイズにより除算を行う。そして、除算結果として剰余が生じない場合（つまり、追記データのサイズtkszがクラスタサイズの整数倍である場合）には、その除算値をクラスタ数numcrとするが、剰余が生じた場合には、除算値に１加算した値をクラスタ数numcrとする。
【０１３５】
次のステップＳ１０５においては、更新ファイル用領域を確保するための処理を実行する。このためには、先ず、更新ファイル用領域として必要なクラスタ数を求める。更新ファイル用領域のクラスタ数は、追記前データが使用していたクラスタ数、つまり、デフラグ用予約領域のクラスタ数numrcと、追記データの格納に必要なクラスタ数との合計により求められる。追記データの格納に必要なクラスタ数は、上記ステップＳ１０４に準じて、追記データのサイズtkszをクラスタサイズで除算することで得ることができる。
このようにして更新ファイル用領域のクラスタ数が求められたら、追記更新を実行する前である現段階でのＦＡＴ１の内容を参照して、このクラスタ数分が連続して未使用領域となっている空き領域を探すようにされる。このようにして探し出された空き領域を、更新ファイル用領域として設定することで、領域確保が行われたこととなる。
【０１３６】
次のステップＳ１０６では、ＦＡＴ領域（ＦＡＴ１，ＦＡＴ２）において追記前データの終端クラスタに対応するＦＡＴエントリについて、下記のようにして編集を行う。
先ず、ＦＡＴ１における追記前データの終端クラスタのＦＡＴエントリを対象として、終端クラスタ指示フラグについて１をセットする。
また、同じＦＡＴ１における追記前データの終端クラスタのＦＡＴエントリを対象として、下位２８ビットのチェイン先のクラスタ番号として、追記データの先頭クラスタ番号を格納するようにされる。なお、追記データの先頭クラスタは、上記ステップＳ１０５において確保された更新ファイル用領域を成すクラスタ群において、先頭クラスタからデフラグ用予約領域のクラスタ数numcr＋１番目のクラスタとなる。追記データの先頭クラスタ番号としては、このクラスタのクラスタ番号を格納すればよい。
【０１３７】
また、ステップＳ１０６においては、ＦＡＴ２における追記前データの終端クラスタのＦＡＴエントリを対象として、追記前データの終端クラスタの有効データサイズ(Size）を格納する。このためには、先ず、有効データサイズSizeを取得する。有効データサイズSizeの算出の仕方は、先のステップＳ１０２にて説明したとおりである。また、ステップＳ１０２により空き領域サイズtmszを算出した過程で得られた有効データサイズSizeを保持しておくようにして、この保持した値を読み込むことを以て、今回のステップＳ１０６での有効データサイズの取得処理としてもよい。そして、このようにして取得した有効データサイズSizeの値を、ＦＡＴ２における追記前データの終端クラスタのＦＡＴエントリに書き込んで格納する。
【０１３８】
次のステップＳ１０７においては、メディア上にてデフラグ用予約領域を確保するための処理を実行する。
このためには、先ず、先のステップＳ１０５において確保したとされる更新ファイル用領域を成すクラスタ群において、先頭クラスタから、クラスタ数numrc分の連続するクラスタを、デフラグ用予約領域のためのクラスタ群として決定する。図１２の例では、クラスタ番号0000001Ch−0000001Dh−0000001Eh−0000001Fhが、デフラグ用予約領域のためのクラスタ群として決定されることになる。そして、これらのクラスタ群に対応するＦＡＴ１の各ＦＡＴエントリついては、現クラスタに対して１インクリメントされたクラスタ番号をチェイン先のクラスタ番号を格納していくようにされる。この処理の結果、デフラグ用予約領域の最終クラスタに対応するＦＡＴ１のＦＡＴエントリは、デフラグ用予約領域に続く追記データの先頭クラスタを、チェイン先のクラスタとして示すことになる。なお、この段階では、デフラグ用予約領域の最終クラスタに対応するＦＡＴ１のＦＡＴエントリにおいて、終端クラスタ指示フラグについて１をセットしていない。
【０１３９】
次のステップＳ１０８においては、追記前データの先頭クラスタに対応するＦＡＴエントリの編集を実行する。この処理としては、ＦＡＴ２における追記前データの先頭クラスタに対する編集となる。図１６（ｂ）にて説明したように、ＦＡＴ２において追記前データの先頭クラスタに対応するＦＡＴエントリは、デフラグ用予約領域の先頭クラスタを格納するＦＡＴエントリとなる。ステップＳ１０８では、このＦＡＴエントリに対して、デフラグ用予約領域の先頭クラスタ番号を格納する。
【０１４０】
ステップＳ１０９においては、デフラグ用予約領域の終端クラスタに対応するＦＡＴエントリについての編集を行う。図１２の例では、クラスタ番号0000001Fhに対応するＦＡＴエントリとなる。
このステップＳ１０９の処理として、先ず、ＦＡＴ１側のＦＡＴエントリについては、終端クラスタ指示フラグについて１をセットする。また、ＦＡＴ２側のＦＡＴエントリについては、追記前データの終端クラスタの有効データサイズSizeを格納するようにされる。
【０１４１】
次のステップＳ１１０では、デフラグ用予約領域の終端クラスタに続けて追記データを書き込んでメディアに記憶させるための処理を実行する。また、ステップＳ１１０では、この追記データの書き込み処理に応じて、追記データを格納するクラスタに対応するＦＡＴエントリ（ＦＡＴ１，ＦＡＴ２）についての編集を行うようにされる。つまり、追記データを格納するクラスタのＦＡＴエントリ群のうち、終端クラスタ以外のクラスタに対応するＦＡＴエントリについては、現クラスタに対して１インクリメントされたクラスタ番号がチェイン先となるように、チェイン先のクラスタ番号を格納する。追記データの終端クラスタには、EOFを示す値を格納する。
【０１４２】
ステップＳ１１１では、今回の更新結果に応じて、追記更新対象ファイルのディレクトリエントリにおける所要の内容を変更するための編集を実行する。
先ずは、デフラグ用予約領域確保フラグについて１をセットする。また、サイズについて追記データ分を加算した値に変更し、また、更新日時に対応する情報について更新を行う。
【０１４３】
続いて、第２段階としてのファイルの追記更新の処理を実現するためにＣＰＵ１０が実行するとされる処理について、図１８を参照して説明する。第２段階の処理は、第１段階までの処理を完了させた後において、メディア上において、更新対象ファイルの追記前データを、デフラグ用予約領域として確保していたクラスタ領域に移動させるようにして記録を行うことで、追記更新対象ファイルのフラグメントを解消するための処理となる。
この第２段階の処理としては、先ず、ステップＳ２０１により、第２段階の処理である追記前データの移動処理を実行開始するタイミングとなるのを待機している。この第２段階の処理を実行すべきタイミングを満たす条件としては、前述もしたように、ＣＰＵ１０の処理負荷が一定以下となって、メディアへのデータの書き込み／読み出しについて安定、かつ高速に実行可能となること、などを挙げることができる。そして、ステップＳ２０１において、肯定の判別結果が得られると、ステップＳ２０２以降の処理を実行することになる。
【０１４４】
ステップＳ２０２においては、所定順序に従って所要の１つのディレクトリエントリに対してアクセスし、次のステップＳ２０３において、このアクセスしたディレクトリエントリにおいて、デフラグ用予約領域確保フラグについて１がセットされているか否かについて判別する。ここで、デフラグ用予約領域確保フラグについて０がセットされているとして否定の判別結果が得られた場合には、そのディレクトリエントリに対応するファイルとしてはデフラグ用予約領域は確保されておらず、従って、第１段階までの追記更新の処理を終了した段階のファイル管理状態ではないということになる。そこで、この場合には、一旦、この図に示す処理を終了させるようにして、ステップＳ２０１の処理に戻るようにされる。そして、ステップＳ２０１にて肯定の判別結果が得られると、再度、ステップＳ２０２に進んで、未だアクセスしていないディレクトリエントリにアクセスするようにされる。このようにして、ステップＳ２０１→Ｓ２０２→Ｓ２０３により、デフラグ用予約領域確保フラグについて１がセットされたディレクトリエントリが検索されるまでディレクトリエントリに対する順次アクセスが行われる。
そして、ステップＳ２０３において、今回アクセスしたディレクトリエントリにおいてデフラグ用予約領域について１がセットされているとして肯定の判別結果が得られたとされると、そのディレクトリエントリに対応するファイルは、追記更新として第１段階までが終了しているのみで、まだ、追記前データと追記データとは断片化している状態にあることになる。そこで、更新対象ファイルのデフラグのための処理として、ステップＳ２０４以降の処理を実行するようにされる。
【０１４５】
ステップＳ２０４においては、追記前データの先頭クラスタに対応するＦＡＴ２のＦＡＴエントリにアクセスする。このＦＡＴエントリには、デフラグ用予約領域の先頭クラスタ番号が格納されており、ステップＳ２０４では、このデフラグ用予約領域の先頭クラスタ番号を取得する。
【０１４６】
次のステップＳ２０５では、メディア上において、これまでデフラグ用予約領域として確保されていたクラスタ領域に対して、追記前データを記録する。
このためには、先ず、更新前のデータファイルと同じクラスタに記録されているものとして管理されている追記前データを、メディアから読み出してワークＲＡＭに保持する。そして、上記ステップＳ２０４にて取得したクラスタ番号が示すクラスタを開始クラスタとして、以降は、１つずつインクリメントされる番号のクラスタに対して、順次、ワークＲＡＭに保持した追記データを埋めるようにして書き込んでいく。つまり、このステップＳ２０５の処理は、更新前と同じ位置のクラスタ領域に記録されていたデータを、デフラグ用予約領域として管理されていたクラスタ領域にコピーする処理ということになる。
【０１４７】
ステップＳ２０６では、上記ステップＳ２０５の処理を終了させたことに応じて、ディレクトリエントリを編集する。このディレクトリエントリの編集としては、先ず、先頭クラスタ番号について、ステップＳ２０５によりコピーされた追記前データの先頭クラスタ（ステップＳ２０５の処理前はデフラグ用予約領域の先頭クラスタである）を示すように変更する。また、デフラグ用予約領域確保フラグについて０をセットする（リセットする）。
【０１４８】
ステップＳ２０７では、ステップＳ２０５の処理結果に応じて、ＦＡＴ領域を編集する。このＦＡＴ領域の編集としては、ＦＡＴ１，ＦＡＴ２の両者を対象として、ステップＳ２０５の処理以前では、追記前データを記録していたクラスタ領域に対応するＦＡＴエントリの各々について、未使用を示す値を格納する。
ここまでの処理により、ＦＡＴ領域（ＦＡＴ１，ＦＡＴ２）の内容としては、例えば１２（ａ）（ｂ）から図１３（ａ）（ｂ）への遷移として示したように、更新対象ファイルとしては、メディア上において、追記前データと追記データとについてフラグメントが解消されて、クラスタ単位で連続して記録された状態が得られ、また、ＦＡＴファイルシステムによっても、追記前データと追記データから成る更新対象ファイルについて、クラスタ番号的に連続したクラスタチェインにより形成されるものとして適正に管理している状態が得られる。
【０１４９】
続いては、図１９のフローチャートを参照して、本実施の形態としての追記更新ファイルに対応するファイル再生のための処理について説明する。
例えばファイル再生の指示が得られたとすると、先ず、ステップＳ３０１により、再生対象として指定されたファイル（再生対象ファイル）のディレクトリエントリにアクセスして、その内容を参照する。そして、次のステップＳ３０２の処理として、ディレクトリエントリに格納されている先頭クラスタ番号に従って、再生対象ファイルの先頭クラスタにアクセスして、このクラスタ単位でのデータの読み込みを実行する。このようにして読み込まれた１クラスタサイズとされるデータは、例えばワークＲＡＭにて保持される。
【０１５０】
次のステップＳ３０３においては、読込実行クラスタに対応するＦＡＴ１のＦＡＴエントリにアクセスする。ここでいう「読込実行クラスタ」とは、現時点でのステップＳ３０３を実行した段階において、最後に、メディアに対するアクセスが行われてデータの読み込みが実行されたクラスタを指す。従って、ステップＳ３０２を経て最初に実行されるステップＳ３０３においては、読込実行クラスタは、再生対象ファイルの先頭クラスタとなる。
そして、読込実行クラスタに対応するＦＡＴ１のＦＡＴエントリにアクセスすると、ここに格納されているチェイン先のクラスタ番号を参照する。
【０１５１】
ステップＳ３０４では、参照したチェイン先のクラスタ番号がEOFを示す値であるか否かについて判別することとしている。ここで、否定の判別結果が得られたとすると、読込実行クラスタに続けてチェインされるクラスタが存在することになるが、この場合には、ステップＳ３０５以降の処理に進む。
【０１５２】
ステップＳ３０５においては、読込実行クラスタに対応するＦＡＴ１のＦＡＴエントリにおける、終端クラスタ指示フラグの領域を参照し、ステップＳ３０６により、参照した終端クラスタ指示フラグのビット値が１であるか否かについて参照する。
ここで終端クラスタ指示フラグのビット値が１ではなく０であるとして、ステップＳ３０６にて否定の判別結果が得られたということは、現在の読込実行クラスタは、追記データの終端クラスタ（EOF）ではなく、また、追記前データ部分の終端クラスタでもない、ということになる。このことは、現在の読込実行クラスタとしては、必ず、クラスタサイズ分の有効データによりクラスタが埋められており、無効データが存在しないことを意味する。
そこで、この場合には、ステップＳ３０７の処理によって、今回、読込実行クラスタとして読み込んだ１クラスタサイズ分のデータ（読込データ）について、そのままの１クラスタ分サイズを有効データとして上位処理層（例えばアプリケーション１００の階層）に転送する。
【０１５３】
これに対して、ステップＳ３０６において肯定の判別結果が得られた場合には、現在の読込実行クラスタは、追記前データの終端クラスタであることになる。そこで、この場合には、ステップＳ３０８により、現在の読込実行クラスタに対応するＦＡＴ２のＦＡＴエントリを参照して、追記前データの終端クラスタが格納する有効データサイズ(Size)を認識する。
そして、ステップＳ３０９により、今回、読込実行クラスタとして読み込んだ１クラスタ分のデータのうち、有効データサイズ(Size)が示すだけの上位データを、有効データとして上位処理層に転送する。
【０１５４】
上記ステップＳ３０７又はステップＳ３０９の処理を終了した後は、ステップＳ３１０により、先のステップＳ３０３により参照したチェイン先の番号のクラスタにアクセスして、このクラスタ単位でのデータの読み込みを実行し、ステップＳ３０３に戻るようにされる。ステップＳ３１０を経てステップＳ３０３に至った場合には、最後のステップＳ３１０の処理によってデータ読み込みが行われたクラスタが、ステップＳ３０３での読込実行クラスタとなる。
これまで説明した処理の過程において、ステップＳ３０６にて肯定の判別結果が得られるのに応じてステップＳ３０８→Ｓ３０９の処理が実行されることで、図１１により説明したようにして、追記更新後のファイルについて、例えばアプリケーションレベルでは、ファイルの中間において無効データが存在しないファイルデータとして形成することが可能になる。
【０１５５】
上記ステップＳ３０３〜３１０の処理を繰り返していくうち、最終的には、ステップＳ３０４にてEOFが検出されて肯定の判別結果が得られることになる。この場合には、ステップＳ３１１に進んで、このときの読込実行クラスタ（ファイルの終端クラスタ）の有効データサイズSize_eofを認識する。このためには、例えば、ディレクトリエントリに示されるファイルのサイズをクラスタサイズで除算し、その剰余をSize_eofとして求めるようにすればよい。
そして、ステップＳ３１２により、今回、読込実行クラスタとして読み込んだ１クラスタ分のデータのうち、サイズ(Size_eof)が示すだけの上位データを、有効データとして上位処理層に転送し、ファイル再生処理を終了させる。
【０１５６】
参考として、図２に示したファイルシステム階層モデルにおいて、ファイルシステム１０１の内部機能についてより詳細に示した構成例を、図２０に示しておくこととする。なお、この図においては、図２と同様に、アプリケーション１００、ファイルシステム１０１、デバイスドライバ１０２、及びメディア１０３によるシステム階層モデル全体を示している。
【０１５７】
この図に示すようにして、ファイルシステム１０１としてソフトウェアが実行する処理を機能ブロックとしてみた場合には、記録制御部２００及びメディア制御部２１０を備えて構成されるものとみることができる。
【０１５８】
記録制御部２００は、メディアに対するデータの記録（書き込み）及び読み出しに関する各種制御処理を実行するもので、ディレクトリエントリ制御部２０１、ＦＡＴ制御部２０２、及びクラスタ制御部２０３を備える。また、メディア制御部２１０は、ファイルシステムがメディアに対するコントロールを行うために、デバイスドライバ１０２側とデータの授受を行うことが可能な機能部位として位置算出部２１１を備える。
【０１５９】
記録制御部２００内のディレクトリエントリ制御部２０１は、例えばメディアに対するファイルの書き込み、消去などのデータ処理結果に応じてディレクトリエントリを作成、削除、更新するなど、ディレクトリエントリについての各種所要の制御処理を実行する。ＦＡＴ制御部２０２は、メディアに対するファイルデータ処理結果に応じてＦＡＴ領域における所定のＦＡＴエントリについての書き換えを実行するなど、ＦＡＴ領域についての各種所要の制御処理を実行する。クラスタ制御部２０３は、ファイルシステム内での処理がクラスタレベルで実行されるようにするための各種制御処理を実行する。
例えばメディアに書き込むためのデータが、ファイル単位の処理としてアプリケーション１００から渡されてきたとすると、クラスタ制御部２０３は、このファイルレベルのデータをクラスタレベルによるデータに変換する。そして、このクラスタレベルによるデータについてのメディアへの書き込みを、メディア制御部２１０の位置算出部２１１に指示する。
位置算出部２１１では、ＦＡＴ制御部２０２により管理しているＦＡＴ領域の内容を参照して認識されるメディアの未使用領域のうちから、ファイルのデータを書き込むべきクラスタの位置（クラスタ番号）を算出する。そして、デバイスドライバ１０２に対して、書き込むべきクラスタ単位のデータを受け渡すと共に、このデータを書き込むべきクラスタ番号を指示する。デバイスドライバ１０２は、指示されたクラスタ番号について最終的には、メディア上の記憶領域の物理セクタのアドレスに変換して、セクタレベルによりメディアへのデータの書き込みを実行するようにされる。
【０１６０】
また、これとともに、ファイルシステムでは、上記のようにしてメディアに書き込まれて記憶されるファイルがＦＡＴファイルシステム上で適正に管理されるように、ディレクトリエントリ及びＦＡＴ領域についての書き換え（更新）を行う。
例えば先ず、ディレクトリエントリ制御部２０１により今回記録するファイルについてのディレクトリエントリを作成する。このときには、ＦＡＴ制御部２０２と連携して、ＦＡＴ領域における空き領域から、ファイルを記録すべきクラスタを決定する。これに伴い、ディレクトリエントリにおける開始クラスタに格納する値も決まることになる。また、ファイルを記録すべきクラスタが決定されるのに応じて、ＦＡＴ制御部２０２は、ＦＡＴ領域において、このファイルについてのクラスタチェインなどの内容が示されるように、所要のクラスタ番号のＦＡＴエントリの値を書き換える。
そして、このようにして作成したディレクトリエントリ、及びＦＡＴ領域の書き換え内容を、先の説明と同様にして、クラスタ制御部２０３及びメディア制御部２１０（位置算出部２１１）の処理によって、メディアの所定領域に書き込んで記憶させる。
【０１６１】
図１７及び図１８に示したファイルの追記更新のための処理、及び図１９に示したファイル再生の処理は、主としては、メディアへのデータ記録と、メディアに記録されるディレクトリエントリ及びＦＡＴ領域についての編集である。従って、これらの図に示した処理は、ファイル記録／再生のアプリケーション１００の指示に応じて、ファイルシステムが主に実行するものとなる。
【０１６２】
なお、これまでに説明してきたように、本実施の形態としては、ファイルの追記更新にあたって、先ずは第１段階の処理として、追記データを記録すべき空き領域の直前となる領域に対してデフラグ用予約領域を確保するようにされ、第２段階の処理として、追記データを記録した後のタイミングで、デフラグ用予約領域に対して追記前データを移動させるようにして記録することでデフラグを解消するようにしている。この処理に対応する追記更新対象ファイルについての本実施の形態としてのファイル管理例を図１２〜図１６により説明したが、実際のファイル管理をどのような仕組みにより行うのかについては、図１２から図１６により説明した構成に限定されるものではない。
また、実施の形態におけるファイル管理についてはＦＡＴファイルシステムを採用することとしているが、例えばＨＳＦ(Hierarchical File System)などをはじめとする他のファイルシステムに対応しても本発明は適用可能であり、ファイルシステムやファイル管理方式の規格に関しては特に限定されるべきものではない。
また、本発明の追記更新処理は、例えば近年の状況に照らし合わせれば、各種形式の動画像ファイルなど、データレートが高いファイルを対象とする場合に特に顕著な効果が得られるものではあるが、本発明による追記更新の対象となるファイルの形式としては、特に限定されるべきではない。
また、ファイルとして扱われないような形式の単位データについても、本発明の適用は可能である。
【０１６３】
また、本発明に基づいた追記更新対象ファイルのフラグメントが解消されることによるデータ処理速度向上などの効果は、例えば図１においてメディアコントローラ１３と接続されているもののうちであれば、ＨＤＤ、光ディスク、光磁気ディスクなど、アクセス時においてヘッドとデータ記録面との相対位置が物理的に移動するタイプのメディアにて顕著に得られる。しかしながら、例えば半導体記憶装置などについても、クラスタ相当の記録領域単位レベルでのファイルデータのデフラグが生じていることで、ファイル再生などのデータ処理時においてアドレス変換の処理が重くなるなどのオーバーヘッドが生じて、データ処理速度が低下する可能性のあることを考えれば、本発明としては、ヘッドによるアクセスが行われるタイプ以外のメディアを対象としてファイルを更新する場合にも適用可能であることになる。
また、メディアとホスト側機器との関係としては、例えばケーブル、コネクタなどの物理的接続手段を用いて接続されるメディアの他、Bluetooth、無線ＬＡＮ(Local Area Network)などにより、ホストと無線により接続されるメディアを対象とすることも考えられる。
また、本発明の情報処理装置としても、実施の形態に挙げたデジタルビデオカメラに限定されるべきものではなく、例えば、デジタルスチルカメラ、テレビジョン放送番組の予約録画機器、さらにはパーソナルコンピュータをはじめ、これに準じた各種情報処理機器など、各種の記憶媒体に対応してデータ書き込み／読み出しなどのデータ処理が可能な機器であれば、本発明が適用できる。
【図面の簡単な説明】
【０１６４】
【図１】本発明の実施の形態のデジタルビデオカメラの構成例を示すブロック図である。
【図２】ＦＡＴファイルシステムのシステム構成を階層モデルにより示す図である。
【図３】ＦＡＴファイルシステムにおけるメディアのフォーマット構造を示す図である。
【図４】ＦＡＴファイルシステムにおけるＭＢＲの構造を示す図である。
【図５】ＦＡＴファイルシステムにおけるディレクトリエントリの構造を示す図である。
【図６】ＦＡＴファイルシステムによるファイル記録位置の管理例を示す図である。
【図７】従来におけるファイルの追記更新の処理手順を、ＦＡＴファイルシステムによるファイル管理内容により模式的に示す図である。
【図８】本実施の形態としてのファイルの追記更新の処理手順（第１段階）を、ＦＡＴファイルシステムによるファイル管理内容により模式的に示す図である。
【図９】本実施の形態としてのファイルの追記更新の処理手順（第２段階）を、ＦＡＴファイルシステムによるファイル管理内容により模式的に示す図である。
【図１０】本実施の形態としてのファイルの追記更新を行った場合において、ファイルデータの中途位置に無効データが含まれることの理由を説明するための図である。
【図１１】本実施の形態の追記更新対象のファイルについて、無効データを除いたファイルデータ構造とするための手順を模式的に示す図である。
【図１２】本実施の形態としてのファイルの追記更新処理（第１段階までを終了）に対応するＦＡＴ領域の内容例を示す図である。
【図１３】本実施の形態としてのファイルの追記更新処理（第２段階終了）に対応するＦＡＴ領域の内容例を示す図である。
【図１４】本実施の形態のファイルの追記更新処理の経過に対応する、追記更新対象ファイルのディレクトリエントリについての内容例を示す図である。
【図１５】実施の形態における、デフラグ用予約領域確保フラグの定義例を示す図である。
【図１６】実施の形態のファイルの追記更新処理に対応して定義されるＦＡＴエントリの構造を示す図である。
【図１７】本実施の形態としてのファイルの追記更新（第１段階）を実現するための処理を示すフローチャートである。
【図１８】本実施の形態としてのファイルの追記更新（第２段階）を実現するための処理を示すフローチャートである。
【図１９】本実施の形態としてのファイル再生処理を実現するための処理を示すフローチャートである。
【図２０】ファイルシステムの階層における処理機能を示す図である。
【符号の説明】
【０１６５】
１  デジタルビデオカメラ、２  光学系部、３  光電変換部、４  ビデオ信号処理部、５  画像入出力部、６  カメラ機能部、７  表示部、８  音声処理部、９  音声入出力部、１０  ＣＰＵ、１１  ＲＯＭ、１２  ＲＡＭ、１２ａ  不揮発性メモリ、１３  メディアコントローラ、１５  操作入力部、１６  通信部、１００  アプリケーション、１０１  ファイルシステム、１０２  デバイスドライバ、２００  記録制御部、２０１  ディレクトリエントリ、２０２  ＦＡＴ制御部、２０３  クラスタ制御部、２１０  メディア制御部、２１１  位置算出部
【図１】
2006164017.tif 000003
【図２】
2006164017.tif 000004
【図３】
2006164017.tif 000005
【図４】
2006164017.tif 000006
【図５】
2006164017.tif 000007
【図６】
2006164017.tif 000008
【図７】
2006164017.tif 000009
【図８】
2006164017.tif 000010
【図９】
2006164017.tif 000011
【図１０】
2006164017.tif 000012
【図１１】
2006164017.tif 000013
【図１２】
2006164017.tif 000014
【図１３】
2006164017.tif 000015
【図１４】
2006164017.tif 000016
【図１５】
2006164017.tif 000017
【図１６】
2006164017.tif 000018
【図１７】
2006164017.tif 000019
【図１８】
2006164017.tif 000020
【図１９】
2006164017.tif 000021
【図２０】
2006164017.tif 000022