JP2005122439A - デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法 - Google Patents

デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法 Download PDF

Info

Publication number
JP2005122439A
JP2005122439A JP2003356237A JP2003356237A JP2005122439A JP 2005122439 A JP2005122439 A JP 2005122439A JP 2003356237 A JP2003356237 A JP 2003356237A JP 2003356237 A JP2003356237 A JP 2003356237A JP 2005122439 A JP2005122439 A JP 2005122439A
Authority
JP
Japan
Prior art keywords
virtual
file
fat
recording
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003356237A
Other languages
English (en)
Inventor
Yukio Motosada
幸夫 本貞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2003356237A priority Critical patent/JP2005122439A/ja
Publication of JP2005122439A publication Critical patent/JP2005122439A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 マルチメディア・データを高速に読み出せるよう独自のファイル形式でデータを保持している大容量記憶デバイスのデータを、ホスト機器から迅速かつ的確に読み出す事ができる、デバイス機器及びファイル形式変換方法を提供する。
【解決手段】 ホスト機器20から大容量記憶デバイス10へのファイルデータの読み出しアドレスはFATファイルシステムでのLBA番号Sで与えられる。デバイス10側はデータを独自ファイルシステム15で保持しており、このLBA番号Sを独自ファイル形式でのアドレス番号に変換しつつ、変換後のアドレスからデータを呼びだしてホスト機器20に送る。この方式により、ホスト機器20側はソフトに大きな改修を行わないで大容量記憶デバイス10からのマルチメディア・データの高速呼び出しを実現できる。
【選択図】 図1

Description

本発明は、マスストレージ接続されたホスト機器に、大容量記録メディアに記録されているマルチメディアデータを転送可能なデバイス機器、及びこのデバイス機器の記録装置のフォーマット変換方法に関する。
従来、例えばデジタルスチルカメラ,ビデオカメラ装置,PDA(Personal Digital Assistant)等のデバイス機器では、デバイス機器毎に、HDD(Hard Disk Drive),CD(Compact Disc),DVD(Digital Versatile Disk),MO(Magnet Optical Disc),メモリカード等といった大容量記録メディア(記録媒体)が備えられている。これらデバイス機器の中には、USB(Universal Serial Bus),USB2,IEEE1394等といった物理接続路によってPC(Personal Computer)等のホスト機器にマスストレージ接続され、記録メディアに記録されているマルチメディアデータをホスト機器側に転送できるものがある。
図26は、この種のデバイス機器とホスト機器との物理接続を示した図である。
この場合、PC等のホスト機器20にUSB,USB2,IEEE1394等といった物理接続路30を介してマスストレージ接続されるデジタルスチルカメラ等のデバイス機器110では、そのHDD,CDドライブ,DVDドライブ等といった記録装置11が、ホスト機器20側から、ホスト機器20自身に備えられている記録装置(例えばHDD)21と同様なドライブ21'として認識される構成になっている。そのため、この種のデバイス機器110では、ホスト機器20のOS(operating system)でファイルシステムとして使用されているFAT(File Allocation Table)ファイルシステム25を用いて、その記録装置11の管理を行う構成になっている。
このFATファイルシステム25は、ディスクオペレーティングシステム(DOS)におけるブロックデバイス(ディスク)上のファイルを管理するためのものであって、ユーザが論理的に扱うファイルやディレクトリを、記録装置11,21の記録媒体における実際の物理的な記録領域上に対応させて記録管理するシステムである。
例えば、ホスト機器20の記録装置21に適用されるHDDの場合、記録媒体としてのディスクは、所定の記録容量(例えば一般的なIDE(Integrated Drive Electronics)・HDDの場合は、512バイト)からなるセクタを基礎単位とする物理的な記録領域に分割されている。この分割されたセクタそれぞれには、絶対的な通し番号(セクタ番号、すなわちLBA(Logical Block Address)番号)が付され、ディスク上に記録されているファイルやディレクトリへのアクセスは、このセクタを単位にして行われる。
ところが、ディスクにおけるセクタ総数は膨大であるため、ユーザが論理的に扱うファイルやディレクトリをディスク上のセクタに割り当てる場合は、ファイルやディレクトリを記録する構成単位としてのクラスタによって、ディスク上の実際の物理的なセクタに対応させて管理するようになっている。このクラスタの記録領域サイズは、物理セクタの2の累乗倍となるように、ディスクの種別や容量によって決まっている。例えば、1クラスタを32セクタとして扱うファイルシステムでは、1クラスタ当たりの記録容量は16KBになる。
これにより、ホスト機器20では、デバイス機器110の記録装置21,21'(11)に記録されているファイルやディレクトリへの実際のアクセスは前述したようにセクタ単位で行うが、ファイルやディレクトリに対してディスク上の物理セクタを割り当てる場合は、セクタ単位ではなく、クラスタ単位でその割り当てが行われる。この割り当てでは、1つのファイルに対して複数のクラスタが割り当てられる場合もあり、この場合、割り当てられた複数のクラスタそれぞれのディスク上における物理的な位置は、ディスク上で常に連続して配置されているとは限らない。
そこで、FATファイルシステム25では、ファイルを構成する単位としてのクラスタがどのような順につながって1つのファイルを構成しているかを、ファイルアロケーションテーブル(FAT)26にFAT情報として記録し、管理する構成になっている。
図27は、従来のホスト機器とデバイス機器との論理接続を示した図である。
図に示すように、デバイス機器110は、前述したHDD,CDドライブ,DVDドライブ等といった機器内蔵の記録装置11に加えて、デバイス機器110の動作を制御するアプリケーション14、記録装置11の記録媒体上のファイルを管理するFATファイルシステム25、このFATファイルシステム25に基づいて記録装置11を作動させる記録装置用ドライバ17、及び物理接続路30を介して接続されたホスト機器20との間の通信制御を行う通信ドライバ19を備える。
一方、ホスト機器20は、前述したHDD,CDドライブ,DVDドライブ等といった機器内蔵の記録装置21に加えて、ホスト機器20の動作を制御するアプリケーション24、記録装置21の記録媒体上のファイルを管理するFATファイルシステム25、FATファイルシステム25に基づいて記録装置21を作動させる記録装置用ドライバ27、物理接続路30を介してマスストレージ接続されたデバイス機器110の記録装置11をホスト機器20自身の記録装置21'として取り扱うためのマスストレージドライバ28、及びマスストレージ接続されたデバイス機器110との間の通信制御を行う通信ドライバ29を備える。
ホスト機器20は、デバイス機器110の記録装置11に記録されたファイルやディレクトリを読み取る際、その記録装置11がホスト機器20の記録装置21と同様にFATファイルシステム25によって管理されていることに基づいて、マスストレージドライバ28からLBA番号(絶対セクタ番号)を指定し、通信ドライバ29からマスストレージ接続されたデバイス機器110の記録装置11に読み取り要求を発行する(図27中のステップS1001)。デバイス機器110は、通信ドライバ19がこのホスト機器20からの読み取り要求を受け取ると、記録装置用ドライバ17が、このLBA番号により指定された記録領域の記録内容を記録装置11の記録媒体から読み出す(ステップS1002〜S1005)。そして、デバイス機器110は、LBA番号により指定された記録領域の記録内容を読み取って、通信ドライバ19によって物理接続路30に出力し、ホスト機器20に対してデータ転送する(ステップS1006)。
これにより、ホスト機器20は、デバイス機器110の記録装置11を、ホスト機器20自身に備えられている記録装置21と同様の記録装置21'として認識し、その記録装置11に記録されているファイルやディレクトリの読み取りができる構成になっている。
特開平5−265840号公報 特開2002−108568号公報 特開平3−214310号公報 特開2002−25182号公報
ところで、上述したデバイス機器110では、その記録装置11に記録されているマルチメディアデータをデバイス機器110自身の表示装置等にストリーミングによって表示する場合等のために、記録装置11の特性上から生じざるを得ないフラグメンテーション、すなわち1つのファイルが記録媒体(ディスク)上で物理的に連続配置されて保存されずに断片化されて散在して記録されてしまう状態を極力避け、記録装置11の記録媒体に記録されているマルチメディアデータを所定のビットレート以上の速度で読み出しできるようにしておく必要がある。
そのため、上述したデバイス機器110の記録装置11の場合は、ホスト機器20の場合と同様なFATファイルシステム25によるのではなく、機器独自のファイルシステム15(例えば、UDF(Universal Disk Format)等)によって管理するのが好ましい。
そして、このような機器独自のファイルシステム15を備えたデバイス機器110では、1回に読み書きする基本単位であるブロックサイズは、FATファイルシステム25の基本単位であるクラスタサイズ(最大でも64KB)に比べて遥かに大きく(例えば、512KB、1MB、2MB)なっており、上述したフラグメンテーションの発生を最低限に抑えて、所定のビットレート以上の速度で記録装置11に記録されているマルチメディアデータの読み出しができるようになっている。
しかし、このような機器独自のファイルシステム15を備えたデバイス機器110は、FATファイルシステム25によりその記録装置21が管理されているホスト機器20にUSB(Universal Serial Bus),USB2,IEEE1394等といった物理接続路30を介してマスストレージ接続されても、デバイス機器110の記録装置11の独自ファイルシステム15及びブロックサイズは、ホスト機器20の記録装置21のFATファイルシステム25及びクラスタサイズと異なるため、デバイス機器110のファイルシステム15は、ホスト機器20からのマスストレージドライバ28を介したLBA番号を指定した読み取り要求に、的確に対処することができない虞があった。
また、その対策として、このホスト機器20からのLBA番号を指定した読み取り要求に的確に対処できるように、独自ファイルシステム15を備えたデバイス機器110側で、例えば、記録装置11に記録され、独自ファイルシステム15で管理されている全ファイルの開始ブロック位置とリンクをたどり、デバイス機器110において独自のファイルシステム15で管理されている全ファイルの開始ブロック位置とリンクを、ホスト機器20におけるFATファイルシステム25によるクラスタ番号に変換し、この変換したクラスタ番号を記録装置11のFAT情報として全部登録することも考えられる。
しかし、この作業を行うためには、デバイス機器110側で記録装置11の独自ファイルシステム15による全ファイルのリンクをたどる必要があり、処理能力が非力なデジタルスチルカメラ等といったデバイス機器110の機器システムには不向きであり、その要する時間も、PCでHDDにデータが正しく書き込まれているか否かを検査するチェックディスクやスキャンディスクを行う場合と同じくらいの長時間がかかる。
本発明は、上記した問題点を鑑み、独自ファイルシステムを備えたデバイス機器であっても、マスストレージ接続されたホスト機器からの読み取り要求に迅速かつ的確に対処することができるデバイス機器、及びデバイス機器の記録装置のフォーマット変換方法を提供することを目的とする。
本発明に係るデバイス機器は、独自ファイルシステムによって管理された記録装置を備え、マスストレージ接続されたホスト機器から該独自ファイルシステムとは異なるファイルシステムによって与えられるLBA番号を指定した読み取り要求に相当する記録内容を、前記記録装置から読み取って前記ホスト機器に転送するデバイス機器であって、前記独自ファイルシステムによって管理されている前記記録装置の記録内容を前記ホスト機器のファイルシステムに反映するための仮想ファイル空間と、前記ホスト機器から与えられた読み取り要求のLBA番号が、該仮想ファイル空間におけるいずれの領域の記録内容の読み取りに該当するかを判断する判断手段と、前記記録装置には実際に保持されていない前記仮想ファイル空間の領域の記録内容に該当する場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成する第1の処理手段と、前記記録装置に実際に保持されている前記仮想ファイル空間の領域の記録内容に該当する場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開する第2の処理手段とを備えていることを特徴とする。
また、本発明に係るデバイス機器では、前記仮想ファイル空間は、仮想管理領域及び仮想データ領域を有し、該仮想データ領域は、前記記録装置のデータ領域と同容量に設定され、さらに仮想ディレクトリエントリ領域と該仮想ディレクトリエントリ領域に続く仮想ファイル領域とに分割され、前記判断手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が、該仮想ファイル空間における仮想管理領域及び仮想データ領域の仮想ディレクトリエントリ領域の記録内容の読み取りに該当するか、又は仮想データ領域の仮想ファイル領域に該当するかを判断し、前記第1の処理手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が前記仮想FAT空間の仮想管理領域又は仮想ディレクトリエントリ領域の記録内容に該当する場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成し、前記第2の処理手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が仮想データ領域の仮想ファイル領域に該当する場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開することを特徴とする。
また、本発明に係るデバイス機器では、前記独自ファイルシステムによって管理される前記記録装置の実際のディレクトリエントリのグループ毎に、当該グループについての情報を記録するディレクトリエントリ生成用中間テーブルを生成/更新するとともに、前記独自ファイルシステムによって管理される前記記録装置の実際のファイル毎に、当該ファイルについての情報が記録されるファイル用中間テーブルを生成/更新する中間テーブル生成/更新手段を備え、前記第1の処理手段及び第2の処理手段は、該中間テーブル生成/更新手段によって生成/更新されたディレクトリエントリ生成用中間テーブル及び該ファイル用中間テーブルからなる中間テーブルを参照しながら、それぞれ処理を行うことを特徴とする。
また、本発明に係るデバイス機器の記録装置のフォーマット変換方法は、マスストレージ接続されたホスト機器からデバイス機器に与えられる、該デバイス機器が記録装置を管理する独自ファイルシステムは異なるファイルシステムによる読み取り要求のLBA番号を、該記録装置の相当する記録内容に変換するデバイス機器の記録装置のフォーマット変換方法であって、前記ホスト機器から与えられた読み取り要求のLBA番号が、前記独自ファイルシステムによって管理されている前記記録装置の記録内容を前記ホスト機器のファイルシステムに反映するための仮想ファイル空間の、いずれの領域の記録内容の読み取りに該当するかを判断する判断ステップと、前記ホスト機器から与えられた読み取り要求のLBA番号が前記記録装置には実際に保持されていない前記仮想ファイル空間の領域の記録内容に該当すると判断した場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成する第1の処理ステップと、前記ホスト機器から与えられた読み取り要求のLBA番号が前記記録装置に実際に保持されている前記仮想ファイル空間の領域の記録内容に該当すると判断した場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開する第2の処理ステップとからなることを特徴とする。
また、本発明に係るデバイス機器の記録装置のフォーマット変換方法では、前記仮想ファイル空間は、仮想管理領域及び仮想データ領域を有し、該仮想データ領域は、前記記録装置のデータ領域と同容量に設定され、さらに仮想ディレクトリエントリ領域と該仮想ディレクトリエントリ領域に続く仮想ファイル領域とに分割され、前記ホスト機器から与えられた読み取り要求のLBA番号が、該仮想ファイル空間における仮想管理領域及び仮想データ領域の仮想ディレクトリエントリ領域の記録内容の読み取りに該当するか、又は仮想データ領域の仮想ファイル領域に該当するかを判断する判断ステップと、前記ホスト機器から与えられた読み取り要求のLBA番号が前記仮想FAT空間の仮想管理領域又は仮想ディレクトリエントリ領域の記録内容に該当する場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成する第1の処理ステップと、前記第2の処理手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が仮想データ領域の仮想ファイル領域に該当する場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開する第2の処理ステップとからなることを特徴とする。
また、本発明に係るデバイス機器の記録装置のフォーマット変換方法では、前記独自ファイルシステムによって管理される前記記録装置の実際のディレクトリエントリのグループ毎に、当該グループについての情報を記録するディレクトリエントリ生成用中間テーブルを生成/更新するとともに、前記独自ファイルシステムによって管理される前記記録装置の実際のファイル毎に、当該ファイルについての情報が記録されるファイル用中間テーブルを生成/更新する中間テーブル生成/更新ステップを備え、前記第1の処理ステップ及び第2の処理ステップは、該中間テーブル生成/更新手段によって生成/更新されたディレクトリエントリ生成用中間テーブル及び該ファイル用中間テーブルからなる中間テーブルを参照しながら、それぞれ処理を行うことを特徴とする。
本発明のデバイス機器、及びデバイス機器の記録装置のフォーマット変換方法によれば、デバイス機器は、その記録装置に記録され、独自ファイルシステムで管理されている全ファイルの開始ブロック位置とリンクをたどり、デバイス機器において独自のファイルシステムで管理されている全ファイルの開始ブロック位置とリンクを、ホスト機器におけるファイルシステムによるクラスタ番号に変換し、この変換したクラスタ番号を記録装置のFAT情報として全部登録しておく必要もなくなる。
そして、デバイス機器は、ホスト機器から与えられる読み取り要求の「先頭のLBA番号」が仮想FAT空間(仮想ファイル空間)上のどの仮想領域の記録部分に該当するかに基づき、迅速かつ的確にホスト機器が要求する独自ファイルフォーマットによって管理された記録装置の記録内容を特定することができる。
また、ホスト機器からの1回の読み取り要求で与えられる「読み取り個数」の上限も、最高でも256個であるから、デバイス機器は、ホスト機器から読み取り要求された該当する記録内容を展開するために“256×512バイト=128KB”のメモリ空間を用意すれば、ホスト機器からの全ての読み取り要求に答えることが可能になる。
さらに、独自ファイルフォーマットによって管理された記録装置のディレクトリ及びファイルに関しての情報が記録された中間テーブルを生成し、ホスト機器から与えられるLBA番号を指定した読み取り要求に対する処理を、この中間テーブルを参照して対処することにより、さらにその処理を迅速かつ効率的に行うことができる。
以下、本発明に係るデバイス機器、及びデバイス機器の記録装置のフォーマット変換方法について、その実施の形態を図面とともに説明する。
なお、ホスト機器20と本発明の一実施の形態に係るデバイス機器10との物理接続については、図26に示した従来の接続構成と変わりがないので、その説明は省略する。
図1は、ホスト機器と本発明の一実施の形態に係るデバイス機器との論理接続を示した図である。
本発明の一実施の形態に係るデバイス機器10の構成は、図27に示した従来のデバイス機器110の構成に対し、記録装置11のファイルシステムがFATファイルシステム25から独自ファイルシステム15に変更され、FATエミュレータ部18が新たに備えられている点が相異する。
ホスト機器20は、このデバイス機器10の記録装置11に記録されたファイルやディレクトリを読み取る際、自身の記録装置21がFATファイルシステム25によって管理されていることに基づき、通信ドライバ29を介してマスストレージ接続されたデバイス機器10の記録装置11に対しても、マスストレージドライバ28からFATファイルシステム25に基づいたLBA番号(絶対セクタ番号)を指定した読み取り要求を発行する(ステップS101)。
この読み取り要求に対して、デバイス機器10の通信ドライバ19は、ホスト機器20により指定されたLBA番号をFATエミュレータ部18に渡す(ステップS102)。
FATエミュレータ部18は、通信ドライバ19から受け取ったホスト機器20により指定されたLBA番号のLBA変換処理を行う。FATエミュレータ部18は、LBA変換処理として、ホスト機器20により指定されたLBA番号から判断し、独自ファイルシステム15によって管理されている記録装置11に該当データが実際に記録されていない場合には、該当データを生成したり、記録装置11に該当データが実際に記録されている場合には、独自ファイルシステム15によって管理する該当データの実際のLBA番号に変換したりする。
その上で、FATエミュレータ部18は、ホスト機器20により指定されたLBA番号を、LBA変換処理によって、独自ファイルシステム15によって管理する該当データの実際のLBA番号に変換した場合は、その実際のLBA番号を記録装置用ドライバ17に渡す(ステップS103)。
そして、記録装置用ドライバ17は、このFATエミュレータ部18によって変換された実際のLBA番号の記録内容(データ)を独自ファイルシステム15によって管理された記録装置11の記録媒体から読み取る(ステップS104,S105)。
通信ドライバ19には、FATエミュレータ部18がLBA変換処理によって生成した該当データや、記録装置用ドライバ17を介して独自ファイルシステム15によって管理された記録装置11から読み取った実際のLBA番号の記録内容が供給され(ステップS106)、通信ドライバ19は、これをホスト機器20によって指定されたLBA番号で記録装置11に記録されているデータとして、ホスト機器20に転送する(ステップS107)。
このように、ホスト機器20がLBA番号で指定した記録内容と、デバイス機器10の記録装置11で独自ファイルシステム15により同じLBA番号で管理された記録内容とが異なるとしても、デバイス機器10は、ホスト機器20が指定したLBA番号を常にFATエミュレータ部18によってLBA変換して、独自ファイルシステム15により管理されているデバイス機器10の記録装置11から、このホスト機器20が指定したLBA番号と同じLBA番号の記録内容を読み取ったようにして、ホスト機器20がLBA番号で指定した記録内容に相当する記録内容を出力する。そのため、ホスト機器20側としては矛盾なく、FATファイルシステム25に基づくLBA番号を指定した記録内容の読み取り処理を進行できる。
次に、上述したFATエミュレータ部18、及びこのFATエミュレータ部18を備えたデバイス機器10の詳細について説明する。
図2は、本発明の一実施の形態に係るデバイス機器の記録装置における記録媒体の独自ファイルフォーマットと仮想FATファイルフォーマットとの対比図である。
図2(a)は、本実施の形態のデバイス機器10の記録装置11に係り、その独自ファイルシステム15による記録媒体のファイルフォーマット40の一実施例を示したものである。
記録装置11の独自ファイルシステム15は、デバイス機器10の特性上、決められたビットレートでのデータの記録・再生を必要とする。そのため、記録装置11が1回に読み書きする基本単位としてのブロックは、フラグメンテーションを避けるため、ホスト機器20のFATファイルシステム25における基本単位としてのクラスタのサイズ(最大でも64KB)に比べて遥かに大きいサイズ(例えば、512KB、1MB、又は2MB)になっている。
この独自ファイルシステム15による独自ファイルフォーマット40は、FATファイルシステム25のFAT情報にとらわれない、独自の管理領域41とデータ領域42とを備えている。その上で、例示した独自ファイルフォーマット40では、階層化ディレクトリ構造もサポートしている。
図2(a)において、そのデータ領域42内のブロック43は、ファイルが配置されているファイルブロック部分43f、及び階層化ディレクトリのエントリを意味するディレクトリ(フォルダ)が配置されているディレクトリブロック部分43d、さらに、デバイスの都合上、記録装置11に保持せねばならないデータであってホスト機器20に対しては不可視として扱う不可視コンテンツが配置されている不可視ブロック部分43cに大別される。これら、ファイル,ディレクトリエントリ,及び不可視コンテンツは、独自ファイルフォーマット40の都合上、物理的に不連続な複数のブロック43に分割されて配置される場合もある。
そして、本実施の形態のデバイス機器10では、FATエミュレータ部18によって、図2(a)に示した如くの独自ファイルフォーマット40を備えた記録装置11は、図2(b)に示すような仮想FATファイルフォーマット50を備えた仮想記録装置21'に偽装されて、ホスト機器20に対して取り扱われる。
図2(b)は、本実施の形態のデバイス機器10の記録装置11をホスト機器20に対して仮想記録装置21'に見せかけるための仮想FATファイルフォーマットの一実施例を示したものである。
仮想FATファイルフォーマット50は、仮想管理領域51と、仮想データ領域52とを備え、さらに仮想データ領域52は、仮想ディレクトリエントリ領域53と、仮想ファイル領域54とを備えている。
この仮想FATファイルフォーマット50において、実際に必要であるのは、仮想クラスタ番号が“0”及び“1”のクラスタC(0),C(1)によって構成される仮想管理領域51であり、デバイス機器10のFATエミュレータ部18によってこの仮想管理領域51がデバイス機器10の記録装置11を含むメモリ上に生成される。
この仮想クラスタ番号が“0”のクラスタC(0)の記録内容は、独自ファイルフォーマット40の管理領域41の記録内容から生成される。FATファイルシステム25を備えるホスト機器20側からの読み取り要求は、最低で512バイト、最高でも128KBに満たないので、少なくとも仮想管理領域51に属するこのクラスタC(0)の記録内容については、デバイス機器10の記録装置11を含むメモリ上に展開した上で、ホスト機器20側にデータとして渡せる構成になっている。このクラスタC(0)の記録内容は、FATファイルシステム25に基づくMBR(Master Boot Record),DPB(Drive Parameter Block),FSINFO(File System Information) 等に相当する。
また、仮想クラスタ番号が“1”のクラスタC(1)は、記録装置11の記録媒体上のファイルデータの記録領域間の繋がりを認識できるようにするための繋がり情報(FAT情報)を記録するファイルアロケーションテーブル26としてのFAT1,FAT2に相当する。このFAT1とFAT2との内容は、FATファイルシステム25の規定によれば全く同じで、一方のFAT1が破壊されたときに、他方のFAT2の内容を代替で使用できるようになっている。
そして、このFAT1,FAT2では、記録装置11の先頭の2クラスタ分に該当する領域のFAT情報は固定値となっている。この固定値部分のFAT情報については、図2(b)中に示したFAT1,FAT2の具体例では、“FIX”で図示してある。
ファイルアロケーションテーブル26としてのFAT1,FAT2は、独自ファイルフォーマット40において例示した、ファイル“1(1-1〜1-3)”,ファイル“2(2-1〜2-5)”,ディレクトリエントリ“A(A-1〜A-4)”,ディレクトリエントリ“B(B-1,B-2)”が、FATファイルシステム25の基礎管理単位であるクラスタ単位ではどのような形でリンクされているかを示すものである。実際に、記録装置21の記録媒体上では、図2(a)の独自ファイルフォーマット40におけるファイル“2(2-1〜2-5)”やディレクトリエントリ“A(A-1〜A-4)”で例示したように、複数のクラスタを使用するファイルやディレクトリエントリは、その使用した複数のクラスタが不連続になることが多い。
そこで、本実施例の仮想FATファイルフォーマット50では、仮に独自ファイルシステム15の独自ファイルフォーマット40上における配置が非連続であったとしても、その仮想ディレクトリエントリ領域53や仮想ファイル領域54上では、全てのファイル及びディレクトリエントリを、図2(b)に示すように連続して配置する構成を採用する。これにより、デバイス機器10側の処理負荷の軽減がはかれることになる。このように、独自ファイルシステム15の独自ファイルフォーマット40上における配置が非連続であったとしても、仮想FATファイルフォーマット50上では、全てのファイル並びにディレクトリエントリを「連続して配置する」ことを、以下、「シリアライズ展開」と称することにする。
また、図2(b)に示すように、本実施例のFATエミュレータ部18によるFATエミュレーションでは、例外的に、仮想FATファイルフォーマット50における仮想ディレクトリエントリ領域53の最終のディレクトリエントリ“B(B-1,B-2)”と、仮想ファイル領域54の最初のファイル“1(1-1〜1-3)”との間には、ファイル“1”,“2”の仮想クラスタ番号の算出を容易にするために、敢えて不連続な領域が定義されている。
仮想FATファイルフォーマット50では、ファイルアロケーションテーブル26としてのFAT1,FAT2にしたがって、以降、仮想ディレクトリエントリ領域53と仮想ファイル領域54とにデータを配置する。ここで、両領域53,54にデータを配置するといっても、実際に記録装置11の記録媒体上に両領域53,54を設けてデータを配置するのではなく、デバイス機器10の記録装置11を含むメモリ上を使用して、記録装置11にあたかも両領域53,54があってデータが配置されているように、ホスト機器20に対して見せかけるだけである。
実際のFATファイルシステム25においては、ディレクトリエントリのみが、記録装置21の記録媒体上のクラスタ番号が“2”のクラスタC(2)から始まるデータ領域に、先頭側から固まって実際に配置され、ディレクトリエントリ領域53を形成して存在するとは限らない。
しかしながら、本実施例の仮想FATファイルフォーマット50のエミュレートでは、ディレクトリエントリのみを、クラスタ番号が“2”のクラスタC(2)から始まる仮想データ領域52に、その先頭クラスタ方向に連続して配置する。図2(b)に示した実施例では、2つのディレクトリエントリ“A(A-1〜A-4)”,“B(B-1,B-2)”が、クラスタ番号が“2”のクラスタC(2)から始まる仮想データ領域52の先頭クラスタ側に存在することになる。この場合、ディレクトリエントリ“A”は、いわゆるルートディレクトリに相当する。
このルートディレクトリに存在するファイルやディレクトリの総数については、FATの種類によって異なる。具体的には、ルートディレクトリに存在するファイルやディレクトリの総数は、その種類が「FAT32」システムでは特に制限がないが、「FAT16」システム,「FAT12」システムでは、それぞれ512個,1,024個といった制限がある。そのため、仮に「FAT16」システムや「FAT12」システムのエミュレートを行う場合、この制限を超えたものについてはサブディレクトリを生成して、その中のファイルとしてホスト機器20に見せる必要がある。なお、デバイス機器10側の仮想FATファイルフォーマット50でルートディレクトリ“A”に生成するファイルやディレクトリエントリの数を制限するように実装を行えば、この問題の発生を防ぐことができる。
したがって、実施例の「FAT32」システムによる仮想FATファイルフォーマット50では、仮想ディレクトリエントリ領域53のディレクトリエントリ“B”の後、しばらく仮想の空き領域が続いた上で、仮想ファイル領域54が配置される。
図2(b)に示した実施例では、仮想ファイル領域54には、説明簡便のため、ファイル“1(1-1〜1-3)”とファイル“2(2-1〜2-5)”との2つのファイルだけしか存在していない状況が図示されている。そして、ファイル“1(1-1〜1-3)”が3ブロック、ファイル“2(2-1〜2-5)”が5ブロックを使用している状況が図示されている。
このような構成からなる仮想FATファイルフォーマット50を、デバイス機器10のFATエミュレータ部18により生成するにあたっては、後述する中間テーブル70を生成してから行われる。この中間テーブル70は、図2(a)に破線で示したように、デバイス機器10における記録装置11の実際の管理領域41又はデータ領域42に、不可視コンテンツの場合と同様に不可視に生成されて保持されている構成でもよいし、又はデバイス機器10に備えられた記録装置11とは別の記録装置、例えば揮発性メモリ(RAM)や不揮発性メモリ(例えば、フラッシュメモリ等)に保持する構成でもよい。
次に、上述した仮想FATファイルフォーマット50による仮想FAT空間50sの構成について、実施例に基づき説明する。
この仮想FATファイルフォーマット50によって記録装置11を含むデバイス機器10に構成される仮想FAT空間50sは、独自ファイルシステム15の定義により実装依存である。そこで、一例として、次のようなデバイス機器10における独自ファイルシステム15及び記録装置11の構成を便宜的に想定し、上述した仮想FATファイルフォーマット50による仮想FAT空間50sの構成及び生成方法の一実施例について説明する。
本実施例で想定するデバイス機器10における実際の記録装置11の諸元は、例えば、その記憶容量が20GBで、その中、10%に該当する2GBを管理領域41として使用し、実際のデータ領域42は18GBであるものとする。また、記録装置11が1回に読み書きする基本単位としてのブロック(ホスト機器20の記録装置21が1回に読み書きする基本単位としてのクラスタに対応)のサイズは、独自ファイルシステム15によって2種類が混在し、第1のブロックサイズは1ブロック当たり16KBとし、第2のブロックサイズは1ブロック当たり1MB(=1024KB)であるものとする。また、このデータ領域42における第1のブロックサイズによるデータ領域と第2のブロックサイズによるデータ領域との混在比率は、ダイナミックに変化するものとし、その情報は管理領域41に記録されるものとする。
これに対し、FATエミュレータ部18によってエミュレートされて構成される仮想記録装置21'の諸元は、例えば、仮想記録装置21'自体は「FAT32」システムのエミュレートを行うものであって、その1回に読み書きする基本単位としてのクラスタのサイズは16KB(=42セクタ)であるものとする。仮想記録装置21'では、仮想データ領域52として、実際の記録装置11のデータ領域32の18GBをそのまま使用するが、FATファイルシステム25の特性上、1GBを仮想ディレクトリエントリ領域53として固定し、残り17GBを仮想ファイル領域54とする。なお、この仮想ディレクトリエントリ領域53と仮想ファイル領域54との比率は、独自ファイルシステム15の構成により実装依存であるので、常にこのようになるとは限らない。
以上の条件から、算出した仮想FAT空間50sのマッピングを図3に示し、図2に示したデバイス機器10の記録装置11の独自ファイルフォーマット40と仮想FATファイルフォーマット50との関係を参照しながら、この仮想FAT空間50sについて説明する。
図3は、本発明の一実施の形態に係るデバイス機器に関し、実際の記録装置及び仮想記録装置それぞれの記憶空間におけるマッピングの一実施例を示した図である。
図3において、仮想記録装置21'の仮想ディレクトリエントリ領域53と仮想ファイル領域54と合わせた仮想データ領域52は、実際の記録装置11のデータ領域42そのものを反映していることを意味している。ただし、仮想記録装置21'では、実際の記録装置11のデータ領域42中のディレクトリエントリについては、そのまま仮想記録装置21'の仮想FAT空間50sの仮想ディレクトリエントリ領域53にデータが反映されるのではなく、FATファイルシステム25に合わせた変更が施されている。それ以外の仮想FAT空間50sの領域51,54は、実際の記録装置11には存在しない部分であり、ホスト機器20からのFATファイルシステム25に基づく読み取り要求に応じてデバイス機器10の記録装置11を含むメモリ上に展開された上、ホスト機器20に対してデータ転送される部分である。
ここで、本実施例における仮想FAT空間50sを生成するための計算例について説明する。
まず、仮想FAT空間50sを生成するに当たっては、実際の記録装置11のデータ領域42の大きさである18GB分が何セクタに該当するか、そのセクタ総数Sdfを計算する。
Sdf = 18GB÷512Byte = 18×1024×1024×1024÷512 = 37748736 (1)
同様にして、仮想FAT空間50sにおける1GBの仮想ディレクトリエントリ領域53部分のセクタ数Sdを計算する。
Sd = 1GB÷512Byte = 1×1024×1024×1024÷512 = 2097152 (2)
同様にして、仮想FAT空間50sにおける17GBの仮想ファイル領域54部分のセクタ数Sfを計算する。
Sf = 17GB÷512Byte = 17×1024×1024×1024÷512 = 35651584 (3)
この結果、実際の記録装置11におけるデータ領域42の18GB分の仮想FAT空間50sにおける仮想データ領域52の仮想クラスタ総数Cdfは、
Cdf = 37748736÷32 = 1179648 (4)
になることが求められる。
そこで、仮想データ領域52のクラスタ総数Cdfが“1,179,648”である仮想FAT空間50sを仮想した場合、仮想FATファイルシステム25としての管理領域が2クラスタ分あるので、仮想FAT空間50sにおけるクラスタ総数Ctは、
Ct = 1179648+2 = 1179650 (5)
になる。
同様して、仮想ディレクトリエントリ領域53及び仮想ファイル領域54それぞれのクラスタ総数Cd,Cfは、
Cd = 2097152÷32 = 65536 (6)
Cf = 35651584÷32 = 1114112 (7)
になることが求められる。
その上で、仮想FAT空間50sおけるクラスタ総数Ctである“1,179,650”クラスタをサポートする仮想ファイルアロケーションテーブル26としての仮想FATに必要なセクタ数Cfatを求める。本実施例では、仮想FATは「FAT32」システムのため、1クラスタの管理に必要な記録容量は“32ビット=4バイト”であり、1セクタは512バイトのため、1セクタ当たり“512÷4=128”個のクラスタが管理可能である。
したがって、1つのFATに必要なセクタ数Cfatは、
Cfat = 1179650÷128 = 9216.0156255 (8)
になる。これを正規化すると1つの仮想FAT当たり、9,217セクタが必要なことを求めることができる。
しかし、実際には、仮想FATとして、FAT1及びFAT2の2つの仮想ファイルアロケーションテーブル26が必要なので、仮想FATだけに必要なセクタ総数Ctfatは、
Ctfat = 9217×2 = 18434 (9)
になる。
次に、上述した仮想記録装置21'の仮想FAT空間50sにおける各部の配置について説明する。
まず、仮想FAT空間50sにおける仮想MBRの配置とその仮想LBA番号について説明する。
MBRは、いわゆる記録装置11の物理セクタ“0”に配置され、ホスト機器20は最初にここを読み、デバイス機器10の記録装置11における記録媒体の物理的な情報、及びパーティションの切られ方を判断する。また、MBRには、IPL(Initial Program Loader)も記載されている。そして、このMBRの領域は、1セクタ(512バイト)サイズしかないので、実際には記録装置11の記録媒体に記載されていてもよいし、ホスト機器20側から読み取り要求があった場合、記録装置11を含むデバイス機器10の記録装置11を含むメモリ上に仮想的に生成してホスト機器20に返しても、どちらでもよい。
本実施例では、MBRは、ホスト機器20側からLBA番号が“0”の読み取り要求があった際に、デバイス機器10のメモリ上の、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)に仮想的に生成する構成になっている。そのため、本実施例では、MBRの仮想FAT空間50sおける仮想LBA番号は“0”で固定である。また、バックアップ用のMBR(2)の仮想LBA番号は“1”で、同じく固定である。
次に、仮想FAT空間50sにおけるDPB(Drive Parameter Block)の配置とその仮想LBA番号について説明する。
このDPBは、BPB(Bios Parameter Block)と称する場合もあり、記録媒体のパーティションの開始位置を示すもので、仮想FAT空間50sおける仮想クラスタ番号“0”を意味する。このDPBの位置情報は、MBRに「領域開始位置」として記載されており、自由に設定が可能である。このDPBは、MBRの直後に配置してもよいが、通常は、MBRの直後に配置されることはなく、数セクタ後に配置されている。
本実施例では、仮想FAT空間50sの仮想LBA番号“63”をDPBの配置位置としている。そのため、仮想FAT空間50sおける仮想LBA番号“2”〜“62”のセクタは、未使用領域になっている。
そして、このDPBの領域も1セクタサイズしかないので、実際には記録装置11の記録媒体に記載されていてもよいし、ホスト機器20からの読み取り要求があった場合、デバイス機器10のメモリ上に仮想的に展開してからホスト機器20に返してもよい。本実施例では、DPBは、MBRの場合と同様に、ホスト機器20から読み取り要求があった際に、デバイス機器10のメモリ上の、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)に仮想的に生成する構成になっている。
次に、仮想FAT空間50sにおけるFSINFO(File System Information)の配置とその仮想LBA番号について説明する。
このFSINFOには、記録媒体の残りクラスタ数や、最後にアクセスしたクラスタ番号が情報として保持される。通常、FSINFOは、DPBの直後に配置されるので、仮想FAT空間50sの仮想LBA番号“64”を割り当てる。なお、「FAT32」システム以外のFATファイルシステム25をエミュレートする場合は、特にFSINFOは設定しなくてもよい。本実施例では、「FAT32」システムを採用しているので、FSINFOは、MBR,DPBの場合と同様に、デバイス機器10のメモリ上の、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)に仮想的に生成する構成になっている。
次に、仮想FAT空間50sにおけるファイルアロケーションテーブル26としての仮想FATの配置とその仮想LBA番号について説明する。
この仮想FATも、仮想FSINFOの直後の仮想FAT空間50sに配置してもかまわないのであるが、本実施例では便宜上から、仮想FAT空間50sの仮想LBA番号“65〜95”の仮想クラスタを未使用とし、仮想LBA番号“96”を仮想FATのスタートセクタとしている。そして、この仮想FATは、仮想FAT1に続いて仮想FAT2が配置されている構成になっている。
そこで、本実施例では、1つのFAT当たりに必要なセクタ数Cfatとして、9,217セクタが必要なことは、式(8)に示すようにして求められるので、仮想FAT1のスタート仮想LBA番号である“96”にこの1つのFATに必要なセクタ数Cfatである“9,217”を加え、仮想FAT2のスタート仮想LBA番号には“9,313”を割り当てる。
次に、仮想FAT空間50sにおける仮想ディレクトリエントリ領域53の配置とその仮想LBA番号について説明する。
ファイルアロケーションテーブル26としてのFAT2はFAT1と同じで、その記録領域として9,217セクタが必要であることから、仮想ディレクトリエントリ領域53のスタート仮想LBA番号は、仮想FAT2のスタート仮想LBA番号“9,313”に、1つのFATに必要なセクタ数Cfatである“9,217”を加えた、仮想LBA番号“18,530”を割り当てる。
次に、仮想FAT空間50sにおける仮想ファイル領域54の配置とその仮想LBA番号について説明する。
本実施例の場合、仮想ディレクトリエントリ領域53に必要なセクタ数Sdは、式(2)に示したように、2,097,152セクタ(1GB)であるので、仮想ファイル領域54のスタート仮想LBA番号は、仮想ディレクトリエントリ領域53のスタート仮想LBA番号“18,530”に、仮想ディレクトリエントリ領域53に必要なセクタ数Sdである“2,097,152”を加えた、仮想LBA番号“2,115,682”を割り当てる。
その上で、仮想FAT空間50sの最終仮想LBA番号と仮想FAT空間50s全体としてのセクタ総数Stを求める。
本実施例の場合、仮想ファイル領域54に必要なセクタ数Sfは、式(3)に示したように35,651,584セクタ(17GB)であるので、仮想FAT空間50sの最終仮想LBA番号は、仮想ファイル領域54のスタート仮想LBA番号“2,115,682”に、仮想ファイル領域54に必要なセクタ数Sfである“35,651,584”を加えて、“1”セクタ分を引いた仮想LBA番号“37,767,265”になる。そして、仮想FAT空間50sにおけるセクタ総数Stは、仮想LBA番号が“0”のセクタ分を含めて、37,767,266セクタになる。
さらに、パーティション1(本実施例では、DPBから仮想FAT空間50sの最終セクタまでが該当)の総セクタ数を求めると、先に求めた仮想FAT空間50sにおけるセクタ総数Stである“37,767,266”から、DPB開始位置までに存在するセクタ数“63”を引いた、37,767,203セクタになる。
したがって、上述の仮想LBA番号を求めた場合と同様の方法を用いて、仮想FAT空間50sにおける各部の先頭仮想クラスタ番号を求めると次のようになる。
DPB: 仮想クラスタ番号 “0”
FAT1/2: 仮想クラスタ番号 “1”
ディレクトリエントリ: 仮想クラスタ番号 “2”
ファイル領域: 仮想クラスタ番号 “65,538”
最終クラスタ: 仮想クラスタ番号 “1,179,649”
クラスタ総数: “11,796,950”クラスタ
この結果、図3に示した如くの仮想FAT空間50sのマッピングを経て、仮想FAT空間50sにおける仮想LBA番号(セクタ番号)と仮想クラスタ番号との間には、次の変換式が成立することになる。
この変換式により、ホスト機器20からデバイス機器10に発行されたLBA番号(絶対セクタ番号)Sを指定した読み取り要求に対して、ホスト機器20から指定されたこの要求LBA番号Sが、仮想FAT空間50sおけるどの仮想クラスタに含まれるかを、変換式1に基づき求めることができる。
<変換式1>
0≦S≦62 仮想クラスタ 該当なし
63≦S≦95 仮想クラスタ番号 “0”
96≦S≦9312 仮想クラスタ番号 “1”(FAT1)
9313≦S≦18529 仮想クラスタ番号 “1”(FAT2)
18530≦S 仮想クラスタ番号 “x”
x=(S-18530)¥32+2
※¥は、除算の結果の小数点以下切捨てを行う演算子。
よって、ホスト機器20からデバイス機器10に与えられる読み取り要求が指定するLBA番号(絶対セクタ番号)Sを、この仮想FAT空間50sの仮想LBA番号に該当させるようにすれば、ホスト機器20からデバイス機器10に対して発行されるLBA番号Sを指定した読み取り要求が、デバイス機器10の独自ファイルシステム15によって管理された記録装置11のどのクラスタ(ブロック)に相当するものであるかを、デバイス機器10側で仮想FAT空間50sから容易に推定することができる。
また、例えば、デバイス機器10からホスト機器20に、デバイス機器10の独自ファイルシステム15によって管理された記録装置11の所望のクラスタ(ブロック)の記憶内容を読み取らせたい場合は、デバイス機器10は、仮想FAT空間50sにおけるこの所望のクラスタ(ブロック)に該当する仮想クラスタ番号の仮想LBA番号を、LBA番号Sとして指定する読み取り要求を、ホスト機器20に発行させればよい。
この場合、仮想クラスタ番号と仮想LBA番号との対応関係は、次の<変換式2>に示すようになる。
<変換式2>
仮想クラスタ番号 “0” 仮想LBA番号 “63〜95”
仮想クラスタ番号 “1” 仮想LBA番号 “96〜18529”
仮想クラスタ番号 “x(≧2)” 仮想LBA番号
“(x−2)×32+18530〜(C−2)×32+18530+32−1”
次に、本発明の一実施の形態に係るデバイス機器10による、仮想記録装置21'の仮想FAT空間50sにおける各部の構成及び生成方法について説明する。
仮想FATファイルシステム25の仮想FAT空間50s上に、ファイルアロケーションテーブル(FAT)26,仮想ディレクトリエントリ領域53,仮想ファイル領域54をマッピングするには、独自ファイルシステム15中に存在する記録装置11の全ファイル/全ディレクトリをシリアルに展開してから行う必要がある。
そのため、本実施の形態のデバイス機器10では、図2及び図3に示した仮想FAT空間50sの各部を生成する際に、予め中間テーブル70を生成し、この中間テーブル70を使用して独自ファイルシステム15中に存在する記録装置11の全ファイル/全ディレクトリをシリアルに展開してから、仮想FAT空間50sの各部を生成する構成を採用している。これにより、記録装置11の独自ファイルシステム15による全ファイル/全ディレクトリのリンクをたどる必要もなく、PCに比べて処理能力が劣るデバイス機器10であっても、この中間テーブル70を使用することによって、容易にかつ短時間で仮想記録装置21'の仮想FAT空間50sの各部が生成可能になっている。
そこで、まず、この中間テーブル70の構成及び生成方法について説明する。
本実施例の場合は、中間テーブル70として、ディレクトリエントリ生成用中間テーブルと、ファイル用中間テーブルとが生成される。この中間テーブル70の構成及び生成方法を説明するに当たっては、図4に示すようなディレクトリツリーが記録装置11を管理する独自ファイルシステム15中に存在するものと仮定して説明する。
図4は、デバイス機器の実際の記録装置を管理する独自ファイルシステム中に存在するディレクトリツリーの一例を示した図である。
ここで、「ディレクトリに存在するファイルとディレクトリ」を1まとめにして「グループ」と称する。この「グループ」は、「ディレクトリエントリ」の包含内容と等価になる。
本実施例では、デバイス機器10は、そのFATエミュレータ部18が、記録装置11の管理領域41の管理情報をもとに、各グループにつき、まず図5に示すようなディレクトリエントリ生成用中間テーブル71を生成する。
図5は、ディレクトリエントリ生成用中間テーブルの一実施例の構成図である。
ディレクトリエントリ生成用中間テーブル71には、「グループ番号」Gn,「ホスト機器20上で表示したいグループの名称」Ng,「グループに存在するファイルとグループ(エントリ)の総計」Gfg,「グループに存在する最初のグループ番号」Gsg,「グループに存在する最後のグループ番号」Geg,「グループに存在する最初のファイル番号」Gsf,及び「グループに存在する最後のファイル番号」Gefからなる情報が記録される。
独自ファイルシステム15のデータ領域42に、グループやファイルが存在しない場合は、上記ディレクトリエントリ生成用中間テーブル71には、“−1”を設定する(2バイトアサインのため、実際は“0xFFFF”)。よって、グループに存在しうる最大のグループ番号、又は最大のファイル番号は、前述した仮想FAT空間50sにおける1GBの仮想ディレクトリエントリ領域53の関係から、“65,534”となる。
なお、この上限は、ディレクトリエントリ生成用中間テーブル71の定義の仕方によって変動する。つまり、ファイル数やディレクトリ数が極端に多い独自ファイルフォーマット40をエミュレートする場合は、ディレクトリエントリ生成用中間テーブル71に割り当てるバイト数を増やして対応する。また、本実施例では、仮想FAT空間50sの生成時に、仮想ディレクトリエントリ領域53の上限を1GBに設定したが、この設定によっても各グループに存在しうる下位グループやファイルの数の上限も制限が加わる。独自ファイルフォーマット40の仕様によっては、仮想FAT空間50sの仮想ディレクトリエントリ領域53のサイズを調整する。
このような定義にしたがって、図4に示したディレクトリツリーを例に、独自ファイルシステム15中におけるグループ番号“0”のディレクトリエントリ生成用中間テーブル71を生成すると、図6に示すようになる。
図6は、グループ番号“0”のディレクトリエントリ生成用中間テーブルの構成図である。
図6に示したディレクトリエントリ生成用中間テーブル71では、「グループ番号」Gnは“0”、「ホスト機器20上で表示したいグループの名称」Ngは“¥(ルートディレクトリ)”になる。また、「グループに存在するファイルとグループ(エントリ)の総計」Gfgは、グループ番号“0”のグループには、グループ番号“1”,“2”の2つのエントリ“Dir1”,“Dir2”が存在し、ファイル番号“0”〜“2”の3つのファイル“File0”〜“File2”が存在するので、“5”になる。また、「グループに存在する最初のグループ番号」Gsnは“1”、「最後のグループ番号」Genは“2”、「最初のファイル番号」Gsfは“0”、「最後のファイル番号」Gefは“2”になる。
同様に、グループ番号“1”のテーブルを生成すると、図7に示すようになる。
図7は、グループ番号“1”のディレクトリエントリ生成用中間テーブルの構成図である。
以上のようにして生成したディレクトリエントリ生成用中間テーブル71は、1グループ当たり24バイトで形成される。また、グループ毎に生成されるディレクトリエントリ生成用中間テーブル71のグループ総数は、仮想FAT空間50sの仮想ディレクトリエントリ領域53のサイズが1GBである関係から、後述のように約2,700になる。したがって、ディレクトリエントリ生成用中間テーブル71は、全体でも64,800バイト(24×2700)に過ぎない。
このように、ディレクトリエントリ生成用中間テーブル71は、全体でもサイズが小さいので、前述したMBR、DPB、FSINFOの場合と同様に、デバイス機器10の記録装置11を含むメモリ上に展開する。
本実施例では、前述した仮想MBR、仮想DPB、仮想FSINFOの場合とは異なり、図2に示すように、記録装置11の独自ファイルフォーマット40中の管理領域41又はデータ領域42の中間テーブル退避領域に展開して不可視に生成するものとする。
また、本実施例では、デバイス機器10は、そのFATエミュレータ部18が、記録装置11の管理領域41の管理情報をもとに、各グループのファイルにつき、図8に示すようなファイル用中間テーブル72を生成する。
図8は、ファイル用中間テーブルの一実施例を示した図である。
ファイル用中間テーブル72には、「所属するグループ番号」Gn,「ファイルシリアル番号」Fn,「ホスト機器20上で表示したいファイル名」Nf,「ブロックサイズ」Bs,「作成時刻」Tt,「作成日時」Td,「更新時刻」Tut,「更新日時」Tud,「ファイル先頭の物理LBAアドレス」Ad,「ファイル長」Lf,「ファイル開始仮想クラスタ番号」Cfs,「ファイル終了仮想クラスタ番号」Cfe,「特殊フラグ」flgといった情報が含まれている。
「所属するグループ番号」Gnには、図5に示したディレクトリエントリ用の中間テーブル71の作成時に説明した、所属するグループ番号Gn(図4参照)が記載される。例えば、本実施例ではルートディレクトリに存在するファイル“File0”〜“File2”の場合、「所属するグループ番号」Gnは“0”となる。
「ファイルシリアル番号」Fnには、ディレクトリエントリ生成用中間テーブル71の作成時に付されるファイルにユニークなシリアル番号が記載される。
「ホスト機器上で表示したいファイル名」Nfには、ディレクトリエントリに記載するファイル名が記載される。このファイル名Nfは、独自ファイルフォーマット40の管理領域41からリンクをたどり、その独自管理情報から生成されたものでも、新たに生成し直されたものでもかまわない。本実施例では、DOS形式でのファイル名しか許していないので、12バイトとしているが、LFN(Long File Name=長いファイル名)対応させる場合には拡張が施される。
「ブロックサイズ」Bsには、ファイルが使用している基本ブロックサイズが記載される。本実施例の場合には、その諸元により、ブロックサイズは、1MBか、16KBかのいずれかが記載される。
「作成時刻」Tt,「作成日付」Td,「更新時刻」Tut,及び「更新日付」Tudといった履歴情報には、ディレクトリエントリ生成用中間テーブル71の生成時は、ホスト機器20の接続要求の日付、時間を記載したが、ファイル用中間テーブル72の生成時には、独自ファイルフォーマット40の管理領域41中にある該当ファイルの生成日付、生成時間等のデータが、FATファイルシステム25のディレクトリエントリに記載可能な2バイトのフォーマットに変換した上で記載される。
「ファイル先頭の物理LBAアドレス」Adには、デバイス機器10で、その独自ファイルフォーマット40が管理する記録装置11の実際のファイル開始LBA番号が記憶される。すなわち、デバイス機器10の記録装置11は、独自ファイルフォーマット40で管理されていても、ファイルである以上、その記憶内容は必ず記録装置11内のどこかの物理セクタから開始するはずで、このセクタ番号は、何らかの形で独自ファイルフォーマット40が管理しているはずである。したがって、「ファイル先頭の物理LBAアドレス」Adには、この実際の記録装置11におけるファイルの開始LBA番号が記載される。
「ファイル長」Lfには、独自ファイルフォーマット40の管理領域41から該当ファイルのファイル長が取得され、記載される。本実施例では、「ファイル長」Lfは、8バイト確保されている。「ファイル長」Lfが8バイト以上の長さが必要な場合、そのファイルはファイル長が4GB以上ファイルであり、特殊処理が必要となる。
「ファイル開始仮想クラスタ番号」Cfsは、該当ファイルに対してファイルシリアル番号が1つ前のファイルについての、仮想FAT空間50sの仮想ファイル領域54における「ファイル終了仮想クラスタ番号」Cfeに“1”を加えた値が記載される。該当ファイルのファイルシリアル番号Fnが“0”で、1つ前のファイルが存在しない場合は、自動的に図3に示した仮想FAT空間50sの仮想ファイル領域(ファイル領域)54の先頭クラスタ番号“65,538”が、ファイル開始仮想クラスタ番号Cfsとして記載されることになる。
「ファイル終了仮想クラスタ番号」Cfeは、ファイル開始仮想クラスタ番号Cfsとファイル長Lfとから求められたファイル終了仮想クラスタ番号が記載される。
このように構成されたファイル用中間テーブル72において、ファイル開始仮想クラスタ番号Cfs及びファイル終了仮想クラスタ番号Cfeの算出は、例えば次のようにして行われる。
まず、ファイルシリアル番号Fnが“0”のファイルのファイル仮想開始クラスタ番号Cfs(0)とファイル仮想終了クラスタ番号Cfe(0)の算出を行う。この場合、ファイルシリアル番号Fnが“0”のファイルのファイル仮想開始クラスタ番号Cfs(0)は、前述したように、仮想FAT空間50sにおける仮想ファイル領域54先頭の仮想LBA番号で、“65,538”で固定である。
したがって、ファイルシリアル番号Fnが“0”のファイルのファイル長をLf(0)とすると、本実施例では仮想クラスタの1クラスタは16KBなので、このファイルに必要なクラスタ総数Cffは、
Cff(0)=[Lf(0)÷(16×1024)]+1になる。
したがって、ファイルシリアル番号“0”のファイルのファイル仮想終了クラスタ番号Cfe(0)は、
Cfe(0)=Cfs(0)+Cff(0)−1
で求めることができる。
同様にして、ファイルシリアル番号“1”のファイルのファイル仮想開始クラスタ番号Cfs(1)と仮想終了クラスタ番号Cfe(1)との算出について説明する。
このファイルのファイル長がLf(1)であれば、本実施例では1クラスタは16KBなので、その必要なクラスタ総数Cff(1)は、
Cff(1)=[Lf(1)÷(16×1024)]+1
で求めることができる。
したがって、ファイルシリアル番号“1”のファイルのファイル仮想開始クラスタ番号Cfs(1)は、前のファイル、すなわちファイルシリアル番号“0”のファイルのファイル仮想終了クラスタ番号Cfe(0)より、
Cfs(1)=Cfe(0)+1
になる。
また、そのファイル仮想終了クラスタ番号Cfe(1)は、
Cfe(1)=Cfs(1)+Cff(1)−1
で求めることができる。
これにより、ファイルシリアル番号“p(≠0)”のファイル仮想開始クラスタ番号Cfs(p)とファイル仮想終了クラスタ番号Cfe(p)との算出は、次のようになる。
この場合、ファイルシリアル番号“p”のファイルのファイル長をLf(p)とすると、このファイルに必要なクラスタ総数Cff(p)は、
Cff(p)=[Lf(p)÷(16×1024)]+1 (10)
で求めることができる。なお、式中の“[ ]”はガウス記号を示し、ある値を超えない最大の整数値を表す。
そして、このファイルシリアル番号“p”のファイルのファイル仮想開始クラスタ番号Cfs(p)は、前のファイル、すなわちファイル番号“p-1”の仮想終了クラスタ番号Cfe(p-1)であれば、
Cfs(p)=Cfe(p-1)+1 (11)
である。
また、このファイルシリアル番号“p”のファイルのファイル仮想終了クラスタ番号Cfe(p)は、
Cfe(p)=Cfs(p)+Cff(p)−1 (12)
で求めることができる。
また、「特殊フラグ」には、ホスト機器20のOSに応じてどのような処理を行うかが定義される。
例えば、対象となるホスト機器20のOSのバージョンによっては、ファイル長が2GBや4GBを超えるファイルが扱えない場合がある。このような場合に備え、本実施例では、デバイス機器10側の記録装置11のこのようなファイル長が2GBを超えるファイルを、ホスト機器20のOSが取り扱うことができる上限(4GBや2GB)のファイルとしてホスト機器20に認識させ、デバイス機器10外部に対してそのまま見せないこととし、記録装置11の4GBや2GBのファイルを分割して、例えば複数(2つ以上)のファイルとしてホスト機器20に見せる構成になっている。ただし、この場合、分割して切り取られたファイルがどのように振舞うかについては、ファイルを扱うホスト機器20のアプリケーション24に依存する。そのため、この「特殊フラグ」では、デバイス機器10側の記録装置11に2GBや4GBを超えるファイルサイズのファイルが存在したときに、上記のような処理の中、ホスト機器20のOSに応じてどのような処理を行うかが定義される。また、ファイルが分割されたファイルだった場合は、サブシリアル番号が独自ファイルフォーマット40の管理領域41に定義されることになる。当然、仮想FAT空間50sのファイルのメインのシリアル番号は増えるし、ディレクトリエントリも増えることになる。
このようなファイル用中間テーブル72の生成のために、ファイル仮想開始クラスタ番号Cfsの算出処理、及びファイル仮想終了クラスタ番号Cfeの算出処理を行うには、ファイルのファイルシリアル番号順に先頭から処理を繰り返す必要がある。そのためには、実際の記録装置11における階層化ディレクトリ構造の解析も同時に平行して行わなければならない。そのため、このファイル用中間テーブル72の生成は、前述したディレクトリエントリ生成用中間テーブル71の生成と、同時に処理される。
上述した構成のディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72からなる中間テーブル70の生成/更新については、デバイス機器10の記録装置11でファイル関連処理が発生した場合にリアルタイムに生成/更新する方法と、ホスト機器20からデバイス機器10にマスストレージ接続に基づく接続要求が生じた場合に生成/更新する方法との2通りの処理方法がある。
次に上記処理方法それぞれによる中間テーブル70の生成/更新について説明する。
図9は、ディレクトリエントリ生成用及びファイル用の中間テーブルをリアルタイムに生成する場合の処理概要を示したフローチャートである。
デバイス機器10の記録装置11では、例えば、新規書込み,既存ファイルの消去,既存ファイルに対するデータの追加,既存ファイルの部分消去,既存ファイルの読み取りといったファイル関連処理の発生を検出すると(ステップS210)、そのファイル関連処理が、新規書込み,既存ファイルの消去,既存ファイルに対するデータの追加,既存ファイルの部分消去といったファイル情報の変更を伴う処理であるか、既存ファイルの読み取りといったファイル情報の変更を伴わない処理であるかを確認し、該当のファイル関連処理を行う(ステップS221〜S225)。
その上で、そのファイル関連処理が、上述したファイル情報の変更を伴う処理である場合は、まず、デバイス機器10の記録装置11は、その独自ファイルフォーマット40による管理領域41の管理情報を更新する(ステップS230)。
そして、記録装置11のFATエミュレータ部18は、更新された管理情報をもとに、FATエミュレート用の中間テーブル70、すなわちディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72を生成/更新する(ステップS240)。
続いて、デバイス機器10の記録装置11は、ファイル関連処理以外の非ファイル関連処理を行った上で(ステップS250)、これら処理の間にホスト機器20からのマスストレージ接続による接続要求が生じているか否かの確認を行う(ステップS260)。
以後、ホスト機器20からの接続要求が生じるまで、デバイス機器10は、上述したステップS210〜S260に示した処理を繰り返す一方、ホスト機器20からの接続要求が生じているのが確認された場合には、ホスト機器20とのマスストレージ接続処理を行う。
この中間テーブル70の生成/更新方法のメリットとしては、どのようなタイミングで、ホスト機器20からマスストレージ接続による接続要求が発生しても、常に中間テーブル70の情報は最新のものに更新されているため、ホスト機器20との間でマスストレージ接続が実現するまでの処理時間が短くなることがある。なお、この中間テーブル70をリアルタイムに生成/更新する方法では、中間テーブル70用の記録領域は、記録装置11を含むデバイス機器10のメモリ上で常時確保されている。したがって、本実施例の場合は、独自ファイルフォーマット40中の管理領域41又はデータ領域42に常時の中間テーブル退避領域として不可視に確保されているものとする。
図10は、ディレクトリエントリ生成用及びファイル用の中間テーブルをホスト機器からの接続要求時に生成する場合の処理概要を示したフローチャートである。
デバイス機器10の記録装置11では、例えば、新規書込み,既存ファイルの消去,既存ファイルに対するデータの追加,既存ファイルの部分消去,既存ファイルの読み取りといったファイル関連処理の発生を検出すると(ステップS210)、そのファイル関連処理が、新規書込み,既存ファイルの消去,既存ファイルに対するデータの追加,既存ファイルの部分消去といったファイル情報の変更を伴う処理であるか、既存ファイルの読み取りといったファイル情報の変更を伴わない処理であるかを確認し、該当のファイル関連処理を行う(ステップS221〜S225)。
その上で、そのファイル関連処理が、上述したファイル情報の変更を伴う処理である場合には、デバイス機器10の記録装置11は、デバイス機器10の独自ファイルフォーマット40中の管理情報41を更新する(ステップS230)
続いて、デバイス機器10の記録装置11は、ファイル関連処理以外の非ファイル関連処理を行った上で(ステップS250)、これら処理を行う間にホスト機器20からのマスストレージ接続による接続要求が生じているか否かの確認を行う(ステップS260)。
以後、ホスト機器20からの接続要求が生じるまで、上述したステップS210〜S260に示した処理(図9にステップS240で示した中間テーブル70の生成/更新処理は除く)を繰り返す一方、ホスト機器20からの接続要求が生じているのが確認された場合には、以下の処理を行う。
デバイス機器10の記録装置11では、ホスト機器20からの接続要求が生じているのが確認された場合には、独自ファイルフォーマット40中の管理領域41の管理情報を解析し(ステップS270)、記録装置11内部又はデバイス機器10のメモリ上にその解析結果に基づいて、中間テーブル70、すなわちディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72を生成する(ステップS280)。
その上で、デバイス機器10の記録装置11は、ホスト機器20とのマスストレージ接続処理を行う。
この中間テーブル70の生成/更新方法のメリットとしては、中間テーブル70用の記録領域は、ホスト機器20とのマスストレージ接続時にのみデバイス機器10の記録装置11を含むメモリ上に確保すればよい。例えば、デバイス機器10がデジタルスチルカメラである場合、撮像用のメモリを搭載しているが、このメモリを流用し、中間テーブル70を配置するといったことが可能になる。また、ファイル関連処理に伴って、中間テーブル70の生成/更新処理のオーバーヘッドが伴わないというメリットもある。
なお、この方式では、ホスト機器20からのマスストレージ接続の要求発生から、実際にホスト機器20との間でのマスストレージ接続が実現するまでに、中間テーブル70を生成するための処理時間が必要とされる。そのため、ホスト機器20側の仕様によっては、マスストレージ接続による接続要求からマスストレージ接続実現までにタイムアウト値が設けられている場合で、デバイス機器10側がこのタイムアウト値を超えない範囲の時間で中間テーブル70を生成/更新処理できない可能性がある場合は、この中間テーブル70の生成/更新方法を用いることはできないため、図9により説明したリアルタイムに生成する方法等、タイムアウト値が超えない範囲の時間で生成可能な方法を適用する。
次に、上述した図9のステップS240、及び図10のステップS280に示した中間テーブル70の生成/更新処理の詳細について、図11により説明する。
なお、図11では、図10に示した、ホスト機器20からの接続要求時に中間テーブル70を一括生成/更新する手法の場合を例に説明する。なお、図9に示した、リアルタイムによる中間テーブル70の生成/更新の場合については、図11に示したその生成/更新処理が分断されるだけであり、図11に示した中間テーブルの生成/更新の手続きとは本質的な生成手法で違いはないので、その説明は省略する。
図11は、ディレクトリエントリ生成用及びファイル用の中間テーブルの生成/更新の手続きのフローチャートである。
図11に示すように、デバイス機器10は、ホスト機器20からの接続要求に基づいて、中間テーブル70を一括生成/更新するに当たり、独自ファイルシステム15の独自ファイルフォーマット40によりデータ領域42内に存在するファイル及びディレクトリについて、そのグループ番号Gn及びファイル番号Fnの初期化(Gn=0,Fn=0)を行う(ステップS311)。
その上で、デバイス機器10は、その記録装置11を管理する独自ファイルシステム15中に存在するファイル及びディレクトリを解析し、その階層化に基づき、例えば図4に示した如くのディレクトリツリーのような、ディレクトリ中に存在するファイルとディレクトリとを1まとめにしたグループを生成する。
そして、デバイス機器10は、この生成されたグループの中、設定されたグループ番号Gnの着目グループについて、まだ図8に示した如くのファイル用中間テーブル72の生成/更新の手続きが行われていないファイルが存在するか否かを確認する(ステップS312)。
すなわち、当初は、初期化されたグループ番号“0(Gn=0)”のグループを着目グループとして、ファイル用中間テーブル72の生成/更新の手続きが行われていないファイルが存在するか否かが確認される。
これにより、デバイス機器10は、ファイル用中間テーブル72の生成/更新の手続きが行われていないファイルがこの着目グループ内に存在する場合、次のステップS313に示すファイル用中間テーブル72の生成/更新処理を行う一方、ファイル用中間テーブル72の生成/更新の手続きが行われていないファイルが存在しない場合は、この着目グループにおいて、ディレクトリエントリ生成用中間テーブル71の生成/更新処理が行われていないディレクトリが存在するか否かの確認処理を行う(ステップS316)。
ここで、ステップS313に示すファイル用中間テーブル72の生成/更新処理では、デバイス機器10は、図8示した、「所属するグループ番号」Gn,「ファイルシリアル番号」Fn,「ホスト機器上で表示したいファイル名」Nf,「ブロックサイズ」Bs,「作成時刻」Tt,「作成日時」Td,「更新時刻」Tut,「更新日時」Tud,「ファイル先頭の物理LBAアドレス」Adf,「ファイル長」Lf,「ファイル開始仮想クラスタ番号」Cfs,「ファイル終了仮想クラスタ番号」Cfe,「特殊フラグ」flgといった情報が含まれるファイル用中間テーブル72の生成を行う。これにより、着目グループ内におけるファイル用中間テーブル72が生成されていなかった1つのファイルについて、ファイルシリアル番号Fnが付され、ファイル用中間テーブル72が生成されることになる。
そして、デバイス機器10は、このファイルシリアル番号Fnによって特定されるファイル用中間テーブル72の生成に関連し、この着目グループについて、図5に示した「グループ番号」Gn,「ホスト機器20上で表示したいグループの名称」Ng,「グループに存在するファイルとグループ(エントリ)の総計」Gfg,「グループに存在する最初のグループ番号」Gsg,「グループに存在する最後のグループ番号」Geg,「グループに存在する最初のファイル番号」Gsf,及び「グループに存在する最後のファイル番号」Gefといった情報が含まれるディレクトリエントリ生成用中間テーブル71の生成/更新処理を行う(ステップS314)。
すなわち、当初は、初期化されたグループ番号“0(Gn=0)”のグループについて、ファイル用中間テーブル72の生成/更新の手続きが行われていないファイル“File0”が確認されると、このファイル“File0”についてのファイル用中間テーブル72が生成される(ステップS314)。これに加え、「グループ番号」Gnを“0”とするディレクトリエントリ生成用中間テーブル71が生成され、図6に示した「グループ番号」Gnを“0”とするディレクトリエントリ生成用中間テーブル71が、「ホスト機器20上で表示したいグループの名称」Ngは“¥(ルートディレクトリ)”、「グループに存在するファイルとグループ(エントリ)の総計」Gfgは未だファイル“File0”しか確認されていないため“1”、「グループに存在する最初のグループ番号」Gsn及び「最後のグループ番号」Genは未だグループ内に存在するディレクトリは確認されていないため“−1”、「最初のファイル番号」Gsf及び「最後のファイル番号」Gefは未だファイル“File0”しか確認されていないため“0”として、生成されることになる。
その後、ファイルシリアル番号Fnがインクリメントされ(ステップS315)、ファイル用中間テーブル72の生成されていない、次のファイルに対するファイル用中間テーブル72の生成/更新、及びこれに基づくディレクトリエントリ生成用中間テーブル71の生成/更新についての準備がなされる。
そして、着目グループの中に、図8に示したファイル用中間テーブル72が生成/更新されていないファイルがなくなるまで、ステップS312〜ステップS315に示すファイル用中間テーブル72の生成/更新処理、及びこれに基づくディレクトリエントリ生成用中間テーブル71の生成/更新処理が続けられることになる。
したがって、例えば図4に示した如くのディレクトリツリーの場合、前述したグループ番号“0”のルートディレクトリについて、ファイル“File0”,“File1”,“File2”の3つのファイルそれぞれについてファイル用中間テーブル72が生成され、図6に示した「グループ番号」Gnを“0”とするディレクトリエントリ生成用中間テーブル71が、「ホスト機器20上で表示したいグループの名称」Ngは“¥(ルートディレクトリ)”、「グループに存在するファイルとグループ(エントリ)の総計」Gfgは未だグループ内に存在するエントリ“Dir1”,“Dir2”が未だ確認されていないため“3”、「グループに存在する最初のグループ番号」Gsn及び「最後のグループ番号」Genは未だグループ内に存在するエントリ“Dir1”,“Dir2”が確認されていないため“−1”、「最初のファイル番号」Gsf及び「最後のファイル番号」Gefはそれぞれ“0”及び“2”として、生成/更新されることになる。
これに対し、ステップS312の確認処理で、この着目グループ内の全てのファイルについて、ファイル用中間テーブル72の生成/更新、及びこれに基づくディレクトリエントリ生成用中間テーブル71の生成/更新が終わったならば、今度は、デバイス機器10は、この着目グループ内に、ディレクトリエントリ生成用中間テーブル71の生成/更新がされていないディレクトリが存在するか否かを調べる(ステップS316)。
ステップS316において、着目グループ内に、ディレクトリエントリ生成用中間テーブル71の生成/更新が行われていないディレクトリが存在する場合には、このディレクトリに関して、上述のステップS314で生成/更新された着目グループのディレクトリエントリ生成用中間テーブル71の中、「グループに存在するファイルとグループ(エントリ)の総計」Gfg、「グループに存在する最初のグループ番号」Gsn、及び「最後のグループ番号」Genについての更新処理が行われる(ステップS317)。
例えば、図4に示した如くのディレクトリツリーの場合、前述した「グループ番号」Gnを“0”とするディレクトリエントリ生成用中間テーブル71が、「グループに存在するファイルとグループ(エントリ)の総計」Gfgが“3”、「グループに存在する最初のグループ番号」Gsn及び「最後のグループ番号」Genが“−1”とするグループ内のエントリ“Dir1”,“Dir2”の確認が未だ行われていない状態から、グループ内にグループ番号“1”,“2”の2つエントリ“Dir1”,“Dir2”が存在することが確認されることにより、「グループに存在するファイルとグループ(エントリ)の総計」Gfgはこの2つエントリ“Dir1”,“Dir2”分を加えた“5”に、「グループに存在する最初のグループ番号」Gn及び「最後のグループ番号」Genは“1”及び“2”に更新されて、図6に示したとおりとなる。
その上で、デバイス機器10は、グループ番号Gnをインクリメントして着目グループを更新し(ステップS318)、先の着目グループに対して階層が1つ下の更新したグループ番号Gnのディレクトリについて、ステップS312の確認処理に立ち戻り、前述したステップS312以降のファイル用中間テーブル72の生成/更新処理、及びこれに基づくディレクトリエントリ生成用中間テーブル71の生成/更新処理を繰り返し行う。
例えば、図4に示した如くのディレクトリツリーの場合は、次に「グループ番号」Gnが“1”のディレクトリについてファイル用中間テーブル72及びディレクトリエントリ生成用中間テーブル71の生成/更新処理が行われ、以下、順次、「グループ番号」Gnが“6”のディレクトリについてまで、グループ毎にファイル用中間テーブル72及びディレクトリエントリ生成用中間テーブル71の生成/更新処理が行われる。
その一方で、この更新した着目グループの中に、図8に示したファイル用中間テーブル72が生成/更新されていないファイルがなく(ステップS312)、図5に示したディレクトリエントリ生成用中間テーブル71の生成/更新処理をしていないディレクトリもない場合には(ステップS316)、デバイス機器10は、この着目グループのグループ番号Gnをデクリメントして着目グループを前回の着目グループに戻し(ステップS319)、着目グループのグループ番号Gnが初期値(Gn=0)になっているか否かを確認する(ステップS320)。このとき、前回の着目グループのグループ番号Gnが初期値(Gn=0)になっていない場合には、その着目グループの中にディレクトリエントリ生成用中間テーブル71の生成/更新処理が行われていないディレクトリが存在するか否かの確認を行う(ステップS316)。
この結果、着目グループ内に、ディレクトリエントリ生成用中間テーブル71の生成/更新処理をしていないディレクトリが存在しない場合は、デバイス機器10は、着目グループのグループ番号Gnが初期値(Gn=0)になるまで、ステップS316,S319,S320の処理を繰り返す。この一連の処理により、着目グループのグループ番号Gnが初期値(Gn=0)になって(ステップS320)、全てのグループのファイル及びディレクトリについて、ファイル用中間テーブル72の生成/更新処理、及びこれに基づくディレクトリエントリ生成用中間テーブル71の生成/更新処理が終わったことが確認されると、デバイス機器10は、中間テーブル70の生成/更新処理を終了する。
これに対し、上述したステップS316の確認処理で、着目グループの中にディレクトリエントリ生成用中間テーブル71の生成/更新処理をしていないディレクトリが存在するのが確認された場合は、デバイス機器10は、このディレクトリについてディレクトリエントリ生成用中間テーブル71の生成/更新処理を行った後(ステップS317)、グループ番号Gnをインクリメントして着目グループを元に戻し(ステップS318)、この階層が1つ下のグループ番号Gnのディレクトリから、ファイル用中間テーブル72の生成/更新の手続きが行われていないファイルが存在するか否か、ディレクトリエントリ生成用中間テーブル71の生成/更新処理をしていないディレクトリが存在するか否かの再確認を行う。
このようにして生成されるディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72からなる中間テーブル70は、本実施例の場合は、図2(a)における不可視コンテンツのように不可視な領域として、記録装置11の記録媒体上に保持される。そして、この記録装置11の記録媒体上の中間テーブル70を保持すべき領域は、中間テーブル70の生成の方法により変動する。図2(a)では、この中間テーブル70の退避領域については、点線で囲まれる部分で示してある。
次に、マスストレージ接続されたホスト機器20からデバイス機器10に発行されたLBA番号(絶対セクタ番号)Sを指定した読み取り要求に対して、上述のように生成/更新されるディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72にもとにして、デバイス機器10が行う処理概要について、図12により説明する。
図12は、ホスト機器にマスストレージ接続されたデバイス機器の処理概要のフローチャートである。
まず、ユーザは、デバイス機器10とホスト機器20とを、USB,USB2,IEEE1394等といった物理接続路30を介してマスストレージ接続し、デバイス機器10とホスト機器20との間の物理接続を確立する(ステップS411)。なお、この状態では、デバイス機器10とホスト機器20との間のUSB接続は、まだアクティブな状態にはなっておらず、つまり両者間は論理接続が確立されていない状態になっている。
そして、例えば、ユーザがデバイス機器10を所定操作すること等によって、デバイス機器10は、物理接続路30を介して接続されたホスト機器20のターミナルスロットをアクティブな状態にする。これにより、ホスト機器20のOSに備えられているプラグアンドプレイ(Plug and Play)機能が起動し、デバイス機器10の物理接続を認識し、ホスト機器20からデバイス機器10に接続要求が発行され、デバイス機器10とホスト機器20との間の論理接続が確立される(ステップS412)。
なお、前述したように、デバイス機器10が、図5に示したディレクトリエントリ生成用及中間テーブル71、及び図8に示したファイル用中間テーブル72からなる中間テーブル70を、図9に示したように記録装置11によるファイル関連処理の発生の度にリアルタイムで生成/更新するものではなく、図10に示したようにホスト機器20からの接続要求時に中間テーブル70を一括生成/更新するものである場合には、デバイス機器10のFATエミュレータ部18は、このホスト機器20から発行された接続要求に基づき、例えば図11で説明したようにして、ディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72を一括生成/更新することになる。
そして、デバイス機器10は、ホスト機器20との物理接続及び論理接続が確立されると、ホスト機器20から接続解除要求が供給されているか否か、及びデータ読み取り要求が供給されているか否かの確認を行う(ステップS413,S414)。そして、ホスト機器20から接続解除要求があった場合には(ステップS413)、デバイス機器10は、接続終了処理に移行する。
一方、ホスト機器20から、LBA番号Sを指定したデバイス機器10の記録装置11に記録された記録内容の読み取り要求があった場合は(ステップS414)、デバイス機器10は、そのFATエミュレータ部18が、図3に示した仮想FAT空間50sに基づいて、ホスト機器20により指定されたLBA番号SのLBA変換処理を行う(ステップS415)。
ここで、ホスト機器20によるデバイス機器10の記録装置11の読み取り要求は、そのFATファイルシステム25によってマスストレージドライバ28を介し、読み取りたい記録内容のLBA(セクタ)番号S、このLBA番号Sから連続して読み取るセクタ数nを指定して行われる。この場合に、ホスト機器20から要求されるセクタ数の読み取り個数nの上限は、最高でも256個である。
また、デバイス機器10のFATエミュレータ部18が行うLBA変換処理の内容は、ホスト機器20からの読み取り要求によって与えられたLBA番号Sから判断して、デバイス機器10の記録装置11に実際に保持されていないデータを、デバイス機器10のメモリ上に生成する第1の処理と、ホスト機器20からの読み取り要求によって与えられたLBA番号Sを、デバイス機器10の記録装置11の実際のLBA番号S'に変換する第2の処理との、2種類に分類される。
LBA変換処理として、第1の処理を行う場合としては、次のような場合が該当する。
まず、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが、図3に示した仮想FAT空間50sの仮想管理領域51に相当し、かつ管理領域51の中のMBR(Master Boot Record)であると想定される場合が該当する。この場合、ホスト機器20からのデータ読み取り要求によって与えられるLBA番号Sが“0”である場合が相当する。
また、別の場合として、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが、図3に示した仮想FAT空間50sの仮想管理領域51に相当し、かつ仮想管理領域51の中のDPB(=BPB)であると想定される場合が該当する。なお、この場合、ホスト機器20から与えられるLBA番号Sは、上述したMBRの構成で変化する。
また、別の場合として、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが、図3に示した仮想FAT空間50sの仮想管理領域51に相当し、かつ仮想管理領域51の中のFSINFOであると想定される場合が該当する。この場合も、ホスト機器20から与えられるLBA番号Sは、上述したDPBの場合と同様に、MBRの構成で変化する。
また、別の場合として、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが、図3に示した仮想FAT空間50sの仮想管理領域51に相当し、かつ仮想管理領域51の中のFAT1/FAT2であると想定される場合が該当する。この場合も、ホスト機器20から与えられるLBA番号Sは、上述したDPB,FSINFOの場合と同様に、MBRの構成で変化する。
また、別の場合として、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが、図3に示した仮想FAT空間50sの仮想ディレクトリエントリ領域53である場合が該当する。この場合、ホスト機器20から与えられるLBA番号Sは、上述したDPB,FSINFO,FAT1/FAT2の場合と同様に、MBRの構成で変化する。
また、その他の例として、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが、図3に示した仮想FAT空間50sにおける、特に意味を持たない領域である場合が該当する。
これに対し、LBA変換処理として、第2の処理を行う場合としては、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが、図3に示した仮想FAT空間50sの仮想ファイル領域54である場合が該当する。
なお、図12においてステップS415で示したLBA変換処理には、上述した2種類の処理の中、ホスト機器20からの読み取り要求によって与えられたLBA番号Sを、デバイス機器10の記録装置11の実際のLBA番号S'に変換する第2の処理だけが、代表して例示されている。
そして、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが上述した例のいずれに該当する場合であっても、デバイス機器10は、ホスト機器20側の読み書きする基本単位である512バイトずつ、与えられたLBA番号Sに相当する読み取りデータとしてホスト機器20に転送する(ステップS416,S417)。
なお、ホスト機器20から与えられたLBA番号Sが、仮想FAT空間50s中の特に意味を持たない領域に相当する場合であっても、デバイス機器10は、読み取りデータとして512バイト分の無意味なデータを用意し、ホスト機器20に転送する。本実施例では、この512バイト分の無意味なデータとして、512バイト分“0x00”で埋めている。
したがって、LBA変換処理が、ステップS415に図示したように、ホスト機器20からの読み取り要求によって与えられたLBA番号Sをデバイス機器10の記録装置11の実際のLBA番号S'に変換する第2の処理である場合には、記録装置11からLBA番号S'を先頭に実際に記録されている512バイト分のデータを読み取り、これをホスト機器20に転送する。これとともに、ホスト機器20から読み取り要求されたセクタ数nをデクリメント“n=n-1”して、ホスト機器20からの読み取り要求によって与えられたセクタ数nと更新するとともに、ステップS415で変換したLBA番号S'を1セクタ(512バイト)分だけ増加(“S'=S'+1”)させて、これを変換した新たなLBA番号S'として更新する(ステップS416)。
その上で、デバイス機器10は、読み取り要求されたセクタ数nが“0”になり、当初ステップS415でデバイス機器10から読み取り要求されたn個分のセクタ数だけ、記録装置11からLBA番号S'を先頭に実際に記録されているデータを読み取ってホスト機器20に転送終了したか否かを判別する(ステップS417)。
そして、この判別結果に基づいて、この読み取り要求されたセクタ数nが“0”になり、ホスト機器20からの読み取り要求どおりに、LBA番号Sを先頭にセクタ数でn個分のデータ全てがホスト機器20に転送されるまで、デバイス機器10は、上述したステップS416,S417の処理を繰り返すことになる。
次に上述したステップS415に示したLBA変換処理の詳細について、図13に基づき説明する。
本実施の形態のデバイス機器10では、前述した図3に示した如くの仮想FAT空間50sのマッピング、及び図5〜図11によりその構成及び生成方法を説明したディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72からなる中間テーブル70に基づいて、ホスト機器20からデバイス機器10に発行されたLBA番号(絶対セクタ番号)Sを指定した読み取り要求に対して、図13に示す如くのLBA変換処理を行う。
図13は、本実施の形態のデバイス機器のFATエミュレータ部によるLBA変換処理の概要を示したフローチャートである。
デバイス機器10は、ホスト機器20からデバイス機器10に発行された読み取り要求を通信ドライバ19を介して受信すると(ステップS500)、デバイス機器10のFATエミュレータ部18は、この読み取り要求によって与えられたLBA番号(絶対セクタ番号)Sが図3に示した仮想FAT空間50sのどの領域部分についての読み取り要求であるかを、前述した<変換式1>,<変換式2>により判別する。
すなわち、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sが、前述した仮想FAT空間50sの仮想管理領域51に相当する読み取り要求であるか否か(ステップS510)、仮想ディレクトリエントリ領域53に相当する読み取り要求であるか否か(ステップS560)、仮想ファイル領域54に相当する読み取り要求であるか否か(ステップS570)、を判定する。
そして、FATエミュレータ部18は、この読み取り要求によって与えられたLBA番号Sが前述した仮想管理領域51に相当する読み取り要求である場合は、この仮想管理領域51のMBRに相当する読み取り要求であるか否か(ステップS520)、DPBに相当する読み取り要求であるか否か(ステップS530)、FSINFOに相当する読み取り要求であるか否か(ステップS540)、仮想FATに相当する読み取り要求であるか否か(ステップS550)をさらに判定する。
その上で、この読み取り要求によって与えられたLBA番号(絶対セクタ番号)Sが、仮想FAT空間50sの仮想管理領域51に相当し(ステップS510)、かつ仮想MBRに相当する場合は(ステップS520)、FATエミュレータ部18は、メモリ上に、転送データとして仮想MBRを生成する(ステップS521)。
そして、この場合は、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sを実際のLBA番号S'にLBA変換せず、記録装置11の記録装置用ドライバ17に対しては“S'=NULL”にして、読み取り要求によって与えられたLBA番号S'に相当する読み取りを行わないようにし、メモリ上に生成された仮想MBRを読み取り要求に対する出力データとして用意して、LBA変換処理を終了する(ステップS591)。
同様に、この読み取り要求によって与えられたLBA番号(絶対セクタ番号)Sが、仮想FAT空間50sの仮想管理領域51に相当し(ステップS510)、かつ仮想DPBに相当する場合は(ステップS530)、FATエミュレータ部18は、そのメモリ上に、転送データとして仮想DPBを生成する(ステップS531)。
そして、この場合も、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sを実際のLBA番号S'にLBA変換せず、記録装置11の記録装置用ドライバ17に対しては“S'=NULL”にして、読み取り要求によって与えられたLBA番号Sに対応する読み取りを行わないようにし、メモリ上に生成された仮想DPBを読み取り要求に対する出力データとして用意して、LBA変換処理を終了する(ステップS591)。
同様に、この読み取り要求によって与えられたLBA番号(絶対セクタ番号)Sが、仮想FAT空間50sの仮想管理領域51に相当し(ステップS510)、かつ仮想FSINFOに相当する場合は(ステップS540)、FATエミュレータ部18は、そのメモリ上に、転送データとして仮想FSINFOを生成する(ステップS541)。
そして、この場合も、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sを実際のLBA番号S'にLBA変換せず、記録装置11の記録装置用ドライバ17に対しては“S'=NULL”にして、読み取り要求によって与えられたLBA番号Sに対応する読み取りを行わないようにし、メモリ上に生成された仮想FSINFOを読み取り要求に対する出力データとして用意して、LBA変換処理を終了する(ステップS591)。
同様に、この読み取り要求によって与えられたLBA番号(絶対セクタ番号)Sが、仮想FAT空間50sの仮想管理領域51に相当し(ステップS510)、かつ仮想FATに相当する場合は(ステップS550)、FATエミュレータ部18は、前述のメモリ上に生成した中間テーブル70を参照して、仮想FAT(FAT1)を生成する(ステップS551)。
そして、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sが仮想管理領域51のFAT2に相当する場合は、この指定LBA番号Sから仮想FAT空間においてFAT2が占めるセクタ数“9,217”を減算し、読み取り要求によって与えられたLBA番号Sをこの算出値に更新する(ステップS552)。
その上で、FATエミュレータ部18は、この読み取り要求によって与えられたLBA番号Sに該当する、仮想FAT中の512バイト部分を求め、これをメモリ上に展開する(ステップS553)。
そして、この場合も、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sを実際のLBA番号S'にLBA変換せず、記録装置11の記録装置用ドライバ17に対しては“S'=NULL”にして、読み取り要求によって与えられたLBA番号Sに対応する読み取りを行わないようにし、メモリ上に展開された仮想FAT中のLBA番号Sに該当する512バイト部分を読み取り要求に対する出力データとして用意して、LBA変換処理を終了する(ステップS591)。
一方、読み取り要求によって与えられたLBA番号Sが、仮想FAT空間50sの仮想管理領域51に相当するものの(ステップS510)、仮想管理領域51の仮想MBR,仮想DPB,仮想FSINFO,仮想FATのいずれにも相当せず、仮想管理領域51の無意味な部分に相当する場合は(ステップS550)、FATエミュレータ部18は、メモリ上に、転送データとして無意味なデータを意味する“0x00”を512バイト分生成する(ステップS580)。
そして、この場合も、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sを実際のLBA番号S'にLBA変換せず、記録装置11の記録装置用ドライバ17に対しては“S'=NULL”にして、読み取り要求によって与えられたLBA番号Sに対応する読み取りを行わないようにし、メモリ上に生成した無意味なデータを意味する512バイト分の“0x00”を読み取り要求に対する出力データとして用意して、LBA変換処理を終了する(ステップS591)。
これらに対し、読み取り要求によって与えられたLBA番号Sが、仮想データ領域52の仮想ディレクトリエントリ領域53に相当する読み取り要求である場合には(ステップS560)、FATエミュレータ部18は、メモリ上に、前述した中間テーブル70を参照して、仮想ディレクトリエントリ領域53の記録内容を生成する(ステップS561)。そして、この読み取り要求によって与えられたLBA番号Sに該当する512バイト部分の仮想ディレクトリエントリ領域53における記録内容を求めて、メモリ上に展開する(ステップS562)。
そして、FATエミュレータ部18は、読み取り要求によって与えられたLBA番号Sを実際のLBA番号S'にLBA変換せず、記録装置11の記録装置用ドライバ17に対しては“S'=NULL”にして、読み取り要求によって与えられたLBA番号Sに対応する読み取りを行わないようにした上で、メモリ上に生成したこのLBA番号Sに該当する512バイト部分の仮想ディレクトリエントリ領域53における記録内容を読み取り要求に対する出力データとして用意して、LBA変換処理を終了する(ステップS591)。
また、読み取り要求によって与えられたLBA番号Sが、仮想データ領域52の仮想ファイル領域54に相当する読み取り要求である場合には(ステップS570)、FATエミュレータ部18は、前述した中間テーブル70を参照して、ホスト機器20がこの読み取り要求で求めている、独自ファイルフォーマット40によって記録装置11に記録されているファイルのファイル番号Fnを特定する(ステップS571)。
そして、FATエミュレータ部18は、再び中間テーブル70を参照して、この読み取り要求によって与えられたLBA番号(絶対セクタ番号)Sに関して、この特定したファイルのファイル先頭からのオフセットを特定する(ステップS572)。
その上で、FATエミュレータ部18は、これらファイル番号Fnと後述するオフセット値とから、記録装置11における実際のLBA番号S'を算出し(ステップS573)、この算出したLBA番号S'を記録装置用ドライバ17に読み取りLBA番号(出力セクタ番号)として供給し、LBA変換処理を終了する(ステップS592)。
上述したLBA変換処理において、メモリ上に、仮想MBR,仮想DPB,仮想FSINFOを生成して用意したり(ステップS521,S531,S541)、メモリ上に仮想FAT,仮想ディレクトリエントリを生成して展開する処理(ステップS551〜S553,S561〜S562)が、ホスト機器20からの読み取り要求によって与えられたセクタ番号Sから判断して、デバイス機器10の記録装置11に実際に保持されていないデータを、デバイス機器10のメモリ上に生成するLBA変換処理の第1の処理に該当する。
また、読み取り要求によって与えられたLBA番号Sが仮想FAT空間50sの仮想ファイル領域54に相当する読み取り要求である場合の、ステップS571〜ステップS573及びステップS592に示した処理が、ホスト機器20からの読み取り要求によって与えられたセクタ番号Sをデバイス機器10の記録装置11の実際のLBA番号S'に変換するLBA変換処理の第2の処理に該当する。
次に、上述したLBA変換処理の各処理内容について、さらに具体的かつ詳細に説明する。
まず、図13のステップS521で説明した、LBA変換処理の第1の処理としての仮想MBRの生成について説明する。
ホスト機器20からの読み取り要求によって与えられたLBA番号Sが“0”で、記録装置11に対応した仮想記録装置21'の仮想LBA番号“0”の読み取り要求があった場合、デバイス機器10のFATエミュレータ部18は、LBA変換処理として、本実施例の場合は記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)に仮想MBRを生成する。
この場合、デバイス機器10のFATエミュレータ部18は、図3に示したようなマッピングがされた仮想FAT空間50sを備えた仮想記録装置21'として、記録装置11をマスストレージ接続されているホスト機器20に対して仮想するため、仮想MBRとして512バイト(1セクタ)分の領域を、そのメモリ上に生成する。その際、仮想MBRは、ブートストラップローダ,パーティションテーブル,マジックナンバーを備えて生成される。
ブートストラップローダは、1セクタ(512バイト)の仮想MBRの中の446バイトを有し、ホスト機器20のPC−AT起動時に係り最初に実行するイニシャルプログラムをロードするためのコードであるIPLが記載される。このIPLは、現在では、デバイス機器10の記録装置11の読み取り開始以前に、ホスト機器20が起動してしまうため、実際は無用の領域となりつつある。そのため、IPLに各OS独自のファイルシステムが記載されていたりもする。
本実施例では、この部分の内容が不適切だと、ホスト機器20が記録装置11を仮想記録装置21'としてではなく、「フォーマットされていないメディア」として認識する可能性が否定できないので、ブートストラップローダとして標準的なPCのIPLが記載される。
パーティションテーブルは、仮想MBRの中の64バイトを有し、仮想記録装置21'すなわち記録装置11を最大で4分割して使用できるようにするため、それぞれ16バイトから成る4つのテーブルを備えている。
本実施例では、記録装置11はパーティションとしては1つしか使用しないので、第1テーブル以外のテーブルは“0”で便宜的に埋められて記載される。なお、第1テーブルの16バイト分には、「ブートフラグ」,「領域開始位置」,「パーティションタイプ」,「領域終了位置」,「領域開始位置」,及び「領域サイズ」が定義される。
「ブートフラグ」は、第1テーブルの中の1バイトを有し、ホスト機器20の起動ディスクとして記録装置11を使うか否かを記録する。本実施例では、記録装置11はホスト機器20の起動ディスクとしては使用されないので、“0x00”が記載される。
「領域開始位置」は、第1テーブルの中の3バイトを有し、第1パーティションの開始位置、すなわち本実施例では、DPBのスタートセクタがCHS(Cylinder/Head/Sector )系単位系で記載される。本実施例では、第1パーティションの開始位置、すなわち仮想記録装置21'の論理ドライブの先頭セクタを仮想LBA番号“63”にしているため、この3バイト部分に“0x01”、“0x01”、“0x00”が順に記載される。
「パーティションタイプ」は、第1テーブルの中の1バイトを有し、仮想記録装置21'がどのようなファイルフォーマットを使用しているかを示す。このタイプIDは規格化されているので、エミュレートするFATファイルシステム25、すなわち「FAT32」システムに応じたIDがこの規格に基づき記載される。
「領域終了位置」は、第1テーブルの中の3バイトを有し、第1パーティション、すなわち仮想FAT空間50s全体の終了セクタ番号がCHS単位系で記載される。本実施例では、仮想FAT空間50s全体の終了セクタ番号“37,767,265”がCHS単位系の限界をすでに超えているので、この3バイト部分に“0xFE”、“0xFF”、“0xFF”の固定値が順に記載される。
「領域開始位置」は、第1テーブルの中の4バイトを有し、仮想LBA番号でパーティションの開始位置、すなわちDPBのセクタ番号が記載される。本実施例では、仮想DPBの仮想LBA番号は“63(=0x3F)”であるが、ビッグエンディアン表記のため、この4バイト部分に“0x3F”、“0x00”、“0x00”、“0x00”が順に記載される。
「領域サイズ」は、第1テーブルの中の4バイトを有し、第1パーティションの総セクタ数がビッグエンディアン表記で記載される。本実施例の場合、この第1パーティションの総セクタ数には、仮想FAT空間50sにおける仮想DPB以前の63セクタ分は含まれず、37,767,203セクタとなる。これを、16進数に変換し、この4バイト部分に“0x61”、“0x48”、“0x40”、“0x02”が順に記載される。
また、「マジックナンバー」は、仮想MBRの中の2バイトを有し、セクタの最後の2バイトを表わす“0x55”、“0xAA”が記載される。
なお、ホスト機器20から記録装置11に対して、仮想LBA番号“1”に関する読み取り要求があった場合は、バックアップ用のMBR(2)の読み取り要求であるので、上述したMBRと全く同等の内容が、仮想記録装置21'の仮想FAT空間50sにおける仮想MBRとして、メモリ上に生成される構成になっている。
次に、図13のステップS531,S541で説明した、LBA変換処理の第1の処理としての仮想DPB、仮想FSINFOの生成について説明する。
ホスト機器20からの読み取り要求によって与えられたLBA番号Sが“63≦S≦95”で、記録装置11に対応した仮想記録装置21'の仮想クラスタ番号“0”に対応する読み取り要求があった場合、デバイス機器10のFATエミュレータ部18は、LBA変換処理として、本実施例の場合は記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)に仮想DPBを生成する。
実際には、前述したホスト機器20からのLBA番号“0”を先頭とする読み取り要求に対して、デバイス機器10からホスト機器20に転送される仮想MBRに含まれた「領域開始位置」に基づき、ホスト機器20からLBA番号Sが“63”を先頭とする読み取り要求、すなわち仮想FAT空間50sの仮想クラスタ番号“0”の記憶内容の読み取り要求があった場合に、デバイス機器10のFATエミュレータ部18は、LBA変換処理として、メモリ上に仮想DPBを生成する。
この場合、デバイス機器10のFATエミュレータ部18は、図3に示したようなマッピングがされた仮想FAT空間50sを備えた仮想記録装置21'として、記録装置11をマスストレージ接続されているホスト機器20に対して仮想するため、仮想DPB及び仮想FSIFOとして512バイト(1セクタ)分の領域を、そのメモリ上に生成する。
FATファイルシステム25においては、仮想DPBは、仮想記録装置21'の記録媒体のパラメータ(属性)が認識できるように、仮想FAT空間50sの仮想クラスタ番号“0”の領域先頭に設けられる。この仮想DPBには、例えば、「ジャンプ命令」,「OEMラベル/装置名」,「1セクタ当たりのバイト数」,「1クラスタ当たりのセクタ数」,「予約セクタ数」,「ファイルアロケーションテーブル(FAT)26の個数」,「ルートディレクトリエントリの最大数」,「パーティションの総セクタ数」,「メディアディスクリプタ」,「FATのセクタ数」,「1トラックあたりのセクタ数」,「ドライブのヘッド数」,「不可視セクタ数」,「全セクタ数」,「FATのセクタ数」,「ルートディレクトリの開始クラスタ」,「ファイルシステム情報のセクタ番号」,「ブートセクタのコピーのセクタ番号」,「物理ドライブ番号」,「ブートシグネチャ」,「ボリュームシリアルID」,「ボリュームラベル」,「ファイルシステムタイプ」といった情報が記載される。
「ジャンプ命令」には、ホスト機器20としてマスストレージ接続可能な、過去のPC/ATアーキテクチャのPCのブート領域へのジャンプ命令が記載される。現在は必要ないので、本実施例では、標準的なジャンプ命令“0xEB”、“0x58”、“0x90”が記載される。
「OEMラベル/装置名」には、一般的なアプリケーション24によってのホスト機器20からのアクセス時には見られることはないため、本実施例では、コントロールコード等は置かずに、適当な名称(文字列)が設定される。
「1セクタあたりのバイト数」には、本実施例では、512バイトで固定であることが記載される。
「1クラスタあたりのセクタ数」には、本実施例では、16KBクラスタを採用しているので、セクタ数“32”が記載される。本実施例の場合は、最大でセクタ数“128”まで設定可能である。
「予約セクタ数」には、仮想記録装置21'の記録媒体の絶対的な通し番号“0”のセクタから仮想FAT領域の直前までのセクタ数が記載される。すなわち、仮想FAT空間50sにおけるメインFATとしてのFAT1の開始セクタ番号を表し、本実施例では“96”が記載される。
「ファイルアロケーションテーブルの個数」には、本実施例では、FAT1及びFAT2の2つのファイルアロケーションテーブル26が存在するので、“2”が記載される。
「ルートディレクトリエントリの最大数」は、「FAT12」システム/「FAT16」システム用に、ルートディレクトリエントリに存在するファイルやディレクトリの総数を定義するもので、本実施例に適用された「FAT32」システムでは、常に“0”となる。
「パーティションの総セクタ数」は、全セクタ数が16ビットの範囲(0〜65535)で表わせる場合にのみ使用されるもので、それを超える場合は、“0”が記載される。そのため、本実施例に適用された「FAT32」システムでは常に“0”であり、本実施例でも、“0”が記載される。
「メディアディスクリプタ」は、メディア(記録媒体)の種類を示すフラグであり、本実施例では、ホスト機器20に記憶装置11をHDDからなる仮想記録装置21'として認識させるため、HDDに対応する“0xF8”が記載される。
「FATのセクタ数」には、1つのFAT当たりが占めるセクタ数が記載される。ただし、本実施例に適用される「FAT32」システムでは常に“0”となる。
「1トラックあたりのセクタ数」には、本実施例では、上述の「メディアディスクリプタ」で仮想させたHDDの1トラック当たりのセクタ数が記載される。
「ドライブのヘッド数」は、ドライブ(記録装置)の物理的な情報を表すパラメータであり、ファイルシステム的な情報とは異なり現在は使われることはない。本実施例では、便宜的に、実際の記録装置11のデバイス情報をもとに記載される。
「不可視セクタ数」は、論理ドライブの先頭セクタ(すなわち、DPB開始位置)直前までの仮想記録装置21'の物理ドライブのセクタ数で、本実施例では、“63”が記載される。
「全セクタ数」は、「FAT32」システムの際に用いるもので、本実施例では、仮想FAT空間50sの全セクタ数“37,767,266”が記載されている。
「FATのセクタ数」は、「FAT32」システムの際に用いるもので、1つのFAT当たりが占めるセクタ数が記載される。本実施例では、式(8)で説明したように“9,217”が記載される。
「ルートディレクトリの開始クラスタ」は、「FAT32」システムの際に用いるもので、特に意図的に移動しない限りは、クラスタ番号“2”が記載される。すなわち、仮想FAT空間50sにおけるFAT領域(クラスタ番号“1”)の直後の、仮想ディレクトリエントリ領域53の仮想開始クラスタ番号が記載される。
「ファイルシステム情報のセクタ番号」は、「FAT32」システムの際に用いるもので、仮想FSINFOのセクタ番号を示すものである。本実施例では、仮想FSINFOは仮想DPBの直後のセクタに配置されるため、仮想LBA番号“64”が記載される。
「ブートセクタのコピーのセクタ番号」は、「FAT32」システムの際に用いるもので、論理ドライブの先頭セクタとしてのLBA番号“0”のセクタが壊れているときに使われる、ブートセクタ(MBR)のコピーの位置を示すものである。本実施例では、仮想FAT空間50s上で、バックアップ用のMBR(2)が記憶されている仮想LBA番号“1”が記載される。
「物理ドライブ番号」には、本実施例の場合は、HDDの場合に対応する“80h”が記載される。
「ブートシグネチャ」には、ボリュームシリアル番号を持つことを意味する“0x29”が記載される。
「ボリュームシリアルID」には、上記ブートシグネチャが“0x29”の場合には、ランダムに割り当てられるシリアル番号が記載される。この「ボリュームシリアルID」は、実装依存なので省略可能であるが、同一機種のデバイス機器10に対しては、常に同じ値が設定される。
「ボリュームラベル」には、FATファイルシステム25としてのボリューム名が、合計で11文字まで記載される。
「ファイルシステムタイプ」には、FATファイルシステム25の種別(「FAT32」システム,「FAT16」システム,「FAT12」システムの中のいずれのシステムか)が記載される。本実施例では、「FAT32」システムが記載される。
続いて、FATエミュレータ部18による仮想FSINFOのメモリ上への生成の実施例について説明する。
FSINFOは、DPBの直後に存在する1セクタ分(512バイト)の領域で、FATファイルシステム25が「FAT32」システムである場合のみ存在する。FSINFOに使用されるのは、18バイトである。その中、6バイトは予約エリアなので、実際には、12バイト(4バイト×3)しか記載する必要がない。このFSINFOには、例えば、「ファイルシステムシグネチャ」,「空きクラスタ数」,「最終書き込みクラスタ番号」といった情報が記載される。
「ファイルシステムシグネチャ」には、“rrAa”が記載され、固定である。
「空きクラスタ数」には、後述する中間テーブル70から、仮想FATファイルシステム25としての空きクラスタ数が算出され記載される。ただし、実装側の負荷が大きい場合、“−1”を記載してもかまわない。
「最終書き込みクラスタ番号」には、最終的に書き込んだFATファイルシステム25としての空きクラスタ番号が記載されるべきであるが、ルートディレクトリエントリに移動し更新したと仮定し、常にルートディレクトリエントリに該当するクラスタ番号“2”が記載される。
以上のように、デバイス機器10は、FATエミュレータ部18により、仮想FAT空間50sのマッピングをもとに、実際の記録装置11には存在しないものであっても、仮想MBR、仮想DPB、仮想FSINFOといったFATファイルシステム25中の必須の管理領域を、メモリ上に展開することが可能になる。
次に、図13のステップS561,S562で説明した、LBA変換処理の第1の処理としての仮想ディレクトリエントリの生成について説明する。
ホスト機器20からの読み取り要求によって与えられたLBA番号Sが“18530≦S≦2115681”で、記録装置11に対応した仮想記録装置21'の仮想クラスタ番号“2”〜“65,537”に対応する読み取り要求である場合、デバイス機器10のFATエミュレータ部18は、LBA変換処理として、そのメモリ上に仮想ディレクトリエントリを生成して展開し、この読み取り要求によって与えられたLBA番号Sによって生成されて展開された仮想ディレクトリエントリの中、該当する512バイト部分の仮想ディレクトリエントリの記録内容を出力データとして用意する。
この場合、本実施例では、図4に例示した独自ファイルシステム15のディレクトリエントリツリーのディレクトリエントリの包含内容と等価のグループは、図5に示したディレクトリエントリ生成用中間テーブル71をもとに、仮想FAT空間50sの仮想ディレクトリエントリ領域53の仮想ディレクトリエントリとして、図14に示すように、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)上に展開する。
図14は、仮想FAT空間の仮想ディレクトリエントリ領域における仮想ディレクトリエントリの配置方法の実施例を示したものである。
本実施例では、独自ファイルシステム15によるディレクトリ/ファイルについての、仮想FAT空間50sの仮想ディレクトリエントリ領域53におけるディレクトリエントリの割り当ては、1グループ当たり、仮想FAT空間50sの仮想ディレクトリエントリ領域53における24クラスタを仮想して割り当てている。
この24クラスタは、393,216バイト(512×32×24)に相当し、ディレクトリエントリ中、1エントリは「FAT32」システムのため32バイトを必要とするので、1グループに割り当てられるディレクトリエントリの総数(すなわち、図5に示したディレクトリエントリ生成用中間テーブル71の「グループに存在するファイルとグループ(エントリ)の総計」Gfgに対応)の最大値は、“12,288(393216÷32)”になる。
ただし、ルートディレクトリエントリ以外のグループは、後述するようにディレクトリトップに2エントリ分を必要とするため、ルートディレクトリエントリ以外の実際の1グループに割り当てられるディレクトリエントリの総数Gfgの上限は、“12,286”になる。
また、この1グループのディレクトリエントリの総数Gfgが上限“12,286”に満たなくても、仮想ディレクトリエントリ領域53における、これら各グループのディレクトリエントリの先頭位置は、図14に示すように、固定されている。
なお、仮想ディレクトリエントリ領域53は、本実施例では記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)の、擬似ディレクトリエントリ展開領域において生成/展開される。
図14では、グループ番号“0”のディレクトリエントリの先頭位置は、仮想ディレクトリエントリ領域53が生成されるFATエミュレータ部18のメモリ上の擬似ディレクトリエントリ展開領域の“0”番目のクラスタ(先頭クラスタ)から記録されていることを示し、同様にグループ番号“1”のディレクトリエントリの先頭位置はメモリ上の擬似ディレクトリエントリ展開領域の“24”番目、グループ番号“1”のディレクトリエントリの先頭位置はメモリ上の擬似ディレクトリエントリ展開領域の“48”番目のクラスタから記録されていることを示している。
これにより、対象とするディレクトリエントリが属するグループ番号Gnがわかれば、仮想FAT空間50sの仮想ディレクトリエントリ領域53において、グループ番号Gnに対応して割り当てられているディレクトリエントリの仮想クラスタ位置(仮想LBA番号)が自動的に算出可能になっている。
ところで、図3に示したように、仮想FAT空間50sにおける仮想ディレクトリエントリ領域53への割り当てバイト数は“1GB=65536クラスタ”であるので、実際に登録可能なグループ(ディレクトリエントリ)の総数は、“65536÷24≒2730”となる。
そして、上述した構成からなる仮想FAT空間50sの仮想ディレクトリエントリ領域53は、前述した図5〜図7に示したごとくのディレクトリエントリ生成用中間テーブル71、図8に示したごとくのファイル用中間テーブル72が生成できたならば、これらをもとにその生成が可能になる。
そこで、図13のステップS561で説明した、ディレクトリエントリ生成用中間テーブル71をもとにした仮想FAT空間50sの仮想ディレクトリエントリ領域53の生成について説明する。
前述したように1つのディレクトリエントリには、32バイトが必要である。この32バイトの1つのディレクトリエントリは、本実施例の場合、図15に示すような「ファイル名及び拡張子」Nd,「ファイル属性」Np,「作成時刻」Tt,「作成日付」Td,「更新時刻」Tut,「更新日付」Tud,「エントリの先頭クラスタ番号」Cgsと言った情報が含まれる構成になっている。
図15は、仮想FAT空間の仮想ディレクトリエントリ領域における1つのディレクトリエントリの実施例を示した図である。なお、図15に示した実施例の内容は、DOS互換のものであり、LFNには対応していない。
本実施例の場合、「ファイル名及び拡張子」Ndは、それぞれ8文字及び3文字で記載される。「ファイル属性」Npには、ディレクトリ又はファイル何れのエントリかを示す属性が記載される。「作成時刻」Ttには、そのエントリが最初に作成された時刻が記載される。「作成日付」Tdには、そのエントリが最初に作成された日付が記載される。「更新時刻」Tutには、そのエントリが最新に更新された時刻が記載される。「更新日付」Tudには、そのエントリが最新に更新された日付が記載される。
図5〜図7に示したディレクトリエントリ生成用中間テーブル71から、これらの情報を生成するのであるが、対象となるエントリがディレクトリのエントリか、ファイルのエントリかで、本実施例の場合は処理方法が異なる。
対象となるエントリがディレクトリのエントリの場合、図16に示す記載内容で、仮想ディレクトリエントリ領域53におけるディレクトリエントリを生成する。
図16は、仮想FAT空間の仮想ディレクトリエントリ領域における、ディレクトリのディレクトリエントリ記載内容の実施例を示した図である。
この場合、「ファイル名と拡張子」Ndは、ディレクトリエントリ生成用中間テーブル71のグループ番号Gnから、逆に独自ファイルフォーマット40の管理領域41におけるリンクをたどり、その独自管理情報から生成される。この「ファイル名と拡張子」Ndは、独自ファイルシステム15で管理している名称と一致している必要はなく、ホスト機器20側に認識させたい名前が設定される。
「ファイル属性」Npには、ディレクトリ属性が付加される。「作成時刻」Tt,「作成日付」Td,「更新時刻」Tut,及び「更新日付」Tudといった履歴情報は、実際には、この仮想FAT空間50sの仮想ディレクトリエントリ領域53におけるディレクトリエントリ自体がFATエミュレータ部18によってメモリ上の擬似ディレクトリエントリ展開領域に形成される仮想のものであるから、ホスト機器20が読み取り要求を発生した日付、日時が設定される。「エントリの先頭クラスタ番号」Cneは、エントリ先のグループ番号から一義的に定まる。
これに対し、対象となるエントリがファイルのエントリである場合、図17に示す記載内容で、仮想ディレクトリエントリ領域53のファイルの情報を生成する。
図17は、仮想FAT空間の仮想ディレクトリエントリ領域における、ファイルのディレクトリエントリ記載内容の実施例を示した図である。
この場合、「ファイル名と拡張子」Ndは、図8に示したファイル用中間テーブル72に定義されたファイル名Nfがそのまま採用される。「ファイル属性」Npには、ファイル属性が付加される。「作成時刻」Tt,「作成日付」Td,「更新時刻」Tut,及び「更新日付」Tudといった履歴情報は、ファイル用中間テーブル72に定義された日付や時刻がそのまま採用される。「エントリの先頭クラスタ番号」Cgsは、同じくファイル用中間テーブル72から一義的に定められる。すなわち、「エントリの先頭クラスタ番号」Cgsには、図8に示したファイル用中間テーブル72に定義された「ファイル開始仮想クラスタ番号」Cfsがそのまま採用される。
以上のようにして、図6に示したグループ番号“0”のルートディレクトリのディレクトリエントリを生成し、メモリ上の擬似ディレクトリエントリ展開領域に展開すると、図18のようになる。
図18は、仮想FAT空間の仮想ディレクトリエントリ領域におけるルートディレクトリのディレクトリエントリの実施例を示した図である。
このグループ番号が“0”のルートディレクトリ(図4参照)の場合は、FATエミュレータ部18により、メモリ上の擬似ディレクトリエントリ展開領域に、仮想ディレクトリエントリ領域53が次のように生成されて展開される。
まず、メモリ上の擬似ディレクトリエントリ展開領域における領域先頭からのオフセットを“0”バイトとして、グループ番号が“0”の最初のエントリ“Dir1”(図4参照)が生成される。この場合、エントリ“Dir1”には、その属性として“ディレクトリ”が記載され、開始クラスタ番号Cgsとしては、そのサブディレクトリであるグループ番号が“1”のディレクトリの擬似ディレクトリエントリ展開領域における開始クラスタ番号(すなわち、メモリ上の擬似ディレクトリエントリ展開領域の領域先頭からのクラスタ番号)である“24”が記載される。なお、この場合、メモリ上の擬似ディレクトリエントリ展開領域の領域先頭は、仮想FAT空間50sにおける仮想クラスタ番号“18,530”に対応する。
また、メモリ上の擬似ディレクトリエントリ展開領域の領域先頭からのオフセットを“32”バイトとして、グループ番号が“0”の次のエントリ“Dir2”(図4参照)が生成される。この場合、エントリ“Dir2”には、その属性として“ディレクトリ”が記載され、開始クラスタ番号Cgsとして、そのサブディレクトリであるグループ番号が“2”のディレクトリの擬似ディレクトリエントリ展開領域における開始クラスタ番号である“48”が記載される。
また、メモリ上の擬似ディレクトリエントリ展開領域の領域先頭からのオフセットを“64”バイトとして、グループ番号が“0”のその次のエントリ“File0”(図4参照)が生成される。この場合、エントリ“File0”には、その属性として“ファイル”が記載され、開始クラスタ番号Cgsとして、その開始クラスタ番号である“X0”が記載される。
同様にして、仮想ディレクトリエントリ領域53を形成するメモリ上の擬似ディレクトリエントリ展開領域の先頭からのオフセットを“96”バイトとして、グループ番号が“0”における次のエントリ“File1”(図4参照)が生成される。この場合、エントリ“File1”には、その属性として“ファイル”が記載され、開始クラスタ番号Cgsとして、その開始クラスタ番号である“X1”が記載される。
また、仮想ディレクトリエントリ領域53を形成するメモリ上の擬似ディレクトリエントリ展開領域の先頭からのオフセットを“128”バイトとして、グループ番号が“0”の最後のエントリ“File2”(図4参照)が生成される。この場合、エントリ“File2”には、その属性として“ファイル”が記載され、開始クラスタ番号として、その開始クラスタ番号である“X2”が記載される。
これに対し、グループ番号が“1”以降のグループのディレクトリは、仮想ディレクトリエントリ領域53を形成するメモリ上の擬似ディレクトリエントリ展開領域の先頭から、それ以前のグループのディレクトリ領域分だけオフセットされたクラスタ番号から記載される。例えば、グループ番号が“1”のディレクトリは、図14に示すように、グループ番号が“0”のディレクトリ領域分である24クラスタ分だけオフセットされた、メモリ上の擬似ディレクトリエントリ展開領域のクラスタ番号“24”のクラスタを開始クラスタとして、その先頭から生成される。
そして、このグループ番号が“1”以降のグループのディレクトリエントリの生成に当たっては、開始クラスタ番号のクラスタ先頭から、ディレクトリトップ専用の内容を表わした2つの特殊なエントリが記載された後に、グループに含まれるエントリが生成される。
図19は、仮想FAT空間の仮想ディレクトリエントリ領域におけるグループ番号が“1”のディレクトリのエントリの実施例を示した図である。
図19に示すように、仮想ディレクトリエントリ領域53を生成/展開するためにメモリ上に形成された擬似ディレクトリエントリ展開領域において、グループ番号が“1”のディレクトリは、ルートディレクトリではないので、開始クラスタ番号“24”のクラスタ先頭から、ディレクトリトップ専用の内容を表わした2つの特殊なエントリが存在する。そのため、開始クラスタ番号“24”のクラスタ先頭からのオフセットを“64”バイトとして、グループ番号が“1”のディレクトリにおける最初のエントリ“Dir3”(図4参照)が生成される。同様にして、開始クラスタ番号“24”のクラスタ先頭からのオフセットを“96”バイトとして、次のエントリ“Dir4”(図4参照)が生成され、またオフセットを“128”バイトとして、グループ最後のエントリ“File3”が生成される。
なお、図18及び図19に示したファイルのエントリ“File0〜File3”の開始クラスタ番号“X1〜X4”については、ファイル用中間テーブル72を参照した演算が必要となる。また、今回の方法はLFN非対応であるが、若干の拡張を施すことでLFNへの対応も可能である。なお、ファイルのエントリ“File0〜File3”の開始クラスタ番号“X1〜X4”についての、ファイル用中間テーブル72を参照した演算については、後述する。
したがって、仮想クラスタ番号“2”から仮想クラスタ番号“65,537”に該当する、仮想LBA番号“18,530”のから仮想LBA番号“2,115,681”の読み取り要求Sが発生した場合、これは、仮想FAT空間50sの仮想ディレクトリエントリ領域53に対する読み取り要求が発生したとデバイス機器10のFATエミュレータ部18は判別し、上述した如くの仮想ディレクトリエントリ領域53の生成手法に基づいて、FATエミュレータ部18は、次に説明するような処理を行う。
仮想ディレクトリエントリ領域53は、記録装置11の独自ファイルシステム15による1グループ(ディレクトリ)のディレクトリエントリ当たり、24クラスタを用いるため、ホスト機器20は、後述する仮想FATを参照しながら、例えば、グループ番号が“0”のルートディレクトリであれば、図3に示した仮想FAT空間50sの仮想ディレクトリエントリ領域53における仮想クラスタ番号“2”を先頭に最大24クラスタ分の読み取り要求を、また、グループ番号が“1”のディレクトリであれば同様に仮想クラスタ番号“26”を先頭に最大24クラスタ分の読み取り要求を発行してくることになる。
したがって手続きとしては、ホスト機器20からの読み取り要求のLBA番号Sが、仮想クラスタ番号“2〜65537”に対応する“18530≦S≦2115681”の仮想ディレクトリエントリ領域53についてである場合には、デバイス機器10のFATエミュレータ部18は、ホスト機器20からの読み取り要求のLBA番号Sから、次式によって、仮想FAT空間50sの仮想ディレクトリエントリ領域53における仮想クラスタ番号Cを求める。
C=(S-18530)¥32+2 (13)
そして、この仮想クラスタ番号Cから、そのエントリが管理するであろうグループ番号Gnを次式により求める。
Gsn=[(C−2)÷24] (14)
その上で、ディレクトリエントリ生成用中間テーブル71を参照し、該当するグループ番号Gnのディレクトリエントリを、最大24クラスタ分だけ生成し(図12のステップS415,図13のステップS461が対応)、上述したようにして、FATエミュレータ部18によってメモリ上の擬似ディレクトリエントリ展開領域に展開し(図12のステップS415,図13のステップS462が対応)、ホスト機器20からの読み取り要求で要求されたセクタ長分を、通信ドライバ19を介してホスト機器20に返す(図12のステップS416〜S417,図13のステップS491が対応)。
ただし、一度に処理される可能性としては、本実施例としては、1グループ当たり、仮想FAT空間50sの仮想ディレクトリエントリ領域53における仮想の“24クラスタ”を割り当てているため、“24クラスタ分=16KB×24=384KB”が最大である。したがって、もし、FATエミュレータ部18を備えたデバイス機器10のメモリ上に余裕があるのであれば、擬似ディレクトリエントリ展開領域として384KBをキャッシングすると効率的である。ただし、ホスト機器20側の両ドライバ27,28の制約により、ホスト機器20から一度に発生する読み取り要求は最大でも前述したように128KB分であるから、キャッシュ容量は後述する仮想FATと同じく128KBに固定してもかまわない。
また、メモリに余裕がないのであれば、キャッシングを行わず、ホスト機器20からの仮想ディレクトリエントリ領域53を指定したLBA番号Sの読み取り要求の都度、このLBA番号Sに対応したグループ番号Gnのディレクトリエントリのテーブルを512バイト分、すなわち1エントリは32バイト必要とするのでグループ番号Gnにおける16個のエントリ分をメモリ上の擬似ディレクトリエントリ展開領域で生成/展開しては、返すという方式でもかまわない。
次に、図13のステップS551〜S553で説明した、LBA変換処理の第1の処理としての仮想FATの生成について説明する。
ホスト機器20からの読み取り要求によって与えられたLBA番号Sが“96≦S≦218529”で、記録装置11に対応した仮想記録装置21'の仮想クラスタ番号“1”に対応する仮想FATの読み取り要求があった場合、デバイス機器10のFATエミュレータ部18は、LBA変換処理として、そのメモリ上に仮想FATを生成して展開し、この読み取り要求によって与えられたLBA番号Sによって生成されて展開されたFATの中、該当する512バイト部分の仮想ディレクトリエントリの記録内容を出力データとして用意する。
この場合、本実施例では、図5に示したディレクトリエントリ生成用中間テーブル71及び図8に示したファイル用中間テーブル72をもとに、仮想FAT空間50sの仮想管理領域51の仮想FATとして、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)上に展開する。
なお、仮想FATは、本実施例では、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)上の、擬似FAT展開領域に準備される。
ここで、図3に示した仮想FAT空間50sの仮想管理領域51に形成される仮想FATへの、仮想ディレクトリエントリ領域53の反映方法について説明する。
FATエミュレータ部18は、仮想ディレクトリエントリ領域53のディレクトリを仮想FAT空間50sの仮想管理領域51の仮想FATに反映する場合、ホスト機器20からのアクセス手順の関係から、ディレクトリエントリ生成用中間テーブル71を参照して、仮想FATを必要部分について生成/更新する。
本実施例の場合、仮想ディレクトリエントリ領域53は、図3に示したように、仮想FAT空間50sの仮想クラスタ番号“2”〜“65,537”にわたって存在し、各グループの開始クラスタ番号Cgsは、仮想ディレクトリエントリ領域53において1グループ当たりのエントリに24クラスタを割り当てていることから一義的に定まるため、後は、各グループのディレクトリエントリが実際に占有するクラスタサイズが求まれば、仮想ディレクトリエントリ領域53を仮想FATに反映することが可能となる。
まず、図5に示したディレクトリエントリ生成用中間テーブル71からグループのディレクトリエントリのクラスタサイズを算出する方法について、独自ファイルシステム15中のディレクトリツリーが図4に示したようになっている場合を例に、説明する。
図4に示したディレクトリツリーにおいて、グループ番号“0”のルートディレクトリが仮想FATに反映する対象のエントリである場合、図6に示したグループ番号“0”のディレクトリエントリ生成用中間テーブル71から、このルートディレクトリに含まれるエントリの総計(図6に示す「グループ存在するファイルとグループの総計」Gfgが対応)を求めることができる。
一方、本実施例のデバイス機器10の記録装置11では、1クラスタは16KB(512×32)で、1エントリには32バイトが必要なので、1クラスタ当たり、512個のエントリを設定可能である。
これより、「グループのディレクトリエントリのために必要なクラスタ総数」Cgは、
Cg =[Gfg÷512]+1 (15)
で求めることができる。なお、式中の“[ ]”はガウス記号を示し、ある値を超えない最大の整数値を表す。
したがって、図4に示したディレクトリツリーのグループ番号“0”のルートディレクトリの場合、グループのディレクトリエントリのために必要なクラスタ総数Cgは“5”であるから、グループ番号“0”のルートディレクトリのために必要なクラスタ総数Cg(0)は“1”になる。
次に、対象となるエントリがルートディレクトリではない場合について、グループのディレクトリエントリのクラスタサイズを算出する方法を、図7に示したグループ番号“1”のディレクトリエントリ生成用中間テーブル71を例に、説明する。
この場合、図7に示したグループ番号“1”のディレクトリエントリ生成用中間テーブル71から、対象となるエントリが含まれるグループのエントリの総計(図7に示す「グループ存在するファイルとグループの総計」Gfgが対応)を求めることができる。
ところで、この場合におけるグループ番号“1”のディレクトリエントリは、ルートディレクトリではないので、図18に示したように、ディレクトリトップの2個の専用エントリを考慮しなければならない。
以上のことから、グループ番号“1”以降のグループのディレクトリエントリのために必要なクラスタ総数Cgは、同様にして
Cg =[(Sum+2)÷512]+1 (16)
で求めることができる。
したがって、図4に示したディレクトリツリーのグループ番号“1”のディレクトリの場合、対象となるエントリが含まれるグループのエントリの総計Gfg(1)は“3”であるので、グループ番号“1”のディレクトリのために必要なクラスタ総数Cg(1)は“1”になる。
以上のような演算を経て、各グループのディレクトリエントリにおいて、各グループの先頭クラスタ番号Cgs、各グループの占有クラスタサイズ(必要なクラスタ総数)Cgが、それぞれ求まる。
例えば、デバイス機器10における想記録装置11(すなわち、仮想記録装置21')の仮想FAT空間50sのディレクトリエントリの構成が、図20に示すようになっていたならば、仮想FAT空間50sの仮想FAT先頭部についての内容は、図21に示すとおりになる。
図20は、グループ番号“0”から“3”までのディレクトリエントリにおいて、各グループ毎の占有クラスタサイズの例を示した図である。
なお、図20に示したディレクトリエントリの例は、図4にディレクトリツリーを例示したディレクトリエントリとは異なるものになっている。図20に示した例では、グループ番号が“0”のディレクトリの占有クラスタサイズCg(0)が“5”、グループ番号が“1”のディレクトリの占有クラスタサイズCg(1)が“3”、グループ番号が“2”のディレクトリの占有クラスタサイズCg(2)が“10”、グループ番号が“3”のディレクトリの占有クラスタサイズCg(3)が“1”であることを示している。
図21は、図20に示したディレクトリエントリの例について、仮想FATの先頭部の内容を示した図である。
図21は、仮想FAT空間50sの仮想FAT先頭部について、メモリ上の擬似FAT展開領域に生成/展開した内容を表形式に示したもので、1クラスタ当たりのFAT情報が4バイトで記載され、図中、4つに区分けされている部分が、各グループに割り当てられた24クラスタ分のディレクトリエントリ領域の仮想FATを意味する。
例えば、占有クラスタサイズCg(0)が“5”で、グループ番号が“0”のディレクトリエントリ(ルートディレクトリエントリ)について見ていくと、仮想FATにおける、仮想FAT空間50sのディレクトリエントリ領域53の先頭クラスタである仮想クラスタ番号“2”に対応する記録領域には、その次にリンクすべき仮想FAT空間50sの記録領域のFAT情報として、仮想クラスタ番号“3”が記載される。以下、同様にして、グループ番号が“0”のディレクトリエントリに関し、残りのリンクすべき4クラスタ分についてのFAT情報が記載される。すなわち、仮想FATの仮想クラスタ番号“3”に対応する記録領域には仮想クラスタ番号“4”が記載され、仮想FATの仮想クラスタ番号“4”に対応する記録領域には仮想クラスタ番号“5”が記載され、仮想FATの仮想クラスタ番号“5”に対応する記録領域には仮想クラスタ番号“6”が記載され、グループ番号が“0”のディレクトリエントリの最終クラスタである仮想クラスタ番号“6”に対応する仮想FATの記録領域には、FAT情報の終端記号である“FFFFFFFFh(−1)”が記載される。
そして、本実施例では、前述したように、仮想FAT空間50sの仮想ディレクトリエントリ領域53では、1グループのディレクトリエントリ当たり、24クラスタを仮想的に割り当て確保しているため、仮想FATの仮想クラスタ番号“7”から仮想クラスタ番号“23”に対応する記録領域までは、「空き」であることを示す“0”が記載される。
以下、同様な方法で、グループ番号“1〜3”のディレクトリエントリのリンクが、仮想FATに割り当てられていることが示されている。
本実施例は、「リードオンリー」、すなわちホスト機器20からデバイス機器10の記録装置11へのファイルの書き込みを許さない事例なので、このように「エントリ間に空きクラスタを挟む」形式を採用している。
しかしながら、ホスト機器20からデバイス機器10の記録装置11へのファイル書き込みを許す形式での実装が必要になった場合、例えば、仮想FATの仮想クラスタ番号“7”に対応する記録領域が「空き」であるとホスト機器20側で判断され、何かのデータが埋め込まれてしまう可能性がある。したがって、リードオンリー以外の実装を行う場合は、ディレクトリエントリ生成用中間テーブル71の生成方法も含め、さらなる拡張が必要となる。
これに対し、FATエミュレータ部18は、仮想ファイル領域54のディレクトリを仮想FAT空間50sの仮想管理領域51の仮想FATに反映する場合、ホスト機器20からのアクセス手順の関係から、ファイル用ディレクトリエントリ生成用中間テーブル72を参照して、仮想FATを必要部分についてメモリ上の擬似FAT展開領域に生成/更新する。
仮想ファイル領域54を仮想FATに反映する方法は、仮想ディレクトリエントリ領域53を仮想FATに反映する方法とほぼ同じである。ただし、次の点が仮想ディレクトリエントリ領域53を仮想FATに反映する場合と異なっている。
まず、メモリ上の擬似FAT展開領域の領域先頭は、仮想FAT空間50sにおける仮想ファイル領域54の開始クラスタ番号である仮想クラスタ番号“65,538”になる。また、仮想ディレクトリエントリ領域53の場合に存在した、「空きクラスタ」は存在せず、全てのクラスタは頭詰めで存在する。これらの例を示したのが、図22、図23である。
図22は、仮想ファイル領域に存在する3つのファイルそれぞれの占有クラスタサイズの例を示した表である。
この例では、便宜的に、最初のファイルの占有クラスタサイズが“3”、次のファイルの占有クラスタサイズが“6”、その次のファイルの占有クラスタサイズが“9”であるものとし、ファイルは3つしか存在していないものとなっている。
図23は、図22に示した仮想FAT空間の仮想ファイル領域の内容を示した仮想FATの説明図である。
図23中、区分けされているメモリ上の擬似FAT展開領域の領域部分が、仮想FAT空間50sで各ファイルに割り当てられた仮想FATを意味する。
例えば、仮想ファイル領域54の最初のファイル番号が“0”のファイルについて見ていくと、仮想FATの仮想クラスタ番号“65,538”に対応する擬似FAT展開領域の領域先頭の4バイト分には、FAT情報としてその次にリンクすべき仮想クラスタ番号“65,539”が記載され、以下、ファイル番号が“0”のファイルの残りのリンクすべき2クラスタ分のFAT情報が8バイト分だけ続く。仮想FATにおけるこのファイル番号が“0”のファイルの最終クラスタであるクラスタ番号“65,540”に対応する擬似FAT展開領域の領域部分には、ファイル番号が“0”のファイルの終端記号である“FFFFFFFFh(−1)”が記載される。
このように、図23に示した仮想ファイル領域54の仮想FATの場合は、図21に示した仮想ディレクトリエントリ領域53の仮想FATの場合とは異なり、この直後の仮想クラスタ番号“65,541”に対応する擬似FAT展開領域の領域部分から次のファイル番号が“1”のファイルが割り当てられ、クラスタ番号“65,541”に対応する擬似FAT展開領域には、ファイル番号が“1”のファイルについて、その次にリンクすべきクラスタ番号“65,542”が記載され、以下、ファイル番号が“1”のファイルのリンクすべき5クラスタ分のFAT情報が20バイト分だけ続く。仮想FATにおけるファイル番号が“1”のファイルの最終クラスタであるクラスタ番号“65,546”に対応する擬似FAT展開領域の領域部分には、ファイル番号が“1”のファイルの終端記号である“FFFFFFFFh(−1)”が記載される。
同様にして、この直後の仮想クラスタ番号“65,547”に対応する擬似FAT展開領域の領域部分からその次のファイル番号が“2”のファイルが割り当てられ、クラスタ番号“65,547”に対応する擬似FAT展開領域には、ファイル番号が“2”のファイルについて、その次にリンクすべきクラスタ番号“65,548”が記載され、以下、ファイル番号が“2”のファイルのリンクすべき8クラスタ分のFAT情報が32バイト分だけが続く。仮想FATにおけるファイル番号が“2”のファイルの最終クラスタであるクラスタ番号“65,555”に対応する擬似FAT展開領域の領域部分には、ファイル番号が“2”のファイルの終端記号である“FFFFFFFFh(−1)”が記載される。なお、本実施例の場合では、クラスタ番号“655,556”以降の擬似FAT展開領域の領域部分には、仮想ファイル領域54にファイルが記録されていないことを示す“0”が記載される。
次に、このような構成からなる仮想FATが、仮想FAT空間50s中の領域をどのように管理しているかについて説明する。
図24は、仮想FAT空間中の仮想FATが、仮想FAT空間中の領域をどのように管理しているかを示している説明図である。
FATエミュレータ部18は、ホスト機器20からの読み取り要求によって与えられたLBA(セクタ)番号S(96≦S≦18529)に基づいて、ホスト機器20が仮想FAT空間50sの仮想クラスタ番号“1”の仮想FAT領域の参照を要求していることがわかった場合には、ホスト機器20が参照を要求しているのがFAT1であるか、FAT2であるかを判断する構成になっている。
仮に、読み取り要求によって与えられたLBA番号SがFAT2を参照するものであった場合には(LBA番号Sが、“9313≦S≦18529”の場合)、FATエミュレータ部18は、このLBA番号Sから、FAT1の占有セクタサイズ分“9,217”を減算することで、FAT1に対応する新たなLBA番号Sを求め、FAT1にアクセスしているものと仮定して処理を進める構成になっている。
本実施例では、「FAT32」システムのため、1クラスタの管理に必要な記録容量は“32ビット=4バイト”であり、1セクタは512バイトのため、1セクタ当たり、“512÷4=128個”のクラスタが管理可能である。
例えば、ホスト機器20からの読み取り要求によって与えられたLBA番号Sが“96”の場合、FATエミュレータ部18は、仮想FAT空間50sの仮想クラスタ番号“0”に対応する管理部2クラスタ(DPB,FSINFO)分の仮想FAT、及びディレクトリエントリ領域52の65,536クラスタ分のFATの中の先頭部の126クラスタ分の仮想FATを、図21で説明したような構成でメモリ上の擬似FAT展開領域に生成/展開して、ホスト機器20に返すようになっている。
また、読み取り要求によって与えられたLBA番号Sが“97”〜“607”の場合、FATエミュレータ部18は、ディレクトリエントリ領域52の65,536クラスタ分のFATの中、与えられたLBA番号Sから128クラスタ分のFATを、図21で説明したような構成でメモリ上の擬似FAT展開領域に生成/展開して、ホスト機器20に返すようになっている。
すなわち、本実施例では、このLBA番号Sの“607”は、LBA番号Sの“97”から512セクタ目に相当し、この仮想LBA番号が“97”〜“607”の512セクタによって、65,536(128×512)個のクラスタが管理可能であり、仮想ディレクトリエントリ領域53のクラスタ総数である65,536クラスタ分のFATの管理ができる。
また、読み取り要求によって与えられたLBA番号Sが“608”(仮想LBA番号“607+1”)の場合、本実施例では、仮想ディレクトリエントリ領域53の最終部の2クラスタ分に対応するFATと、クラスタ総数が1,114,112クラスタある仮想ファイル領域54分のFATの中、先頭部の126クラスタ分に対応するFATの内容を、図21及び図23で説明したような構成でメモリ上の擬似FAT展開領域に生成/展開して、ホスト機器20に返すようになっている。
すなわち、本実施例では、このLBA番号Sの“608”は、LBA番号Sの“97”から513セクタ目に相当し、ここから仮想ファイル領域54のクラスタのFATの管理が始まる。そのため、上述のようになっている。
また、読み取り要求によって与えられたLBA番号Sが“609”〜“9,312”の場合、仮想ファイル領域54の残りの1,113,986クラスタ分のFATの中から要求LBA番号Sに対応した128クラスタ分のFATの内容を、図23で説明したような構成でメモリ上の擬似FAT展開領域に生成/展開して、ホスト機器20に返すようになっている。
以上が、本実施例の場合のFATエミュレータ部18による仮想FAT生成のための基本手続きである。この基本手続きに従い、FATエミュレータ部18は、仮想FATを、ディレクトリエントリ生成用中間テーブル71及びファイル用中間テーブル72からなる中間テーブル70を参照して生成する。
ところで、実際には、仮想ディレクトリエントリ領域53及び仮想ファイル領域54全ての、クラス総数“1,179,648”全部のFATが、ホスト機器20から一連して要求されることはなく、ホスト機器20では、記録装置11のFATは全部ではなく、あくまでも部分的な管理となるはずである。
そこで、ホスト機器20により一回に連続して読み取られる可能性がある容量は、“256セクタ分=128KB”なので、デバイス機器10のメモリ上に128KBのバッファを擬似FAT展開領域として用意し、このバッファにホスト機器20から与えられた読み取り要求の先頭LBA番号Sから256セクタ分(128KB)に該当する32,768個のクラスタ分のFATを生成し、展開しておけば、ホスト機器20からの読み取り要求の都度、最初からFATを生成する手間が省ける。
ここで、ホスト機器20から与えられたLBA番号S(96≦S)から、FATで管理する最初の仮想クラスタ番号Cfsを算出する式は、1セクタ当たり128個のクラスタが管理可能であるため、次式になる。
Cfs=(S−96)×128 (17)
上記の128KBのバッファを用いた場合、32,768個(=128×1024÷4)のクラスタが管理可能であるから、
Cfs 〜 Cfs+32768−1
にいたる仮想クラスタ番号のクラスタを管理する仮想FATのキャッシングが可能となる。以上の手続きの流れは、次のようになる。
まず、デバイス機器10の記録装置11に、LBA番号CSの次にLBA番号Sがホスト機器20から与えられた場合に、
S≦CS+256 (18)
が成立すれば、先にメモリ上のバッファにLBA番号CSの読み取り要求に基づき展開した仮想FATの一部であると考えられるから、LBA番号Sの読み取り要求に基づき仮想FATの生成を行わなくても、該当する部分512バイト分(LBA番号Sから128クラスタ分)の仮想FATを切り出して、ホスト機器20に返すことで処理が終わる。
つまり、最初に与えられたLBA番号を“CS”、次に与えられたLBA番号を“S”とし、“CS”から展開したデバイス機器10におけるメモリ領域の先頭アドレスを“ADR”、かつ最初に与えられたLBA番号CSと次に与えられたLBA番号Sとの間で、式(18)の“S≦CS+256”が成立するとした場合、ホスト機器20から与えられた読み取り要求のLBA番号Sに対して、デバイス機器10からホスト機器20に返すべき512バイト(128クラスタ分)の先頭位置RAは、1セクタは512バイトのため、
RA = (ADR+(S−CS))×512 (19)
で求めることが可能であり、ホスト機器20から与えられる2回目以降の読み取り要求の際、与えられた読み取り要求のLBA番号Sから中間テーブル70を参照してFATを生成する手間が省ける。
次に、上述した仮想FAT生成方法に基づく、図13のステップS461,S462で示したFAT読み取り要求発生時の処理の流れの詳細を、図25により説明する。
図25は、デバイス機器におけるホスト機器からのFAT読み取り要求発生時のFATエミュレータ部による処理を示したフローチャートである。
ホスト機器20からLBA番号S(すなわち、96≦S≦9,312)のFAT読み取り要求発生が生じた場合(ステップS601)、LBA番号Sは仮想FAT空間50sのFAT1であるかFAT2であるかを、そのLBA番号Sに基づいて前述のようにして判断する(ステップS602)。
この判断の結果、LBA番号SがFAT2に対するFAT読み取り要求発生である場合は、LBA番号SからFAT1の占有セクタサイズ分である“9,217”を減算することで、FAT1に対応する新たなLBA番号Sを求める(ステップS603)。
その上で、FATエミュレータ部18を含むデバイス機器10におけるメモリ上の擬似FAT展開領域としてのバッファに、今回のLBA番号SのFAT読み取り要求発生が生じる前に、ホスト機器20からFAT読み取り要求が既に生じており、かつ、今回発生したLBA番号SのFAT読み取り要求が既に生じたLBA番号CSのFAT読み取り要求から256セクタ分の範囲内のものであるか否かを判定する(ステップS604)。
この判定の結果、今回発生したLBA番号SのFAT読み取り要求が既に生じたFAT読み取り要求のLBA番号CSから256セクタ分の範囲内のものである場合には、デバイス機器10の先頭アドレスを“ADR”とする128KB(“256”セクタ分)のバッファに、前のLBA番号CSのFAT読み取り要求に基づいて既に生成されている仮想FAT空間50sの仮想クラスタ“32,768”個分のFATの中から、今回発生したLBA番号SのFAT読み取り要求に対応してホスト機器20に返すべき512バイト分(仮想クラスタ“128”個分)のFAT情報の先頭アドレス“RA”を、
RA=ADR+(S−CS)×512 (20)
に基づいて演算する。そして、バッファに記憶されているFAT情報記憶内容から、この求められたアドレスRAを先頭とする512バイト分のFAT情報記憶内容をホスト機器20に返す(ステップS614)。
これに対し、先の判定の結果が、今回発生したLBA番号SのFAT読み取り要求が既に生じたFAT読み取り要求のLBA番号CSから256セクタ分を超える範囲外である場合は、FAT情報生成済の仮想クラスタ数iを“0”にして初期化する(ステップS605)。
その上で、今回発生したFAT読み取り要求のLBA番号Sが、仮想FAT空間50sにおける仮想管理部(MBR,DPB,FSINFO)、仮想FAT領域、仮想ディレクトリエントリ領域53、及び仮想ファイル領域54の中のいずれの領域のクラスタの管理を行うものか否かを判断する(ステップS606)。
本実施例では、この判断は、前述したように、LBA番号Sが、仮想FAT領域及び仮想ディレクトリエントリ領域53のクラスタの管理を行うための“96≦S≦607”に該当するか、仮想ディレクトリエントリ領域53及び仮想ファイル領域54のクラスタの管理を行うための“S=608”に該当するか、仮想ファイル領域54のクラスタの管理を行うための“609≦S≦9,312”に該当するか、を判別することにより行う。
この判別結果に基づき、デバイス機器10のメモリ上に用意した128KBのバファに、FAT情報を記憶して、仮想FATの生成を行う。
今回発生したFAT読み取り要求のLBA番号Sが“96≦S≦607”で、管理部及び仮想ディレクトリエントリ領域53のクラスタの管理を行うためのものである場合は、前述したようにして、仮想FATの生成を行う。
今回発生したFAT読み取り要求のLBA番号Sが“96”である場合は、管理領域51の2クラスタ分のFAT情報と、クラスタ総数Cdが65,536個のディレクトリエントリ領域52の中の先頭の126クラスタ分のFAT情報とからなる計128個のクラスタ分のFAT情報(512バイト)を生成する(ステップS607)。
また、今回発生したFAT読み取り要求のLBA番号S(m)が97≦S≦607である場合は、クラスタ総数Cdが“65,536”個のディレクトリエントリ領域52の中、式(17)により示した仮想クラスタ番号Cfsを先頭に計128個のクラスタ分のFAT情報(512バイト)を生成する(ステップS607)。
また、今回発生したFAT読み取り要求のLBA番号Sが“608”である場合は、クラスタ総数Cdが65,536個のディレクトリエントリ領域52の中の最終部の2クラスタ分に対応するFAT情報と、クラスタ総数Cfが1,114,112個の仮想ファイル領域54の中の先頭の126クラスタ分のFAT情報とからなる計128個のクラスタ分のFAT情報(512バイト)を生成する(ステップS608)。
また、今回発生したFAT読み取り要求のLBA番号Sが“608≦S≦9312”である場合は、クラスタ総数Cdが“1,114,112”個の仮想ファイル領域54の中、式(17)により示した仮想クラスタ番号Cfsを先頭に計128個のクラスタ分のFAT情報(512バイト)を生成する(ステップS609)。
そして、これらステップS607〜S609のいずれかにより生成されたFAT読み取り要求のLBA番号Sに対応して求められた計128個分のFAT情報(512バイト)を、デバイス機器10のメモリ上に先頭アドレスをADRとして用意した128KBのバッファに格納する。その格納にあたっては、格納先頭アドレスWAを次式により求め、この格納先頭アドレスWAを先頭に計128個のクラスタ分のFAT情報(512バイト)をアドレス順に格納する(ステップS610)。
WA=ADR+(i×512) (21)
そして、FAT情報生成済の仮想クラスタ数iをインクリメントし、FAT読み取り要求のLBA番号Sに“1”を加えて新たなLBA番号Sとし(ステップS611)、その上で仮想クラスタ数iが255となって、デバイス機器10のメモリ上に先頭アドレスをADRとして用意した128KBのバッファ全域についてFAT情報の格納が終了したか否かを判定する(ステップS612)。
この判定の結果、デバイス機器10のメモリ上に先頭アドレスをADRとして用意した128KBのバッファ全域についてFAT情報の格納が終了していないならば、ステップS611で更新したLBA番号Sについて、上述したステップS606〜S612の処理を繰り返し、バッファ全域にFAT情報を格納する。
一方、この判定の結果、バッファ全域にFAT情報を格納が終了した場合は、デバイス機器10のメモリ上に用意した128KBのバッファからその先頭アドレスADRから512バイト分に格納されているFAT情報をホスト機器20に返す(ステップS613)。
最後に、図13のステップS551〜S553で説明した、LBA変換処理の第2の処理としての仮想ファイルの生成について説明する。
ホスト機器20からデバイス機器10に、仮想クラスタ番号が“65,538”〜“1,179,649”に該当する、仮想LBA番号Sが“2,115,682”〜“37,767,265”の読み取り要求が与えられた場合、これは、仮想FAT空間50sの仮想ファイル領域54に対する読み取り要求が発生したものと、FATエミュレータ部18は判断する。
仮想ファイル領域54の生成手法は既に述べた通りであり、1グループ(ディレクトリ)あたり、24クラスタを用いるため、図23に示したように、仮想ディレクトリエントリ領域53のような「空きクラスタ」は存在せず、全てのクラスタは頭詰めで存在する。
そして、仮想ファイル領域54に対してのアクセスのみは、他の領域に対する読み取り要求と異なり、記録装置11に実際に記録されている内容を返す必要がある。ただし、その際には、ファイル全体ではなく、ホスト機器20から与えられた読み取り要求のLBA番号Sとファイル用中間テーブル72により、着目しているファイル中のどの512バイトに相当するかを判断する必要がある。
以下、その際のFATエミュレータ部18による処理の流れを説明する。
この場合も、まず、ホスト機器20からの読み取り要求のLBA番号Sが、“18530≦S≦2115682”である場合には、読み取り要求のLBA番号Sから仮想クラスタ番号Cを求める。
この仮想クラスタ番号Cは、次式により求めることができる。
C=(S−2115682)¥32+655382 (22)
また、読み取り要求のLBA番号Sから、仮想クラスタ番号C中の仮想LBA番号Sのオフセット位置VSOを求める。
VSO=(S−C×32)×512 (23)
例えば、読み取り要求のLBA番号Sが“2,115,682”である場合、仮想クラスタ番号Cは“655,382”、仮想クラスタ番号“655,382”中の読み取り要求の仮想LBA番号“2,115,682”のオフセット位置VSOは、“0”バイトになる。
また、読み取り要求のLBA番号Sが“2,116,194(=2115682+512)”の場合、仮想クラスタ番号Cは“655,382”、仮想クラスタ番号“655,382”中の読み取り要求の仮想LBA番号“2,116,194”のオフセット位置VSOは、“512”バイトになる。
そして、図8に示したファイル用中間テーブル72を参照し、そのファイル開始仮想クラスタ番号Cfs及びファイル終了仮想クラスタ番号Cfeから、仮想クラスタ番号Cが参照する記録装置11に実際に記録されているファイルのファイルシリアル番号Fnのファイル用中間テーブル72を求める。
そして、このファイルシリアル番号Fnのファイル用中間テーブル72から、実際の記録装置11における独自ファイルフォーマット40により管理される当該ファイル先頭の物理LBAアドレスAdを求める。
読み取り要求のLBA番号S、仮想クラスタ番号C、開始仮想クラスタ番号Cfs、オフセット位置VSOより、ホスト機器20からのLBA番号Sの読み取り要求で読み取ろうとしている情報が、実際の記録装置11におけるファイルシリアル番号Fnのファイルのファイル先頭の物理LBAアドレスAdから何バイト目の記録内容に該当するかを求める。
以上で、ホスト機器20が読み取ろうとしている実際の記録装置11における独自ファイルフォーマット40により管理されるファイル、すなわちファイルシリアル番号Fsnのファイルの情報が判明し、ホスト機器20が読み取ろうとしている実際の記録装置11における独自ファイルフォーマット40により管理されるファイルの先頭の物理LBAアドレスAdからのオフセット位置の情報が判明するので、あとは、記録装置11の独自ファイルフォーマット40中のリンクをたどり、ファイルシリアル番号Fnのファイルの該当する領域の512バイト分を返すことになる。
なお、このとき、独自ファイルフォーマット40によって管理される記録装置11の実際のクラスタ(ブロック)サイズが、どのような大きさであっても、基本的に処理内容は変わらない。また、仮想ファイルの生成に関してのLBA変換処理についても、仮想FATの生成で言及した「キャッシング」の手法を用いることも可能であるが、これは実装依存であるので、ここでは省略する。
以上説明したように、デバイス機器10のFATエミュレータ部18によるLBA変換処理は、ホスト機器20から与えられた読み取り要求のLBA番号Sに対し、その都度、デバイス機器10の独自ファイルシステム15により管理された記録装置11のLBA番号S'を対応する算出したり、又はこのLBA番号S'の512バイト分のデータを用意したりするものではない。
すなわち、ホスト機器20から与えられる読み取り要求は、「先頭のLBA番号S」と「読み取り個数n」の2つのパラメータで定義されることに基づき、デバイス機器10とホスト機器20とのマスストレージ接続の当初に、独自ファイルシステム15により管理されたデバイス機器10の記録装置11の独自ファイルフォーマット40による記録内容を、ホスト機器20が記録装置21を管理するFATファイルシステム25と同様の、仮想FAT空間50s上で見せることにより、次に述べるような特長を有する。
まず、デバイス機器10は、その記録装置11に記録され、独自ファイルシステム15で管理されている全ファイルの開始ブロック位置とリンクをたどり、デバイス機器110において独自のファイルシステム15で管理されている全ファイルの開始ブロック位置とリンクを、ホスト機器20におけるFATファイルシステム25によるクラスタ番号に変換し、この変換したクラスタ番号を記録装置11のFAT情報として全部登録しておく必要もなくなる。
そして、デバイス機器10は、ホスト機器20から与えられるの読み取り要求の「先頭のLBA番号S」が仮想FAT空間50s上のどの仮想領域51〜54の記録部分に該当するかを基づき、迅速かつ的確にホスト機器20が要求する独自ファイルフォーマット40によって管理された記録装置11の記録内容を特定することができる。
また、ホスト機器20からの1回の読み取り要求で与えられる「読み取り個数n」の上限も、最高でも256個であるから、デバイス機器10は、ホスト機器20から読み取り要求された該当する記録内容を展開するために“256×512バイト=128KB”のメモリ空間を用意すれば、ホスト機器20からの全ての読み取り要求に答えることが可能になる。
さらに、独自ファイルフォーマット40によって管理された記録装置11のディレクトリ及びファイルに関しての情報が記録された中間テーブルを生成し、ホスト機器20から与えられるLBA番号Sを指定した読み取り要求に対する処理を、この中間テーブルを参照して対処することにより、さらにその処理を迅速かつ効率的に行うことができる。
加えて、ホスト機器20から与えられるLBA番号Sを指定した読み取り要求に対するLBA変換処理は、今回読み取り要求に対するLBA変換処理の処理結果が、前回読み取り要求があった際に行ったLBA変換処理の処理結果に含まれていることが判断される場合は、今回読み取り要求に対してLBA変換処理を行わずとも、前回読み取り要求があった際に行ったLBA変換処理の処理結果の中の、今回読み取り要求に対して適合する処理結果を返す「キャッシング」も可能であるので、より一層その処理を迅速かつ効率的に行うことができる。
なお、本実施の形態のデバイス機器、及びデバイス機器の記録装置のフォーマット変換方法は以上説明したとおりであるが、各部の具体的な構成及び方法については、種々の変形例が可能である。
例えば、本実施の形態のデバイス機器、及びデバイス機器の記録装置のフォーマット変換方法では、仮想MBR,仮想DPB,仮想FSINFOは、ホスト機器20側からそれぞれについての読み取り要求があった際に、その都度、デバイス機器10のメモリ上の、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)にFATエミュレータ部18が生成する構成としたが、これらは容量も小さく、記録媒体の残りクラスタ数や、最後にアクセスしたクラスタ番号が情報として保持され、ダイナミックに変化する仮想FSINFOを除いては、そのデータもほぼ固定なので、次のように構成することもできる。
例えば、予め記憶装置11以外の不揮発性メモリに仮想MBR,仮想DPBの初期データを用意し、ホスト機器20からの読み取り要求の発生とは関係なく、予めメモリ(例えば、SDRAM:Synchronous DRAM)上でその初期データを適宜修正可能に保持するようにし、ホスト機器20からの読み取り要求が発生した場合には、既に修正保持されている仮想MBR,仮想DPBをメモリからホスト機器20側に返すことや、記憶装置11のデータ領域42に、独自ファイルシステム15の管理外にある領域を予め作成しておき、仮想MBR,仮想DPB,仮想FSINFOの初期データを記録しておき、ホスト機器20からの読み取り要求が発生した場合には、ここから仮想MBR,仮想DPB,仮想FSINFOを読み取って適宜修正を行ってホスト機器20側に返すこと等も可能である。なお、後者の場合、仮想MBR,仮想DPB,仮想FSINFOの初期データが記録されている記憶装置11のデータ領域42の部分は、デバイス機器10単体をそのアプリケーション10で使用する場合、一切アクセスされることはなく、マスストレージ接続するときだけ参照可能な構成になっている。また、上記構成の仮想MBR,仮想DPBも修正可能としたのは、デバイス機器10の記録装置11では、マスストレージ接続されたホスト機器20に対する見せかけの容量が変化したらその初期データも変化する場合に備えてのものである。具体的には、デバイス機器10の記録装置11のパーティションの設定が変更される等に起因して、ホスト機器20に対する記録装置11の見せかけの容量が変化する場合に対応するためである。
また、上述した実施例では、仮想FAT,仮想ディレクトリエントリ領域53それぞれを生成するための擬似FAT展開領域,擬似ディレクトリエントリ展開領域は、記録装置11とは別の記録装置(例えば、RAM,フラッシュメモリ等)に設ける構成で説明したが、記録装置11のホスト機器20からは不可視の領域に形成してもよい。
これら擬似FAT展開領域,擬似ディレクトリエントリ展開領域は、独自ファイルシステム15の管理外の領域を設けるには容量が大きすぎるため、中間テーブル70と仮想FAT空間50sにおけるエントリのシリアライズの概念を用いることで、必要最低限用意された中間テーブル70の情報をもとに、ホスト機器20から読み出し要求があった、仮想FATや、ディレクトリエントリ領域53のディレクトリエントリを、プログラム的に擬似的に生成して展開し、読み出し要求に応えてホスト機器20に返す処理を行うためのものである。
そこで、これら擬似FAT展開領域,擬似ディレクトリエントリ展開領域についても、デバイス機器10にこれらのために用意されているメモリの容量、性能パフォーマンスに応じて、メモリ上のそれぞれ別の領域に別に形成することも、メモリ上の少なくとも一部の領域を擬似FAT展開領域又は擬似ディレクトリエントリ展開領域として共用できるように形成することも可能である。
具体的には、メモリの容量が擬似FAT展開領域及び擬似ディレクトリエントリ展開領域の両方を同時展開しておくために必要な容量より少ない場合には、FAT読み取り要求があった際には、メモリ上に擬似FAT展開領域を生成/展開し、ディレクトリエントリ読み取り要求があった場合には、メモリ上に擬似ディレクトリエントリを代わりに生成/展開することも可能である。
ホスト機器と本発明の一実施の形態に係るデバイス機器との論理接続を示した図である。 本発明の一実施の形態に係るデバイス機器の記録装置における記録媒体の独自ファイルフォーマットと仮想FATファイルフォーマットとの対比図である。 本発明の一実施の形態に係るデバイス機器に関し、実際の記録装置及び仮想記録装置それぞれの記憶空間におけるマッピングの一実施例を示した図である。 デバイス機器の実際の記録装置を管理する独自ファイルシステム中に存在するディレクトリツリーの一例を示した図である。 ディレクトリエントリ生成用中間テーブルの一実施例の構成図である。 グループ番号“0”のディレクトリエントリ生成用中間テーブルの構成図である。 グループ番号“1”のディレクトリエントリ生成用中間テーブルの構成図である。 ファイル用中間テーブルの一実施例を示した図である。 ディレクトリエントリ生成用及びファイル用の中間テーブルをリアルタイムに生成する場合の処理概要を示したフローチャートである。 ディレクトリエントリ生成用及びファイル用の中間テーブルをホスト機器からの接続要求時に生成する場合の処理概要を示したフローチャートである ディレクトリエントリ生成用及びファイル用の中間テーブルの生成/更新の手続きのフローチャートである。 ホスト機器にマスストレージ接続されたデバイス機器の処理概要のフローチャートである。 本実施の形態のデバイス機器のFATエミュレータ部によるLBA変換処理の概要を示したフローチャートである。 仮想FAT空間の仮想ディレクトリエントリ領域における仮想ディレクトリエントリの配置方法の実施例を示したものである。 仮想FAT空間の仮想ディレクトリエントリ領域における1つのディレクトリエントリの実施例を示した図である。 仮想FAT空間の仮想ディレクトリエントリ領域における、ディレクトリのディレクトリエントリ記載内容の実施例を示した図である。 仮想FAT空間の仮想ディレクトリエントリ領域における、ファイルのディレクトリエントリ記載内容の実施例を示した図である。 仮想FAT空間の仮想ディレクトリエントリ領域におけるルートディレクトリのディレクトリエントリの実施例を示した図である。 仮想FAT空間の仮想ディレクトリエントリ領域におけるグループ番号が“1”のディレクトリのディレクトリエントリの実施例を示した図である。 グループ番号“0”から“3”までのディレクトリエントリにおいて、各グループ毎の占有クラスタサイズの例を示した図である。 図20に示したディレクトリエントリの例について、仮想FATの先頭部の内容を示した図である。 仮想ファイル領域に存在する3つのファイルそれぞれの占有クラスタサイズの例を示した表である。 図22に示した仮想FAT空間の仮想ファイル領域の内容を示した仮想FATの説明図である。 仮想FAT空間中の仮想FATが、仮想FAT空間中の領域をどのように管理しているかを示している説明図である。 デバイス機器におけるホスト機器からのFAT読み取り要求発生時のFATエミュレータ部による処理を示したフローチャートである。 デバイス機器とホスト機器との物理接続を示した図である。 従来のホスト機器とデバイス機器との論理接続を示した図である。
符号の説明
10 デバイス機器
11 記録装置
14 アプリケーション
15 機器独自ファイルシステム
17 記録装置用ドライバ
18 FATエミュレータ部
19 通信ドライバ
20 ホスト機器
21,21' 記録装置
24 アプリケーション
25 FATファイルシステム
26 ファイルアロケーションテーブル(FAT)
27 記録装置用ドライバ
28 マスストレージドライバ
29 通信ドライバ
30 物理接続路
40 独自ファイルフォーマット
41 管理領域
42 データ領域
43 ブロック
43f ファイルブロック部分
43d ディレクトリブロック部分
43c 不可視ブロック部分
50 仮想FATファイルフォーマット
50s 仮想FAT空間
51 仮想管理領域
52 仮想データ領域
53 仮想ディレクトリエントリ領域
54 仮想ファイル領域
70 中間テーブル
71 ディレクトリエントリ生成用中間テーブル
72 ファイル用中間テーブル
110 デバイス機器

Claims (10)

  1. 独自ファイルシステムによって管理された記録装置を備え、マスストレージ接続されたホスト機器から該独自ファイルシステムとは異なるファイルシステムによって与えられるLBA番号を指定した読み取り要求に相当する記録内容を、前記記録装置から読み取って前記ホスト機器に転送するデバイス機器であって、
    前記独自ファイルシステムによって管理されている前記記録装置の記録内容を前記ホスト機器のファイルシステムに反映するための仮想ファイル空間と、
    前記ホスト機器から与えられた読み取り要求のLBA番号が、該仮想ファイル空間におけるいずれの領域の記録内容の読み取りに該当するかを判断する判断手段と、
    前記記録装置には実際に保持されていない前記仮想ファイル空間の領域の記録内容に該当する場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成する第1の処理手段と、
    前記記録装置に実際に保持されている前記仮想ファイル空間の領域の記録内容に該当する場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開する第2の処理手段と
    備えていることを特徴とするデバイス機器。
  2. 前記仮想ファイル空間は、仮想管理領域及び仮想データ領域を有し、該仮想データ領域は、前記記録装置のデータ領域と同容量に設定され、さらに仮想ディレクトリエントリ領域と該仮想ディレクトリエントリ領域に続く仮想ファイル領域とに分割され、
    前記判断手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が、該仮想ファイル空間における仮想管理領域及び仮想データ領域の仮想ディレクトリエントリ領域の記録内容の読み取りに該当するか、又は仮想データ領域の仮想ファイル領域に該当するかを判断し、
    前記第1の処理手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が前記仮想FAT空間の仮想管理領域又は仮想ディレクトリエントリ領域の記録内容に該当する場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成し、
    前記第2の処理手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が仮想データ領域の仮想ファイル領域に該当する場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開する
    ことを特徴とする請求項1記載のデバイス機器。
  3. 前記独自ファイルシステムによって管理される前記記録装置の実際のディレクトリエントリのグループ毎に、当該グループについての情報を記録するディレクトリエントリ生成用中間テーブルを生成/更新するとともに、前記独自ファイルシステムによって管理される前記記録装置の実際のファイル毎に、当該ファイルについての情報が記録されるファイル用中間テーブルを生成/更新する中間テーブル生成/更新手段を備え、
    前記第1の処理手段及び第2の処理手段は、該中間テーブル生成/更新手段によって生成/更新されたディレクトリエントリ生成用中間テーブル及び該ファイル用中間テーブルからなる中間テーブルを参照しながら、それぞれ処理を行う
    ことを特徴とする請求項1又は2記載のデバイス機器。
  4. 前記該中間テーブル生成/更新手段は、前記独自ファイルシステムによる前記記録装置のファイル関連処理の発生が検出されると、リアルタイムで前記中間テーブルを生成/更新する
    ことを特徴とする請求項3記載のデバイス機器。
  5. 前記該中間テーブル生成/更新手段は、前記ホスト機器とのマスストレージ接続が確立される段階で、一括して前記中間テーブルを生成/更新する
    ことを特徴とする請求項3記載のデバイス機器。
  6. マスストレージ接続されたホスト機器からデバイス機器に与えられる、該デバイス機器が記録装置を管理する独自ファイルシステムとは異なるファイルシステムによる読み取り要求のLBA番号を、該記録装置の相当する記録内容に変換するデバイス機器の記録装置のフォーマット変換方法であって、
    前記ホスト機器から与えられた読み取り要求のLBA番号が、前記独自ファイルシステムによって管理されている前記記録装置の記録内容を前記ホスト機器のファイルシステムに反映するための仮想ファイル空間の、いずれの領域の記録内容の読み取りに該当するかを判断する判断ステップと、
    前記ホスト機器から与えられた読み取り要求のLBA番号が前記記録装置には実際に保持されていない前記仮想ファイル空間の領域の記録内容に該当すると判断した場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成する第1の処理ステップと、
    前記ホスト機器から与えられた読み取り要求のLBA番号が前記記録装置に実際に保持されている前記仮想ファイル空間の領域の記録内容に該当すると判断した場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開する第2の処理ステップと
    からなることを特徴とするデバイス機器の記録装置のフォーマット変換方法。
  7. 前記仮想ファイル空間は、仮想管理領域及び仮想データ領域を有し、該仮想データ領域は、前記記録装置のデータ領域と同容量に設定され、さらに仮想ディレクトリエントリ領域と該仮想ディレクトリエントリ領域に続く仮想ファイル領域とに分割され、
    前記ホスト機器から与えられた読み取り要求のLBA番号が、該仮想ファイル空間における仮想管理領域及び仮想データ領域の仮想ディレクトリエントリ領域の記録内容の読み取りに該当するか、又は仮想データ領域の仮想ファイル領域に該当するかを判断する判断ステップと、
    前記ホスト機器から与えられた読み取り要求のLBA番号が前記仮想FAT空間の仮想管理領域又は仮想ディレクトリエントリ領域の記録内容に該当する場合は、メモリ上に前記ホスト機器から与えられた読み取り要求のLBA番号に相当する記録内容を生成する第1の処理ステップと、
    前記第2の処理手段は、前記ホスト機器から与えられた読み取り要求のLBA番号が仮想データ領域の仮想ファイル領域に該当する場合は、前記ホスト機器から与えられた読み取り要求のLBA番号を、当該読み取り要求のLBA番号に相当する記録内容が保持されている前記記録装置の実際のLBA番号に変換し、前記記録装置から該変換されたLBA番号で指定される実際に保持されている記録内容を読み取って、メモリ上に展開する第2の処理ステップと
    からなることを特徴とする請求項6記載のデバイス機器の記録装置のフォーマット変換方法。
  8. 前記独自ファイルシステムによって管理される前記記録装置の実際のディレクトリエントリのグループ毎に、当該グループについての情報を記録するディレクトリエントリ生成用中間テーブルを生成/更新するとともに、前記独自ファイルシステムによって管理される前記記録装置の実際のファイル毎に、当該ファイルについての情報が記録されるファイル用中間テーブルを生成/更新する中間テーブル生成/更新ステップを備え、
    前記第1の処理ステップ及び第2の処理ステップは、該中間テーブル生成/更新手段によって生成/更新されたディレクトリエントリ生成用中間テーブル及び該ファイル用中間テーブルからなる中間テーブルを参照しながら、それぞれ処理を行う
    ことを特徴とする請求項6又は7記載のデバイス機器の記録装置のフォーマット変換方法。
  9. 前記該中間テーブル生成/更新ステップを、前記独自ファイルシステムによる前記記録装置のファイル関連処理の発生が検出される毎に、リアルタイムで実行する
    ことを特徴とする請求項8記載のデバイス機器の記録装置のフォーマット変換方法。
  10. 前記該中間テーブル生成/更新ステップを、前記ホスト機器とのマスストレージ接続が確立される段階で、一括して実行する
    ことを特徴とする請求項8記載のデバイス機器の記録装置のフォーマット変換方法。
