(57)【要約】  ＦＡＴなどのファイルシステムにおけるディレクトリを含む、標準的な未ソートで混合したフラットなファイルリストと共に、サブディレクトリおよびファイルエントリに対するポインタの分離されプリソートされた配列を提供するコンピュータ・デバイスのファイルシステムを提供する。バッテリにより動作するモバイル・デバイスの起動ＲＯＭに含まれることにより、電源投入と装置が動作状態になるまでの時間を遥かに短くする（より速い起動時間）ことが可能となる。これは複数の層のディレクトリツリーを通過し、整合するフィル名を求めて各々の枝におけるそれぞれのエントリを検索する必要がないからである。新しいプリソートされた配列により、簡単なバイナリ検索により整合するエントリをより効率的に配置決めすることが可能になる。
2008503818.tif 000002
【特許請求の範囲】
【請求項１】
ディレクトリエントリの未ソートのリストにより構造の任意のディレクトリのコンテンツを再帰的に表すディレクトリ構造を有するコンピュータ・デバイスのためのファイルシステムの操作の方法であって、該方法は、
エントリの前記リストの後に、サブディレクトリに対応する各々のディレクトリに含まれる全ての前記エントリに対するポインタのカウントされソートされた第１の配列、または、該第１の配列に対するポインタを含めるステップと、
任意のディレクトリの前記位置を取得、または、前記位置がないことの確認を可能にするために、前記第１の配列の全体のバイナリ検索を実行するステップと、
を備える方法。
【請求項２】
ディレクトリエントリの前記リストの後に、ファイルに対応する各々のディレクトリに含まれる全ての前記エントリに対するポインタを含むカウントされソートされたさらなる配列、または、該さらなる配列に対するポインタを含めるステップと、
任意の名前を付されたファイルの前記位置の取得、または、前記位置が無いことの確認を可能にするために、前記さらなる配列の全体のバイナリ検索を実行するステップと、
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記さらなる配列によって指示される前記ファイルエントリの全てまたは一部に対してワイルドカード文字による比較を実行することにより、ファイルに対するワイルドカード検索を行うステップと、
前記ワイルドカード文字に適合する前記配列の任意の部分を順次進むことにより、連続しプリソートされた形式で前記ワイルドカード文字に対応するファイル名を返すステップと、
を備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記第１の配列により識別されるファイルパスの位置を維持するためにキャッシュを使用するステップを備えることを特徴とする請求項１乃至３の何れか１項に記載の方法。
【請求項５】
アスキー(ASCII)の範囲の全ての文字が取り込まれるユニコード文字列に対してロケール独立の比較アルゴリズムを使用して、前記バイナリ検索を実行するステップをさらに備えることを特徴とする請求項１乃至４の何れか１項に記載の方法。
【請求項６】
前記ファイルシステムは、読み取り専用の媒体用であることを特徴とする請求項１乃至５の何れか１項に記載の方法。
【請求項７】
前記第１の配列は、前記ファイルシステム内に配置されるように構成されることを特徴とする請求項６に記載の方法。
【請求項８】
前記さらなる配列は、前記ファイルシステム内に配置されるように構成されることを特徴とする請求項２に従属する場合の請求項６に記載の方法。
【請求項９】
前記ファイルシステムは、最も頻繁に使用されるファイルパスとして以前にプロファイリングされたファイルパスのキャッシュを含むように構成されることを特徴とする請求項６乃至８の何れか１項に記載の方法。
【請求項１０】
前記ファイルシステムは、起動デバイスのファイルシステムを含むように構成されることを特徴とする請求項１乃至９の何れか１項に記載の方法。
【請求項１１】
請求項１乃至１０の何れか１項に規定される方法に従い動作するように構成されるコンピュータ・デバイス。
【請求項１２】
コンピュータ・デバイスを請求項１乃至１０の何れか１項に規定される方法に従い動作させるための、該コンピュータ・デバイスのためのオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・デバイスにおけるファイルシステムの性能を改善するための方法、特にバッテリにより動作するモバイル・コンピュータ・デバイスにおけるようなシステムを改善し、このタイプの装置により従来利用可能であったものより速い起動時間を可能にすることに関する。
【背景技術】
【０００２】
本明細書において使用する用語である、コンピュータ・デバイスはあらゆる形式の電動のコンピュータ・デバイスを含むように拡張して考えられ、データ記録装置、ハンドヘルドおよびパーソナルコンピュータを含むあらゆるタイプまたは形式のコンピュータ、携帯電話機、スマートフォン、そして、通信、画像の記録および／または再生、計算機能を単一装置内で組み合わせるコミュニケータを含むあらゆるフォームファクタの通信装置、および他の形式の無線および有線の情報装置を含む。
【０００３】
コンピュータ・デバイス上のファイルは永続的な名称を持つデータ格納装置であり、単一のビット・ストリームの流れとして提示される。ファイル管理は、最も単純なコンピュータ・デバイスは別として全てのコンピュータ・デバイスのオペレーティングシステムの主なタスクの１つである。スタンドアロンのパーソナルコンピュータの初期においては、マイクロソフト社の最初のＯＳ（オペレーティングシステム）に対してＤＯＳ（ディスク・オペレーティングシステム）という略称を選択したことにも示されるように、ファイル管理は間違いなく主なオペレーティングシステムのタスクであった。ユーザインタフェースがより複雑になり、ネットワーク化され、接続されたシステムの発展およびコンピューティングと通信の装置の融合によりネットワークおよびリンク管理の重要性は増したが、ファイル管理は依然としてあらゆる先端的コンピュータ・デバイスのコアとなる機能の１つである。
【０００４】
近年のオペレーティングシステムにおける最も基本的なファイル管理は以下の通りである。
・システムのディレクトリまたはファイル・インデックスを維持すること、
・要求に応じて名称付きファイルをオープンまたは生成すること、
・コンテンツの読み取りまたは書き込みを可能にすること、
・ファイルまたはコンテンツの削除を可能にすること
ファイル管理の処理をするオペレーティングシステムの部分はファイルシステムと呼ばれる。
【０００５】
上記のファイル管理タスクと同様に、ファイルシステムは通常他のタスクの処理もする。これらの幾つかは基本的タスクの結果によるものであり；例えばシステムの空きファイルスペースを記録し、要求に応じた割り当ては、本質的に最近の全てのディスクベースのシステムにとって必須である。他のタスクは、ファイルシステムが動作する装置の性格に付随し、例えば、多くのファイルシステムは特定のファイルへのアクセスを制限するセキュリティ施策を実装するが、これはネットワーク化され複数ユーザの環境においてのみ実際に必要なものである。また注意すべきは、コンピュータ・デバイスが種々の媒体のタイプのために複数の異なるタイプのファイルシステムをサポートするのは通常のことである。例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）ＸＰを動作させる最近のコンピュータは、ハードディスクのためのＮＴＦＳ（ＮＴファイルシステム）、フロッピー（登録商標）ディスクのための種々のバージョンのＦＡＴ（ファイル・アロケーション・テーブル）、およびＣＤ（コンパクト・ディスク）およびＤＶＤ（デジタル・ビデオ・ディスク）のための種々の拡張を伴うＩＳＯ９６００を典型的にサポートする。
【０００６】
今日使用される多くのファイルシステム・ファミリの概要、およびそれらの動作方法の詳細、およびそれらの間の相違について、この種の４０を超える例をリストする以下の両者、http://en.wikipedia.org/wiki/File_system、または、http://www.tldp.org/HOWTO/Filesystem-HOWTO.htmlを参照する。
【０００７】
特に注意すべきは、全てのこれら異なるファイルシステムが異なる強さ組み合わせを有することである。当業者は、特定のファイルシステムが全ての環境において最良であるとは根拠を持って主張しない。というのは全てのファイルシステムを判定することができる基準は、回復力および信頼性、安全性、速度、柔軟性、効率、大きさ、および遍在性を含むが、何れの特定の観点においてもこれらの相対的重要性は変化するからである。
【０００８】
本発明が特に適用可能である状況は、セル電話機などのバッテリにより電力を与えられるハンドヘルドモバイル・コンピュータ・デバイスの読み取り専用メモリ（ＲＯＭ）に格納されたオペレーティングシステムを起動するために使用されるファイルシステムに関するものである。
【０００９】
当然のことながら、これは比較的特殊な状況であり、以上に掲げた幾つかの基準はファイルシステムを評価するためには適合しない。例えば通常の使用では、ＲＯＭに対するファイルシステムは完全に静的である。ＲＯＭに対するファイルシステムの内容は変化せず、定義によりＲＯＭに対するファイルシステムは読み取り専用であり、ＲＯＭに対するファイルシステムには何も書き込むことはできない。それ故書き込みが可能な媒体におけるのと同様の破壊の危険はなく、回復力、信頼性および安全性は書き込み可能なファイルシステムに対しては重要な考察であるが、これらの考察はＲＯＭファイルシステムに対しては重要とみなすことはできない。
【００１０】
汎用ファイルシステムの設計に影響を与え、ＲＯＭファイルシステムに適合しない考察が他に多くある。これらの幾つかは、ＲＯＭファイルシステムでは書き込みができないことから生じる。例えば読み取り専用ファイルシステムでは物理的媒体上のファイルの分割に関する関心はない。他についてはＲＯＭファイルシステムが固体であることから生じる、読み書きヘッドの大きな移動の回避の有効性から得られる速度最適化はＲＯＭファイルシステムには相違を生じない。
【００１１】
他方バッテリにより電力を与えられるモバイル・デバイスにおいて使用されるファイルシステムに対してもっと大きな意義を想定する特別な考察もある。最も明白なことは、そのような装置は必ずリソースが限られることに由来する。これらの装置は大部分の動作に対してバッテリにより電力を与えられているので、これら装置は電力消費に関して経済的である必要がある。かつこれら装置は限られた量のメモリのみを有するので、ＰＣタイプのコンピュータ・デバイスと比較して、これらの装置はこれらの装置が持つメモリを可能な最大限度まで保存する必要がある。従って、そのような装置上で動作するアプリケーションプログラムは可能な限りコンパクトに設計されるべきである。
【００１２】
第３の制約は最初の２つから導かれうる。少ないメモリ使用量への要求に対しては、同じファイルシステムがＲＯＭファイルシステムおよび装置の書き込み可能なファイルシステムの両方に使用できれば明らかに望ましい。単一のファイルシステムは実装がより簡単で、多重ファイルシステムより少ないメモリを使用する。しかしながらバッテリにより動作するモバイル・デバイスは、コンパクトフラッシュ（登録商標）カード、メモリスティック、マルチメディアカードおよびセキュアデジタルカードなどの取り外し可能な格納装置と共に供給されつつある。これらの装置は今やデジタルカメラおよびハンドヘルドＰＤＡ（パーソナル・デジタル・アシスタント）などの装置上では普通のものであり、移動電話機上ではますます普通のものになりつつある。デバイスＲＯＭおよびアプリケーションを動作させる装置によっても使用される共通の単一のファイルシステムが遍在的な産業界の標準のものであれば、これはユーザが１つのそのような装置上の周辺格納装置をデータ伝送に、そして別のタイプの装置上のバックアップのために使用することができるので、ユーザにとっては明らかな利益である。
【００１３】
このクラスの装置に影響を与える第４の制約は、このクラスの装置が電力投入後できるだけ速く動作状態になる（最小限度の起動時間）必要があることである。例えばセル電話機の場合、一般にユーザはその電話機のスイッチをオンすることと発呼可能であることとの間に３、４分を待たなければならなければ、我慢できないとされる。
【００１４】
それ故、要するに、セル電話機などのバッテリにより電力を与えられるハンドヘルド・モバイル・コンピュータ・デバイスの起動ＲＯＭ上において使用されるファイルシステムの重要な評価基準は以下の通りである。
・経済的電力消費
・少ないメモリ使用量
・産業界標準との適合性
・速い起動時間
【００１５】
本発明は主として最後の評価基準、速い立ち上がり時間の基準に関する。注意すべきは、セル電話機装置が本発明の主な対象であるが、上に掲げた考察は、ＰＤＡおよび実際、ファイル管理機能を持つオペレーティングシステムを含む携帯可能な装置（デジタルカメラなど）などの多くの他の携帯可能なコンピュータ・デバイスに等しく当てはまる、ことである。
【００１６】
一般に起動時間は、大部分のファイルシステムの作成者が第１次的に重要なものであると考えていなかった要素であり、起動後の性能が、今日では一般により重要であると考えられている。
【００１７】
ある文献では開始速度の問題を議論するが、当業者の良く理解するように、これは起動時間と全く同じ事柄ではない。例えば良く知られていることであるが、ＮＴＦＳ（Ｗｉｎｄｏｗｓ（登録商標）用）およびｅｘｔ３またはＲｅｉｓｅｒＦＳ（Ｌｉｎｕｘ用）などのジャーナリング・ファイルシステムは、ファイルシステムの完全性を確認するためにファイル格納装置全体を走査する必要がないので、ＦＡＴ（Ｗｉｎｄｏｗｓ（登録商標）用）およびｅｘｔ２（Ｌｉｎｕｘ用）をベースとするファイルシステムよりシステムクラッシュ後の速い開始が可能になる。しかしながら、クラッシュ後にファイルシステムを再開する特定の問題は全て、ファイルシステムのメタデータの完全性をどのようにチェックするかということに関係する。ＲＯＭファイルシステムはこの種の破壊を実際に気にかける必要はないので、ジャーナリングの最適化は立ち上がり速度に影響を与えることはない。前述の最適化は、ファイル格納装置における物理的フラグメントを減らすことによりファイルロードの速度を増すこれらファイルシステムの最適化と同じ範疇に入り、既に指摘したようにまずＲＯＭファイルシステムはフラグメントされないので、物理的フラグメントを減らすことはＲＯＭファイルシステムに影響を与えることはない。
【００１８】
ファイルシステムが起動時間を改善する最適化を含む場合でも、これらは、ＲＯＭベースのファイルシステムに対して特に設計されたものではない。例えばＹＡＦＦＳ（http://www.aleph1.co.uk/yaffs/ に記述される、Yet Another Flash Filing System）に含まれる最適化は、ＲＯＭから立ち上がるアルゴリズムよりむしろＮＡＮＤフラッシュ・ハードウエアの固有の特性に対処するために特に設計されている。
【００１９】
一般にソフトウエアの最適化は、複数回繰り返されるか、またはループに含まれる可能性があるかのいずれかである非効率的動作を探すことにより一般に始まり、次いで動作の実装における効率を排除するか、またはループを短絡するか、または両方を行う。
【００２０】
ＲＯＭファイルシステムにおける起動時間を最適化する目的に対するそのような動作の最も注目に値するセットは、ファイルシステム上のどこかに位置決めされるファイルを取り出すためにファイルシステムのディレクトリおよびサブディレクトリにおけるエントリに関して行われるものである。
【００２１】
一般にファイルシステムは論理的階層化ディレクトリ構造におけるファイルおよびディレクトリへのポインタを格納する。そのような構造では、単一のルートディレクトリは常にファイルの取出しが始まる最初の場所であり、ルートディレクトリは他のディレクトリおよびファイルを指示し、ルートディレクトリの含む各々のディレクトリは、また他のディレクトリおよびファイルを指示する。完全修飾ファイル名は、ファイルの名前で構成され、ファイルの名前はファイルが見つかるサブディレクトリによりプレフィックスを付され、サブディレクトリは次にそのサブディレクトリが見つかるディレクトリによりプレフィックスを付される、などによりルートディレクトリに戻る。
【００２２】
ファイルを位置決めするために、上記のようなファイル名が与えられれば、ファイルシステムは、以下のことを行わなければならない。
１）ファイル名を表す文字列をそのパスおよびファイル要素にパースし、
２）最初にパス要素、次にファイルの名前に対する適合するものが見つかるまでディレクトリツリー内のパスをナビゲートし、
３）ファイルの物理的位置を含むファイル属性を取り出す。
【００２３】
広く実装されているＦＡＴファイルシステム（用語、ＦＡＴはＶＦＡＴおよびＦＡＴ３２などの産業界に共通の亜種を含むことを意図していることに注意されたい。さらに多くの情報はhttp://en.wikipedia.org/wiki/FAT32#Versions_and_historyを参照）に基づくこの処理の代表的な実装を、ロンドンのシンビアンソフトウェア社の先端的な移動電話機のオペレーティングシステムであるＳｙｍｂｉａｎＯＳ（商標）オペレーティングシステムの慣用語を使用して、図１に示す。図１のファイルシステムにおいて、ＴＲｏｍＤｉｒオブジェクトはディレクトリツリーの枝に対応する。ＴＲｏｍＤｉｒオブジェクトは不確定数のＴＲｏｍＥｎｔｒｙオブジェクトの配列を含み、ＴＲｏｍＥｎｔｒｙオブジェクトはディレクトリエントリに対応する。ファイルシステムの動作方法の故に、これらオブジェクトはそれ自体の大きさを変え、さらに、他のオブジェクトは実ファイルを表すことがあるが、あるＴＲｏｍＥｎｔｒｙオブジェクトはさらなるＴＲｏｍＤｉｒオブジェクトを指示することがある。
【００２４】
この動作は各々のファイルがロードされる前に必要であるので、この動作は多数回繰り返される。それ故ファイルシステムの性能の最適化を求めるには適した場であろう。しかし動作が繰り返された後各々のファイルがロードされるので、使用するアルゴリズムに非効率性があることは明らかである。従ってファイルを位置決めし、オープンするのに要する時間は予測不能になる。最悪の場合、多くの枝およびリンクを調べる必要があり、ファイルをオープンする前に多くのテキスト文字列の比較の実行が必要である。特にファイルシステムがユニコードファイル名をサポートする場合、これらの比較は処理時間の点で正にコストを要することがありえ、それ故起動時間を引き延ばすことがありうる。
【００２５】
ほんの少しのファイルしか含まないがユニコードをサポートする必要のあるＲＯＭにアクセスする場合、このタイプのファイルシステムに固有の問題は明らかではないであろう。しかしながら、ユニコードファイル名を必要とし、多数のディレクトリにおいて多数のファイルを管理する必要があるモバイル・デバイスのための最近のオペレーティングシステムは比較的長い起動時間を要することは、このファイルシステムの不適切さを明らかにしている。
【００２６】
確かに、上記の特別のケースは、リンクされたリスト（ＦＡＴまたはｅｘｔ２など）に頼るファイルシステムに主として当てはまりうるが、ディレクトリのエントリをＢツリーにソートする幾つかのジャーナリング・ファイルシステム（ＲｅｉｓｅｒＦＳまたはＮＴＦＳなど）があることも確かであり、その場合ファイルを見つけるための繰り返しの数は既に最適化されていることがある。
【００２７】
とはいえ、これらより重たいファイルシステムの１つを単に移動させることにより問題を解決する示唆は純粋に学術的に考察されなければならない。以前に記述したバッテリにより動作するモバイル・デバイスに影響を与える制約は、ＦＡＴベースのシステムのケースを考慮すべき最も重要な単一ファイルシステムとする。この幾つかの理由は以下の通りである。
・ＦＡＴはファイルシステムのための最小機能に近いものを提供し、従って電力消費に関して比較的効率的である。
・ＦＡＴファイルシステムは相対的に少量のメモリを使用する。
・ＦＡＴは相互動作に関する産業界の標準化リーダである。ＦＡＴは、Ｗｉｎｄｏｗｓ（登録商標）およびＬｉｎｕｘの全てのバージョンを含む主なデスクトップオペレーティングシステムによりサポートされ、例えば移動電話機、デジタルカメラおよびＰＤＡの種々のタイプの取り外し可能な媒体に使用される標準ファイルシステムである。
【００２８】
ＦＡＴは完全とは考えられない（その欠陥は良く知られている）が、これらの欠陥の大多数はＲＯＭベースのファイルシステムにとって特に重要なものではない、と見ることができる。より速い起動のためのこのようなファイルシステムの最適化法は、それ故殆ど全てのユーザに大きな利益をもたらす。
【発明の開示】
【発明が解決しようとする課題】
【００２９】
それ故コンピュータ・デバイスのための改善されたファイル管理システムを提供することが本発明の目的である。
【課題を解決するための手段】
【００３０】
本発明の第１の態様によれば、ディレクトリエントリの未ソートのリストにより構造のディレクトリのコンテンツを再帰的に表すディレクトリ構造を有するコンピュータ・デバイスのためのファイルシステムの操作の方法であって、エントリのリストの後に、サブディレクトリに対応する各々のディレクトリに含まれる全てのエントリに対するポインタのカウントされソートされた第１の配列、または、第１の配列に対するポインタを含めるステップ、および、任意のディレクトリの前記位置を取得、または、位置がないことの確認を可能にするために、第１の配列の全体のバイナリ検索を実行するステップを備える方法が提供される。
【００３１】
本発明の第２の態様によれば、第１の態様による方法に従い動作するように構成されるコンピュータ・デバイスが提供される。
【００３２】
本発明の第３の態様によれば、デバイスが第１の態様の方法に従い動作するようにするための、コンピュータ・デバイスのオペレーティングシステムが提供される。
【発明を実施するための最良の形態】
【００３３】
本発明の実施形態を、次にさらに例のみによる方法により、ＦＡＴファイルシステムに基づくファイルシステムの例を示す添付の図面を参照して説明する。
【００３４】
本発明は、ＦＡＴファイルシステムに関する基礎をなす関心事が、システムは、一連のリンク付けされたリストで構成され、一連のリンク付けされたリストは、ファイルを位置決めし、ロードするのに要する時間を長引かせ、それ故システムを利用する装置が立ち上がるのに要する時間を長引かせる、幾つかの副次的最適特性を有する、ことを基本にする。留意すべきは、ＦＡＴファイルシステムの特定のケースは以下に記す実施形態の基本を形成するが、本発明はファイル位置が一連のリンク付けされたリストをナビゲートし検索することを必要とする任意のファイルシステムに実際適用可能なことである。そのようなシステムが共有する副次的最適特性は以下の通りである。
・ファイルおよびディレクトリエントリは任意に混在し得る。
・ファイルおよびディレクトリエントリは本質的に未ソートである。
・ファイルおよびディレクトリエントリは固定の大きさであると保証されない。
【００３５】
以上に所与の理由のため、ＦＡＴファイルシステムを完全に不要にするのは実際的ではなく、また望ましくもなく、起動ＲＯＭのために完全に異なるファイルシステムを導入するのは実施に値しない。それ故この発明は、ＦＡＴファイルシステム仕様との完全な適合性を維持しながら、同時に、起動時間を改善するように特に設計された既存ＦＡＴファイルシステムに対する拡張の導入を基本とする。
【００３６】
これらの拡張の中で最も重要なのは、各々のディレクトリに、各々のディレクトリが含む全てのサブディレクトリエントリの１つのソートされたリスト、および、各々のディレクトリが含む全ての唯一のファイルエントリの第２のソートされたリストとを含むことである。ソートされたリストは配列などの形式で保持され、完全修飾パス名から簡単なバイナリ検索アルゴリズムによりファイルの位置を決めることが可能になる。このようなソートされた配列のバイナリ検索は、検索される項目の名前をキーとして使用し、区間として配列全体を採用し、配列の中央におけるエントリにより指示される項目を見て始まる。最初にリストをソートするのに使用したのと同じ照合法を使用して、このエントリの名前が検索キーと比較される。この名前がキーより大きければ、区間はリストの半分（例えば上半分）に狭められ、一方小さければ、区間はリストの他の半分（例えば下半分）に狭められる。新しい区間を使用して、キーが名前と適合するか、または、区間がゼロになるかのいずれかまで、この処理は繰り返される。
【００３７】
このタイプのバイナリ検索は、実装するのに極めて効率的であり、そのエントリをバランス・ツリー（Ｂツリー）に保持するＲｅｉｓｅｒＦＳおよびＮＴＦＳなどのジャーナリング・ファイルシステムにより可能になるファイルの位置決めと比較して、速度において同等である。しかし、ファイルシステムがＲＯＭに対するものであり、これらのリストがそれ故静的であることが保証されるので、これらのリストを製造の途中でＲＯＭに含めることができ、Ｂツリーを維持することに関連する実行時の余分なオーバヘッドはなんら課せられない。正常なエントリの後にこれらのソートされたリストを各々のディレクトリに配置することにより、既存ファイルＦＡＴファイルシステムとの完全な適合性を保証することができる。
【００３８】
ＲＯＭファイルシステムはあらゆるディレクトリのコンテンツを、ＦＡＴ互換のファイルシステムの標準形式に従うディレクトリエントリのフラットなリストにより再帰的に表す。本発明により標準ＲＯＭファイルシステムは、ファイルシステムにおける古い要素が以前のシステムとの適合性を維持することが可能となるように、ファイルシステムデータの後に２つの配列（カウントおよびメモリオフセットのリストの形式で）を追加することにより加速される。これらの配列の第１のものは、ディレクトリにおける全てのサブディレクトリエントリに対するポインタのソートされたリストを保持し、第２の配列は、ディレクトリにおける全てのファイルエントリに対するポインタのソートされたリストを保持する。ソートされた配列を介した検索は、現在の使用ケースに対して最適化された一般的なバイナリ検索を使用して行われる。バイナリ検索の繰り返しに対して、正しいエントリの識別は、高速なロケール非依存のユニコード文字列の比較関数により試行され、アスキー（ASCII）範囲(１２８以下)の全てのユニコード文字が取り込まれる。即ち同じアスキー値を持つ文字は同じものとして扱われ、他のものは変更されずに残される。さらなる最適化として、大部分のコンピュータ・デバイスのオペレーティングシステムにより認められるように、Ａ〜Ｚおよびａ〜ｚの範囲の文字は同等と考慮されうる。
【００３９】
本発明によれば、ファイルシステムがデバイスＲＯＭにおける特定ファイルの位置を取り出すことを求められる場合、以下のステップが続く。
【００４０】
・フルパスにより指定されるファイル名は、ルートディレクトリからのパスとファイル名そのものとに分割される（従って、ａ＼ｂ＼ｃ＼ｄはａ＼ｂ＼ｃとｄとに分割される）。これをステップ「Ｓ」と呼ぶ。
【００４１】
・バイナリ検索が開始され、上述のサブディレクトリのポインタ配列を使用して、最も内部のディレクトリの位置から反復的に進行する（従って、ａ＼ｂ＼ｃから開始するとき、ファイルシステムは、まずａを見つけ、次いでｂ、次いでｃを見つける）。これをステップ「Ｌ」と呼ぶ。
【００４２】
・一旦正しいディレクトリが位置決めされると、ファイルは、上述の唯一のファイルエントリのポインタ配列を使用して、第２のバイナリ検索の実行により位置決めされる。これをステップ「Ｆ」と呼ぶ。
【００４３】
一旦サブディレクトリおよびファイルエントリに対するプリソートされたポインタの配列の基本的メカニズムが用意されると、幾つかのさらなる最適化が次いで可能になる。そのような最適化の３つの例は以下の通りである。
【００４４】
＜ワイルドカード検索＞
本発明は、また、ファイル名にワイルドカードを含むファイルの組の位置を加速することができる（例えば、’？’の文字が１つの文字を表し、’＊’の文字が１以上の文字を表す）。そのような場合、加速されたディレクトリの調査は上述のようにステップ「Ｌ」において発生する。ワイルドカードがファイル名の始めに存在すれば、検索をさらに最適化することは不可能であり、ファイルシステムは一般的なワイルドカードの適合機能に戻る。
【００４５】
しかしながら、ワイルドカードが文字列の終わりに存在する場合、唯一のファイルポインタの配列により、ファイルを適合するプレフィックスの文字列が見つかるソートされた配列における第１のファイルから、適合するプレフィックスの文字列が見つからない第１のファイルまで順にマッチングすることが可能になる。そして、ワイルドカードを含む文字列に適合するファイルを連続しプリソートされた形式で直接返すことができる。これは大きなディレクトリでは特に有益である。
【００４６】
以上の特別な場合として、現ディレクトリにおける全てのファイルを示すワイルドカード文字’＊’が分離して存在する場合、唯一のファイルエントリのポインタの配列により、現ディレクトリにおける全てのファイルを連続しプリソートされた形式でで返すことが可能になる。
【００４７】
＜ディレクトリパスのキャッシュ＞
これは上述のステップ「Ｌ」の変形である。
【００４８】
キャッシュは直近に必要としたファイルパスの位置を維持するために使用することができる。ＳｙｍｂｉａｎＯＳにおける＼ｓｙｓ＼ｂｉｎ、Ｗｉｎｄｏｗｓ（登録商標）における＼ｗｉｎｎｔ＼ｓｙｓｔｅｍ３２、およびＬｉｎｕｘにおける／ｌｉｂまたは／ｂｉｎなどのシステムライブラリに予約されたディレクトリから、非常に多くのファイルが読まれる起動時に、これは特に有益である。そのようなキャッシュは多くの時間を消費する比較演算を一般的に省くことができる。起動ＲＯＭの構築しその動作のプロファイリングに関する当業者は、キャッシュ維持のオーバヘッドを最小にし、キャッシュヒット率を最大にする最適キャッシュの大きさの選択方法を容易に理解する。
【００４９】
＜固定パスのキャッシュ＞
これは、上述のステップ「Ｌ」の別の変形である。
【００５０】
ＲＯＭ構築時に、ＲＯＭファイルシステム内の最も使用される深いパスはＲＯＭキャッシュに予めインストールすることができる。再び、起動ＲＯＭの構築およびその動作のプロファイリングに関する当業者は最良のパス候補の特定方法を容易に理解する。この最適化は勿論さらに性能を改善するために「ディレクトリのパスキャッシュ」と結合することができる。
【００５１】
この発明の重要な利点は、第２のファイルシステムの実装を必要とすることなく、かつＦＡＴファイルシステムに基づく産業界の標準との適合性を損なうことなく、コンピュータ・デバイスを起動するのに要する時間を有意に減らすことである。それ故、この発明によりコンピュータ・デバイス、特にモバイル・コンピュータ・デバイスにおいて、別のソリューションで起こりうるメモリ、または実行時の不利を招くことなく速い起動が可能になる。
【００５２】
従って、この発明は、ＦＡＴなどのシステムにおけるディレクトリを備える標準のソートさず混在するフラットなファイルリストと共に、サブディレクトリおよびファイルエントリに対するポインタの分離されプリソートされた配列を含む方法および装置を提供する。バッテリにより動作するモバイル・デバイスの起動ＲＯＭに含まれると、これにより電源投入から装置が動作状態に至るまでの時間を遥かに短くすることが可能になる(より速い起動時間)。これは、複数の階層のディレクトリツリーをナビゲートすることが最早必要でなく、適合するファイル名に対する各々の枝における各々のエントリの検索が必要でないからであり、新しいプリソートされた配列は、適合するエントリを簡単なバイナリ検索により、より効率的に位置決めすることが可能になる。
【００５３】
本発明を個々の実施形態を参照して説明したが、当然のことながら修正は添付の特許請求の範囲により定義される本発明の範囲内で変更がなされ得る。
【図面の簡単な説明】
【００５４】
【図１】ＦＡＴファイルシステムに基づくファイルシステムの代表的な実装を示す図である。
【図１】
2008503818.tif 000003
【国際調査報告】
2008503818.tif 000004
2008503818.tif 000005
2008503818.tif 000006