(57)【要約】コンピュータ・システムや通信ネットワーク内でファイルを管理するための方法および装置について記述する。
2004533668.tif 000002
【特許請求の範囲】
【請求項１】
ファイル名を有するファイルにアクセスするためにクライアントで第１の要求を受け取ること、
前記クライアントで識別子を前記ファイル名に関連付けること、および、
前記識別子と前記ファイル名とともに前記第１の要求をサーバに送ること
を含むファイルを管理する方法。
【請求項２】
メモリ内に前記識別子とファイル名を格納することをさらに含む請求項１に記載の方法。
【請求項３】
前記サーバから肯定応答メッセージを受け取ることをさらに含む請求項１に記載の方法。
【請求項４】
前記ファイルにアクセスするために前記クライアントで第２の要求を受け取ること、
前記メモリから前記ファイル名に関連付けられた前記識別子を検索すること、および、
前記関連付けられた識別子を使用して前記第２の要求を前記サーバに送ることをさらに含む請求項１に記載の方法。
【請求項５】
前記第１と第２の要求がファイル・オペレーションを指定する請求項４に記載の方法。
【請求項６】
ファイル名と識別子を有するファイルにアクセスするためにサーバで第１の要求を受け取ること、および、
肯定応答メッセージを前記クライアントに送ること
を含むファイルを管理する方法。
【請求項７】
前記ファイルのための場所情報をサーチすること、
前記場所情報を前記識別子に関連付けること、および、
メモリ内に前記場所情報および前記識別子を格納することをさらに含む請求項６に記載の方法。
【請求項８】
前記識別子を使用して前記ファイルにアクセスするために前記サーバで第２の要求を受け取ること、および、
前記識別子を使用して前記メモリから前記場所情報を検索することをさらに含む請求項７に記載の方法。
【請求項９】
クライアントがファイル名を有するファイル要求を受け取ること、
識別子を前記ファイル名に関連付けること、
前記識別子と前記ファイル名をサーバに送ること、
前記ファイル名を使用して場所情報をサーチすること、および、
前記識別子とともに前記場所情報を格納すること
を含むファイルを管理する方法。
【請求項１０】
肯定応答メッセージを前記クライアントに送ることをさらに含む請求項９に記載の方法。
【請求項１１】
ファイル・システム・インターフェースによりファイル名とともにファイル要求を受け取ること、
前記ファイル・システム・インターフェースにより一意の識別子を前記ファイル名に割り当てること、および、
前記一意の識別子とファイル名をファイル・システム・マネージャに送ること
を含むファイル・オペレーションを管理する方法。
【請求項１２】
前記ファイル・システム・マネージャで前記一意の識別子と前記ファイル名を受け取ること、
前記ファイル名を使用してファイル情報をサーチすること、および、
前記一意の識別子を使用して前記ファイル情報を格納することをさらに含む請求項１１に記載の方法。
【請求項１３】
記憶媒体を備え、
プロセッサによって実行された場合、その結果として、ファイル名を有するファイルにアクセスするためにクライアントで第１の要求を受け取り、前記クライアントで識別子を前記ファイル名に関連付け、前記識別子と前記ファイル名とともに前記第１の要求をサーバに送る格納された命令を前記記憶媒体が有する物品。
【請求項１４】
格納された命令が、プロセッサによって実行された場合、その結果としてさらに、メモリ内に前記識別子とファイル名を格納する請求項１３に記載の物品。
【請求項１５】
格納された命令が、プロセッサによって実行された場合、その結果としてさらに、前記サーバから肯定応答メッセージを受け取る請求項１３に記載の物品。
【請求項１６】
格納された命令が、プロセッサによって実行された場合、その結果としてさらに、前記ファイルにアクセスするために前記クライアントで第２の要求を受け取り、前記メモリから前記ファイル名に関連付けられた前記識別子を検索し、前記関連付けられた識別子を使用して前記第２の要求を前記サーバに送る請求項１３に記載の物品。
【請求項１７】
記憶媒体を備え、
プロセッサによって実行された場合、その結果として、クライアントでファイル名を有するファイル要求を受け取り、識別子を前記ファイル名に関連付け、前記識別子と前記ファイル名をサーバに送り、前記ファイル名を使用して場所情報をサーチし、前記識別子とともに前記場所情報を格納する格納された命令を前記記憶媒体が有する物品。
【請求項１８】
格納された命令が、プロセッサによって実行された場合、その結果としてさらに、前記クライアントに肯定応答メッセージを送る請求項１７に記載の物品。
【請求項１９】
ファイル名を有するファイルのための要求を受け取り、一意の識別子を前記ファイル名に割り当て、前記一意の識別子と前記ファイル名をサーバに送るクライアントと、
前記一意の識別子と前記ファイル名を前記サーバに通信するために前記クライアントに接続された相互接続システムと
を備えたファイル管理を実施する装置。
【請求項２０】
前記一意の識別子とファイル名を受け取るためのサーバをさらに備え、前記サーバが、前記ファイルのための情報を位置付け、前記一意の識別子を使用して前記情報を格納する請求項１９に記載の装置。
【請求項２１】
識別子をファイル名に割り当てるためのクライアントと、
前記ファイル名を使用してファイル情報を位置付け、前記識別子を使用して前記ファイル情報を格納するためのサーバと、
前記クライアントと前記サーバの間で前記ファイル名と前記識別子をトランスポートするための相互接続システムと
を備えたファイル管理を実施する装置。
【請求項２２】
前記クライアントが、オペレーティング・システム・サービス・モジュールを備えた請求項２１に記載の装置。
【請求項２３】
前記サーバが、中間サービス・モジュールを備えた請求項２１に記載の装置。
【請求項２４】
前記相互接続システムが、周辺構成要素相互接続システムおよびＩ2Ｏシステムに従って動作する請求項２１に記載の装置。
【請求項２５】
ファイル名を有するファイルのための要求を受け取り、一意の識別子を前記ファイル名に割り当てるためのファイル・システム・インターフェースと、
前記ファイル名を使用してファイル情報を位置付け、前記一意の識別子を使用して前記ファイル情報を格納するためのファイル・システム・マネージャと、
前記ファイル・システム・インターフェースと前記ファイル・システム・マネージャの間で前記一意の識別子と前記ファイル名を通信するための通信システムと
を備えたファイル管理を実施する装置。
【請求項２６】
前記通信システムが、
ツイストペア線、同軸ケーブル、光ファイバ、無線周波数からなる群のうちの少なくとも１つを有する通信媒体と、
１組の通信プロトコルに従って動作する通信インターフェースとを備えた請求項２５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムと通信システムに関する。より詳細には、本発明は、コンピュータ・システムや通信システム内でのファイル管理を改良するための方法および装置に関する。
【背景技術】
【０００２】
コンピュータ・システムや通信システムは、アーキテクチャが似ていることが多い。各システムは、それぞれ一定の機能を実施するように設計されているいくつかの別個の構成要素を備えている。構成要素は、相互接続システムを介して他の構成要素に情報を通信できる。相互接続システムは、金属のリード線、ツイストペア線、同軸ケーブル、光ファイバ、無線周波数など通信媒体を介して情報の転送を管理するように動作する。構成要素間の通信は、一般に、個々の構成要素の動作が互いに協調しあい、その結果、それらはまとまりのあるシステムとして動作することができる。このタイプの分散型システム・アーキテクチャは、性能、冗長性、スケーラビリティ、効率の点で一定の利点を提供できる。
【０００３】
しかし、このタイプのシステム設計に関連していくつかの欠点がある。１つの欠点は、ある構成要素が、別の構成要素からの情報を待っているときアイドル状態のままでなければならないことである。アイドル時間はシステム・リソースの非効率的な使用を表す。別の欠点は、構成要素間で通信される情報量を増加するような仕方で、構成要素に機能が割り当てられることがあることである。通信におけるこの増加により、相互接続システムの有限なリソースに対する要求が増加する。
【０００４】
本発明の実施態様とみなされる主題については、本明細書の結論部分で特に指摘し明確に特許請求している。しかし、本発明の実施態様は、オペレーションの構成および方法のどちらに関しても、その目的、特徴、利点と共に添付図面と合わせて以下の詳細な説明を参照すれば、最も良く理解されるであろう。
【発明の開示】
【０００５】
以下の詳細な説明では、本発明の実施態様を完全に理解するために、かずかずの特定の詳細事項を記載している。しかし、これらの特定の詳細事項がなくとも本発明の実施態様を実践できることは、当業者なら理解するであろう。他の例では、本発明の実施態様を不明瞭にしないために、周知の方法、手順、構成要素、回路について詳細に記述していない。
【０００６】
本発明の実施態様は、分散された構成要素のアイドル時間および相互接続システムに対する帯域幅需要を減少させることにより、分散型システムの性能を改善することができる。より具体的には、本発明の一実施態様では、ファイル管理に使用される分散型システムの性能を改善することができる。したがって、これは、ファイル・オペレーションに関連する遅延を減少できる。したがって、ユーザが、より応答性の良いアプリケーションおよびサービスという点で利益を得ることができる。
【０００７】
ファイル管理システムは、一般に、クライアントとサーバを備える。この状況におけるクライアントはサービスの要求側を指すことがある。この状況におけるサーバはサービスのプロバイダを指すことがある。クライアントは、一般に、相互接続システムを介してサーバにファイル要求を送る。ファイル要求はメッセージの形式とすることができ、機能要求とファイル名を有する。この状況におけるメッセージは、組み合わされたとき、たとえば制御語、コマンド、命令、情報またはデータを表す１つまたは複数の英数字、記号または論理式を有することができる。メッセージは、合成されて、たとえば単一のビットからフレーズ全体にまで変わる可能性がある。サーバは、一意の識別子をファイル名に関連付け、ファイルのための場所情報を識別し、それを一意の識別子とともに格納する。次いで、サーバは、一意の識別子をクライアントに送り戻す。クライアントは、一意の識別子を受け取り、後続のファイル要求のためにファイル名の代わりにそれを使用する。
【０００８】
相互接続システムに対する帯域幅需要を減少するために一意の識別子がファイル名に割り当てられる。ファイル名は、たとえば、いくつかの英数字または記号（「文字列」）を有することができる。それぞれの文字または記号が、１つまたは複数のビット、一般に１文字毎に８ビット（すなわち、１バイト）に変換される。１つのファイル名が多くの文字を有するので、相互接続システムは、比較的多数のビットをトランスポートしなければならない。この問題を軽減するために、サーバは、一意の識別子をそれぞれのファイル名に割り当て、その一意の識別子をクライアントに送ることができる。一意の識別子は、一般に長さがファイル名より短い。たとえば、一意の識別子は、３２または６４ビットの長さでよい。次いで、クライアントは、後続のファイル要求のためにその一意の識別子を使用できる。
【０００９】
しかし、サーバが一意の識別子をファイル名に割り当てることについては、いくつかの欠点がある。１つの欠点は、後続のファイル要求を処理するのに先だってクライアントが一意の識別子を待っている間は、そのクライアントはアイドル状態のままでなければならないことである。別の欠点は、クライアントとサーバが、必要以上に多くの情報を通信する必要があり、それにより相互接続システムに対する要求が増加することがあることである。
【００１０】
第１の欠点に関して、クライアントは、サーバから一意の識別子を待っている時はアイドル状態のままでなければならない。割当てプロセスを開始するために、ファイル名への一意の識別子の割当てを要求してクライアントはサーバにメッセージを送る。サーバは、一意の識別子をファイル名に関連付け、ファイルのための場所情報を識別し、それを一意の識別子とともに格納する。次いで、サーバは、一意の識別子を有するメッセージをクライアントに送り戻す。サーバから一意の識別子を受け取るのを待っている間、クライアントは、同じファイル名を有する後続のファイル要求を受け取ることができる。クライアントは、全割当てプロセスが完了するまで、これらのファイル要求の処理を開始できないことがある。その結果、クライアントは、この時間中アイドル状態のままであることを強いられることがある。
【００１１】
第２の欠点について、クライアントとサーバは、割当て機能を実行するために不必要な情報を通信する必要があり、それにより相互接続システムに対する要求が増加する場合がある。上述したファイル管理システムは少なくとも２つのメッセージを必要とする。クライアントは、ファイル名への一意の識別子の割当てを要求するサーバに第１のメッセージを送る。サーバは、第２のメッセージを一意の識別子を有するクライアントに送る。それぞれのメッセージが、相互接続システムから一定量の帯域幅の使用を必要とする。この状況における帯域幅とは、相互接続システムを介して情報を転送できる速度を指すことがあり、一般に、キロビット／秒（ｋｂｐｓ）で測定される。これと対称的に、本発明の一実施態様では、ただ１つのメッセージを使用して割当てプロセスを実施し、それにより、恐らく相互接続システムに対する帯域幅需要を５０％も減少することができるようになる。
【００１２】
本発明の実施態様では、クライアントのためのアイドル時間を減少させ、かつ相互接続システムに対する帯域幅需要を減少させることにより、分散型システムの性能を改善することができる。本発明の一実施態様では、クライアントで一意の識別子をファイル名に割り当て、その一意の識別子をサーバに送る。このことにより、クライアントがサーバからのメッセージを待つ必要がなく後続のファイル要求の処理を開始できるので、クライアントのアイドル時間を減少させることができる。このことによりまた、サーバが割当てプロセスを完了するためにメッセージをサーバに送り戻す必要がないか、あるいは以前のファイル管理システムが必要としていたメッセージより短いメッセージを送ることができるので、帯域幅需要を減少できる。
【発明を実施するための最良の形態】
【００１３】
本明細書において「一実施形態」または「実施形態」について記載している場合、この状況においては、本発明の少なくとも１つの実施形態内にその実施形態と合わせて記述した特定の機能、構造、または特性を有することができることを意味するということに留意されたい。本明細書のさまざまな箇所に現れる「一実施形態では」というフレーズは、必ずしもすべて同じ実施形態を指すものではない。
【００１４】
次に、全体を通じて同様の部分を同様の参照番号で表した図面を詳細に参照していくが、図１に、本発明の一実施形態を実践するのに適切なシステム１００が示されている。図１に示されるように、システム１００には、相互接続システム１０４によって接続されたクライアント１０２とサーバ１０６が備えられている。本明細書で使用する用語「クライアント」は、情報の任意の要求側を指し、本明細書で使用する用語「サーバ」は、情報の任意のプロバイダを指すことがある。
【００１５】
図２は、本発明の一実施形態によるクライアント・システムを示すブロック図である。図２は、クライアント１０２であってよいクライアント２００を例示する。図２に示されるように、クライアント２００には、プロセッサ２０２、メモリ２０４、インターフェース２０８が備えられ、すべて接続２１０によって接続されている。メモリ２０４は、プログラム命令とデータを格納できる。用語「プログラム命令」は、定義済み方式またはシンタックスに従って組み合わせられた場合に、プロセッサに一定の機能を実施させる、定義済みコンピュータ言語からの語、値、記号を含むコンピュータ・コード・セグメントを有する。コンピュータ言語の例には、Ｃ、Ｃ＋＋、アセンブリがある。プロセッサ２０２は、メモリ２０４内に格納されたプログラム命令を実行し、データを処理する。インターフェース２０８は、クライアント２００から別のデバイスへのデータのトランスポートを調整する。接続２１０が、プロセッサ２０２、メモリ２０４、インターフェース２０８の間でデータをトランスポートする。
【００１６】
プロセッサ２０２は、本発明のさまざまな実施形態に望ましい速度と機能を提供することが可能な任意のタイプのプロセッサでよい。たとえば、プロセッサ２０２は、インテル社、モトローラ、コンパック、またはサン・マイクロシステムズ製のプロセッサ・ファミリのプロセッサなどである。本発明の一実施形態では、プロセッサ２０２は、ハード・ドライブ、キーボード、プリンタ、ネットワーク・インターフェース・カードなどの入出力（Ｉ／Ｏ）デバイスを管理するための専用プロセッサでもよい。そのプロセッサは、一般に、Ｉ／Ｏプロセッサ（ＩＯＰ）と呼ばれる。
【００１７】
本発明の一実施形態では、メモリ２０４は、機械読取り可能媒体であり、プロセッサによって実行されるよう適合された命令を格納することが可能な任意の媒体を含むことができる。このような媒体の例には、読取専用メモリ（ＲＯＭ）、ランダムアクセス・メモリ（ＲＡＭ）、プログラマブルＲＯＭ、消去可能なプログラマブルＲＯＭ、電子的に消去可能なプログラマブルＲＯＭ、ダイナミックＲＡＭ、磁気ディスク（たとえば、フロッピ・ディスクおよびハード・ドライブ）、光学ディスク（たとえば、ＣＤ−ＲＯＭ）、ディジタル情報を格納できる他の任意の媒体を含むが、それらに限定されるものではない。本発明の一実施形態では、命令は、圧縮されたかつ／または暗号化されたフォーマットで媒体に格納される。本明細書で使用するフレーズ「プロセッサによって実行されるよう適合された」は、圧縮されたかつ／または暗号化されたフォーマットで格納された命令を含むと共に、プロセッサによって実行される前にインストーラによってコンパイルまたはインストールすべき命令をも含むことを意味する。さらに、クライアント２００が、プロセッサ２０２からアクセス可能でありかつコンピュータ・プログラム命令およびデータの組み合わせを格納することが可能な、さまざまなＩ／Ｏコントローラを通じて機械読取り可能記憶装置デバイスのさまざまな組み合わせを備えることができる。
【００１８】
メモリ２０４が、クライアント１０６やクライアント２００などのクライアントの機能を実施するためのプログラム命令とデータを格納し、かつプロセッサ２０２による実行を可能にしている。本発明の一実施形態では、メモリ２０４は、本明細書では全体としてファイル・システム・インターフェース２０６と呼ばれる１組のプログラム命令を有する。
【００１９】
ファイル・システム・インターフェース２０６は、システム１００のために１つまたは複数のファイルへのアクセスを提供するよう動作するインターフェースである。この状況におけるインターフェースは定義済みプロトコルを指すことがあり、それにより、１つのソフトウェア・モジュールが、別のソフトウェア・モジュールからの機能にアクセスできる。この状況におけるファイルは、メモリ２０４やハード・ドライブなどのメモリ内に格納された個別の１組のデータを指す。ファイル・システム・インターフェース２０６は、作成する、開ける、シークする、読み取る、書き込む、名称変更する、削除する、コピーする、移動するなどの、ファイルのための一定のオペレーションを実施するための要求を受け取ることができる。要求は、たとえば、ホストＯＳまたはアプリケーション・プログラムから発信できる。ホストＯＳはシステムのためのＯＳからなる。たとえば、本発明の一実施形態がパーソナル・コンピュータの一部として実施される場合は、ホストＯＳは、たとえばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）９５、９８、２０００、ＮＴなどの、マイクロソフト社より販売されているＯＳを備えることがある。
【００２０】
本発明の一実施形態では、ファイル・システム・インターフェース２０６が、Ｉ2Ｏ分科会（ＳＩＧ）（Ｉ2ＯＳＩＧ）によって開発された、「ｗｗｗ／ｉ２０ｓｉｇ．ｏｒｇ」（「Ｉ2Ｏ規格」）から使用可能なインテリジェントＩ／Ｏ規格（Ｉ2Ｏ）よって定義されているオペレーティング・システム・サービス・モジュール（ＯＳＭ）の、１９９７年４月に採用されたバージョン１．５にとして動作するが、本発明はこの点に範囲が限定されるものではない。
【００２１】
背景として、Ｉ2Ｏ規格は、制御されている特定のデバイスとホスト・オペレーティング・システム（ＯＳ）の両方から独立したインテリジェントＩ／Ｏのための標準アーキテクチャを定義する。この状況におけるインテリジェントＩ／Ｏは、低レベルの割込みを処理する機能を、中央処理ユニット（ＣＰＵ）または他のプロセッサからＩ／Ｏ機能のための処理を提供するために特に設計されたＩ／Ｏプロセッサ（ｌＯＰ）へ移動することを指す。このことにより、Ｉ／Ｏ性能を改良でき、ＣＰＵまたは他のプロセッサが他のタスクのための機能の処理を提供できるようになる。この状況における割込みは、ハード・ドライブ、フロッピ・ディスク・ドライブ、プリンタ、モニタ、キーボード、ネットワーク・インターフェース・カード（ＮＩＣ）などのＩ／Ｏデバイスにアクセスするための要求を指す。
【００２２】
Ｉ2Ｏ規格は、ＯＳＭ、中間サービス・モジュール（ＩＳＭ）、ハードウェア・デバイス・モジュール（ＨＤＭ）を記述する。ＯＳＭは、ホストＯＳとＩＳＭの間をインターフェースとして動作するドライバである。この状況におけるドライバは、特定の構成要素、デバイス、またはソフトウェア・モジュールのオペレーションを管理する１組のプログラム命令を指す。ＩＳＭは、ＯＳＭとハードウェア・デバイス・モジュール（ＨＤＭ）の間のインターフェースとして動作できる。ＩＳＭは、たとえばバックグラウンド・アーカイブなどの、Ｉ／Ｏ管理機能、ネットワーク・プロトコル、またはピアツーピア機能のための特定の機能を実行できる。ＨＤＭは、特定のＩ／Ｏデバイスを制御するよう動作するドライバよい。
【００２３】
Ｉ2Ｏ規格は、メッセージ受渡しシステムを備えた通信モデルを定義する。ＯＳＭ、ＩＳＭ、ＨＤＭは通信し、メッセージ・レイヤを通じてメッセージの形式で情報を渡すことにより、オペレーションを調整する。この状況におけるメッセージ・レイヤは、要求を管理しディスパッチし、メッセージを配信するために１組のアプリケーション・プログラミング・インターフェース（ＡＰＩ）を提供し、メッセージを処理するために１組のサポート・ルーチンを提供する。
【００２４】
本発明の一実施形態では、ファイル・システム・インターフェース２０６が、Ｉ2Ｏ規格に従ってＯＳＭとして動作する。本発明の一実施形態では、ファイル・システム・インターフェース２０６が、ホストＯＳを介してアプリケーション・プログラムからファイル要求を受け取り、Ｉ2Ｏ規格に従ってその要求をメッセージに翻訳し、処理するためにそれをファイル・システム・マネージャ（以下に記述する）に送る。この状況におけるアプリケーション・プログラムは、一般に、ユーザとコンピュータ・システムの間のコマンドと命令の処理を促進するためのユーザ・インターフェースを有する専用タスクのための所定の組の機能を提供するプログラムを指す。アプリケーション・プログラムの例には、ワード・プロセッサ、スプレッド・シート、データベース、またはインターネット・ブラウザがある。
【００２５】
インターフェース２０８は、たとえば、一組の所望の通信プロトコル、サービス、オペレーティング手順を使用してコンピュータまたはネットワーク・デバイス間の通信信号を制御するための適切な技術を有する。本発明の一実施形態では、インターフェース２０８が、たとえば、ＰＣＩ規格およびＩ2Ｏ規格に従って動作できる。本発明の別の実施形態では、インターフェース２０８が、１９８１年９月に採用された、インターネット技術タスク・フォース（ＩＥＴＦ）標準７、コメント要求（ＲＦＣ）７９３によって定義された伝送制御プロトコル（ＴＣＰ）、および１９８１年９月に採用された、ＩＥＴＦ標準５、ＲＦＣ７９１によって定義されたインターネット・プロトコル（ＩＰ）（両方とも「ｗｗｗ．ｉｅｔｆ．ｏｒｇ」から使用可能）に従って動作できる。インターフェース２０８は上述したプロトコルに従って動作できるが、インターフェース２０８は、たとえば、一組の所望の通信プロトコル、サービス、オペレーティング手順を使用してコンピュータまたはネットワーク・デバイス間の通信信号を制御するための任意の適切な技術とともに動作でき、かつなお本発明の範囲内に包含されることが理解できるであろう。
【００２６】
また、インターフェース２０８はインターフェース２０８を適切な通信媒体に接続するためのコネクタを備えることもできる。インターフェース２０８は、銅リード線、ツイストペア線、同軸ケーブル、光ファイバ、無線周波数などの任意の適切な媒体を介して通信信号を受け取ることができる。本発明の一実施形態では、コネクタは、ＰＣＩ規格に準拠する信号を運ぶためのバスとともに使用するのに適している。
【００２７】
図３は、本発明の一実施形態によるサーバ・システムを示すブロック図である。図３は、サーバ１０６を表す本発明の一実施形態によるサーバ３００を例示する。図３に示されるように、サーバ３００は、すべて接続３１０によって接続されているプロセッサ３０２、メモリ３０４、インターフェース３０８を備える。図３の素子、３０２、３０４、３０８、３１０は、図２を参照しながら記述した対応する素子、２０２、２０４、２０８、２１０と構造およびオペレーションの点で同様である。サーバ３００がプロセッサ３０２とともに示されているが、サーバ３００は、プロセッサ３０２なしでも、サーバ３００で使用可能な別のプロセッサ（たとえば、プロセッサ２０２）を使用して動作でき、かつなお本発明の範囲内に包含されることが理解できるであろう。たとえば、本発明の実施形態が、クライアントとサーバがＰＣＩバスによって接続され、両方が単一のプロセッサを共用しているパーソナル・コンピュータ内に組み込まれた場合にこのような構成が生じることがある。
【００２８】
本発明の一実施形態では、メモリ３０４が、ファイル・システム・マネージャ３０６のためのプログラム命令を有する。ファイル・システム・マネージャ３０６は、ファイル管理を実施し、複数のファイルを有する記憶媒体（図示せず）へのアクセスを提供する。ファイル・システム３０６は、ファイル・システム・インターフェース２０６から受け取ったファイル要求に応答して、作成する、開ける、シークする、読み取る、書き込む、名称変更する、削除する、コピーする、移動するなどのファイル・オペレーションを実施する。ファイル・システム・インターフェース２０６の一例が、Ｉ2Ｏ規格によるＩＳＭオペレーティングを含むが、本発明の範囲がこの点に限定されるものではない。
【００２９】
システム、１００、２００、３００のオペレーションを、図４、５を参照しながらより詳細に記述する。本明細書に提示する図４、５は特定のオペレーションのシーケンスを有するが、そのオペレーションのシーケンスは、本明細書に記述する一般的な機能をどのように実施できるかという例を提供するためにすぎないことが理解できるであろう。さらに、別段の表示がない場合は、そのオペレーションのシーケンスを必ずしも提示された順序で実行する必要はない。
【００３０】
図４は、本発明の一実施形態によるクライアントによって実施されるオペレーションを示すブロック流れ図である。本発明のこの実施形態では、ファイル・システム・インターフェース２０６はクライアント１０６の一部として動作する。しかし、ファイル・システム・インターフェース２０６は、コンピュータまたはネットワーク・システム内のどこかに置かれた任意のデバイス、またはデバイスの組み合わせに実装でき、かつなお本発明の範囲内に包含されることが理解できるであろう。
【００３１】
図４に示されるように、クライアントが、ブロック４０２でファイル名を有するファイルにアクセスするための要求を受け取る。クライアントは、ブロック４０４でファイル名を識別子に関連付ける。クライアントは、ブロック４０６で関連付けられた識別子とファイル名をサーバに送る。クライアントは、ブロック４０８で関連付けられた識別子とファイル名をメモリ内に格納する。クライアントは、ブロック４１０でサーバから肯定応答メッセージを受け取る。
【００３２】
ひとたびクライアントがファイルに識別子を割り当てると、識別子は、そのファイルの将来の要求のために使用される。クライアントは、ファイルにアクセスするためにクライアントで第２の要求を受け取る。クライアントは、メモリからファイル名に関連付けられた識別子を検索する。クライアントは、関連付けられた識別子を使用してサーバに第２の要求を送る。
【００３３】
図５は、本発明の一実施形態によるサーバによって実施されるオペレーションを示すブロック流れ図である。本発明のこの実施形態では、ファイル・システム・マネージャ３０６はクライアント１０６の一部として動作する。しかし、この機能は、コンピュータまたはネットワーク・システム内のどこかに置かれた任意のデバイス、またはデバイスの組み合わせに実装でき、かつなお本発明の範囲内に包含されることが理解できるであろう。
【００３４】
図５に示されるように、サーバが、ブロック５０２でファイルのためのファイル名と関連付けられた識別子を受け取る。サーバは、ブロック５０４で肯定応答メッセージをクライアントに送る。サーバは、ブロック５０６でファイルのための場所情報をサーチする。サーバは、ブロック５０８で場所情報を識別子に関連付ける。サーバは、関連付けられた場所情報と識別子をメモリ内に格納する。
【００３５】
ひとたびサーバが識別子を使用してファイルのための場所情報に索引を付けると、サーバは、識別子を使用して、後続のファイル要求のために場所情報にアクセスできる。サーバは、識別子を有するファイルにアクセスするために第２の要求を受け取る。サーバは、識別子を使用してメモリから場所情報を検索する。
【００３６】
システム１００、２００、３００のオペレーションと、図４、５に示されたフロー・ダイアグラムを例にとると、より良く理解できるであろう。アプリケーション・プログラムが、ファイル名「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」を有するファイルからシステム１００のホストＯＳに情報を読み取るための要求を送る。この状況における一意の識別子は、クライアント、サーバおよび／またはシステムによって使用される他の語、値、または２進列に関して、クライアント、サーバおよび／またはシステムに対して、組み合わされたとき一意の語、値、または２進列を表す一連の英数字を指す。ホストＯＳは、ファイル要求をファイル・システム・インターフェース２０６に渡す。ファイル・システム・インターフェース２０６が、一意の識別子「Ａ１２３」を生成し、それをファイル名「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」に割り当てる。本発明のこの実施形態では、一意の識別子「Ａ１２３」は、たとえば１６進数の３２ビット数である。ファイル・システム・インターフェース２０６が、メッセージ「識別する（ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ、Ａ１２３）」を作成し、それを接続１０４を介してファイル・システム・マネージャ３０６にトランスポートするためのアウトバウンド・メッセージ待ち行列内に入れる。この状況におけるアウトバウンド・メッセージ待ち行列は、相互接続システムがメッセージをトランスポートできるようになるまで、メッセージを保持するのに使用される先入れ先出し法（ＦＩＦＯ）などの待ち行列を指す。ファイル・システム・インターフェース２０６は、「Ａ１２３」とともに「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」をメモリ２０４内のルックアップ・テーブル内に格納する。
【００３７】
ファイル・システム・マネージャ３０６が接続１０４を介してメッセージを受け取る。ファイル・システム・マネージャ３０６は、メッセージをパーズし、機能「識別する（ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ、Ａ１２３）」を起動する。この状況における用語「パーズする」は、たとえば、コマンド、制御語、ファイル名、データ、関数呼出し、サブルーチン名、フラグなどを表すメッセージから個々の文字またはサブセットの文字を分離することを指す。この状況における用語「起動する」は、所与の機能またはサブルーチンに関連付けられたプログラム命令の実行を開始するためにプロセッサに送られるコマンドを指す。この機能は、入力として「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」および「Ａ１２３」をとり、ファイル・システム・マネージャ３０６にファイル名「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」が後続のファイル要求で「Ａ１２３」として参照されることを通知する。このことは、ファイル名と一意の識別子を、対応するまたはリンクされた項としてともに格納することにより、メモリ内のルックアップ・テーブルを更新することによって達成できるであろう。つまり、一方をサーチすることにより他方を見つけることができるであろう。ファイル・システム・マネージャ３０６は、一般にハード・ドライブなどの記憶装置デバイスに置かれているファイル「Ａ１２３」のための場所情報をサーチする。場所情報の例には、アドレス指定情報、デバイス、シリンダ番号、トラック番号があるが、本発明はこの点に範囲が限定されるものではない。ファイル・システム・マネージャ３０６が、場所情報を識別子「Ａ１２３」に関連付け、メモリ３０４内のルックアップ・テーブル内に識別子「Ａ１２３」とともに場所情報を格納する。ファイル・システム・マネージャ３０６は、ファイル名識別子と場所情報を受け取ったファイル・システム・インターフェース２０６に肯定応答メッセージを送る。この状況における肯定応答メッセージは、以前のメッセージが受け取ったことを示す短いメッセージを指す。肯定応答メッセージは、特定のシステムが所望する通りに、単一のビット、文字、語、またはフレーズを有することができる。
【００３８】
次いで、ファイル・システム・マネージャ３０６によって受け取られた後続のファイル要求が、ファイル名「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」のためのオペレーションを要求する場合、識別子「Ａ１２３」を使用する。たとえば、ファイル・システム・インターフェース２０６が、「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」に対して「削除する」オペレーションを実施するために第２の要求を受け取る。ファイル・システム・インターフェース２０６は、メモリから「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」のために以前に関連付けられた識別子「Ａ１２３」を検索する。ファイル・システム・インターフェース２０６は、メッセージ「削除する」（  「Ａ１２３」）をファイル・システム・マネージャ３０６に送る。ファイル・システム・マネージャ３０６は、そのメッセージ「削除する」（  「Ａ１２３」）を受け取り、識別子「Ａ１２３」を使用してファイル名「ｔｅｓｔ  ｆｉｌｅ  ｏｎｅ」のための場所情報を検索する。次いで、ファイル・システム・マネージャ３０６が、検索された場所情報を使用して要求されたファイル・オペレーションを実施する。
【００３９】
本発明の一実施形態では、ファイル・システム・インターフェース２０６を、「ｗｗｗ．ｋｅｒｎｅｌ．ｏｒｇ．」（「Ｌｉｎｕｘ  Ｋｅｒｎｅｌ」）より使用可能なＬｉｎｕｘＯＳバージョン２．３．９９ｐｒｅ３カーネルなどの、Ｉ2Ｏ規格および特定のホストＯＳに従ってＯＳＭとして実施できる。本発明のこの実施形態では、ＯＳＭは、ストリーム・フォレストＯＳＭ、ストリーム・ツリーＯＳＭ、クラス規格をさらに有することができる。この状況におけるクラスは、特定のインターフェース定義を指すことがある。この状況におけるツリーは、コーンと呼ばれるストレージ・オブジェクトの集まりを指す。この状況におけるオブジェクトはあるクラスのインスタンスを指す。この状況におけるコーンは、たとえば、読取り、書込み、ロックのケイパビリティをサポートするストレージ・オブジェクトを指す。この状況におけるフォレストはツリーの集まりを指す。
【００４０】
本発明のこの実施形態では、ストリーム・フォレストＯＳＭを使用して、ファイル・システムの集まりをモデル化できる。ストリーム・フォレストＯＳＭは、たとえば、名称を作成し、名称を削除し、または特定のフォレストを名称変更するなどのファイル命名オペレーションを提供できる。さらに、開閉オペレーションもサポートできる。ツリーＯＳＭを使用して、特定のファイル・システムをモデル化できる。ファイルは、コーンとしてモデル化できる。ストリーム・フォレストＯＳＭは、たとえば、ファイルに名称を付け、それを名称変更し、それを削除し、変更できないようそれをロックし、それを読み取り、またはそれを書き込むなどのファイル・オペレーションをサポートするよう機能する。
【００４１】
ＯＳＭは、ＩＳＭと通信するよう設計できる。ＩＳＭは、ストリーム・フォレストＩＳＭおよびストリーム・ツリーＩＳＭをさらに含むこともある。ストリーム・フォレストＩＳＭは、ＯＳＭのファイル・システム命名ケイパビリティをサポートできる。本発明の一実施形態では、ストリーム・ツリーＩＳＭは、２8文字の長さを有するストリーム・コーン識別子をサポートできる。ストリーム・ツリーＩＳＭはまた、２16オープン・ストリーム・コーンと２32の可能なストリーム・コーンもサポートできる。ツリーＩＳＭは、含まれるすべてのストリーム・コーンのための２64バイトをサポートできる。これらの値により本発明の範囲がこの点に限定されるものではないことが理解できるであろう。
【００４２】
オペレーションでは、ストリーム・ツリーＯＳＭ、ストリーム・フォレストＯＳＭ、ストリーム・ツリーＩＳＭ、ストリーム・フォレストＩＳＭはすべて、以下に説明するクラス規格に従ってメッセージング・スキームを使用して通信できる。このメッセージング・スキームは、ストリーミング・メッセージング・スキームと呼ばれ、以下にさらに詳細に説明する。ホストＯＳが、ストリーム・フォレストＯＳＭおよびストリーム・ツリーＯＳＭによって提供される機能を使用できる。ホストＯＳは、たとえば、ストリーム・フォレストＯＳＭを使用して１群のファイル・システムをモデル化し、ストリーム・ツリーＯＳＭを使用して特定のファイル・システムをモデル化できる。ストリーム・フォレストＯＳＭは、ストリーム・フォレストＩＳＭを使用して、ＩＲＴＯＳ環境内で複数の群のファイル・システムを管理できる。ストリーム・ツリーＯＳＭは、ストリーム・ツリーＩＳＭを使用して、Ｉ2Ｏリアルタイム・オペレーティング・システム（ＩＲＴＯＳ）環境内でファイル・システムを管理できる。ストリーム・フォレストＯＳＭとストリーム・ツリーＯＳＭは、ストリーム・メッセージング・スキームを使用して、それぞれ、ストリーム・フォレストＯＳＭとストリーム・ツリーＩＳＭと通信できる。本発明のこの実施形態については、図７を参照しながらさらに記述する。
【００４３】
図６は、本発明の一実施形態によるソフトウェア・アーキテクチャを示す図である。図６に示されるように、システム６００は、ストリーム・フォレストＯＳＭ６０２、ＬｉｎｕｘＯＳ６０４、Ｌｉｎｕｘ仮想ファイル・システム（ＶＦＳ）６０６、ストリーム・ツリーＯＳＭ６０８、１つまたは複数のＬｉｎｕｘＩ2Ｏドライバ６１０を含むファイル・システム・インターフェースを備えることができる。ＬｉｎｕｘＩ2Ｏドライバ６１０が、ＬｉｎｕｘカーネルとＩ2Ｏ規格に従って動作できる。ＬｉｎｕｘＩ2Ｏドライバ６１０はＰＣＩＩ2Ｏドライバ６１２を含むことができる。ＰＣＩＩ2Ｏドライバ６１２はＰＣＩ規格およびＩ2Ｏ規格に従って動作できる。
【００４４】
ファイル・システム・インターフェースは、ＰＣＩ規格に従って信号を通信するバス６１４を介してファイル・システム・マネージャと通信する。ファイル・システム・マネージャは、ストリーム・フォレストＩＳＭ６１６、ストリーム・ツリーＩＳＭ６１８、レイド（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）ＩＳＭ６２０、スカジ（ＳＣＳＩ：Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ＨＤＭ６２２、ＩＲＴＯＳ６２４を有することができる。
【００４５】
本発明のこの実施形態では、システム６００内に示されるモジュールは、Ｃプログラミング言語を使用して実装できるが、本発明の範囲がこの点に限定されるものではない。さらに、本発明のこの実施形態では、システム６００内に示されるモジュールが、２５５文字の長さを有する識別子をサポートする。
【００４６】
ストリーム・ツリーＯＳＭ６０８を、代表的なファイル・システムへのアクセスを提供するよう構成できる。ストリーム・ツリーＯＳＭ６０８を、Ｌｉｎｕｘ規格によって定義される機能に必要な１つまたは複数のＬｉｎｕｘＶＦＳをサポートするよう構成できる。ストリーム・ツリーＯＳＭ６０８を、ストリーム・ツリー・クラス・メッセージをサポートするよう構成できるが、これについては以下により詳細に説明する。ストリーム・ツリーＯＳＭ６０８を、たとえば、Ｌｉｎｕｘカーネルを使用してＬｉｎｕｘＯＳ６０４とともに動作するよう構成できる。ストリーム・ツリーＯＳＭ６０８が、ストリーム・ツリーＩＳＭ６１８などのストリーム・ツリーＩＳＭをサポートできる。
【００４７】
ストリーム・フォレストＯＳＭ６０２は、機能ｌｏｃｔｌ（）Ｋｅｒｎｅｌ  Ｉｎｔｅｒｆａｃｅを提供できる。ストリーム・フォレストＯＳＭ６０２が、「ＩＯＣＴＬ＿ＳＦ＿ＴＲＥＥＣＲＥＡＴＥ」などの機能名を使用して、ストリーム・フォレスト内でストリーム・ツリーを作成するよう機能できる。この機能は、以下に示すように、たとえばＣ言語で定義されている入力バッファを、入力として受け入れることができる。
【００４８】
【表１】
2004533668.tif 000003
また、ストリーム・フォレストＯＳＭ６０２が「ＩＯＣＴＬ＿ＳＦ＿ＴＲＥＥＲＥＮＡＭＥ」などの機能名を使用して、既存ストリーム・ツリーを名称変更するよう機能できる。この機能は、以下に示すように、たとえばＣ言語で定義されている入力バッファを、入力として受け入れることができる。
【００４９】
【表２】
2004533668.tif 000004
また、ストリーム・フォレストＯＳＭ６０２が、「ＩＯＣＴＬ＿ＳＦ＿ＴＲＥＥＥＲＡＳＥ」などの機能名を使用して、既存ストリーム・ツリーを消去するよう機能できる。この機能は、以下に示すように、たとえばＣ言語で定義されている入力バッファを、入力として受け入れることができる。
【００５０】
【表３】
2004533668.tif 000005
ストリーム・フォレストＯＳＭ６０２が、以下のデータ構造のうちの１つまたは複数を使用できる。本明細書で「スーパー・ブロック」と呼ぶデータ構造を使用して、ファイル・システムの初期「ｉノ−ド」を表すことができる。この状況における「ｉノ−ド」は、ファイル・システムのファイル・ノードを指すことがある。スーパー・ブロック・オペレーション・リストは、スーパー・ブロックを操作するために使用される１群の機能であり得る。ｉノ−ド・レコード・データ構造を使用して、ファイル・システムのそれぞれのファイル・ノードを表すことができる。ｉノード・オペレーション・リストは、ｉノードを操作するために使用される１群の機能である。ファイル・レコード・データ構造を使用して、ファイル・システム内の抽象化ファイルを表すことができる。ファイル・オペレーション・リストを使用して、ファイル・オペレーションをサポートできる。オペレーション・リストと組み合せたこれらのデータ構造のオペレーションのすべてを使用して、ファイル・システムを表すことができる。
【００５１】
データ構造のいくつかのために、ストリーム・ツリー・クラス・メッセージを発行できる。たとえば、作成する、ルックアップする、ディレクトリを作成する（「ｍｋｄｉｒ」）、ディレクトリを除去する（「ｒｍｄｉｒ」）、ディレクトリを名称変更するのｉノード・オペレーションのために、ストリーム・ツリー・クラス・メッセージを発行できる。開ける、読み取る、書き込む、シークする、閉じるなどのさまざまなファイル・オペレーションのために、ストリーム・ツリー・クラス・メッセージを発行できる。
【００５２】
ストリーム・フォレストＯＳＭ６０２が、たとえば識別子「ｉ２ｏｆｓ」とともに含まれているファイル・システムをＬｉｎｕｘカーネル内に登録できる。ストリーム・フォレストＯＳＭ６０２が、たとえばルート・ツリー・コーン・コンテナのためのＮＵＬＬ識別子を使用できる。ストリーム・フォレストＯＳＭ６０２が、たとえば現在のツリー・コーン・コンテナのための識別子「．」を使用できる。ストリーム・フォレストＯＳＭ６０２が、たとえば親ツリー・コーン・コンテナのための識別子「．．」を使用できる。
【００５３】
システム６００は、以下のモジュールのうちの１つまたは複数のためのシステム記述を有することができる。
１．  カーネルのためのＭＯＤＵＬＥ＿ＡＵＴＨＯＲ記述
２．  「Ｉ２Ｏ  Ｆｉｌｅｓｙｓｔｅｍ  Ｏｆｆｌｏａｄ  Ｄｒｉｖｅｒ」のＭＯＤＵＬＥ＿ＤＥＳＣＲＩＰＴＩＯＮ
３．  ファイル・システムを登録できるモジュール＿ｉｎｉｔ（）
４．  ファイル・システムの登録を削除できるモジュール＿ｅｘｉｔ（）
５．  ｉ２ｏｆｓ＿ｔｙｐｅｉ２ｏｆｓ、ｒｅａｄ  ｓｕｐｅｒ  ｏｐｅｒａｔｉｏｎ、０のパラメータを有することのできるＤＥＣＬＡＲＥ＿ＦＳＴＹＰＥモジュール
６．  使用されるハンドル毎に１つずつ増加するゼロの第１のハンドルを有することのできるＯＳＭハンドル・マネージャ・モジュール
ａ．  未使用のハンドルを検索できる内部ソフトウェア・インターフェースＡｃｑｕｉｒｅＨａｎｄｌｅ（）
ｂ．  現在使用されているハンドルをフリー・プール内にリリースできる内部ソフトウェア・インターフェースＲｅｌｅａｓｅＨａｎｄｌｅ（ｉｎｔ）
【００５４】
また、システム６００は機能ＶＦＳｉ２ｏｆｓ＿ｒｅａｄ＿ｓｕｐｅｒ（ｓｔｒｕｃｔ  ｓｕｐｅｒ＿ｂｌｏｃｋ＊ｓｂ，ｖｏｉｄ＊ｏｐｔｉｏｎｓ，ｉｎｔ  ｓｉｌｅｎｔ）も提供できる。この機能は、表１で定義された入力を受け入れることができる。
【００５５】
【表４】
2004533668.tif 000006
この機能は、スーパー・ブロック構造内の値を０に設定する。以下の変数を、以下の通りに設定できる。
2004533668.tif 000007
機能は、ｇｅｔ＿ｅｍｐｔｙ＿ｉｎｏｄｅ（）と呼ばれるモジュールを使用して新しいｉノードを作成できる。ｉノードは、以下の設定を有する関連付けられたさまざまな変数ともに、ゼロに設定できる。
inode i_uid=20.
inode i_gid=20.
iノード・オペレーションを、iノード・オペレーション・リストを記述するポインタに設定できる。
iノードi_fopをファイル・オペレーション・リストを記述するポインタに設定できる。
iノードI_modeをS_IFDIR|S-IRUGO|S_IXUGOに設定できる。
iノードをiノード・ハッシュ・テーブル内に挿入できる。
Sb-＞s_rootをルートiノードのd_alloc_root()に設定できる。
ＶＦＳ６０６内のそれぞれのファイル・システムが、少なくとも１つのスーパー・ブロックを有することができ、これにはファイル・システムのアクティビティを開始するためのファイル・システムについての十分な情報が含まれる。このスーパー・ブロックは、以下の通りにＣ構造ストラクトｓｕｐｅｒ＿ｂｌｏｃｋ内に実装できる。
【００５６】
【表５】
2004533668.tif 000008
変数ｓｕｐｅｒ＿ｂｌｏｃｋ−＞ｓ＿ｏｐは、以下のＣ関数を有し、スーパー・ブロックへのアクセスを提供できる。
【００５７】
【表６】
2004533668.tif 000009
ｉノード・インターフェースの例は、以下の通りである。
【００５８】
【表７】
2004533668.tif 000010
変数ｉｎｏｄｅ−＞ｉ＿ｏｐは、以下のＣ関数を有し、以下の通りにスーパー・ブロックへの方法アクセスを提供できる。
【００５９】
【表８】
2004533668.tif 000011
【００６０】
また、システム６００は機能ｃｒｅａｔｅ（ｓｔｒｕｃｔ  ｉｎｏｄｅ＊，ｃｏｎｓｔ  ｃｈａｒ＊，ｉｎｔ，ｉｎｔ，ｓｔｒｕｃｔ  ｉｎｏｄｅ＊＊）も提供する。この機能は、表２に記載された入力を受け入れることができる。
【００６１】
【表９】
2004533668.tif 000012
この機能は、ｇｅｔ＿ｅｍｐｔｙ＿ｉｎｏｄｅ（）を使用して新しいｉノードを作成できる。機能は、ｄｅｎｔｒｙ関係を介してｃｏｎｓｔ  ｃｈａｒ＊変数をそれにアタッチすることにより新しいｉノードを初期化できる。機能は、指定されたサイズを有する新しいｉノード構造を初期化できる。機能は、指定されたモードを有する新しいｉノード構造を初期化できる。機能は、ＳｔｒｅａｍＣｏｎｅＣｒｅａｔｅメッセージをストリーム・ツリーＩＳＭに送ることができる。メッセージは、以下の通りに構成できる。
１．  ＨＡＮＤＬＥを、ＯＳＭハンドル・マネージャから検索できる。
２．  ＴＹＰＥを、ファイルを示す１に設定できる。
３．  ＳＧＬを、ＮｅｗＮａｍｅに設定できる。
ＮｅｗＩｎｏｄｅのデリファレンスは、新しいｉノード構造とともに設定できる。
【００６２】
また、システム６００は機能ｓｔｒｕｃｔ  ｄｅｎｔｒｙ＊ｌｏｏｋｕｐ（ｓｔｒｕｃｔ  ｉｎｏｄｅ＊，ｓｔｒｕｃｔ  ｄｅｎｔｒｙ＊）を提供できる。この機能は、表３に記載された入力を受け入れることができる。
【００６３】
【表１０】
2004533668.tif 000013
この機能は、ＳｔｒｅａｍＣｏｎｅＩｄｅｎｔｉｆｙメッセージをストリーム・ツリーＩＳＭ６１８に送ることができる。メッセージは、以下の通りに構成できる。
１．  ＰＡＲＥＮＴＨＡＮＤＬＥを、ＰａｒｅｎｔＤｉｒｅｃｔｏｒｙｉノード・ローカル・データ内で識別されるハンドルに設定できる。
２．  ＣＨＩＬＤＨＡＮＤＬＥを、ＯＳＭハンドル・マネージャから検索されるハンドルに設定できる。
３．  ＡＴＴＲＩＢＵＴＥＳを、ＳＴＲＥＡＭＣＯＮＥＣＲＥＡＴＥ＿ＱＵＥＲＹに設定できる。
４．  ＳＧＬを、Ｎａｍｅに設定できる。
機能は、ｇｅｔ＿ｅｍｐｔｙ＿ｉｎｏｄｅ（）を使用して新しいｉノードを作成できる。機能は、ｄｅｎｔｒｙ関係を介してｃｏｎｓｔ  ｃｈａｒ＊変数をそれにアタッチすることにより新しいｉノードを初期化できる。機能は、ＳｔｒｅａｍＣｏｎｅＧｅｔＩｎｆｏｒｍａｔｉｏｎメッセージをストリーム・ツリーＩＳＭに送ることができる。メッセージは、以下の通りに構成できる。
１．  ＨＡＮＤＬＥを、上記のＣＨＩＬＤＨＡＮＤＬＥに設定できる。
２．  ＳＧＬを、タイプＩｎｆｏｒｍａｔｉｏｎＲｅｓｕｌｔＢｌｏｃｋのローカル・データ構造に設定できる。
機能は、ＩｎｆｏｒｍａｔｉｏｎＲｅｓｕｌｔＢｌｏｃｋからのｉノード値を設定できる。機能は、作成されたｉノードにＮｅｗＩｎｏｄｅ変数のデリファレンスを設定できる。
【００６４】
システム６００は、機能ｍｋｄｉｒ（ｓｔｒｕｃｔ  ｉｎｏｄｅ＊，ｓｔｒｕｃｔ  ｄｅｎｔｒｙ＊，ｉｎｔ）を提供できる。この機能は、表４に記載された入力を受け入れることができる。
【００６５】
【表１１】
2004533668.tif 000014
この機能は、ディレクトリを作成するためのＳｔｒｅａｍＣｏｎｅＣｒｅａｔｅメッセージを送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ｉノード構造入力ＰａｒｅｎｔＤｉｒｅｃｔｏｒｙ内で識別されるハンドルに設定できる。
２．  ＴＹＰＥを、２に設定できる。
３．  ＳＧＬを、実際の名称を有する入力Ｎａｍｅに設定できる。
【００６６】
システム６００は、機能ｒｍｄｉｒ（ｓｔｒｕｃｔ  ｉｎｏｄｅ＊，ｓｔｒｕｃｔ  ｄｅｎｔｒｙ＊）を提供できる。この機能は、表５に記載された入力を受け入れることができる。
【００６７】
【表１２】
2004533668.tif 000015
この機能は、ディレクトリを除去するためのＳｔｒｅａｍＣｏｎｅＥｒａｓｅメッセージを送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ｉノード構造入力ＰａｒｅｎｔＤｉｒｅｃｔｏｒｙ内で識別されるハンドルに設定できる。
２．  ＳＧＬを、入力Ｎａｍｅに設定できる。
【００６８】
また、システム６００は機能ｒｅｎａｍｅ（ｓｔｒｕｃｔ  ｉｎｏｄｅ＊，ｓｔｒｕｃｔ  ｄｅｎｔｒｙ＊，ｓｔｕｒｃｔ  ｉｎｏｄｅ＊，ｓｔｒｕｃｔ  ｄｅｎｔｒｙ＊）を提供できる。この機能は、表６に記載された入力を受け入れることができる。
【００６９】
【表１３】
2004533668.tif 000016
この機能は、ＳｔｒｅａｍＣｏｎｅＩｄｅｎｔｉｆｙメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。
１．  ＰＡＲＥＮＴＨＡＮＤＬＥを、ＯＳＭハンドルのためのＯｌｄＤｉｒｉノード内部記憶装置から設定できる。
２．  ＣＨＩＬＤＨＡＮＤＬＥを、ＯＳＭハンドル・マネージャから検索される新しいハンドルに設定できる。
３．  ＡＴＴＲＩＢＵＴＥＳを、ＳＴＲＥＡＭＣＯＮＥＣＲＥＡＴＥ＿ＱＵＥＲＹに設定できる。
４．  ＳＧＬを、ＯｌｄＮａｍｅに設定できる。
機能は、ＳｔｒｅａｍＣｏｎｅＲｅｎａｍｅメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ＳｔｒｅａｍＣｏｎｅＩｄｅｎｔｉｆｙのＣＨＩＬＤＨＡＮＤＬＥに設定できる。
２．  ＮＥＷＰＡＲＥＮＴを、ＯＳＭハンドルのためのＮｅｗＤｉｒｉノード内部記憶装置に設定できる。
３．  ＳＧＬを、ＮｅｗＮａｍｅに設定できる。
機能は、ＳｔｒｅａｍＣｏｎｅＣｌｏｓｅメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。ＨＡＮＤＬＥを、ＳｔｒｅａｍＣｏｎｅＲｅｎａｍｅメッセージから以前のＨＡＮＤＬＥに設定できる。
【００７０】
また、システム６００は機能ｔｒｕｎｃａｔｅ（ｓｔｒｕｃｔ  ｉｎｏｄｅ＊）を提供できる。この機能は、表７に記載された入力を受け入れることができる。
【００７１】
【表１４】
2004533668.tif 000017
機能は、ＳｔｒｅａｍＣｏｎｅＲｅｓｉｚｅメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ｉノード内部ＯＳＭハンドル記憶装置から検索できる。
２．  ＳＩＺＥを、ｉノード変数ｉ＿ｓｉｚｅから検索できる。
ＶＦＳ６０６内のそれぞれのファイルが、少なくとも１つのスーパー・ブロックを有することができ、これにはファイル・システムのアクティビティを開始するためのファイル・システムについての十分な情報が含まれる。このスーパー・ブロックは、以前に記述したものなどのＣ構造ｓｔｒｕｃｔ  ｓｕｐｅｒ＿ｂｌｏｃｋ内で詳述される。方法変数、ｆ＿ｏｐは、ファイル・オペレーションへのアクセスを提供できる。ｓｔｒｕｃｔ  ｓｕｐｅｒ＿ｏｐｅｒａｔｉｏｎｓ＊ｓ＿ｏｐ機能は、ＯＳＭのために所望されることのあるルートｉノードへのアクセスを提供できる。
【００７２】
【表１５】
2004533668.tif 000018
システム６００は、以下に記述する１つまたは複数のファイル・オペレーションを提供できる。変数ｆ−＞ｓ＿ｏｐは、以下のＣ関数を有することができ、スーパー・ブロックへのアクセスを提供できる。
【００７３】
【表１６】
2004533668.tif 000019
【００７４】
システム６００は、機能ｌｌｓｅｅｋ（ｓｔｒｕｃｔ  ｆｉｌｅ＊，ｏｆｆ＿ｔ，ｉｎｔ）を提供できる。この機能は、表８に記載された入力を受け入れることができる。
【００７５】
【表１７】
2004533668.tif 000020
この機能は、ＳｔｒｅａｍＣｏｎｅＳｅｅｋメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ＯＳＭハンドルのためのノード内部ハンドル記憶装置から設定できる。
２．  ＮＥＷＰＯＳＩＴＩＯＮを、ＯｆｆｓｅｔおよびＯｒｉｇｉｎから計算によって得られた位置に設定できる。
【００７６】
システム６００は、機能ｒｅａｄ（ｓｔｒｕｃｔ  ｆｉｌｅ＊，ｃｈａｒ＊，ｓｉｚｅ＿ｔ，ｌｏｆｆ＿ｔ）を提供できる。この機能は、表９に記載された入力を受け入れることができる。
【００７７】
【表１８】
2004533668.tif 000021
この機能は、ＳｔｒｅａｍＣｏｎｅＲｅａｄメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ＯＳＭハンドルのためのノード内部ハンドル記憶装置から設定できる。
２．  ＳＧＬを、ＢｕｆｆｅｒおよびＳｉｚｅに設定できる。
【００７８】
システム６００は、機能ｗｒｉｔｅ（ｓｔｒｕｃｔ  ｆｉｌｅ＊，ｃｏｎｓｔ  ｃｈａｒ＊，ｓｉｚｅ＿ｔ，ｌｏｆｆ＿ｔ）を提供できる。この機能は、表１０に記載された入力を受け入れることができる。
【００７９】
【表１９】
2004533668.tif 000022
この機能は、ＳｔｒｅａｍＣｏｎｅＷｒｉｔｅメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ＯＳＭハンドルのためのノード内部記憶装置から設定できる。
２．  ＳＧＬを、ＢｕｆｆｅｒおよびＳｉｚｅに設定できる。
【００８０】
システム６００は、機能ｒｅａｄｄｉｒ（ｓｔｒｕｃｔ  ｆｉｌｅ＊，ｖｏｉｄ＊，ｆｉｌｌｄｉｒ＿ｔ）を提供できる。この機能は、表１１に記載された入力を受け入れることができる。
【００８１】
【表２０】
2004533668.tif 000023
この機能は、ＳｔｒｅａｍＣｏｎｅＥｎｕｍｅｒａｔｅメッセージをＩＳＭに送ることができる。メッセージは、以下の通りに構成される。
１．  ＨＡＮＤＬＥを、ＯＳＭハンドルのためのノード内部記憶装置から設定できる。
２．  ＥＮＵＭＥＲＡＴＯＲを、Ｃｏｕｎｔに設定する。
３．  ＳＧＬを、Ｅｎｔｒｙのファイル名バッファに設定できる。
４．  ＳＧＬのサイズを２５５に設定できる。
【００８２】
また、システム６００は以下の通りにｄｅｎｔｒｙインターフェースを提供できる。
【００８３】
【表２１】
2004533668.tif 000024
【００８４】
ストリーム・ツリーＩＳＭ６１８が、本明細書に定義するように、１つまたは複数のストリーム・ツリー・クラス・メッセージをサポートできる。ストリーム・ツリー６１８が機能し、ストリーム・ツリーＯＳＭ６０８などのストリーム・ツリーＯＳＭからのメッセージをサポートできる。ストリーム・フォレストＩＳＭ６１６が、本明細書に定義するように、ストリーム・フォレスト・クラス・メッセージをサポートできる。ストリーム・フォレストＩＳＭ６１６が機能し、ストリーム・フォレストＯＳＭ６０２などのストリーム・フォレストＯＳＭからのメッセージをサポートできる。
【００８５】
ストリーム・フォレストＩＳＭ６１６が、ユーザ・インターフェースを有することができる。ユーザ・インターフェースは、初期設定で１つまたは複数のストリーム・ツリーを表示できるユーザ・スクリーンを有することができる。ユーザが、新しいストリーム・ツリーを作成できる。新しいストリーム・ツリーを作成する場合に、ユーザには、サイズと識別を尋ねるスクリーンが提示される。ストリーム・ツリーが作成される場合は、ストリーム・ツリー・クラス・オブジェクトが作成される。ユーザはまた、ストリーム・ツリーを消去することもできる。ユーザ・インターフェースは、ストリーム・ツリーの消去の確認を提供できる。適宜、ストリーム・フォレスト・メッセージを取り扱い、ツリー・オブジェクトを作成することができる。
【００８６】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＣｒｅａｔｅを提供できる。このメッセージを使用して、情報を格納する新しいストリーム・コーンを作成でき、表１２に記載された入力を受け入れることができる。
【００８７】
【表２２】
2004533668.tif 000025
【００８８】
また、システム６００はメッセージＳｔｒｅａｍＣｏｎｅＥｎｕｍｅｒａｔｅを提供できる。このメッセージを使用して、ストリーム・コーン・コンテナ内に１つまたは複数のストリーム・コーンをリストでき、表１３に記載された入力を受け入れることができる。
【００８９】
【表２３】
2004533668.tif 000026
【００９０】
システム６００は、ハンドル・マネージャからＨＡＮＤＬＥに関係するｉノードを検索できる。エニュメレータが０に設定されているとき、親としてハンドルに関係するｉノードとともに「ｅｘｔ２ｆｓ」ライブラリ呼出しｄｉｒ＿ｉｔｅｒａｔｅ（）を使用して、「ｅｘｔ２」ファイルシステム上にストリーム・コーン識別子のリストを生成することができる。ＥＮＵＭＥＲＡＴＯＲインデックスに対応するリスト・エントリをＳＧＬ内にコピーできる。
【００９１】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＥｒａｓｅを提供できる。このメッセージを使用して、ストリーム・コーン識別子を消去でき、表１４に記載された入力を受け入れることができる。
【００９２】
【表２４】
2004533668.tif 000027
【００９３】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＧｅｔＩｎｆｏｒｍａｔｉｏｎを提供できる。このメッセージを使用して、ストリーム・コーンについての情報を検索でき、表１５に記載された入力を受け入れることができる。
【００９４】
【表２５】
2004533668.tif 000028
【００９５】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＩｄｅｎｔｉｆｙを提供できる。このメッセージを使用して、ストリング識別子に対してハンドル識別子をマッピングでき、表１６に記載された入力を受け入れることができる。
【００９６】
【表２６】
2004533668.tif 000029
【００９７】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＬｏｃｋを提供できる。このメッセージを使用して、１バイトの範囲のファイルをロックでき、表１７に記載された入力を受け入れることができる。
【００９８】
【表２７】
2004533668.tif 000030
【００９９】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＲｅａｄを提供できる。このメッセージを使用して、ストリーム・コーンからブロックを読み取ることができ、表１８に記載された入力を受け入れることができる。
【０１００】
【表２８】
2004533668.tif 000031
【０１０１】
また、システム６００はメッセージＳｔｒｅａｍＣｏｎｅＲｅｌｅａｓｅを提供できる。このメッセージを使用して、指定したハンドルの識別を閉じることができ、表１９に記載された入力を受け入れることができる。
【０１０２】
【表２９】
2004533668.tif 000032
この機能は、ｉノード識別子からＨＡＮＤＬＥをアンリンクできる。
【０１０３】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＲｅｎａｍｅを提供できる。このメッセージを使用して、ストリーム・コーンを名称変更することができ、表２０に記載された入力を受け入れることができる。
【０１０４】
【表３０】
2004533668.tif 000033
【０１０５】
また、システム６００はメッセージＳｔｒｅａｍＣｏｎｅＲｅｓｉｚｅを提供できる。このメッセージを使用して、ストリーム・コーンをサイズ変更することができ、表２１に記載された入力を受け入れることができる。
【０１０６】
【表３１】
2004533668.tif 000034
【０１０７】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＳｅｅｋを提供できる。このメッセージを使用して、ストリーム・コーンの位置を変更することができ、表２２に記載された入力を受け入れることができる。
【０１０８】
【表３２】
2004533668.tif 000035
【０１０９】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＳｅｔＩｎｆｏｒｍａｔｉｏｎを提供できる。このメッセージを使用して、ストリーム・コーンに関する情報を設定することができ、表２３に記載された入力を受け入れることができる。
【０１１０】
【表３３】
2004533668.tif 000036
【０１１１】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＵｎｌｏｃｋを提供できる。このメッセージを使用して、以前に設定されたバイトのロック範囲をアンロックすることができ、表２４に記載された入力を受け入れることができる。
【０１１２】
【表３４】
2004533668.tif 000037
【０１１３】
システム６００は、メッセージＳｔｒｅａｍＣｏｎｅＷｒｉｔｅを提供できる。このメッセージを使用して、ブロックをストリーム・コーンに書き込むことができ、表２５に記載された入力を受け入れることができる。
【０１１４】
【表３５】
2004533668.tif 000038
【０１１５】
本発明の実施形態の一定の特徴を本明細書に記述し例示してきたが、当業者には、多くの修正形態、代替物、変更形態、均等物が思い浮かべられることであろう。したがって、頭記の特許請求の範囲は、本発明の実施形態の真の趣旨内に含まれる、このようなすべての修正形態および変更形態を包含するためのものであることを理解されたい。
【図面の簡単な説明】
【０１１６】
【図１】本発明の一実施形態を実践するのに適切なシステムを示す図である。
【図２】本発明の一実施形態によるクライアント・システムを示すブロック図である。
【図３】本発明の一実施形態によるサーバ・システムを示すブロック図である。
【図４】本発明の一実施形態によるクライアント・システムによって実施されるオペレーションを示すブロック流れ図である。
【図５】本発明の一実施形態によるサーバ・システムによって実施されるオペレーションを示すブロック流れ図である。
【図６】本発明の一実施形態によるソフトウェア・アーキテクチャを示す図である。
【図１】
2004533668.tif 000039
【図２】
2004533668.tif 000040
【図３】
2004533668.tif 000041
【図４】
2004533668.tif 000042
【図５】
2004533668.tif 000043
【図６】
2004533668.tif 000044
【国際公開パンフレット】
2004533668.tif 000045
2004533668.tif 000046
2004533668.tif 000047
2004533668.tif 000048
2004533668.tif 000049
2004533668.tif 000050
2004533668.tif 000051
2004533668.tif 000052
2004533668.tif 000053
2004533668.tif 000054
2004533668.tif 000055
2004533668.tif 000056
2004533668.tif 000057
2004533668.tif 000058
2004533668.tif 000059
2004533668.tif 000060
2004533668.tif 000061
2004533668.tif 000062
2004533668.tif 000063
2004533668.tif 000064
2004533668.tif 000065
2004533668.tif 000066
2004533668.tif 000067
2004533668.tif 000068
2004533668.tif 000069
2004533668.tif 000070
2004533668.tif 000071
2004533668.tif 000072
2004533668.tif 000073
2004533668.tif 000074
2004533668.tif 000075
2004533668.tif 000076
2004533668.tif 000077
2004533668.tif 000078
2004533668.tif 000079
2004533668.tif 000080
2004533668.tif 000081
2004533668.tif 000082
2004533668.tif 000083
2004533668.tif 000084
2004533668.tif 000085
2004533668.tif 000086
2004533668.tif 000087
2004533668.tif 000088
2004533668.tif 000089
2004533668.tif 000090
2004533668.tif 000091
2004533668.tif 000092
2004533668.tif 000093
2004533668.tif 000094
【国際公開パンフレット（コレクトバージョン）】
2004533668.tif 000095
2004533668.tif 000096
【国際調査報告】
2004533668.tif 000097
2004533668.tif 000098
2004533668.tif 000099