JP4060890B2 - 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ - Google Patents

階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ Download PDF

Info

Publication number
JP4060890B2
JP4060890B2 JP54426298A JP54426298A JP4060890B2 JP 4060890 B2 JP4060890 B2 JP 4060890B2 JP 54426298 A JP54426298 A JP 54426298A JP 54426298 A JP54426298 A JP 54426298A JP 4060890 B2 JP4060890 B2 JP 4060890B2
Authority
JP
Japan
Prior art keywords
driver
input
driver means
processing
reanalysis
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.)
Expired - Fee Related
Application number
JP54426298A
Other languages
English (en)
Other versions
JP2001520774A (ja
Inventor
キャブレラ,ルイス,フィリペ.
キムラ,ゲーリー,ディー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US08/862,025 external-priority patent/US5931935A/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2001520774A publication Critical patent/JP2001520774A/ja
Application granted granted Critical
Publication of JP4060890B2 publication Critical patent/JP4060890B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

1.発明の分野
本発明は、入出力(I/O)システム内の複数のドライバが入出力要求の処理に参加することを可能にするシステムおよび方法に関する。さらに具体的には、本発明によれば、あるドライバが通常の入出力処理シーケンスに割り込みをかけて別のドライバにコントロール(制御権)を引き渡し、以後の入出力要求処理をそのドライバに任せることを可能にしている。
2.従来技術の説明
関数型コンピュータ・システムは、3つの基本コンポーネントから構成されているのが一般である。第1のコンポーネントはコンピュータ・ハードウェアである。コンピュータ・ハードウェアとしては、中央処理ユニット(CPU)などのデバイス、RAMやROMなどのシステム・メモリ、磁気または光ディスク・ストレージなどの大容量記憶装置、キーボードまたはその他の入力デバイス、およびディスプレイまたはその他の出力デバイスがある。コンピュータ・システムのユーザはユーザまたはアプリケーション・プログラムとやりとり(インタラクション−対話)しているのが一般である。そのようなプログラムとしては、なじみのあるワードプロセッシング・アプリケーション、スプレッドシート・アプリケーション、データベース・アプリケーションなどがある。最新の関数型コンピュータ・システムの最後のコンポーネントはオペレーティング・システムである。コンピュータ・オペレーティング・システムは、ユーザにアプリケーション・プログラムの実行を開始させる、といったように多数の関数を実行している。さらに、最新オペレーティング・システムは、アプリケーション・プログラムとコンピュータ・システム・ハードウェアとの間のインタフェースも提供している。以上のように、かつてはアプリケーション・プログラムがコンピュータ・システム・ハードウェアに直接にアクセスすることが普通であったが、最新オペレーティング・システムでは、標準化された統一インタフェースが用意されているため、ユーザ・アプリケーションが標準化された方法でコンピュータ・ハードウェアとのインタフェースとなったり、コンピュータ・ハードウェアに直接にアクセスしたりすることが可能になっている。
ユーザ・アプリケーションなどのプロセスと特定タイプのハードウェア・デバイスとを統一インタフェースで結ぶために、実際のハードウェアとプロセスの間にはいくつかのソフトウェア層が設けられている。例えば、プロセスはコールを行ってオペレーティング・システムに入り込むことが可能になっている。これに対して、オペレーティング・システムはハードウェア・ドライバ層が提供するサービスを利用することができる。この場合、ハードウェア・ドライバ層はハードウェアとの直接インタフェースとなっている。この階層化による方法の主な利点は、層の追加や置換が、残りの層に大きな影響を与えないで行えることである。例えば、新しいハードウェア・デバイスがシステムに追加されるとき、新しいドライバが追加できるので、オペレーティング・システムはそのハードウェアにアクセスすることが可能になる。これらの変更はすべて、既存のアプリケーション・プロセスに与える影響を最小限または皆無にして行うことができる。
ドライバがハードウェア・デバイスとのインタフェースとなるために使用されるとき、モノリシック(monolithic)なドライバを作り、オペレーティング・システムと特定のハードウェア・デバイスとのインタフェースになるために必要な、すべての機能をドライバに組み込んでおくのが従来の傾向であった。最近では、オペレーティング・システムは複数のドライバを使用して種々の入出力タスクを実行するように開発されている。これの特に顕著な例として、ディスクや他の大容量記憶装置に対する入出力要求を取り扱うときがある。
データは大容量記憶デバイスに階層的にストアされ、ディレクトリまたはファイルはツリー構造に似た階層に編成されているのが代表的である。任意のファイルまたはディレクトリのロケーションはファイルのパス名で指定されるのが代表的である。パス名はルートまたは開始ディレクトリで始まり、必要とするファイルまたはディレクトリに到達するまでの各サブディレクトリの名前を指定しているのが代表的である。例えば、“file.dat”と名づけたファイルはルート・ディレクトリ“root”のサブディレクトリである、ディレクトリ“temp”にストアすることができる。従って、パス名は/root/temp/file.datとなる。ファイル・システムでのファイル名の解決は、マルチステージ・プロシージャになっているのが代表的である。このプロシージャはファイル・システムに正しく識別させる必要のある、名前付き構成要素(named component)のすべてをデコードするステージから始まっているのが一般である。次に、このプロシージャは、ファイル名中の連続する構成要素を、通常は左から右に向かって識別する繰り返しプロセスが続いている。最後に、このプロシージャはこれらの名前解決の各々が成功したか、失敗したかを判別している。従って、この例では、パス名は連続する構成要素に分解され、解決プロセスはルート・ディレクトリ、tempディレクトリ、およびファイルfile.datを順番に識別していくことになる。
大部分のUNIXシステムでは、複数のデータ・マネージャが1つのシステム(installation:導入されたシステムのこと)内に共存することが可能になっている。これを達成するために、階層ファイル・ネーム・スペース(hierarchicalfile name space:ファイル名空間)はファイル名とディレクトリ名のサブツリーに分割されている。この場合、各サブツリーの管理は専用のデータ・マネージャが行っている。入出力要求が行われると、名前解決プロセスは名前を特定のサブツリーに変換するので、その入出力要求はそのサブツリーのデータ・マネージャによって処理されることになる。そのあと、データ・マネージャは組み込みUNIXファイル・システムをコールして、データの実際のストアとリトリーブを行うことができる。従って、データ・マネージャは特定ファイル・システムの能力を拡張する付加価値コンポーネントの働きをする。
複数のデータ・マネージャがUNIX入出力システムに存在するときは、正しいデータ・マネージャへの要求のルーチング(routing: 経路選択)は「マウントポイント(mount point)」のメカニズムを通して達成されている。サブツリーの各々を表すために1つのマウントポイントがネームスペースに設定されている。名前解決プロセスの過程で、あるマウントポイントが現れると、UNIX入出力システムは、そのマウントポイントで表されたサブツリーの管理を担当する該当データ・マネージャに要求を送付する。要求を受け取ると、その該当データ・マネージャは名前解決プロセスを継続する。
標準UNIXファイル・システムはシンボリックリンク(symbolic link)もサポートしている。シンボリックリンクは名前解決プロシージャが別の名前を使用して新たに開始されるという、組み込み型ケースのひとつである。シンボリックリンクが現れたとき、あるファイル名は別のファイル名に盲目的に置き換えられ、名前解決プロセスはその置換名を使用して新たに開始される。
以上のように、従来のファイル・システムは複数のデータ・マネージャを使用してアドレス空間の異なる部分を管理していた。これらのデータ・マネージャは入出力要求を処理するために、標準ファイル・システムとやりとりすることも可能であった。しかし、従来システムで使用されているモデルは相対的に決定論モデル(deterministic)であったため、モデル設計者が意図していなかったシナリオまでをカバーする拡張は不可能であった。言い換えれば、データ・マネージャとファイル・システムとのやりとりは相対的に固定しており、各々は定義された役割を実行していた。データ・マネージャまたはファイル・システムのどちらかを除去し、それを別のコンポーネントで置き換えて他のなんらかの関数を実行しようとしても、それは困難であった。同様に、別のマネージャをシステムに入れてサブツリーの管理以外の関数を実行させようとしても、それは、不可能ではないとしても、既存のドライバ・モデルを使用して行うことが困難であった。従って、複数のコンポーネントが協力し合って入出力要求を処理できるようにし、その場合、コンポーネントの数が固定されていないで、システムの設定時に意図していなかった関数を処理する新規コンポーネントを追加するように随意に拡張または変更できるようにする方法が望まれていた。また、いずれかのコンポーネントを置き換えても、残りのコンポーネントが大きな破壊を受けないようにすることも望まれていた。
従来技術のもう1つの問題は複数のデータ・マネージャが使用されていても、名前解決プロセスに参加することが、データ・マネージャが制御権をもつネームスペースに制限されていることである。言い換えれば、複数のマウントポイントを識別するためには、複数のデータ・マネージャは各々が特定のマウントポイントを取り扱うようにインストールされていなければならない。そこで、望まれることは、単一のデータ・マネージャが複数のマウントポイントまたはサブツリーの情報を管理できるようにすることである。
以上のように、望まれていることは、複数のデータ・マネージャまたはドライバを使用して入出力要求を処理する入出力システムを動的に拡張し、再構成するメカニズムである。また、望まれていることは、そのような再構成や拡張を行っても、システム内の他のデータ・マネージャやドライバに与える影響を最小限にすることである。
発明の概要
上述した従来技術の問題は、本発明によれば、入出力システムにおける通常の処理シーケンスに割り込みをかけ、コントロール(制御権)をあるデータ・マネージャまたはドライバから別のデータ・マネージャまたはドライバに移すようにするシステムおよび方法を提供することによって解決している。本発明は、入出力要求を満たす際に、複数のデータ・マネージャまたはドライバを使用して種々の処理関数を実行するようにした入出力システムで利用すると、特に好都合である。
複数のドライバまたはデータ・マネージャが協力し合って入出力要求を満たすようにしたシステムでは、ドライバまたはデータ・マネージャは階層関係にあって、各ドライバが種々タイプの関数を実行して入出力要求を処理していることがよくある。例えば、入出力システムはファイル・システム・ドライバがデバイス・ドライバの上に置かれた階層構造になっている場合がある。この場合、入出力要求を受けると、ファイル・システム・ドライバは、ファイル名を解決し、ファイル名をディスク上の特定のロケーションに変換するといった、ある種の関数を実行している。そのあと、ディスク上の特定ロケーションはデバイス・ドライバに渡され、デバイス・ドライバはディスク上の正しいロケーションを見つけ、必要とする情報を読み書きしている。他のデバイスも、階層構造上でファイル・システム・ドライバの上か下に置かれている。例えば、望ましい方法は、ファイル・システム・ドライバとデバイス・ドライバの間に別の(冗長)ファイル・システム・ドライバを置くことである。このようすると、この冗長ファイル・システム・ドライバはデータ・ミラーリング(data mirroring)を行って、データをディスク上の複数のロケーションにミラーリング(複製)したり、データを複数のディスクにミラーリング(複製)したりできる。
従来の階層ドライバ・モデルでは、情報はある層から別の層に渡され、各層が独自の種々タスクを実行してからその要求を別の層に渡すようにしている。ケースによっては、通常の処理シーケンスに割り込みをかけて、入出力要求の少なくとも一部を処理するためのコントロールを別のドライバに渡すようにすると、非常に好都合な場合がある。例えば、おそらく重要なことは、ある種のファイルを特殊なロケーションにストアしておくことである。その特殊ロケーションにストアされたファイルへのアクセス管理は、ドライバを開発することで行うことができる。従って、ファイル・システム・ドライバが名前を特殊ロケーションに変換するとき、望ましいことは、入出力要求を通常のデバイス・ドライバに渡すのではなく、入出力要求のコントロールをその情報を処理するドライバに渡すことである。
本発明によれば、通常の処理シーケンスに割り込みをかけ、入出力要求を特定のドライバに渡すことを可能にしている。本発明の方法は動的に拡張可能であり、システムは他のドライバのオペレーションを中断することなく、ドライバを追加または除去するように構成することができる。これを達成するために、新規のディレクトリとファイル属性が定義され、これは「再解析ポイント(reparsepoint)」属性と名づけられている。この再解析ポイントは付加的属性であるので、個別ファイルとディレクトリは、再解析ポイント属性のステータスに応じて再解析ポイントにすることも、しないことも可能になっている。
再解析ポイント属性は、好ましくは、タグとデータ値の両方をもっている。タグはどのドライバが再解析ポイントの所有者であるかを示すために使用される。一般的に、再解析ポイントの所有者はその再解析ポイントが係わりをもつ入出力要求の全部または一部を処理することを受け持っている。データ値は所有者によって再解析ポイントにストアされたデータである。従って、所有者は再解析ポイントの値を使用して、再解析ポイントが係わっている特定の入出力要求を完了するために必要または役立つデータをストアすることができる。
複数の階層化ドライバを含んでいる実施形態では、ある再解析ポイントが特定のドライバによって識別されると、そのドライバはその再解析ポイントのタグとデータ値を抜き出すようになっている。入出力要求は、再解析ポイントのタグとデータ値と一緒に、あるドライバが自分がその再解析ポイントの所有者であると認識するまで他のドライバに渡されていく。その所有者はコントロールを受け取り、入出力要求の処理を再開する。再解析ポイントの所有者は、入出力要求を最後まで処理することも、他のドライバを利用して入出力要求の処理を完了させることもできる。また、所有者は他のコンピュータを利用して、入出力要求の処理を完了させることも可能である。
各再解析ポイントはタグと値の両方をもっているので、再解析ポイント・メカニズムは、任意の数のドライバが使用して任意の数の関数を達成できるようにする、非常に柔軟性のある構造になっている。例えば、ローカル・ストレージからアーカイブ・ストレージに自動的に移行されるデータを管理するために、コントロールを階層記憶マネージャに渡すことができる。別の例として、複数の異なるディスク・ドライブにストアされているファイルを管理する分散ファイル・マネージャにコントロールを渡すこともできる。さらに別の例として、コントロールをセキュア・ファイル・マネージャに渡し、セキュア・ロケーションにストアされているファイルや暗号化フォーマットでストアされているファイルを管理させることもできる。基本的には、本発明によれば、通常の処理シーケンスに割り込みをかけ、コントロールを異なるドライバに渡して特殊タイプのファイルやディレクトリの特殊処理要求を処理させることができる。このメカニズムによれば、入出力システムがもつ能力を時間と共に変化する要求に見合うように、統一された方法で拡張することができる。
本発明は、入出力システムによって通常サポートされる標準入出力オペレーション以上に入出力システムの能力を拡張できるだけの、十分な幅広さをもっている。ドライバまたはマネージャは、ある標準入出力オペレーションから得られるアクションが標準入出力オペレーションとは関係のないアクションになるように開発することができる。例えば、ホーム・オートメーション環境では、再解析ポイントは任意の数の目標を達成するために使用できる。再解析ポイントは警察署や消防署を呼び出すために使用できる。例えば、1つの可能な実装例として、再解析ポイントを設定して、警察署や消防署の電話番号を再解析ポイントの一部としてストアしておくことができる。入出力システムが再解析ポイントにアクセスすると、その再解析ポイントを所有するドライバは、上述したように処理コントロールを受け取ることになる。そのあと、所有者は該当の電話番号をリトリーブして、モデムまたは他のシステムを通してその電話番号をダイヤルし、通知、情報、音声、その他を被呼び出し側エンティティに送信することができる。本発明は他のどうような状況においても使用できるので、標準入出力オペレーションとは関係のない結果を得るために標準入出力オペレーションを使用することができる。
本発明のその他の利点は以下の説明の中で明らかにされているが、そのいくつかは以下の説明を読むことで理解できるものと、本発明を実施することで理解できるものとがある。本発明の利点は請求の範囲に具体的に記載されている種々の手段とその組み合わせによって実現し、得ることができる。本発明の上記およびその他の特徴は以下の説明および請求の範囲を読めば十分に理解できるが、以下で説明するように本発明を実施することで知得することもできる。
【図面の簡単な説明】
本発明の上述した利点およびその他の利点がどのようにして得られるかを説明するために、以下では、要約して上述した本発明を、添付図面に図示されている具体的実施形態を参照して詳しく説明することにする。なお、添付図面に図示の実施形態は本発明の代表的な実施例であり、従って、本発明の範囲を限定するものではないとの了解のもとで、以下では、添付図面を参照してより具体的にかつ詳細に本発明を説明し、解説することにする。
図1は階層化されたドライバを採用する入出力システムを示す図である。
図2は、再解析ポイント属性に出会ったときある階層ドライバから別の階層ドライバにコントロールがどのように渡されるかを示す図である。
図3は、本発明で使用するのに適しているファイルまたはディレクトリの属性を示す図である。
図4は、2つの階層ドライバによって提供されるサービスを示すと共に、本発明によってドライバに組み込まれている全体機能を示す図である。
図5は、本発明がどのように使用されて、再解析ポイントが係わりをもつ入出力要求が処理されるかを示す例である。
図6は図5に示す例のディレクトリ構造を示す図である。
図7は、別のコンピュータを使用して入出力要求を完了する場合の例を示す図である。
図8は、本発明が入出力システムの能力をどのように拡張しているかを示す図である。
好ましい実施形態の詳細な説明
以下では、本発明のシステムおよび方法を実現するために使用される実施形態の構造または処理を図面を参照して具体的に説明しながら、本発明について説明する。上記のように図面を参照して本発明を説明するが、そのことは本発明の範囲を限定するものではない。本発明が目的とする方法とシステムは、どちらも、入出力システムにおける通常の処理シーケンスに割り込みをかけ、コントロール(制御権)を別のドライバに渡して入出力要求の以後の処理をそのドライバに任せるようにしたものである。本発明の実施形態では、特殊目的または汎用目的のコンピュータを含み、そのコンピュータは中央処理ユニット(CPU)などの標準コンピュータ・ハードウェアまたはコンピュータ実行可能命令を実行する他の処理手段、実行可能命令をストアしておくためのコンピュータ読取可能媒体、情報を表示または出力するディスプレイまたは他の出力デバイス、情報を入力するためのキーボードまたは他の入力手段、その他を装備している。本発明はコントロールをあるドライバから別のドライバに渡すことを目的としているので、本発明の範囲に属する実施形態は一般的に入出力システムをもち、この入出力システムは複数のドライバまたはデータ・マネージャを使用して入出力要求を完了するようにしている。しかし、本発明は、特に断りがない限り、コンピュータ・ハードウェア上で実行される入出力システムのタイプに制約されるものではない。
本発明の範囲に属する実施形態には、実行可能命令を格納しているコンピュータ読取可能媒体も含まれている。かかるコンピュータ読取可能媒体としては、汎用目的または特殊目的コンピュータがアクセスできる媒体ならば、どのような媒体でも利用可能である。例を挙げると、そのようなコンピュータ読取可能媒体には、RAM、ROM、EEPROM、CD−ROMや他の光ディスク記憶装置、磁気ディスク記憶装置、または必要とする実行可能命令をストアするために使用できて、汎用目的または特殊目的コンピュータがアクセスできる他の媒体があるが、これらに限定されるものではない。コンピュータ読取可能媒体の範囲には、上記媒体を組み合わせたものも当然に含まれる。実行可能命令の例としては、ある種の関数または関数群を汎用目的コンピュータ、特殊目的コンピュータまたは特殊目的処理デバイスに実行させるための命令とデータがある。最後に、本発明の範囲に属する実施形態には、データ構造を表す複数のデータ・フィールドをそこにストアしておくコンピュータ読取可能媒体が含まれている。
本発明の背景をもっと理解しやすくするために、以下、図1を参照して説明するが、図1はクライアント・プロセスと、入出力要求を処理するために複数のドライバ手段を使用しているオペレーティング・システムとのやりとりを単純化して示したものである。この図は、Mircosoft Windows NT(登録商標)オペレーティング・システムの場合の例を示したものである。また、図1に示すオペレーティング・システムは、入出力要求を処理するために複数のドライバ手段を使用するオペレーティング・システムならば、どのオペレーティング・システムであっても構わない。
図1に示すように、クライアント・プロセス20は入出力要求を実行するためにオペレーティング・システム・サービス22を利用している。これは、オペレーティング・システムに用意されているアプリケーション・プログラム・インタフェース(Application Program Interface - API)の関数をクライアント・プロセス20がコールすることによって行われるのが代表的である。該当のAPI関数をコールすると、最終的にオペレーティング・システムのサービス22がコールされる。このコールは矢印24で示されている。
図1において、クライアント・プロセス20は「ユーザ」モードで稼働するものとして示され、オペレーティング・システム・サービスは「カーネル」モードで稼働するものとして示されている。最新のオペレーティング・システムは、種々のアプリケーション・プログラムと直観的ユーザ・インタフェースのための強固な環境を提供しているのが代表的である。このようなオペレーティング・システムは、オペレーティング・システムが精巧化されているレベルと、そのオペレーティング・システムに実装されているセキュリティ機能に応じて、異なる動作レベルまたは「モード」をもっているのが通常である。通常のアプリケーション・プログラムは最低プライオリティ(優先度)で実行され、他のアプリケーションとの干渉またはオペレーティング・システムの他の層との干渉を禁止するセキュリティ・デバイスが完備されているのが代表的である。オペレーティング・システムによって提供されるハードウエアやその他のサービスは制御されたインタフェースまたはメカニズムを通してのみアクセスされるようにして、ユーザ・モードのユーザ・アプリケーションや他のプロセスがシステムを「クラッシュ」する可能性を制限している。この最低プライオリティ・モードはユーザ・モードと呼ばれているのが普通で、大部分のコンピュータ・ユーザに親しみのあるモードである。ドライバとその関連ハードウェアは緊密に統合化されているため、また多くのドライバが実行するタスクはその性質上時間を重視しているため、ドライバはプライオリティがはるかに高く、セキュリティ保護がはるかに低いオペレーティング・システムのモードで実行されるのが代表的である。このモードは「カーネル」モードと呼ばれているのが一般である。ドライバおよび他のオペレーティング・システム・サービスをカーネル・モードにすると、オペレーティング・システムをより高いプライオリティで稼働させ、ユーザ・モードでは不可能である多数の関数を実行させることができる。
クライアント・プロセス20が入出力要求を実行するためにオペレーティング・システム・サービス22をコールすると、その入出力要求は入出力要求を処理する第1のドライバ手段に渡される。図1では、ファイル・システム・ドライバ26とデバイス・ドライバ28は入出力要求を処理するドライバ手段の例を示している。入出力要求が第1ドライバ手段にどのように渡されるかは、例えば、矢印30で図1に示されている。ファイル・システム・ドライバ26は入出力要求を受け取ると、入出力要求の一部を処理してからその入出力要求を次のドライバに渡すのが一般的である。本発明で「入出力要求」というときは、入出力システムがサポートする、どのタイプの入出力オペレーションも含まれる。なお、この中には、入出力システムに通常関連している通常のファイル・オペレーション以上のものが含まれることはもちろんである。また、この用語には、入出力システムの拡張機能も含まれる。従って、「入出力要求」という用語は広い意味で解釈されるものである。
1つの例として、クライアント・プロセス20がディスク上の特定のファイルをオープンして、そのファイルから情報をリトリーブすることを望んでいるとする。この場合、入出力要求はクライアント・プロセス20からオペレーティング・システム・サービス22に渡されてからファイル・システム・ドライバ26に渡される。そのあと、ファイル・システム・ドライバ26は入出力要求をファイル名からディスク上の特定のロケーションに変換する。この変換プロセスには、特定ロケーションでディスクに読み書きされるデータ・ブロックの数を含めておくことも可能である。この場合、この情報は、例えば、デバイス・ドライバ28のような、次のドライバに渡すことができる。デバイス・ドライバ28が必要とする情報を渡すプロセスは図1に矢印32と34で示されている。デバイス・ドライバ28は、読み書きされるデータ・ブロックのロケーションと数を受け取ると、それらを該当の制御信号に変換して必要とする情報をハードウェア・デバイス36からリトリーブし、あるいは必要とする情報をそこにストアする。リトリーブされた情報はデバイス・ドライバ28からファイル・システム・ドライバ26に渡され、最終的には戻り矢印38に示すようにクライアント・プロセス20に戻されることになる。ステータス情報も同じように戻される。
図1では、入出力要求はファイル・システム・ドライバ26とデバイス・ドライバ28の間で直接に受け渡しされていない。むしろ、入出力要求は入出力マネージャ40を介してドライバ相互間で受け渡しされている。しかし、どの実装でも入出力マネージャが存在している必要はない。入出力要求があるドライバから別のドライバに直接に渡されるようにする実施形態も可能である。
図1から理解されるように、重要な概念の1つは入出力要求がクライアント・プロセスによって作成されたとき、従来システムでの処理シーケンスが相対的に固定され、未変更のままになっていることである。言い換えれば、特定タイプの入出力要求はそのタイプの入出力要求が受け取られるたびに、まったく同じように処理されることである。入出力要求は最初にあるドライバに渡され、そこで部分的処理が行われてから、その入出力要求は別のドライバに転送され、そこでも入出力要求が部分的に処理されている。一般的に、このプロシージャは、各ドライバが後続のドライバに入出力要求を渡していき、入出力要求が最終的に処理されるまで続けられる。従来のシステムでは、通常の処理シーケンスに割り込みをかけ、コントロールを直前のドライバに戻すか、あるいは特殊タイプの入出力要求を処理する別のドライバに渡すようになっていない。
次に図2を参照して説明すると、図は本発明を実現しているシステムの概要図を示したものである。この場合も、クライアント・プロセス20は矢印24に示すように最終的にオペレーティング・システム・サービス22に転送される入出力要求を行っている。本発明の入出力システムはそのような入出力要求を処理する複数のドライバ手段を含んでいる。例えば、図2では、かかるドライバ手段は層1のドライバ42、層2のドライバ44および層Nのドライバ46で示されているが、これらは単なる例示である。
入出力要求はあるドライバ手段から別のドライバ手段に渡されるので、本発明の範囲に属する実施形態では、入出力要求をあるドライバから別のドライバに渡す手段を含めることができる。例えば、図2では、そのような手段は矢印48と50で示され、入出力要求があるドライバから別のドライバに直接に渡される様子を示している。この手段としては、図1に示すものと同じように、入出力要求をあるドライバから別のドライバに転送することを取り扱う入出力マネージャにすることも可能である。
図2に示すように、入出力マネージャ40はクライアント・プロセス20から受け取った入出力要求を層1のドライバ42に転送している。この入出力要求は該当の情報を該当のドライバに転送する入出力マネージャや他のメカニズムによってコールされる関数またはサービスの形にすることができる。Microsoft Windows NT(登録商標)では、例えば、入出力システムの種々ドライバ間の通信のためにメッセージ駆動型メカニズムが使用されている。このシステムでは、入出力要求を行うと、入出力マネージャは入出力要求パケット(I/O request packet - IRP)を作成し、そのIRPを該当のドライバに送っている。入出力要求が処理され、他のドライバに転送されるとき、情報がIRPに追加され、そのIRPが次のドライバに渡される。状況によっては、IPRが修正または「別の形に変換」されてから次のドライバに渡される場合もある。Microsoft Windows NT(登録商標)では、入出力マネージャはドライバ間でIRPを転送することを担当している。他のシステムでは、他のメカニズムが使用可能になっている。これらをどのように実装するかの詳細は設計上の問題であり、本発明にとっては重要でない選択事項である。
図2に戻って説明すると、層1のドライバ42が必要とされる処理を実行すると、入出力要求は層2のドライバ44に渡され、そこで必要な処理が行われたあと、その入出力要求は次のドライバに転送される。なお、図2には各ドライバが入出力要求を順番に受け取ることが示されているが、実施形態によっては、あるドライバをスキップして、入出力要求を処理させる必要のあるドライバだけに入出力要求を実際に処理させることが望ましい場合がある。
本発明は通常の処理シーケンスに割り込みをかけ、コントロールを別のドライバに渡すシステムおよび方法を提供しているので、本発明の実施形態によれば、入出力要求の処理に割り込みをかける手段が含まれている。図2に示すように、そのような手段は、例えば、層Nのドライバ46に組み込むことが可能である。本発明では、通常の処理シーケンスは特殊タイプのファイルまたはディレクトリが入出力要求を処理している途中で現れたとき割り込みがかけられる。このような特殊ファイルまたはディレクトリは「再解析ポイント(reparse point)」と呼ばれる。以下で詳しく説明するように、再解析ポイントは特殊な再解析ポイント属性をファイルまたはディレクトリに含めることで作成される。この特殊な再解析ポイント属性はその入出力要求の実行時にドライバによって認識される。この属性が認識されると、入出力要求を処理する通常シーケンスは一時中止され、入出力要求の処理を完了するためのステップがとられる。このステップでは、入出力要求を処理するコントロールが別のドライバに渡され、そのドライバが特殊タイプのファイルまたはディレクトリの入出力要求の処理に参加できるようにされる。従って、本発明の範囲に属する実施形態では、入出力要求を処理するコントロールをあるドライバから別のドライバに渡すための手段が含まれている。入出力要求の処理が途中で割り込まれたとき、コントロールを入出力要求を処理中のドライバから別のドライバに渡すメカニズムならば、どのメカニズムでも利用可能である。図2には、このメカニズムは、例えば、矢印52で示され、入出力要求の処理の途中で再解析ポイントが現れたとき、入出力要求を処理するコントロールが層Nのドライバ46から層1のドライバ42に渡されることが示されている。以下で詳しく説明するように、コントロールをあるドライバから別のドライバに渡すメカニズムに要求されることは、ある種の情報を渡して、コントロールを受け取ったドライバが再解析ポイントを正しく処理できるようにすることである。従って、実施形態には、再解析ポイント情報を受け渡すための手段とステータス情報を受け渡すための手段を含めることも可能である。これらのメカニズムは以下で詳しく説明する。
コントロールが層Nのドライバ46から層1のドライバ42に渡された後、層1のドライバ42は入出力要求の処理を進めるために再解析ポイントを正しく処理しなければならない。ある種の状況および実施形態では、再解析ポイントが現れたときコントロールを受け取ったドライバは入出力要求を自分で最後まで処理できる場合もある。
そのような状況では、ドライバが入出力要求を最後まで処理した後、結果および/またはステータス情報が必要に応じてクライアント・プロセスに戻されることになる。そのような結果の例を示したのが図2であるが、そこでは層1のドライバ42は層1のドライバ42から出た矢印50で示すように入出力要求の結果を戻している。他方、再解析ポイントが現れたとき入出力要求を最後まで処理する場合でも、他のドライバの援助が必要になる場合がある。従って、本発明の範囲に属する実施形態では、オリジナル入出力要求の処理を継続するために第2の入出力要求を作成するための手段を含めることができる。図2に示すように、このような手段は、例えば、層1のドライバ42に組み込んでおくことができる。層1のドライバ42は第2の入出力要求を初めから作成することも、例えば、オリジナル入出力要求を別の形に変換してからその入出力要求を別のドライバに転送することもできる。例えば、Microsoft Windows NT(登録商標)では、このような手段は新しいIRPを作成し、そのIRPを該当のドライバに渡すことによって実現されている。また、この手段は既存のIRPを別の形に変換してからそのIRPを別のドライバに渡すことによっても実現できる。図2では、かかる手段は、例えば、矢印54で示されており、そこでは作成された入出力要求が層1のドライバ42から層2のドライバ44に、最終的に層Nのドライバ46に渡されることが示されている。図7を参照して以下で説明するように、入出力要求を最後まで処理するためには、他のコンピュータによる処理が必要になる場合がある。従って、第2の入出力要求を作成する手段は入出力要求を他のコンピュータに転送することもできる。
層1のドライバ42が該当の再解析ポイントの処理を終え、オリジナル入出力要求の処理を終えるために別の入出力要求を作成したとすると、層Nのドライバ46はその第2入出力要求を受け取り、該当のハードウェア56とのインタフェースとなってオリジナル入出力要求を完了することができる。その結果は矢印50で示すように入出力マネージャ40に、最終的には矢印58で示すようにクライアント・プロセスに戻すことができる。
以上を要約すると、本発明は、入出力要求を処理する通常のシーケンスに割り込みをかけて、通常では入出力要求の処理に関与していないドライバが入出力要求の処理に介入できるようにするシステムと方法を提供している。以下で詳しく説明するように、このようなメカニズムはある種の特殊タイプのファイルやディレクトリを実装するときに利用すると、非常に便利である。本発明では、ファイルまたはディレクトリのどちらかに関連づけられた再解析ポイント属性のメカニズムを使用して、通常の処理シーケンスに割り込みをかけ、再解析ポイントを処理するコントロールを特定のドライバに渡すようにしている。このドライバは入出力要求の処理を完了することも、他のドライバを使用して入出力要求の処理を終了するために別の入出力要求を作成することもできる。以下で詳しく説明するように、このメカニズムによると、入出力システムが初めて開発されたとき意図していなかった状況に対処するように、統一された方法で既存の入出力システムの能力を拡張することができる。このように柔軟性があるため、時間と共に進化していく、先進的ファイルとディレクトリ編成構造をサポートする能力が強化されることになる。
その開発当時、UNIXオペレーティング・システムは単純化した新しい見方で入出力を定義していた。読み書きされるデータはすべて、仮想ファイルに送られる単純なバイトの流れとして扱われ、仮想ファイルはファイル記述子で表されていた。仮想ファイルとは、あたかもファイルとして扱われる入出力のソースまたはデスティネーションのことである。同様に、ファイルとディレクトリは区別されていなかった。ディレクトリは単純に特殊タイプのファイルとして見られていた。最新のオペレーティング・システムはこの基本的考え方を発展させ、そこではファイルとディレクトリは単純な「属性」の集まりと考えられている。属性は、最も抽象化されたレベルでは、単にデータ記憶ロケーションである。あるファイルまたはディレクトリの異なるプロパティを指定するために異なる属性が使用され、あるいは異なる情報ビットを格納するために異なる属性が使用され、オペレーティング・システムまたは他のプロセスがファイルまたはディレクトリを扱う必要のあるとき、そのファイルまたはディレクトリに関するある種の情報を知ることができるようにしている。例えば、ファイルはプロセスがファイルを特定できるようにする名前属性と、そのファイルにストアされたデータであるデータ属性をもつことができる。ファイルは、次のような他の属性をいくつでももつことができる。つまり、だれがファイルにアクセスでき、どのようにアクセスできるかを示すセキュリティ属性、タイムスタンプ属性、ファイルがどのディレクトリに格納されているかを示す属性などである。ディレクトリも、同じ種類の属性をもつことができるが、ディレクトリはユーザが大量のデータをストアできる場合にはデータ属性をもたないのが普通である。
次に図3を参照して説明すると、図は、本発明で使用するのに適しているファイルまたはディレクトリの属性を絵図で示したものである。これらの属性は、特にMicrosoft Windows NT(登録商標)用に開発されたNTFSファイル・システムで使用されている属性リストの修正版を示している。NTFSファイル・システムは、Helen Custer著「インサイドWindows NTファイル・システム(Inside the Windows NT File System)」、Microsoft Press発行に詳しく説明されているが、その内容は引用により本明細書の一部を構成するものである。図3に示すように、ファイルまたはディレクトリを構成する属性は基本的に2つのグループに分類できる。第1の基本グループは全体が60で示されており、ファイルとディレクトリの両方に共通の属性を表している。第2の基本グループは全体が62で示されており、ファイルに固有の属性(図中の左側)またはディレクトリに固有の属性(図中の右側)を含んでいる。
ファイルとディレクトリの両方に共通の属性グループに属するものには、標準情報属性64、属性リスト66、名前属性68、セキュリティ記述子属性70および再解析ポイント属性72がある。標準情報属性64は、次のような“MS-DOS”の標準属性を表している。つまり、ファイルの場合の読取専用、読み書き、隠蔽など、ファイルまたはディレクトリのタイムスタンプ、いくつのディレクトリがファイルをポイントしているか、といった属性である。属性リスト66は、ファイルまたはディレクトリがマスタファイル・テーブルに占める記憶レコードが2つ以上になったとき、ファイルまたはディレクトリを構成する追加属性のロケーションを特定するためにNTFSによって使用される属性である。マスタファイル・テーブルは、ファイルまたはディレクトリのすべての常駐属性がそこにストアされるロケーションである。名前属性68はファイルまたはディレクトリの名前である。ファイルまたはディレクトリは、NTFSでは複数の名前属性をもつことができる。例えば、長い名前、MS-DOSでの短い名前、などである。セキュリティ記述子属性70は、だれがファイルまたはディレクトリを所有し、だれがそれにアクセスできるかを指定するためにWindows NT(登録商標)で使用されるデータ構造を含んでいる。これらの属性は前掲の「インサイドWindows NTファイル・システム」に詳しく説明されている。
再解析ポイント属性72は本発明で追加された新規属性である。再解析ポイント属性72はある特定ファイルまたはディレクトリが、入出力システム内の特定ドライバによる特殊処理を必要とする再解析ポイントであることを示している。再解析ポイントは、好ましくは、2つの目標が達成できるだけの十分な情報を収めている。第1の目標は、再解析ポイントを処理させる特定ドライバ(再解析ポイントの所有者)が特定できるようにすることである。さらに、最大限の柔軟性を得るために、好ましいことは再解析ポイントの所有者が再解析ポイントと一緒にデータをストアしておき、所有者があとでそのデータを使用して、再解析ポイントを正しく処理できるようにすることである。ある実施形態では、再解析ポイント属性は次のような構成になっている。
Figure 0004060890
再解析ポイントは特定のドライバによって処理されるので、本発明の範囲に属する実施形態によれば、特定のドライバを再解析ポイントが係わっている入出力要求の少なくとも一部を処理させるドライバとして特定するための手段が含まれている。そのような手段としては、特定のドライバを再解析ポイントの所有者として特定するメカニズムならば、どのメカニズムでも使用が可能である。再解析ポイント属性が上記テーブルに示す構造になっていれば、この手段は、例えば、タグ値を含むことができる。上に示す再解析ポイントでは、タグは再解析ポイントの所有者のIDを収めているデータワードである。好ましい方法は、ドライバがどのシステムにインストールされているかに関係なく、同じタグが常に同じ所有者ドライバに関連づけられるようにタグが割り当てられるようにすることである。言い換えれば、好ましいことはタグ値を特定のドライバに割り当てる、なんらかのメカニズムが存在していることである。そのような例として、タグ値のブロックを種々のドライバ・メーカに割り当てる中央レポジトリまたはクリアリングハウスがある。そのようにすれば、ドライバ・メーカはタグを個々のドライバに割り当てることができる。他にも使用できるメカニズムとして、タグ値を多くても1つのドライバと関連づけることを可能にするメカニズムがある。タグ値をこのように割り当てると、ドライバがどのシステムにインストールされているかに関係なく、同じ所有者ドライバに同じ再解析ポイントを処理させることが可能になる。事情によっては、ローカルのタグ値をダイナミックに割り当てて、タグ値がインストール時にシステムによって割り当てられるようにする別の方法も可能である。しかし、この方法にはいくつかの問題があり、そのような理由から、一般的には好ましい方法ではない。
上記テーブルに示す再解析ポイント属性では、再解析ポイント・フラグが示されているが、これはオプションである。再解析ポイント・フラグが上に示されているのは、どのファイルまたはディレクトリが再解析ポイントであるかを特定できるようにするメカニズムの存在が必要であることを示すためである。このような指示は、例えば、有効な再解析ポイント属性を示す再解析ポイント・フラグを使用することで与えることができる。上記とは別に、他のメカニズムを使用することも可能である。例えば、ファイルまたはディレクトリが再解析ポイントでないことを示すために、1つまたは2つ以上のタグ値を予約しておくことも可能である。このようなメカニズムを使用すると、ファイルまたはディレクトリが再解析ポイントでないことを示すために、例えば、タグ0を予約しておくことが可能になる。
上に示した再解析ポイント属性は所有者制御(owner controlled)データ・フィールドも含んでいる。この所有者制御データ・フィールドは、再解析ポイントの所有者が再解析ポイントを正しく処理するために必要とされる、任意のタイプのデータをそこに置いておくことができるロケーションを示している。例えば、所有者がファイルまたはディレクトリの種々属性をリモートにストアすることを扱っていれば、ある種の属性がリモートにストアされるとき、リモートにストアされた属性のロケーションは再解析ポイント属性のデータ・フィールドにストアしておくことができる。
上に示した再解析ポイント属性では、データ・フィールドの前にデータ長インジケータが置かれている。このストレージ・フォーマットでは、データ・フィールドの長さは、データ・フィールドを完成するためにどれだけのデータを読み取る必要があるかを確かめるためにストアされている。別の方法として、実施形態によっては、固定長のデータ・フィールドまたはポインタまたはリンクで1つに連鎖された情報ブロックを使用するデータ・フィールドをストアしておくと、効率化する場合がある。基本的には、データ・フィールドを完成するためにどれだけのデータを読み取る必要があるかを確かめるメカニズムならば、どのメカニズムでも使用できる。所有者ドライバにどれだけのデータをストアさせるかについても考慮しておく必要がある。このような考慮はデータ・フィールドがストアされるときの方法およびデータ・フィールドの可能とされる最大長にも影響することになる。
図3に戻って、次にグループ62について説明する。そこでは、ファイルで使用される属性とディレクトリで使用される属性との相違点が示されている。ファイルは図3にデータ属性74で示すように、1つまたは2つ以上のデータ属性をもっているのが代表的である。データ属性74はユーザ制御データをそこにストアできるロケーションを表している。これはユーザまたはユーザ・プロセスがそこにデータをストアする属性である。ユーザ・プロセスは他の属性にアクセスして、そこにデータをストアできるが、これらの属性はユーザ・プログラムによってだけでなく、ドライバのような他のシステム・リソースによっても理解されるのが一般的である。しかし、ドライバはデータ属性にストアされたデータを理解したり、扱ったりしないのが一般的である。NTFSファイル・システムのような、ある種のファイル・システムは2つ以上のデータ属性をもつことが可能になっている。
データ属性74のほかに、ファイルは他の属性76で示すように、他の属性をもつこともできる。このような属性はファイルと共にストアされる、他の任意の属性を表している。システムによっては、ユーザ定義の属性を許しているものもあるが、その場合には、他の属性76はユーザが定義して、ストアした任意の数またはタイプの属性を表している。
ディレクトリで使用される属性としては、例えば、インデックス・ルート属性78、インデックス・アロケーション属性80、およびビットマップ属性82がある。これらの属性の詳しい説明は前掲の文献「インサイドWindows NTファイル・システム」に記載されているが(なお、その内容は引用により本明細書の一部を構成するものである)、基本的にはインデックス・ルート属性78はディレクトリに格納されたファイルへのインデックスを収めており、インデックス・アロケーション属性80はデータ・ブロックまたは「クラスタ」のマッピングに関する情報を収めており、ビットマップ属性82はどのクラスタが使用中で、どのクラスタが解放されているかを記録している。他の属性も、他の属性84で示すように、ディレクトリの一部として定義して、ストアすることができる。
ある特定タイプのファイルまたはディレクトリに関して若干詳しく上述してきたが、以上の説明は単なる例示的なものであり、本発明の範囲を限定するものではない。本発明は、ファイルまたはディレクトリの既存属性に再解析ポイント属性が追加されていれば、どのタイプのファイルまたはディレクトリでも有効である。別の方法として、既存属性を本発明に取り入れても、その既存属性を利用しても、再解析ポイント属性情報をストアすることができるので、この方法によっても、ファイルまたはディレクトリ内の既存属性の数を増やすことなく再解析ポイント属性を含めることが可能である。
次に、図4を参照して説明すると、図は入出力要求を処理する複数のドライバ手段を含んでいる入出力システムの詳細を示す図である。図4に示す入出力システムはMicrosoft Windows NT(登録商標)で利用されているものと同じ入出力システムにすることができる。入出力要求を処理するために複数のドライバ手段を使用する他のオペレーティング・システムも、同じような構成にすることが可能である。図4を参照して説明する概念は、入出力要求を処理する複数のドライバ手段を含んでいるシステムならば、どのシステムを使用しても実装することが可能である。図4に示す構造の使用は1つの可能な実装例を示したにすぎず、本発明の範囲を限定するものではない。
図4に示す実施形態では、入出力要求を処理する複数のドライバ手段が含まれている。図4において、そのようなドライバ手段は、例えば、全体を86で示すドライバAと全体を88で示すドライバBで示されている。また、本発明の範囲に属する実施形態では、入出力要求をあるドライバから別のドライバに渡す手段も含まれている。図4には、1つの例として、かかる手段は入出力マネージャ90として示されているが、これに限定されるものではない。入出力マネージャ90は、例えば、入出力システムで使用される複数のドライバ間で入出力要求を転送することを受け持つマネージャの代表例である。前述したように、実施形態によっては、入出力マネージャを利用していないものがあり、そこでは種々ドライバは直接に通信し合っている。このような実施形態では、入出力要求をあるドライバから別のドライバに渡す手段は、あるドライバが入出力要求を別のドライバに直接に渡すために使用されるメカニズムになっている。
図4に示すように、ドライバA 86とドライバB 88は、種々の関数を実行するために入出力マネージャ90がアクセスできるサービスまたはルーチン群を提供している。図4に示すルーチンは利用できるルーチンのうち、Microsoft Windows NT(登録商標)の下で動作するドライバがもつことができる部分を示している。種々ルーチンに関する詳しい説明は、前掲のHelen Custer著「インサイドWindowsNT」、Microsoft Press発行に記載されており、その全内容は引用により本明細書の一部を構成するものである。
ある種のルーチンはドライバA 86とドライバB 88のどちらの場合も、類似の関数を実行している。これらのルーチンの正確な詳細は非常に異なることがあっても、ルーチンの全体目標は同じである。ドライバA 86とドライバB88のどちらの場合も類似の関数を実行するルーチンには、次のものがある。初期化ルーチン92、スタートI/Oルーチン94、割り込みサービス・ルーチン96、遅延プロシージャ・コール・ルーチン98、キャンセルI/Oルーチン100およびアンロード・ルーチン102である。これらのルーチンはドライバがMicrosoft Windows NT(登録商標)などのオペレーティング・システムの下で動作するときに重要であるが、本発明では、一般的には、その目的上重要ではない。しかし、これらのルーチンの機能について、以下で簡単に説明することにする。
ドライバA 86とドライバB 88はどちらも初期化ルーチン92をもっている。初期化ルーチンはドライバごとに異なることがあっても、初期化ルーチンは、入出力マネージャがドライバをオペレーティング・システムにロードするとき入出力マネージャによって実行される。このルーチンは必要とされる初期化を行って、入出力マネージャがドライバを使用し、アクセスできるようにする。スタートI/Oルーチン94はデバイスとの間でやりとりされるデータの転送を開始するために使用される。割り込みサービス・ルーチン96はドライバが特定ドライバに割り込みを引き起こしたときコールされる。Windows NT(登録商標)の下では、割り込みサービス・ルーチンでの処理は、低レベルの割り込みが必要以上にブロックされるのを防止するために最小限に保たれている。遅延プロシージャ・コール・ルーチン98は、割り込みサービス・ルーチンが実行された後で、デバイス割り込みを取り扱うことに関係する処理の大部分を実行する。キャンセルI/Oルーチン100は入出力オペレーションをキャンセルする必要が起こったときコールされる。アンロード・ルーチン102はシステム・リソースを解放して、入出力マネージャがドライバをメモリから除去できるようにする。
Microsoft Windows NT(登録商標)の下のドライバは、ドライバA 86のディスパッチ・ルーチン104およびドライバB 88のディスパッチ・ルーチン106といった、ディスパッチ・ルーチン群を含んでいる。ディスパッチ・ルーチンはデバイス・ドライバから提供されるメイン関数である。例をいくつか挙げると、読み書き関数や、デバイス、ファイル・システム、またはネットワークのドライバがサポートするその他の機能がある。入出力オペレーションがドライバによって処理されるとき、入出力マネージャ90は入出力要求パケット(I/O Request Packet - IRP)を生成し、ドライバのディスパッチ・ルーチンの1つを通してドライバをコールする。従って、入出力要求は図4に示すように、ドライバ相互間でまたは入出力マネージャとドライバの間で受け渡しされるIRPで表すことができる。
複数のドライバが使用されるときは、あるドライバは入出力要求の部分的処理を行ってからそのあとに続くドライバにその入出力要求を渡すことができる。このようなプロセスを示したのが図4であり、そこではIRP 108がドライバA 86に渡され、IRP処理ブロック110で示すようにドライバAによって部分的に処理され、IRP 112を通してドライバB 88に渡されている。なお、IRP 108とIPR 112は同じIRPであっても構わない。しかし、IRPがドライバ間でどのように受け渡しされるかを分かりやすくするために、図4には別の番号が付けられている。また、IRP 108とIRP 112が別のものとなるように新しいIRPを作成する実施形態にすることも可能である。
関連の再解析ポイント属性をもつファイルまたはディレクトリの処理と係わりのない入出力要求であるときは、ドライバはその入出力要求を通常通りに処理して、入出力要求に関連する情報を通常通りに返却する。例えば、IRP 112がドライバB 88によって受信されると、その入出力要求はIRP処理ブロック116によって通常通りに処理される。入出力要求を処理している途中で、ドライバB 88はステータス情報および/またはIRPをその前に置かれたドライバに戻すことがある。これは図4にIRP 118とステータス120で示されている。図4に示されていないが、IRP 118および/またはステータス120はドライバB 88による処理の後ドライバA 86に戻される場合がある。これは通常の入出力処理の一部であり、前掲の「インサイドWindows NT」に詳しく解説されているが、その内容は引用により本明細書の一部を構成するものである。
IRPがドライバによって受信されたとき、IRPで表された入出力要求は関連の再解析ポイント属性をもつファイルまたはディレクトリが係わっている場合がある。図2を参照して前述したように、関連の再解析ポイント属性をもつファイルまたはディレクトリが係わっている入出力要求が現れたときは、通常の入出力要求処理に割り込みがかけられ、コントロールは別のドライバに移される。このプロセスを行うために、本発明の範囲に属する実施形態では、入出力要求の処理に割り込みをかける手段が含まれている。このような手段としては、関連の再解析ポイントをもつファイルまたはディレクトリが係わっている入出力要求であるとドライバが認識したとき、その入出力要求の処理を途中で終了してコントロールが別のドライバに渡されるようにするメカニズムならば、どのようなメカニズムであっても構わない。図4には、この手段は、例えば、再解析ポイント検出ブロック114で示されている。
入出力要求が関連の再解析ポイント属性をもつファイルまたはディレクトリと係わりがあると再解析ポイント検出ブロック114が判断したときは、通常の入出力要求処理は中止され、入出力要求処理責任を再解析ポイントの所有者に引き渡すステップがとられる。図4に示すように、これらのステップは再解析ポイント処理ブロック122によって実行される。
再解析ポイント処理ブロック122は、コントロールを現在のドライバから再解析ポイントの所有者に引き渡し、再解析ポイントの所有者が入出力要求の処理を継続できるようにするために必要な前処理を実行する。例えば、再解析ポイント属性が前述したようにタグとデータ・フィールドを含んでいれば、再解析ポイント処理ブロック122はそのタグとデータ・フィールドを再解析ポイント属性から抜き出し、それらを再解析ポイントの所有者に転送する準備状態に置くことができる。従って、本発明の範囲に属する実施形態では、再解析ポイント情報をドライバに渡すための手段を含めることができる。例えば、図4にはこの手段は解析データ124で示されているが、これに限定されるものではない。再解析データ124は再解析ポイント処理ブロック122で抜き出された再解析情報を表しているだけである。実施形態によっては、再解析ポイント属性を抜き出し、それを再解析ポイントの所有者に直接に渡すようにすることも可能である。基本的には、再解析ポイントの所有者が再解析ポイント属性にストアされた情報にアクセスすることを可能にするメカニズムならば、どのメカニズムでも再解析ポイント情報をドライバに渡す手段として利用することができる。この中には、再解析ポイント情報がそこにストアされているロケーションまたは再解析ポイント属性そのものを指すポインタを渡すことも含まれる。ある実施形態では、再解析データ124はIRPに入れられて、別のドライバに渡されている。
以下で詳しく説明するように、ドライバが再解析ポイント情報を調べるとき好ましいことは、再解析ポイントが現れたことをドライバが即時に知ることができるようにすることである。従って、望ましいことは再解析ポイントが現れたことを示すステータス情報を渡すことである。従って、実施形態には、ステータス情報をあるドライバから別のドライバに渡す手段を含めることができる。図4にはこの手段は、例えば、ステータス126で示されている。なお、ステータス126は単独で渡すことも、解析データ124と結合してIRPに入れ、ユニットとして渡すことも可能である。同様に、ステータス情報をIRPに入れ、解析データ124を指すポインタまたはリンクをIRPに入れることができる。もう1つの例として、ステータス126を渡した後、若干時間を置いてから再解析データを別のIRPに入れて渡すようにすることも可能である。
関連の再解析ポイントをもつファイルまたはディレクトリが係わっている入出力要求であると分かったときは、入出力要求を処理する責任はあるドライバから別のドライバに移される。従って、本発明の範囲に属する実施形態では、入出力要求を処理するコントロールをあるドライバから別のドライバに移すための手段が含まれている。図4に示す実施形態では、この手段は、例えば、完了ルーチン128になっている。Windows NT(登録商標)オペレーティング・システム用に書かれたドライバは低レベルのドライバがIRPの処理を終えたあと入出力マネージャによってコールされる1つまたは2つ以上の完了ルーチンを含んでいる場合がある。例えば、ファイル・システム・ドライバとデバイス・ドライバをもつ実施形態では、入出力マネージャは、デバイス・ドライバがファイルとの間でデータ転送を終えたあとファイル・システム・ドライバの完了ルーチンをコールするようになっている。完了ルーチンはオペレーションが成功したか、失敗したかあるいはキャンセルされたかをファイル・システム・ドライバに通知し、ファイル・システムがクリーンアップ(終結処置)オペレーションを実行できるようにしている。従って、通常処理のとき、ドライバB 88がIRP 112を受け取り、それを最後まで処理し、IRP 118を戻すと、入出力マネージャ90はブロック128で完了ルーチンをコールし、完了ルーチンは入出力オペレーションが成功したか、失敗したかをドライバA 86に通知し、ドライバA 86がクリーンアップ処理を実行できるようにする。
入出力マネージャ90は低レベルのドライバがその処理を完了したとき完了ルーチンをコールするので、その完了ルーチンは、関連の再解析ポイント属性をもつファイルまたはディレクトリが係わっている入出力要求処理のコントロールが移転したことを検出するメカニズムを置いておく理想的な場所になっている。従って、完了ルーチン128は再解析データ124および/またはステータス126を調べ、ドライバA 86が再解析ポイントの所有者であり、入出力要求の処理責任を任せるべきかどうかを確かめるようになっている。
しかし、関連の再解析ポイント属性をもつファイルまたはディレクトリが係わっている入出力要求の処理責任をドライバが引き受ける前に、そのドライバはそれが再解析ポイントの所有者であるかどうかを確かめなければならない。本発明の範囲に属する実施形態では、特定のドライバによって受信された再解析ポイント情報がそのドライバによって所有されているかどうかを確かめる手段を含めることができる。例えば、図4にはこの手段は再解析ポイント検出ブロック130で示されているが、これに限定されるものではない。再解析ポイント検出ブロック130は再解析データ124および/またはステータス126を調べ、ドライバA 86が再解析ポイントの所有者であるかどうかを確かめる。ドライバA 86が再解析ポイントの所有者でなければ、ドライバA 86は完了処理ブロック132で示すように、必要とされる通常完了処理を実行し、再解析データ124および/またはステータス126を入出力マネージャ90に渡し、そこから別のドライバに転送されるようにする。
他方、ドライバA 86が再解析ポイントの所有者であると再解析ポイント検出ブロック130が判断したときは、コントロールは再解析ポイント処理ブロック134に渡され、入出力要求の以後の処理が行われる。入出力要求の処理コントロールを受け取ること以外は、ドライバが自身が再解析ポイントの所有者であると判断されたときなにが行われるかは、本発明では未定義である。しかし、一般的には、ドライバは入出力要求の処理責任を引き受けて、入出力要求を完了させるステップをとることになる。ある実施形態では、再解析ポイントの所有者であるドライバは、入出力要求の処理を最後まで行うことが可能になっている。そのような実施形態では、ドライバが入出力要求の処理を終えると、通常の完了手続きがとられることになる。Microsoft Windows NT(登録商標)の場合には、この中には、必要な情報をIRPに入れて入出力マネージャに送り返し、そこから転送されることが含まれている。上位レベルのドライバの完了ルーチンをコールして、ドライバに必要なクリーンアップ処理を行わせたり、入出力要求のステータスをドライバに通知したりすることを含めることも可能である。
実施形態によっては、再解析ポイントの所有者であるドライバは入出力要求の残り部分を単独で最後まで処理できない場合がある。そのような実施形態では、再解析ポイント処理ブロック134はIRPを生成し、そのあとIRPは他のドライバに渡されて入出力要求の処理を続けるようにしている。別の方法として、図7を参照して説明するように、入出力要求を生成したあと、別のコンピュータに渡して以後の処理を行わせることも可能である。従って、本発明の範囲に属する実施形態では、オリジナル入出力要求の処理を継続するために別の入出力要求を作成する手段を含めることが可能である。そのような手段としては、他のドライバの援助を得て入出力要求を完了するために特定の実施形態で利用されるメカニズムが利用できる。例えば、図4には、別の入出力要求を作成する手段は再解析ポイント処理ブロック134とIRP 136で示されている。IRP 136は、例えば、図4のドライバB 88と同じように、別のドライバに渡すことができる。ドライバB 88はIRP 136を受け取ると、それを他のIRPと同じように処理する。再解析ポイント処理ブロック134はIRP 136を作成するとき、そのIRPを初めから作ることも、既存のIRPを受け取ってそのIRPを「別の形に変換」することもできる。この変換プロセスは既存のIRPを受け取ると、そのIRP内の情報を変更して修正版または新規IRPを作成する。別の入出力要求を作成する手段はシステムが異なるごとに、異なる方法で実装することができる。例えば、あるドライバが別のドライバを直接にコールするようなシステムでは、別の入出力要求を作成する手段は、情報がアセンブルされたあと、直接コール・メカニズムを通して別のドライバに渡されるようにするメカニズムにすることができる。基本的には、必要なことは入出力要求を作成または修正したあと、別のドライバに渡して以後の処理を任せることである。
上記プロセスを具体的に説明するために、以下では、関連の再解析ポイント属性をもつディレクトリが係わっている入出力要求を処理する具体例について図5と図6を参照して説明する。まず、図5を参照して、入出力システムの全体構造について説明する。図5において、クライアント・プロセス138は入出力要求を処理する複数のドライバ手段を備えた入出力システムへのコールを行う。クライアント・プロセス138はオペレーティング・システム・サービス140へのコールを行う。入出力マネージャ142は入出力要求を受け取り、入出力要求の転送を入出力システムの種々ドライバ間で調整する。
図5には、入出力要求を処理する複数のドライバ手段が示されている。ドライバ手段はシンボリックリンク・デコーダ144、分散ファイル・マネージャ146、階層ファイル・システム・マネージャ148、ファイル・システム・ドライバ150、およびディスク・ドライバ152から構成されている。シンボリックリンク・ドライバ144は入出力要求にシンボリックリンクがあれば、それをデコードすることを担当する。分散ファイル・システム・マネージャ146は複数の物理ボリュームにまたがって分散されたファイルを、1つの統合ボリュームであるかのように管理する。階層ファイル・システム・マネージャ148はアクセス頻度の低いファイルを除去し、それらをテープ上などのリモート・ロケーションにストアする。また、階層ファイル・システム・マネージャ148はリモートにストアされたファイルをその必要時にリトリーブすることも担当する。ファイル・システム・ドライバ150はファイルまたはディレクトリへのアクセス要求をディスク上の物理ロケーションに変換することを担当する。ディスク・ドライバ152は情報をディスク154からリトリーブしたり、情報をディスク上に配置することを担当する。以上のように、図5の入出力システムは、各々が独自の関数または関数群を担当する複数のドライバを使用して強固な入出力環境を提供している。
次に図6を参照して説明すると、図は2つの異なるディスク・ボリュームの論理構造を示している。ボリューム1は図6に156で示すように、Cと名づけたルート・ディレクトリをもっている。ディレクトリCは名前がAで番号が158であるファイルと、名前がBで番号が160であるディレクトリを収めている。図6に示すように、ファイルA 158はタグが5で、なんらかのデータ値をもつ再解析ポイントである。ディレクトリB 160はE 162と名づけたファイルと、D 164と名づけたディレクトリを収めている。図6に示すように、ディレクトリD 164はタグがDFSMで値がWである、関連の再解析ポイントをもっている。タグがDFSMであることは、再解析ポイントが分散ファイル・システム・マネージャ146によって所有されていることを示している。以下の例で説明するように、このタグと値はディレクトリDでボリューム2に接ぎ木するマウントポイントを作るために使用される。このマウントポイントは図6に矢印166で示されている。ボリューム2はW 168と名づけたルート・ディレクトリをもっている。ディレクトリW 168はディレクトリX 170とディレクトリY 172を収めている。ディレクトリYはファイルZ 174を収めている。
図5に戻り、クライアント・プロセス138がパス名C\B\D\Y\Zと係わりをもつ入出力要求を作成したとする。この入出力要求はファイルZ 174にデータを読み書きするものとする。この場合、パス名はファイルZ 174にアクセスするためにクライアント・プロセス138によって使用される。クライアント・プロセス138は、矢印176で示すようにサービス140をコールすることによってこの入出力要求を送信する。入出力マネージャ142はIRP178を作成し、IRP 178をシンボリックリンク・デコーダ144に渡す。図4と同じように、入出力マネージャ142は入出力要求をあるドライバから別のドライバに渡す手段の1つの例である。
クライアント・プロセス138から出された入出力要求を満たすためには、ファイルのパス名C\B\D\Y\Zを解決する必要がある。一般的に、名前解決はマルチステージ・プロセスであり、これによれば、名前はその構成要素に分解され、各構成要素は、通常左から右に向かって解決されていき、成功したか、失敗したかが解決プロセスの各ステージで判断される。IRP 178がシンボリックリンク・デコーダ144に渡されるとき、解決する必要のあるパス名がIRPの一部として渡される。シンボリックリンク・デコーダ144がどのように実装されているかにもよるが、シンボリックリンク・デコーダ144はIRP178内のパス名をスキャンしてパス名の構成要素のどれかがシンボリックリンクであるかどうかを確かめることができる。他の実装も可能であり、どのように実装するかは入出力システムにおける設計上の考慮事項によって決まる。図6に示す例では、シンボリックリンクがないために、シンボリックリンク・デコーダ144はIRP 178を分散ファイル・マネージャ146に渡すことになる。前述したように、Microsoft Windows NT(登録商標)では、IRPの受け渡しは入出力マネージャ142を経由して行われることになる。
IRP 178は分散ファイル・マネージャ146によって受信され、このマネージャは、前述したように、複数ボリュームのファイル・システムを管理し、それらを1つの論理ファイル・システムに統合化することを担当している。この例では、分散ファイル・システム146は、解決プロセスのこのステージではIRP 178で多くの処理をしないことが想定されている。分散ファイル・システム146は、例えば、図6に示すように最初の構成要素Cがボリューム1に属するものと判断するだけにすることができる。そのあと、IRP 178は階層ファイル・システム・マネージャ148に渡される。この場合も、階層ファイル・システム・マネージャ148はIRP 178の処理をほとんど、あるいはまったく行わないで、それをファイル・システム・ドライバ150に渡すことが想定されている。
そのあと、ファイル・システム・ドライバ150は名前解決プロセスを開始する。ファイル・システム・ドライバ150は図6のディレクトリC 156から始めて、ディレクトリC 156をディスク154上の物理ロケーションに変換する。この情報はIRP 178に入れられ、ディスク・ドライバ152に渡される。そのあと、ディスク・ドライバ152はディスク154にアクセスし、IRP 180に情報を入れて戻し、ファイル・システム・ドライバ150が解決プロセスを継続することを可能にする。このプロセスはパス名の各構成要素ごとに繰り返される。
図6に戻って説明すると、ファイル・システム・ドライバ150はディレクトリC 156から開始し、ディレクトリB 160に移り、ディレクトリD 164に進んでいく。ディレクトリD 164がディスクからリトリーブされたときは、ファイル・システム・ドライバ150はディレクトリDが関連の再解析ポイント属性をもつものと認識することになる。そのあと、ファイル・システム・ドライバ150に組み込まれていて、入出力要求の処理に割り込みをかける手段は入出力要求の通常の処理シーケンスに割り込みをかけることになる。図4を参照して上述したように、ファイル・システム・ドライバ150は、ディレクトリD 164の再解析ポイント属性から再解析データを抜き出すことができる。再解析ポイント属性がタグとデータ値をもっているとすると、前述したように、この情報が抜き出され、次の上位レベル・ドライバに戻されることになる。図5には、これは再解析データ182で示されている。図5の再解析データ182は再解析ポイント情報をドライバに渡す手段のもう1つの例を示している。このケースでは、図6に示すように、タグはデータベースであり、値はWになっている。この例では、タグDFSMは分散ファイル・システム・マネージャ146が再解析ポイントの所有者であることを示している。
図5の再解析ポイント・データ182は図示のように階層ファイル・システム・マネージャ148に転送される。階層ファイル・システム・マネージャ148によって受信される再解析ポイント情報がそのドライバによって所有されているかどうかを判別する手段は、再解析データ182が階層ファイル・システム・マネージャ148によって所有されているかどうかを判別することになる。この手段は図4を参照して前述したように、階層ファイル・システム・マネージャ148の完了ルーチンに実装させることができる。このケースでは、階層ファイル・システム・マネージャ148は図6の解析ポイント164の所有者となっていない。再解析データ182が階層ファイル・システム・マネージャ148によって所有されていないと判断したあと、階層ファイル・システム・マネージャ148は再解析データ182を図5に示す次の上位レベル・ドライバに転送する。
分散ファイル・システム・マネージャ146は再解析データ182を受け取ると、再解析データ182が分散ファイル・システム・マネージャ146によって所有されているかどうかを判別する。これは、分散ファイル・システム・マネージャ146によって受信された再解析ポイント情報がそのドライバによって所有されているかどうかを判別する手段を通して行われる。この手段は図4を参照して前述したように、完了ルーチンに実装させることができる。図6に示す例では、分散ファイル・システム・マネージャ146は再解析データ182を調べ、自分が所有者であると認識することになる。これは、特定のドライバが入出力要求の少なくとも一部を処理させるドライバであると判断する手段によって行うことができる。前述したように、かかる手段の例としては、再解析データ182のタグがある。言い換えれば、分散ファイル・システム・マネージャ146は、再解析データ182のタグ値を自身が所有するタグ値と突き合わせることで、再解析データ182が自分のものであると認識することができる。
ドライバが再解析データを自分が所有するものであると認識すると、そのドライバはその入出力要求の処理を継続する責任を引き受けることになる。入出力要求の処理を続けるために、ドライバは再解析ポイント属性のデータ値を調べ、そこにストアされている情報を使用して入出力要求を処理するのが代表的である。このケースでは、分散ファイル・システム・マネージャ146はマウントポイントのターゲットをデータ値にストアする。次に図6に戻って、ディレクトリD164に関連する再解析ポイントのデータ値を調べれば分かるように、データ値はWになっている。これはボリューム2のディレクトリWであることを示している。分散ファイル・システム・マネージャ146はデータ値を調べれば、ボリューム2のディレクトリWがマウント・ポイントのターゲットであることを知ることができる。そのあと、分散ファイル・システム・マネージャ146は、ボリューム2のディレクトリWから始まって、解決プロセスを継続していくIRPを作成することができる。ボリューム2のディレクトリWから始まって、名前解決プロセスを継続していく第2のIRPを作成するためには、分散ファイル・システム・マネージャ146はオリジナル入出力要求の処理を継続する第2の入出力要求を作成するための手段を採用することができる。この手段は図4を参照して前述したように実装することができる。名前解決プロセスをどのように進めるかを判断するために非常に望ましいことは、再解析ポイントが現れる前に名前解決プロセスがどこまで進んだかを分散ファイル・システム・マネージャ146が判断できるようにすることである。従って、実施形態によっては、オリジナルのパス名とオフセットを戻して、再解析ポイントが現れる前に名前解決プロセスがどこまで進んだかを判断できるようにすることが望ましい場合がある。この例では、パス名はC\B\D\Y\Zになっている。この場合、オフセットがディレクトリDを指しているのは、それが再解析ポイントが見つかった場所であるからである。名前解決プロセスを継続する別のIRPを作成するとき、分散ファイル・システム・マネージャ146は名前のうちすでに解決されている部分を取り除き、解決プロセスをそこから継続させるロケーション、つまり、図6のディレクトリW 168で再解析ポイントDを置き換えることを選択することができる。そのような場合には、新しいパス名はW\Y\Zとなる。そのあと、分散ファイル・システム・マネージャ146はこの情報をIRP 184に入れて、IRP 184を階層ファイル・システム・マネージャ148に渡すことができる。
そのあと、階層ファイル・システム・マネージャ148はIRP 184をファイル・システム・ドライバ150に転送する。ファイル・システム・ドライバ150は図6のディレクトリWから始まって名前解決プロセスを継続していく。名前解決プロセスはディレクトリY 172に移り、ファイルZ 174に到達するまで続けられる。このプロセスでは、図5に示すように、IRP 184がディスク・ドライバ152に渡され、IRP 186がディスク・ドライバ152から戻されている。なお、名前解決プロセスでは、ファイル・システム・ドライバ150とディスク・ドライバ152の間でIRP 184と186がなん度も受け渡しされる場合がある。また、IRP 186はIRP 184と同じにすることができ、IRP 178はIRP 180と同じにすることができる。これらが図5に異なる番号で示されているのは、ディスク・ドライバ152が入出力オペレーションの結果をそこに入れることでIRPを修正できることを示すためにすぎない。
図6のファイルZ 174が係わりをもつ、必要とする入出力オペレーションが実行され、結果がIRP 186に入ってファイル・システム・ドライバ150に戻されると、ファイル・システム・ドライバ150はIRP 186を階層ファイル・システム・マネージャ148に返送することになる。図5に示すように、IRP 186は分散ファイル・システム・マネージャ146とシンボリックリンク・デコーダ144に連続的に渡されていき、最終的に結果は矢印188で示すようにクライアント・プロセス138に戻されることになる。
次に図7を参照して説明する。図7は再解析ポイント属性が現れたとき入出力要求が別のコンピュータ・システムに送られて処理を任せるようにした場合の例を示している。図7に示す実施形態では、クライアント・プロセス190はローカル・コンピュータ192で実行されている。ローカル・コンピュータ192はコンピュータ相互間を接続するネットワーク手段を介してリモート・コンピュータ194に接続されている。図7において、このネットワーク手段はネットワーク・カード196とコネクション198で示されている。ローカル・コンピュータ192の入出力システム200は入出力要求を処理する複数のドライバ手段を含んでいる。図7において、このドライバ手段は、例えば、シンボリックリンク・デコーダ202、ファイル・システム・ドライバ204およびディスク・ドライバ206で示されている。入出力システム200はオペレーティング・システム・サービス208と入出力マネージャ210も含んでいる。図5に示すと同じように、クライアント・プロセス190はオペレーティング・システム・サービス208へのコールを行う。入出力マネージャ210は入出力要求を受け取り、入出力システムの種々ドライバ手段相互間の入出力要求の転送を調整する。別の方法として、入出力システムの種々ドライバ手段は、種々ドライバ手段相互間の情報転送を調整する入出力マネージャや他のデバイスによらなくても、相互に直接に通信し合うようにすることも可能である。
この例では、クライアント・プロセス190は、リモート・コンピュータ194に接続されたディスク上に置かれたファイルまたはディレクトリを指すシンボリックリンクが係わりをもつ入出力要求を行うものと想定されている。例えば、クライアント・プロセス190が、リモート・コンピュータ194に接続されたディスク212に置かれているディレクトリへのシンボリックリンクをもつディレクトリの内容をリストするために入出力要求を行ったとする。この入出力要求は、例えば、クライアント・プロセス190が矢印214で示すようにオペレーティング・システム・サービス208をコールすることによって行われる。入出力要求はファイル・システム・ドライバ204に渡され、このドライバはディスク・ドライバ206を利用して名前解決プロセスを開始する。ディスク・ドライバ206はディスク・コントローラ218を使用してディスク216から情報を読み取る。名前解決プロセスは、前述したように、シンボリックリンクを表している再解析ポイントが見つかるまで続けられる。その個所で、再解析ポイント情報が抜き出され、他のドライバに渡されるが、これはあるドライバが自分が再解析ポイントの所有者であると認識するまで続けられる。この例では、シンボリックリンク・デコーダ202が、リモート・コンピュータ194へのシンボリックリンクを実装するために使用された再解析ポイントの所有者であると認識することになる。
シンボリックリンク・デコーダ202は自身が再解析ポイントの所有者であると認識すると、シンボリックリンク・デコーダ202は入出力要求を処理する責任を引き受けることになる。この例では、シンボリックリンク・デコーダ202が入出力要求を単独で最後まで処理できないのは、入出力要求を処理するためにリモート・コンピュータ194からディレクトリ情報をリトリーブする必要があるためである。そのような場合には、本発明の範囲に属する実施形態では、入出力要求をリモート接続のコンピュータに送って処理させる手段を含めることが可能である。図7に示すように、ローカル・コンピュータ192とリモート・コンピュータ194がネットワーク手段で接続されているような実施形態では、入出力要求をリモート接続のコンピュータに送る手段は、入出力要求をネットワーク経由でリモート・コンピュータ194に転送し、リモート・コンピュータ194に入出力要求を処理させ、要求を満たすようにするメカニズムならば、どのようなメニズムにすることもできる。例えば、図7において、入出力要求をリモート接続のコンピュータに送る手段はリディレクタ(redirector)220とネットワーク・トランスポート・ドライバ222で構成することが可能である。図7に示す実施形態では、リディレクタ220はローカル・コンピュータ192がネットワーク上の他のマシン上のリソースにアクセスするとき必要になる機能を備えている。ネットワーク・トランスポート・ドライバ222は、情報をローカル・コンピュータ192からネットワーク・カード196とコネクション198を経由してリモート・コンピュータ194へ転送できるようにするメカニズムを備えている。入出力要求をリモート接続のコンピュータに送る手段は他のメカニズムを使用して実装することも可能である。一般的に、この手段は入出力要求をあるコンピュータから別のコンピュータに転送するトランスポート・メカニズムを備えている。このようなメカニズムは、専用リンク、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、電話回線、ワイヤレス(無線)などのように、任意のタイプのコネクションで2コンピュータ間を結ぶことを可能にしているのが一般である。さらに、この手段は、あるコンピュータの入出力システムから入出力要求を受け取り、その入出力要求を別のコンピュータの入出力システムに発送するメカニズムを含むこともできる。このためには、種々タイプのソフトウェアやファームウェアまたはドライバが必要になる。入出力要求をリモート接続のコンピュータに送る手段に要求されることは、リモート・コンピュータで処理できるフォーマットで入出力要求を発送することである。
図7の実施形態では、シンボリックリンク・デコーダ202はリモート・コンピュータ194に入出力要求を行う必要があると認識したときは、シンボリックリンク・デコーダ202は入出力要求をリディレクタ220に渡せば、リディレクタ220がネットワーク・トランスポート・ドライバ222を使用して入出力要求をネットワーク・カード196とコネクション198経由でリモート・コンピュータ194に転送してくれる。この具体例では、入出力要求はシンボリックリンクが指しているディレクトリのディレクトリ内容に対するものである。
リモート・コンピュータ194に渡された入出力要求はネットワーク・トランスポート・ドライバ224によって受信され、サーバ・ファイル・システム226に渡される。サーバ・ファイル・システム226はリディレクタ220と通信して、リモート・コンピュータ194に送られた入出力要求を処理し、その要求満たすようにする。入出力要求を満たすためには、サーバ・ファイル・システム226はファイル・システム228やディスク・コントローラ230のような、リモート・コンピュータ194のドライバとハードウェアを利用することができる。この例では、サーバ・ファイル・システム226はファイル・システム・ドライバ228を利用して、該当のディレクトリ内容をディスク212からリトリーブし、そのディレクトリ内容をローカル・コンピュータ192に戻している。ディレクトリ内容が戻されたとき、シンボリックリンク・デコーダ202はそのディレクトリ内容をクライアント・プロセス190に送り返すことができる。
図7に示す実施形態では、ローカル・コンピュータ192とリモート・コンピュータ194の間で通信を行う特定のコンポーネントが含まれているが、そのようなコンポーネントはすべての点で例示的なものである。本発明で必要とされるものは、入出力要求がローカル・コンピュータ側のドライバからリモート・コンピュータに渡されて、そこで入出力要求が満たされ、該当の情報が戻されるようにするメカニズムである。上記機能を然るべき方法で実行するメカニズムであれば、どのメカニズムも本発明の範囲に属するものである。
本発明を全体にわたって理解するのを容易にするために、次に図8を参照して説明する。図8は、本発明を使用して入出力システムの能力を拡張する実施形態を示すトップレベル図である。一般的に、入出力システムはハードウェア・デバイスとの間でデータを送受信するために使用される。そのようなハードウェア・デバイスとしては、前述したように大容量記憶デバイスや、図7に示すようなネットワークを含む他のタイプのハードウェア・デバイス、またはデータの送信側またはデータの使用側となる他のタイプのデバイスがある。実際には、キーボードやディスプレイなどのデバイスであっても、具体的な実装と環境にもよるが、入出力システムの一部で制御することが可能である。一般的に、クライアント・プロセスはデータを特定のハードウェア・デバイスに送るために、あるいはデータを特定のハードウェア・デバイスからリトリーブするために、入出力要求を入出力システムに送っている。さらに、入出力システムはハードウェア・デバイスからの情報があるとき、そのことをクライアント・プロセスに通知することができる。前述したように、入出力要求は広義の意味に解釈されるものである。従って、入出力要求には、クライアント・プロセスと入出力システムとの間のすべてのやりとりを含めることができ、その中には、データを入出力要求を送り込んだり、データを入出力システムから受け取ったりする要求も含まれる。
図8に示すように、全体的ハードウェア・デバイスはハードウェア・デバイス232で示されている。上に示した例で説明したように、特定のハードウェア・デバイスにアクセスするためには、1つまたは2つ以上のドライバを入出力システムで使用することができる。図8に示すように、ハードウェア・デバイス232にアクセスするために使用されるドライバはハードウェア・アクセス・ドライバ234で示されている。ハードウェア・アクセス・ドライバ234は入出力要求を処理するドライバ手段のもう1つの例である。ハードウェア・アクセス・ドライバ234は、ハードウェア・デバイス232にアクセスするために必要とされる任意の数またはタイプのドライバにすることができる。ハードウェア・デバイス232が、例えば、ディスクであれば、ハードウェア・アクセス・ドライバ234はファイル・システム・ドライバとディスク・ドライバの一方または両方にすることができる。ハードウェア・デバイス232がネットワーク・デバイスであれば、ハードウェア・アクセス・ドライバ234はネットワークにアクセスするために必要とされる任意の数またはタイプのドライバにすることができる。このようなことが起こるのは、例えば、ネットワーク経由で大容量記憶デバイスにアクセスする場合である。
入出力システムの能力を拡張し、当初から入力システムに組み込まれていなかった別の機能を追加するためには、処理される入出力要求の特定タイプ別に1つまたは2つ以上の拡張デバイスを追加することができる。図8には、この特定タイプのドライバは拡張ドライバ236で示されている。拡張ドライバ236は可入出力要求を処理するドライバ手段のもう1つの例である。拡張ドライバ236は上記の例で前述した一般的原理に従って再解析データを処理するドライバ層を代表しているのが一般である。前述したように、通常の入出力オペレーション時には、拡張ドライバ236は入出力要求の処理の一部になっていない。しかし、再解析ポイントがハードウェア・アクセス・ドライバ234によって検出されたときは、コントロールが拡張ドライバ236に渡され、拡張ドライバ236が入出力要求の処理に介入できるようにする。
前述したように、拡張ドライバ236がコントロールを受け取ったとき、そのあと行われる処理は本発明では未定義になっている。本発明はどのタイプの処理を行うためにも使用できる。1つの例では、再解析ポイントはホーム・オートメーション環境で設定されている。再解析ポイントにアクセスするとき、コントロールが拡張ドライバに渡されると、拡張ドライバは再解析ポイントに見合ったアクションをとる。例えば、おそらくは、消防署または警察署の電話番号が再解析ポイント情報の一部としてストアされることになる。出された入出力要求が再解析ポイントと係わりがあるときは、コントロールを特定のドライバに渡すことができるので、その特定ドライバは再解析ポイントから電話番号を抜き出し、警察署または消防署にダイヤルすることになる。警察署または消防署に連絡をしたあと、合成音声は他のオーディオ情報を送信するといった、該当アクションがとられ、具体的状態が警察署または消防署に通知されることになる。基本的には、入出力システムが再解析ポイントを見つけ、コントロールが特定の拡張ドライバに渡されて処理が行われるとき、そのあとなんらかのアクションがとられる。このアクションには、入出力システムまたは記憶デバイスにストアされたファイルや他の情報とは通常無関係であるアクションも含まれている。
拡張ドライバ236のように、拡張ドライバが入出力要求の処理責任を引き受けたときは、拡張ドライバはなんらかの処理を行うことができる。拡張ドライバは、該当するものがあれば、他のサービスまたはドライバを利用してそのタスクを完了することができる。図8に示すように、この他のドライバまたはサービスは拡張ドライバ・サービス238で示されている。拡張ドライバ・サービス238は、拡張ドライバ236がそのタスクを完了するために利用しなければならない他のドライバまたはサービスにすることができ、この中にはハードウェア・ドライバが含まれる。当然のことであるが、このような機能は、具体的にどのように実装し、その実装のためにどのような設計上の選択を行うかに応じて、単独にすることも、拡張ドライバ236に直接に組み込むことも可能である。
最後に、注目すべきことは、入出力要求を完了するために必要または望ましい情報は再解析ポイントからでも、オリジナル入出力要求からでも、あるいはその両方からでも得ることができることである。オリジナル入出力要求は、再解析ポイント内の情報と共に、拡張ドライバ236が利用することができる。
以上を要約すると、本発明は入出力要求の通常処理に割り込みをかけ、通常では入出力要求の通常処理に関与していないドライバが入出力要求の処理責任を引き受けることを可能にするメカニズムを提供している。本発明が定義している方法とシステムは柔軟性を備えていると同時に、拡張可能性も備えている。本発明は通常の処理シーケンスに介入することを可能にする方法だけは別として、入出力要求を処理するときの正確な詳細を定義していないので、本発明を利用すれば広範囲にわたる結果を達成することができる。基本的には、本発明のメカニズムによれば、特殊タイプのファイルまたはディレクトリを定義しておけば、その特殊ファイルまたはディレクトリが係わりをもつ入出力要求の処理コントロールを、特殊ファイルまたはディレクトリが係わりをもつ入出力要求を処理するのに適した特定のドライバに渡すことができる。本発明の用途として、分散ファイル・システムをシングル・ファイル・システムであるかのように管理する場合について説明してきたが、本発明は、階層ストレージを管理し、セキュアまたは暗号化ファイルまたはディレクトリを管理し、最新コンピュータで広く採用されている階層方式とは別の新規の方法でファイルまたはディレクトリのアクセスまたは編成を管理する場合にも利用することができ、特殊タイプのファイルまたはディレクトリが定義される場合には考案または開発が可能である他の用途にも利用が可能である。さらに、入出力要求を処理するのに適したドライバにコントロールが渡されたあと、それ以後に行われる処理はファイルまたはディレクトリが係わっている従来の入出力オペレーションとは無関係にすることができる。特殊ドライバは必要とするタスクに見合ったリソース、ドライバまたはシステムを使用してどのような処理でも行うことができる。
本発明は、本発明の精神または基本的特徴から逸脱しない限り、他の具体的実施形態で実現することが可能である。上述してきた実施形態はすべての点で例示的なものであり、その実施形態に限定されるものではない。従って、本発明の範囲は上述してきた説明に限定されるのではなく、請求の範囲の記載によってのみ限定されるものである。請求の範囲の意味と等価範囲内に属する変更はすべて本発明の範囲に包含されるものである。

Claims (31)

  1. 複数のドライバ手段を使用して入出力要求を処理する入出力システムにおいて通常の処理シーケンスに割り込みをかける方法であって、前記複数のドライバ手段は第1ドライバ手段と第2ドライバ手段を含み、
    該方法は、
    指定された入出力オペレーションを実行する入出力要求を前記第1ドライバ手段によって受け取るステップと、
    前記第1のドライバ手段が、前記入出力要求が関連の再解析ポイント属性をもつファイルまたはディレクトリのどちらかの少なくとも1つと係わりがあるかどうかを判別することによって、前記入出力要求が別のドライバ手段による少なくとも部分的処理を必要としているかどうかを判別するステップであって、前記再解析ポイント属性は、特定のファイル又はディレクトリが前記入出力システム内の特定のドライバによる特殊処理を必要とする再解析ポイントであることを示す、ステップと
    前記ファイルまたはディレクトリのどちらかの少なくとも1つが関連の再解析ポイント属性をもっていれば、該第1ドライバ手段が
    前記ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント情報を前記再解析ポイント属性から抜き出すステップであって、前記再解析ポイント情報は、前記再解析ポイントを処理すべき前記特定のドライバを特定する、ステップと、
    前記抜き出した再解析ポイント情報を前記第2ドライバ手段に渡して処理させるステップと
    を備えることを特徴とする方法。
  2. 請求項1に記載の通常の処理シーケンスに割り込みをかける方法において、前記抜き出した再解析ポイント情報を前記第1ドライバ手段から前記第2ドライバ手段によって受け取るステップと、
    追加のドライバ手段を使用して前記入出力要求を処理するステップと
    をさらに備えることを特徴とする方法。
  3. 請求項1または2に記載の通常の処理シーケンスに割り込みをかける方法において、前記複数のドライバ手段は他のドライバ手段を含み、
    該方法は、
    前記抜き出した再解析ポイント情報を前記第1ドライバ手段から前記第2ドライバ手段によって受け取るステップと、
    入出力要求を前記他のドライバ手段に該第2ドライバ手段によって送信するステップと
    をさらに備えることを特徴とする方法。
  4. 請求項1ないし3のいずれかに記載の通常の処理シーケンスに割り込みをかける方法において、前記ファイルまたはディレクトリのどちらかの少なくとも1つが関連の再解析ポイント属性をもっていれば、前記第1ドライバ手段は、前記ファイルまたはディレクトリのどちらかの少なくとも1つが関連の再解析ポイント属性をもっていたことを前記第2ドライバ手段に通知するステータス情報を該第2ドライバ手段に送信するステップをさらに実行することを特徴とする方法。
  5. 請求項1ないし4のいずれかに記載の通常の処理シーケンスに割り込みをかける方法において、前記ファイルまたはディレクトリのどちらかの少なくとも1つに関連する、抜き出した再解析ポイント情報を前記複数のドライバ手段の各々に頂番に渡していき、該複数のドライバ手段の1つが自分が前記抜き出した再解析ポイント情報の所有者であると認識して、前記入出力要求の処理を引き受けるまで続けていくステップをさらに備えることを特徴とする方法。
  6. 請求項1ないし5のいずれかに記載の通常の処理シーケンスに割れ込みをかける方法において、前記抜き出した再解析ポイント情報は、前記第2ドライバ手段を、前記入出力要求の少なくとも一部を処理すべきドライバであると判別する手段を含んでいることを特徴とする方法。
  7. 請求項1ないし6のいずれかに記載の通常の処理シーケンスに割り込みをかける方法において、前記抜き出した再解析ポイント情報は、前記入出力要求の少なくとも一部を処理するときに前記第2ドライバ手段によって使用されるストアされたデータを含んでいることを特徴とする方法。
  8. 複数の階層化ドライバを使用してハードウェア・デバイスにアクセスする入出力システムにおいて通常の処理シーケンスに割り込みをかけ、前記複数の階層化ドライバのあるドライバから該複数の階層化ドライバの別のドライバにコントロールを渡す方法であって、該複数の階層化ドライバは第1ドライバと、該第1ドライバと階層関係にある他のドライバとを含み、
    該方法は、
    入出力要求を該第1ドライバによって受け取るステップと、
    前記入出力要求が関連の再解析ポイント属性をもつファイルまたはディレクトリのどちらかの少なくとも1つと係わりがあるかどうかを、該第1ドライバによって判別するステップであって、前記再解析ポイント属性は、特定のファイル又はディレクトリが入出力システム内の特定のドライバによる特殊処理を必要とする再解析ポイントであることを示す、ステップと、
    前記ファイルまたはディレクトリのどちらかの少なくとも1つが関連の再解析ポイント属性をもっていれば、該第1ドライバが、
    前記ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント情報を前記再解析ポイント属性から抜き出すステップであって、前記再解析ポイント情報は、前記再解析ポイントを処理すべき前記特定のドライバを特定する、ステップと、
    前記抜き出した再解析ポイント情報を前記他のドライバに渡すステップとを備えることを特徴とする方法。
  9. 請求項8に記載の通常の処理シーケンスに割り込みをかける方法において、前記抜き出した再解析ポイント情報を前記他のドライバの各々によって順番に調べていき、該他のドライバの1つが該抜き出した再解析ポイント情報の所有者であると認識するまで続けていき、該抜き出した再解析ポイント情報の所有者である該他のドライバの1つが該抜き出した再解析ポイント情報を処理するステップをさらに備えることを特徴とする方法。
  10. 請求項9に記載の通常の処理シーケンスに割り込みをかける方法において、前記入出力要求は前記ファイルまたはディレクトリのどちらかの少なくとも1つを含んでいるパス名を収めていて、該方法は前記パス名を解決する際に前記第1ドライバの進捗状況を示す情報を、前記再解析ポイント属性が現れる前に前記他のドライバに渡しておくステップをさらに備えることを特徴とする方法。
  11. 請求項9に記載の通常の処理シーケンスに割り込みをかける方法において、前記入出力要求を処理するとき、抜き出した再解析ポイント情報に加えて該入出力要求からの情報も渡しておくステップをさらに含んでいることを特徴とする方法。
  12. 複数のドライバ手段を使用して入出力要求を処理する入出力システムにおいて通常の処理シーケンスに割り込みをかける方法であって、前記複数のドライバ手段は第1ドライバ手段と第2ドライバ手段を含み、該方法は、
    ある内容をもち、前記第2ドライバ手段が理解できるフォーマットでストアされた情報を含んでいる再解析ポイントに係わっている入出力要求を前記第1ドライバ手段が受け取るステップであって、前記再解析ポイントは、入出力システム内の特定のドライバにより特殊処理を必要とする特定のファイル又はディレクトリである、ステップと、
    前記入出力要求が再解析ポイントと係わりがあると該第1ドライバ手段が認識したとき、該第1ドライバ手段が該入出力要求の処理を中止するステップと、
    該第1ドライバ手段が該入出力要求の処理責任を該第2ドライバ手段に引き渡すステップと、
    該第2ドライバ手段が前記再解析ポイントの前記情報を調べると共に、該入出力要求を調べて、該入出力要求がどのように処理されるべきかを判断するステップと、
    該第2ドライバ手段が該入出力要求を処理するステップと
    を備えることを特徴とする方法。
  13. コンピュータを、
    入出力システムにおいて入出力要求を処理する第1ドライバ手段と、
    前記入出力システムにおいて入出力要求を処理する第2ドライバ手段と、
    ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント属性が入出力要求の処理の途中で現れたとき、該入出力要求を処理するためのコントロールを該第2ドライバ手段から前記第1ドライバ手段に引き渡して、該第1ドライバ手段が該入出力要求の処理を継続できるようにする手段であって、前記再解析ポイント属性は、特定のファイル又はディレクトリが前記入出力システム内の特定のドライバによる特殊処理を必要とする再解析ポイントであることを示す、手段として機能させるためのプログラムを記録したコンピュータ読取可能記録媒体であって、
    前記第2ドライバ手段は、該第2ドライバ手段が受け取った入出力要求の処理を該第2ドライバ手段が最後まで完了する前に、該入出力要求の処理に割り込みをかける手段であることを特徴とするプログラムを記録したコンピュータ読取可能媒体。
  14. 請求項13に記載のコンピュータ読取可能媒体において、前記第2ドライバ手段は、ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント属性が該第2ドライバ手段によって検出されたことを示すステータス情報を、該第2ドライバ手段から前記第1ドライバ手段に渡す手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  15. 請求項13または14に記載のコンピュータ読取可能媒体において、前記第2ドライバ手段は、ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント属性を前記第1ドライバ手段に渡す手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  16. 請求項15に記載のコンピュータ読取可能媒体において、前記再解析ポイント情報はタグと値を含み、前記タグは該再解析ポイント情報を所有しているドライバ手段のIDを示し、前記値は該再解析ポイント情報を処理するために前記所有者が必要とするデータを含んでいることを特徴とするコンピュータ読取可能媒体。
  17. 請求項13ないし16のいずれかに記載のコンピュータ読取可能媒体において、前記第1ドライバ手段は該第1ドライバ手段によって受け取られた再解析ポイント情報が該第1ドライバ手段によって所有されているかどうかを判別する手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  18. 請求項17に記載のコンピュータ読取可能媒体において、前記判別する手段は前記第1ドライバ手段が前記再解析ポイント情報を所有しているかどうかを判別するために該再解析ポイント情報のタグを調べることを特徴とするコンピュータ読取可能媒体。
  19. 請求項13ないし18のいずれかに記載のコンピュータ読取可能媒体において、前記第1ドライバ手段は前記入出力要求の処理を継続するための第2の入出力要求を作成する手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  20. 請求項19に記載のコンピュータ読取可能媒体において、前記第2入出力要求をリモート接続のコンピュータに送って処理させるための手段をさらに備えたことを特徴とするコンピュータ読取可能媒体。
  21. コンピュータを、
    入出力システムにおいて入出力要求を処理する第1ドライバ手段と、
    前記入出力システムにおいて入出力要求を処理する第2ドライバ手段と、
    ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント属性が入出力要求に処理の途中で現れたとき、入出力要求を前記第1ドライバ手段から前記第2ドライバ手段に引き渡す手段であって、前記再解析ポイント属性は、特定のファイル又はディレクトリが前記入出力システム内の特定のドライバによる特殊処理を必要とする再解析ポイントであることを示す、手段と、
    該入出力要求を処理するためのコントロールを該第2ドライバ手段から前記第1ドライバ手段に引き渡して該第1ドライバ手段が該入出力要求の処理を継続できるようにする手段として機能させるためのプログラムを記録したコンピュータ読取可能記録媒体であって、
    前記第2ドライバ手段は、該第2ドライバ手段が受け取った入出力要求の処理を該第2ドライバ手段が最後まで完了する前に、該入出力要求の処理に割り込みをかける手段であることを特徴とするプログラムを記録したコンピュータ読取可能媒体。
  22. 請求項21に記載のコンピュータ読取可能媒体において、前記第2ドライバ手段は、ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント属性が該第2ドライバ手段によって検出されたことを示すステータス情報を該第2ドライバ手段から前記第1ドライバ手段に渡す手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  23. 請求項21または22に記載のコンピュータ読取可能媒体において、前記第2ドライバ手段は、前記再解析ポイント属性から抜き出した再解析ポイント情報を前記第1ドライバ手段に渡す手段であって、前記再解析ポイント情報は、前記再解析ポイントを処理すべき前記特定のドライバを特定する、手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  24. 請求項23に記載のコンピュータ読取可能媒体において、前記再解析ポイント情報はタグと値を含み、前記タグは該再解析ポイント情報を所有しているドライバ手段のIDを示し、前記値は該再解析ポイント情報を処理するために前記所有者が必要とするデータを含んでいることを特徴とするコンピュータ読取可能媒体。
  25. 請求項21ないし24のいずれかに記載のコンピュータ読取可能媒体において、前記第1ドライバ手段は該第1ドライバ手段によって受け取られた前記再解析ポイント情報が該第1ドライバ手段によって所有されているかどうかを判別する手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  26. 請求項25に記載のコンピュータ読取可能媒体において、前記判別する手段は前記第1ドライバ手段が前記再解析ポイント情報を所有しているかどうかを判別するために該再解析ポイント情報のタグを調べることを特徴とするコンピュータ読取可能媒体。
  27. 請求項21ないし26のいずれかに記載のコンピュータ読取可能媒体において、前記第1ドライバ手段は前記入出力要求の処理を継続するための第2の入出力要求を作成する手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  28. コンピュータを、
    入出力要求を処理する複数のドライバ手段と、
    ファイルまたはディレクトリのどちらかの少なくとも1つに関連する再解析ポイント属性が入出力要求の処理の途中で現れたとき、前記ドライバ手段によって受け取られた前記入出力要求の通常の処理に割り込みをかける手段であって、前記再解析ポイント属性は、特定のファイル又はディレクトリが前記入出力システム内の特定のドライバによる特殊処理を必要とする再解析ポイントであることを示す、手段と、
    前記再解析ポイント属性が該ドライバ手段によって検出されたとき、該入出力要求の処理を該ドライバ手段から前記複数のドライバ手段の他のドライバ手段に引き渡す手段として機能させるプログラムを記録したコンピュータ読取可能媒体。
  29. 請求項28に記載のコンピュータ読取可能媒体において、前記再解析ポイント属性が現れたことを示すステータス情報を前記ドライバ手段から前記複数のドライバ手段の前記他のドライバ手段に渡す手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  30. 請求項28または29に記載のコンピュータ読取可能媒体において、前記再解析ポイント属性から抜き出した再解析ポイント情報を前記複数のドライバ手段の前記他のドライバ手段に渡す手段を含んでいることを特徴とするコンピュータ読取可能媒体。
  31. データ構造に基づいて複数のデータ・フィールドにデータが記録されたコンピュータ読取可能媒体であって、
    前記データ構造に基づいて割り振られた、ある範囲の記憶アドレスの第1領域内にストアされた第1組のデータ・フィールドであって、ユーザ・データをストアするために利用可能であり、ストアされたデータをリトリーブするためにユーザによってアクセス可能であり、
    前記第1領域内にストアされており、前記ユーザによってストアされたデータを収めている第1データ・フィールドを含んでいる第1組のデータ・フィールドと、
    前記データ構造をストアするために割り振られた、ある範囲の記憶アドレスの第2領域内にストアされた第2組のデータ・フィールドであって、該データ構造の種々の属性をストアするために利用可能であり、前記属性は、該データ構造に関連する入出力要求を処理するためにドライバ手段によってアクセス可能であり、該第2組のデータ・フィールドは、
    前記第2領域内にストアされており、データ構造の名前を表しているデータを収めている第2データ・フィールドと、
    該第2領域内にストアされており、該データ構造が他のドライバ手段による処理が必要であるかどうかを判別するために前記ドライバが使用するように構成された再解析ポイント属性を表すデータを収めている第3データ・フィールドとを含んでいる第2組のデータ・フィールドであって、前記再解析ポイント属性は、特定のファイル又はディレクトリが入出力システム内の特定のドライバによる特殊処理を必要とする再解析ポイントであることを示す、第2組のデータ・フィールドと
    データが記録されたコンピュータ読取可能媒体。
JP54426298A 1997-04-15 1998-04-14 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ Expired - Fee Related JP4060890B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US83959397A 1997-04-15 1997-04-15
US08/862,025 1997-05-22
US08/862,025 US5931935A (en) 1997-04-15 1997-05-22 File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system
US08/839,593 1997-05-22
PCT/US1998/007595 WO1998047074A1 (en) 1997-04-15 1998-04-14 File system primitive allowing reprocessing of i/o requests by multiple drivers in a layered driver i/o system

Publications (2)

Publication Number Publication Date
JP2001520774A JP2001520774A (ja) 2001-10-30
JP4060890B2 true JP4060890B2 (ja) 2008-03-12

Family

ID=27126123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP54426298A Expired - Fee Related JP4060890B2 (ja) 1997-04-15 1998-04-14 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ

Country Status (4)

Country Link
EP (1) EP1008045B1 (ja)
JP (1) JP4060890B2 (ja)
AU (1) AU7121698A (ja)
WO (1) WO1998047074A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694354B1 (en) 1998-11-30 2004-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Host computer access to peripheral device drivers
JP5055492B2 (ja) * 2001-05-07 2012-10-24 サイエンスパーク株式会社 電子計算機のインターフェースドライバプログラム及びその記録媒体
US8171483B2 (en) * 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US10223378B2 (en) 2015-11-02 2019-03-05 Microsoft Technology Licensing, Llc Controlling reparse behavior associated with an intermediate directory
CN116136737B (zh) * 2021-11-16 2024-06-11 华为技术有限公司 Io处理方法和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175855A (en) * 1987-07-27 1992-12-29 Laboratory Technologies Corporation Method for communicating information between independently loaded, concurrently executing processes
US5680618A (en) * 1993-05-26 1997-10-21 Borland International, Inc. Driver query and substitution for format independent native data access

Also Published As

Publication number Publication date
EP1008045A4 (en) 2004-07-28
EP1008045A1 (en) 2000-06-14
WO1998047074A1 (en) 1998-10-22
JP2001520774A (ja) 2001-10-30
EP1008045B1 (en) 2007-11-21
AU7121698A (en) 1998-11-11

Similar Documents

Publication Publication Date Title
US5931935A (en) File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system
US5978815A (en) File system primitive providing native file system support for remote storage
US6119118A (en) Method and system for extending file system metadata
US7243346B1 (en) Customized library management system
US7765189B2 (en) Data migration apparatus, method, and program for data stored in a distributed manner
US7203774B1 (en) Bus specific device enumeration system and method
AU638138B2 (en) Methods and apparatus for implementing data bases to provide object-oriented invocation of applications
EP0471442B1 (en) Method for implementing server functions in a distributed heterogeneous environment
KR100243717B1 (ko) 객체 지향 환경에서 객체에 대한 지속형 메타상태를 가능하게 하기위한 방법 및 장치
JP3756949B2 (ja) ファイルシステムに記憶された情報に関する要求を処理する方法及び装置
CN101329636B (zh) 虚拟化窗口信息的方法和设备
KR100868410B1 (ko) 관리화된 파일 시스템 필터 모델 및 아키텍쳐
US5619710A (en) Method and apparatus for object-oriented invocation of a server application by a client application
JPH07104808B2 (ja) 設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置
JPH06231022A (ja) コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法
US7149865B2 (en) Memory allocation using mask-bit pattern to encode metadata within memory address
JP2001517836A (ja) 1つの記憶媒体の名称空間を別の記憶媒体の名称空間に移植する場合に既定のアクションを実行するシステムおよび方法
EP1244017A1 (en) Data structure managing device, data structure managing system, data structure managing method, and recorded medium where data structure managing program is stored
JPH0644063A (ja) 個別サブプログラムをメインプログラムに統合する方法
CN1326062C (zh) 计算机系统和方法
JP2002007182A (ja) 外部記憶装置の共有ファイル管理方式
JP4432087B2 (ja) データベース更新管理システム、プログラムおよび方法
JP2001175460A (ja) プログラム配付管理システム
JP4060890B2 (ja) 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ
US7389515B1 (en) Application deflation system and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050413

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060307

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060607

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071221

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101228

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111228

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111228

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121228

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131228

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees