(57)【要約】【課題】多大なメモリ領域を必要とせずに、目的のファイルを高速に検索する可能性を高める。【解決手段】複数のクラスタから構成され、前記各クラスタにディレクトリエントリを格納するディレクトリからファイルを検索するファイル管理装置であって、ディレクトリごとに、検索に成功したディレクトリエントリが属するクラスタ番号を検索結果データベースに記録し、ディレクトリからファイルを検索するときに、検索結果データベースに記録されているクラスタ番号のクラスタから検索を開始する。【選択図】図３
2014106726.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックから構成され、前記各ブロックにファイル情報を格納するディレクトリからファイルを検索するファイル管理装置であって、
ディレクトリごとに、検索に成功したファイル情報の位置を記憶装置に記録する記録手段と、
ディレクトリからファイルを検索するときに、前記記憶装置に記録されているファイル情報の位置の近傍から検索を開始する検索手段とを備えたことを特徴とするファイル管理装置。
【請求項２】
前記記録手段は、ディレクトリごとに、検索に成功したファイル情報が属するブロック番号を前記記憶装置に記録することを特徴とする請求項１に記載のファイル管理装置。
【請求項３】
前記検索手段は、前記記憶装置に記録されているブロック番号のブロックから検索を開始することを特徴とする請求項２に記載のファイル管理装置。
【請求項４】
前記検索手段は、前記記憶装置に記録されているブロック番号の前のブロック番号のブロックから検索を開始することを特徴とする請求項２に記載のファイル管理装置。
【請求項５】
複数のブロックから構成され、前記各ブロックにファイル情報を格納するディレクトリからファイルを検索するファイル管理装置の制御方法であって、
ディレクトリごとに、検索に成功したファイル情報の位置を記憶装置に記録する手順と、
ディレクトリからファイルを検索するときに、前記記憶装置に記録されているファイル情報の位置の近傍から検索を開始する手順とを有することを特徴とするファイル管理装置の制御方法。
【請求項６】
複数のブロックから構成され、前記各ブロックにファイル情報を格納するディレクトリからファイルを検索するためのプログラムであって、
ディレクトリごとに、検索に成功したファイル情報の位置を記憶装置に記録する記録手段と、
ディレクトリからファイルを検索するときに、前記記憶装置に記録されているファイル情報の位置の近傍から検索を開始する検索手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータでファイルを扱うシステムのファイルシステムに利用して好適なファイル管理装置、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
コンピュータでファイルを扱うファイルシステムでは、個々のファイルにファイル名が付され、それぞれのファイルはいずれかのディレクトリに属し、ディレクトリもまたいずれかのディレクトリに属することができるというツリー構造を採ることが一般的である。
有名なファイルシステムであるＦＡＴファイルシステムでは、二次記憶装置にアクセスできる最小のデータ長であるセクタを一つ又は複数まとめてクラスタと呼び、クラスタを二次記憶装置の領域管理の単位としている。
ディレクトリには、そのディレクトリに属する複数のファイルやディレクトリに関する情報が格納されており、ファイルやディレクトリ一つ分の情報はディレクトリエントリと呼ばれている。ディレクトリエントリには、ファイル名、ファイルサイズ、タイムスタンプ、開始クラスタ番号等が記録されている。
ファイルやディレクトリのデータは、クラスタ単位に分割して記録されており、最初のクラスタはディレクトリエントリに記録された開始クラスタであり、それ以降のクラスタはＦＡＴを参照して得ることができる。
【０００３】
図５〜図７は、101DSCAMという名のディレクトリにIMG0001.JPG〜IMG0048.JPGというファイルがある場合を例示するものである。図５は、101DSCAMというディレクトリのディレクトリエントリを示す図である。図６は、101DSCAMに関連するＦＡＴを示す図である。図７は、101DSCAMのディレクトリ本体を示す図である。101DSCAMのディレクトリの内容は0004クラスタから始まっており、0004クラスタにはIMG0001JPGからIMG0016.JPGまでの１６個のディレクトリエントリが記録されている。ＦＡＴの0004番目の値を見ると0028であり、ＦＡＴの0028番目の値を見ると0056であるので、ディレクトリは0028クラスタと0056クラスタに続いていることが判る。ＦＡＴの0056番目の値FFFFは終端を示す値である。
【０００４】
このようにＦＡＴファイルシステムでは、一つのディレクトリに多数のディレクトリエントリを記録することができる。
ディレクトリに属する特定のファイルにアクセスするとき、ファイル名が一致するディレクトリエントリを検索するが、従来はディレクトリの先頭から検索しており、多数のファイルがあるときには膨大な時間がかかることがあった。
【０００５】
図８（Ｂ）は、デジタルカメラの画像再生のためのファイル一覧表示画面の例である。このようにデジタルカメラやデジタルフォトフレーム、プリンタ等では、扱うファイルを選択するためにファイルの特定枚数ごとの一覧表示を行うことが多い。この場合、IMG0037.JPGからIMG0045.JPGのファイルに順にアクセスして、サムネイル画像を取り出して表示するという処理が行われる。
ディレクトリに存在する特定のファイルにアクセスするとき、通常はディレクトリの先頭からファイル名が一致するディレクトリエントリを検索する。ところが、ディレクトリに多数のファイルがある場合は、検索に膨大な時間がかかることになる。図８の例でいえば、IMG0037.JPGを検索するのに、101DSCAMの開始クラスタである0004から順に0028と0056と検索を繰り返してIMG0037.JPGが見つかり、次にIMG0038.JPGを検索する場合も0004、0028、0056と３つのクラスタを探して見つかるという具合である。101DSCAMに数千個のファイルが存在する場合、より多くの時間がかかることになる。
【０００６】
特許文献１では、あらかじめディレクトリ中の全ファイル分の順番を調べており、ファイル検索時にはその調べた結果を参照してファイルにアクセスしている
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２１７５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１の技術では、ディレクトリ中の全ファイル分についてあらかじめ調べなければならず、調べた結果を記録しておくメモリ領域が必要になる。
【０００９】
本発明は上記のような点に鑑みてなされたものであり、多大なメモリ領域を必要とせずに、目的のファイルを高速に検索する可能性を高めることを目的とする。
【課題を解決するための手段】
【００１０】
本発明のファイル管理装置は、複数のブロックから構成され、前記各ブロックにファイル情報を格納するディレクトリからファイルを検索するファイル管理装置であって、ディレクトリごとに、検索に成功したファイル情報の位置を記憶装置に記録する記録手段と、ディレクトリからファイルを検索するときに、前記記憶装置に記録されているファイル情報の位置の近傍から検索を開始する検索手段とを備えたことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、多大なメモリ領域を必要とせずに、目的のファイルを高速に検索する可能性を高めることができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係るファイル管理装置の構成を示す図である。
【図２】第１の実施形態における検索結果データベースを示す概略図である。
【図３】第１の実施形態に係るファイル管理装置による処理手順を示すフローチャートである。
【図４】第２の実施形態に係るファイル管理装置による処理手順を示すフローチャートである。
【図５】ディレクトリのディレクトリエントリの例を示す図である。
【図６】ＦＡＴの例を示す図である。
【図７】ディレクトリの例を示す図である。
【図８】ファイル一覧表示画面の例を示す図である。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明の好適な実施形態について説明する。
（第１の実施形態）
本発明を適用した第１の実施形態に係るファイル管理装置を、ＦＡＴファイルシステムを例に用いて説明する。なお、ＦＡＴファイルシステムをＦＡＴとして呼称されることも多いが、本実施形態の説明では、ＦＡＴはファイルアロケーションテーブルそのものとして説明する。
【００１４】
図１に、本実施形態に係るファイル管理装置の構成を示す。ファイル管理装置として機能する組み込みコンピュータ３０１は、バス３０２、ＣＰＵ３０３、ＲＯＭ３０４、ＲＡＭ３０５、記憶装置３０６を有する。記憶装置３０６は、組み込みコンピュータ３０１に対して着脱可能であってもよい。ＣＰＵ３０３は、バス３０２によって相互に接続されたＲＯＭ３０４、ＲＡＭ３０５、記憶装置３０６の制御を行う。ＣＰＵ３０３は、ＲＯＭ３０４等に格納されたアプリケーションプログラム、ファイルシステムプログラムを実行することにより、記憶装置３０６に記録された論理ファイルの操作を行う。その際、ＲＡＭ３０５は作業領域として利用される。
【００１５】
図２は、本実施形態における検索結果データベースを示す概略図である。検索結果データベースには、ディレクトリごとに、そのディレクトリの開始クラスタ番号と、そのディレクトリで最後に発見した（最後に検索に成功した）ファイル情報であるディレクトリエントリが属するクラスタ番号とが記録される。検索結果データベースは、例えば記憶装置３０６において構築される。
図７に示したように、ディレクトリは、本発明でいう複数のブロックに相当する複数のクラスタから構成され、各クラスタに本発明でいうファイル情報に相当するディレクトリエントリを格納する。
【００１６】
図３は、本実施形態に係るファイル管理装置による処理手順を示すフローチャートである。ディレクトリからファイル名を検索するとき、ステップＳ１０１から処理が始まる。ステップＳ１０２で、対象ディレクトリの開始クラスタ番号を変数ｓに代入する。ステップＳ１０３で、検索結果データベースを検索して開始クラスタ番号ｓを開始ディレクトリとするエントリが存在するか否かを判断し、存在する場合はステップＳ１１０に移り、存在しない場合はステップＳ１０４に移る。
【００１７】
ステップＳ１０３において開始クラスタ番号ｓを開始ディレクトリとするエントリが存在しない場合、ステップＳ１０４で、対象ディレクトリの開始クラスタ番号ｓから最終クラスタまで目的のファイル名を検索する。ステップＳ１０５で、目的のファイル名が発見できたか否かを判断し、発見できた場合はステップＳ１０６に移り、発見できなかった場合はステップＳ１１５に移る。ステップＳ１０６で、発見したファイル名のディレクトリエントリが存在するクラスタ番号を変数ｈに入れ、ステップＳ１０７で、開始クラスタ番号ｓと検索結果のクラスタ番号ｈとの組を検索結果データベースに登録する。既に検索結果データベースに開始クラスタｓのエントリがある場合は、そのエントリを上書きする。その後、ステップＳ１０８で、ディレクトリのファイル名検索は成功として終了する。
【００１８】
一方、ステップＳ１０３において開始クラスタ番号ｓを開始ディレクトリとするエントリが存在する場合、ステップＳ１１０で、検索結果のクラスタ番号を変数ｈに、ｈの直前のクラスタ番号を変数ｂに代入する。ステップＳ１１１で、ディレクトリをクラスタ番号ｈから最終クラスタまで検索する。ステップＳ１１２で、ステップＳ１１１の検索において目的ファイル名が発見できたか否かを判断し、発見できた場合はステップＳ１０６に移り、発見できなかった場合はステップＳ１１３に移る。ステップＳ１１３で、ディレクトリの開始クラスタ番号ｓからクラスタ番号ｂまでのディレクトリエントリを検索する。ステップＳ１１４で、ステップＳ１１３の検索において目的ファイル名が発見できたか否かを判断し、発見できた場合はステップＳ１０６に移り、発見できなかった場合はステップＳ１１５に移る。
ステップＳ１０５及びステップＳ１１４において発見できなかった場合、ステップ１１５で、ディレクトリのファイル名検索は失敗として終了する。
【００１９】
以上のように、ファイルへのアクセスは前回アクセスしたファイルのディレクトリエントリの位置の近傍にあるファイルにアクセスすることが多いことに鑑みて、ディレクトリ内の目的のファイル名を検索する処理において、前回の検索で発見したディレクトリエントリを含むクラスタから検索を開始することで、目的のファイルを高速に検索する可能性を高めることができる。
また、特許文献１のように、ディレクトリ中の全ファイル分についてあらかじめ調べた結果を記録しておくメモリ領域は不要で、クラスタ番号を記録するメモリ領域があればよく、多大なメモリ領域は必要とならない。
【００２０】
（第２の実施形態）
次に、図３を参照して、第２の実施形態を説明する。なお、ファイル管理装置の構成は第１の実施形態と同様であり、ここではその説明を省略する。
ディレクトリ内のファイル名を検索するとき、前回検索したファイルのディレクトリエントリよりも手前にあるファイルを検索することも多い。例えばデジタルカメラの画像一覧表示画面において、図８（Ｂ）を表示している場合は、IMG0037.JPGからIMG0045.JPGまでを順に検索したはずである。ここで、利用者がページを戻る処理を選択した場合、図８（Ａ）を表示するためにIMG0028.JPGを検索することになる。
この場合、前回検索したファイルのディレクトリエントリが存在するクラスタの手前のクラスタに、次に検索するファイルのディレクトリエントリが存在する場合、第１の実施形態ではファイル名が見つかるのが遅くなる。本実施形態では、このような場合にも高速に検索ができるように工夫したものである。
【００２１】
図４は、本実施形態に係るファイル管理装置による処理手順を示すフローチャートである。ディレクトリからファイル名を検索するとき、ステップＳ２０１から処理が始まる。ステップＳ２０２で、対象ディレクトリの開始クラスタ番号を変数ｓに代入する。ステップＳ２０３で、検索結果データベースを検索して開始クラスタ番号ｓを開始ディレクトリとするエントリが存在するか否かを判断し、存在する場合はステップＳ２０４に移り、存在しない場合はステップＳ２０９に移る。
【００２２】
ステップＳ２０３において開始クラスタ番号ｓを開始ディレクトリとするエントリが存在しない場合、ステップＳ２０９で、対象ディレクトリの開始クラスタ番号ｓから最終クラスタまで目的のファイル名を検索する。ステップＳ２１０で、目的のファイル名が発見できたか否かを判断し、発見できた場合はステップＳ２１１に移り、発見できなかった場合はステップＳ２１６に移る。ステップＳ２１１で、発見したファイル名のディレクトリエントリが存在するクラスタ番号を変数ｈに入れる。ステップＳ２１２で、クラスタ番号ｈが開始クラスタ番号ｓと等しいか否かを判断し、等しい場合はステップＳ２１４に移り、等しくない場合は、ｈの一つ手前のクラスタが存在するはずなので、そのクラスタ番号をｈに上書きし、ステップＳ２１４に移る。ステップＳ２１４で、開始クラスタ番号ｓと検索結果のクラスタ番号ｈとの組を検索結果データベースに登録する。
【００２３】
一方、ステップＳ２０３において開始クラスタ番号ｓを開始ディレクトリとするエントリが存在する場合、ステップＳ２０４で、検索結果のクラスタ番号を変数ｈに、ｈの直前のクラスタ番号を変数ｂに代入する。ステップＳ２０５で、ディレクトリをクラスタ番号ｈから最終クラスタまで検索する。ステップＳ２０６で、ステップＳ２０５の検索において目的ファイル名が発見できたか否かを判断し、発見できた場合はステップＳ２１１に移り、発見できなかった場合はステップＳ２０７に移る。ステップＳ２０７で、ディレクトリの開始クラスタ番号ｓからクラスタ番号ｂまでのディレクトリエントリを検索する。ステップＳ２０８で、ステップＳ２０７の検索において目的ファイル名が発見できたか否かを判断し、発見できた場合はステップＳ２１１に移り、発見できなかった場合はステップＳ２１６に移る。
ステップＳ２１０及びステップＳ２０８において発見できなかった場合、ステップＳ２１６で、ディレクトリのファイル名検索は失敗として終了する。
【００２４】
以上の手順により、ディレクトリ内の目的のファイル名を検索する処理において、前回の検索で発見したディレクトリエントリを含むクラスタの一つ前のクラスタから検索を開始することで、目的のファイルを高速に検索する可能性を高めることができる。
【００２５】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００２６】
３０１：組み込みコンピュータ、３０２：バス、３０３：ＣＰＵ、３０４：ＲＯＭ、３０５：ＲＡＭ、３０６：記憶装置
【図１】
2014106726.tif 000003
【図２】
2014106726.tif 000004
【図３】
2014106726.tif 000005
【図４】
2014106726.tif 000006
【図５】
2014106726.tif 000007
【図６】
2014106726.tif 000008
【図７】
2014106726.tif 000009
【図８】
2014106726.tif 000010