(57)【要約】情報記録モジュールの不揮発性メモリをファイルシステムにより管理するアクセスモジュールにおいて、ファイルデータの記録に先立ち実施する残容量の算出を高速に行い、ファイルシステムの初期化から記録開始までにかかる時間を短縮する方法を提供する。アクセスモジュール（１）は、情報記録モジュール内に構築されたファイルシステムに存在するファイルシステム領域管理情報を固定長ブロック単位に分割して管理する。分割残容量算出処理部（１０３）による残容量の算出処理は、この固定長ブロック単位で分割して実施され、ファイルデータ記録に必要な最小限の残容量が存在することを確認できた時点で記録準備を完了し、ファイルデータの記録を開始できるようにする。これにより、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。
2009150810.tif 000002
【特許請求の範囲】
【請求項１】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される前記領域管理情報を、前記固定長ブロック領域ごとに参照し、前記固定長ブロック領域ごとに前記固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより、前記分割残容量が算出される度に、前記固定長ブロック領域ごとに算出された前記分割残容量を合計することで、算出済み総残容量を算出し、算出した前記算出済み総残容量と所定の必要残容量とを比較し、前記算出済み総残容量が前記必要残容量以上となった時点で、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備える残容量算出方法。
【請求項２】
前記分割残容量算出ステップは、
先頭の前記固定長ブロック領域から順に、前記固定長ブロック領域ごとに、前記分割残容量を算出する、
請求項１記載の残容量算出方法。
【請求項３】
前記分割残容量算出ステップは、
終端の前記固定長ブロック領域を第１の処理対象として、前記分割残容量を算出する、
請求項１記載の残容量算出方法。
【請求項４】
前記分割残容量算出ステップは、
前記アクセス装置内のメモリ上に、前記各固定長ブロック領域に対する残容量算出処理の実施の有無を示すステータスと、前記各固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である前記分割残容量の情報と、を含む残容量情報を格納する、
請求項１に記載の残容量算出方法。
【請求項５】
ファイルアクセスにより前記分割残容量に増減が発生した時点で、前記残容量情報を逐次更新する残容量情報更新ステップを更に備える、
請求項４記載の残容量算出方法。
【請求項６】
前記ファイルアクセス可否判定ステップは、
前記ファイルアクセス処理の開始を許可した後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持するステップと、
前記分割残容量が算出されていない残りの前記固定長ブロック領域に対して、前記分割残容量を算出する処理を実行するよう前記分割残容量算出ステップに要求するステップと、
全ての前記固定長ブロック領域に対して、前記分割残容量の算出処理が完了した後に、前記アクセス装置内の前記メモリに保持した前記ファイルデータを前記不揮発性メモリに記録するステップと、
を更に備える、
請求項１記載の残容量算出方法。
【請求項７】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される前記領域管理情報についての情報であるファイルシステム情報を取得するファイルシステム情報取得ステップと、
第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、前記第Ｋ固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより算出された前記分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、前記第Ｋ固定長ブロック領域で管理される前記分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する算出済み総残容量算出ステップと、
前記算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する比較ステップと、
前記比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備え、
第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に前記固定長ブロック領域を処理対象として、前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記比較ステップと、前記ファイルアクセス可否判定ステップと、を繰り返し実行し、
第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、前記比較ステップが、前記算出済み総残容量ＳＵＭが前記必要残容量以上となったとき、
（１）前記ファイルアクセス可否判定ステップは、前記ファイルアクセス処理の開始を許可し、
（２）第０固定長ブロックから第（Ｎ−ｍ−１）固定長ブロックを処理対象として、固定長ブロック番号の昇順に、前記前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記ファイルアクセス処理の開始が許可された後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての前記固定長ブロック領域に対して、前記分割残容量の算出処理が完了し、全ての前記固定長ブロック領域に対する前記算出済み総残容量が算出された後に、前記アクセス装置内の前記メモリに保持した前記ファイルデータを前記不揮発性メモリに記録する、
残容量算出方法。
【請求項８】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される前記領域管理情報についての情報であるファイルシステム情報を取得するファイルシステム情報取得ステップと、
第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、前記第Ｋ固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより算出された前記分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、前記第Ｋ固定長ブロック領域で管理される前記分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する算出済み総残容量算出ステップと、
前記算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する比較ステップと、
前記比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備え、
第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に前記固定長ブロック領域を処理対象として、前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記比較ステップと、前記ファイルアクセス可否判定ステップと、を繰り返し実行し、
第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、前記比較ステップが、前記算出済み総残容量ＳＵＭが前記必要残容量以上となったとき、
（１）前記ファイルアクセス可否判定ステップは、前記ファイルアクセス処理の開始を許可し、
（２）第（Ｎ−ｍ−１）固定長ブロックから第０固定長ブロックを処理対象として、固定長ブロック番号の降順に、前記前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記ファイルアクセス処理の開始が許可された後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての前記固定長ブロック領域に対して、前記分割残容量の算出処理が完了し、全ての前記固定長ブロック領域に対する前記算出済み総残容量が算出された後に、前記アクセス装置内の前記メモリに保持した前記ファイルデータを前記不揮発性メモリに記録する、
残容量算出方法。
【請求項９】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される前記領域管理情報を、前記固定長ブロック領域ごとに参照し、前記固定長ブロック領域ごとに前記固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する分割残容量算出処理部と、
前記分割残容量算出処理部に対し前記分割残容量の算出処理の実行を要求するアプリケーション制御部と、
を備え、
前記分割残容量算出処理部が固定長ブロック領域ごとの前記分割残容量を算出する度に、前記アプリケーション制御部が、前記固定長ブロック領域ごとに算出された前記分割残容量を合計することで、算出済み総残容量を算出し、算出した前記算出済み総残容量と所定の必要残容量とを比較し、前記算出済み総残容量が前記必要残容量以上の残容量であると判定された時点で、ファイルアクセス処理の開始を許可する、
アクセス装置。
【請求項１０】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象として１つ以上の前記固定長ブロック領域を指定し、
前記分割残容量算出処理部は、
前記指定された１つ以上の固定長ブロック領域に対して、前記分割残容量の算出処理を実行する、
請求項９に記載のアクセス装置。
【請求項１１】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域として、先頭の前記固定長ブロック領域から順に、１つ以上の前記固定長ブロック領域を指定する、
請求項１０に記載のアクセス装置。
【請求項１２】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域として、終端の前記固定長ブロック領域を第１に指定する、
請求項１０に記載のアクセス装置。
【請求項１３】
前記分割残容量算出処理部は、
前記アクセス装置内のメモリ上に、前記各固定長ブロック領域に対する前記分割残容量の算出処理の実施の有無を示すステータスと、前記各固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である前記分割残容量の情報と、を含む残容量情報を格納する、
請求項９に記載のアクセス装置。
【請求項１４】
前記分割残容量算出処理部は、
ファイルアクセスにより前記分割残容量に増減が発生した時点で、前記分割残容量の増減に関する情報を更新する、
請求項１３に記載のアクセス装置。
【請求項１５】
前記アプリケーション制御部は、
前記ファイルアクセス処理の開始を許可した後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持し、全ての前記固定長ブロック領域に対する残容量算出処理が完了した後に、前記保持したファイルデータを前記不揮発性メモリに記録する、
請求項９に記載のアクセス装置。
【請求項１６】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と前記領域の大きさに関する情報を指定し、
前記分割残容量算出処理部は、
前記指定された算出対象領域を管理対象とする１つ以上の前記固定長ブロック領域に対して前記分割残容量の算出処理を実行する、
請求項９に記載のアクセス装置。
【請求項１７】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と前記領域の大きさに関する情報として、ファイルシステムが管理する領域の先頭から順に、算出対象領域の前記開始クラスタ番号と前記領域の大きさに関する情報を指定する、
請求項１６に記載のアクセス装置。
【請求項１８】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、ファイルシステムが管理する領域の終端領域を、第１に、前記分割残容量の算出処理の処理対象とし、算出対象領域の開始クラスタ番号と前記領域の大きさに関する情報として、前記終端領域の開始クラスタ番号と前記終端領域の大きさに関する情報を第１に指定する、
請求項１６に記載のアクセス装置。
【請求項１９】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、前記所定の必要残容量を指定し、
前記分割残容量算出処理部は、
前記指定された所定の必要残容量以上の残容量が算出されるまで、前記固定長ブロック領域単位で前記残容量の算出処理を繰り返す、
請求項９に記載のアクセス装置。
【請求項２０】
前記分割残容量算出処理部は、
前記指定された所定の必要残容量以上の残容量が算出されるまで、前記固定長ブロック領域単位で前記分割残容量の算出処理を繰り返す際に、前記固定長ブロック領域の先頭から順に前記分割残容量の算出処理を実行する、
請求項１９に記載のアクセス装置。
【請求項２１】
前記分割残容量算出処理部は、
前記指定された所定の必要残容量以上の残容量が算出されるまで、前記固定長ブロック領域単位で前記分割残容量の算出処理を繰り返す際に、前記固定長ブロック領域の終端ブロック領域に対する前記分割残容量の算出処理を、第１に実行する、
請求項１９に記載のアクセス装置。
【請求項２２】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法をコンピュータに実行させるプログラムであって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される前記領域管理情報を、前記固定長ブロック領域ごとに参照し、前記固定長ブロック領域ごとに前記固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより、前記分割残容量が算出される度に、前記固定長ブロック領域ごとに算出された前記分割残容量を合計することで、算出済み総残容量を算出し、算出した前記算出済み総残容量と所定の必要残容量とを比較し、前記算出済み総残容量が前記必要残容量以上となった時点で、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備える残容量算出方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを不揮発性メモリに格納し、ファイルとして管理するアクセス装置（アクセスモジュール）、及び残容量算出方法に関する。
【背景技術】
【０００２】
音楽コンテンツや、映像データ等のデジタルデータを記録する記録媒体には、磁気ディスク、光ディスク、光磁気ディスク等、様々な種類が存在する。これら記録媒体の内、記録素子にＦｌａｓｈＲＯＭ等の半導体メモリを使用したメモリカードは、記録媒体の小型化が図れることから、ムービーやデジタルスチルカメラ、携帯電話端末等、小型の携帯機器を中心に急速に普及している。更に最近では、ＦｌａｓｈＲＯＭ等の半導体メモリを機器に内蔵してハードディスクの代わりに使用するなど、従来のメモリカードのような着脱可能なリムーバブルメディアとしての用途のみならず、機器内蔵ストレージとしての用途でも半導体メモリが使用されるようになってきた。
このようなメモリカードや機器内蔵ストレージには、主にＮＡＮＤ型フラッシュメモリと呼ばれる半導体素子が使用されている。ＮＡＮＤ型フラッシュメモリは、既に記録されたデータを一旦消去した後、再度別のデータを記録することが可能な記録素子であり、従来のハードディスクと同様に、複数回書き換え可能な情報記録装置を構成することが可能である。【０００３】
従来、メモリカードや機器内蔵ストレージに格納されたデータは、ファイルシステムにより管理されている。データをファイルシステムにより管理することで、同一のファイルシステムを解釈する機器間でデータをファイルとして共有することが可能となり、ユーザは自分の格納したデータを複数の機器間で容易に参照したり、コピーしたりすることが可能となる。
従来最も広く使用されているファイルシステムは、ＦＡＴファイルシステムと呼ばれるものである。ＦＡＴファイルシステムは、領域管理をファイルアロケーションテーブル（ＦＡＴ）と呼ばれるテーブルで一元管理するという特徴を持っており、比較的構造がシンプルで実装が容易なことから、フレキシブルディスクやＰＣのハードディスク、メモリカードなどのファイルシステムとして広く使用されている。【０００４】
図２にＦＡＴファイルシステムの構成を示す。ＦＡＴファイルシステムでは、ファイルアロケーションテーブル内の管理単位のビット幅の違いにより、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２などの種類が存在するが、いずれのＦＡＴファイルシステムにおいても、ファイルアロケーションテーブルによる領域管理方法は、ほぼ同じであり、以下では、ＦＡＴ１６を例に説明する。
図２に示すように、論理アドレス空間の先頭には、領域割り当て単位やファイルシステムが管理する領域の大きさ等、ファイルシステムの管理情報が格納される領域であるファイルシステム管理情報領域２０１が存在する。
このファイルシステム管理情報領域２０１には、マスターブートレコード・パーティションテーブル２０３、パーティションブートセクタ２０４、ＦＡＴ（２０５、２０６）、ルートディレクトリエントリ２０７と呼ばれるファイルシステムの管理情報が含まれ、ユーザデータ領域２０２を管理するために必要な情報が各々格納されている。【０００５】
マスターブートレコード・パーティションテーブル２０３は、ファイルシステムが管理する論理アドレス空間上の領域を複数のパーティションと呼ばれる領域に分割して管理するための情報が格納される領域である。
パーティションブートセクタ２０４は、パーティション内の領域管理単位の大きさなど、１つのパーティション内の管理情報が格納される領域である。ＦＡＴ（２０５、２０６）は、ファイルに含まれるデータの格納位置に関する情報が格納される領域であり、通常、同じ情報を持つ２つのＦＡＴ（２０５、２０６）が存在し、一方のＦＡＴ（２０５、２０６）が破損したとしても他方のＦＡＴ（２０５、２０６）によりファイルにアクセスできるよう二重化されている。
ルートディレクトリエントリ２０７は、ルートディレクトリ直下に存在するファイル、ディレクトリの情報（ディレクトリエントリ）が格納される領域である。【０００６】
また、ＦＡＴファイルシステムでは、このファイルシステム管理情報領域２０１に引き続く領域にファイル本体のデータなどを格納するユーザデータ領域２０２が存在する。ユーザデータ領域２０２は、５１２バイトから数十ＫＢ程度の大きさを持つクラスタと呼ばれる管理単位毎に分割管理されており、各クラスタにはファイルに含まれるデータが格納されている。多くのデータを格納するファイルは、複数のクラスタに跨ってデータを格納しており、各クラスタ間の繋がりは、ＦＡＴ（２０５、２０６）に格納されたリンク情報により管理されている。また、ルートディレクトリ直下のディレクトリ内に存在するファイル、サブディレクトリの情報（ディレクトリエントリ）は、このユーザデータ領域２０２の一部を利用して格納される。
図３は、ＦＡＴ１６のディレクトリエントリの構成を示した図である。【０００７】
ディレクトリエントリ２０８は、１つのファイル、ディレクトリ毎に３２バイトのディレクトリエントリ２０８が割り当てられ、ファイル、ディレクトリに関する情報を格納している。すなわち、１つのファイルやディレクトリが追加される度に３２バイトのディレクトリエントリ２０８の情報が新規に作成され、ルートディレクトリエントリ２０７の領域、あるいはユーザデータ領域２０２に記録される。
ディレクトリエントリ２０８の先頭８バイトには、ファイルやディレクトリの名称が格納される。続く３バイトには、拡張子が格納される。続く１バイトには、ファイル・ディレクトリの種別を識別するフラグや、ファイル・ディレクトリがリードオンリーか否かを識別するフラグ等の属性情報が格納される。また、ファイル・ディレクトリの最終更新日時の情報や、ファイル・ディレクトリデータの実体が格納されているクラスタの開始位置を示す開始クラスタ番号、ファイルサイズのバイト数等が格納される。【０００８】
このようにディレクトリエントリ２０８には、データ実体が格納されている領域の最初の１クラスタの位置を示す情報しか含まれておらず、データ実体の大きさが１クラスタよりも大きい場合において２クラスタ目以降のデータがどの領域に格納されているかについては、ＦＡＴ（２０５、２０６）で管理されている。
図４は、ＦＡＴ１６のＦＡＴ（２０５、２０６）の構成を示した図である。
ＦＡＴ１６では、ＦＡＴ（２０５、２０６）は、２バイト（１６ビット）の情報を１つのＦＡＴエントリとして管理しており、１つのＦＡＴエントリが１つのクラスタの状態を示している。すなわち、ユーザデータ領域２０２にＭ個のクラスタが存在する場合、ＦＡＴエントリもＭ個存在することから、ＦＡＴ（２０５、２０６）の１つ分の大きさは約２×Ｍバイトとなる。但し、先頭２ＦＡＴエントリ分は、ＦＡＴの先頭を示す固定の値（０ｘＦ８ＦＦ、０ｘＦＦＦＦ）がシグネチャとして記録されるため、ユーザデータ領域２０２の先頭クラスタに対応するＦＡＴエントリはＦＡＴ（２０５、２０６）の４バイト目、５バイト目の２バイトに存在している。ＦＡＴ先頭に存在する４バイトのシグネチャをＦＡＴエントリの０番、１番とすると、４バイト目、５バイト目の２バイトの位置は２番目になることから、ユーザデータ領域２０２の先頭クラスタは、便宜上クラスタ番号＝“２”と割り当てられており、クラスタ番号＝“０”、“１”に対応するクラスタは存在しないことになっている。【０００９】
更に、各ＦＡＴエントリは、各々対応するクラスタの状態（使用中、空き、欠陥）、及びリンク先のクラスタ番号を示す。例えば、図４において、対応クラスタ番号２のＦＡＴエントリは０ｘ０００３（十進数では“３”）に設定されており、クラスタ番号２のクラスタ内に格納されたデータの続きのデータは、クラスタ番号３のクラスタ内に格納されていることを意味する。同様に、対応クラスタ番号３のＦＡＴエントリは、０ｘ０００４（十進数では“４”）に設定されており、クラスタ番号３のクラスタ内に格納されたデータの続きのデータは、クラスタ番号４のクラスタ内に格納されていることを意味する。また、対応クラスタ番号６のＦＡＴエントリは０ｘＦＦＦＦに設定されている。これは、次のリンク先が存在せず、リンクが終端していることを意味する。よって、図４の例では、クラスタ番号２、３、４、５、６の順に一連のファイルデータが格納されていることになる。また、対応クラスタ番号７のＦＡＴエントリは０ｘ００００に設定されている。これは対応するクラスタが使用されておらず、“空き”の状態であることを意味する。また、対応クラスタ番号（Ｍ＋１）のＦＡＴエントリは０ｘＦＦＦ７に設定されている。これは、対応するクラスタが物理的に壊れていて記録が出来ない状態である等の欠陥状態であることを意味する。【００１０】
以上をまとめると、０ｘ００００、０ｘＦＦＦＦ、０ｘＦＦＦ７の３つのＦＡＴエントリ値は各々特殊な意味を持ち、０ｘ０００２から０ｘＦＦＦ６までのＦＡＴエントリ値がリンク先クラスタ番号として使用されることになる。また、それ以外の０ｘ０００１、０ｘＦＦＦ８から０ｘＦＦＦＥまでの値は予約されており、通常は使用されない値になっている。
このようにＦＡＴ（２０５、２０６）は、ファイルデータが格納されている領域のリンク情報と共に、各クラスタの使用状態も管理している。そのため、ファイルシステムで管理されている領域内に存在する残容量は、ＦＡＴ（２０５、２０６）を参照し、空きクラスタの個数をカウントすることにより算出される。図５を用いて、この残容量算出処理について説明する。【００１１】
≪残容量算出処理≫
（Ｓ５０１）：
アクセスモジュールは、残容量を保持する変数（ＦＲＥＥ＿ＳＰＡＣＥ）を「０」に初期化する。
（Ｓ５０２）：
アクセスモジュールは、アクセスモジュールのＲＡＭ上に読み出されたＦＡＴ（２０５、２０６）のクラスタ番号２に対応するＦＡＴエントリの位置に、現在参照位置を設定する。ここでは、情報記録モジュールからアクセスモジュールのＲＡＭ上に予めＦＡＴ（２０５、２０６）が読み出されている場合を想定する。
（Ｓ５０３）：
アクセスモジュールは、現在参照位置がＦＡＴ終端まで到達し、ＦＡＴ全体に対して残容量検索の処理が完了しているか判定する。検索が完了している場合には、現在、ＦＲＥＥ＿ＡＲＥＡに格納されている値を残容量としてアプリケーション制御部に通知して、処理を終了する。検索が完了していない場合は、Ｓ５０４の処理に進む。
（Ｓ５０４）：
アクセスモジュールは、現在参照位置のＦＡＴエントリが空きクラスタを示すか判定する。【００１２】
具体的には、ＦＡＴエントリの値が０ｘ００００である場合は空きクラスタであると判定し、それ以外の場合は空きクラスタではないと判定する。
空きクラスタであると判定した場合は、Ｓ５０５の処理に進み、空きクラスタではないと判定した場合は、Ｓ５０６の処理に進む。
（Ｓ５０５）：
空きクラスタが発見されたため、アクセスモジュールは、ＦＲＥＥ＿ＳＰＡＣＥの値を「１」加算する（＋１だけインクリメントする）。
（Ｓ５０６）：
アクセスモジュールは、現在参照位置を１ＦＡＴエントリ分進め、Ｓ５０３の処理に戻る。【００１３】
例えば、図６に示すようなＦＡＴ（２０５、２０６）を想定した場合、クラスタ番号２に対応するＦＡＴエントリからクラスタ番号３１に対応するＦＡＴエントリまでに存在する空きクラスタの総数は１６クラスタであり、この値が残容量として、アクセスモジュールのアプリケーション制御部に通知される。
このように、残容量算出処理では、全ＦＡＴエントリに対して値を確認し、空きクラスタの個数をカウントする必要があるため、ファイルシステムが管理する総容量が増加するに従いＦＡＴエントリが増加し、残容量算出処理時間が長くなるという問題が生じる。
従来、このような問題を解決する方法として、残容量の情報をパーティションブートセクタ２０４等のファイルシステム管理情報領域２０１に予め保持しておく方法が提案されている（例えば、特許文献１参照）。この方法では、ファイルシステム管理情報領域２０１に格納された残容量の情報を読み出すことにより、従来ＦＡＴ（２０５、２０６）を参照して実施していた残容量算出処理を割愛し、残容量算出処理を含むファイルシステム初期化時間を短縮している。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００７−２１４７８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上記の技術には次のような問題点がある。
上記の方法では、ファイルデータの記録やファイルの削除など、残容量が変化するタイミングで逐次ファイルシステム管理情報領域２０１に格納した残容量の情報を上書きし、更新する必要がある。特に、リムーバブルメディアに対して本技術を適用する場合には、全てのアクセス装置がこの情報更新処理に対応していなければならず、対応していない機器が存在する場合には、ファイルシステム管理情報領域２０１に格納された残容量の情報と、ＦＡＴ（２０５，２０６）上の残容量とが一致せず、矛盾が生じる。
また、機器内蔵ストレージに対して本技術を適用する場合には、不意に電源断が生じた場合等にやはり矛盾が生じる可能性がある。
本発明は、上記問題点に鑑み、ファイルシステムにおいて残容量算出を高速に行い、ファイルシステムの初期化から記録開始までにかかる時間を短縮することが可能なアクセスモジュール、及び残容量算出方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
第１の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、分割残容量算出ステップと、ファイルアクセス可否判定ステップと、を備える。
分割残容量算出ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される領域管理情報を、固定長ブロック領域ごとに参照し、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する。ファイルアクセス可否判定ステップは、分割残容量算出ステップにより、分割残容量が算出される度に、固定長ブロック領域ごとに算出された分割残容量を合計することで、算出済み総残容量を算出し、算出した算出済み総残容量と所定の必要残容量とを比較し、算出済み総残容量が必要残容量以上となった時点で、ファイルアクセス処理の開始を許可する。【００１７】
この残容量算出方法では、領域管理情報は、固定長ブロック領域単位で管理され、分割残容量算出ステップにより、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量が算出される。これにより、必要最小限の残容量が存在することを確認できた時点で、ファイルアクセス処理を開始させることができる。その結果、全体に対する残容量算出処理の実施完了を待つことなく記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。
第２の発明は、第１の発明であって、分割残容量算出ステップは、先頭の固定長ブロック領域から順に、固定長ブロック領域ごとに、分割残容量を算出する。
第３の発明は、第１の発明であって、分割残容量算出ステップは、終端の固定長ブロック領域を第１の処理対象として、分割残容量を算出する。【００１８】
この残容量算出方法では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
なお、「第１の処理対象」とは、第１番目の処理対象のことである。
第４の発明は、第１の発明であって、分割残容量算出ステップは、アクセス装置内のメモリ上に、各固定長ブロック領域に対する残容量算出処理の実施の有無を示すステータスと、各固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量の情報と、を含む残容量情報を格納する。
第５の発明は、第４の発明であって、ファイルアクセスにより分割残容量に増減が発生した時点で、残容量情報を逐次更新する残容量情報更新ステップを更に備える。【００１９】
この残容量算出方法では、残容量情報更新ステップにより、ファイルアクセスにより分割残容量に増減が発生した時点で、残容量情報が逐次更新されるので、残容量情報を常に最新の情報にすることできる。
第６の発明は、第１の発明であって、ファイルアクセス可否判定ステップは、以下のステップを備える。
（１）ファイルアクセス処理の開始を許可した後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持するステップ。
（２）分割残容量が算出されていない残りの固定長ブロック領域に対して、分割残容量を算出する処理を実行するよう分割残容量算出ステップに要求するステップ。
（３）全ての固定長ブロック領域に対して、分割残容量の算出処理が完了した後に、アクセス装置内のメモリに保持したファイルデータを不揮発性メモリに記録するステップ。【００２０】
この残容量算出方法では、上記（１）〜（３）により、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端の固定長ブロック領域（例えば、ＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
第７の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、ファイルシステム情報取得ステップと、分割残容量算出ステップと、総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を備える。【００２１】
ファイルシステム情報取得ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される領域管理情報についての情報であるファイルシステム情報を取得する。分割残容量算出ステップは、第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、第Ｋ固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する。総残容量算出ステップは、分割残容量算出ステップにより算出された分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、第Ｋ固定長ブロック領域で管理される分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する算出済み。比較ステップは、算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する。ファイルアクセス可否判定ステップは、比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可する。【００２２】
そして、第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に固定長ブロック領域を処理対象として、分割残容量算出ステップと、算出済み総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を繰り返し実行する。
そして、第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、比較ステップが、算出済み総残容量ＳＵＭが必要残容量以上となったとき、
（１）ファイルアクセス可否判定ステップは、ファイルアクセス処理の開始を許可し、
（２）第０固定長ブロックから第（Ｎ−ｍ−１）固定長ブロックを処理対象として、固定長ブロック番号の昇順に、分割残容量算出ステップと、算出済み総残容量算出ステップと、ファイルアクセス処理の開始が許可された後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての固定長ブロック領域に対して、分割残容量の算出処理が完了し、全ての固定長ブロック領域に対する算出済み総残容量が算出された後に、アクセス装置内のメモリに保持したファイルデータを不揮発性メモリに記録する。【００２３】
この残容量算出方法では、上記処理により、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端の固定長ブロック領域（例えば、ＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
なお、この残容量算出方法では、上記の順番に実行されることが望ましいが、一部の順序を入れ替えて実行されるものであってもよい。【００２４】
第８の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、ファイルシステム情報取得ステップと、分割残容量算出ステップと、総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を備える。
ファイルシステム情報取得ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される領域管理情報についての情報であるファイルシステム情報を取得する。分割残容量算出ステップは、第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、第Ｋ固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する。総残容量算出ステップは、分割残容量算出ステップにより算出された分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、第Ｋ固定長ブロック領域で管理される分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する算出済み。比較ステップは、算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する。ファイルアクセス可否判定ステップは、比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可する。【００２５】
そして、第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に固定長ブロック領域を処理対象として、分割残容量算出ステップと、算出済み総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を繰り返し実行する。
そして、第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、比較ステップが、算出済み総残容量ＳＵＭが必要残容量以上となったとき、
（１）ファイルアクセス可否判定ステップは、ファイルアクセス処理の開始を許可し、
（２）第（Ｎ−ｍ−１）固定長ブロックから第０固定長ブロックを処理対象として、固定長ブロック番号の降順に、分割残容量算出ステップと、算出済み総残容量算出ステップと、ファイルアクセス処理の開始が許可された後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての固定長ブロック領域に対して、分割残容量の算出処理が完了し、全ての固定長ブロック領域に対する算出済み総残容量が算出された後に、アクセス装置内のメモリに保持したファイルデータを不揮発性メモリに記録する。【００２６】
この残容量算出方法では、上記処理により、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端の固定長ブロック領域（例えば、ＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
なお、この残容量算出方法では、上記の順番に実行されることが望ましいが、一部の順序を入れ替えて実行されるものであってもよい。【００２７】
第９の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置であって、分割残容量算出処理部と、アプリケーション制御部と、を備える。
分割残容量算出処理部は、不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される領域管理情報を、固定長ブロック領域ごとに参照し、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する。アプリケーション制御部は、分割残容量算出処理部に対し分割残容量の算出処理の実行を要求する。
そして、分割残容量算出処理部が固定長ブロック領域ごとの分割残容量を算出する度に、アプリケーション制御部が、固定長ブロック領域ごとに算出された分割残容量を合計することで、算出済み総残容量を算出し、算出した算出済み総残容量と所定の必要残容量とを比較し、算出済み総残容量が必要残容量以上の残容量であると判定された時点で、ファイルアクセス処理の開始を許可する。【００２８】
このアクセス装置では、領域管理情報は、固定長ブロック領域単位で管理され、分割残容量算出部により、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量が算出される。これにより、必要最小限の残容量が存在することを確認できた時点で、ファイルアクセス処理を開始させることができる。その結果、全体に対する残容量算出処理の実施完了を待つことなく記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。
なお、「アクセス装置」は、アクセスモジュールを含む概念である。
第１０の発明は、第９の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象として１つ以上の固定長ブロック領域を指定する。分割残容量算出処理部は、指定された１つ以上の固定長ブロック領域に対して、分割残容量の算出処理を実行する。【００２９】
第１１の発明は、第１０の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域として、先頭の固定長ブロック領域から順に、１つ以上の固定長ブロック領域を指定する。
第１２の発明は、第１０の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域として、終端の固定長ブロック領域を第１に指定する。
このアクセス装置では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
第１３の発明は、第９の発明であって、分割残容量算出処理部は、アクセス装置内のメモリ上に、各固定長ブロック領域に対する分割残容量の算出処理の実施の有無を示すステータスと、各固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量の情報と、を含む残容量情報を格納する。【００３０】
第１４の発明は、第１３の発明であって、分割残容量算出処理部は、ファイルアクセスにより分割残容量に増減が発生した時点で、分割残容量の増減に関する情報を更新する。
このアクセス装置では、分割残容量算出処理部により、ファイルアクセスにより分割残容量に増減が発生した時点で、残容量情報が逐次更新されるので、残容量情報を常に最新の情報にすることできる。
第１５の発明は、第９の発明であって、アプリケーション制御部は、ファイルアクセス処理の開始を許可した後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持し、全ての固定長ブロック領域に対する残容量算出処理が完了した後に、保持したファイルデータを不揮発性メモリに記録する。
このアクセス装置では、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端の固定長ブロック領域（例えば、ＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。【００３１】
第１６の発明は、第９の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と領域の大きさに関する情報を指定する。分割残容量算出処理部は、指定された算出対象領域を管理対象とする１つ以上の固定長ブロック領域に対して分割残容量の算出処理を実行する。
第１７の発明は、第１６の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と領域の大きさに関する情報として、ファイルシステムが管理する領域の先頭から順に、算出対象領域の開始クラスタ番号と領域の大きさに関する情報を指定する。
第１８の発明は、第１６の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、ファイルシステムが管理する領域の終端領域を、第１に、分割残容量の算出処理の処理対象とし、算出対象領域の開始クラスタ番号と領域の大きさに関する情報として、終端領域の開始クラスタ番号と終端領域の大きさに関する情報を第１に指定する。【００３２】
このアクセス装置では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
第１９の発明は、第９の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、所定の必要残容量を指定する。分割残容量算出処理部は、指定された所定の必要残容量以上の残容量が算出されるまで、固定長ブロック領域単位で残容量の算出処理を繰り返す。
第２０の発明は、第１９の発明であって、分割残容量算出処理部は、指定された所定の必要残容量以上の残容量が算出されるまで、固定長ブロック領域単位で分割残容量の算出処理を繰り返す際に、固定長ブロック領域の先頭から順に分割残容量の算出処理を実行する。【００３３】
第２１の発明は、第１９の発明であって、分割残容量算出処理部は、指定された所定の必要残容量以上の残容量が算出されるまで、固定長ブロック領域単位で分割残容量の算出処理を繰り返す際に、固定長ブロック領域の終端ブロック領域に対する分割残容量の算出処理を、第１に実行する。
このアクセス装置では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
第２２の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法をコンピュータに実行させるプログラムである。残容量算出方法は、分割残容量算出ステップと、ファイルアクセス可否判定ステップと、を備える。【００３４】
分割残容量算出ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される領域管理情報を、固定長ブロック領域ごとに参照し、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する。ファイルアクセス可否判定ステップは、分割残容量算出ステップにより、分割残容量が算出される度に、固定長ブロック領域ごとに算出された分割残容量を合計することで、算出済み総残容量を算出し、算出した算出済み総残容量と所定の必要残容量とを比較し、算出済み総残容量が必要残容量以上となった時点で、ファイルアクセス処理の開始を許可する。
これにより、第１の発明と同様の効果を奏するプログラムを実現することができる。
【発明の効果】
【００３５】
本発明によれば、ファイルシステムにおいて残容量算出を高速に行い、ファイルシステムの初期化から記録開始までにかかる時間を短縮することが可能となる。
【図面の簡単な説明】
【００３６】
【図１】第１実施形態におけるアクセスモジュール、及び情報記録モジュールの構成を示した説明図
【図２】ＦＡＴ型ファイルシステムの構成を示した説明図
【図３】ディレクトリエントリの構成を示した説明図
【図４】ＦＡＴの一例を示した説明図
【図５】従来の残容量算出処理手順を示したフローチャート
【図６】ＦＡＴの別の一例を示した説明図
【図７】第１実施形態におけるＦＡＴ管理の一例を示した説明図
【図８】第１実施形態における残容量情報の一例を示した説明図
【図９】第１実施形態におけるマウント処理手順を示したフローチャート
【図１０】第１実施形態におけるマウント処理直後の残容量情報の一例を示した説明図
【図１１】第１実施形態におけるファイルシステム情報取得処理手順を示したフローチャート
【図１２】第１実施形態におけるファイルシステム情報の一例を示した説明図
【図１３】第１実施形態における残容量算出処理手順を示したフローチャート
【図１４】第１実施形態における残容量算出処理直後の残容量情報の一例を示した説明図
【図１５】第１実施形態におけるアプリケーション制御部、ファイルシステム制御部間の制御シーケンスの一例を示した説明図
【図１６】第１実施形態における全ＦＡＴブロックに対する残容量算出処理完了後の残容量情報の一例を示した説明図
【図１７】第１実施形態におけるアプリケーション制御部、ファイルシステム制御部間の制御シーケンスの第２の例を示した説明図
【図１８】第１実施形態におけるアプリケーション制御部、ファイルシステム制御部間の制御シーケンスの第３の例を示した説明図
【発明を実施するための形態】
【００３７】
以下、本発明の実施形態（特に、アクセスモジュール、及び残容量算出方法）について、図面を参照しつつ説明する。
［第１実施形態］
（１．１：全体構成）
図１は、第１実施形態における不揮発性記憶システム１００の概略構成図である。不揮発性記憶システム１００は、アクセスモジュール（アクセス装置）１と、情報記録モジュール（情報記録装置）２と、を備える。
図１に示すように、アクセスモジュール１は、ＣＰＵ１１、ＲＡＭ１２、情報記録モジュールインタフェース１３、ＲＯＭ１４を含む。
ＲＯＭ１４には、アクセスモジュール１を制御するプログラムが格納されており、このプログラムは、ＲＡＭ１２を一時記憶領域として使用し、ＣＰＵ１１上で動作する。
【００３８】
情報記録モジュールインタフェース１３は、情報記録モジュール２とアクセスモジュール１との接続部であり、制御信号及びデータの送受信を行う。
ＲＯＭ１４は、更に、アプリケーション制御部１０１、ファイルシステム制御部１０２、情報記録モジュールアクセス部１０４を含む。なお、本実施形態では、アプリケーション制御部１０１、ファイルシステム制御部１０２、情報記録モジュールアクセス部１０４は、ＲＯＭ１４上において、ソフトウェアにより実現されるものを想定しているが、アプリケーション制御部１０１、ファイルシステム制御部１０２、情報記録モジュールアクセス部１０４は、その全部または一部が、ハードウェアにより実現されるものであってもよい。
アプリケーション制御部１０１は、データの生成や電源の制御などアクセスモジュール１全体の制御を行う。
【００３９】
ファイルシステム制御部１０２は、ファイルシステムによりデータをファイルとして管理するための制御を行う。
情報記録モジュールアクセス部１０４は、ファイルシステム制御部１０２からデータと共にサイズとアドレスを渡され、指定されたサイズのデータを情報記録モジュール２の記録領域内における指定された位置に記録するなど、情報記録モジュール２に対するコマンドやデータの送受信を制御する。
ファイルシステム制御部１０２は、更に、分割残容量算出処理部１０３を含む。
分割残容量算出処理部１０３は、本発明の特徴を示す処理部であり、残容量の算出を複数回の処理に分割して実施する処理部である。また、分割残容量算出処理部１０３が実施する分割残容量算出処理に使用する情報は、ＲＡＭ１２内の残容量情報格納部１０５に格納される。
【００４０】
一方、図１に示すように、情報記録モジュール２は、アクセスモジュールインタフェース２１、ＣＰＵ２２、ＲＡＭ２３、ＲＯＭ２４、不揮発性メモリ２５を含む。
アクセスモジュールインタフェース２１は、情報記録モジュール２とアクセスモジュール１との接続部であり、情報記録モジュールインタフェース１３と同様に、制御信号及びデータを送受信するインタフェースである。
ＲＯＭ２４には、情報記録モジュール２を制御するプログラムが格納されており、このプログラムはＲＡＭ２３を一時記憶領域として使用し、ＣＰＵ２２上で動作する。
不揮発性メモリ２５は、アクセスモジュール１から送信されたデータを記録する領域であり、その中はファイルシステムで管理されている。すなわち、不揮発性メモリ２５内の論理アドレス空間には、図２で示した構成を一例とするＦＡＴ型ファイルシステムの各種データ構造が格納されている。すなわち、記録領域はクラスタ単位に分割され、ＦＡＴ（２０５、２０６）を用いて管理されており、ファイルやディレクトリの名称やサイズ等の情報はディレクトリエントリ２０８を用いて管理されている。
【００４１】
本発明における分割残容量算出処理部１０３は、従来技術と同様に情報記録モジュール２からＦＡＴ（２０５，２０６）をアクセスモジュール１のＲＡＭ１２に読み出し、残容量を算出する。従来技術と異なる点は、残容量算出処理を分割して実施し、データ記録に必要な最低限の残容量が取得できた時点で記録を開始することを可能とする点である。これにより、不揮発性記憶システム１００では、従来に比べファイルシステムの初期化から記録開始までにかかる処理時間を短縮することが可能となる。
（１．２：分割残容量算出処理部）
続いて、本実施形態における分割残容量算出処理部１０３について、図７、図８を用いて説明する。
図７は、分割残容量算出処理部１０３におけるＦＡＴ（２０５、２０６）の管理の一例を示した図である。この図では、クラスタサイズが１６ＫＢの場合に６５０００クラスタからなるユーザデータ領域２０２をＦＡＴ（２０５、２０６）で管理した場合の例を示している。ＦＡＴ１６では、１ＦＡＴエントリ当たり２バイトで管理するため、６５０００クラスタを管理する場合、ＦＡＴ（２０５、２０６）は１２８ＫＢ弱の大きさとなる。
【００４２】
分割残容量算出処理部１０３は、このＦＡＴを複数の固定長ブロックに分割して管理する。ここでは、固定長ブロックとして１６ＫＢの大きさに区切って管理する場合を想定する。１２８ＫＢのＦＡＴ（２０５、２０６）を１６ＫＢずつのＦＡＴブロックに区切って管理する場合、ＦＡＴブロック＿０からＦＡＴブロック＿７までの合計８つのＦＡＴブロックが存在することになる。実際には、ＦＡＴ（２０５、２０６）のサイズが１２８ＫＢよりも少し小さいため、ＦＡＴブロック＿７の終端には、ＦＡＴとして使用されない未使用領域が存在している。
図８は、分割残容量算出処理部１０３が残容量情報格納部１０５に格納する残容量情報３０１の一例を示した図である。
残容量情報３０１は、各ＦＡＴブロックの“ステータス”と“残容量”を示す情報から構成される。
【００４３】
“ステータス”は、該当するＦＡＴブロックに対する残容量算出処理が実施されたか否かを示す情報であり、実施済みであれば「１」が、未実施であれば「０」が格納される。
“残容量”は、該当するＦＡＴブロックに含まれる残容量を示す情報であり、残容量のクラスタ数が格納される。すなわち、各ＦＡＴブロックの残容量の総和が、ユーザデータ領域２０２全体に含まれる残容量を意味する。
このように、本実施形態における分割残容量算出処理部１０３は、ＦＡＴブロック単位で残容量を算出、管理することを特徴とする。
（１．３：マウント処理）
続いて、図９を用いて、本実施形態のファイルシステム制御部１０２におけるマウント処理手順について説明する。このマウント処理は、ファイルシステムの初期化処理として、ファイルシステムを使用する際に最初に実行される処理である。
（Ｓ９０１）：
ファイルシステム制御部１０２は、ファイルシステム管理情報領域２０１からファイルシステム管理情報を読み出し、構造が正しいかチェックする。
（Ｓ９０２）：
ファイルシステム制御部１０２は、Ｓ９０１のチェックの結果、構造が正しく、マウント処理が行えると判断した場合はＳ９０４の処理に進む。また、構造に何らかの異常が検出され、マウント処理が行えないと判断した場合はＳ９０３の処理に進む。例えば、セクタサイズを示す情報が「０」に設定されている等、ファイルシステムとして動作することができない状態が検出された場合、構造が異常であると判断される。
（Ｓ９０３）：
ファイルシステム制御部１０２は、Ｓ９０２の判定処理において、マウント処理が行えないと判断した場合、アプリケーション制御部１０１にマウント処理が失敗したことを示すエラー情報を通知し、処理を終了する。この場合、再度フォーマットしたり、ファイルシステム管理情報の異常を修復したりしない限り、ファイルアクセスが行えないことになる。
（Ｓ９０４）：
ファイルシステム制御部１０２により、Ｓ９０２の判定処理において、マウント処理が行えると判断された場合、読み出したファイルシステム管理情報の内、セクタサイズやクラスタサイズ等、ファイルシステムの制御に必要な情報がＲＡＭ１２上に保持される。
（Ｓ９０５）：
ファイルシステム制御部１０２は、分割残容量算出処理部１０３が使用するＲＡＭ１２上の残容量情報格納部１０５の情報を初期化し、アプリケーション制御部１０１にマウント処理が成功したことを示す情報を通知して処理を終了する。この初期化処理では、図１０に示すように、各ＦＡＴブロック番号に対応する“ステータス”を残容量の算出をしていない状態を示す“０”に、“残容量”も“０”に設定する。すなわち、この初期化処理により、全ＦＡＴブロックに対して残容量の算出が実施されていない状態に設定され、現時点で判明している残容量の総量は「０」となる。
【００４４】
このように、アクセスモジュール１において、Ｓ９０５の処理まで実施してマウント処理が成功した場合、アプリケーション制御部１０１は、ファイルアクセスを行う準備ができたことになる。但し、現時点では、ファイルシステム制御部１０２は、残容量の総量を「０」と認識していることから、ファイルへの追記やディレクトリ作成等、新たに空き領域を必要とする処理は行えない状態となっている。これらの処理は、後述する分割残容量算出処理において残容量が検出された後、実行することが可能となる。
（１．４：ファイルシステム情報取得処理）
続いて、図１１を用いて、本実施形態のファイルシステム制御部１０２におけるファイルシステム情報取得処理手順について説明する。このファイルシステム情報取得処理は、アプリケーション制御部１０１がファイルシステム制御部１０２から、ユーザデータ領域２０２に含まれる総容量等のファイルシステムに関する全般的な情報（以下、「ファイルシステム情報３０２」と呼ぶ）を取得する処理であり、マウント処理実施後、実際にファイルアクセスする前に実施される。
（Ｓ１１０１）：
ファイルシステム制御部１０２は、マウント処理時にＲＡＭ１２上に保持したファイルシステム管理情報を元に、ファイルシステム情報３０２を作成する。ファイルシステム情報３０２の一例を図１２に示す。図１２に示されるファイルシステム情報３０２は、“ＦＳ種別”、“セクタサイズ”、“クラスタサイズ”、“総容量”、“ＦＡＴブロック数”を含む。
【００４５】
“ＦＳ種別”は、ファイルシステムの種別に関する情報を格納する。例えば“０”はＦＡＴ１２、“１”はＦＡＴ１６、“２”はＦＡＴ３２のように各ファイルシステム種別に数値を対応づけておき、該当する数値を本フィールドに格納する。
“セクタサイズ”は、ファイルシステムの最小管理単位であるセクタの大きさを示す情報を格納する。
“クラスタサイズ”は、ユーザデータ領域２０２の管理単位であるクラスタの大きさを示す情報を格納する。
“総容量”は、ユーザデータ領域２０２に含まれる全体の容量を示す情報を格納する。
“ＦＡＴブロック数”は、ＦＡＴ（２０５、２０６）を固定長ブロック単位で管理した際のブロック数を示す情報を格納する。例えば、図７の例では、ＦＡＴブロックの個数が８個であることから、本フィールドには“８”が格納される。
（Ｓ１１０２）：
ファイルシステム制御部１０２は、Ｓ１１０１で作成したファイルシステム情報３０２をアプリケーション制御部１０１に通知して処理を終了する。
【００４６】
このように、ファイルシステム情報取得処理では、アプリケーション制御部１０１が総容量等のファイルシステムに関する全般的な情報を取得すると共に、ＦＡＴブロック数を取得する。本実施形態では、残容量算出処理をこのＦＡＴブロック単位で実施する場合の例について説明する。
（１．５：残容量算出処理）
続いて、図１３を用いて、本実施形態の分割残容量算出処理部１０３における残容量算出処理手順について説明する。本実施形態では、ＦＡＴブロック単位で残容量算出処理を実施するため、ここでは、１ＦＡＴブロック分の残容量算出処理手順を説明する。
（Ｓ１３０１）：
分割残容量算出処理部１０３は、残容量を保持する変数（ＦＲＥＥ＿ＳＰＡＣＥ）を０に初期化する。
（Ｓ１３０２）：
分割残容量算出処理部１０３は、算出対象のＦＡＴブロックを情報記録モジュール２からアクセスモジュール１内のＲＡＭ１２上に読み出す。算出対象のＦＡＴブロックは、アプリケーション制御部１０１から指定されるものとする。
（Ｓ１３０３）：
分割残容量算出処理部１０３は、アクセスモジュール１のＲＡＭ１２上に読み出されたＦＡＴブロックの先頭位置に、現在参照位置を設定する。算出対象のＦＡＴブロックがＦＡＴ（２０５、２０６）先頭のブロックであった場合、現在参照位置は、クラスタ番号２に対応するＦＡＴエントリの位置に設定される。それ以外の場合、現在参照位置は、ＦＡＴブロックの先頭に存在するＦＡＴエントリの位置に設定される。
（Ｓ１３０４）：
分割残容量算出処理部１０３は、現在参照位置がＦＡＴブロック終端まで到達し、算出対象のＦＡＴブロック全体に対して残容量検索の処理が完了しているか判定する。検索が完了している場合は、Ｓ１３０８の処理に進む。検索が完了していない場合は、Ｓ１３０５の処理に進む。
（Ｓ１３０５）：
分割残容量算出処理部１０３は、現在参照位置のＦＡＴエントリが空きクラスタを示すか判定する。具体的には、ＦＡＴエントリの値が０ｘ００００である場合は空きクラスタであると判定し、それ以外の場合は空きクラスタではないと判定する。現在参照位置のＦＡＴエントリが示しているクラスタが空きクラスタであると判定した場合、Ｓ１３０６の処理に進み、現在参照位置のＦＡＴエントリが示しているクラスタが空きクラスタではないと判定した場合、Ｓ１３０７の処理に進む。
（Ｓ１３０６）：
分割残容量算出処理部１０３は、空きクラスタを発見したため、ＦＲＥＥ＿ＳＰＡＣＥの値を「１」加算する（＋１だけインクリメントする）。
（Ｓ１３０７）：
分割残容量算出処理部１０３は、現在参照位置を１ＦＡＴエントリ分進め、Ｓ１３０４の処理に戻る。
（Ｓ１３０８）：
算出対象のＦＡＴブロック全体に対する残容量検索処理が完了したため、分割残容量算出処理部１０３は、残容量情報３０１内の算出対象のＦＡＴブロックの残容量のフィールドにＦＲＥE＿ＳＰＡＣＥの値を格納し、ステータスを「１」に設定する。図１４は、番号０のＦＡＴブロックに対する残容量情報３０１を更新した場合の例を示している。この例では、番号０のＦＡＴブロックに含まれる残容量が３７００クラスタであった場合を示している。
（Ｓ１３０９）：
分割残容量算出処理部１０３は、残容量情報３０１に格納された全ＦＡＴブロックの残容量のフィールドに格納された値の総和を取り、残容量としてアプリケーション制御部１０１に通知して処理を終了する。
【００４７】
このように、本実施形態における残容量算出処理では、アプリケーション制御部１０１から指定された１つのＦＡＴブロックに対する残容量算出処理を実施し、それ以前に残容量算出が完了している全てのＦＡＴブロックの残容量の総和をアプリケーション制御部１０１に返す。これにより、ＦＡＴ（２０５、２０６）のサイズが大きい場合でも、ＦＡＴ（２０５、２０６）全体の残容量算出処理が完了するまで待つことなく、アプリケーション制御部１０１に処理を返すことが可能となる。
また、残容量算出処理は、必ずしも１つのＦＡＴブロックに対してのみ実施するのではなく、アプリケーション制御部１０１からの指定に応じて、２つ以上のＦＡＴブロックをまとめて処理しても良い。この場合、Ｓ１３０１からＳ１３０８までの処理を、アプリケーション制御部１０１が指定した複数のＦＡＴブロックに対して繰り返し実施し（アプリケーション制御部１０１が指定したＦＡＴブロックの数だけＳ１３０１からＳ１３０８までの処理を繰り返し実施し）、最後にＳ１３０９の処理により、全ＦＡＴブロックの残容量の総和を取るようにする。
【００４８】
（１．６：アプリケーション制御部１０１とファイルシステム制御部１０２間の制御シーケンス）
続いて、図１５を用いて、アプリケーション制御部１０１とファイルシステム制御部１０２との間の制御シーケンスの一例について説明する。
（Ｓ１５０１）：
まず始めに、アプリケーション制御部１０１は、ファイルシステム制御部１０２にマウント処理の実施を要求する。
（Ｓ１５０２）：
ファイルシステム制御部１０２は、図９で説明したマウント処理を実施した後、処理が完了した旨をアプリケーション制御部１０１に通知する。
（Ｓ１５０３）：
マウント処理に成功した場合、アプリケーション制御部１０１は、ファイルシステム制御部１０２にファイルシステム情報取得処理の実施を要求する。
（Ｓ１５０４）：
ファイルシステム制御部１０２は、図１１で説明したファイルシステム情報取得処理を実施した後、ファイルシステム情報３０２をアプリケーション制御部１０１に通知する。
（Ｓ１５０５）：
ファイルシステム情報取得処理に成功した場合、アプリケーション制御部１０１は、ファイルシステム制御部１０２にＦＡＴブロック＿０の残容量算出処理の実施を要求する。なお、ＦＡＴブロック番号Ｋ（Ｋは、Ｋ≧０の整数）のＦＡＴブロックを「ＦＡＴブロック＿Ｋ」と表記することとする。
（Ｓ１５０６）：
ファイルシステム制御部１０２内の分割残容量算出処理部１０３は、図１３で説明した残容量算出処理を実施した後、残容量をアプリケーション制御部１０１に通知する。この時点では、ＦＡＴブロック＿０に対する残容量算出処理しか完了していないため、アプリケーション制御部１０１に通知される残容量は、ＦＡＴブロック＿０に含まれるもののみとなる。ここで、アプリケーション制御部１０１は、通知された残容量に十分な空き容量が存在するか否か判定し、存在すると判定した場合には記録準備が完了したものとし、必要に応じてファイルデータの書き込みを開始する。例えば、アクセスモジュール１を備えるデジタルスチルカメラの場合、通知された残容量が静止画１枚以上の容量であった場合、静止画の撮影を開始できると判断し、アクセスモジュール１は、ユーザに対して静止画撮影を行う準備が完了した旨を通知し、当該デジタルスチルカメラは、撮影待ち状態に入る。
（Ｓ１５０７）：
続いて、アプリケーション制御部１０１は、ファイルシステム制御部１０２にＦＡＴブロック＿１の残容量算出処理の実施を要求する。
（Ｓ１５０８）：
Ｓ１５０６と同様に、ファイルシステム制御部１０２内の分割残容量算出処理部１０３は、図１３で説明した残容量算出処理を実施した後、残容量をアプリケーション制御部１０１に通知する。この時点で、ＦＡＴブロック＿０、ＦＡＴブロック＿１の残容量算出処理が完了しているため、アプリケーション制御部１０１に通知される残容量は、ＦＡＴブロック＿０、ＦＡＴブロック＿１に含まれるものの総和となる。
（Ｓ１５０９）：
以下同様に、アプリケーション制御部１０１は、ＦＡＴブロック＿（Ｎ−１）まで繰り返しファイルシステム制御部１０２に残容量算出処理の実施を要求する。
（Ｓ１５１０）：
ファイルシステム制御部１０２内の分割残容量算出処理部１０３は、指定されたＦＡＴブロックに対して、図１３で説明した残容量算出処理を実施した後、残容量をアプリケーション制御部１０１に通知する。この時点で、全てのＦＡＴブロックに対する残容量算出処理が完了しているため、アプリケーション制御部１０１に通知される残容量は、全ＦＡＴブロックに含まれるものの総和となる。
【００４９】
図１６は、Ｓ１５１０まで処理が完了した後の残容量情報３０１の一例を示した図である。図１６に示すように、Ｓ１５１０まで処理が完了すると、全ＦＡＴブロックの“ステータス”が「１」に設定され、“残容量”には、各ＦＡＴブロックに含まれる残容量の値が格納される。
以上のように、本実施形態におけるアクセスモジュール１内の分割残容量算出処理部１０３は、ＦＡＴ（２０５、２０６）を固定長ブロック単位で管理し、この固定長ブロック単位に分割して残容量算出処理を実施する。これにより、アプリケーション制御部１０１は、必要最小限の残容量が存在することを確認できた時点で記録準備を完了し、ファイルデータの記録を開始することができる。そのため、従来のようにＦＡＴ（２０５、２０６）全体に対する残容量算出処理の実施完了を待つことなく記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。
【００５０】
尚、本発明を上記の実施形態に基づいて説明してきたが、本発明は、上記の実施形態に限定されないのは勿論である。本発明の趣旨を逸脱しない範囲で実施変更することができる。本実施形態で記載された数値は一例であり、他の値を使用しても良い。例えば、残容量情報３０１に含まれる“ステータス”に格納する値として、０、１、２を使用する場合の例について説明したが、その他の値を用いても良いし、ファイルシステム種別を示す文字列を格納するようにしても良い。
また、本実施形態で説明した残容量情報３０１、ファイルシステム情報３０２の構成は、一例であり、本発明の趣旨を逸脱しない範囲でその他の情報を追加しても良いし、本実施形態で説明された情報をその他の情報に置き換えても良い。
また、図１５の例では、先頭のＦＡＴブロックから終端のＦＡＴブロックへ順に残容量算出処理を実施していく場合の例について説明したが、その他の順番で実施しても良い。例えば、図１７のように、最初に終端のＦＡＴブロックの残容量算出処理を実施した後、先頭のＦＡＴブロックから（終端−１）番目のＦＡＴブロックの残容量算出処理を実施するようにしても良い。通常ファイルデータを記録する際にはＦＡＴ（２０５、２０６）の先頭から空きクラスタを検索し、見つかった空きクラスタにデータを記録していくことが多いことから、ＦＡＴ（２０５、２０６）終端付近には空きクラスタが多数含まれる場合が多い。そのため、このように終端のＦＡＴブロックから先頭のＦＡＴブロックに向かって順次、残容量算出処理を実施することにより、必要最低限の残容量を高速に取得できる可能性が高くなり、本発明の効果をより高めることが可能となる。
【００５１】
しかしながら、毎回終端のＦＡＴブロックを優先的に残容量算出した場合、全ＦＡＴブロックの残容量算出が完了する前にファイルデータが記録されると終端のＦＡＴブロックにファイルデータが記録され、終端のＦＡＴブロックの残容量が減少し、必要最低限の残容量を高速に取得できる可能性が徐々に低下することになる。この場合、アクセスモジュール１内にファイルデータ用のバッファがＲＡＭ１２に十分に存在すれば、図１８のような制御シーケンスを取ることにより、この問題を回避することが可能となる。
図１８の制御シーケンスが図１７の制御シーケンスと異なる点は、Ｓ１８０６の直後にアプリケーション制御部１０１が記録準備完了と判断した後、すぐに情報記録モジュール２にファイルデータを記録し始めるのではなく、全ＦＡＴブロックに対する残容量算出処理が完了するまでアクセスモジュール１内のＲＡＭ１２上にファイルデータを保持し、全ＦＡＴブロックに対する残容量算出処理が完了した後、実際に情報記録モジュール２にファイルデータを記録する点である。
【００５２】
このようにすることにより、実際に情報記録モジュール２にファイルデータを記録する時点では、全ＦＡＴブロックの残容量算出処理が完了していることから、先頭のＦＡＴブロックに含まれる空きクラスタにファイルデータを記録することが可能となる。そのため、終端のＦＡＴブロックに含まれる空きクラスタは、終端のＦＡＴブロック以外のＦＡＴブロックに含まれる空きクラスタがなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
なお、図１８は、Ｓ１８０７〜Ｓ１８０９の処理が、ＦＡＴブロック＿０からＦＡＴブロック＿（Ｎ−２）の順に、すなわち、ＦＡＴブロック番号の昇順にＦＡＴブロックごとの残容量算出処理を行う場合について示している。しかし、これに限定されることはなく、例えば、Ｓ１８０７〜Ｓ１８０９の処理が、ＦＡＴブロック＿（Ｎ−２）からＦＡＴブロック＿０の順に、すなわち、ＦＡＴブロック番号の降順にＦＡＴブロックごとの残容量算出処理を行うものであってもよい。
【００５３】
また、図１８の場合において、情報記録モジュール２への記録開始以降の処理は、上記に示したように、先頭のＦＡＴブロックに含まれる空きクラスタから順番に（昇順に）見つかった空きクラスタにファイルデータを記録することが好ましいが、これに限定されることはなく、終端のＦＡＴブロック以外の任意のＦＡＴブロックに含まれる空きクラスタから順番にファイルデータを記録するようにしてもよい。例えば、情報記録モジュール２への記録開始以降の処理は、２番目のＦＡＴブロックに含まれる空きクラスタから順番に（昇順に）見つかった空きクラスタにファイルデータを記録するようにしてもよい。
また、本実施形態では、残容量を算出する対象のＦＡＴブロックの番号をアプリケーション制御部１０１がファイルシステム制御部１０２に指定する場合の例について説明したが、その他の情報を用いても構わない。例えば、ＦＡＴ（２０５、２０６）における残容量算出対象の部分を特定できる情報として、探索開始クラスタ番号と探索終了クラスタ番号との組で指定しても良い。この場合、指定されたクラスタ番号の範囲を含むＦＡＴブロックを、残容量算出対象とすることにより本実施形態で説明した処理を適用することが可能となる。同様に、ＦＡＴブロックを範囲で指定するために、探索開始ＦＡＴブロック番号と探索終了ＦＡＴブロック番号との組で指定しても良い。更に、アプリケーション制御部１０１が必要とする残容量の大きさを指定しても良い。この場合、ファイルシステム制御部１０２は、任意のＦＡＴブロックに対して、アプリケーション制御部１０１により指定された残容量以上の残容量を取得するまで自動的に分割残容量算出処理を実施していく。
【００５４】
また、本実施形態では、ＦＡＴファイルシステムを用いる場合の例について説明したが、ＵＤＦ（Ｕｎｉｖｅｒｓａｌ  Ｄｉｓｋ  Ｆｏｒｍａｔ）ファイルシステム等の、その他のファイルシステムに本発明を適用しても良い。例えば、ＵＤＦファイルシステムでは、ＦＡＴ（２０５、２０６）に相当する領域管理情報としてＡｌｌｏｃａｔｉｏｎ  Ｂｉｔｍａｐを保持している。このＡｌｌｏｃａｔｉｏｎ  Ｂｉｔｍａｐに含まれる各ビットが各々１論理ブロックの使用状況を示しており、Ａｌｌｏｃａｔｉｏｎ  ＢｉｔｍａｐはＵＤＦファイルシステムが管理している全論理ブロックの数のビット情報を含むビットマップ情報となっている。即ち、このＡｌｌｏｃａｔｉｏｎ  ＢｉｔｍａｐもＦＡＴ（２０５、２０６）同様に総容量に比例する大きさとなるため、ＵＤＦファイルシステムにおいて、本発明を適用することで、分割して残容量を算出することができ、その結果、ファイルシステムの初期化から記録開始までにかかる時間を短縮することが可能である。
【００５５】
また、図１３の残容量算出処理手順では、毎回ＦＡＴ（２０５、２０６）をＲＡＭ１２上に読み出す場合の例について説明したが、図９で説明したマウント処理のタイミング等で全てのＦＡＴ（２０５、２０６）をＲＡＭ１２上に読み出している場合には、不揮発性記憶システム１００において、残容量算出処理時にＦＡＴ（２０５、２０６）を読み出す必要がなく、より高速に残容量算出処理を実施することが可能となる。
また、上記では、本実施形態における残容量情報３０１は、マウント処理時に初期化され、対象ＦＡＴブロックに対する残容量算出処理が実施される際に情報が更新される場合の例について説明した。しかしながら、実際には、ファイルデータの記録や、ファイルの削除等を行うと残容量の情報が変化するため、これらの処理が発生すると、残容量情報３０１と実際の残容量との間に不整合が生じる。この場合、不整合が生じていることをファイルシステム制御部１０２が管理し、アプリケーション制御部１０１が残容量を再度参照する際に残容量を再度算出するという方法が考えられるが、頻繁に残容量が増減する場合には、残容量算出処理のオーバーヘッドが大きくなるという問題が生じる。この場合、ファイルデータ記録やファイル削除等のファイルシステムの各種処理を実施する際に、アクセスモジュール１において、新しく割り当てた、あるいは解放した領域の増減を残容量情報に逐次更新することにより、常に最新の残容量が残容量情報３０１に保持されるようにし、残容量の再算出を不要とする工夫を実施すると、更に効果的である。また、この処理では、アクセスモジュール１内のＲＡＭ１２上の残容量情報３０１を更新するのみで、情報記録モジュール２に対する記録処理は発生しないことから、特許文献１で提案されている従来方法に比べ、高速に残容量情報３０１を更新することが可能となる。
【００５６】
［他の実施形態］
なお、上記実施形態で説明した不揮発性記憶システム、アクセスモジュール、情報記録モジュールにおいて、各ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。
なお、ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【００５７】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェアにより実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る不揮発性記憶システム、アクセスモジュール、情報記録モジュールをハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【産業上の利用可能性】
【００５８】
本発明に関わるアクセスモジュール１は、ファイルシステムにより管理されている情報記録モジュール２内の残容量を算出する分割残容量算出処理部１０３を含む。分割残容量算出処理部１０３は、ファイルシステムの領域管理情報を固定長ブロック単位で管理し、
この固定長ブロック単位に分割して残容量算出処理を実施する。これにより必要最小限の残容量が存在することを確認できた時点で記録準備を完了し、ファイルデータの記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。このようなアクセスモジュール１は、音楽や静止画、動画などのデジタルコンテンツを取り扱う機器に最適であり、ＰＣアプリケーション、オーディオレコーダ、ＤＶＤレコーダ、ＨＤＤレコーダ、ムービー、デジタルスチルカメラ、携帯電話端末等として利用することができる。
【符号の説明】
【００５９】
１００  不揮発性記憶システム
１  アクセスモジュール（アクセス装置）
２  情報記録モジュール（情報記録装置）
１１，２２  ＣＰＵ
１２，２３  ＲＡＭ
１３  情報記録モジュールインタフェース
１４，２４  ＲＯＭ
２１  アクセスモジュールインタフェース
２５  不揮発性メモリ
１０１  アプリケーション制御部
１０２  ファイルシステム制御部
１０３  分割残容量算出処理部
１０４  情報記録モジュールアクセス部
１０５  残容量情報格納部
２０１  ファイルシステム管理情報領域
２０２  ユーザデータ領域
２０３  マスターブートレコード・パーティションテーブル
２０４  パーティションブートセクタ
２０５，２０６  ＦＡＴ
２０７  ルートディレクトリエントリ
２０８  ディレクトリエントリ
３０１  残容量情報
３０２  ファイルシステム情報
【図１】
2009150810.tif 000003
【図２】
2009150810.tif 000004
【図３】
2009150810.tif 000005
【図４】
2009150810.tif 000006
【図５】
2009150810.tif 000007
【図６】
2009150810.tif 000008
【図７】
2009150810.tif 000009
【図８】
2009150810.tif 000010
【図９】
2009150810.tif 000011
【図１０】
2009150810.tif 000012
【図１１】
2009150810.tif 000013
【図１２】
2009150810.tif 000014
【図１３】
2009150810.tif 000015
【図１４】
2009150810.tif 000016
【図１５】
2009150810.tif 000017
【図１６】
2009150810.tif 000018
【図１７】
2009150810.tif 000019
【図１８】
2009150810.tif 000020
【手続補正書】
【提出日】平成21年12月24日(2009.12.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される前記領域管理情報を、前記固定長ブロック領域ごとに参照し、前記固定長ブロック領域ごとに前記固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより、前記分割残容量が算出される度に、前記固定長ブロック領域ごとに算出された前記分割残容量を合計することで、算出済み総残容量を算出し、算出した前記算出済み総残容量と所定の必要残容量とを比較し、前記算出済み総残容量が前記必要残容量以上となった時点で、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備える残容量算出方法。
【請求項２】
前記分割残容量算出ステップは、
先頭の前記固定長ブロック領域から順に、前記固定長ブロック領域ごとに、前記分割残容量を算出する、
請求項１記載の残容量算出方法。
【請求項３】
前記分割残容量算出ステップは、
終端の前記固定長ブロック領域を第１の処理対象として、前記分割残容量を算出する、
請求項１記載の残容量算出方法。
【請求項４】
前記分割残容量算出ステップは、
前記アクセス装置内のメモリ上に、前記各固定長ブロック領域に対する残容量算出処理の実施の有無を示すステータスと、前記各固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である前記分割残容量の情報と、を含む残容量情報を格納する、
請求項１に記載の残容量算出方法。
【請求項５】
ファイルアクセスにより前記分割残容量に増減が発生した時点で、前記残容量情報を逐次更新する残容量情報更新ステップを更に備える、
請求項４記載の残容量算出方法。
【請求項６】
前記ファイルアクセス可否判定ステップは、
前記ファイルアクセス処理の開始を許可した後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持するステップと、
前記分割残容量が算出されていない残りの前記固定長ブロック領域に対して、前記分割残容量を算出する処理を実行するよう前記分割残容量算出ステップに要求するステップと、
全ての前記固定長ブロック領域に対して、前記分割残容量の算出処理が完了した後に、前記アクセス装置内の前記メモリに保持した前記ファイルデータを前記不揮発性メモリに記録するステップと、
を更に備える、
請求項１記載の残容量算出方法。
【請求項７】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される前記領域管理情報についての情報であるファイルシステム情報を取得するファイルシステム情報取得ステップと、
第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、前記第Ｋ固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより算出された前記分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、前記第Ｋ固定長ブロック領域で管理される前記分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する算出済み総残容量算出ステップと、
前記算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する比較ステップと、
前記比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備え、
第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に前記固定長ブロック領域を処理対象として、前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記比較ステップと、前記ファイルアクセス可否判定ステップと、を繰り返し実行し、
第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、前記比較ステップが、前記算出済み総残容量ＳＵＭが前記必要残容量以上となったとき、
（１）前記ファイルアクセス可否判定ステップは、前記ファイルアクセス処理の開始を許可し、
（２）第０固定長ブロック領域から第（Ｎ−ｍ−１）固定長ブロック領域を処理対象として、固定長ブロック番号の昇順に、前記前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記ファイルアクセス処理の開始が許可された後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての前記固定長ブロック領域に対して、前記分割残容量の算出処理が完了し、全ての前記固定長ブロック領域に対する前記算出済み総残容量が算出された後に、前記アクセス装置内の前記メモリに保持した前記ファイルデータを前記不揮発性メモリに記録する、
残容量算出方法。
【請求項８】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される前記領域管理情報についての情報であるファイルシステム情報を取得するファイルシステム情報取得ステップと、
第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、前記第Ｋ固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより算出された前記分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、前記第Ｋ固定長ブロック領域で管理される前記分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する算出済み総残容量算出ステップと、
前記算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する比較ステップと、
前記比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備え、
第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に前記固定長ブロック領域を処理対象として、前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記比較ステップと、前記ファイルアクセス可否判定ステップと、を繰り返し実行し、
第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、前記比較ステップが、前記算出済み総残容量ＳＵＭが前記必要残容量以上となったとき、
（１）前記ファイルアクセス可否判定ステップは、前記ファイルアクセス処理の開始を許可し、
（２）第（Ｎ−ｍ−１）固定長ブロックから第０固定長ブロックを処理対象として、固定長ブロック番号の降順に、前記前記分割残容量算出ステップと、前記算出済み総残容量算出ステップと、前記ファイルアクセス処理の開始が許可された後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての前記固定長ブロック領域に対して、前記分割残容量の算出処理が完了し、全ての前記固定長ブロック領域に対する前記算出済み総残容量が算出された後に、前記アクセス装置内の前記メモリに保持した前記ファイルデータを前記不揮発性メモリに記録する、
残容量算出方法。
【請求項９】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置であって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される前記領域管理情報を、前記固定長ブロック領域ごとに参照し、前記固定長ブロック領域ごとに前記固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する分割残容量算出処理部と、
前記分割残容量算出処理部に対し前記分割残容量の算出処理の実行を要求するアプリケーション制御部と、
を備え、
前記分割残容量算出処理部が固定長ブロック領域ごとの前記分割残容量を算出する度に、前記アプリケーション制御部が、前記固定長ブロック領域ごとに算出された前記分割残容量を合計することで、算出済み総残容量を算出し、算出した前記算出済み総残容量と所定の必要残容量とを比較し、前記算出済み総残容量が前記必要残容量以上の残容量であると判定された時点で、ファイルアクセス処理の開始を許可する、
アクセス装置。
【請求項１０】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象として１つ以上の前記固定長ブロック領域を指定し、
前記分割残容量算出処理部は、
前記指定された１つ以上の固定長ブロック領域に対して、前記分割残容量の算出処理を実行する、
請求項９に記載のアクセス装置。
【請求項１１】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域として、先頭の前記固定長ブロック領域から順に、１つ以上の前記固定長ブロック領域を指定する、
請求項１０に記載のアクセス装置。
【請求項１２】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域として、終端の前記固定長ブロック領域を第１に指定する、
請求項１０に記載のアクセス装置。
【請求項１３】
前記分割残容量算出処理部は、
前記アクセス装置内のメモリ上に、前記各固定長ブロック領域に対する前記分割残容量の算出処理の実施の有無を示すステータスと、前記各固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である前記分割残容量の情報と、を含む残容量情報を格納する、
請求項９に記載のアクセス装置。
【請求項１４】
前記分割残容量算出処理部は、
ファイルアクセスにより前記分割残容量に増減が発生した時点で、前記分割残容量の増減に関する情報を更新する、
請求項１３に記載のアクセス装置。
【請求項１５】
前記アプリケーション制御部は、
前記ファイルアクセス処理の開始を許可した後、生成されたファイルデータを前記アクセス装置内のメモリ上に一時保持し、全ての前記固定長ブロック領域に対する残容量算出処理が完了した後に、前記保持したファイルデータを前記不揮発性メモリに記録する、
請求項９に記載のアクセス装置。
【請求項１６】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と前記領域の大きさに関する情報を指定し、
前記分割残容量算出処理部は、
前記指定された算出対象領域を管理対象とする１つ以上の前記固定長ブロック領域に対して前記分割残容量の算出処理を実行する、
請求項９に記載のアクセス装置。
【請求項１７】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と前記領域の大きさに関する情報として、ファイルシステムが管理する領域の先頭から順に、算出対象領域の前記開始クラスタ番号と前記領域の大きさに関する情報を指定する、
請求項１６に記載のアクセス装置。
【請求項１８】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、ファイルシステムが管理する領域の終端領域を、第１に、前記分割残容量の算出処理の処理対象とし、算出対象領域の開始クラスタ番号と前記領域の大きさに関する情報として、前記終端領域の開始クラスタ番号と前記終端領域の大きさに関する情報を第１に指定する、
請求項１６に記載のアクセス装置。
【請求項１９】
前記アプリケーション制御部は、
前記分割残容量算出処理部に対して、前記分割残容量の算出処理の実行を要求する際に、前記所定の必要残容量を指定し、
前記分割残容量算出処理部は、
前記指定された所定の必要残容量以上の残容量が算出されるまで、前記固定長ブロック領域単位で前記残容量の算出処理を繰り返す、
請求項９に記載のアクセス装置。
【請求項２０】
前記分割残容量算出処理部は、
前記指定された所定の必要残容量以上の残容量が算出されるまで、前記固定長ブロック領域単位で前記分割残容量の算出処理を繰り返す際に、前記固定長ブロック領域の先頭から順に前記分割残容量の算出処理を実行する、
請求項１９に記載のアクセス装置。
【請求項２１】
前記分割残容量算出処理部は、
前記指定された所定の必要残容量以上の残容量が算出されるまで、前記固定長ブロック領域単位で前記分割残容量の算出処理を繰り返す際に、前記固定長ブロック領域の終端ブロック領域に対する前記分割残容量の算出処理を、第１に実行する、
請求項１９に記載のアクセス装置。
【請求項２２】
ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法をコンピュータに実行させるプログラムであって、
前記不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される前記領域管理情報を、前記固定長ブロック領域ごとに参照し、前記固定長ブロック領域ごとに前記固定長ブロック領域で管理される前記不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する分割残容量算出ステップと、
前記分割残容量算出ステップにより、前記分割残容量が算出される度に、前記固定長ブロック領域ごとに算出された前記分割残容量を合計することで、算出済み総残容量を算出し、算出した前記算出済み総残容量と所定の必要残容量とを比較し、前記算出済み総残容量が前記必要残容量以上となった時点で、ファイルアクセス処理の開始を許可するファイルアクセス可否判定ステップと、
を備える残容量算出方法をコンピュータに実行させるプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを不揮発性メモリに格納し、ファイルとして管理するアクセス装置（アクセスモジュール）、及び残容量算出方法に関する。
【背景技術】
【０００２】
音楽コンテンツや、映像データ等のデジタルデータを記録する記録媒体には、磁気ディスク、光ディスク、光磁気ディスク等、様々な種類が存在する。これら記録媒体の内、記録素子にＦｌａｓｈＲＯＭ等の半導体メモリを使用したメモリカードは、記録媒体の小型化が図れることから、ムービーやデジタルスチルカメラ、携帯電話端末等、小型の携帯機器を中心に急速に普及している。更に最近では、ＦｌａｓｈＲＯＭ等の半導体メモリを機器に内蔵してハードディスクの代わりに使用するなど、従来のメモリカードのような着脱可能なリムーバブルメディアとしての用途のみならず、機器内蔵ストレージとしての用途でも半導体メモリが使用されるようになってきた。
このようなメモリカードや機器内蔵ストレージには、主にＮＡＮＤ型フラッシュメモリと呼ばれる半導体素子が使用されている。ＮＡＮＤ型フラッシュメモリは、既に記録されたデータを一旦消去した後、再度別のデータを記録することが可能な記録素子であり、従来のハードディスクと同様に、複数回書き換え可能な情報記録装置を構成することが可能である。
【０００３】
従来、メモリカードや機器内蔵ストレージに格納されたデータは、ファイルシステムにより管理されている。データをファイルシステムにより管理することで、同一のファイルシステムを解釈する機器間でデータをファイルとして共有することが可能となり、ユーザは自分の格納したデータを複数の機器間で容易に参照したり、コピーしたりすることが可能となる。
従来最も広く使用されているファイルシステムは、ＦＡＴファイルシステムと呼ばれるものである。ＦＡＴファイルシステムは、領域管理をファイルアロケーションテーブル（ＦＡＴ）と呼ばれるテーブルで一元管理するという特徴を持っており、比較的構造がシンプルで実装が容易なことから、フレキシブルディスクやＰＣのハードディスク、メモリカードなどのファイルシステムとして広く使用されている。
【０００４】
図２にＦＡＴファイルシステムの構成を示す。ＦＡＴファイルシステムでは、ファイルアロケーションテーブル内の管理単位のビット幅の違いにより、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２などの種類が存在するが、いずれのＦＡＴファイルシステムにおいても、ファイルアロケーションテーブルによる領域管理方法は、ほぼ同じであり、以下では、ＦＡＴ１６を例に説明する。
図２に示すように、論理アドレス空間の先頭には、領域割り当て単位やファイルシステムが管理する領域の大きさ等、ファイルシステムの管理情報が格納される領域であるファイルシステム管理情報領域２０１が存在する。
このファイルシステム管理情報領域２０１には、マスターブートレコード・パーティションテーブル２０３、パーティションブートセクタ２０４、ＦＡＴ（２０５、２０６）、ルートディレクトリエントリ２０７と呼ばれるファイルシステムの管理情報が含まれ、ユーザデータ領域２０２を管理するために必要な情報が各々格納されている。
【０００５】
マスターブートレコード・パーティションテーブル２０３は、ファイルシステムが管理する論理アドレス空間上の領域を複数のパーティションと呼ばれる領域に分割して管理するための情報が格納される領域である。
パーティションブートセクタ２０４は、パーティション内の領域管理単位の大きさなど、１つのパーティション内の管理情報が格納される領域である。ＦＡＴ（２０５、２０６）は、ファイルに含まれるデータの格納位置に関する情報が格納される領域であり、通常、同じ情報を持つ２つのＦＡＴ（２０５、２０６）が存在し、一方のＦＡＴ（２０５、２０６）が破損したとしても他方のＦＡＴ（２０５、２０６）によりファイルにアクセスできるよう二重化されている。
ルートディレクトリエントリ２０７は、ルートディレクトリ直下に存在するファイル、ディレクトリの情報（ディレクトリエントリ）が格納される領域である。
【０００６】
また、ＦＡＴファイルシステムでは、このファイルシステム管理情報領域２０１に引き続く領域にファイル本体のデータなどを格納するユーザデータ領域２０２が存在する。ユーザデータ領域２０２は、５１２バイトから数十ＫＢ程度の大きさを持つクラスタと呼ばれる管理単位毎に分割管理されており、各クラスタにはファイルに含まれるデータが格納されている。多くのデータを格納するファイルは、複数のクラスタに跨ってデータを格納しており、各クラスタ間の繋がりは、ＦＡＴ（２０５、２０６）に格納されたリンク情報により管理されている。また、ルートディレクトリ直下のディレクトリ内に存在するファイル、サブディレクトリの情報（ディレクトリエントリ）は、このユーザデータ領域２０２の一部を利用して格納される。
図３は、ＦＡＴ１６のディレクトリエントリの構成を示した図である。
【０００７】
ディレクトリエントリ２０８は、１つのファイル、ディレクトリ毎に３２バイトのディレクトリエントリ２０８が割り当てられ、ファイル、ディレクトリに関する情報を格納している。すなわち、１つのファイルやディレクトリが追加される度に３２バイトのディレクトリエントリ２０８の情報が新規に作成され、ルートディレクトリエントリ２０７の領域、あるいはユーザデータ領域２０２に記録される。
ディレクトリエントリ２０８の先頭８バイトには、ファイルやディレクトリの名称が格納される。続く３バイトには、拡張子が格納される。続く１バイトには、ファイル・ディレクトリの種別を識別するフラグや、ファイル・ディレクトリがリードオンリーか否かを識別するフラグ等の属性情報が格納される。また、ファイル・ディレクトリの最終更新日時の情報や、ファイル・ディレクトリデータの実体が格納されているクラスタの開始位置を示す開始クラスタ番号、ファイルサイズのバイト数等が格納される。
【０００８】
このようにディレクトリエントリ２０８には、データ実体が格納されている領域の最初の１クラスタの位置を示す情報しか含まれておらず、データ実体の大きさが１クラスタよりも大きい場合において２クラスタ目以降のデータがどの領域に格納されているかについては、ＦＡＴ（２０５、２０６）で管理されている。
図４は、ＦＡＴ１６のＦＡＴ（２０５、２０６）の構成を示した図である。
ＦＡＴ１６では、ＦＡＴ（２０５、２０６）は、２バイト（１６ビット）の情報を１つのＦＡＴエントリとして管理しており、１つのＦＡＴエントリが１つのクラスタの状態を示している。すなわち、ユーザデータ領域２０２にＭ個のクラスタが存在する場合、ＦＡＴエントリもＭ個存在することから、ＦＡＴ（２０５、２０６）の１つ分の大きさは約２×Ｍバイトとなる。但し、先頭２ＦＡＴエントリ分は、ＦＡＴの先頭を示す固定の値（０ｘＦ８ＦＦ、０ｘＦＦＦＦ）がシグネチャとして記録されるため、ユーザデータ領域２０２の先頭クラスタに対応するＦＡＴエントリはＦＡＴ（２０５、２０６）の４バイト目、５バイト目の２バイトに存在している。ＦＡＴ先頭に存在する４バイトのシグネチャをＦＡＴエントリの０番、１番とすると、４バイト目、５バイト目の２バイトの位置は２番目になることから、ユーザデータ領域２０２の先頭クラスタは、便宜上クラスタ番号＝“２”と割り当てられており、クラスタ番号＝“０”、“１”に対応するクラスタは存在しないことになっている。
【０００９】
更に、各ＦＡＴエントリは、各々対応するクラスタの状態（使用中、空き、欠陥）、及びリンク先のクラスタ番号を示す。例えば、図４において、対応クラスタ番号２のＦＡＴエントリは０ｘ０００３（十進数では“３”）に設定されており、クラスタ番号２のクラスタ内に格納されたデータの続きのデータは、クラスタ番号３のクラスタ内に格納されていることを意味する。同様に、対応クラスタ番号３のＦＡＴエントリは、０ｘ０００４（十進数では“４”）に設定されており、クラスタ番号３のクラスタ内に格納されたデータの続きのデータは、クラスタ番号４のクラスタ内に格納されていることを意味する。また、対応クラスタ番号６のＦＡＴエントリは０ｘＦＦＦＦに設定されている。これは、次のリンク先が存在せず、リンクが終端していることを意味する。よって、図４の例では、クラスタ番号２、３、４、５、６の順に一連のファイルデータが格納されていることになる。また、対応クラスタ番号７のＦＡＴエントリは０ｘ００００に設定されている。これは対応するクラスタが使用されておらず、“空き”の状態であることを意味する。また、対応クラスタ番号（Ｍ＋１）のＦＡＴエントリは０ｘＦＦＦ７に設定されている。これは、対応するクラスタが物理的に壊れていて記録が出来ない状態である等の欠陥状態であることを意味する。
【００１０】
以上をまとめると、０ｘ００００、０ｘＦＦＦＦ、０ｘＦＦＦ７の３つのＦＡＴエントリ値は各々特殊な意味を持ち、０ｘ０００２から０ｘＦＦＦ６までのＦＡＴエントリ値がリンク先クラスタ番号として使用されることになる。また、それ以外の０ｘ０００１、０ｘＦＦＦ８から０ｘＦＦＦＥまでの値は予約されており、通常は使用されない値になっている。
このようにＦＡＴ（２０５、２０６）は、ファイルデータが格納されている領域のリンク情報と共に、各クラスタの使用状態も管理している。そのため、ファイルシステムで管理されている領域内に存在する残容量は、ＦＡＴ（２０５、２０６）を参照し、空きクラスタの個数をカウントすることにより算出される。図５を用いて、この残容量算出処理について説明する。
【００１１】
≪残容量算出処理≫
（Ｓ５０１）：
アクセスモジュールは、残容量を保持する変数（ＦＲＥＥ＿ＳＰＡＣＥ）を「０」に初期化する。
（Ｓ５０２）：
アクセスモジュールは、アクセスモジュールのＲＡＭ上に読み出されたＦＡＴ（２０５、２０６）のクラスタ番号２に対応するＦＡＴエントリの位置に、現在参照位置を設定する。ここでは、情報記録モジュールからアクセスモジュールのＲＡＭ上に予めＦＡＴ（２０５、２０６）が読み出されている場合を想定する。
（Ｓ５０３）：
アクセスモジュールは、現在参照位置がＦＡＴ終端まで到達し、ＦＡＴ全体に対して残容量検索の処理が完了しているか判定する。検索が完了している場合には、現在、ＦＲＥＥ＿ＳＰＡＣＥに格納されている値を残容量としてアプリケーション制御部に通知して、処理を終了する。検索が完了していない場合は、Ｓ５０４の処理に進む。
（Ｓ５０４）：
アクセスモジュールは、現在参照位置のＦＡＴエントリが空きクラスタを示すか判定する。
【００１２】
具体的には、ＦＡＴエントリの値が０ｘ００００である場合は空きクラスタであると判定し、それ以外の場合は空きクラスタではないと判定する。
空きクラスタであると判定した場合は、Ｓ５０５の処理に進み、空きクラスタではないと判定した場合は、Ｓ５０６の処理に進む。
（Ｓ５０５）：
空きクラスタが発見されたため、アクセスモジュールは、ＦＲＥＥ＿ＳＰＡＣＥの値を「１」加算する（＋１だけインクリメントする）。
（Ｓ５０６）：
アクセスモジュールは、現在参照位置を１ＦＡＴエントリ分進め、Ｓ５０３の処理に戻る。
【００１３】
例えば、図６に示すようなＦＡＴ（２０５、２０６）を想定した場合、クラスタ番号２に対応するＦＡＴエントリからクラスタ番号３１に対応するＦＡＴエントリまでに存在する空きクラスタの総数は１６クラスタであり、この値が残容量として、アクセスモジュールのアプリケーション制御部に通知される。
このように、残容量算出処理では、全ＦＡＴエントリに対して値を確認し、空きクラスタの個数をカウントする必要があるため、ファイルシステムが管理する総容量が増加するに従いＦＡＴエントリが増加し、残容量算出処理時間が長くなるという問題が生じる。
従来、このような問題を解決する方法として、残容量の情報をパーティションブートセクタ２０４等のファイルシステム管理情報領域２０１に予め保持しておく方法が提案されている（例えば、特許文献１参照）。この方法では、ファイルシステム管理情報領域２０１に格納された残容量の情報を読み出すことにより、従来ＦＡＴ（２０５、２０６）を参照して実施していた残容量算出処理を割愛し、残容量算出処理を含むファイルシステム初期化時間を短縮している。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００７−２１４７８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上記の技術には次のような問題点がある。
上記の方法では、ファイルデータの記録やファイルの削除など、残容量が変化するタイミングで逐次ファイルシステム管理情報領域２０１に格納した残容量の情報を上書きし、更新する必要がある。特に、リムーバブルメディアに対して本技術を適用する場合には、全てのアクセス装置がこの情報更新処理に対応していなければならず、対応していない機器が存在する場合には、ファイルシステム管理情報領域２０１に格納された残容量の情報と、ＦＡＴ（２０５，２０６）上の残容量とが一致せず、矛盾が生じる。
また、機器内蔵ストレージに対して本技術を適用する場合には、不意に電源断が生じた場合等にやはり矛盾が生じる可能性がある。
本発明は、上記問題点に鑑み、ファイルシステムにおいて残容量算出を高速に行い、ファイルシステムの初期化から記録開始までにかかる時間を短縮することが可能なアクセスモジュール、及び残容量算出方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
第１の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、分割残容量算出ステップと、ファイルアクセス可否判定ステップと、を備える。
分割残容量算出ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される領域管理情報を、固定長ブロック領域ごとに参照し、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する。ファイルアクセス可否判定ステップは、分割残容量算出ステップにより、分割残容量が算出される度に、固定長ブロック領域ごとに算出された分割残容量を合計することで、算出済み総残容量を算出し、算出した算出済み総残容量と所定の必要残容量とを比較し、算出済み総残容量が必要残容量以上となった時点で、ファイルアクセス処理の開始を許可する。
【００１７】
この残容量算出方法では、領域管理情報は、固定長ブロック領域単位で管理され、分割残容量算出ステップにより、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量が算出される。これにより、必要最小限の残容量が存在することを確認できた時点で、ファイルアクセス処理を開始させることができる。その結果、全体に対する残容量算出処理の実施完了を待つことなく記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。
第２の発明は、第１の発明であって、分割残容量算出ステップは、先頭の固定長ブロック領域から順に、固定長ブロック領域ごとに、分割残容量を算出する。
第３の発明は、第１の発明であって、分割残容量算出ステップは、終端の固定長ブロック領域を第１の処理対象として、分割残容量を算出する。
【００１８】
この残容量算出方法では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
なお、「第１の処理対象」とは、第１番目の処理対象のことである。
第４の発明は、第１の発明であって、分割残容量算出ステップは、アクセス装置内のメモリ上に、各固定長ブロック領域に対する残容量算出処理の実施の有無を示すステータスと、各固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量の情報と、を含む残容量情報を格納する。
第５の発明は、第４の発明であって、ファイルアクセスにより分割残容量に増減が発生した時点で、残容量情報を逐次更新する残容量情報更新ステップを更に備える。
【００１９】
この残容量算出方法では、残容量情報更新ステップにより、ファイルアクセスにより分割残容量に増減が発生した時点で、残容量情報が逐次更新されるので、残容量情報を常に最新の情報にすることできる。
第６の発明は、第１の発明であって、ファイルアクセス可否判定ステップは、以下のステップを備える。
（１）ファイルアクセス処理の開始を許可した後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持するステップ。
（２）分割残容量が算出されていない残りの固定長ブロック領域に対して、分割残容量を算出する処理を実行するよう分割残容量算出ステップに要求するステップ。
（３）全ての固定長ブロック領域に対して、分割残容量の算出処理が完了した後に、アクセス装置内のメモリに保持したファイルデータを不揮発性メモリに記録するステップ。
【００２０】
この残容量算出方法では、上記（１）〜（３）により、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端以外の固定長ブロック領域（例えば、終端のＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
第７の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、ファイルシステム情報取得ステップと、分割残容量算出ステップと、総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を備える。
【００２１】
ファイルシステム情報取得ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される領域管理情報についての情報であるファイルシステム情報を取得する。分割残容量算出ステップは、第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、第Ｋ固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する。総残容量算出ステップは、分割残容量算出ステップにより算出された分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、第Ｋ固定長ブロック領域で管理される分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する。比較ステップは、算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する。ファイルアクセス可否判定ステップは、比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可する。
【００２２】
そして、第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に固定長ブロック領域を処理対象として、分割残容量算出ステップと、算出済み総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を繰り返し実行する。
そして、第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、比較ステップが、算出済み総残容量ＳＵＭが必要残容量以上となったとき、
（１）ファイルアクセス可否判定ステップは、ファイルアクセス処理の開始を許可し、
（２）第０固定長ブロック領域から第（Ｎ−ｍ−１）固定長ブロック領域を処理対象として、固定長ブロック番号の昇順に、分割残容量算出ステップと、算出済み総残容量算出ステップと、ファイルアクセス処理の開始が許可された後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての固定長ブロック領域に対して、分割残容量の算出処理が完了し、全ての固定長ブロック領域に対する算出済み総残容量が算出された後に、アクセス装置内のメモリに保持したファイルデータを不揮発性メモリに記録する。
【００２３】
この残容量算出方法では、上記処理により、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端以外の固定長ブロック領域（例えば、終端のＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
なお、この残容量算出方法では、上記の順番に実行されることが望ましいが、一部の順序を入れ替えて実行されるものであってもよい。
【００２４】
第８の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法であって、ファイルシステム情報取得ステップと、分割残容量算出ステップと、総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を備える。
ファイルシステム情報取得ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、第０固定長ブロック領域、第１固定長ブロック領域、・・・、第（Ｎ−１）固定長ブロック領域のＮ個（Ｎは自然数）の固定長ブロック領域から構成される領域管理情報についての情報であるファイルシステム情報を取得する。分割残容量算出ステップは、第Ｋ固定長ブロック領域（Ｋは自然数、Ｋ＜Ｎ）に対して、第Ｋ固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量Ｃ（Ｋ）を算出する。総残容量算出ステップは、分割残容量算出ステップにより算出された分割残容量Ｃ（Ｋ）を、算出済み総残容量ＳＵＭに加算することで、第Ｋ固定長ブロック領域で管理される分割残容量Ｃ（Ｋ）を含めた算出済み総残容量ＳＵＭを算出する算出済み。比較ステップは、算出済み総残容量算出ステップにより算出された算出済み総残容量ＳＵＭと所定の必要残容量とを比較する。ファイルアクセス可否判定ステップは、比較ステップでの比較結果に基づいて、ファイルアクセス処理の開始を許可する。
【００２５】
そして、第（Ｎ−１）固定長ブロック領域から固定長ブロック番号の降順に固定長ブロック領域を処理対象として、分割残容量算出ステップと、算出済み総残容量算出ステップと、比較ステップと、ファイルアクセス可否判定ステップと、を繰り返し実行する。
そして、第（Ｎ−ｍ）固定長ブロック領域（ｍは自然数）が処理対象である場合に、比較ステップが、算出済み総残容量ＳＵＭが必要残容量以上となったとき、
（１）ファイルアクセス可否判定ステップは、ファイルアクセス処理の開始を許可し、
（２）第（Ｎ−ｍ−１）固定長ブロックから第０固定長ブロックを処理対象として、固定長ブロック番号の降順に、分割残容量算出ステップと、算出済み総残容量算出ステップと、ファイルアクセス処理の開始が許可された後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持するステップと、を繰り返し実行し、
（３）全ての固定長ブロック領域に対して、分割残容量の算出処理が完了し、全ての固定長ブロック領域に対する算出済み総残容量が算出された後に、アクセス装置内のメモリに保持したファイルデータを不揮発性メモリに記録する。
【００２６】
この残容量算出方法では、上記処理により、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端以外の固定長ブロック領域（例えば、終端のＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
なお、この残容量算出方法では、上記の順番に実行されることが望ましいが、一部の順序を入れ替えて実行されるものであってもよい。
【００２７】
第９の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置であって、分割残容量算出処理部と、アプリケーション制御部と、を備える。
分割残容量算出処理部は、不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される領域管理情報を、固定長ブロック領域ごとに参照し、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する。アプリケーション制御部は、分割残容量算出処理部に対し分割残容量の算出処理の実行を要求する。
そして、分割残容量算出処理部が固定長ブロック領域ごとの分割残容量を算出する度に、アプリケーション制御部が、固定長ブロック領域ごとに算出された分割残容量を合計することで、算出済み総残容量を算出し、算出した算出済み総残容量と所定の必要残容量とを比較し、算出済み総残容量が必要残容量以上の残容量であると判定された時点で、ファイルアクセス処理の開始を許可する。
【００２８】
このアクセス装置では、領域管理情報は、固定長ブロック領域単位で管理され、分割残容量算出部により、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量が算出される。これにより、必要最小限の残容量が存在することを確認できた時点で、ファイルアクセス処理を開始させることができる。その結果、全体に対する残容量算出処理の実施完了を待つことなく記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。
なお、「アクセス装置」は、アクセスモジュールを含む概念である。
第１０の発明は、第９の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象として１つ以上の固定長ブロック領域を指定する。分割残容量算出処理部は、指定された１つ以上の固定長ブロック領域に対して、分割残容量の算出処理を実行する。
【００２９】
第１１の発明は、第１０の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域として、先頭の固定長ブロック領域から順に、１つ以上の固定長ブロック領域を指定する。
第１２の発明は、第１０の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域として、終端の固定長ブロック領域を第１に指定する。
このアクセス装置では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
第１３の発明は、第９の発明であって、分割残容量算出処理部は、アクセス装置内のメモリ上に、各固定長ブロック領域に対する分割残容量の算出処理の実施の有無を示すステータスと、各固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量の情報と、を含む残容量情報を格納する。
【００３０】
第１４の発明は、第１３の発明であって、分割残容量算出処理部は、ファイルアクセスにより分割残容量に増減が発生した時点で、分割残容量の増減に関する情報を更新する。
このアクセス装置では、分割残容量算出処理部により、ファイルアクセスにより分割残容量に増減が発生した時点で、残容量情報が逐次更新されるので、残容量情報を常に最新の情報にすることできる。
第１５の発明は、第９の発明であって、アプリケーション制御部は、ファイルアクセス処理の開始を許可した後、生成されたファイルデータをアクセス装置内のメモリ上に一時保持し、全ての固定長ブロック領域に対する残容量算出処理が完了した後に、保持したファイルデータを不揮発性メモリに記録する。
このアクセス装置では、実際に不揮発性メモリにファイルデータを記録する時点では、全ての固定長ブロック領域について分割残容量の算出処理が完了していることから、例えば、先頭の固定長ブロック領域（例えば、先頭のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）にファイルデータを記録することが可能となる。そのため、終端の固定長ブロック領域（例えば、終端のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）は、終端以外の固定長ブロック領域（例えば、終端のＦＡＴブロック以外のＦＡＴブロック）に含まれる空き領域（例えば、空きクラスタ）がなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
【００３１】
第１６の発明は、第９の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と領域の大きさに関する情報を指定する。分割残容量算出処理部は、指定された算出対象領域を管理対象とする１つ以上の固定長ブロック領域に対して分割残容量の算出処理を実行する。
第１７の発明は、第１６の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、算出対象領域の開始クラスタ番号と領域の大きさに関する情報として、ファイルシステムが管理する領域の先頭から順に、算出対象領域の開始クラスタ番号と領域の大きさに関する情報を指定する。
第１８の発明は、第１６の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、ファイルシステムが管理する領域の終端領域を、第１に、分割残容量の算出処理の処理対象とし、算出対象領域の開始クラスタ番号と領域の大きさに関する情報として、終端領域の開始クラスタ番号と終端領域の大きさに関する情報を第１に指定する。
【００３２】
このアクセス装置では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
第１９の発明は、第９の発明であって、アプリケーション制御部は、分割残容量算出処理部に対して、分割残容量の算出処理の実行を要求する際に、所定の必要残容量を指定する。分割残容量算出処理部は、指定された所定の必要残容量以上の残容量が算出されるまで、固定長ブロック領域単位で残容量の算出処理を繰り返す。
第２０の発明は、第１９の発明であって、分割残容量算出処理部は、指定された所定の必要残容量以上の残容量が算出されるまで、固定長ブロック領域単位で分割残容量の算出処理を繰り返す際に、固定長ブロック領域の先頭から順に分割残容量の算出処理を実行する。
【００３３】
第２１の発明は、第１９の発明であって、分割残容量算出処理部は、指定された所定の必要残容量以上の残容量が算出されるまで、固定長ブロック領域単位で分割残容量の算出処理を繰り返す際に、固定長ブロック領域の終端ブロック領域に対する分割残容量の算出処理を、第１に実行する。
このアクセス装置では、残容量が多い可能性の高い終端の固定長ブロック領域に対して、最初に、分割残容量の算出処理が実施されるので、必要最低限の残容量を高速に取得できる可能性が高くなる。
第２２の発明は、ファイルデータを格納する不揮発性メモリを備える情報記録装置にアクセスするアクセス装置における残容量算出方法をコンピュータに実行させるプログラムである。残容量算出方法は、分割残容量算出ステップと、ファイルアクセス可否判定ステップと、を備える。
【００３４】
分割残容量算出ステップは、不揮発性メモリを管理するファイルシステムの領域管理情報であって、複数の固定長ブロック領域から構成される領域管理情報を、固定長ブロック領域ごとに参照し、固定長ブロック領域ごとに固定長ブロック領域で管理される不揮発性メモリ上の領域に含まれる残容量である分割残容量を算出する。ファイルアクセス可否判定ステップは、分割残容量算出ステップにより、分割残容量が算出される度に、固定長ブロック領域ごとに算出された分割残容量を合計することで、算出済み総残容量を算出し、算出した算出済み総残容量と所定の必要残容量とを比較し、算出済み総残容量が必要残容量以上となった時点で、ファイルアクセス処理の開始を許可する。
これにより、第１の発明と同様の効果を奏するプログラムを実現することができる。
【発明の効果】
【００３５】
本発明によれば、ファイルシステムにおいて残容量算出を高速に行い、ファイルシステムの初期化から記録開始までにかかる時間を短縮することが可能となる。
【図面の簡単な説明】
【００３６】
【図１】第１実施形態におけるアクセスモジュール、及び情報記録モジュールの構成を示した説明図
【図２】ＦＡＴ型ファイルシステムの構成を示した説明図
【図３】ディレクトリエントリの構成を示した説明図
【図４】ＦＡＴの一例を示した説明図
【図５】従来の残容量算出処理手順を示したフローチャート
【図６】ＦＡＴの別の一例を示した説明図
【図７】第１実施形態におけるＦＡＴ管理の一例を示した説明図
【図８】第１実施形態における残容量情報の一例を示した説明図
【図９】第１実施形態におけるマウント処理手順を示したフローチャート
【図１０】第１実施形態におけるマウント処理直後の残容量情報の一例を示した説明図
【図１１】第１実施形態におけるファイルシステム情報取得処理手順を示したフローチャート
【図１２】第１実施形態におけるファイルシステム情報の一例を示した説明図
【図１３】第１実施形態における残容量算出処理手順を示したフローチャート
【図１４】第１実施形態における残容量算出処理直後の残容量情報の一例を示した説明図
【図１５】第１実施形態におけるアプリケーション制御部、ファイルシステム制御部間の制御シーケンスの一例を示した説明図
【図１６】第１実施形態における全ＦＡＴブロックに対する残容量算出処理完了後の残容量情報の一例を示した説明図
【図１７】第１実施形態におけるアプリケーション制御部、ファイルシステム制御部間の制御シーケンスの第２の例を示した説明図
【図１８】第１実施形態におけるアプリケーション制御部、ファイルシステム制御部間の制御シーケンスの第３の例を示した説明図
【発明を実施するための形態】
【００３７】
以下、本発明の実施形態（特に、アクセスモジュール、及び残容量算出方法）について、図面を参照しつつ説明する。
［第１実施形態］
（１．１：全体構成）
図１は、第１実施形態における不揮発性記憶システム１００の概略構成図である。不揮発性記憶システム１００は、アクセスモジュール（アクセス装置）１と、情報記録モジュール（情報記録装置）２と、を備える。
図１に示すように、アクセスモジュール１は、ＣＰＵ１１、ＲＡＭ１２、情報記録モジュールインタフェース１３、ＲＯＭ１４を含む。
ＲＯＭ１４には、アクセスモジュール１を制御するプログラムが格納されており、このプログラムは、ＲＡＭ１２を一時記憶領域として使用し、ＣＰＵ１１上で動作する。
【００３８】
情報記録モジュールインタフェース１３は、情報記録モジュール２とアクセスモジュール１との接続部であり、制御信号及びデータの送受信を行う。
ＲＯＭ１４は、更に、アプリケーション制御部１０１、ファイルシステム制御部１０２、情報記録モジュールアクセス部１０４を含む。なお、本実施形態では、アプリケーション制御部１０１、ファイルシステム制御部１０２、情報記録モジュールアクセス部１０４は、ＲＯＭ１４上において、ソフトウェアにより実現されるものを想定しているが、アプリケーション制御部１０１、ファイルシステム制御部１０２、情報記録モジュールアクセス部１０４は、その全部または一部が、ハードウェアにより実現されるものであってもよい。
アプリケーション制御部１０１は、データの生成や電源の制御などアクセスモジュール１全体の制御を行う。
【００３９】
ファイルシステム制御部１０２は、ファイルシステムによりデータをファイルとして管理するための制御を行う。
情報記録モジュールアクセス部１０４は、ファイルシステム制御部１０２からデータと共にサイズとアドレスを渡され、指定されたサイズのデータを情報記録モジュール２の記録領域内における指定された位置に記録するなど、情報記録モジュール２に対するコマンドやデータの送受信を制御する。
ファイルシステム制御部１０２は、更に、分割残容量算出処理部１０３を含む。
分割残容量算出処理部１０３は、本発明の特徴を示す処理部であり、残容量の算出を複数回の処理に分割して実施する処理部である。また、分割残容量算出処理部１０３が実施する分割残容量算出処理に使用する情報は、ＲＡＭ１２内の残容量情報格納部１０５に格納される。
【００４０】
一方、図１に示すように、情報記録モジュール２は、アクセスモジュールインタフェース２１、ＣＰＵ２２、ＲＡＭ２３、ＲＯＭ２４、不揮発性メモリ２５を含む。
アクセスモジュールインタフェース２１は、情報記録モジュール２とアクセスモジュール１との接続部であり、情報記録モジュールインタフェース１３と同様に、制御信号及びデータを送受信するインタフェースである。
ＲＯＭ２４には、情報記録モジュール２を制御するプログラムが格納されており、このプログラムはＲＡＭ２３を一時記憶領域として使用し、ＣＰＵ２２上で動作する。
不揮発性メモリ２５は、アクセスモジュール１から送信されたデータを記録する領域であり、その中はファイルシステムで管理されている。すなわち、不揮発性メモリ２５内の論理アドレス空間には、図２で示した構成を一例とするＦＡＴ型ファイルシステムの各種データ構造が格納されている。すなわち、記録領域はクラスタ単位に分割され、ＦＡＴ（２０５、２０６）を用いて管理されており、ファイルやディレクトリの名称やサイズ等の情報はディレクトリエントリ２０８を用いて管理されている。
【００４１】
本発明における分割残容量算出処理部１０３は、従来技術と同様に情報記録モジュール２からＦＡＴ（２０５，２０６）をアクセスモジュール１のＲＡＭ１２に読み出し、残容量を算出する。従来技術と異なる点は、残容量算出処理を分割して実施し、データ記録に必要な最低限の残容量が取得できた時点で記録を開始することを可能とする点である。これにより、不揮発性記憶システム１００では、従来に比べファイルシステムの初期化から記録開始までにかかる処理時間を短縮することが可能となる。
（１．２：分割残容量算出処理部）
続いて、本実施形態における分割残容量算出処理部１０３について、図７、図８を用いて説明する。
図７は、分割残容量算出処理部１０３におけるＦＡＴ（２０５、２０６）の管理の一例を示した図である。この図では、クラスタサイズが１６ＫＢの場合に６５０００クラスタからなるユーザデータ領域２０２をＦＡＴ（２０５、２０６）で管理した場合の例を示している。ＦＡＴ１６では、１ＦＡＴエントリ当たり２バイトで管理するため、６５０００クラスタを管理する場合、ＦＡＴ（２０５、２０６）は１２８ＫＢ弱の大きさとなる。
【００４２】
分割残容量算出処理部１０３は、このＦＡＴを複数の固定長ブロックに分割して管理する。ここでは、固定長ブロックとして１６ＫＢの大きさに区切って管理する場合を想定する。１２８ＫＢのＦＡＴ（２０５、２０６）を１６ＫＢずつのＦＡＴブロックに区切って管理する場合、ＦＡＴブロック＿０からＦＡＴブロック＿７までの合計８つのＦＡＴブロックが存在することになる。実際には、ＦＡＴ（２０５、２０６）のサイズが１２８ＫＢよりも少し小さいため、ＦＡＴブロック＿７の終端には、ＦＡＴとして使用されない未使用領域が存在している。
図８は、分割残容量算出処理部１０３が残容量情報格納部１０５に格納する残容量情報３０１の一例を示した図である。
残容量情報３０１は、各ＦＡＴブロックの“ステータス”と“残容量”を示す情報から構成される。
【００４３】
“ステータス”は、該当するＦＡＴブロックに対する残容量算出処理が実施されたか否かを示す情報であり、実施済みであれば「１」が、未実施であれば「０」が格納される。
“残容量”は、該当するＦＡＴブロックに含まれる残容量を示す情報であり、残容量のクラスタ数が格納される。すなわち、各ＦＡＴブロックの残容量の総和が、ユーザデータ領域２０２全体に含まれる残容量を意味する。
このように、本実施形態における分割残容量算出処理部１０３は、ＦＡＴブロック単位で残容量を算出、管理することを特徴とする。
（１．３：マウント処理）
続いて、図９を用いて、本実施形態のファイルシステム制御部１０２におけるマウント処理手順について説明する。このマウント処理は、ファイルシステムの初期化処理として、ファイルシステムを使用する際に最初に実行される処理である。
（Ｓ９０１）：
ファイルシステム制御部１０２は、ファイルシステム管理情報領域２０１からファイルシステム管理情報を読み出し、構造が正しいかチェックする。
（Ｓ９０２）：
ファイルシステム制御部１０２は、Ｓ９０１のチェックの結果、構造が正しく、マウント処理が行えると判断した場合はＳ９０４の処理に進む。また、構造に何らかの異常が検出され、マウント処理が行えないと判断した場合はＳ９０３の処理に進む。例えば、セクタサイズを示す情報が「０」に設定されている等、ファイルシステムとして動作することができない状態が検出された場合、構造が異常であると判断される。
（Ｓ９０３）：
ファイルシステム制御部１０２は、Ｓ９０２の判定処理において、マウント処理が行えないと判断した場合、アプリケーション制御部１０１にマウント処理が失敗したことを示すエラー情報を通知し、処理を終了する。この場合、再度フォーマットしたり、ファイルシステム管理情報の異常を修復したりしない限り、ファイルアクセスが行えないことになる。
（Ｓ９０４）：
ファイルシステム制御部１０２により、Ｓ９０２の判定処理において、マウント処理が行えると判断された場合、読み出したファイルシステム管理情報の内、セクタサイズやクラスタサイズ等、ファイルシステムの制御に必要な情報がＲＡＭ１２上に保持される。
（Ｓ９０５）：
ファイルシステム制御部１０２は、分割残容量算出処理部１０３が使用するＲＡＭ１２上の残容量情報格納部１０５の情報を初期化し、アプリケーション制御部１０１にマウント処理が成功したことを示す情報を通知して処理を終了する。この初期化処理では、図１０に示すように、各ＦＡＴブロック番号に対応する“ステータス”を残容量の算出をしていない状態を示す“０”に、“残容量”も“０”に設定する。すなわち、この初期化処理により、全ＦＡＴブロックに対して残容量の算出が実施されていない状態に設定され、現時点で判明している残容量の総量は「０」となる。
【００４４】
このように、アクセスモジュール１において、Ｓ９０５の処理まで実施してマウント処理が成功した場合、アプリケーション制御部１０１は、ファイルアクセスを行う準備ができたことになる。但し、現時点では、ファイルシステム制御部１０２は、残容量の総量を「０」と認識していることから、ファイルへの追記やディレクトリ作成等、新たに空き領域を必要とする処理は行えない状態となっている。これらの処理は、後述する分割残容量算出処理において残容量が検出された後、実行することが可能となる。
（１．４：ファイルシステム情報取得処理）
続いて、図１１を用いて、本実施形態のファイルシステム制御部１０２におけるファイルシステム情報取得処理手順について説明する。このファイルシステム情報取得処理は、アプリケーション制御部１０１がファイルシステム制御部１０２から、ユーザデータ領域２０２に含まれる総容量等のファイルシステムに関する全般的な情報（以下、「ファイルシステム情報３０２」と呼ぶ）を取得する処理であり、マウント処理実施後、実際にファイルアクセスする前に実施される。
（Ｓ１１０１）：
ファイルシステム制御部１０２は、マウント処理時にＲＡＭ１２上に保持したファイルシステム管理情報を元に、ファイルシステム情報３０２を作成する。ファイルシステム情報３０２の一例を図１２に示す。図１２に示されるファイルシステム情報３０２は、“ＦＳ種別”、“セクタサイズ”、“クラスタサイズ”、“総容量”、“ＦＡＴブロック数”を含む。
【００４５】
“ＦＳ種別”は、ファイルシステムの種別に関する情報を格納する。例えば“０”はＦＡＴ１２、“１”はＦＡＴ１６、“２”はＦＡＴ３２のように各ファイルシステム種別に数値を対応づけておき、該当する数値を本フィールドに格納する。
“セクタサイズ”は、ファイルシステムの最小管理単位であるセクタの大きさを示す情報を格納する。
“クラスタサイズ”は、ユーザデータ領域２０２の管理単位であるクラスタの大きさを示す情報を格納する。
“総容量”は、ユーザデータ領域２０２に含まれる全体の容量を示す情報を格納する。
“ＦＡＴブロック数”は、ＦＡＴ（２０５、２０６）を固定長ブロック単位で管理した際のブロック数を示す情報を格納する。例えば、図７の例では、ＦＡＴブロックの個数が８個であることから、本フィールドには“８”が格納される。
（Ｓ１１０２）：
ファイルシステム制御部１０２は、Ｓ１１０１で作成したファイルシステム情報３０２をアプリケーション制御部１０１に通知して処理を終了する。
【００４６】
このように、ファイルシステム情報取得処理では、アプリケーション制御部１０１が総容量等のファイルシステムに関する全般的な情報を取得すると共に、ＦＡＴブロック数を取得する。本実施形態では、残容量算出処理をこのＦＡＴブロック単位で実施する場合の例について説明する。
（１．５：残容量算出処理）
続いて、図１３を用いて、本実施形態の分割残容量算出処理部１０３における残容量算出処理手順について説明する。本実施形態では、ＦＡＴブロック単位で残容量算出処理を実施するため、ここでは、１ＦＡＴブロック分の残容量算出処理手順を説明する。
（Ｓ１３０１）：
分割残容量算出処理部１０３は、残容量を保持する変数（ＦＲＥＥ＿ＳＰＡＣＥ）を０に初期化する。
（Ｓ１３０２）：
分割残容量算出処理部１０３は、算出対象のＦＡＴブロックを情報記録モジュール２からアクセスモジュール１内のＲＡＭ１２上に読み出す。算出対象のＦＡＴブロックは、アプリケーション制御部１０１から指定されるものとする。
（Ｓ１３０３）：
分割残容量算出処理部１０３は、アクセスモジュール１のＲＡＭ１２上に読み出されたＦＡＴブロックの先頭位置に、現在参照位置を設定する。算出対象のＦＡＴブロックがＦＡＴ（２０５、２０６）先頭のブロックであった場合、現在参照位置は、クラスタ番号２に対応するＦＡＴエントリの位置に設定される。それ以外の場合、現在参照位置は、ＦＡＴブロックの先頭に存在するＦＡＴエントリの位置に設定される。
（Ｓ１３０４）：
分割残容量算出処理部１０３は、現在参照位置がＦＡＴブロック終端まで到達し、算出対象のＦＡＴブロック全体に対して残容量検索の処理が完了しているか判定する。検索が完了している場合は、Ｓ１３０８の処理に進む。検索が完了していない場合は、Ｓ１３０５の処理に進む。
（Ｓ１３０５）：
分割残容量算出処理部１０３は、現在参照位置のＦＡＴエントリが空きクラスタを示すか判定する。具体的には、ＦＡＴエントリの値が０ｘ００００である場合は空きクラスタであると判定し、それ以外の場合は空きクラスタではないと判定する。現在参照位置のＦＡＴエントリが示しているクラスタが空きクラスタであると判定した場合、Ｓ１３０６の処理に進み、現在参照位置のＦＡＴエントリが示しているクラスタが空きクラスタではないと判定した場合、Ｓ１３０７の処理に進む。
（Ｓ１３０６）：
分割残容量算出処理部１０３は、空きクラスタを発見したため、ＦＲＥＥ＿ＳＰＡＣＥの値を「１」加算する（＋１だけインクリメントする）。
（Ｓ１３０７）：
分割残容量算出処理部１０３は、現在参照位置を１ＦＡＴエントリ分進め、Ｓ１３０４の処理に戻る。
（Ｓ１３０８）：
算出対象のＦＡＴブロック全体に対する残容量検索処理が完了したため、分割残容量算出処理部１０３は、残容量情報３０１内の算出対象のＦＡＴブロックの残容量のフィールドにＦＲＥE＿ＳＰＡＣＥの値を格納し、ステータスを「１」に設定する。図１４は、番号０のＦＡＴブロックに対する残容量情報３０１を更新した場合の例を示している。この例では、番号０のＦＡＴブロックに含まれる残容量が３７００クラスタであった場合を示している。
（Ｓ１３０９）：
分割残容量算出処理部１０３は、残容量情報３０１に格納された全ＦＡＴブロックの残容量のフィールドに格納された値の総和を取り、残容量としてアプリケーション制御部１０１に通知して処理を終了する。
【００４７】
このように、本実施形態における残容量算出処理では、アプリケーション制御部１０１から指定された１つのＦＡＴブロックに対する残容量算出処理を実施し、それ以前に残容量算出が完了している全てのＦＡＴブロックの残容量の総和をアプリケーション制御部１０１に返す。これにより、ＦＡＴ（２０５、２０６）のサイズが大きい場合でも、ＦＡＴ（２０５、２０６）全体の残容量算出処理が完了するまで待つことなく、アプリケーション制御部１０１に処理を返すことが可能となる。
また、残容量算出処理は、必ずしも１つのＦＡＴブロックに対してのみ実施するのではなく、アプリケーション制御部１０１からの指定に応じて、２つ以上のＦＡＴブロックをまとめて処理しても良い。この場合、Ｓ１３０１からＳ１３０８までの処理を、アプリケーション制御部１０１が指定した複数のＦＡＴブロックに対して繰り返し実施し（アプリケーション制御部１０１が指定したＦＡＴブロックの数だけＳ１３０１からＳ１３０８までの処理を繰り返し実施し）、最後にＳ１３０９の処理により、全ＦＡＴブロックの残容量の総和を取るようにする。
【００４８】
（１．６：アプリケーション制御部１０１とファイルシステム制御部１０２間の制御シーケンス）
続いて、図１５を用いて、アプリケーション制御部１０１とファイルシステム制御部１０２との間の制御シーケンスの一例について説明する。
（Ｓ１５０１）：
まず始めに、アプリケーション制御部１０１は、ファイルシステム制御部１０２にマウント処理の実施を要求する。
（Ｓ１５０２）：
ファイルシステム制御部１０２は、図９で説明したマウント処理を実施した後、処理が完了した旨をアプリケーション制御部１０１に通知する。
（Ｓ１５０３）：
マウント処理に成功した場合、アプリケーション制御部１０１は、ファイルシステム制御部１０２にファイルシステム情報取得処理の実施を要求する。
（Ｓ１５０４）：
ファイルシステム制御部１０２は、図１１で説明したファイルシステム情報取得処理を実施した後、ファイルシステム情報３０２をアプリケーション制御部１０１に通知する。
（Ｓ１５０５）：
ファイルシステム情報取得処理に成功した場合、アプリケーション制御部１０１は、ファイルシステム制御部１０２にＦＡＴブロック＿０の残容量算出処理の実施を要求する。なお、ＦＡＴブロック番号Ｋ（Ｋは、Ｋ≧０の整数）のＦＡＴブロックを「ＦＡＴブロック＿Ｋ」と表記することとする。
（Ｓ１５０６）：
ファイルシステム制御部１０２内の分割残容量算出処理部１０３は、図１３で説明した残容量算出処理を実施した後、残容量をアプリケーション制御部１０１に通知する。この時点では、ＦＡＴブロック＿０に対する残容量算出処理しか完了していないため、アプリケーション制御部１０１に通知される残容量は、ＦＡＴブロック＿０に含まれるもののみとなる。ここで、アプリケーション制御部１０１は、通知された残容量に十分な空き容量が存在するか否か判定し、存在すると判定した場合には記録準備が完了したものとし、必要に応じてファイルデータの書き込みを開始する。例えば、アクセスモジュール１を備えるデジタルスチルカメラの場合、通知された残容量が静止画１枚以上の容量であった場合、静止画の撮影を開始できると判断し、アクセスモジュール１は、ユーザに対して静止画撮影を行う準備が完了した旨を通知し、当該デジタルスチルカメラは、撮影待ち状態に入る。
（Ｓ１５０７）：
続いて、アプリケーション制御部１０１は、ファイルシステム制御部１０２にＦＡＴブロック＿１の残容量算出処理の実施を要求する。
（Ｓ１５０８）：
Ｓ１５０６と同様に、ファイルシステム制御部１０２内の分割残容量算出処理部１０３は、図１３で説明した残容量算出処理を実施した後、残容量をアプリケーション制御部１０１に通知する。この時点で、ＦＡＴブロック＿０、ＦＡＴブロック＿１の残容量算出処理が完了しているため、アプリケーション制御部１０１に通知される残容量は、ＦＡＴブロック＿０、ＦＡＴブロック＿１に含まれるものの総和となる。
（Ｓ１５０９）：
以下同様に、アプリケーション制御部１０１は、ＦＡＴブロック＿（Ｎ−１）まで繰り返しファイルシステム制御部１０２に残容量算出処理の実施を要求する。
（Ｓ１５１０）：
ファイルシステム制御部１０２内の分割残容量算出処理部１０３は、指定されたＦＡＴブロックに対して、図１３で説明した残容量算出処理を実施した後、残容量をアプリケーション制御部１０１に通知する。この時点で、全てのＦＡＴブロックに対する残容量算出処理が完了しているため、アプリケーション制御部１０１に通知される残容量は、全ＦＡＴブロックに含まれるものの総和となる。
【００４９】
図１６は、Ｓ１５１０まで処理が完了した後の残容量情報３０１の一例を示した図である。図１６に示すように、Ｓ１５１０まで処理が完了すると、全ＦＡＴブロックの“ステータス”が「１」に設定され、“残容量”には、各ＦＡＴブロックに含まれる残容量の値が格納される。
以上のように、本実施形態におけるアクセスモジュール１内の分割残容量算出処理部１０３は、ＦＡＴ（２０５、２０６）を固定長ブロック単位で管理し、この固定長ブロック単位に分割して残容量算出処理を実施する。これにより、アプリケーション制御部１０１は、必要最小限の残容量が存在することを確認できた時点で記録準備を完了し、ファイルデータの記録を開始することができる。そのため、従来のようにＦＡＴ（２０５、２０６）全体に対する残容量算出処理の実施完了を待つことなく記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。
【００５０】
尚、本発明を上記の実施形態に基づいて説明してきたが、本発明は、上記の実施形態に限定されないのは勿論である。本発明の趣旨を逸脱しない範囲で実施変更することができる。本実施形態で記載された数値は一例であり、他の値を使用しても良い。例えば、残容量情報３０１に含まれる“ステータス”に格納する値として、０、１、２を使用する場合の例について説明したが、その他の値を用いても良いし、ファイルシステム種別を示す文字列を格納するようにしても良い。
また、本実施形態で説明した残容量情報３０１、ファイルシステム情報３０２の構成は、一例であり、本発明の趣旨を逸脱しない範囲でその他の情報を追加しても良いし、本実施形態で説明された情報をその他の情報に置き換えても良い。
また、図１５の例では、先頭のＦＡＴブロックから終端のＦＡＴブロックへ順に残容量算出処理を実施していく場合の例について説明したが、その他の順番で実施しても良い。例えば、図１７のように、最初に終端のＦＡＴブロックの残容量算出処理を実施した後、先頭のＦＡＴブロックから（終端−１）番目のＦＡＴブロックの残容量算出処理を実施するようにしても良い。通常ファイルデータを記録する際にはＦＡＴ（２０５、２０６）の先頭から空きクラスタを検索し、見つかった空きクラスタにデータを記録していくことが多いことから、ＦＡＴ（２０５、２０６）終端付近には空きクラスタが多数含まれる場合が多い。そのため、このように終端のＦＡＴブロックから先頭のＦＡＴブロックに向かって順次、残容量算出処理を実施することにより、必要最低限の残容量を高速に取得できる可能性が高くなり、本発明の効果をより高めることが可能となる。
【００５１】
しかしながら、毎回終端のＦＡＴブロックを優先的に残容量算出した場合、全ＦＡＴブロックの残容量算出が完了する前にファイルデータが記録されると終端のＦＡＴブロックにファイルデータが記録され、終端のＦＡＴブロックの残容量が減少し、必要最低限の残容量を高速に取得できる可能性が徐々に低下することになる。この場合、アクセスモジュール１内にファイルデータ用のバッファがＲＡＭ１２に十分に存在すれば、図１８のような制御シーケンスを取ることにより、この問題を回避することが可能となる。
図１８の制御シーケンスが図１７の制御シーケンスと異なる点は、Ｓ１８０６の直後にアプリケーション制御部１０１が記録準備完了と判断した後、すぐに情報記録モジュール２にファイルデータを記録し始めるのではなく、全ＦＡＴブロックに対する残容量算出処理が完了するまでアクセスモジュール１内のＲＡＭ１２上にファイルデータを保持し、全ＦＡＴブロックに対する残容量算出処理が完了した後、実際に情報記録モジュール２にファイルデータを記録する点である。
【００５２】
このようにすることにより、実際に情報記録モジュール２にファイルデータを記録する時点では、全ＦＡＴブロックの残容量算出処理が完了していることから、先頭のＦＡＴブロックに含まれる空きクラスタにファイルデータを記録することが可能となる。そのため、終端のＦＡＴブロックに含まれる空きクラスタは、終端のＦＡＴブロック以外のＦＡＴブロックに含まれる空きクラスタがなくなるまで使用されることがなく、必要最低限の残容量取得を常に高速に実施することが可能となる。
なお、図１８は、Ｓ１８０７〜Ｓ１８０９の処理が、ＦＡＴブロック＿０からＦＡＴブロック＿（Ｎ−２）の順に、すなわち、ＦＡＴブロック番号の昇順にＦＡＴブロックごとの残容量算出処理を行う場合について示している。しかし、これに限定されることはなく、例えば、Ｓ１８０７〜Ｓ１８０９の処理が、ＦＡＴブロック＿（Ｎ−２）からＦＡＴブロック＿０の順に、すなわち、ＦＡＴブロック番号の降順にＦＡＴブロックごとの残容量算出処理を行うものであってもよい。
【００５３】
また、図１８の場合において、情報記録モジュール２への記録開始以降の処理は、上記に示したように、先頭のＦＡＴブロックに含まれる空きクラスタから順番に（昇順に）見つかった空きクラスタにファイルデータを記録することが好ましいが、これに限定されることはなく、終端のＦＡＴブロック以外の任意のＦＡＴブロックに含まれる空きクラスタから順番にファイルデータを記録するようにしてもよい。例えば、情報記録モジュール２への記録開始以降の処理は、２番目のＦＡＴブロックに含まれる空きクラスタから順番に（昇順に）見つかった空きクラスタにファイルデータを記録するようにしてもよい。
また、本実施形態では、残容量を算出する対象のＦＡＴブロックの番号をアプリケーション制御部１０１がファイルシステム制御部１０２に指定する場合の例について説明したが、その他の情報を用いても構わない。例えば、ＦＡＴ（２０５、２０６）における残容量算出対象の部分を特定できる情報として、探索開始クラスタ番号と探索終了クラスタ番号との組で指定しても良い。この場合、指定されたクラスタ番号の範囲を含むＦＡＴブロックを、残容量算出対象とすることにより本実施形態で説明した処理を適用することが可能となる。同様に、ＦＡＴブロックを範囲で指定するために、探索開始ＦＡＴブロック番号と探索終了ＦＡＴブロック番号との組で指定しても良い。更に、アプリケーション制御部１０１が必要とする残容量の大きさを指定しても良い。この場合、ファイルシステム制御部１０２は、任意のＦＡＴブロックに対して、アプリケーション制御部１０１により指定された残容量以上の残容量を取得するまで自動的に分割残容量算出処理を実施していく。
【００５４】
また、本実施形態では、ＦＡＴファイルシステムを用いる場合の例について説明したが、ＵＤＦ（Ｕｎｉｖｅｒｓａｌ  Ｄｉｓｋ  Ｆｏｒｍａｔ）ファイルシステム等の、その他のファイルシステムに本発明を適用しても良い。例えば、ＵＤＦファイルシステムでは、ＦＡＴ（２０５、２０６）に相当する領域管理情報としてＡｌｌｏｃａｔｉｏｎ  Ｂｉｔｍａｐを保持している。このＡｌｌｏｃａｔｉｏｎ  Ｂｉｔｍａｐに含まれる各ビットが各々１論理ブロックの使用状況を示しており、Ａｌｌｏｃａｔｉｏｎ  ＢｉｔｍａｐはＵＤＦファイルシステムが管理している全論理ブロックの数のビット情報を含むビットマップ情報となっている。即ち、このＡｌｌｏｃａｔｉｏｎ  ＢｉｔｍａｐもＦＡＴ（２０５、２０６）同様に総容量に比例する大きさとなるため、ＵＤＦファイルシステムにおいて、本発明を適用することで、分割して残容量を算出することができ、その結果、ファイルシステムの初期化から記録開始までにかかる時間を短縮することが可能である。
【００５５】
また、図１３の残容量算出処理手順では、毎回ＦＡＴ（２０５、２０６）をＲＡＭ１２上に読み出す場合の例について説明したが、図９で説明したマウント処理のタイミング等で全てのＦＡＴ（２０５、２０６）をＲＡＭ１２上に読み出している場合には、不揮発性記憶システム１００において、残容量算出処理時にＦＡＴ（２０５、２０６）を読み出す必要がなく、より高速に残容量算出処理を実施することが可能となる。
また、上記では、本実施形態における残容量情報３０１は、マウント処理時に初期化され、対象ＦＡＴブロックに対する残容量算出処理が実施される際に情報が更新される場合の例について説明した。しかしながら、実際には、ファイルデータの記録や、ファイルの削除等を行うと残容量の情報が変化するため、これらの処理が発生すると、残容量情報３０１と実際の残容量との間に不整合が生じる。この場合、不整合が生じていることをファイルシステム制御部１０２が管理し、アプリケーション制御部１０１が残容量を再度参照する際に残容量を再度算出するという方法が考えられるが、頻繁に残容量が増減する場合には、残容量算出処理のオーバーヘッドが大きくなるという問題が生じる。この場合、ファイルデータ記録やファイル削除等のファイルシステムの各種処理を実施する際に、アクセスモジュール１において、新しく割り当てた、あるいは解放した領域の増減を残容量情報に逐次更新することにより、常に最新の残容量が残容量情報３０１に保持されるようにし、残容量の再算出を不要とする工夫を実施すると、更に効果的である。また、この処理では、アクセスモジュール１内のＲＡＭ１２上の残容量情報３０１を更新するのみで、情報記録モジュール２に対する記録処理は発生しないことから、特許文献１で提案されている従来方法に比べ、高速に残容量情報３０１を更新することが可能となる。
【００５６】
［他の実施形態］
なお、上記実施形態で説明した不揮発性記憶システム、アクセスモジュール、情報記録モジュールにおいて、各ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。
なお、ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【００５７】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェアにより実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る不揮発性記憶システム、アクセスモジュール、情報記録モジュールをハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【産業上の利用可能性】
【００５８】
本発明に関わるアクセスモジュール１は、ファイルシステムにより管理されている情報記録モジュール２内の残容量を算出する分割残容量算出処理部１０３を含む。分割残容量算出処理部１０３は、ファイルシステムの領域管理情報を固定長ブロック単位で管理し、
この固定長ブロック単位に分割して残容量算出処理を実施する。これにより必要最小限の残容量が存在することを確認できた時点で記録準備を完了し、ファイルデータの記録を開始することができ、ファイルシステムの初期化から記録開始までの時間を短縮することが可能となる。このようなアクセスモジュール１は、音楽や静止画、動画などのデジタルコンテンツを取り扱う機器に最適であり、ＰＣアプリケーション、オーディオレコーダ、ＤＶＤレコーダ、ＨＤＤレコーダ、ムービー、デジタルスチルカメラ、携帯電話端末等として利用することができる。
【符号の説明】
【００５９】
１００  不揮発性記憶システム
１  アクセスモジュール（アクセス装置）
２  情報記録モジュール（情報記録装置）
１１，２２  ＣＰＵ
１２，２３  ＲＡＭ
１３  情報記録モジュールインタフェース
１４，２４  ＲＯＭ
２１  アクセスモジュールインタフェース
２５  不揮発性メモリ
１０１  アプリケーション制御部
１０２  ファイルシステム制御部
１０３  分割残容量算出処理部
１０４  情報記録モジュールアクセス部
１０５  残容量情報格納部
２０１  ファイルシステム管理情報領域
２０２  ユーザデータ領域
２０３  マスターブートレコード・パーティションテーブル
２０４  パーティションブートセクタ
２０５，２０６  ＦＡＴ
２０７  ルートディレクトリエントリ
２０８  ディレクトリエントリ
３０１  残容量情報
３０２  ファイルシステム情報
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009150810.tif 000021
【図２】
2009150810.tif 000022
【図３】
2009150810.tif 000023
【図４】
2009150810.tif 000024
【図５】
2009150810.tif 000025
【図６】
2009150810.tif 000026
【図７】
2009150810.tif 000027
【図８】
2009150810.tif 000028
【図９】
2009150810.tif 000029
【図１０】
2009150810.tif 000030
【図１１】
2009150810.tif 000031
【図１２】
2009150810.tif 000032
【図１３】
2009150810.tif 000033
【図１４】
2009150810.tif 000034
【図１５】
2009150810.tif 000035
【図１６】
2009150810.tif 000036
【図１７】
2009150810.tif 000037
【図１８】
2009150810.tif 000038
【国際調査報告】
2009150810.tif 000039
2009150810.tif 000040