JP2003356237A 2003-10-16 2003-10-16 デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法 Pending JP2005122439A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003356237A JP2005122439A (ja) 2003-10-16 2003-10-16 デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003356237A JP2005122439A (ja) 2003-10-16 2003-10-16 デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法

Publications (1)

Publication Number Publication Date
JP2005122439A true JP2005122439A (ja) 2005-05-12

Family

ID=34613547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003356237A Pending JP2005122439A (ja) 2003-10-16 2003-10-16 デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法

Country Status (1)

Country Link
JP (1) JP2005122439A (ja)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007019059A2 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
JP2008540033A (ja) * 2005-05-17 2008-11-20 キッド グループ リミテッド ライアビリティー カンパニー 通信装置、通信方法及びコンテンツ提供システム
JP2009503738A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作
JP2009503735A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション フラッシュメモリシステムのデータ記憶容量の解放
JP2009503745A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション ブロック管理を伴う不揮発性メモリ
JP2009518698A (ja) * 2005-08-03 2009-05-07 サンディスク コーポレイション 改良されたホストインターフェイス
JP2009536414A (ja) * 2006-05-03 2009-10-08 データ ロボティクス, インク. ファイルシステム認識ブロック格納システム、装置、および方法
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
KR100997813B1 (ko) 2007-08-29 2010-12-01 가부시끼가이샤 도시바 반도체 기억 장치 및 그 동작 방법
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7984233B2 (en) 2005-02-16 2011-07-19 Sandisk Corporation Direct data file storage implementation techniques in flash memories
US8214583B2 (en) 2005-02-16 2012-07-03 Sandisk Technologies Inc. Direct file data programming and deletion in flash memories
US8468322B2 (en) 2008-03-31 2013-06-18 Canon Kabushiki Kaisha Information processing apparatus using a plurality of file systems
EP2492915A3 (en) * 2011-02-28 2015-06-17 MediaTek Singapore Pte Ltd. Optical disc drive and method of accessing optical disc
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
CN110825697A (zh) * 2019-11-07 2020-02-21 珠海研果科技有限公司 用于对存储设备进行格式化的方法和装置

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10126959B2 (en) 2005-02-04 2018-11-13 Sandisk Technologies Llc Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US10055147B2 (en) 2005-02-04 2018-08-21 Sandisk Technologies Llc Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US8214583B2 (en) 2005-02-16 2012-07-03 Sandisk Technologies Inc. Direct file data programming and deletion in flash memories
US7984233B2 (en) 2005-02-16 2011-07-19 Sandisk Corporation Direct data file storage implementation techniques in flash memories
JP2008540033A (ja) * 2005-05-17 2008-11-20 キッド グループ リミテッド ライアビリティー カンパニー 通信装置、通信方法及びコンテンツ提供システム
JP2009503745A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション ブロック管理を伴う不揮発性メモリ
US8055832B2 (en) 2005-08-03 2011-11-08 SanDisk Technologies, Inc. Management of memory blocks that directly store data files
WO2007019059A3 (en) * 2005-08-03 2007-06-07 Sandisk Corp Interfacing systems operating through a logical address space and on a direct data file basis
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
JP2009503738A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作
JP2009503729A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション 論理アドレス空間と直接データファイル方式で動作するインターフェイスシステム
JP2009518698A (ja) * 2005-08-03 2009-05-07 サンディスク コーポレイション 改良されたホストインターフェイス
JP2009503735A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション フラッシュメモリシステムのデータ記憶容量の解放
WO2007019059A2 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
JP2009503746A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション 直接データファイル記憶メモリにおけるデータ統合およびガベージコレクション
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US8209516B2 (en) 2005-12-21 2012-06-26 Sandisk Technologies Inc. Method and system for dual mode access for storage devices
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
JP2009536414A (ja) * 2006-05-03 2009-10-08 データ ロボティクス, インク. ファイルシステム認識ブロック格納システム、装置、および方法
KR100997813B1 (ko) 2007-08-29 2010-12-01 가부시끼가이샤 도시바 반도체 기억 장치 및 그 동작 방법
US8468322B2 (en) 2008-03-31 2013-06-18 Canon Kabushiki Kaisha Information processing apparatus using a plurality of file systems
EP2492915A3 (en) * 2011-02-28 2015-06-17 MediaTek Singapore Pte Ltd. Optical disc drive and method of accessing optical disc
CN110825697A (zh) * 2019-11-07 2020-02-21 珠海研果科技有限公司 用于对存储设备进行格式化的方法和装置

