以下、実施の形態について図面を参照して詳細に説明する。この実施の形態では、PC(personal computer)を例にした場合について説明するが、例えばデジタルテレビジョン放送受信装置や光ディスクレコーダ等、管理対象となる情報記録媒体に記録されるデータを管理するためのファイルシステムを備えるファイルシステム搭載機器であれば、同様に適用することができる。
図1は、この実施の形態で説明するPC100の主要部と、このPC100の管理対象となるメモリカード200の主要部とを、それぞれ機能ブロックとして概略的に示している。各機能ブロックは、ハードウエアやコンピュータソフトウエアのいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から説明される。
このような機能が、ハードウエアとして実行されるか、または、ソフトウエアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様毎に、種々の方法でこれらの機能を実現し得るが、そのような実現を決定することは、この実施の形態の範疇に含まれるものである。
図1に示すように、PC100は、自己に挿入され接続されたメモリカード200に対してアクセスを行なうためのハードウエア及びソフトウエア(システム)を備えている。まず、PC100は、アプリケーション、オペレーティングシステム等のソフトウエア101を備えている。
このソフトウエア101は、メモリカード200へのデータの書き込みや、メモリカード200からのデータの読み出し等の処理が、ユーザの操作によって指示されると、CPU(central processing unit)(図10参照)にその処理を実行させるものである。ソフトウエア101を実行したCPUは、ファイルシステム102を介して、メモリカード200に対してデータの書き込みまたは読み出しを指示する。
このファイルシステム102は、管理対象となる情報記録媒体(メモリカード200)に記録されているファイルを管理するための仕組みである。このファイルシステム102は、情報記録媒体の記録領域内に管理情報を記録し、この管理情報を用いてファイルを管理している。
すなわち、このファイルシステム102では、情報記録媒体におけるファイルやフォルダ等のディレクトリ情報の作成方法、ファイルやフォルダ等の移動方法や削除方法、データの記録方式、管理情報が記録されている場所やその利用方法等が定められている。このファイルシステム102は、FAT(file allocation table)ファイルシステムを基礎としており、この実施の形態で以下に説明する動作を実行可能に構成されている。具体的な動作に関しては、適宜順を追って説明する。
また、上記PC100は、メモリカードインターフェース103を備えている。このメモリカードインターフェース103は、PC100とメモリカード200のコントローラ201との間のインターフェース処理を行なうのに必要なハードウエアやソフトウエア等から構成されている。そして、PC100は、メモリカードインターフェース103を介してメモリカード200との通信を実行する。
この場合、メモリカードインターフェース103は、PC100とメモリカード200とが通信を行なうのに必要な各種の取り決めを規定している。すなわち、メモリカードインターフェース103は、メモリカード200のコントローラ201を構成している後述するメモリカードインターフェース201aと相互に認識可能な各種のコマンドの組を備えている。また、このメモリカードインターフェース103は、メモリカード200のメモリカードインターフェース201aと接続可能なハードウエア上の構成(ピンの配置、数等)も含んでいる。
上記メモリカード200は、電源がオン状態のPC100に接続されたとき、または、電源がオフ状態のPC100に接続された状態でPC100の電源がオンされたときに、PC100からの電力供給を受けて初期化動作を行なった後、PC100からのアクセスに対応した処理を実行する。
このメモリカード200は、NAND型フラッシュメモリ等のメモリ202や、そのメモリ202を制御するための上記コントローラ201を備えている。このうち、メモリ202は、データを不揮発に記録するもので、複数のメモリセルからなるページと称される単位でデータの書き込みや読み出しを実行する。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ202は、複数のページからなる物理ブロックと称される単位でデータの消去を実行する。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
また、上記コントローラ201は、メモリ202におけるデータの記録状態を管理している。この記録状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、PC100により割り当てられたどの論理アドレスのデータを保持しているかを示す対応関係や、どの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない状態、または、無効なデータを保持している状態)であるか等を管理することである。
この場合、上記コントローラ201は、上記メモリカードインターフェース201a、MPU(micro processing unit)201b、ROM(read only memory)201c、RAM(random access memory)201d、NANDインターフェース201e等を備えている。
このうち、メモリカードインターフェース201aは、PC100とコントローラ201との間のインターフェース処理を行なうのに必要なハードウエアやソフトウエア等から構成されている。そして、メモリカード200は、メモリカードインターフェース201aを介してPC100との通信を実行する。
このメモリカードインターフェース201aは、PC100のメモリカードインターフェース103と同様に、メモリカード200とPC100との通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウエア上の構成(ピンの配置、数等)も含んでいる。また、メモリカードインターフェース201aは、レジスタ201fを備えている。
上記MPU201bは、メモリカード200全体の動作を総括的に制御している。すなわち、MPU201bは、例えば、メモリカード200が電力供給を受けた際に、ROM201c内に格納されているファームウエア(制御プログラム)をRAM201d上に読み出して処理を実行する。
また、上記MPU201bは、制御プログラムに基づいて、後述する各種のテーブルをRAM201d上で作成したり、PC100から書き込みコマンド、読み出しコマンド、消去コマンド等を受けて、メモリ202に対する所定の処理を実行したりしている。
さらに、上記ROM201cは、前述したように、MPU201bが実行する制御プログラム等を格納している。
また、上記RAM201dは、MPU201bに作業エリアを提供しており、制御プログラムや各種のテーブルを記録している。このようなテーブルとしては、PC100のファイルシステム102によってデータに割り当てられた論理アドレスと、その論理アドレスを有するデータを実際に記録しているページの物理アドレスとを対応させた変換テーブル(論物テーブル)が含まれる。
さらに、上記NANDインターフェース201eは、コントローラ201とメモリ202との間のインターフェース処理を行なっている。
ここで、上記メモリ202内の記録領域は、保存されるデータの種類に対応して複数の領域に区分けされている。この複数の領域としては、システムデータ領域202a、機密データ領域202b、ユーザデータ領域202cが含まれる。
このうち、システムデータ領域202aは、コントローラ201が、その動作に必要なデータを保存するためにメモリ202内に確保しておく領域である。すなわち、このシステムデータ領域202aは、主にメモリカード200に関する管理情報を格納しており、メモリカード200のセキュリティ情報やメディアID(identification)等のカード情報を格納している。
また、機密データ領域202bは、暗号化に用いる鍵情報や認証時に使用する機密データ等を保存しておく領域である。この機密データ領域202bについては、PC100はアクセスできないようになされている。
さらに、ユーザデータ領域202cは、PC100が自由にアクセスして使用することが可能な領域である。このユーザデータ領域202cには、例えばAV(audio visual)コンテンツファイルや映像データ等のユーザデータが格納される。以下の説明では、メモリ202の記録領域と言えば、このユーザデータ領域202cを指すものとする。
なお、上記したコントローラ201は、ユーザデータ領域202cの一部を確保しており、自己の動作に必要な制御データ(論物テーブル)を保存させている。このユーザデータ領域202cは、PC100から別のボリュームとして論理フォーマットされ、ファイル管理されている。
次に、上記メモリ202の論理フォーマットについて説明する。メモリ202は、以下の形式で論理フォーマット化される。このメモリ202の論理フォーマット化は、上記PC100内のファイルシステム102によって行なわれる。
ここで、上記ファイルシステム102によるメモリ201の論理フォーマット化の説明に先立ち、このファイルシステム102が基礎としているFATファイルシステムの概要について、図2及び図3を用いて説明しておくことにする。
図2は、FATファイルシステムにより論理フォーマット化された、メモリ202のメモリ空間30を示している。このメモリ空間30には、以下に示す管理データが書き込まれている。なお、ここでいうメモリ空間30は、FATファイルシステムが自由にアクセスできるメモリ領域であり、図1のメモリ202においては、ユーザデータ領域202cに対応するものである。
図2に示すように、FATファイルシステムは、管理対象となるメモリ空間30を所定の大きさ(例えば16kバイト)のクラスタに分割して管理している。このメモリ空間30には、その最下位から所定のクラスタ番号で示される範囲までの領域に、管理データが割り当てられている。以下、管理データを記録する領域を、管理データブロック31と称する。
なお、管理データブロック31より高位のクラスタ番号で示される領域は、ファイルを構成する複数のファイルデータを書き込むためのデータ記録領域となっている。以下、このデータ記録領域をファイルデータブロック32と称する。
そして、上記管理データブロック31は、パーティションテーブルに割り当てられるパーティションテーブル領域33、ブートセクタに割り当てられるブートセクタ領域34、FAT1に割り当てられるFAT1領域35、FAT2に割り当てられるFAT2領域36、ルートディレクトリエントリに割り当てられるルートディレクトリエントリ領域37に分けられている。
このうち、パーティションテーブル領域33は、各パーティションのファイルシステムタイプやその先頭セクタ等の情報を格納している。また、ブートセクタ領域34は、パーティションテーブルが示す先頭セクタに位置し、BPB[BIOS(basic input/output system)parameter block]を格納している。
このBPBは、ファイルシステムが使用する、メモリ202の様々なパラメータを示している。FATファイルシステムでは、メモリ202を論理フォーマット化するとき、このパラメータを書き込んでいる。また、FATファイルシステムは、起動時にBPBを読み込むことにより、ファイルフォーマットのパラメータを認識する。
さらに、FAT1領域35は、メモリに書き込まれ、クラスタの大きさに分割されたファイルデータの一部(以下、単にファイルデータと称する)がどのクラスタに記録されているかを示す情報や、ファイルデータを復元するためのクラスタのつながりを示す情報を格納している。また、FAT2領域36は、FAT1のバックアップ領域であり、FAT1領域35と同じ内容を格納している。
1つのファイルを構成する各ファイルデータは、連続するクラスタに割り当てられることが好ましいので、FATファイルシステムでは、空いているクラスタを、クラスタ番号の順にしたがってファイルデータに割り当てている。そして、FAT1及びFAT2は、ファイルデータを格納しているクラスタの接続関係を示す情報を格納している。これにより、FAT1及びFAT2(以下、単にFATと記載する)に格納されている情報に基づいてクラスタからデータを読み出すことによって、元のファイルが復元される。
また、ルートディレクトリエントリ領域37は、ルートディレクトリに属する各ファイルのファイルエントリを記録している。このファイルエントリには、ファイル名またはフォルダ名、ファイルサイズ、属性及びファイルの更新日時情報、どのクラスタがファイルの先頭クラスタであるかを示すフラグ等が含まれる。なお、FATフォーマット形式のバージョン[例えば、FAT16、FAT32、ex(extended)FAT等]によっては、ルートディレクトリエントリをFATの後の任意のアドレスに置くことができる。
あるファイルが、ルートディレクトリに属するサブディレクトリに属する場合、ルートディレクトリエントリ領域37には、ルートディレクトリに属するサブディレクトリのエントリ(サブディレクトリエントリ)に割り当てられているクラスタの番号が記載されている。
そして、サブディレクトリエントリは、自己に属する各ファイルのファイルエントリを保持している。このサブディレクトリエントリは、図2に示すように、FATファイルシステムによって、ファイルデータブロック32内の任意のクラスタ38に書き込まれる。このサブディレクトリエントリも管理データに属しており、頻繁に書き換えられることが多いものである。
図3は、FAT及びファイルエントリの一例を示している。図3に示すように、ルートディレクトリエントリは、ファイルエントリとして各ファイル「FILE1.TXT」、「FILE2.TXT」、「FAILE3.TXT」の先頭のクラスタの位置情報を格納している。「FILE1.TXT」、「FILE2.TXT」、「FILE3.TXT」の先頭クラスタは、それぞれクラスタ番号が0002、0005、0007である。
FATには、各クラスタの次に接続されるべきクラスタの番号が記載されている。例えば、「FILE1.TXT」の場合、先頭のクラスタ(クラスタ番号0002)のデータに続くデータを格納するクラスタはクラスタ番号が0003で、そのクラスタ(クラスタ番号0003)のデータに続くデータを格納するクラスタはクラスタ番号が0004であることが分かる。
そして、各クラスタ(クラスタ番号0002、0003、0004)のデータを接続することにより、「FILE1.TXT」のファイルが復元される。なお、ファイルデータの最後の部分を格納するクラスタには、「FFFF」が書き込まれている。
次に、図4を用いて、FATファイルシステムを基礎とする上記ファイルシステム102について説明する。このファイルシステム102は、以下に示すようにメモリ202を論理フォーマット化している。つまり、ファイルシステム102によって、メモリ202は論理フォーマット化されている。
図4は、このファイルシステム102によって論理フォーマット化された、メモリ202のメモリ空間50を示している。図4に示すメモリ空間50は、フォーマット対象であるメモリ202の記録領域のうち、ファイルシステム102が使用可能なユーザデータ領域202cに対応している。
図4に示すように、ファイルシステム102は、それがファイルデータを管理するために用いる管理データを割り当てる記録領域を、ユーザデータ領域202cの最下位から所定のクラスタ番号(または論理アドレス)で示される範囲までの領域に限定している。すなわち、管理データは、この所定の範囲内のクラスタ番号(または論理アドレス)の記録領域に割り当てられ記録される。
ここで、管理データとしては、FATファイルシステムで用いられるものと同じ、パーティションテーブル、ブートセクタ、FAT1、FAT2、ルートディレクトリエントリ、サブディレクトリエントリが含まれている。
そして、管理データを格納するブロック(管理データブロック51)には、パーティションテーブルに割り当てられるパーティションテーブル領域53、ブートセクタに割り当てられるブートセクタ領域54、FAT1に割り当てられるFAT1領域55、FAT2に割り当てられるFAT2領域56、ルートディレクトリエントリに割り当てられるルートディレクトリエントリ領域57、サブディレクトリエントリに割り当てられるサブディレクトリエントリ領域58が含まれる。これらのパーティションテーブル領域53乃至サブディレクトリエントリ領域58が格納するデータは、前述したFATファイルシステムにおいて定義されているものと同じである。
メモリ空間50の、管理データブロック51を除く部分は、ファイルデータの書き込み専用のファイルデータブロック52である。管理データブロック51の容量は、メモリ空間50の大きさと、確保されることが求められるファイルデータブロック52の大きさとを考慮して決定される。
例えば、パーティションテーブル領域53の容量は121.5kバイト、ブートセクタ領域54の容量は0.5kバイト、FAT1領域55の容量は123kバイト、FAT2領域56の容量は123kバイト、ルートディレクトリエントリ領域57の容量は16kバイト、サブディレクトリエントリ領域58の容量は64kバイトである。
なお、ファイルシステム102は、FATファイルシステム(FAT16,32、exFAT等の違いを問わない)を基礎としている。さらに、FATファイルシステムに限らず、FATの拡張を含む類似のファイルシステムを利用することもできる。例えば、管理データを用いてファイルデータを管理し、管理データが頻繁に書き換えられるようなファイルシステムが該当する。
上記メモリカード200は、ファイルシステム102によって論理フォーマット化されている。したがって、メモリ202は、図4に示したように論理フォーマット化されていることになる。
次に、図5を用いて、図4のように論理フォーマット化されているメモリ202に書き込むファイルデータヘの記録領域割り当て処理について説明する。まず、PC100が起動されると(ステップS601)、ファイルシステム102は、メモリカードインターフェース103にメモリカード200が接続されるのを待つ待機状態(ステップS602:NO)となる。
そして、メモリカードインターフェース103にメモリカード200が接続されると(ステップS602:YES)、ファイルシステム102は、メモリ202のユーザデータ領域202cにアクセスし、ユーザデータ領域202c内のパーティションテーブル領域53からパーティションテーブルの読み込みを実行する(ステップS603)。
次に、ファイルシステム102は、読み込んだパーティションテーブルから、ユーザデータ領域202c内の領域のうちFAT1及びFAT2が書き込まれたFAT1領域55及びFAT2領域56のクラスタ番号(または論理アドレス)を特定するとともに(ステップS604)、当該読み込んだパーティションテーブルが示す先頭セクタに位置するブートセクタ領域54の解析処理を実行する(ステップS605)。
具体的には、ファイルシステム102は、ブートセクタ領域54の解析処理を実行することにより、ユーザデータ領域202c内の領域のうち、ファイルデータブロック52のクラスタ番号やサイズ、ルートディレクトリやサブディレクトリが書き込まれたルートディレクトリエントリ領域57及びサブディレクトリエントリ領域58のクラスタ番号やサイズ等、メモリ202の様々なパラメータを示すBPBの読み込みを実行する。
さらに、ファイルシステム102は、ブートセクタ領域54の解析処理により読み込んだクラスタ番号やサイズが示すように、ファイルデータブロック52を複数の管理領域に分割するとともに、各管理領域の最下位(または最上位)のクラスタのクラスタ番号を分割情報として記録する(ステップS606)。
図6は、ファイルデータブロック52を複数の管理領域に分割した一例を示している。この場合、ファイルシステム102は、PC100で実行するソフトウエア(アプリケーション)101の数(例えば4個)の管理領域に、ファイルデータブロック52を分割するものとする。
また、ファイルシステム102は、ファイルデータブロック52を、ファイルデータの書き込みを高速化することができるサイズ(例えば512kバイト)で割り切れるサイズの管理領域1〜4に分割し、残りの領域は雑多な領域として確保するものとする。
その後、ファイルシステム102は、メモリカードインターフェース103からメモリカード200が取り外されたか否かを監視するとともに(ステップS607)、ソフトウエア(アプリケーション)101からのファイルデータの書き込み要求を待つ待機状態(ステップS608)となる。なお、メモリカードインターフェース103からメモリカード200が取り外された場合(ステップS607:YES)、ファイルシステム102は、記録している分割情報をクリア(ステップS611)し、ステップS602の処理に戻る。
一方、メモリカードインターフェース103からメモリカード200が取り外されず(ステップS607:NO)、ソフトウエア101からのファイルデータの書き込み要求が有った場合(ステップS608:YES)、ファイルシステム102は、書き込み要求が有ったファイルデータを書き込むクラスタの割り当てを行ない、割り当てたクラスタにまとめられた論理ブロックの論理アドレス及び書き込み要求が有ったファイルデータを、コントローラ201に出力する(ステップS609)。
具体的に言えば、ファイルシステム102は、書き込み要求が有ったファイルデータをファイルデータブロック52に書き込む場合、ステップS605で読み込んだBPBが示すルートディレクトリエントリのクラスタ番号にしたがって、管理データブロック51内のルートディレクトリエントリ領域57にアクセスしてルートディレクトリエントリの読み込みを実行する。
次に、ファイルシステム102は、読み込んだルートディレクトリエントリが含むファイル名を参照して、書き込み要求が有ったファイルデータと同一のファイルを構成するファイルデータが書き込まれているか否かを判断する。そして、書き込み要求が有ったファイルデータと同一のファイルを構成するファイルデータが書き込まれていると判断した場合、ファイルシステム102は、読み込んだルートディレクトリエントリが含むどのクラスタがファイルの先頭クラスタであるかを示すフラグ及び分割情報が示す各管理領域の最下位(または最上位)のクラスタのクラスタ番号を参照して、当該書き込み要求が有ったファイルデータと同一のファイルを構成するファイルデータが書き込まれた管理領域を特定する。
その後、ファイルシステム102は、ステップS604で特定したクラスタ番号にしたがってFAT1領域55及びFAT2領域56にアクセスし、FAT1及びFAT2の読み込みを実行する。そして、ファイルシステム102は、読み込んだFAT1及びFAT2を参照して、特定した管理領域においてファイルデータが既に書き込まれた領域に続く領域、つまり、FAT1またはFAT2に「FFFF」が記載されたファイルデータが書き込まれたクラスタに続くクラスタを、書き込み要求が有ったファイルデータの書き込み領域に割り当てる。
一方、書き込み要求が有ったファイルデータと同一のファイルを構成するファイルデータが書き込まれていなかった場合、ファイルシステム102は、ステップS604で特定したクラスタ番号にしたがってFAT1領域55及びFAT2領域56にアクセスして、FAT1及びFAT2の読み込みを実行する。
そして、ファイルシステム102は、読み込んだFAT1及びFAT2と分割情報とが示す各管理領域の最下位(または最上位)のクラスタ番号を参照して、ファイルデータが未だ書き込まれていない管理領域を特定する。その後、ファイルシステム102は、特定した管理領域内の領域(最下位のクラスタに続くクラスタ)を、書き込み要求が有ったファイルデータの書き込み領域に割り当てる。
なお、ファイルデータが未だ書き込まれていない管理領域が複数存在する場合、ファイルシステム102は、分割情報が示すクラスタ番号が高い管理領域内の領域から順次、書き込み領域に割り当てるものとする。
さらに、書き込み要求が有ったファイルデータと同一のファイルを構成するファイルデータが書き込まれておらず、かつ、ファイルデータが未だ書き込まれていない管理領域が存在しない場合、ファイルシステム102は、複数の管理領域のうちのいずれか1つの管理領域(例えば、分割情報が示すクラスタ番号が高い管理領域)において、既にファイルデータが書き込まれた領域に続く領域(FAT1またはFAT2に「FFFF」が記載されたファイルデータが書き込まれたクラスタに続くクラスタ)を、書き込み領域に割り当てるものとする。
図7は、上記した書み込み領域の割り当て処理を具体的に説明している。例えば、4つの管理領域1〜4に未だファイルデータが書き込まれていない状態において、ファイルAを構成するファイルデータの書き込み要求が有った場合、ファイルシステム102は、分割情報が示すクラスタ番号が最下位の管理領域1内の先頭のクラスタに続くクラスタからなる領域A1を、当該書き込み要求が有ったファイルデータを書き込む領域に割り当てる[図7の(1)]。
また、管理領域1にのみファイルデータが書き込まれた状態において、ファイルBを構成するファイルデータの書き込み要求が有った場合、ファイルシステム102は、分割情報が示すクラスタ番号が管理領域1のクラスタ番号の次に低い管理領域2内の先頭のクラスタに続くクラスタからなる領域B1を、当該書き込み要求が有ったファイルデータを書き込む領域に割り当てる[図7の(2)]。
さらに、管理領域1及び管理領域2にファイルデータが書き込まれた状態において、ファイルCを構成するファイルデータの書き込み要求が有った場合、ファイルシステム102は、分割情報が示すクラスタ番号が管理領域2の次に低い管理領域3内の先頭のクラスタに続くクラスタからなる領域C1を、当該書き込み要求が有ったファイルデータを書き込む領域に割り当てる[図7の(3)]。
また、管理領域1〜3にファイルデータが書き込まれた状態において、再びファイルAを構成するファイルデータであって、領域A1に書き込まれたファイルデータの続きとなるファイルデータの書き込み要求が有った場合、ファイルシステム102は、管理領域1内の領域A1に続く領域A2を、当該書き込み要求が有ったファイルデータを書き込む傾城に割り当てる[図7の(4)]。
上記したファイルシステム102によれば、異なるファイルA〜Cを構成するファイルデータ同士がなるべく同じ管理領域1〜4に書き込まれないようにすることができ、個々のファイルA,B,Cを構成する複数のファイルデータが、それぞれ別々の管理領域1,2,3に連続的に書き込まれる可能性を向上させることができる。
なお、上記コントローラ201のMPU201Bは、ファイルシステム102から出力された論理アドレス及びファイルデータを受信すると、RAM201dに記録された論物テーブルを用いて受信した論理アドレスを物理アドレスに変換するとともに、変換した物理アドレスが示すページに、受信したファイルデータを書き込むものとする。
ここで、この実施の形態における主要な処理動作について、図9及び図10を参照して説明するに先立ち、その主要な処理動作を行なわない場合のファイルシステム102による処理動作について簡単に説明しておくことにする。
すなわち、上記したファイルシステム102による処理動作では、図8に示すように、メモリ202のファイルデータブロック52を4つの管理領域1〜4に分割し、まず、ファイルAを構成するファイルデータa1の書き込み要求が有った場合、自動的に管理領域1内の先頭のクラスタに続くクラスタからなる領域A1が、当該書き込み要求が有ったファイルデータa1を書き込む領域として確保される[図8の(1)]。
また、ファイルAとは異なる他のファイルBを構成するファイルデータbの書き込み要求が有った場合には、自動的に次の管理領域2内の先頭のクラスタに続くクラスタからなる領域B1が、当該書き込み要求が有ったファイルデータbを書き込む領域として確保される[図8の(2)]。
さらに、上記ファイルA,Bとは異なる他のファイルCを構成するファイルデータc1の書き込み要求が有った場合には、自動的に次の管理領域3内の先頭のクラスタに続くクラスタからなる領域C1が、当該書き込み要求が有ったファイルデータc1を書き込む領域として確保される[図8の(3)]。
同様に、上記ファイルA〜Cとは異なる他のファイルDを構成するファイルデータd1の書き込み要求が有った場合には、自動的に次の管理領域4内の先頭のクラスタに続くクラスタからなる領域D1が、当該書き込み要求が有ったファイルデータd1を書き込む領域として確保される[図8の(4)]。
すなわち、上記したファイルシステム102による処理動作では、新たなファイルを構成するファイルデータの書き込み要求が有る毎に、自動的に次の管理領域にそのファイルデータを書き込む領域が確保されていくことになる。
そして、上記ファイルA〜Dとは異なる他のファイルE、つまり、管理領域1〜4の数を超える5番目のファイルEを構成するファイルデータe1の書き込み要求が生じた場合には、自動的に最初の管理領域1に戻り、その管理領域1内の領域A1に続けて、当該書き込み要求の有ったファイルデータe1を書き込む領域E1が確保されることになる[図8の(5)]。
このため、管理領域1内に領域E1が確保された後に、上記ファイルAを構成するファイルデータa1に続くファイルデータa2の書き込み要求が発生した場合には、管理領域1内の領域A1に続けてファイルデータa2を書き込む領域A2を確保することができないことになる[図8の(6)]。
そこで、この実施の形態では、上記したファイルシステム102により、図9に示すように、メモリ202のファイルデータブロック52を4つの管理領域1〜4に分割する。そして、まず、ファイルAを構成するファイルデータa1の書き込み要求が有った場合には、自動的に管理領域1内の先頭のクラスタに続くクラスタからなる領域A1を、当該書き込み要求が有ったファイルデータa1を書き込む領域として確保する[図9の(1)]。
また、ファイルAとは異なる他のファイルBを構成するファイルデータbの書き込み要求が有った場合には、管理領域1内の領域A1に書き込まれたファイルデータa1の拡張性の有無、つまり、ファイルデータa1に続くファイルデータが存在する可能性が高いか否かを判別する。そして、ファイルデータa1の拡張性が高いと判断されたときには、次の管理領域2内の先頭のクラスタに続くクラスタからなる領域B1を、当該書き込み要求が有ったファイルデータbを書き込む領域として確保する[図9の(2)]。
さらに、上記ファイルA,Bとは異なる他のファイルCを構成するファイルデータc1の書き込み要求が有った場合には、管理領域2内の領域B1に書き込まれているファイルデータbの拡張性が高いか否かを判別する。そして、ファイルデータbが例えばディレクトリ情報等のような拡張性の低いデータであると判断されたときには、同じ管理領域2内の領域B1に続く領域C1を、当該書き込み要求が有ったファイルデータc1を書き込む領域として確保する[図9の(3)]。
また、上記ファイルA〜Cとは異なる他のファイルDを構成するファイルデータd1の書き込み要求が有った場合には、管理領域2内の領域C1に書き込まれているファイルデータc1の拡張性が高いか否かを判別し、拡張性の高いデータであると判断されたときには、次の管理領域3内の先頭のクラスタに続くクラスタからなる領域D1を、当該書き込み要求が有ったファイルデータd1を書き込む領域として確保する[図9の(4)]。
さらに、上記ファイルA〜Dとは異なる他のファイルEを構成するファイルデータe1の書き込み要求が有った場合には、管理領域3内の領域D1に書き込まれているファイルデータd1の拡張性が高いか否かを判別し、拡張性の高いデータであると判断されたときには、次の管理領域4内の先頭のクラスタに続くクラスタからなる領域E1を、当該書き込み要求が有ったファイルデータe1を書き込む領域として確保する[図9の(5)]。
このため、上記ファイルAを構成するファイルデータa1に続くファイルデータa2の書き込み要求が発生した場合には、管理領域1内の領域A1に続けてファイルデータa2を書き込む領域A2を確保することができるようになる[図9の(6)]。
図10は、図9を用いて説明した、書き込まれたファイルデータの拡張性に応じて書き込む領域を割り当る処理動作をまとめたフローチャートを示している。この割り当て処理は、上記ファイルシステム102によって実行されるもので、図5に示したフローチャートでは、ステップS609の処理で行なわれるものである。
この処理動作は、上記ソフトウエア(アプリケーション)101からファイルデータの書き込み要求が発生されたことで開始される。例えばファイルAを構成するファイルデータの書き込み要求が有った場合、ファイルシステム102は、ステップS101で、ファイルAを構成するファイルデータを書き込む管理領域1の、最後にファイルデータが書き込まれたクラスタの次のクラスタに空きがあるか否かを判別する。
そして、クラスタに空きがないと判断された場合(NO)、ファイルシステム102は、ステップS102で、次の書き込み先となる管理領域(この場合、管理領域2)を選択し、その管理領域に最後に書き込まれたファイルデータが、ディレクトリ情報のような拡張性の低いデータであるか否かを判別する。
ここで、拡張性の低いデータでないと判断された場合(NO)、ファイルシステム102は、ステップS103で、次の書き込み先となる管理領域(この場合、管理領域3)を選択し、ステップS104で、その管理領域に、書き込み要求されたファイルデータを書き込む領域を確保して書き込みを実行する。
また、上記ステップS101でクラスタに空きがあると判断された場合(YES)、または、上記ステップS102で拡張性の低いデータであると判断された場合(YES)、ファイルシステム102は、ステップS104で、管理領域1に、書き込み要求されたファイルデータを書き込む領域を確保して書き込みを実行する。
その後、ファイルシステム102は、ステップS105で、書き込み要求されたファイルデータを書き込むクラスタが不足したか否かを判別し、不足していると判断された場合(YES)、上記ステップS101の処理に戻される。また、上記ステップS105でクラスタが不足していないと判断された場合(NO)、本フローチャートにおける処理は終了し、ファイルシステム102は、図5に示したステップS607の処理に戻される。
図9及び図10を用いて説明した実施の形態によれば、いずれかの管理領域を選択してファイルデータを書き込む際、その選択された管理領域に最後に書き込まれたファイルデータの拡張性を判別する。そして、拡張性が高い場合には、次の管理領域にファイルデータを書き込み、拡張性が低い場合には、そのファイルデータに続けて、書き込み要求されたファイルデータを書き込むようにしている。これにより、それぞれが複数のファイルデータで構成される複数のファイルを情報記録媒体(この場合、メモリ202)に書き込む際、ファイル毎にファイルデータの連続性を損なうことなく書き込むことができる可能性をより一層向上させるようにすることが可能となる。
なお、上記した実施の形態では、拡張性の低いデータとして、FATファイルシステムにおけるディレクトリ情報を例にしたが、これに限らず、例えば、分散して記録されることが実質的に支障の生じない性質を有するデータ等も、拡張性の低いデータの範疇に入ることになる。
また、上記した実施の形態では、書き込まれたデータが拡張性の高いデータか否かの判別を行なうタイミングとして、次のデータの書き込みが要求された場合を例示したが、これに限定されず、例えばデータの書き込み時にそのデータの拡張性の高低を判別して保持しておき、次のデータを書き込む際に保持しておいた判別結果を参照する等のように、他のタイミングであっても良いものである。
図11は、上記したPC100の基本構成を示している。このPC100は、その主要部であって各部を集中的に制御するCPU1001を備えている。このCPU1001には、BIOS等を記録した読み出し専用メモリであるROM等の不揮発性メモリ1005と、各種データを書き替え可能に記録するRAM等のメモリ1002とが、バス1006で接続されている。
また、バス1006には、記録領域割り当てプログラム等の各種のプログラムを格納するハードディスク1004と、外付けのハードディスク1007をPC100に接続するためのUSB(universal serial bus)コネクタや、SDカード等のメモリカード200が挿入されるメモリカードインターフェース103等を備えたI/F1003とが、図示しないI/Oを介して接続されている。
上記メモリ1002は、各種データを書き替え可能に記録する性質を有していることから、CPU1001の作業エリアとして機能してバッファ等の役割を果たしている。
上記不揮発性メモリ1005には、OS(operating system)や各種のプログラムが記録されている。CPU1001は、不揮発性メモリ1005に記録されているプログラムを読み出し、ハードディスク1004にインストールする。
なお、ファイルを記録する情報記録媒体としては、メモリカード200のみに限らず、例えば、DVD(digital versatile disk)等の各種の光ディスク、各種光磁気ディスク、フレキシブルディスク等の各種磁気ディスク、半導体メモリ等の各種方式のメディアを用いることができる。
また、図示しない通信制御装置を介してインターネット等のネットワークからプログラムをダウンロードし、ハードディスク1004にインストールするようにしても良いものである。この場合に、送信側のサーバでプログラムを記録している記録装置に対しても、この実施の形態を適用することが可能となる。
なお、プログラムは、所定のOS上で動作するものであっても良いし、その場合に各種処理の一部をOSに肩代わりさせるものであっても良いし、所定のアプリケーションソフトやOS等を構成する群のプログラムファイルの部として含まれているものであっても良いものである。
このシステム全体の動作を制御するCPU1001は、このシステムの主記録装置として使用されるハードディスク1004上にロードされたプログラムに基づいて各種処理を実行する。
PC100で実行されるプログラムは、上述した各部(ソフトウエア101、ファイルシステム102、メモリカードインターフェース103)を含むモジュール構成となっている。実際のハードウエアとしては、CPU1001(プロセッサ)が上記記録媒体からプログラムを読み出して実行することにより、上記各部が主記録装置上にロードされ、ソフトウエア101、ファイルシステム102、メモリカードインターフェース103が主記録装置上に生成されるようになっている。
なお、この発明は上記した実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を種々変形して具体化することができる。また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係る構成要素を適宜組み合わせても良いものである。