JP2016515258A - 最適化ファイル動作のためのファイル集合化 - Google Patents
最適化ファイル動作のためのファイル集合化 Download PDFInfo
- Publication number
- JP2016515258A JP2016515258A JP2016500369A JP2016500369A JP2016515258A JP 2016515258 A JP2016515258 A JP 2016515258A JP 2016500369 A JP2016500369 A JP 2016500369A JP 2016500369 A JP2016500369 A JP 2016500369A JP 2016515258 A JP2016515258 A JP 2016515258A
- Authority
- JP
- Japan
- Prior art keywords
- file
- files
- operations
- optimized
- computing device
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
最適化ファイル動作のためにファイルをグループ化する種々の技法および解決手段について説明する。例えば、グループ化した複数のファイルに対して、ファイル動作(例えば、標準的なファイル動作)を受けることができる。ファイル動作に関係するデータをキャッシュに格納することができる。次いで、最適化ファイル動作を決定することができる。例えば、セクター使用情報を更新するため、ファイル・データを書き込むため(例えば、キャッシュから)、フォルダ・メタデータ情報を更新するため、および/または他のファイル関係活動を実行するために、最適化ファイル動作を決定し実行することができる。最適化ファイル動作は、データを外部副ストレージに書き込むために実行することができる。ファイルの書き込みのような最適化ファイル動作のためにファイルをグループ化することは、多数の独立して最適化された1つ1つのファイル・パターンを書き込むよりも効率的であることができる。サービスおよびアプリケーションからファイル動作を受け、グループ化し、最適化するために、アプリケーション・プログラミング・インターフェース(API)を設けることができる。【選択図】図1
Description
[001] 移動体電話機およびタブレットのようなデバイスは、ファイルを格納するための、フラッシュ・メモリのような内部メモリが制限されていることが多い。制限された内部メモリを補うために、このようなデバイスは、セキュア・ディジタル(SD)メモリ・カードまたはユニバーサル・シリアル・バス(USB)メモリ・スティックのような、外部メモリ・カードを使用して、デバイスの記憶容量の拡張に備えることが多い。外部メモリ・カードはデバイスの記憶容量を大幅に増大するが、これらは内部メモリよりも一般にアクセスが遅い。
[002] より大きなブロック・サイズを使用するというような、ブロックおよびファイル・レベルで外部メモリ・カードへのアクセスを高速化するいくつかの試みが行われている。このような試みは、例えば、ファイルの一部を書き込むときには、何らかの改善が得られることもあるが、多数のファイルを書き込む、または他のファイル関係動作を実行するときというような、更に高いレベルでは、最適化を提供することができない。
[003] したがって、ファイル動作を最適化することに関する技術において、広い改善の余地がある。
[0004] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[005] 最適化ファイル動作のためにファイルをグループ化する技法およびツールについて説明する。例えば、ファイル動作(例えば、標準的なファイル動作)は、複数のファイルのために受けることができる。ファイル動作に関係するデータは、キャッシュに格納することができる。次いで、最適化ファイル動作を決定することができる。例えば、最適化ファイル動作は、セクター使用情報(sectors used information)を更新するため、ファイル・データを書き込むため(例えば、キャッシュから)、フォルダ・メタデータ情報を更新するため、および/または他のファイル関係活動を実行するために、決定し実行することができる。最適化ファイル動作は、データを外部の副ストレージに書き込むために実行することができる。
[006] 例えば、最適化ファイル動作のためにファイルをグループ化する方法を提供することができる。この方法は、例えば、計算デバイスのファイル・オプティマイザー・コンポーネント(file optimizer component)によって実行することができる。この方法は、複数のファイルに対してファイル動作を実行する要求を受けるステップと、前記複数のファイルの指示を受けるステップと、複数のファイルの各ファイルに対して、前記ファイルに対して実行する1つ以上のファイル動作の指示を受けるステップと、前記複数のファイルに対する最適化ファイル動作を決定するステップと、計算デバイスの外部副ストレージを使用して前記最適化ファイル動作を実行するステップとを含む。1つ以上のファイル動作に関係するデータは、キャッシュに格納することができる。
[007] 他の例として、最適化ファイル動作のためにファイルをグループ化する方法を提供することができる。この方法は、例えば、計算デバイスのファイル・オプティマイザー・コンポーネントによって実行することができる。この方法は、複数のファイルに対してファイル動作を実行する要求を受けるステップと、複数のファイルの各ファイルに対して、ファイルの指示を受けるステップと、ファイルに対して実行する1つ以上のファイル動作を受けるステップと、ファイルに対して実行する1つ以上のファイル動作に関連付けられたデータをキャッシュするステップと、ファイルに対してファイル動作が完了した指示を受けるステップとを含む。更に、この方法は、計算デバイスの外部副ストレージにおいてセクター使用表を更新するために、1回の最適化ファイル動作を決定し実行するステップと、複数のファイルのためにキャッシュしたデータを外部副ストレージに書き込むために、最適化ファイル動作を決定し実行するステップと、複数のファイルに関連付けられたフォルダ・メタデータを、外部副ストレージにおいて更新するために、最適化ファイル動作を決定し実行するステップとを含む。
[008] 他の例として、本明細書において説明する動作を実行するために、処理ユニットと、メモリと、外部ストレージ・カードとを含む計算デバイスを提供することができる。例えば、移動体電話機のような、移動体計算デバイスが、最適化ファイル動作のためにファイルをグループ化するファイル・オプティマイザー・コンポーネントを含むことができる。
[009] 本明細書において説明するように、種々の他の特徴および利点を、所望に応じて、本技術に組み込むことができる。
例1−全体像
[018] 本明細書において説明するように、種々の技法および解決手段は、最適化ファイル管理のためのファイルのグループ化に適用することができる。例えば、ファイルは、書き込み、移動、削除、セクター更新、フォルダ更新、および/または他のファイル関係動作の最適化のためにグループ化することができる。最適化ファイル管理のためにファイルをグループ化することによって、書き込み動作におけるランダム・シーケンスの減少、および/または書き込みシーケンスの長さの増大を含む利点を得ることができる。
[018] 本明細書において説明するように、種々の技法および解決手段は、最適化ファイル管理のためのファイルのグループ化に適用することができる。例えば、ファイルは、書き込み、移動、削除、セクター更新、フォルダ更新、および/または他のファイル関係動作の最適化のためにグループ化することができる。最適化ファイル管理のためにファイルをグループ化することによって、書き込み動作におけるランダム・シーケンスの減少、および/または書き込みシーケンスの長さの増大を含む利点を得ることができる。
[019] 本明細書において説明する技法および解決手段では、上位サービスおよび/またはアプリケーションからの情報が、ファイル・ストレージ・コンポーネントまたはキャッシング・コンポーネントによって実行されるファイル動作のような、ファイル動作を最適化するために利用される。ファイル動作について上位情報を利用することによって、ファイルの一部に特定的なだけでなく、多数のファイルおよび/またはフォルダにわたって適用される最適化を実現することができる。例えば、これは、速度が遅い副ストレージ・デバイスのようなストレージ・デバイスにアクセスするときに、大量のデータを事実上シーケンシャルにする、つまり帯域幅利用度を高めることを可能にすることができる。更に、フォルダおよびパーティション編成ブロック(例えば、ファイル割り当て表(FAT)マップ、フォルダ構造リスト等)に対する更新をへらしつつ(例えば、より少ない動作、または単に1回の動作を使用する)、多数のファイルに対する更新を行うことができる。
[020] 最適化シナリオの一例では、サービスおよびアプリケーションが、ストレージ・スタックに、一連の動作が一緒に行われようとしている(例えば、グループとして)ことを通知することができる。例えば、新たなソフトウェア・アプリケーションをインストールするために、4つのファイルを書き込むことができる。ストレージ・スタックは、この一連の動作(例えば、標準的なファイル動作)を受けることができる。ある実施態様では、ストレージ・スタックはデータをキャッシュに格納する。この一連の動作の終了時に、ストレージ・スタックは、最適化動作(例えば、集計動作)を決定し実行することができる。例えば、新たなソフトウェア・アプリケーションをインストールために4つのファイルが書き込まれる場合、ストレージ・スタックは、4つのファイル全て(例えば、キャッシュから書き出される)をカバーする1回の書き込みシーケンシャル・シーケンス(write sequential sequence)を実行することができ、フォルダおよびパーティション・オーバーヘッド更新の回数が減少する結果となる。同様の節約は、ファイルのフォルダを移動させる、アプリケーションをアンインストールするために多くのファイルを削除する、ムービーを編集するときに様々なファイルを更新する等のような、他のグループ化動作についても実現することができる。
[021] 本明細書において説明する技法および解決手段は、多数のファイルに対してファイル動作を実行するときに利点が得られ、ある状況では、1つのファイルに対しても同様に利点を得ることができる。例えば、本技法および解決手段は、多数の画像ファイル、ムービー・ファイル、または他のファイルを、外部ストレージ・カードのような副ストレージに書き込む動作(performance)を改善することができる。
例2−副ストレージ
[022] 本明細書における例ではいずれも、計算デバイスのストレージは、主ストレージ(例えば、RAM)、内部副ストレージ、および外部副ストレージにセグメント化される。内部副ストレージとは、通例、計算デバイスの内部にある、または内蔵される、比較的高速なストレージを指す。内部副ストレージの例には、ハード・ドライブ、ソリッド・ステート・ドライブ(SSD)、内蔵フラッシュ・ストレージ等が含まれる。外部副ストレージとは、通例、計算デバイスに内蔵されない(例えば、スロットまたは外部コネクターを介して計算デバイスに接続される、差し込まれる)、比較的遅いストレージ(内部副ストレージよりも相対的に遅い)を指す。外部副ストレージの例には、セキュア・ディジタル(SD)カード、マルチメディアカード(MMC)ストレージ・カード、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブ等が含まれる。
[022] 本明細書における例ではいずれも、計算デバイスのストレージは、主ストレージ(例えば、RAM)、内部副ストレージ、および外部副ストレージにセグメント化される。内部副ストレージとは、通例、計算デバイスの内部にある、または内蔵される、比較的高速なストレージを指す。内部副ストレージの例には、ハード・ドライブ、ソリッド・ステート・ドライブ(SSD)、内蔵フラッシュ・ストレージ等が含まれる。外部副ストレージとは、通例、計算デバイスに内蔵されない(例えば、スロットまたは外部コネクターを介して計算デバイスに接続される、差し込まれる)、比較的遅いストレージ(内部副ストレージよりも相対的に遅い)を指す。外部副ストレージの例には、セキュア・ディジタル(SD)カード、マルチメディアカード(MMC)ストレージ・カード、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブ等が含まれる。
[023] 外部副ストレージ・デバイスは、比較的遅いストレージ・デバイスである(内部副ストレージまたは主ストレージよりも相対的に遅い)。例えば、外部副ストレージ・デバイス(例えば、外部副ストレージ・カード)は、通例、帯域幅が制限される、および/または内部副ストレージ・デバイス(例えば、ハード・ドライブ)と比較して、アクセス時間が遅い。更に、多くの外部副ストレージ・デバイスは、ランダム動作では、シーケンシャル動作に関しては更に遅くなる。
例3−ファイル最適化の例
[024] 本明細書において説明する最適化技法および解決手段を使用せずにファイル書き込みを実行すると、ファイル毎に多くの動作を必要とする可能性がある。以下の擬似コードの例は、ファイルを書き込むときに通例行われる動作を表す(例えば、典型的なまたは標準的なファイル・システム動作を使用してファイルを書き込むとき)。
[024] 本明細書において説明する最適化技法および解決手段を使用せずにファイル書き込みを実行すると、ファイル毎に多くの動作を必要とする可能性がある。以下の擬似コードの例は、ファイルを書き込むときに通例行われる動作を表す(例えば、典型的なまたは標準的なファイル・システム動作を使用してファイルを書き込むとき)。
1.ファイル毎に:
a.アプリケーション/サービスはファイル・ハンドルを得る。
b.書き込み動作毎に、
i.最初に、記憶媒体がセクター使用表(sector being used table)を更新する。
ii.次いで、特定のサイズのチャンク/ブロブにデータを書き込む(例えば、512バイトの倍数)。
c.次いで、フォルダ・メタデータを更新する。
i.新たなファイル・エントリー
ii.または、新たなファイル長
[025] 3つの新しいファイルが書き込まれており(訳注:3つは4つの間違いと思われます)、4つの新しいファイルは各々512KBであり、4KBチャンクを使用して書き込まれるという状況例について考える。先の擬似コードを使用すると(例えば、標準的なファイル・システム動作を使用する)、4つのファイルを書き込むには、以下の動作を実行する必要がある。
−1(b)(i)ステップに対する512セクターの更新動作(ファイル毎に128セクター更新動作)。
−1(b)(ii)ステップに対する512データ書き込み動作(ファイル毎に128データ書き込み動作、512KBファイルの4KBチャンクに対する各データ書き込み。
−1(c)ステップに対する4フォルダ・メタデータ動作(ファイル毎に1回のフォルダ・メタデータ動作)。
[026] この例によって示されるように、典型的なファイル記憶解決手段を使用してファイルを書き込むと、ファイル毎に多くの別個の動作を必要とする可能性がある。以上の例では、4つの512KBファイルだけを書き込むために、1,028回の別個の動作が要求される。多数の動作およびそれらのシーケンス処理は、特に、遅い方の外部副ストレージ(例えば、SDカード)を使用するときに、格納動作に大きな影響を及ぼす可能性がある。
a.アプリケーション/サービスはファイル・ハンドルを得る。
b.書き込み動作毎に、
i.最初に、記憶媒体がセクター使用表(sector being used table)を更新する。
ii.次いで、特定のサイズのチャンク/ブロブにデータを書き込む(例えば、512バイトの倍数)。
c.次いで、フォルダ・メタデータを更新する。
i.新たなファイル・エントリー
ii.または、新たなファイル長
[025] 3つの新しいファイルが書き込まれており(訳注:3つは4つの間違いと思われます)、4つの新しいファイルは各々512KBであり、4KBチャンクを使用して書き込まれるという状況例について考える。先の擬似コードを使用すると(例えば、標準的なファイル・システム動作を使用する)、4つのファイルを書き込むには、以下の動作を実行する必要がある。
−1(b)(i)ステップに対する512セクターの更新動作(ファイル毎に128セクター更新動作)。
−1(b)(ii)ステップに対する512データ書き込み動作(ファイル毎に128データ書き込み動作、512KBファイルの4KBチャンクに対する各データ書き込み。
−1(c)ステップに対する4フォルダ・メタデータ動作(ファイル毎に1回のフォルダ・メタデータ動作)。
[026] この例によって示されるように、典型的なファイル記憶解決手段を使用してファイルを書き込むと、ファイル毎に多くの別個の動作を必要とする可能性がある。以上の例では、4つの512KBファイルだけを書き込むために、1,028回の別個の動作が要求される。多数の動作およびそれらのシーケンス処理は、特に、遅い方の外部副ストレージ(例えば、SDカード)を使用するときに、格納動作に大きな影響を及ぼす可能性がある。
[027] 本明細書において説明する技法および解決手段を使用すると、ファイル動作を最適化し(例えば、集計する)、ストレージ・リソース(例えば、帯域幅、応答時間等)の一層効率的な利用に備えることができる。各々512KBである4つの新しいファイルを書き込むという先の例を使用すると、以下の最適化動作を実行することができる。
−1回のセクター更新動作(例えば、最初にファイル動作の全てを受けてキャッシュすることによって、または最終ファイル・サイズの通知を受けて、4つのファイル全てを書き込むときに使用されるセクターを計算することによって)。
−2回のデータ書き込み動作(例えば、最初に個々のデータ書き込みの全てを受けてキャッシュし、この書き込みを2つの1MBデータ書き込みシーケンスに集計することによって。各データ書き込みシーケンスは、4つのファイルの内2つのデータを書き込む)。
−1回のフォルダ・メタデータ動作(例えば、4つの新しいファイルに対するフォルダ更新を1回のメタデータ更新動作に組み合わせることによって)。
[028] 先に示したように、本明細書において説明する技法および解決手段を使用すると、ファイル管理を実行するために必要とされる動作の回数を大幅に減らすことができる。以上の状況例が例示するように、4つの512KBファイルを書き込むとき、1,208回の個別動作(例えば、その殆どまたは全ては、別個にストレージ・デバイスにアクセスする必要があると考えられる)を、4回の個別最適化動作に減らすことができる。
−1回のセクター更新動作(例えば、最初にファイル動作の全てを受けてキャッシュすることによって、または最終ファイル・サイズの通知を受けて、4つのファイル全てを書き込むときに使用されるセクターを計算することによって)。
−2回のデータ書き込み動作(例えば、最初に個々のデータ書き込みの全てを受けてキャッシュし、この書き込みを2つの1MBデータ書き込みシーケンスに集計することによって。各データ書き込みシーケンスは、4つのファイルの内2つのデータを書き込む)。
−1回のフォルダ・メタデータ動作(例えば、4つの新しいファイルに対するフォルダ更新を1回のメタデータ更新動作に組み合わせることによって)。
[028] 先に示したように、本明細書において説明する技法および解決手段を使用すると、ファイル管理を実行するために必要とされる動作の回数を大幅に減らすことができる。以上の状況例が例示するように、4つの512KBファイルを書き込むとき、1,208回の個別動作(例えば、その殆どまたは全ては、別個にストレージ・デバイスにアクセスする必要があると考えられる)を、4回の個別最適化動作に減らすことができる。
[029] 元の(最適化されない)動作は、ランダム・シーケンス処理が行われるという欠点があり、セクター使用を追跡する書き込み(先のステップ(b)(i))が実際のデータ書き込みと混合される。このランダム・シーケンス処理は、外部メモリ上で動作が完了する速度を劇的に低下させる可能性がある(シーケンシャル・シーケンスと比較して)。最適化ファイル動作を使用すると、1回の更新を最初に実行することができるので(例えば、自由空間ビットマップを更新するexFAT(拡張ファイル割り当て表)パーティション上)、データ書き込みは全てシーケンシャルにすることができる(exFATは、 Microsoft Corporationによって提供されるファイル・システムである)。
例4−最適化ファイル動作のための環境
[030] 本明細書における例ではいずれも、移動体電話機、タブレット、または他のタイプの計算デバイスというような計算デバイスは、最適化ファイル動作のためにファイルをグループ化するコンポーネントをサポートすることができる。例えば、オペレーティング・システム内部および/または計算デバイスの他のコンポーネントの内部に(例えば、ドライバーによって)ファイル・オプティマイザー・コンポーネントを実装することができる。
[030] 本明細書における例ではいずれも、移動体電話機、タブレット、または他のタイプの計算デバイスというような計算デバイスは、最適化ファイル動作のためにファイルをグループ化するコンポーネントをサポートすることができる。例えば、オペレーティング・システム内部および/または計算デバイスの他のコンポーネントの内部に(例えば、ドライバーによって)ファイル・オプティマイザー・コンポーネントを実装することができる。
[031] 図1は、最適化ファイル動作のためにファイルをグループ化するために、本明細書において説明する技法および解決手段を実現することができる計算デバイス例110を示す図である。計算デバイス110は、サービスおよびアプリケーション120を含む。サービスおよびアプリケーション120は、計算デバイス110上で実行する種々のソフトウェア・サービスおよびソフトウェア・アプリケーションを表す。サービスおよびアプリケーション120の例には、ムービー編集アプリケーション、音楽アプリケーション、ソフトウェア・インストーラ・アプリケーション、ファイル・ブラウザー・アプリケーション等が含まれる。
[032] 計算デバイス110は、オペレーティング・システム130を含む。オペレーティング・システムは、ファイル・システム動作およびメモリ管理というような、計算デバイス110の動作を制御することができる。
[033] 計算デバイス110は、ストレージ150を含む。ストレージ150は、内部副ストレージおよび/または外部副ストレージとすることができる。ある実施形態では、ストレージ150は外部副ストレージ(例えば、SDカード)である。
[034] 計算デバイス110は、任意のタイプの計算デバイスとすることができる(例えば、デスクトップ・コンピューター、サーバー・コンピューター、ラップトップ・コンピューター、ノートブック・コンピューター、タブレット・コンピューター、移動体電話機、スマート・フォン、マルチメディア・デバイス、パーソナル・ディジタル・アシスタント(PDA)等)。ある実施態様では、計算デバイス110は、外部副ストレージ(例えば、SDカードまたはMMCカード)を追加のファイル・ストレージ(例えば、限られた量の内部副ストレージを拡張するため)として使用する、移動体電話機またはタブレット・コンピューターである。
[035] 計算デバイス110は、ファイル・オプティマイザー140コンポーネントを含む。ファイル・オプティマイザーは、計算デバイス110のソフトウェアおよび/またはハードウェアで実現することができる。図1に示すように、ファイル・オプティマイザー140は、計算デバイスのオペレーティング・システム130の一部として、および/または計算デバイス110の別のコンポーネントとして(例えば、ストレージ・ドライバーの一部として)実装することができる。
[036] ファイル・オプティマイザー140は、最適化ファイル動作のためにファイルをグループ化するために、本明細書において説明する技法および解決手段をサポートする。例えば、ファイル・オプティマイザー140は、ファイル・オプティマイザー140にアクセスするためのアプリケーション・プログラミング・インターフェース(API)を設けることができる。このAPIは、オペレーティング・システム130によってアクセスすることができる。例えば、オペレーティング・システム130は、ファイル要求をサービスおよびアプリケーション120から、標準的なオペレーティング・システム動作を通じて受けることができる。次いで、オペレーティング・システム130は、ファイル・オプティマイザー140を使用して、ファイル要求をグループ化および最適化することができる(例えば、ファイル・オプティマイザー140を利用するためにサービスおよびアプリケーション120を書き直す必要なく)。APIがオペレーティング・システム130によってアクセスされる代わりに、またはそれに加えて、サービスおよびアプリケーション120によって直接APIにアクセスすることができる。例えば、サービスおよびアプリケーション120は、ファイル・オプティマイザー140に直接アクセスすることができる(例えば、オペレーティング・システム130内部に設けられる、および/または、計算デバイス110の、ストレージ・ドライバーのような、他のコンポーネントによって設けられる)。
[037] ファイル・オプティマイザー140は、最適化ファイル動作のためにファイルをグループ化することに関係する種々のコマンドおよび要求をサポートする。例えば、ファイル・オプティマイザー140は、複数のファイルに対してファイル動作を実行する要求(例えば、マルチファイル・ストリームを開く)をサポートすることができる。ファイル・オプティマイザー140は、複数のファイルの各々について情報および実行する動作を受けることができる(例えば、ファイル名のようなファイル識別子を受ける、ファイル・ハンドルを得る、ファイルをロックする、ファイルに書き込むデータを受ける等)。ファイル・オプティマイザー140は、データ(例えば、ファイルに書き込まれるデータ)をキャッシュに(例えば、計算デバイス110のメモリ内に格納されたキャッシュに)保存することができる。次いで、ファイル・オプティマイザー140は、実行する最適化(例えば、集計)動作を決定することができる。例えば、ファイル・オプティマイザー140は、実行する使用セクター更新動作(used sector update operation)の回数を減らすことを決定し、実行することができる(例えば、複数のファイルに対するファイル動作の全てに相当する(account for)1回の使用セクター表更新動作)。ファイル・オプティマイザー140は、複数のファイルに対してデータを書き込むための最適化動作を決定し実行することができる(例えば、ファイル毎に、キャッシュから、SDカードのようなファイル・ストレージ・デバイスにそのファイルの全データを書き込むために、1回の最適化ファイル動作を実行する、または1組の統合最適化ファイル動作を実行する)。ファイル・オプティマイザー140は、フォルダ情報を更新する最適化動作を決定し実行することができる(例えば、複数のファイルのために実行される動作に関連付けられた全てのフォルダのメタデータを更新するための動作を、回数を減らして実行する、または1回の動作を実行する)。ファイル・オプティマイザー140は、これらの動作の結果を提供することができる(例えば、成功または失敗を、オペレーティング・システム130および/またはサービスおよびアプリケーション120のような他のコンポーネントに報告する)。
例5−最適化ファイル動作を実行する方法
[038] 本明細書における例ではいずれも、最適化ファイル動作を実行する方法を提供することができる。例えば、最適化ファイル動作は、多数のファイルのグループに対して実行することができる(例えば、外部副ストレージを使用するとき)。
[038] 本明細書における例ではいずれも、最適化ファイル動作を実行する方法を提供することができる。例えば、最適化ファイル動作は、多数のファイルのグループに対して実行することができる(例えば、外部副ストレージを使用するとき)。
[039] 図2は、最適化ファイル動作のためにファイルをグループ化する方法例200のフローチャートである。方法例200は、例えば、図1に示したファイル・オプティマイザー140によって実行することができる。210において、複数のファイルに対してファイル動作を実行する要求を受ける。この要求は、例えば、計算デバイスのコンポーネント(例えば、ファイル最適化コンポーネントのAPIを介してファイル最適化コンポーネントによって)によって受けることができる。
[040] 220において、複数のファイルの指示を受ける。この指示は、ファイル名、パス名、ファイル識別子、ファイル・ハンドル、および/または複数のファイルを識別するまたはこれらに関連付けられた他の情報を含むことができる。
[041] 230において、複数のファイルの各々に対して実行する1つ以上のファイル動作の指示を受ける(訳注:動詞がありません。図2を参考にしました。)。例えば、ファイル毎に実行する1つ以上のファイル動作は、1つ以上のファイル書き込み動作、1つ以上のファイル削除動作、1つ以上のファイル移動動作等を含むことができる。例えば、1MBファイルが書き込まれている場合、1つ以上のファイル動作は、各々1MBファイルの内10KBを書き込むために100個の個々のファイル動作を含むことができる。
[042] 240において、受けたファイル動作の指示230に基づいて、複数のファイルに対する最適化ファイル書き込み動作を決定する。最適化ファイル書き込み動作は、減少した数の動作(例えば、統合または集計された動作)を含むことができる。例えば、100回のファイル書き込み動作を230において受けた場合、最適化ファイル書き込み動作は、100回のファイル動作全てを集計した1回の書き込み動作(例えば、1回の1MB書き込み動作)を含むことができる。他の例として、セクター使用更新の回数は、少ない回数のセクター使用更新として、または1回のセクター使用更新として最適化することができる(例えば、セクター使用表を更新するため)。最適化ファイル書き込み動作に加えて、またはその代わりに、他の最適化ファイル動作を240において決定し実行することもできる。
[043] 250において、決定した最適化ファイル・ファイル動作を実行する。例えば、最適化ファイル動作は、外部の副ストレージ・デバイス(例えば、SDカード)を使用して実行することができる。最適化ファイル動作の実行は、データを書き込む、使用セクター情報を更新する、ファイル/フォルダ情報(例えば、フォルダ・メタデータ)を更新する、および/または他のタイプの最適化ファイル動作を実行することを含むことができる。
[044] 図3は、最適化ファイル動作のためにファイルをグループ化する他の方法例300のフローチャートである。この方法例300は、例えば、図1に示したファイル・オプティマイザー140によって実行することができる。310において、複数のファイルに対してファイル動作を実行する要求を受ける。この要求は、例えば、計算デバイスのコンポーネントによって(例えば、ファイル最適化コンポーネントのAPIを介してファイル最適化コンポーネントによって)受けることができる。
[045] 320において、複数のファイルの各ファイルに対して、ある数のアクションを実行する。これらのアクションは、ファイルの指示(例えば、ファイル名、パス名、ファイル識別子、ファイル・ハンドル、および/またはファイルを識別するまたはファイルに関連付けられた他の情報)を受けるアクションを含む。また、これらのアクションは、ファイルに対して実行する1つ以上のファイル動作(例えば、書き込み動作、移動動作等)を受けるアクションを含む。また、これらのアクションは、ファイルに対して実行する1つ以上のファイル動作に関連付けられたデータをキャッシュするアクションも含む(例えば、多数回の書き込み動作からの書き込みデータをキャッシュ・メモリにキャッシュすることによって)。最後に、これらのアクションは、ファイル動作がそのファイルに対して完了した指示を受けるアクションを含む。
[046] 330において、セクター使用表を更新するために、1回の最適化ファイル動作を決定し実行する(例えば、外部副ストレージ上で表を更新する)。例えば、複数のファイルの内全てのファイルに対する使用セクターを計算し、セクター使用表を更新する1回の動作に組み合わせることができる。
[047] 340において、複数のファイルに対してキャッシュされたデータを書き込む最適化ファイル動作を決定し実行する。例えば、320において100回のファイル書き込み動作を特定のファイル(各々10KBのデータを書き込むため)に対して受け、書き込みデータをキャッシュする場合、最適化ファイル動作は、キャッシュから外部副ストレージに1MBのデータを書き込む1回の1MB書き込み動作を生成する(create)ために、100回のファイル動作全てを集計する1回の書き込み動作を含むことができる。他の例として、100回の書き込み動作は、各々512KBのデータを書き込む2回の最適化ファイル書き込み動作として実行することもできる。他の例として、多数のファイルに対してデータを書き込むために、1回の書き込み動作を決定し実行することができる(例えば、1回の2MB書き込み動作を生成するために、200回のファイル動作を集計する。つまり、各々10KBのデータを書き込む動作ための2つのファイルの各々に対する100回のファイル動作を集計する)。
[048] 他の例として、多くの小さいファイルを受けた場合(例えば、マップの「タイル」毎のファイルによるマッピング・プログラム)、オプティマイザーは、大きな最適化データ書き込みの各々で、多数のファイルを書き込むことができる。この解決手段では、全てのファイル・データの格納を完了するために、セクター使用の1回の更新(ステップ(b)(i))を、最小回数の大きな書き込みと共に実行することができる。
[049] 350において、複数のファイルに関連付けられたフォルダ・メタデータを更新するために、最適化ファイル動作を決定し実行する。例えば、複数のファイルの全てに対してフォルダ・メタデータを更新する1回の動作を決定し実行することができる。
[050] 図4は、キャッシュ・メモリおよび外部副ストレージを使用して、最適化ファイル動作のためにファイルをグループ化する他の方法例400のフローチャートである。方法例400は、例えば、図1に示したファイル・オプティマイザー140によって実行することができる。
[051] 410において、サービスまたはアプリケーションが、複数のファイルに対してファイル動作を実行する要求を開始する(例えば、マルチファイル・ストリームのため)。例えば、サービスまたはアプリケーションは、オペレーティング・システムによって、または他のシステム・コンポーネントによって(例えば、ストレージ・ドライバーによって)設けられるAPIをコールすることによって、この要求を開始することができる。特定の実施態様では、サービスまたはアプリケーションは、この要求を開始するために、マルチファイル・ストリームに対するファイル・ハンドルを得る。
[052] 420において、ファイル毎のファイル動作をサービスまたはアプリケーション410から受ける(例えば、複数のファイルの全てのファイルに対して)。ファイル動作は、ファイル書き込み動作、ファイル移動動作、ファイル削除動作、ファイル作成動作、ファイル・ロック動作、ファイル処理動作(file handle operation)等を含むことができる。特定の実施態様では、これらの動作は、ファイル毎に、ファイルをロックする、1つ以上の動作においてファイルに対する書き込みデータを受ける、およびファイルに対する動作を終了することを含む。
[053] ファイル受け取り動作420に対するデータ(例えば、書き込まれるファイル・データ)をキャッシュ・メモリに格納する(430)。例えば、計算デバイスの内部システム・メモリ(例えば、RAMまたはフラッシュ)にキャッシュ・メモリを格納することができる。
[054] 440において、動作が実行された後にファイルによって使用されるセクターの数を判定するために計算を実行する。次いで、この計算を使用して、外部副ストレージ上でセクター使用情報を更新する(450)(例えば、セクター使用情報を更新するための1回の最適化動作によって)。
[055] 460において、複数のファイル(例えば、複数のファイルの全てのファイル)の各々に対するキャッシュ・メモリ430からのデータを、最適化動作を使用して、外部副ストレージに書き込む(450)。例えば、各々4KBチャンクの20回のファイル書き込みを使用して、2つのファイルを更新している場合、データー(ファイル毎に80KB)をキャッシュ・メモリ430に格納する。次いで、460において、このファイルの80KBのデータをキャッシュ・メモリ430から外部副ストレージ450に書き込むために、1回の最適化動作を使用することができる。1回の最適化動作の代わりに、異なる回数の最適化動作を使用してデータを書き込むこともできる。この場合、異なる回数の最適化動作は、未だ当初の20回のファイル書き込みよりも少ない。
[056] 470において、最適化動作を使用して、フォルダ・メタデータを更新する。例えば、ファイル動作が行われている複数のファイルの全てのファイルに対してフォルダ・メタデータを更新するために、1回の最適化動作を使用することができる。
例6−最適化ファイル動作を実行するための情報の流れ
[057] 本明細書における例ではいずれも、最適化ファイル動作を実行するために、情報フローを供給することができる。例えば、多数のファイルから成るグループに対して最適化ファイル動作を実行することができる(例えば、外部副ストレージを使用するとき)。
[057] 本明細書における例ではいずれも、最適化ファイル動作を実行するために、情報フローを供給することができる。例えば、多数のファイルから成るグループに対して最適化ファイル動作を実行することができる(例えば、外部副ストレージを使用するとき)。
[058] 図5は、最適化ファイル動作のためにファイルをグループ化する情報フロー例500のフローチャートである。情報フロー例500では、サービスまたはアプリケーション510が、複数のファイルに対してファイル動作を実行するために、ファイル・オプティマイザー・コンポーネント520(例えば、オペレーティング・システムの一部としてまたは別個に設けられる)をコールする。あるいは、オペレーティング・システムがファイル・オプティマイザー520をコールすることもできる(サービスまたはアプリケーション510の代わりに)。例えば、オペレーティング・システムは、ファイル動作をサービスまたはアプリケーション510から受けて、ファイル・オプティマイザー520をコールすることができる(したがって、例えば、ファイル・オプティマイザー520を直接利用するために再書き込みされる代わりに、サービスまたはアプリケーション510のみが、標準的なオペレーティング・システムのファイル格納機能(facilities)を処理すればよい)。
[059] 情報フロー例500に示すように、サービスまたはアプリケーション510は、最初に、マルチファイル・ストリームになる要求(複数のファイルに対するファイル動作)を送る。例えば、サービスまたはアプリケーション510は、マルチファイル・ストリーム・ハンドルを得ることによって、マルチファイル・ストリームを開始することができる。
[060] 情報フロー例500に示すように、サービスまたはアプリケーション510は、次に、複数のファイルの各ファイルに対してアクションのシーケンス540を実行する。アクションのシーケンス540は、ファイルをロックする、ファイルに対するデータを書き込みキャッシュする、およびファイルに対する動作を終了することを含む。ある実施態様では、ファイルのロックは510または520によって自動的に実行することができる(例えば、ファイル・システムAPIを使用するとき)。
[061] 情報フロー例500に示すように、サービスまたはアプリケーション510は、次に、マルチファイル・ストリームを終了する要求を送る。マルチファイル・ストリームを終了する要求は、サービスまたはアプリケーション510が540において複数のファイルに対するファイル動作を完了したことを示す。
[062] 情報フロー例500に示すように、一旦マルチファイル・ストリームが完了したなら、ファイル・オプティマイザー520は、このマルチファイル・ストリームに関与した複数のファイルに対して使用されるセクターを計算する。次いで、ファイル・オプティマイザー520は、ストレージ530のセクター使用表を更新する(例えば、SDカードのような外部副ストレージ)。特定の実施態様では、ファイル・オプティマイザー520は、セクター使用情報(例えば、セクター使用表)を更新するための1回の動作を決定し実行する。
[063] 情報フロー例500に示すように、一旦マルチファイル・ストリームが完了したなら、ファイル・オプティマイザー520は、複数のファイルの各々に対して、データをキャッシュからストレージ530に書き込むためにある回数の最適化ファイル動作も実行する(550)(例えば、540においてデータを書き込むために受けたものよりも少ない回数の動作)。
[064] 情報フロー例500に示すように、一旦マルチファイル・ストリームが完了したなら、ファイル・オプティマイザー520は、複数のファイルに対する変更を反映するために、フォルダ・メタデータも更新する(例えば、ファイル・サイズ、ファイル名、フォルダ位置等)。特定の実施態様では、ファイル・オプティマイザー520は、フォルダ・メタデータ情報を更新するために1回の動作を決定し実行する。
[065] ファイル・オプティマイザー520が最適化ファイル動作を完了した後、複数のファイルを解除する(unlock)。また、ファイル・オプティマイザー520は、ステータス情報をサービスまたはアプリケーション510に、オペレーティング・システムに、および/または他のコンポーネントに報告することもできる。ステータス情報は、動作の成功または失敗の指示を含むことができる。
例7−実施態様の詳細
[066] この章では、最適化ファイル動作のためにファイルをグループ化するファイル・オプティマイザー・コンポーネントの具体的な実施態様について説明する。具体的な実施態様のエレメントは、別々に、または組み合わせて使用することができる。例えば、種々のエレメントを、本明細書のいずれかの場所で説明した技法および解決手段と組み合わせることができる。
[066] この章では、最適化ファイル動作のためにファイルをグループ化するファイル・オプティマイザー・コンポーネントの具体的な実施態様について説明する。具体的な実施態様のエレメントは、別々に、または組み合わせて使用することができる。例えば、種々のエレメントを、本明細書のいずれかの場所で説明した技法および解決手段と組み合わせることができる。
[067] この具体的な実施態様では、ファイル・オプティマイザー・コンポーネントは、OSおよび/またはサービスおよびアプリケーションがコールすることができる1組のAPIを設ける。ファイル・オプティマイザー・コンポーネントは、データ・ストリーム(例えば、マルチファイル・ストリーム)および関連するメタデータを受け、これらを使用してデータ・ストリームを編成し最適化する。ファイル・オプティマイザー・コンポーネントは、着信するデータ・ストリームをキャッシュし、次いで後にキャッシュしたデータを最適にメディア(例えば、外部副ストレージ)に書き込むために、メモリ量(例えば、メモリの可変量)を管理する。
[068] ファイル・オプティマイザー・コンポーネントは、使用表/ビットマップにおけるセクターを更新する回数、およびフォルダ・メタデータを更新する回数を含む、オーバーヘッド動作を最小限に抑えようとする。これらのオーバーヘッド動作を減らすと、メディアの観点から、データ・ストリーム全体のシーケンス性を高めることができる。これに対しては、外部副ストレージ(例えば、SDカード)が特に敏感であると考えられる。
[069] 以下の擬似コードは、ファイル・オプティマイザー・コンポーネントの実施態様の例を示す(ある実施態様では、ファイル・オプティマイザー・コンポーネントはブラストまたはブラストファイル・コンポーネントと呼ばれる)。
[070] 1.開始−マルチファイル・ストリームを一意に識別するために、ファイル・オプティマイザー・ハンドルを作成する。
[071] 2.ファイル開始-このファイル・オプティマイザー・ハンドルだけがアクセスできるように、マルチファイル・ストリームの特定のファイルをロックする。
[072] 3.書き込み−この特定のファイルに対するデータを、仮想キャッシュ・メモリにキャッシュ/格納する(例えば、オプティマイザー・ハンドル、ファイル識別子、およびオフセットによる格納)。
[073] 4.読み取り−実施態様に応じて、オプティマイザーは、最適化対象のファイルに対する同時読み取り動作をサポートすることもできる。これは、キャッシュされたファイルのデータの読み取りだけをサポートする場合もあり、またはストレージ自体へのパススルー(passthru)もサポートする場合もある。
[074] 5.ファイル終了−特定のファイルに対するファイル動作を終了する。
[075] 6.ファイル中断−キャッシュ・メモリにおける特定のファイルに対するデータを除去する動作(例えば、ファイルが一時的ファイルであった場合が考えられ、または動作が取り消された場合も考えられる)。
[076] 7.停止−マルチファイル・ストリームの全てのファイルに対する動作を受けてキャッシュした後(例えば、ファイル毎に、ファイル開始、書き込み、およびファイル終了が実行された)。
[071] 2.ファイル開始-このファイル・オプティマイザー・ハンドルだけがアクセスできるように、マルチファイル・ストリームの特定のファイルをロックする。
[072] 3.書き込み−この特定のファイルに対するデータを、仮想キャッシュ・メモリにキャッシュ/格納する(例えば、オプティマイザー・ハンドル、ファイル識別子、およびオフセットによる格納)。
[073] 4.読み取り−実施態様に応じて、オプティマイザーは、最適化対象のファイルに対する同時読み取り動作をサポートすることもできる。これは、キャッシュされたファイルのデータの読み取りだけをサポートする場合もあり、またはストレージ自体へのパススルー(passthru)もサポートする場合もある。
[074] 5.ファイル終了−特定のファイルに対するファイル動作を終了する。
[075] 6.ファイル中断−キャッシュ・メモリにおける特定のファイルに対するデータを除去する動作(例えば、ファイルが一時的ファイルであった場合が考えられ、または動作が取り消された場合も考えられる)。
[076] 7.停止−マルチファイル・ストリームの全てのファイルに対する動作を受けてキャッシュした後(例えば、ファイル毎に、ファイル開始、書き込み、およびファイル終了が実行された)。
[077] 以上の動作が一旦受けとられキャッシュされたなら、最適化が開始する。
[078] a.必要なセクターを計算し、メディアの使用セクターを更新する。
[079] b.ファイル毎に(例えば、マルチファイル・ストリームの全てのファイルに対して)可能な限りシーケンシャルな論理ブロック・アドレスの順にデータをチャンク内(例えば、「X」BMのチャンク。ここで「X」は特定の実施態様では1である)に書き込む(例えば、可能なときに、ファイルを保持する最初の利用可能な連続LBA空間を選択することによって)。
[080] c.フォルダ・メタデータを更新する。
[081] d.ファイルを解除する。
[082] e.ファイル・オプティマイザー・ハンドル(1.開始において作成した)を解放する。
[078] a.必要なセクターを計算し、メディアの使用セクターを更新する。
[079] b.ファイル毎に(例えば、マルチファイル・ストリームの全てのファイルに対して)可能な限りシーケンシャルな論理ブロック・アドレスの順にデータをチャンク内(例えば、「X」BMのチャンク。ここで「X」は特定の実施態様では1である)に書き込む(例えば、可能なときに、ファイルを保持する最初の利用可能な連続LBA空間を選択することによって)。
[080] c.フォルダ・メタデータを更新する。
[081] d.ファイルを解除する。
[082] e.ファイル・オプティマイザー・ハンドル(1.開始において作成した)を解放する。
[083] ファイル動作に加えて、本明細書において説明する技法および解決手段を使用して、他のタイプの動作も最適化することができる。例えば、以下の擬似コードは、ファイルおよびデータベース(例えば、歌曲およびアルバム、音楽データベース、写真データベース等)を伴う動作を最適化するために使用することができる。
[084] 1.アルバム毎に
a.歌曲毎に、
i.歌曲をメディアに書き込む(例えば、ファイル最適化動作を使用する)。
b.歌曲をデータベースに追加する。
i.メディア上のトランザクション・ログにデータを書き込む。
ii.表データをメディアに書き込む。
a.歌曲毎に、
i.歌曲をメディアに書き込む(例えば、ファイル最適化動作を使用する)。
b.歌曲をデータベースに追加する。
i.メディア上のトランザクション・ログにデータを書き込む。
ii.表データをメディアに書き込む。
[085] 以上の擬似コードでは、(b)(i)および(b)(ii)動作に対して最適化を実行することができる。例えば、トランザクション・ログの更新および/または表データの更新を集計して、全ての歌曲ファイルを書き込んだ後に、1回のトランザクション・ログ更新および/または1回の表データ更新を作成し実行することができる。
[086] 本明細書において説明する技法を使用して最適化することができる他のシナリオは、セルラ・ネットワーク(またはWi−Fi(登録商標)ネットワークのような他のワイヤレス・ネットワーク)を通じたアルバムの計算デバイスへのダウンロードである。通例、セルラ容量を最大化するために、多数のファイルを同時にダウンロードする。デバイス上で歌曲を受信するアプリケーションまたはサービスが、提案したオプティマイザーを設けるシステム上にある場合、アルバム全体の歌曲データをシーケンス順に、最適化された様態で外部ストレージに書き込むことができる。同じ最適化から、このようなデバイス上で多数のファイル・ストリームを同時に受信する他のサービスおよびアプリケーションも便益を得ることができる。
例8−キャッシュ・メモ
[087] この章では、マルチファイル・ストリームのデータを格納するためにキャッシュ・メモリを管理するために適用することができる技法および解決手段について説明する。この章において説明する技法および解決手段は、本明細書の他のところで説明した技法および解決手段に適用することができる。
[087] この章では、マルチファイル・ストリームのデータを格納するためにキャッシュ・メモリを管理するために適用することができる技法および解決手段について説明する。この章において説明する技法および解決手段は、本明細書の他のところで説明した技法および解決手段に適用することができる。
[088] ある実施態様では、マルチファイル・ストリームに対して最適化される必要がある1組全体のグループ化ファイルを保持するための十分なキャッシュ・メモリがある場合もある。しかしながら、他の実施態様では、限られた量のキャッシュ・メモリしかない場合もある(例えば、ある状況では1組全体のファイルを保持するには十分でない)。利用可能なキャッシュ・メモリの量には関係なく、ファイル・オプティマイザー・コンポーネントは、キャッシュが満杯のときに、現在キャッシュに保持されているデータを書き込むメカニズムを提供することができる。
[089] 例えば、マルチファイル・ストリームにおける第1組のファイルに対するデータを受信し、キャッシュに格納することができる。キャッシュが満杯のとき、キャッシュにおけるこれらのファイルのために、最適化ファイル動作を決定し実行することができる(例えば、セクター更新動作、ファイル書き込み動作、および/またはフォルダ・メタデータ動作)。次いで、マルチファイル・ストリームにおける第2組のファイルに対するデータを受信してキャッシュに格納し、第2組のために最適化ファイル動作を決定し実行する等とすることができる。
例9−API
[090] この章では、本明細書において説明したファイル最適化技法および解決手段に適用することができる種々のAPI実施態様の詳細について説明する。
[090] この章では、本明細書において説明したファイル最適化技法および解決手段に適用することができる種々のAPI実施態様の詳細について説明する。
[091] ある実施態様では、オペレーティング・システムがファイル最適化技法および解決手段をそれ自体で実装することができる。例えば、オペレーティング・システムはファイル・オプティマイザー・コンポーネントを内部に実装することができ、またはオペレーティング・システムは、ファイル・オプティマイザー・コンポーネントの内部または外部APIにアクセスすることができる。この解決手段を使用すると、サービスおよびアプリケーションは、オペレーティング・システムによって提供される標準的なファイル動作にアクセスすることができ、オペレーティング・システム自体が最適化を処理する。
[092] 他の実施態様では、オペレーティング・システム(または、ドライバー・コンポーネント、サービス・コンポーネントのような他のコンポーネント、またはある状況では、アプリケーション・コンポーネント)は、ファイル最適化技法を直接利用するために、APIを露出してサービスおよびアプリケーションを有効にすることができる。以下は、露出することができるこのようなAPIの実施態様例である。
[093] FB_HANDLE FBlast_Start(void)
FileHandle FBlast_BeginFile(FB_Handle, path, AnticipatedFileSize, FileFlags);
Size_t FBlast_Write(FB_Handle, FileHandle, ptrDataBuffer, DataBufferSize)
BOOL FBlast_Read(FB_Handle, FileHandle, ptrDataBuffer, ReadRequestSize)
BOOL FBlast_Seek(FB_Handle, FileHandle, offset, origin);
BOOL FBlast_EndFile(FB_Handle, FileHandle);
BOOL FBlast_AbortFile(FB_Handle, FileHandle);
BOOL FBlast_Stop(FB_Handle)
[094] 更に他の実施態様では、オペレーティング・システム(または、ドライバー・コンポーネントのような他のコンポーネント)が、もっと小さなまたは単純なAPIを露出することができ、オペレーティング・システム(または他のコンポーネント)は動作の一部を自動的に実行する。以下は、露出することができるこのようなもっと小さな/単純なAPIの実施態様例である。
FileHandle FBlast_BeginFile(FB_Handle, path, AnticipatedFileSize, FileFlags);
Size_t FBlast_Write(FB_Handle, FileHandle, ptrDataBuffer, DataBufferSize)
BOOL FBlast_Read(FB_Handle, FileHandle, ptrDataBuffer, ReadRequestSize)
BOOL FBlast_Seek(FB_Handle, FileHandle, offset, origin);
BOOL FBlast_EndFile(FB_Handle, FileHandle);
BOOL FBlast_AbortFile(FB_Handle, FileHandle);
BOOL FBlast_Stop(FB_Handle)
[094] 更に他の実施態様では、オペレーティング・システム(または、ドライバー・コンポーネントのような他のコンポーネント)が、もっと小さなまたは単純なAPIを露出することができ、オペレーティング・システム(または他のコンポーネント)は動作の一部を自動的に実行する。以下は、露出することができるこのようなもっと小さな/単純なAPIの実施態様例である。
[095] a. FB_Handle FBlast_Start(...)
b. FBlast_Stop(FB_Handle)
のような、小さくしたAPI集合の例。
b. FBlast_Stop(FB_Handle)
のような、小さくしたAPI集合の例。
[096] a.ファイル作成、書き込み、シーク、読み取り、閉鎖、
というような、既に存在するOS APIを拡張する例。
[097] 以上のAPI集合の例では、オペレーティング・システム(または他のコンポーネント)は、FB_Handleがプロセスのために開いていない場合、自動的に FBlast_Beginファイルをコールすることができ、および/または CreateFileによって開かれたファイルを、現在のプロセスに対するアクティブなFB_Handleに自動的に関連付けることができる。
というような、既に存在するOS APIを拡張する例。
[097] 以上のAPI集合の例では、オペレーティング・システム(または他のコンポーネント)は、FB_Handleがプロセスのために開いていない場合、自動的に FBlast_Beginファイルをコールすることができ、および/または CreateFileによって開かれたファイルを、現在のプロセスに対するアクティブなFB_Handleに自動的に関連付けることができる。
[098] 更に他の実施態様では、カスタム・ランタイム・ライブラリ(例えば、Cランタイム・ライブラリ)が、ファイル最適化技法を実現し、こうしてAPIをカプセル化することができる。ランタイム・ライブラリを使用するサービスおよびアプリケーションは、改良された性能から便益が得られる(例えば、サービスおよびアプリケーションに全くコード変更を必要とすることなく)。
例10−計算システム
[099] 図6は、以上で説明した改革を実現することができる、適した計算システム600を一般化した例を示す。計算システム600は、使用範囲や機能に関して限定を示唆する意図は全くない。何故なら、本改革は、多様な汎用または特殊目的計算システムにおいても実現できるからである。
[099] 図6は、以上で説明した改革を実現することができる、適した計算システム600を一般化した例を示す。計算システム600は、使用範囲や機能に関して限定を示唆する意図は全くない。何故なら、本改革は、多様な汎用または特殊目的計算システムにおいても実現できるからである。
[0100] 図6を参照すると、計算システム600は、1つ以上の処理ユニット610、615、およびメモリ620、625を含む。図6では、この基本構成630は、破線内に含まれる。処理ユニット610、615は、コンピューター実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット(CPU)、特定用途集積回路(ASIC)におけるプロセッサー、または任意の他のタイプのプロセッサーとすることができる。マルチ処理システムでは、多数の処理ユニットが、処理パワーを増大するために、コンピューター実行可能命令を実行する。例えば、図6は、中央処理ユニット610、更にグラフィクス処理ユニットまたは共処理ユニット615を示す。有形メモリ620、625は、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュ・メモリ等)、または処理ユニット(1つまたは複数)によってアクセス可能な、これら2つの何らかの組み合わせであってもよい。メモリ620、625は、処理ユニット(1つまたは複数)による実行に適しており、本明細書において説明した1つ以上の革新を実現するコンピューター実行可能命令の形態としたソフトウェア680を格納する。
[0101] 計算システムは、追加の機構を有してもよい。例えば、計算システム600は、ストレージ640、1つ以上の入力デバイス650、1つ以上の出力デバイス660、および1つ以上の通信接続670を含む。バス、コントローラー、またはネットワークのような相互接続メカニズム(図示せず)は、計算システム600のコンポーネントを相互接続する。通例、オペレーティング・システム・ソフトウェア(図示せず)は、計算システム600において実行する他のソフトウェアのために動作環境を提供し、計算システム600のコンポーネントの活動を調整する。
[0102] 有形ストレージ640は、リムーバブルまたは非リムーバブルでもよく、磁気ディスク、磁気テープまたはカセット、CD−ROM、DVD、あるいは情報を格納するために使用することができ、更に計算システム600内でアクセスすることができる任意の他の媒体を含む。ストレージ640は、本明細書において説明した1つ以上の革新を実現するソフトウェア680の命令を格納する。
[0103] 入力デバイス(1つまたは複数)650は、キーボード、マウス、ペン、またはトラックボールのようなタッチ入力デバイス、音声入力デバイス、走査デバイス、あるいは入力を計算システム600に供給する他のデバイスであってもよい。ビデオ・エンコーディング用では、入力デバイス(1つまたは複数)650は、カメラ、ビデオ・カード、TVチューナ・カード、あるいはアナログまたはディジタル形態でビデオ入力を受け入れる同様のデバイス、あるいはビデオ・サンプルを計算システム600に読み込むCD−ROMまたはCD−RWであってもよい。出力デバイス(1つまたは複数)660は、ディスプレイ、プリンター、スピーカー、CD−ライター、または計算システム600からの出力を供給する他のデバイスであってもよい。
[0104] 通信接続(1つまたは複数)670は、通信媒体を通じた他の計算エンティへの通信を可能にする。通信媒体は、コンピューター実行可能命令、オーディオまたはビデオ入力または出力、あるいは変調データ信号における他のデータというような情報を伝える。変調データ信号とは、当該信号において情報をエンコードするように、その特性の内1つ以上が設定されたまたは変化させられた信号である。一例として、そして限定ではなく、通信媒体は、電気、光、RF、または他の搬送波を使用することができる。
[0105] 本革新は、計算システムにおけるターゲットの実プロセッサーまたは仮想プロセッサー上で実行されるプログラム・モジュールに含まれるような、コンピューター実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象データ型を実装する。プログラム・モジュールの機能は、種々の実施形態において所望通りに、プログラム・モジュール間で組み合わせてもまたは分割してもよい。プログラム・モジュールのコンピューター実行可能命令は、ローカルまたは分散型計算システム内部で実行することもできる。
[0106] 本明細書では、「システム」および「デバイス」という用語は相互交換可能に使用される。そうでないことを文脈が明らかに示すのではなければ、いずれの用語も、計算システムまたは計算デバイスのタイプに対して何の限定も強制しない。一般に、計算システムまたは計算デバイスは、ローカルまたは分散型であることができ、特殊目的ハードウェアおよび/または汎用ハードウェアと、本明細書において説明した機能を実現するソフトウェアとの任意の組み合わせを含むことができる。
[0107] 紹介のために、詳細な説明では、「決定する」および「使用する」というような用語を使用して、計算システムにおけるコンピューター動作を説明した。これらの用語は、コンピューターによって実行される動作に対する上位抽象化であり、人間によって行われる行為と混同すべきでない。これらの用語に対応する実際のコンピューター動作は、実施態様に応じて様々に変化する。
例11−移動体デバイス
[0108] 図7は、全体的に702で示す、種々の任意のハードウェアおよびソフトウェア・コンポーネントを含む移動体デバイスの一例700を示すシステム図である。移動体デバイス内にあるコンポーネント702はいずれも、他のいずれのコンポーネントとも通信することができるが、図示を容易にするために、全ての接続は示されていない。移動体デバイスは、種々の計算デバイス(例えば、セル・フォン、スマート・フォン、ハンドヘルド・コンピューター、パーソナル・ディジタル・アシスタント(PDA)等)のいずれでも可能であり、セルラまたは衛星ネットワーク、あるいは他のネットワークのような、1つ以上の移動体通信ネットワーク704とのワイヤレス双方向通信を可能にすることができる。
[0108] 図7は、全体的に702で示す、種々の任意のハードウェアおよびソフトウェア・コンポーネントを含む移動体デバイスの一例700を示すシステム図である。移動体デバイス内にあるコンポーネント702はいずれも、他のいずれのコンポーネントとも通信することができるが、図示を容易にするために、全ての接続は示されていない。移動体デバイスは、種々の計算デバイス(例えば、セル・フォン、スマート・フォン、ハンドヘルド・コンピューター、パーソナル・ディジタル・アシスタント(PDA)等)のいずれでも可能であり、セルラまたは衛星ネットワーク、あるいは他のネットワークのような、1つ以上の移動体通信ネットワーク704とのワイヤレス双方向通信を可能にすることができる。
[0109] 図示した移動体デバイス700は、信号コード化、データ処理、入力/出力処理、電力制御、および/または他の機能というようなタスクを実行するために、コントローラーまたはプロセッサー710(例えば、信号プロセッサー、マイクロプロセッサー、ASIC、または他の制御および処理論理回路)を含むことができる。オペレーティング・システム712は、コンポーネント702の割り当ておよび使用、ならびに1つ以上のアプリケーション・プログラム714に対するサポートを制御することができる。アプリケーション・プログラムは、一般的な移動体計算アプリケーション(例えば、電子メール・アプリケーション、カレンダー、連絡先マネージャー、ウェブ・ブラウザー、メッセージング・アプリケーション)、または任意の他の計算アプリケーションを含むことができる。アプリケーション・ストアにアクセスする機能713は、アプリケーション・プログラム714を取得し更新するためにも使用することができる。
[0110] 図示した移動体デバイス700は、メモリ720を含むことができる。メモリ720は、非リムーバブル・メモリ722および/またはリムーバブル・メモリ724を含むことができる。非リムーバブル・メモリ722は、RAM、ROM、フラッシュ・メモリ、ハード・ディスク、または他の周知のメモリ記憶技術を含むことができる。リムーバブル・メモリ724は、フラッシュ・メモリまたはGSM(登録商標)通信システムでは周知であるサブスクライバー識別モジュール(SIM)カード、あるいは「スマート・カード」のような他の周知のメモリ記憶技術を含むことができる。メモリ720は、オペレーティング・システム712およびアプリケーション714を実行するためのデータおよび/またはコードを格納するために使用することができる。データの例は、ウェブ・ページ、テキスト、画像、音響ファイル、ビデオ・データ、あるいは1つ以上の有線またはワイヤレス・ネットワークを介して1つ以上のネットワーク・サーバーまたは他のデバイスにおよび/またはから送られるその他のデータ集合を含むことができる。メモリ720は、国際移動体サブスクライバー識別(IMSI)のようなサブスクライバー識別子、および国際移動体機器識別子(IMEI)のような機器識別子を格納するために使用することができる。このような識別子は、ユーザーおよび機器を識別するために、ネットワーク・サーバーに送信することができる。
[0111] 移動体デバイス700は、タッチスクリーン732、マイクロフォン734、カメラ736、物理キーボード738および/またはトラックボール740のような1つ以上の入力デバイス730、ならびにスピーカー752およびディスプレイ754のような1つ以上の出力デバイス750をサポートすることができる。他の可能な出力デバイス(図示せず)は、圧電型出力デバイスまたは他の触覚型出力デバイスを含むことができる。あるデバイスは、1つよりも多い入力/出力機能を供与することができる。例えば、タッチスクリーン732およびディスプレイ754を組み合わせて1つの入力/出力デバイスにすることができる。
[0112] 入力デバイス730は、自然ユーザー・インターフェース(NUI)を含むことができる。NUIは、ユーザーが「自然な」方法でデバイスと対話処理することを可能とし、マウス、キーボード、リモコン等のような入力デバイスによって強制される人工的な制約から解放することができる、あらゆるインターフェース技術として定義することができる。NUI方法の例は、音声認識(speech recognition)、タッチおよびスタイラス認識、画面上および画面近傍双方におけるジェスチャー認識、エア・ジェスチャー(air gesture)、頭部および視線追尾、音声(voice)および発話(speech)、視覚、タッチ、ジェスチャー、ならびに機械インテリジェンスを拠り所とするものを含む。NUIの他の例は、加速度計/ジャイロスコープを使用する動きジェスチャー(motion gesture)検出、顔認識、3Dディスプレイ、頭部、視線および凝視追尾、没入型拡張現実および仮想現実システムを含み、これらの全ては、電界検知電極(EEGおよび関係する方法)を使用して脳活動を検知する技術だけでなく、一層自然なインターフェースを提供する。このように、具体的な一例では、オペレーティング・システム712またはアプリケーション714は、音声認識ソフトウェアを、ユーザーに音声コマンドによってデバイス700を動作させる音声ユーザー・インターフェースの一部として含むことができる。更に、デバイス700は、ゲーミング・アプリケーションに入力を供給するためにジェスチャーを検出し解釈するというような、ユーザーの空間ジェスチャーによってユーザーの対話処理を可能にする入力デバイスおよびソフトウェアも含むことができる。
[0113] ワイヤレス・モデム760は、アンテナ(図示せず)に結合することができ、プロセッサー710と外部デバイスとの間における双方向通信をサポートすることができる。これは当技術分野では良く理解されている。モデム760は包括的に示され、移動体通信ネットワーク704と通信するためのセルラ・モデム、および/または他の無線系モデム(例えば、Bluetooth(登録商標)764またはWi−Fi762)を含むことができる。ワイヤレス・モデム760は、通例、1つのセルラ・ネットワーク内、セルラ・ネットワーク間、または移動体デバイスと公衆電話交換網(PSTN)との間におけるデータおよび音声通信のためのGSM(登録商標)ネットワークのような、1つ以上のセルラ・ネットワークとの通信のために構成される。
[0114] 更に、移動体デバイスは、少なくとも1つの入力/出力ポート780、電源782、汎地球測位システム(GPS)受信機のような衛星ナビゲーション・システム受信機784、加速度計786、および/または物理コネクター790も含むことができる。物理コネクター790は、USBポート、IEEE1394(Fire Wire)ポート、および/またはRS−232ポートとすることができる。図示したコンポーネント702は、必須ではなく、全てを含むのでもない。何故なら、いずれのコンポーネントでも削除することができ、他のコンポーネントを追加することができるからである。
例12−クラウド・サポート環境
[0115] 図8は、説明した実施形態、技法、および技術を実現することができる、適した実現環境800の一般化した例を示す図である。 環境の一例800では、種々のタイプのサービス(例えば、計算サービス)がクラウド810によって提供される。例えば、クラウド810は、集中して配置されてもまたは分散されてもよい計算デバイスの集合体を含むことができ、クラウド・ベースのサービスを、インターネットのようなネットワークを介して接続された種々のタイプのユーザーおよびデバイスに提供する。実現環境800は、計算タスクを遂行するために異なるやり方で使用することができる。例えば、あるタスク(例えば、ユーザー入力を処理し、ユーザー・インターフェースを提示する)はローカル計算デバイス(例えば、接続デバイス830、840、850)上で実行することができ、一方他のタスク(例えば、今後の処理において使用されるデータの格納)はクラウド810において実行することができる。
[0115] 図8は、説明した実施形態、技法、および技術を実現することができる、適した実現環境800の一般化した例を示す図である。 環境の一例800では、種々のタイプのサービス(例えば、計算サービス)がクラウド810によって提供される。例えば、クラウド810は、集中して配置されてもまたは分散されてもよい計算デバイスの集合体を含むことができ、クラウド・ベースのサービスを、インターネットのようなネットワークを介して接続された種々のタイプのユーザーおよびデバイスに提供する。実現環境800は、計算タスクを遂行するために異なるやり方で使用することができる。例えば、あるタスク(例えば、ユーザー入力を処理し、ユーザー・インターフェースを提示する)はローカル計算デバイス(例えば、接続デバイス830、840、850)上で実行することができ、一方他のタスク(例えば、今後の処理において使用されるデータの格納)はクラウド810において実行することができる。
[0116] 環境の一例800では、クラウド810が、接続デバイス(connected device)830、840、850のためのサービスに、種々の画面能力を提供する。接続デバイス830は、コンピューター画面835(例えば、中間サイズの画面)を有するデバイスを代表する。例えば、接続デバイス830は、デスクトップ・コンピューター、ラップトップ、ノートブック、ネットブック等のような、パーソナル・コンピューターとすることができる。接続デバイス840は、移動体デバイスの画面845(例えば、小型画面)を有するデバイスを代表する。例えば、接続デバイス840は、移動体電話機、スマート・フォン、パーソナル・ディジタル・アシスタント、タブレット・コンピューター等とすることができる。接続デバイス850は、大型画面855を有するデバイスを代表する。例えば、接続デバイス850は、テレビジョン画面(例えば、スマート・テレビジョン)、またはテレビジョンに接続された他のデバイス(例えば、セットトップ・ボックスまたはゲーミング・コンソール)等とすることができる。接続デバイス830、840、および850の1つ以上はタッチスクリーン能力を含むことができる。タッチスクリーンは、異なるやり方で入力を受け入れることができる。例えば、容量式タッチスクリーンは、物体(例えば、指先またはスタイラス)が、表面を横切って走る電流を歪ませるまたは中断するときに、タッチ入力を検出する。他の例として、タッチスクリーンは、光センサーを使用して、この光センサーからのビームが中断されたときに、タッチ入力を検出することができる。画面上の表面との物理的接触は、タッチスクリーンによっては、入力が検出されるためには不要なこともある。環境の一例800では、画面能力がないデバイスも使用することができる。例えば、クラウド810は、ディスプレイがない1つ以上のコンピューター(例えば、サーバー・コンピューター)にサービスを提供することができる。
[0117] サービスは、クラウド810によって、サービス・プロバイダー820を介して、またはオンライン・サービスの他のプロバイダー(図示せず)を介して提供することができる。例えば、クラウド・サービスは、個々の接続デバイス(例えば、接続デバイス830、840、850)の画面サイズ、表示能力、および/またはタッチスクリーン能力に合わせてカスタム化することができる。
[0118] 環境の一例800では、クラウド810は、本明細書において説明した技術および解決手段を、種々の接続デバイス830、840、850に、少なくとも部分的にサービス・プロバイダー820を使用して提供する。例えば、サービス・プロバイダー820は、種々のクラウド・ベース・サービスのために集中解決手段(centralized solution)を提供することができる。サービス・プロバイダー820は、ユーザーおよび/またはデバイスのために(例えば、接続デバイス830、840、850および/またはそれらのそれぞれのユーザーのために)サービス登録を管理することができる。
例13−実施態様
[0119] 開示した方法の一部の動作は、都合のよい提示のために、特定の連続順序で説明したが、この説明のやり方は、以下に明記される特定の文言によって特定の順序付けが要求されない限り、再配列を含むことは理解されてしかるべきである。例えば、順次説明した動作は、場合によっては、配列し直しても、または同時に実行されてもよい。更に、簡略さのために、添付図面は、開示した方法を他の方法と併せて使用することができる種々のやり方を示さない場合もある。
[0119] 開示した方法の一部の動作は、都合のよい提示のために、特定の連続順序で説明したが、この説明のやり方は、以下に明記される特定の文言によって特定の順序付けが要求されない限り、再配列を含むことは理解されてしかるべきである。例えば、順次説明した動作は、場合によっては、配列し直しても、または同時に実行されてもよい。更に、簡略さのために、添付図面は、開示した方法を他の方法と併せて使用することができる種々のやり方を示さない場合もある。
[0120] 開示した方法はいずれも、1つ以上のコンピューター読み取り可能記憶媒体上に格納され、計算デバイス(例えば、スマート・フォンまたは計算ハードウェアを含む他の移動体デバイスを含む、任意の入手可能な計算デバイス)上で実行されるコンピューター実行可能命令またはコンピュータ・プログラム製品として実現することができる。コンピューター読み取り可能記憶媒体は、計算環境内においてアクセスすることができる任意の入手可能な有形媒体である(例えば、DVDまたはCDのような1つ以上の光媒体ディスク、揮発性メモリ・コンポーネント(DRAMまたはSRAMのような)、または不揮発性メモリ・コンポーネント(フラッシュ・メモリまたはハード・ドライブのような))。一例として、そして図6を参照すると、コンピューター読み取り可能記憶媒体は、メモリ620および625、ならびにストレージ640を含む。一例として、そして図7を参照すると、コンピューター読み取り可能記憶媒体は、メモリおよびストレージ720、722、および724を含む。コンピューター読み取り可能記憶媒体という用語は、信号および搬送波のような通信接続(例えば、670、760、762、および764)を含まない。
[0121] 開示した技法を実現するためのコンピューター実行可能命令、および開示した実施形態の実現の間に作成および使用されるデータはいずれも、1つ以上のコンピューター読み取り可能記憶媒体上に格納することができる。コンピューター実行可能命令は、例えば、専用ソフトウェア・アプリケーション、あるいはウェブ・ブラウザーまたは他のソフトウェア・アプリケーション(リモート計算アプリケーション等)によってアクセスまたはダウンロードされる、ソフトウェア・アプリケーションの一部であることができる。このようなソフトウェアは、例えば、1つのローカル・コンピューター(例えば、任意の適した市販のコンピューター)上で、または1つ以上のネットワーク・コンピューターを使用するネットワーク環境において(例えば、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、クライアント−サーバー・ネットワーク(クラウド計算ネットワーク等)、または他のこのようなネットワークを介して)、実行することができる。
[0122] 明確さのために、ソフトウェア・ベースの実施態様からある種の選択された態様だけについて説明した。当技術分野では周知である他の詳細は省略した。例えば、開示した技術は、いずれの特定のコンピューター言語にもプログラムにも限定されないことは理解されてしかるべきである。例えば、開示した技術は、C++、Java(登録商標)、Perl、JavaScript(登録商標)、Adobe Flash、または任意の他の適したプログラミング言語で書かれたソフトウェアによって実現することができる。同様に、開示した技術は、いずれの特定のコンピューターにもハードウェアのタイプにも限定されない。適したコンピューターおよびハードウェアのある種の詳細は、周知であり、本開示において詳細に明記される必要はない。
[0123] 更に、ソフトウェア・ベースの実施形態(例えば、開示した方法の内任意のものをコンピューターに実行させるためのコンピューター実行可能命令を含む)はいずれも、適した通信手段を介して、アップロードすること、ダウンロードすること、または離れてアクセスすることができる。このような適した通信手段は、例えば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ソフトウェア・アプリケーション、ケーブル(光ファイバ・ケーブルを含む)、磁気通信、電磁通信(RF、マイクロ波、および赤外線通信を含む)、電子通信、または他のこのような通信手段を含む。
[0124] 開示した方法、装置、およびシステムは、決して限定するように解釈してはならない。代わりに、本開示は、単独での、そして互いとの種々のコンビネーションおよびサブコンビネーションにおける、種々の開示した実施形態の全ての新規で非自明な特徴および態様を対象とする。開示した方法、装置、およびシステムは、いずれの特定の態様や特徴、その組み合わせにも限定されず、開示した実施形態は、いずれの1つ以上の特定の利点が得られることも、問題が解決されることも必要としない。
[0125] いずれの例からの技術でも、他の例のいずれの1つ以上において説明した技術とでも組み合わせることができる。開示した技術の原理を適用することができる多くの可能な実施形態があることに鑑み、例示した実施形態は、開示した技術の例に過ぎず、開示した技術の範囲を限定するように捕らえてはならないことは、認識されてしかるべきである。逆に、開示した技術の範囲は、以下の請求項によって定められることとする。したがって、これらの請求項の範囲および主旨に該当する全てを、本発明として特許請求する。
Claims (10)
- 最適化ファイル動作のためにファイルをグループ化するために少なくとも部分的に計算デバイスによって実施される方法であって、
前記計算デバイスのコンポーネントによって、複数のファイルに対してファイル動作を実行する要求を受けるステップと、
前記計算デバイスの前記コンポーネントによって、前記複数のファイルの指示を受けるステップと、
前記複数のファイルの各ファイルに対して、
前記計算デバイスの前記コンポーネントによって、前記ファイルに対して実行する1つ以上のファイル動作の指示を受けるステップと、
前記計算デバイスの前記コンポーネントによって、前記複数のファイルに対する最適化ファイル動作を決定するステップと、
前記計算デバイスの外部副ストレージを使用して、前記最適化ファイル動作を実行するステップと、
を含む、方法。 - 請求項1記載の方法において、前記複数のファイルに対してファイル動作を実行する前記要求が、前記複数のファイルに対してデータを書き込む要求を含む、方法。
- 請求項1記載の方法において、前記計算デバイスの前記コンポーネントが、前記計算デバイスのオペレーティング・システムによって設けられるファイル最適化コンポーネントである、方法。
- 請求項1記載の方法において、前記複数のファイルに対して前記最適化ファイル動作を決定する前記ステップが、
複数の(a number of)セクター使用更新を統合するステップを含む、方法。 - 請求項4記載の方法において、前記複数のセクター使用更新を統合するステップが、複数のセクター使用更新から1つのセクター使用更新に、セクター使用更新の前記数を減らすステップを含む、方法。
- 請求項1記載の方法において、前記複数のファイルに対して前記最適化ファイル動作を決定する前記ステップが、
減少した回数のファイル書き込み動作を生成するために、前記複数のファイルに対するファイル書き込み動作を統合するステップを含む、方法。 - 請求項1記載の方法において、前記複数のファイルに対して前記最適化ファイル動作を決定する前記ステップが、
減少した回数のフォルダ・メタデータ更新動作を生成するために、前記複数のファイルに関連付けられたフォルダ・メタデータ更新動作を統合するステップを含む、方法。 - 請求項1記載の方法において、前記計算デバイスの前記外部副ストレージが、セキュア・ディジタル(SD)ストレージ・カード、マルチメディアカード(MMC)ストレージ・カード、およびユニバーサル・シリアル・バス(USB)ストレージ・デバイスの内1つである、方法。
- 計算デバイスであって、
処理ユニットと、
メモリと、
外部副ストレージ・カードと、
を含み、
前記計算デバイスが、最適化ファイル動作のためにファイルをグループ化する動作を実行するように構成され、前記動作が、
複数のファイルに対してファイル動作を実行する要求を受ける動作と、
前記複数のファイルの指示を受ける動作と、
前記複数のファイルの各ファイルに対して、
前記ファイルに対して実行する1つ以上のファイル動作の指示を受ける動作と、
前記1つ以上のファイル動作に関係するデータをキャッシュに格納する動作であって、前記キャッシュが前記計算デバイスの前記メモリ内に格納される、動作と、
前記複数のファイルの各々に対して実行する1つ以上のファイル動作の前記受けた指示に少なくとも部分的に基づいて、前記複数のファイルに対する最適化ファイル動作を決定する動作と、
前記計算デバイスの外部副ストレージ・カードを使用して、前記最適化ファイル動作を実行する動作と、
を含む、計算デバイス。 - 最適化ファイル動作のためにファイルをグループ化する方法を計算デバイスに実行させるコンピューター実行可能命令を格納するコンピューター読み取り可能記憶媒体であって、前記方法が、
複数のファイルに対してファイル動作を実行する要求を受けるステップと、
前記複数のファイルの各ファイルに対して、
前記ファイルの指示を受けるステップと、
前記ファイルに対して実行する1つ以上のファイル動作を受けるステップと、
前記ファイルに対して実行する前記1つ以上のファイル動作に関連付けられたデータをキャッシュするステップと、
前記ファイルに対してファイル動作が完了したという指示を受けるステップと、
前記計算デバイスの外部副ストレージにおいてセクター使用表を更新するために、1回の最適化ファイル動作を決定し実行するステップと、
前記複数のファイルのためにキャッシュした前記データを前記外部副ストレージに書き込むために、最適化ファイル動作を決定し実行するステップと、
前記複数のファイルに関連付けられたフォルダ・メタデータを、前記外部副ストレージにおいて更新するために、最適化ファイル動作を決定し実行するステップと、
を含む、コンピューター読み取り可能記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/794,447 US20140258347A1 (en) | 2013-03-11 | 2013-03-11 | Grouping files for optimized file operations |
US13/794,447 | 2013-03-11 | ||
PCT/US2014/018083 WO2014163852A1 (en) | 2013-03-11 | 2014-02-24 | Grouping files for optimized file operations |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016515258A true JP2016515258A (ja) | 2016-05-26 |
Family
ID=50277353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016500369A Pending JP2016515258A (ja) | 2013-03-11 | 2014-02-24 | 最適化ファイル動作のためのファイル集合化 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20140258347A1 (ja) |
EP (1) | EP2973008A1 (ja) |
JP (1) | JP2016515258A (ja) |
KR (1) | KR20150128714A (ja) |
CN (1) | CN105051731A (ja) |
WO (1) | WO2014163852A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6009720B2 (ja) * | 2013-05-21 | 2016-10-19 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | リソース制約付きデバイスから情報をキャッシュするネットワークシステム、照明システム、及び方法 |
CN107066505A (zh) * | 2017-01-10 | 2017-08-18 | 郑州云海信息技术有限公司 | 一种性能优化的小文件存储访问的系统及方法 |
US10949393B2 (en) | 2018-06-05 | 2021-03-16 | International Business Machines Corporation | Object deletion in distributed computing environments |
CN111427854B (zh) * | 2020-03-23 | 2024-01-30 | 深圳震有科技股份有限公司 | 支持存储批量数据的栈结构实现方法及装置、设备、介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06309204A (ja) * | 1993-04-20 | 1994-11-04 | Matsushita Electric Ind Co Ltd | データ処理方法及びその装置 |
US5870757A (en) * | 1995-09-11 | 1999-02-09 | Sun Microsystems, Inc. | Single transaction technique for a journaling file system of a computer operating system |
US6044387A (en) * | 1997-09-10 | 2000-03-28 | Microsoft Corporation | Single command editing of multiple files |
US6006234A (en) * | 1997-10-31 | 1999-12-21 | Oracle Corporation | Logical groupings within a database |
US6856993B1 (en) * | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
US20060026376A1 (en) * | 2002-10-16 | 2006-02-02 | Microsoft Corporation | Retrieving graphics from slow retrieval storage devices |
US20060080703A1 (en) * | 2004-03-22 | 2006-04-13 | Compton Charles L | Content storage method and system |
US7412560B2 (en) * | 2004-12-16 | 2008-08-12 | Sandisk Corporation | Non-volatile memory and method with multi-stream updating |
US20070143378A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with adaptive file handling in a directly mapped file storage system |
US7743039B2 (en) * | 2006-12-11 | 2010-06-22 | Simdesk Technologies, Inc. | File operations with multiple level file locking techniques |
US7818493B2 (en) * | 2007-09-07 | 2010-10-19 | Sandisk Corporation | Adaptive block list management |
TWI368223B (en) * | 2007-12-07 | 2012-07-11 | Phison Electronics Corp | Flash memory data writing method and controller using the same |
US8312217B2 (en) * | 2008-12-30 | 2012-11-13 | Rasilient Systems, Inc. | Methods and systems for storing data blocks of multi-streams and multi-user applications |
US8392479B1 (en) * | 2009-09-14 | 2013-03-05 | Symantec Corporation | Method and apparatus for optimizing storage space allocation for computer data |
US8463846B2 (en) * | 2010-05-06 | 2013-06-11 | Cdnetworks Co., Ltd. | File bundling for cache servers of content delivery networks |
US20140040237A1 (en) * | 2012-07-31 | 2014-02-06 | Qiming Chen | Database retrieval in elastic streaming analytics platform |
-
2013
- 2013-03-11 US US13/794,447 patent/US20140258347A1/en not_active Abandoned
-
2014
- 2014-02-24 CN CN201480014571.9A patent/CN105051731A/zh active Pending
- 2014-02-24 JP JP2016500369A patent/JP2016515258A/ja active Pending
- 2014-02-24 EP EP14710139.8A patent/EP2973008A1/en not_active Withdrawn
- 2014-02-24 KR KR1020157024877A patent/KR20150128714A/ko not_active Application Discontinuation
- 2014-02-24 WO PCT/US2014/018083 patent/WO2014163852A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2014163852A1 (en) | 2014-10-09 |
EP2973008A1 (en) | 2016-01-20 |
US20140258347A1 (en) | 2014-09-11 |
KR20150128714A (ko) | 2015-11-18 |
CN105051731A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5955870B2 (ja) | 仮想ディスクの最適圧縮のための方法、コンピュータ可読記憶媒体及びシステム | |
CN113287286B (zh) | 通过rdma进行分布式存储节点中的输入/输出处理 | |
US9122692B1 (en) | Systems and methods for reducing file-system fragmentation when restoring block-level backups utilizing an identification module, an optimization module, and a restore module | |
KR20200027413A (ko) | 데이터 저장 방법, 장치 및 시스템 | |
US9182912B2 (en) | Method to allow storage cache acceleration when the slow tier is on independent controller | |
US20140229657A1 (en) | Readdressing memory for non-volatile storage devices | |
JP5827403B2 (ja) | メモリタイプ間でデータを移動させるための技術 | |
WO2015013348A1 (en) | Virtual synchronization with on-demand data delivery | |
US9104893B2 (en) | Rule based access for removable storage | |
CN111881135A (zh) | 一种数据聚合方法、装置、设备及计算机可读存储介质 | |
JP2016515258A (ja) | 最適化ファイル動作のためのファイル集合化 | |
CN110352410B (zh) | 跟踪索引节点的访问模式以及预提取索引节点 | |
CN117355817A (zh) | 区片段驱动器管理 | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
CN113688139B (zh) | 对象存储方法、网关、设备及介质 | |
CN113127438B (zh) | 用于存储数据的方法、装置、服务器和介质 | |
WO2021022274A1 (en) | Deduplication based on consolidation of data fingerprints | |
US11455114B1 (en) | Consolidation and migration of cloud data | |
US10509578B2 (en) | Logical address space for storage resource pools | |
CN109478181A (zh) | 用于使得能够修改文件系统卷内的多个数据对象的系统和方法 | |
US11726885B2 (en) | Efficient method and system of intelligent deploying file level restore agent in multicloud | |
CN106227473A (zh) | 一种将内存作为磁盘读写的实现方法和装置 | |
US20110106861A1 (en) | Interface Techniques Providing Contiguous Storage For Files | |
TWI707235B (zh) | 儲存裝置管理系統以及儲存裝置管理方法 | |
US11989159B2 (en) | Hybrid snapshot of a global namespace |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170224 |