Similar Documents

Publication Publication Date Title
JP2005122439A (ja) デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
US20220129374A1 (en) Memory system, data storage device, user device and data management method thereof
US6823417B2 (en) Memory controller for memory card manages file allocation table
JP3005645B2 (ja) 消去不可能な記憶媒体上にファイルを読出しかつ書込む方法
US8065473B2 (en) Method for controlling memory card and method for controlling nonvolatile semiconductor memory
JP3197815B2 (ja) 半導体メモリ装置及びその制御方法
JP4855714B2 (ja) コンピュータオペレーティングシステムに渡ってコンピュータファイルへのアクセスを行うシステムおよび方法
US7350049B1 (en) Method and apparatus for managing access to a file allocation table
KR101150032B1 (ko) 비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스 및 그운영 체제/파일 시스템
US20070112891A1 (en) Converting file-systems that organize and store data for computing systems
US8977802B2 (en) Access device, information recording device, controller, real time information recording system, access method, and program
JP2002202902A (ja) パーティション作成方法および削除方法、プログラムを記録した記録媒体、情報処理装置
JP2007220101A (ja) ブロック方式のメモリにおいてデータの変更類型に応じてブロックを管理する方法および装置
KR20070083646A (ko) 매스 스토리지 디바이스로부터의 적응성 부팅
JP2007080240A (ja) ファイル割り当てテーブルのアクセス手法
JP2012113789A (ja) ハードディスクドライブ装置およびその処理装置
CN116737189B (zh) 一种申威平台嵌入式系统安装镜像及其制作方法
CN101246534B (zh) 一种使U盘具有autorun病毒免疫功能的方法
US5608905A (en) DOS and Macintosh preformatted computer storage media
CN115168317B (zh) 一种lsm树存储引擎构建方法和系统
JP2006228138A (ja) 半導体記憶装置、記憶制御方法および情報機器
TW201025002A (en) Method of writing data into flash memory based on file system
JP2000163255A (ja) コンピュ―タ読取り可能媒体にアクセスするためのコンピュ―タシステムおよび方法
US20100274828A1 (en) Electronic Device, Storage Area Allocation Method for File System, and Computer Product
JP2008134777A (ja) ファイル割当テーブルのキャッシュ方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090127

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090811