(57)【要約】【課題】  転送されるデータがコンピューティングデバイスのファイルシステムを経由せず、したがって記憶媒体との間で直接コピーされる方法を提供する。【解決手段】  アプリケーションが、コンピューティングデバイスのファイルシステムにアプリケーションコマンドを発行し、アプリケーションコマンドは、移動元におけるデータの場所を含む。ファイルシステムは、データのために媒体の空間を割り当て、データを格納するために使用される媒体の各部分の識別を含むリストを作成する。次いで、ファイルシステムは媒体のブロックドライバにファイルシステムコマンドを発行し、このファイルシステムコマンドは、移動元におけるデータの場所と作成されたリストを含む。ブロックドライバは移動元に接触し、その場所にあるデータを要求し、作成されたリストに含まれる媒体部分にデータを書き込む。【選択図】  図２
2005276211.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上のアプリケーションが移動元から前記コンピューティングデバイスに関連付けられた記憶媒体にデータを書き込む方法であって、
前記アプリケーションが、前記移動元の識別と前記移動元における前記データの場所とを含むアプリケーションコマンドを、前記コンピューティングデバイスのファイルシステムに発行するステップと、
前記ファイルシステムが、前記ファイルシステムによって維持される空間情報に基づいて、前記データのための前記媒体の空間を割り当て、前記データを格納するために使用される前記媒体の各部分の識別を含むリストを作成するステップと、
前記ファイルシステムが、前記移動元の前記識別とその移動元における前記データの前記場所とを含み、前記作成されたリストも含むファイルシステムコマンドを、前記媒体のブロックドライバに発行するステップと、
前記ブロックドライバが、前記識別にある前記移動元に接触し、当該データの場所にある前記データを要求し、前記移動元の前記場所のデータを前記作成されたリストに含まれる媒体部分に書き込むステップと、
を備えることを特徴とする方法。
【請求項２】
前記アプリケーションは、前記媒体上に前記ファイルを作成するコマンドを前記ファイルシステムに発行するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーションが前記データのサイズを前記ファイルシステムに通知するステップをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記ファイルシステムが、前記データすべてに利用することができる前記媒体のセクタを決定し、前記データを格納するために使用される前記媒体の各セクタの識別を含むセクタリストを作成するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記ブロックドライバが前記移動元から前記媒体に前記データを書き込み、前記ファイルシステムを迂回するステップを備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記ブロックドライバが前記移動元から前記媒体への前記データすべての書き込みを完了すると、前記移動元が、前記書き込みが完了したことを前記アプリケーションに通知し、前記アプリケーションが、前記書き込みが完了したことを前記ファイルシステムに通知し、前記ファイルシステムが、前記書き込みが完了したことを前記ブロックドライバに通知するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
コンピューティングデバイス上のアプリケーションが、前記コンピューティングデバイスに関連付けられた記憶媒体から移動先にデータを読み出す方法であって、
前記アプリケーションが、前記移動先の識別と前記移動先における前記データの場所とを含むアプリケーションコマンドを、前記コンピューティングデバイスのファイルシステムに発行するステップと、
前記ファイルシステムが、前記ファイルシステムによって維持される空間情報に基づいて、前記データを有する前記媒体の空間を特定し、前記データを格納している前記媒体の各部分の識別を含むリストを作成するステップと、
前記ファイルシステムが、前記移動先の識別とその移動先における前記データの場所とを含み、前記作成されたリストも含むファイルシステムコマンドを、前記媒体のブロックドライバに発行するステップと、
前記ブロックドライバが、前記識別にある前記移動先に接触し、前記作成されたリストに含まれる前記媒体部分から前記データを読み出すと、前記データを前記移動先の当該データの場所に送信するステップと、
を備えることを特徴とする方法。
【請求項８】
前記ファイルシステムが、前記読み出されるデータのサイズを前記ブロックドライバに通知するステップをさらに備えることを特徴とする請求項７に記載の方法。
【請求項９】
前記ファイルシステムが、前記データすべてを有する前記媒体のセクタを決定し、前記データを読み出すために使用される前記媒体の各セクタの識別を含むセクタリストを作成するステップをさらに備えることを特徴とする請求項７に記載の方法。
【請求項１０】
前記ブロックドライバが前記媒体から前記移動先に前記データを読み出し、前記ファイルシステムを迂回するステップを備えることを特徴とする請求項７に記載の方法。
【請求項１１】
前記ブロックドライバが前記媒体から前記移動先への前記データすべての読み出しを完了すると、前記移動先が、前記読み出しが完了したことを前記アプリケーションに通知し、前記アプリケーションが、前記読み出しが完了したことを前記ファイルシステムに通知し、前記ファイルシステムが、前記読み出しが完了したことを前記ブロックドライバに通知するステップをさらに備えることを特徴とする請求項７に記載の方法。
【請求項１２】
コンピューティングデバイス上のアプリケーションが移動元から前記コンピューティングデバイスに関連付けられた記憶媒体にデータを書き込む方法を実施するコンピュータ実行可能命令が格納されたコンピュータ読取り可能媒体であって、前記方法は、
前記アプリケーションが、前記移動元の識別と前記移動元における前記データの場所とを含むアプリケーションコマンドを、前記コンピューティングデバイスのファイルシステムに発行するステップと、
前記ファイルシステムが、前記ファイルシステムによって維持される空間情報に基づいて、前記データのための前記媒体の空間を割り当て、前記データを格納するために使用される前記媒体の各部分の識別を含むリストを作成するステップと、
前記ファイルシステムが、前記移動元の前記識別とその移動元における前記データの前記場所とを含み、前記作成されたリストも含むファイルシステムコマンドを、前記媒体のブロックドライバに発行するステップと、
前記ブロックドライバが、前記識別にある前記移動元に接触し、当該データの場所にある前記データを要求し、前記移動元の前記場所にあるデータを前記作成されたリストに含まれる媒体部分に書き込むステップと、
を備えることを特徴とするコンピュータ読取り可能媒体。
【請求項１３】
前記方法は、前記アプリケーションが、前記媒体上に前記ファイルを作成するコマンドを前記ファイルシステムに発行するステップをさらに備えることを特徴とする請求項１２に記載の媒体。
【請求項１４】
前記方法は、前記アプリケーションが前記データのサイズを前記ファイルシステムに通知するステップをさらに備えることを特徴とする請求項１３に記載の媒体。
【請求項１５】
前記方法は、前記ファイルシステムが、前記データすべてに利用することができる前記媒体のセクタを決定し、前記データを格納するために使用される前記媒体の各セクタの識別を含むセクタリストを作成するステップを備えることを特徴とする請求項１２に記載の媒体。
【請求項１６】
前記方法は、前記ブロックドライバが前記移動元から前記媒体に前記データを書き込み、前記ファイルシステムを迂回するステップを備えることを特徴とする請求項１２に記載の媒体。
【請求項１７】
前記方法は、前記ブロックドライバが前記移動元から前記媒体への前記データすべての書き込みを完了すると、前記移動元が、前記書き込みが完了したことを前記アプリケーションに通知し、前記アプリケーションが、前記書き込みが完了したことを前記ファイルシステムに通知し、前記ファイルシステムが、前記書き込みが完了したことを前記ブロックドライバに通知するステップをさらに備えることを特徴とする請求項１２に記載の媒体。
【請求項１８】
コンピューティングデバイス上のアプリケーションが、前記コンピューティングデバイスに関連付けられた記憶媒体から移動先にデータを読み出す方法を実施するコンピュータ実行可能命令が格納されたコンピュータ読取り可能媒体であって、前記方法は、
前記アプリケーションが、前記移動先の識別と前記移動先における前記データの場所とを含むアプリケーションコマンドを、前記コンピューティングデバイスのファイルシステムに発行するステップと、
前記ファイルシステムが、前記ファイルシステムによって維持される空間情報に基づいて、前記データを有する前記媒体の空間を特定し、前記データを格納している前記媒体の各部分の識別を含むリストを作成するステップと、
前記ファイルシステムが、前記移動先の識別とその移動先における前記データの場所とを含み、前記作成されたリストも含むファイルシステムコマンドを、前記媒体のブロックドライバに発行するステップと、
前記ブロックドライバが、前記識別にある前記移動先に接触し、前記作成されたリストに含まれる前記媒体部分から前記データを読み出すと、前記データを前記移動先の当該データの場所に送るステップと、
を備えることを特徴とする媒体。
【請求項１９】
前記方法は、前記ファイルシステムが、前記読み出されるデータのサイズを前記ブロックドライバに通知するステップをさらに備えることを特徴とする請求項１８に記載の媒体。
【請求項２０】
前記方法は、前記ファイルシステムが、前記データすべてを有する前記媒体のセクタを決定し、前記データを読み出すために使用される前記媒体の各セクタの識別を含むセクタリストを作成するステップを備えることを特徴とする請求項１８に記載の媒体。
【請求項２１】
前記方法は、前記ブロックドライバが前記媒体から前記移動先に前記データを読み出し、前記ファイルシステムを迂回するステップを備えることを特徴とする請求項１８に記載の媒体。
【請求項２２】
前記方法は、前記ブロックドライバが前記媒体から前記移動先への前記データすべての読み出しを完了すると、前記移動先が、前記読み出しが完了したことを前記アプリケーションに通知し、前記アプリケーションが、前記読み出しが完了したことを前記ファイルシステムに通知し、前記ファイルシステムが、前記読み出しが完了したことを前記ブロックドライバに通知するステップをさらに備えることを特徴とする請求項１８に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングデバイスに関連付けられた記憶媒体との間でデータを転送する方法に関する。より詳細には、本発明は、転送されるデータがコンピューティングデバイスのファイルシステムを経由せず、したがって記憶媒体との間で直接コピーされる方法に関する。これにより、例えば、コンピューティングデバイスのハードドライブと外部の記憶媒体、ネットワーク接続などとの間、コンピューティングデバイスのＲＡＭとハードドライブとの間等においてデータを転送する際に、より良好なパフォーマンスが達成される。
【背景技術】
【０００２】
従来技術では、場合に応じて、ファイルシステムは、記憶媒体から転送するデータを受け取り、データを移動先（ｄｅｓｔｉｎａｔｉｏｎ）に転送するか、あるいは、移動元（ｓｏｕｒｃｅ）から転送されるデータを受け取り、そのデータを記憶媒体に転送する。しかし、ファイルシステムがこのように仲介役として働くと、特に大量のデータを転送する場合は、データが複数の部分に分けて転送される。各部分にファイルシステムへの別個の転送およびファイルシステムからの別個の転送と、それに伴う計算処理上のオーバーヘッドが必要となるので、特に多くの処理を必要とする可能性がある。
【０００３】
詳細には、従来技術では、どのような移動元からコンピューティングデバイスのハードドライブへのデータの転送も、一般には、例えば次のステップに従って行われる。事前に、コンピューティングデバイス上のアプリケーションは、コンピューティングデバイスのファイルシステムに対して、データに基づいてハードドライブにファイルを作成するように指示する。この際、アプリケーションは、必ずしもデータの移動元またはデータのサイズをファイルシステムに通知する必要はないことに留意されたい。その後、アプリケーションは、移動元からデータの最初の部分を取得し、その部分を、そのデータの最初の部分をハードドライブに書き込むのを指示するファイルシステムへのコマンドとともに、恐らくは転送されるバッファの一部として、ファイルシステムに転送する。通常、ハードドライブは、ファイルシステムとのインタフェースをとるブロックドライバなどを含むか、ブロックドライバが関連付けられており、したがって、ファイルシステムはブロックドライバを介してハードドライブと通信する。また、通常ファイルシステムは、ハードドライブの各セクタについてのセクタ情報を保持し、この情報には、セクタが使用されているかどうかと、使用されている場合はそのセクタを使用しているファイルについての情報が含まれる。
【０００４】
したがって、ハードドライブに最初のデータ部分を書き込むには、ファイルシステムは、そのようなセクタ情報を参照して、最初のデータ部分に利用できるセクタを決定し、最初のデータ部分を格納するのに使用されるハードドライブのセクタの識別を含むセクタリストを作成する。理解されるように、ファイルシステムは、最初のデータ部分のサイズと各セクタの容量に少なくとも部分的に基づいて、一般に知られる方法によってセクタリストを作成する。いずれにせよ、ファイルシステムは、データの最初の部分とそのデータ部分のために作成されたセクタリストをハードドライブのブロックドライバに送信し、ブロックドライバは、一般に知られる方法で、セクタリストに従ってハードドライブにデータの最初の部分を格納する。
【０００５】
その後、アプリケーションはデータの移動元からデータの２番目の部分を取得し、上記と同様の方式で、そのデータの２番目の部分をハードドライブに書き込むコマンドとともにファイルシステムに転送する。理解されるように、このプロセスは、すべてのデータが移動元からハードドライブに転送されるまで、３番目、４番目、５番目のデータ部分に伴って必要に応じて継続する。このプロセスはハードドライブから移動先にデータを読み出す際も同様であるが、言うまでもなく、データはファイルシステムを経由して反対方向に移動することに留意されたい。
【０００６】
要約すると、従来技術においては、ハードドライブなどに書き込まれる各データ部分は、まずデータの移動元からファイルシステムに転送され、次いでファイルシステムからハードドライブに転送され、同様に、ハードドライブなどから読み出される各データ部分はまずハードドライブからファイルシステムに転送され、次いでファイルシステムからその移動先に転送される。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特にデータ量が多く、仲介役としてのファイルシステムをデータすべてが経由しなければならない場合には、このようなプロセスは煩雑で非効率的である。
【０００８】
したがって、データが初めにコンピューティングシステムのファイルシステムを経由せずに、移動元などからコンピューティングデバイスに関連付けられたハードドライブなどの記憶媒体に、直接転送される方法が必要とされる。同様に、データが初めにコンピューティングデバイスのファイルシステムを経由せずに、そのような記憶媒体から直接移動先などに転送される方法も必要とされる。
【課題を解決するための手段】
【０００９】
上述の必要性は、コンピューティングデバイス上のアプリケーションが、移動元からコンピューティングデバイスに関連付けられた記憶媒体にデータを書き込む方法が提供される本発明によって、少なくとも部分的に満たされる。この方法では、アプリケーションは、コンピューティングシステムのファイルシステムにアプリケーションコマンドを発行し、このアプリケーションコマンドは、移動元の識別と、その移動元におけるデータの場所を含む。ファイルシステムは、ファイルシステムによって維持される空間情報に基づいて、データのために記憶媒体の空間を割り当て、データを格納するために使用される媒体の各部分の識別を含むリストを作成する。ファイルシステムは次いで、媒体のブロックドライバにファイルシステムコマンドを発行し、このファイルシステムコマンドは、移動元の識別と、その移動元におけるデータの場所を含み、また、作成されたリストも含む。ブロックドライバは、その識別にある移動元に接触し、その場所にあるデータを移動元から要求し、移動元の当該場所にあるデータを、作成されたリストの中に含まれる媒体の部分に書き込む。コンピューティングデバイス上のアプリケーションが記憶媒体から移動先に読み出すための対応する方法も提供される。
【００１０】
前述の要約と、以下の本発明の実施形態の詳細な説明は、添付の図面と併せて読むことによりよく理解されるだろう。本発明を説明する目的で、図面には現在好ましい実施形態を示す。ただし、理解されるように、本発明は図示する通りの構成と手段に限定されない。
【発明を実施するための最良の形態】
【００１１】
コンピュータ環境
図１および以下の説明は、本発明および／またはその一部を実施することが可能な適切なコンピューティング環境の簡単で一般的な説明を提供する。これは必須ではないが、本発明は、クライアントワークステーションやサーバなどのコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令との一般的関連において説明する。一般に、プログラムモジュールには、特定のタスクを行うか特定の抽象データ型を実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサを利用した、あるいはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で、本発明および／またはその一部が実施できることは理解されよう。本発明は、通信ネットワークで結ばれた遠隔の処理デバイスによってタスクが行われる分散コンピューティング環境で実施してもよい。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に置くことができる。
【００１２】
図１に示すように、例示的な汎用コンピューティングシステムは、従来のパーソナルコンピュータ１２０などを含み、コンピュータ１２０は、処理装置１２１、システムメモリ１２２、および、システムメモリを含む各種のシステム構成要素を処理装置１２１に結合するシステムバス１２３を含む。システムバス１２３は、各種のバスアーキテクチャを使用した、メモリバスまたはメモリコントローラ、ペリフェラルバス、ローカルバスを含む数種のバス構造のいずれでもよい。システムメモリは、読み取り専用メモリ（ＲＯＭ）１２４とランダムアクセスメモリ（ＲＡＭ）１２５を含む。起動時などにパーソナルコンピュータ１２０内の要素間の情報転送を助ける基本ルーチンを含んだ基本入出力システム１２６（ＢＩＯＳ）は、ＲＯＭ１２４に記憶される。
【００１３】
パーソナルコンピュータ１２０はさらに、ハードディスク（図示せず）の読み書きを行うハードディスクドライブ１２７、取り外し可能磁気ディスク１２９の読み書きを行う磁気ディスクドライブ１２８、および、ＣＤ−ＲＯＭなどの取り外し可能光ディスク１３１または他の光学媒体の読み書きを行う光ディスクドライブ１３０を含むことができる。ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０は、それぞれハードディスクドライブインタフェース１３２、磁気ディスクドライブインタフェース１３３、および光学ドライブインタフェース１３４によりシステムバス１２３に接続される。これらのドライブとそれに関連付けられたコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性の記憶をパーソナルコンピュータ１２０に提供する。
【００１４】
ここに記載する例示的環境では、ハードディスク、取り外し可能磁気ディスク１２９、取り外し可能光ディスク１３１を用いるが、コンピュータによるアクセスが可能なデータを記憶することができる他のタイプのコンピュータ可読媒体もこの例示的動作環境で使用できることは理解されよう。そのような他のタイプの媒体には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）などがある。
【００１５】
ハードディスク、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４、またはＲＡＭ１２５上には、いくつかのプログラムモジュールを記憶することができ、これにはオペレーティングシステム１３５、１つまたは複数のアプリケーションプログラム１３６、他のプログラムモジュール１３７、およびプログラムデータ１３８が含まれる。ユーザは、キーボード１４０およびポインティングデバイス１４２などの入力装置を通じて、パーソナルコンピュータ１２０にコマンドと情報を入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどがある。これらおよび他の入力装置は、多くの場合、システムバスに結合されたシリアルポートインタフェース１４６を通じて処理装置１２１に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースで接続してもよい。モニタ１４７または他のタイプの表示装置も、ビデオアダプタ１４８などのインタフェースを介してシステムバス１２３に接続される。モニタ１４７以外に、パーソナルコンピュータは通例、スピーカやプリンタなどの他の周辺出力装置（図示せず）を含む。図１の例示的システムは、ホストアダプタ１５５、ＳＣＳＩ（スモールコンピュータシステムインタフェース）バス１５６、およびＳＣＳＩバス１５６に接続された外部記憶装置１６２も含む。
【００１６】
パーソナルコンピュータ１２０は、リモートコンピュータ１４９などの１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ１４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、あるいは他の一般的なネットワークノード等であり、図１にはメモリ記憶装置１５０のみを示すが、通例は、パーソナルコンピュータ１２０との関連で上述した要素の多くまたはすべてを含む。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１５１とワイドエリアネットワーク（ＷＡＮ）１５２を含む。このようなネットワーキング環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。
【００１７】
ＬＡＮネットワーキング環境で使用される場合、パーソナルコンピュータ１２０は、ネットワークインタフェースあるいはアダプタ１５３を通じてＬＡＮ１５１に接続される。ＷＡＮネットワーキング環境で使用される場合、パーソナルコンピュータ１２０は、通例、インターネットなどのワイドエリアネットワーク１５２を通じて通信を確立するためのモデム１５４または他の手段を含む。モデム１５４は、内蔵型でも外付け型でもよく、シリアルポートインタフェース１４６を介してシステムバス１２３に接続される。ネットワーク環境では、パーソナルコンピュータ１２０との関連で図示するプログラムモジュールまたはその一部は、遠隔のメモリ記憶装置に記憶することができる。図のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用してよいことは理解されよう。
【００１８】
汎用的なパッケージングツールおよびコンポーネント
次いで図２を参照すると、本発明の一実施形態では、データはファイルシステム１２を経由せずに、その移動元２０から、コンピューティングデバイス１４のファイルシステム１２によって管理されるドライブなどの１つまたは複数の記憶媒体１０にコピーされるか、あるいは、コンピューティングデバイス１４のファイルシステム１２によって管理される１つまたは複数のドライブ１０のいずれかから、移動先２０にコピーされる。本発明では、転送されるデータの移動元２０または移動先２０を、アプリケーション１６が必要に応じてデータに関連する他の情報とともにファイルシステム１２に通知することによってデータの転送を実施し、ファイルシステム１２は、データによって占有されている、または占有されることになるドライブ１０のすべてのセクタのリストを作成する。その後、ファイルシステム１２は、移動元または移動先２０へのアクセス方法についての情報とともに、作成されたセクタリストをドライブ１０のブロックドライバ１８に送信し、ブロックドライバ１８は、移動元または移動先２０と直接通信して、移動元からデータを取得するか、移動先にデータを転送する。
【００１９】
コンピューティングデバイス１４は、本発明の主旨および範囲から逸脱することなく、ファイルシステム１２を備える任意の適切なコンピューティングデバイス１４であれば良いことに留意されたい。コンピューティングデバイス１４は、例えば、パーソナルコンピュータ等、携帯型プレーヤ、携帯情報端末、サーバコンピュータ等である。必ずしもこれに限定はされないが、通常コンピューティングデバイス１４上では、データの転送を起動するアプリケーション１６が動作する。
【００２０】
データの移動元または移動先２０もまた、本発明の主旨および範囲から逸脱することなく、任意の適切な移動元または移動先２０であれば良いことにも留意されたい。例えば、そのような移動元／移動先２０は、コンピューティングデバイス１４の別のドライブ１０、ＲＡＭ、フラッシュメモリなど、あるいは、コンピューティングデバイス１４の外部にあるが、コンピューティングデバイス１４からのアクセスが可能な何らかの記憶媒体１０である。
【００２１】
同様に本発明の主旨および範囲から逸脱せずに、コンピューティングデバイス１４に関連付けられたドライブ１０は、実ドライブおよび仮想ドライブを含む、コンピューティングデバイス１４のファイルシステム１２からアクセス可能な任意のドライブ１０で良い。無論、そのようなドライブ１０には、移動元／移動先２０と直接通信して移動元からデータを取得し、または移動先にデータを転送することができるブロックドライバ１８が必要である。例えば、そのようなドライブ１０は、ハードドライブまたはハードドライブのパーティションされた一部分であっても、ＲＡＭまたはフラッシュメモリ中で動作する仮想ドライブであっても、ファイルシステムからアクセス可能なリモートドライブであっても、ファイルサーバ等であってもよい。理解されるように、このようなドライブ１０は、特に、コンピューティングデバイス１４の内部にあっても外部にあっても、ローカルであってもリモートであっても、コンピューティングデバイス１４の直接の制御下にあってもなくてもよい。
【００２２】
次いで図３を参照すると、本発明の一実施形態では、コンピューティングデバイス１４に関連付けられたアプリケーション１６などが、コンピューティングデバイス１４のファイルシステム１２の直接の制御下で、移動元２０からコンピューティングデバイス１４に関連付けられたドライブ１０にデータを書き込むことを要求する。前提として、アプリケーション１６がデータのサイズの知識を有し、データは、新しく作成されたファイルまたは変更されたファイルとしてドライブ１０に存在することになる。したがって、アプリケーション１６は、必要な場合はファイルシステム１２にコマンドを発行してファイルを作成し（ステップ３０１）、データのサイズに基づいてファイルシステム１２にファイルのサイズを通知する（ステップ３０３）。
【００２３】
本発明で用いられるファイルシステム１２は、データの転送においては仲介役にはならないものの、ファイルシステム１２は、ドライブ１０を管理している、したがってドライブ１０にスペースを割り当てるために用いられる。したがって、本発明の一実施形態では、アプリケーション１６は、ファイルシステム１２にコマンドを発行して書き込みのプロセスを開始し（ステップ３０５）、この開始コマンドは、移動元２０の識別とその移動元におけるデータの場所を含む。それに応答して、ファイルシステム１２は、ファイルシステム１２によって維持されるセクタ情報に基づき、実際にデータのための空間を割り当てる。詳細には、ファイルシステム１２は、ステップ３０３で求められたデータのサイズに基づいてデータ全体に利用できるセクタを決定し、データ全体を格納するために使用されるドライブ１０のセクタの識別を含むセクタリストを作成する（ステップ３０７）。
【００２４】
その後、ファイルシステムは、ドライブ１０のブロックドライバ１８にコマンドを発行して書き込みプロセスを開始し（ステップ３０９）、開始コマンドは、移動元２０の識別と移動元２０におけるデータの場所を含み、また、作成されたセクタリストも含む。ただし、ファイルシステム１２は、実際にデータをブロックドライバ１８に転送することはないことに留意されたい。重要な点として、本発明の一実施形態では、ブロックドライバ１８は、ファイルシステム１２からのセクタリストと識別および場所の情報を用いて、適宜識別される移動元２０に接触し、移動元２０の当該データの場所にあるデータ全体を要求し、受け取り、そのデータを、セクタリストで識別されるドライブ１０に転送することにより、ドライブ１０へのデータの書き込みを行う（ステップ３１１）。ブロックドライバ１８を介したこのような移動元２０からドライブ１０へのデータの書き込みは、本発明の主旨および範囲から逸脱せずに、任意の適切な方式で行うことができる。理解されるように、このようなデータの書き込みは、当業者には周知であるか、明らかであると思われるため、ここでは詳細に述べない。このような書き込みは、例えば、連続したデータのストリームとして、またはそのようなデータの部分の連続として達成することができる。後者の場合は、データは複数の部分として受け取られるが、初めにファイルシステム１２を経由することなく移動元２０から直接受信されることは理解されよう。いずれにせよ、ブロックドライバ１８は、ファイルシステム１２を仲介役とせずに、直接移動元２０から受信された、書き込まれるデータを、セクタリストに従って周知の方式でドライブ１０に格納する。
【００２５】
この時点で、データは実際に移動元２０からドライブに書き込まれ、これ以上何も行わなくともよい。しかし、管理上の方法として、移動元２０が、書き込みプロセスが完了したことをアプリケーション１６に通知し（ステップ３１３）、アプリケーション１６も同様に書き込みプロセスが完了した旨のコマンドをファイルシステム１２に発行し（ステップ３１５）、ファイルシステム１２も同様に、書き込みプロセスが完了した旨のコマンドをドライブ１０のブロックドライバ１８に発行してよい（ステップ３１７）。したがって、アプリケーション１６、ファイルシステム１２、およびブロックドライバ１８のそれぞれが、管理上書き込みプロセスを終了するか、かつ／または必要とされる完了機能を行うことができる。
【００２６】
データの書き込みと同様に、本発明の一実施形態では、アプリケーション１６は、コンピューティングデバイス１４のファイルシステム１２の制御下で、コンピューティングデバイス１４のドライブ１０から移動先２０にデータを読み出すことを要求する場合がある。ただし、この場合、データはすでにファイルなどとしてドライブ１０に存在する。そのため、アプリケーション１６は、ファイルを開くコマンドをファイルシステム１２に発行する。しかし、ここで、ファイルシステム１２は、ファイルあるいはデータのサイズを自身で判定することができ、したがってアプリケーション１６によってサイズを通知される必要がないことに留意されたい。
【００２７】
先と同様に、ファイルシステム１２はデータの転送時に仲介役とはならないものの、ファイルシステム１２は、ドライブ１０を管理し、したがってドライブにあるファイル中のデータを見つけるために用いられなければならない。したがって、次いで図４を参照すると、アプリケーション１６は、ファイルシステム１２にコマンドを発行して読み取りプロセスを開始し（ステップ４０１）、開始コマンドは、移動先２０の識別と必要な場合はその移動先２０におけるデータの場所を含み、ファイルシステム１２は、ファイルシステム１２によって維持されるセクタ情報に基づいて、そのデータを含むドライブのセクタを見つける。詳細には、ファイルシステム１２は、ドライブ１０に記憶されたデータ全体のセクタを決定し、データ全体を取得するために使用されるドライブ１０のセクタの識別を含むセクタリストを作成する（ステップ４０３）。
【００２８】
その後、ファイルシステム１２は、ドライブ１０のブロックドライバ１８にコマンドを発行して読み出しプロセスを開始する。ここで、開始コマンドは、移動先２０の識別と必要な場合は移動先２０におけるデータの場所を含み、またセクタリストも含む（ステップ４０５）。ここで、データが最後のセクタの末尾まで行かずに終わっている場合、開始コマンドは、データのサイズも含むことができる。先と同様に、ファイルシステム１２は、実際にドライブ１０／ブロックドライバ１８からデータを転送するのでないことに留意されたい。重要な点として、本発明の一実施形態では、ブロックドライバ１８は、ファイルシステムからのセクタリスト、サイズ、および、識別と場所の情報を用いて、識別される移動先２０に適宜接触し、データ全体を移動先２０の当該データの場所に転送することにより、読み出しを行い、そのようなデータは、ドライブ１０の当該データがあるセクタから取得される（ステップ４０７）。このようなブロックドライバ１８を介したドライブ１０から移動先２０へのデータの読み出しは、本発明の主旨および範囲から逸脱することなく、任意の適切な方式で行うことができる。理解されるように、このようなデータの読み出しは、当業者には知られているか、あるいは明白であると思われるため、ここで詳細に説明する必要はない。例えば、ここでも、このような読み出しは、セクタリストに従って、連続したデータストリームとして、またはそのようなデータの部分の連続として達成することができる。後者の場合は、この場合も、データは複数の部分として転送されるが、初めにファイルシステム１２を経由することなく、ブロックドライバ１８によりドライブ１０から直接移動先２０に転送されることを理解されたい。いずれにせよ、移動先２０は、ファイルシステム１２を一般に知られる方法で仲介役とせずに、ブロックドライバ１８から直接受け取った、読み出されたデータを格納する。
【００２９】
この時点で、データが実際にドライブから移動先２０に読み出され、これ以上何も行わなくともよい。しかし、ここでも、管理上の方法として、読み出しプロセスが完了したことを移動先２０がアプリケーション１６に通知し（ステップ４０９）、アプリケーション１６も同様に読み出しプロセスが完了した旨のコマンドをファイルシステム１２に発行し（ステップ４１１）、ファイルシステム１２も同様に読み出しプロセスが完了した旨のコマンドをドライバ１０のブロックドライバ１８に通知してよい。したがって、ここでも、アプリケーション１６、ファイルシステム１２、ブロックドライバ１８のそれぞれが、管理上、読み出しプロセスを終了するか、かつ／または必要な完了機能を行うことができる。
【００３０】
結論
少なくとも一部の状況では、ブロックドライバ１８とファイルシステム１２の両方が同じソフトウェアモジュールとして実施されることは認識されよう。したがって、そのようなブロックドライバ１８とファイルシステム１２に関連付けられた機能を遂行するモジュールの部分間に内部的な区分がある場合も、ない場合もある。そのような状況でも、ここに述べられる本発明は、組み合わせられたブロックドライバ１８／ファイルシステム１２がやはり直接移動元／移動先２０と通信するので、なお適用することができる。したがって、この場合も、アプリケーション１６は、データ処理から離脱することができ、その結果データ転送において顕著な効率性が得られる。
【００３１】
本発明は、任意の該当するアプリケーション１６、ブロックドライバ１８を有するドライブ１０、移動元／移動先２０、およびファイルシステム１２を備えるコンピューティングシステム１４に関して実施することができる。ここで理解されるように、本発明では、データは、初めにコンピューティングデバイス１４のファイルシステム１２を経由せずに、移動元２０などから、コンピューティングデバイス１４に関連付けられたドライブ１０などに直接転送される。また、データは、初めにコンピューティングデバイス１４のファイルシステム１２を経由せずに、コンピューティングデバイス１４に関連付けられたドライブ１０などから直接移動先２０などに転送される。したがって、データは、転送される際に、初めにファイルシステム１２を経由する必要がない。用語「直接」の使用は、ファイルシステム１２を迂回することのみを必要としており、移動元／移動先２０とドライブ１０と間に直接的なリンクは必要としないことに留意されたい。理解されるように、ファイルシステム１２を回避することにより、特にアプリケーション１６とファイルシステム１２は、１回の転送につき１つの開始コマンドを発行するだけでよいので、データの転送は、煩雑性の低い方法によって行われ、効率が大幅に向上する。
【００３２】
したがって、ファイルシステム１２の管理上のオーバーヘッドが回避され、アプリケーション１６がデータ転送への反復的な関与するのも回避される。ここに記載される技術は、例えば比較的単純なコンピューティングデバイス１４の場合など、ファイルシステム１２とブロックドライバ１８が基本的に同一物である場合にも有用である可能性がある。そのような場合でも、アプリケーション１６がデータの各部分を読み出し、そのデータ部分をファイルシステム１２／ブロックドライバ１８の組み合わせに書き込む必要がないので、効率が向上する。
【００３３】
本発明との関連で行われるプロセスを実施するのに必要なプログラミングは、比較的単純であり、関連するプログラミングの当事者には明白であろう。そのためそのようなプログラミングは本明細書に添付しない。そのため、本発明の主旨および範囲から逸脱することなく、特定のプログラミングを用いて本発明を実施することができる。
【００３４】
上述の説明によって、本発明は、ドライブ１０との間において、より効率的で煩雑性の低い方法でデータを転送することを可能にする新しく有用な方法を備えることが理解できよう。そのようなデータは、初めにコンピューティングデバイス１４のファイルシステム１２を経由せずに、移動元２０などから、コンピューティングデバイス１４に関連付けられたハードドライブなどの記憶媒体１０に直接転送され、または、初めにコンピューティングデバイス１４のファイルシステム１２を経由せずに、記憶媒体１０から直接移動先２０などに転送される。注目すべき点として、そのようなデータは、アプリケーション１６に関与する必要もない。本発明の概念から逸脱することなく、上記の実施形態に変更を加えてよいことは理解されよう。そのため、一般に、本発明は、ここに開示される特定の実施形態に限定されず、本発明の主旨および範囲内にある変更を包含するものとすることを理解されたい。
【図面の簡単な説明】
【００３５】
【図１】本発明の態様および／またはその一部を組み込むことが可能な汎用コンピュータシステムを表すブロック図である。
【図２】特に、アプリケーション、ファイルシステム、およびコンピュータに関連付けられたドライブのブロックドライバを示すブロック図である。
【図３】本発明の一実施形態によりドライブに書き込みを行うために図２の要素によって行われる主要なステップを示すフロー図である。
【図４】本発明の一実施形態によりドライブから読み出しを行うために図２の要素によって行われる主要なステップを示すフロー図である。
【符号の説明】
【００３６】
１０  記憶媒体／ドライブ
１２  ファイルシステム
１６  アプリケーション
１８  ブロックドライバ
２０  移動元／移動先
【図１】
2005276211.tif 000003
【図２】
2005276211.tif 000004
【図３】
2005276211.tif 000005
【図４】
2005276211.tif 000006
【外国語明細書】
2005276211000001.pdf