JP4279452B2 - 1つの記憶媒体の名称空間を別の記憶媒体の名称空間に移植する場合に既定のアクションを実行するシステムおよび方法 - Google Patents

1つの記憶媒体の名称空間を別の記憶媒体の名称空間に移植する場合に既定のアクションを実行するシステムおよび方法 Download PDF

Info

Publication number
JP4279452B2
JP4279452B2 JP2000513227A JP2000513227A JP4279452B2 JP 4279452 B2 JP4279452 B2 JP 4279452B2 JP 2000513227 A JP2000513227 A JP 2000513227A JP 2000513227 A JP2000513227 A JP 2000513227A JP 4279452 B2 JP4279452 B2 JP 4279452B2
Authority
JP
Japan
Prior art keywords
mount point
driver
active mount
request
file
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
JP2000513227A
Other languages
English (en)
Other versions
JP2001517836A (ja
JP2001517836A5 (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/933,681 external-priority patent/US5991777A/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2001517836A publication Critical patent/JP2001517836A/ja
Publication of JP2001517836A5 publication Critical patent/JP2001517836A5/ja
Application granted granted Critical
Publication of JP4279452B2 publication Critical patent/JP4279452B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
(発明の背景)
(発明の分野)
本発明は、1つの記憶媒体の名称空間(namespace)を別の記憶媒体の名称空間に移植する(graft)システムおよび方法に関する。更に、特定すれば、本発明は、1つの記憶媒体の名称空間を別の記憶媒体の名称空間に移植する際に、ユーザまたはプログラムの介入なしに、アクションの実行を可能とする。
(従来の技術的現状)
機能性コンピュータ・システムは、通常、3つの基本的な構成要素から成る。第1の構成要素はコンピュータ・ハードウエアであり、第2の構成要素はユーザまたはアプリケーション・プログラムであり、第3の構成要素はオペレーティング・システムである。一般に、コンピュータ・ハードウエアは、中央演算装置(CPU)のようなデバイス、RAMおよびROMのようなシステム・メモリ、磁気または光ディスク・ストレージのような大容量記憶装置、キーボードまたはその他の入力デバイス、ならびにディスプレイまたはその他の出力デバイスを含む。コンピュータ・システムのユーザは、通常、ユーザ・プログラムまたはアプリケーション・プログラムと双方向処理を行う。このようなプログラムは、周知のワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、データベース・アプリケーション等を含む。コンピュータのオペレーティング・システムは、ユーザにアプリケーション・プログラムの実行を開始させるとうような、多くの機能を実行する。加えて、最近のオペレーティング・システムは、アプリケーション・プログラムとコンピュータ・システムのハードウエアとの間のインターフェースも提供する。したがって、一旦はアプリケーション・プログラムが直接コンピュータ・システムのハードウエアにアクセスすることが一般的にはなったが、最近のオペレーティング・システムは、標準化され一貫性のあるインターフェースを提供し、ユーザ・アプリケーションが、標準化にしたがってコンピュータのハードウエアとインターフェースしたり、あるいはこれにアクセスすることが可能となっている。
【0002】
ユーザ・アプリケーションのようなプロセスと特定の種類のハードウエア・デバイスとの間に一貫性のあるインターフェースを備えるためには、実際のハードウエアとプロセスとの間に、いくつかのソフトウエア・レイヤがあるとよい。例えば、あるプロセスはオペレーティング・システムにコールすることができる。一方、オペレーティング・システムは、ハードウエア・ドライバ・レイヤが提供するサービスを利用することができる。そして、ハードウエア・ドライバ・レイヤは、直接ハードウエアとインターフェースする。このような階層的手法の大きな利点は、残りのレイヤに大きなインパクトを及ぼすことなく、レイヤの追加や置換が可能なことにある。例えば、システムに新たなハードウエア・デバイスを追加する場合、新たなデバイスを追加すれば、オペレーティング・システムはこのハードウエアにアクセスすることができる。これらの変更は全て、既存のアプリケーション・プロセスに対するインパクトを最小に抑えて、またはインパクトを生ずることなく行うことができる。
【0003】
多くのオペレーティング・システムは、種々の大容量記憶装置とインターフェースするI/Oサブシステムを備えている。このようなI/Oサブシステムは、I/O要求を、当該I/O要求を満たすために実行しなければならないアクションに変換するために必要な多くの詳細を扱う。これらのアクションの多くは、ファイルからの情報の検索というような上位概念から、磁気ディスク上の特定の場所への読み取りヘッドの位置付けや、当該特定の場所からの情報の検索というような下位アクションへの変換要求のために、必要となるものである。
【0004】
最近のコンピュータ・システムでは、通常データは階層的な大容量記憶装置上に格納し、ツリー構造に似せた階層にディレクトリおよびファイルを編成している。いずれのファイルまたはディレクトリの場所も通常、経路名(path name)で指定する。経路名は、典型的に、ルート即ち開始ディレクトリから始まり、所望のファイルまたはディレクトリに達するまでの、後続の各サブディレクトリの名称を示す。例えば、“file.dat”と呼んでいるファイルは、ディレクトリ“temp”に格納することができ、これは、ルート・ディレクトリ“root\.”のサブディレクトリである。file.datにアクセスするには、I/O要求は、適切なファイルを特定しアクセスするために、I/Oサブシステムを特定の場所に導く経路名を明示的または暗示的に含めばよい。file.datの経路名は、したがって、\root\temp\file.datとなる。
【0005】
I/Oサブシステムが、関連する経路名を有するI/O要求を受け取った場合、経路名を解明し、特定の記憶装置上の特定の場所への変換を可能とし、I/O要求を満たせるようにしなければならない。経路名は、直接I/Oサブシステムに供給することができ、あるいは既知の情報に基づいて作成してもよい。あるファイル・システム内におけるファイル名の解明は、典型的に、多段手順である。通常、ファイル・システムが特定に成功するために必要な、名称付きコンポーネントの全てをデコードする段階から開始する。次に、この手順は、経路名において連続する名称コンポーネントを、通常左から右に識別する繰り返しプロセスに進む。この手順は、これら名称解明の各々の成功または失敗で終了する。このように、上述の例では、経路名を連続するコンポーネントに分解し、解明プロセスによって、順番に、ルート・ディレクトリ、tempサブディレクトリ、そしてファイルfile.datを特定していく。
【0006】
安価で強力なコンピュータの普及により、多くのユーザおよび組織は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、またはその他のネットワーク構築技術を利用して、相互接続したコンピュータのネットワークを組み立て、個々のユーザにデータおよび情報を共有させている。多くの場合、これらのコンピュータ・ネットワークは、多数の記憶装置を有し、多数のユーザによってアクセス可能となっている。その結果、個々のユーザは多くの異なる記憶装置へのアクセスを有する場合もある。記憶装置の数、および各記憶装置上のディレクトリおよびサブディレクトリの階層が増大するに連れて、ユーザは彼らのデータを見つけ出し管理するのが一層困難となる。
【0007】
ボリュームとは、ファイル・システムによってフォーマットし、ファイル・システム経路またはI/Oサブシステム内部のデバイス名によってアクセス可能な記憶単位である。ユーザに多数のボリュームが利用可能であり、その各々がディレクトリおよびサブディレクトリの階層を有する場合、ユーザは個々のボリュームのディレクトリおよびサブディレクトリ間の相互関係を概念的に把握することが困難となるであろう。これは、当然特定の階層構造にしたがって編成するような大量のデータは、単一の記憶ボリューム上には全ての関連データの格納および編成ができなくなる程大きくなるという特異な問題を招く。このような状況では、通常、一部のデータを1つのボリュームに格納し、別のデータを他のボリュームに格納することが必要となる。このように論理的に関連するデータを多数のボリュームに分割すると、一部のユーザには、一層の困惑および困難が感じられるであろう。
【0008】
このような欠点(limitation)を多少とも克服するために、記憶装置上のデータの物理的な編成とは独立した、記憶装置の論理図を提示する機構が開発されている。これらの機構は、1つの記憶装置の名称空間(namespace)を他の記憶装置の名称空間に移植し、単体の統一した論理図をユーザに提示しようというものである。
【0009】
ここで図1を参照し、このような移植プロセスの一例を示す。図1には、2つのボリューム20および22を示す。ボリューム20および22は、各々、独立したディレクトリ構造を有する。ボリューム20のディレクトリ構造を全体的に24で示し、ボリューム22のディレクトリ構造を全体的に26で示す。ここで用いる場合、ディレクトリ構造および名称空間は、相互交換可能に用い、特定のボリューム上にあるディレクトリおよびファイルの名称または構造を特定するものとする。ボリューム20およびボリューム22は各々個別のディレクトリ構造を有するが、この例では、論理ディレクトリ構造28で示すように、単一の統合化したディレクトリ構造をユーザに提示することが望ましい。論理ディレクトリ構造28は、ディレクトリ構造26をDir4 30においてディレクトリ構造24に移植することが望ましいことを示す。このような移植を行うと、論理ディレクトリ構造28が得られる。
【0010】
1つの記憶ボリュームの名称空間を別の記憶ボリュームの名称空間に移植するには、多くの機構が使用可能であるが、「マウント・ポイント」(mount point)と呼ばれる、1つの共通した技術がある。マウント・ポイントとは、別の名称空間またはディレクトリ構造をマウントまたは移植する名称空間位置のことである。したがって、図1では、Dir4 30をマウント・ポイントと定義する。図1では、これは破線の矢印32で示す。概念的には、マウント・ポイント30を横断するときに、ファイル・システムはボリューム20の代わりにボリューム22にアクセスする。例えば、ユーザに論理ディレクトリ構造28を提示する場合、ユーザは、Dir8におけるfile.datにアクセスすることを望み、そのファイルへの経路は、C:\Dir2\Dir4\Dir8\file.datとして与える。ファイル・システムがこの経路名を解明する場合、ファイル・システムは、ボリューム20にアクセスすることによって、Dir4に対する経路名を解明する。一旦Dir4にアクセスしたなら、しかしながら、ファイル・システムはDir4をマウント・ポイントとして認識し、ボリューム22にアクセスすることによって、解明プロセスを続ける。本質的に、マウント・ポイントは従来より一種の特殊ディレクトリとして作用し、他のボリュームの名称空間内のある位置にアクセスを方向転換させることができる。
【0011】
マウント・ポイントは、基盤の物理的記憶構造とは無関係の論理編成を作成することができるが、いくつかの問題も存在する場合がある。例えば、図1のボリューム22がリムーバブル記憶装置である場合、論理ディレクトリ構造28を介してこのデバイスにアクセス可能となる前に、リムーバブル媒体を検索しマウントしなければならない。典型的に、これらの工程は、ユーザに論理ディレクトリ構造28を提示する前に行われる。このような検索およびマウント・プロセスは、例えば、ユーザによってオペレーティング・システムを介して、またはアクセスする前に当該デバイスを検索しマウントしなければならないことを知っているプログラムによって起動することが考えられる。ユーザまたはアプリケーション・プロセスにリムーバブル・ボリュームを検索しマウントする負担を強いると、いくつかの望ましくない結果が生ずる。例えば、どのようにして媒体を検索しマウントするのかわかるように、ユーザを訓練しなければならない。アプリケーション・プログラムに負担を強いると、リムーバブル媒体を検索しマウントしようとするアプリケーション・プログラム毎に、このような機能性を組み込まなければならない。この結果、大量の冗長性および手間の繰り返しを生じさせることになる。
【0012】
したがって、ユーザに論理ディレクトリ構造を提示し、ユーザまたはアプリケーション・プログラムがリムーバブル記憶媒体にアクセスしようとする前に実行しなければならない、リムーバブル記憶媒体のマウントおよび検索のようなコマンドを不要とすることができるシステムを有することができれば望ましいであろう。また、これらの機能を、手間の繰り返しを生じさせずに行えれば望ましいであろう。更に、ユーザがどのようにリムーバブル媒体を検索しマウントするか知る必要なく、この結果を得ることが望ましい。
(発明の概要)
従来の技術的現状における前述の問題は、本発明が克服することに成功した。本発明は、1つの記憶媒体の名称空間の全部または一部を同じまたは別の記憶媒体の名称空間に移植する際に、任意のアクションを実行するシステムおよび方法に関するものである。本発明は、広範囲のシステムを実現し、広範囲の結果を得るために用いることができる。例えば、マウント・ポイントを横断するとき、オペレーティング・システムは、I/O要求を完了する前に、自動的に適切な媒体を検索し装填することも可能である。本発明は非常にロバスト性が高いので、マウント・ポイントを横断するときに、あらゆる任意のアクションでも実行可能であり、通常ではI/OシステムやI/O要求には関連のないアクションでも実行可能である。
【0013】
本発明は、アクティブ・マウント・ポイント・ドライバ(active mount point driver)を提供する。このドライバは、オペレーティング・システムのI/Oサブシステムの一部としてもよい。経路またはファイル名を含むI/O要求を受け取った場合、従来の方法でこの経路およびファイル経路を解明する。解明プロセスの間にアクティブ・マウント・ポイントに出くわした場合、制御をアクティブ・マウント・ポイント・ドライバに引き渡す。すると、アクティブ・マウント・ポイント・ドライバは、I/O要求の完了を進めるために必要なあらゆるアクションを実行することができる。一旦アクティブ・マウント・ポイント・ドライバが、I/O要求が完了する前に行う必要がある任意の所望のアクションを完了または開始したなら、I/Oサブシステムの別のコンポーネントに制御を再度引き渡し、アクティブ・マウント・ポイント・ドライバのアクションによってI/O要求が未だ完了していない場合、このI/O要求を完了させることができる。
【0014】
アクティブ・マウント・ポイント・ドライバは、そのアクションを実行する際、広範囲におよぶシステム資源、プロセス、ドライバ等を利用することができる。一旦制御をアクティブ・マウント・ポイント・ドライバに引き渡したなら、アクティブ・マウント・ポイント・ドライバは、システムの資源、プロセス、ドライバ、サブシステム等の全てにアクセスすることができる。システムが他のシステムとネットワークを組んでいる即ち接続している場合、アクティブ・マウント・ポイント・ドライバは、これらのシステム、ならびに当該システムに関連するあらゆるコンポーネント、サブシステム、プロセス、ドライバ等にアクセスすることができる。本発明が定義する構造は、ロバスト性が高いので、アクティブ・マウント・ポイント・ドライバは、アクティブ・マウント・ポイントに出くわしたときには、望ましいアクションであればいずれでも実行することができる。
【0015】
アクティブ・マウント・ポイントの機能(capability)の一例として、全てのCDをCDジュークボックスに統合するディレクトリ階層を作成し、ユーザに表示することができる。特定のCDにアクセスしたいユーザがいれば、単にディレクトリ構造内の適切な場所を選択するだけでよい。I/OシステムがCDへの経路名を解明し始めると、1つ以上のアクティブ・マウント・ポイントに出くわす可能性がある。これらのアクティブ・マウント・ポイントは、とりわけ、制御をアクティブ・マウント・ポイント・ドライバに引き渡すことができ、次いでアクティブ・マウント・ポイント・ドライバは、CDジュークボックスにコマンドを発行し、適切なCDを選択し装填させることができる。次いで、I/O要求を完了するために、制御をI/Oサブシステムに引き渡すことができる。CDが音楽を収容している場合、アクティブ・マウント・ポイント・ドライバは、一旦CDがマウントされたならば、マルチメディア・サブシステムにコマンドを発行し、当該CDを演奏し始めることも可能である。アクティブ・マウント・ポイントに出くわした場合には、その他のあらゆるアクションも利用可能である。
【0016】
今述べたシステムを実現するためには、多くの機構が使用可能である。重要な特徴の中には、アクティブ・マウント・ポイントを識別可能なこと、およびアクティブ・マウント・ポイントに出くわしたときに制御をアクティブ・マウント・ポイント・ドライバに引き渡すことができることである。この移行を行う機構は、効率的であり、しかも一旦アクティブ・マウント・ポイント・ドライバが実行すべきアクションを完了したならば、必要に応じて、アクティブ・マウント・ポイント・ドライバから制御を戻せるようでなければならない。加えて、制御をアクティブ・マウント・ポイント・ドライバに引き渡す場合、アクティブ・マウント・ポイント・ドライバは、実行すべきアクションを特定即ち選択できなければならない。以下で更に詳しく説明するが、どのアクションを完了すべきか決定即ち選択した場合、アクティブ・マウント・ポイント・ドライバは、他の資源から他の情報を収集することができ、あるいは制御を他のドライバまたはプロセスに引き渡してこれらの決定を行うことができる。本発明の一実施形態は、マウント・ポイントと共に格納してある追加情報を利用して、これらの機能の一部を遂行する。
【0017】
多くのシステムでは、ディレクトリまたはファイルは、異なるプロパティ(property)または属性の集合体と見なすことができる。ファイルの共通な属性には、名称属性や、システム、読み取り専用、隠れ(hidden)等のような種々のフラグ属性、およびデータを格納するためのデータ属性がある。ディレクトリの共通属性には、ディレクトリの名称、可能性として何らかのセキュリティ情報、当該ディレクタが収容するディレクトリまたはファイルを識別するポインタまたはその他の機構等がある。本発明の一実施形態では、追加の属性をディレクトリまたはファイルに付加することによって、アクティブ・マウント・ポイントを作成する。I/O要求中にディレクトリまたはファイルに出くわした場合、I/Oサブシステムはこの追加の属性を識別し、ディレクトリまたはファイルをアクティブ・マウント・ポイントとして認識することができる。次いで、制御をアクティブ・マウント・ポイント・ドライバに渡し、次の処理に進むことができる。アクティブ・マウント・ポイント・ドライバは、種々のソースから情報を検索することができ、その中には、ディレクトリまたはファイルの1つ以上の属性が含まれる。この情報に基づいて、アクティブ・マウント・ポイント・ドライバは、実行すべきアクションを決定することができる。一旦アクティブ・マウント・ポイントがその作業を完了したなら、次いで制御をI/Oサブシステムに戻し、次の処理に進むことができる。
【0018】
アクティブ・マウント・ポイント属性は、ファイルおよびディレクトリ双方に追加することができる。属性は、好ましくは、性質上添加的とし、個々のファイルおよびディレクトリが、アクティブ・マウント・ポイント属性のステータスに応じて、アクティブ・マウント・ポイントであるか、またはそうでないというようにするとよい。好ましくは、アクティブ・マウント・ポイント属性は、タグおよびデータ値双方を有する。タグは、アクティブ・マウント・ポイントの「オーナー」であるアクティブ・マウント・ポイント・ドライバを識別する際に用いる。通常、アクティブ・マウント・ポイントのオーナーは、当該アクティブ・マウント・ポイントに関与するI/O要求の全部または一部を処理する役割を担う。この構造によって、単一のシステム内に多数のアクティブ・マウント・ポイント・ドライバを位置付け、各々が異なる目的を達成するように構成することが可能となる。アクティブ・マウント・ポイント属性のデータ値は、オーナーによってアクティブ・マウント・ポイント属性に格納する。したがって、オーナーは、アクティブ・マウント・ポイント属性の値を用いて、当該アクティブ・マウント・ポイントに関与する個々のI/O要求を完了する際に必要なまたは役に立つ、あらゆるデータを格納することができる。このようなデータ値は、どのようなアクションを実行すべきか判断する際に必要な全ての情報を含むことができ、あるいはどのようなアクションを実行すべきかについて判断する際に必要な情報を突き止めることをアクティブ・マウント・ポイント・ドライバに可能にするポインタまたはその他の情報を含むこともできる。また、アクティブ・マウント・ポイントの値は、どのようなアクションを実行すべきかについて判断する際に用いるべき、その他のソフトウエア・エンティティを識別することも可能である。要するに、アクティブ・マウント・ポイント属性の値は、オーナーが制御するので、オーナーはアクティブ・マウント・ポイントにあらゆる望ましい情報を格納することができる。
【0019】
本発明の一実施形態は、複数の階層状ドライバを有するI/Oシステムを利用する。アクティブ・マウント・ポイント・ドライバは、I/Oシステムのレイヤの1つを形成する。特定のドライバがあるアクティブ・マウント・ポイント属性を識別すると、このドライバはアクティブ・マウント・ポイントのタグおよび値を抽出する。次いで、アクティブ・マウント・ポイントのタグおよび値と共に、I/O要求を階層状ドライバの別のものに受け渡し、あるドライバがそれ自体をアクティブ・マウント・ポイントのオーナーであることを確認するまで続ける。次いで、オーナーは制御を取得し、I/O要求の処理を再開する。アクティブ・マウント・ポイントのオーナーは、I/O要求を完全に処理することができ、あるいは他のドライバ、資源、情報、プロセス等を利用してI/O要求を完全に処理することもできる。状況によっては、オーナーは他のコンピュータまたはシステムも用いて、I/O要求を完全に処理することも可能である。
【0020】
各アクティブ・マウント・ポイントはタグおよび値双方を有するので、アクティブ・マウント・ポイント機構は、非常に柔軟な構造を備えており、あらゆる数のドライバがあらゆる数の機能を遂行するためにも使用可能である。自動的にリムーバブル媒体を装填しマウントするシステムの一例について既に示した。別の例として、アクティブ・マウント・ポイントは、通常ではI/Oシステムとは関連のないアクションを実行することも可能である。例えば、アクティブ・マウント・ポイントは、安全な物理的設備に格納してあるファイルの名称空間を、大きなディレクトリ階層に移植するセキュア・ファイル・システム(secure file system)を実現する際にも使用可能である。個人がセキュア・ファイルの1つにアクセスする場合、制御をアクティブ・マウント・ポイント・ドライバに引き渡す。すると、アクティブ・マウント・ポイント・ドライバは、特殊な妥当性判断手順を起動し、ファイルにアクセスしようとしている個人が、それを行う許可を有するか否かについて判定を行う。例えば、アクティブ・マウント・ポイント・ドライバは、ファイルにアクセスしようとしている個人に対して、別個の挑戦を開始することができる。また、アクティブ・マウント・ポイント・ドライバは、E−メールまたはその他のメッセージをセキュリティ部署に送り、ある個人がファイルにアクセスしようとしていたことを通知する。ファイルがある時間中またはある日にだけアクセスが許可される場合、アクティブ・マウント・ポイント・ドライバは、日時をチェックし、そのファイルに対するアクセスを許可すべきか否かについて判定を行うことができる。この例でわかるように、アクティブ・マウント・ポイント・ドライバは、直接入手可能な情報に基づいて、あるいはアクセスまたは入手した情報のいずれかに基づいて、あらゆる数のアクションでも実行することができる。
【0021】
最後の例として、本発明を利用すると、従来では記憶装置の名称空間内には移植できなかったものを、記憶装置の名称空間に移植することが可能となる。例えば、マウント・ポイントは、1つの大容量記憶装置のファイル・システム名称空間を、他の大容量記憶装置のファイル・システム名称空間に移植するために従来用いられてきた。しかしながら、本発明では、インターネットまたはイントラネットのウェブ・サイトのような、ファイル・システム名称空間でないものでも、大容量記憶装置の名称空間に移植することが可能となる。インターネットは、ユーザ・インターフェースでは、アクティブ・マウント・ポイントからユーザ・インターフェースに情報を供給することによって、特殊なアイコンで表わすことも可能である。ユーザがそのアイコンを開こうとした場合、アクティブ・マウント・ポイント・ドライバは、インターネットまたはその他のデータ・プロバイダへのアクセスを行い、ユーザ・インターフェースを介してデータ・プロバイダからユーザに入手可能なコンテンツに関するフィードバックを提供する。先の例に示したように、本発明は非常にロバスト性が高い機構を備えているので、1つのデバイスの名称空間を別のデバイスの名称空間に移植する際、あらゆる任意のアクションを実行することが可能である。
【0022】
本発明の付加的な利点は、以下に続く説明に明記してあり、部分的にはその記載から自明であり、あるいは本発明の実施によって習得することができる。本発明の目的および利点は、添付した請求の範囲に特定して指摘した手段および組み合わせによって実現し、獲得することができる。本発明のこれらおよびその他の目的ならびに特徴は、以下の説明および添付した請求の範囲から一層明白となり、あるいは以下に明記する本発明の実施によって習得することができよう。
【0023】
本発明の先に引用したおよびその他の利点ならびに目的を得る形態について、添付図面に示すその具体的な実施形態を参照しながら、先に簡単に説明した本発明の更に特定的な説明を行う。これらの図面は本発明の典型的な実施形態のみを図示するのであり、したがってその範囲を限定するとは見なさないことを理解の上で、添付図面の使用によって、本発明を更に具体的かつ詳細に記載し説明することとする。
(好適な実施形態の詳細な説明)
以下に、本発明のシステムおよび方法を実現するために用いる実施例の構造または処理のいずれかを例示するために、図面を用いて本発明について説明する。このように図面を用いて本発明を提示することは、その範囲の限定として解釈すべきことではない。本発明は、階層状データ格納のための方法およびシステム双方を念頭に入れている。本発明の実施形態は、種々のコンピュータ・ハードウエアを備えた特殊目的コンピュータまたは汎用コンピュータから成るものとすることができ、以下で更に詳細に説明する。
【0024】
また、本発明の範囲に該当する実施形態は、実行可能な命令またはデータ・フィールドが記憶されているコンピュータ読み取り可能媒体も含む。このようなコンピュータ読み取り可能媒体は、汎用コンピュータまたは特殊目的コンピュータによってアクセス可能で、かつ入手可能なあらゆる媒体とすることができる。一例として、限定ではなく、このようなコンピュータ読み取り可能媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスク・ストレージ、磁気ディスク・ストレージまたはその他の磁気記憶装置、あるいは所望の事項可能な命令またはデータ・フィールドを格納するために用いることができ、汎用コンピュータまたは特殊目的コンピュータによってアクセス可能なその他のあらゆる媒体を含むことができる。前述の組み合わせも、コンピュータ読み取り可能媒体の範囲に含まれて当然である。実行可能な命令とは、例えば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理装置に、ある種の機能または機能群を実行させる、命令やデータを含む。
【0025】
図2および以下の論述は、本発明を実現可能な、適当な計算機環境の端的で全体的な説明を行うことを意図したものである。本発明は、パーソナル・コンピュータが実行するプログラム・モジュールのような、コンピュータ実行可能命令に全体的に関連して説明するが、これが必要条件ということではない。一般的に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行したり、あるいは特定の抽象的なデータ型を実装する。さらに、本発明は、ハンド・ヘルド型デバイス、マルチ・プロセッサ・システム、マイクロプロセッサを用いたまたはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ等を含む、その他のコンピュータ・システム構成とでも実施可能であることを、当業者は認めよう。また、本発明は、分散型計算機環境においても実施可能であり、その場合、タスクは、通信ネットワークを通じてリンクしてあるリモート処理デバイスによって実行する。分散型計算機環境では、プログラム・モジュールは、ローカルおよびリモート記憶装置双方に位置することができる。
【0026】
図2を参照すると、本発明を実現するシステム例は、従来のコンピュータ34の形態の汎用計算機を含み、演算装置35、システム・メモリ36、およびシステム・メモリ36ないし演算装置35を含む種々のシステム・コンポーネントを結合するシステム・バス37を含む。システム・バス37は、種々のバス・アーキテクチャのいずれかを用いたメモリ・バスまたはメモリ・コントローラ、周辺バス、およびローカル・バスを含む、数種類のバス構造のいずれでもよい。システム・メモリは、リード・オンリ・メモリ(ROM)38、およびランダム・アクセス・メモリ(RAM)39を含む。起動中等においてコンピュータ34内のエレメント間の情報転送に供する基本ルーチンを収容する基本入出力システム(BIOS)40は、ROM38に格納しておくことができる。また、コンピュータ34は、図示しない磁気ハード・ディスクの読み取りおよび書き込みを行う磁気ハード・ディスク・ドライブ41、リムーバブル磁気ディスク43の読み取りおよび書き込みを行う磁気ディスク・ドライブ42、ならびにCD−ROMまたはその他の光媒体のようなリムーバブル磁気ディスク45の読み取りおよび書き込みを行う光ディスク・ドライブ44も含むことができる。磁気ハード・ディスク・ドライブ41、磁気ディスク・ドライブ42、および光ディスク・ドライブ44は、ハード・ディスク・ドライブ・インターフェース46、磁気ディスク・ドライブ・インターフェース47、および光ディスク・ドライブ・インターフェース48によって、それぞれシステム・バス37に接続してある。これらのドライブおよびそれに関連するコンピュータ読み取り可能媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ34用のその他のデータの不揮発性格納を可能にする。ここに記載する環境の一例は、磁気ハード・ディスク41、リムーバブル磁気ディスク43およびリムーバブル光ディスク45を採用するが、磁気カセット、フラッシュ・メモリ・カード、ディジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)のような、コンピュータによるアクセスが可能なデータを格納することができる、他の種類のコンピュータ読み取り可能媒体も、動作環境の一例において使用可能であることは、当業者には認められよう。
【0027】
多数のプログラム・モジュールを、ハード・ディスク、磁気ディスク43、光ディスク45、ROM38またはRAM39上に格納することができ、オペレーティング・システム49、1つ以上のアプリケーション・プログラム50、その他のプログラム・モジュール51、およびプログラム・データ52を含む。ユーザは、キーボード53およびポインティング・デバイス54のような入力デバイスによって、コマンドおよび情報をコンピュータ34に入力することができる。他の入力デバイス(図示せず)として、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星パラボラアンテナ(satellite dish)、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、システム・バス37に結合してあるシリアル・ポート・インターフェース55を介して、演算装置35に接続しているが、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス(USB:universal serial bus)のようなその他のインターフェースによって接続することも可能である。モニタ56または別の種類の表示装置も、ビデオ・アダプタ57のようなインターフェースを介して、システム・バス37に接続する。モニタに加えて、パーソナル・コンピュータは、典型的に、スピーカやプリンタのような、その他の周辺出力デバイス(図示せず)を含む。
【0028】
コンピュータ34は、リモート・コンピュータ58のような1つ以上のリモート・コンピュータへの論理接続を用いて、ネットワーク環境で動作することも可能である。リモート・コンピュータ58は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイス、またはその他の一般的なネットワーク・ノードとすることができ、典型的に、コンピュータ34に関して先に記載したエレメントの多くまたは全てを含むが、メモリ記憶装置59だけを図2に示す。図2に示す論理接続は、ローカル・エリア・ネットワーク(LAN)60およびワイド・エリア・ネットワーク(WAN)61を含み、ここでは、例示のためにこれらを提示するが、限定ではない。このようなネットワーク環境は、事務所の企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットでは一般的である。
【0029】
LANネットワーク環境で用いる場合、コンピュータ34は、ネットワーク・インターフェースまたはアダプタ62を介して、ローカル・ネットワーク60に接続する。WANネットワーク環境で用いる場合、コンピュータ34は典型的にモデム63またはインターネットのようなワイド・エリア・ネットワーク61を通じて通信を確立するその他の手段を含む。モデム63は、内蔵型でも外付け型でもよく、シリアル・ポート・インターフェース53を介してシステム・バス37に接続する。ネットワーク環境では、コンピュータ34に関連して図示したプログラム・モジュールまたはその一部を、リモート・メモリ記憶装置59に格納することも可能である。図示のネットワーク接続は一例であり、コンピュータ間に通信リンクを確立するその他の手段も使用可能であることは認められよう。
【0030】
ここで図3を参照して、クライアント・プロセスと、I/O要求を処理するための複数のドライバ手段を用いるI/Oシステムを有するオペレーティング・システムとの間の双方向処理の簡略化した図を示す。この図は、例えば、Microsoft Windows NTオペレーティング・システムを表わす。図3の図は、I/O要求を処理する複数のドライバ手段を用いる、あらゆるオペレーティング・システムも代表することができる。I/OシステムにおいてI/O要求を処理するために階層状ドライバ手段を用いることにより、多くの利点が得られる。このようなアーキテクチャから得られる利点の1つは、特定の目的のために特注した追加のドライバ手段を挿入可能なことである。以下で更に詳しく提示するが、本発明の一実施形態は、このような階層状アーキテクチャを利用することもでき、I/Oシステム内のレイヤの1つとして、アクティブ・マウント・ポイント・ドライバ手段を含むことができる。以下の図3に関する論述は、このような実施形態に対して説明することを意図するものである。
【0031】
図3において、クライアント・プロセス66は、オペレーティング・システム・サービス68を利用して、I/O要求を実行する。これは、典型的に、クライアント・プロセス66が、オペレーティング・システムが提供するアプリケーション・プログラム・インターフェース(API)機能にコールすることによって行われる。適切なAPI機能をコールすると、その結果として、オペレーティング・システム・サービス68にコールすることになる。このようなコールを矢印70で示す。
【0032】
図3において、クライアント・プロセス66は、「ユーザ」モードで動作するものとして示してあり、オペレーティング・システム表面は「カーネル」モードで動作するものとして示している。最近のオペレーティング・システムは、典型的に、種々のアプリケーション・プログラムおよび直感的ユーザ・インターフェースに対してロバストな環境を備えている。このようなオペレーティング・システムは、通常、当該オペレーティング・システムの精巧性レベル、およびオペレーティング・システムが実現するセキュリティ機能に応じて、異なる動作レベル即ち「モード」を有する。通常のアプリケーション・プログラムは、典型的に、最も低い優先度で走り、適所にセキュリティ・デバイスの完全な補体(complement)を有し、他のアプリケーションまたはオペレーティング・システムの他の層との干渉を禁止している。ハードウエアおよびオペレーティング・システムが提供するサービスには、インターフェースまたは機構を介してのみアクセスされ、これらの制御によって、ユーザ・モードにおけるユーザ・アプリケーションまたはその他のプロセスがシステムを「クラッシュ」する可能性を抑えるようにしている。この優先度が最も低いモードを、典型的に、ユーザ・モードと呼び、殆どのコンピュータ・ユーザになじみの深いモードである。ドライバとそれらの関連するハードウエアとの緊密な統合のため、そして多くのドライバが実行するタスクの時間重要性(time critical nature)のために、ドライバは典型的にオペレーティング・システム・モードで走る。これは、かなり高めの優先度およびかなり低めのセキュリティ保護を有する。このモードを通常「カーネル」モードと呼ぶ。ドライバおよびその他のオペレーティング・システム・サービスをカーネル・モードに置くことによって、オペレーティング・システムを実行する優先度を高め、ユーザ・モードでは不可能な多くの機能を実行することが可能となる。
【0033】
クライアント・プロセス66がオペレーティング・システム・サービス68をコールしI/O要求を実行する場合、I/O要求を処理する第1ドライバ手段にI/O要求を渡す。図3では、ファイル・システム・ドライバ72およびデバイス・ドライバ74が、I/O要求を処理するドライバ手段の例を表わす。I/O要求を第1ドライバ手段に渡す動作は、図3では、例えば矢印76で示している。次に、ファイル・システム・ドライバ72は、I/O要求を取得し、全体的にI/O要求の部分的処理を実行し、その後このI/O要求を次のドライバに渡す。
【0034】
一例として、クライアント・プロセス66がディスク上の特定のファイルを開き、このファイルから情報を検索しようとしていると仮定する。I/O要求は、クライアント・プロセス66からオペレーティング・システム・サービス68に渡り、更にファイル・システム・ドライバ72に移る。ファイル・システム・ドライバ72は、次に、I/O要求をファイル名からディスク上の特定の場所に変換する。変換プロセスは、その特定の場所におけるディスクの読み出しまたは書き込みを行うべきデータ・ブロックの数も含むことができる。次に、この情報を、例えば、デバイス・ドライバ74のような次のドライバに渡すことができる。デバイス・ドライバ74が要求する情報を渡すプロセスは、図3では矢印78および80で示す。デバイス・ドライバ74は、読み取りまたは書き込み対象のデータ・ブロックの場所および数を取り込み、それらを適切な制御信号に変換し、ハードウエア・デバイス82から所望の情報を検索するか、あるいは所望の情報を格納する。次に、検索したデータは、デバイス・ドライバ74からファイル・システム・ドライバ72に渡し、最終的に、戻り矢印84で示すように、クライアント・プロセス66に戻すことができる。ステータス情報も同様に戻すことができる。
【0035】
図3では、I/O要求は、ファイル・システム・ドライバ72とデバイス・ドライバ74との間で直接受け渡すことはない。代わりに、I/Oマネージャ86を介してドライバ間でI/O要求を受け渡す。しかしながら、I/Oマネージャは全ての実施態様において必ずしも必要な訳ではない。I/O要求を直接1つのドライバから別のドライバに渡すような実施形態も存在するであろう。
【0036】
次に図4を参照し、本発明の一実施形態の上位図を示す。この実施形態は、本発明のいくつかの基本概念を示し、限定ではなく一例として与えるものである。即ち、この実施形態は、アクティブ・マウント・ポイントに関連するいくつかの基本概念を示す。マウント・ポイントとは、別の名称空間またはディレクトリ構造をマウントまたは移植すべき名称空間位置のことである。マウント・ポイントは、移植先の名称空間への接合部として作用する。アクティブ・マウント・ポイントによって、これを横断するときに、アクションを移植先の名称空間に取り込むことが可能となる。本発明では、マウント・ポイントは、1つのデバイスの名称空間から他のデバイスの名称空間の全部または一部への接合部を与えるために用いることができる。加えて、マウント・ポイントは、単一のデバイスにおいて、名称空間の一部分から名称空間の別の部分への接合部を備えるためにも使用可能である。したがって、この例は1つのデバイスの名称空間から別のデバイスへの移植を示すが、同じ原理は、あるデバイスの名称空間の一部分を、このデバイスの名称空間の別の部分に移植するときにも適用できる。
【0037】
図4に示す実施形態では、CDジュークボックス88に一連のCDを装填してある。アクティブ・マウント・ポイント技術を用いるI/Oサブシステムは、個々のCDの名称空間を、ハードウエア・デバイス90のような別のハードウエア・デバイスの名称空間全体に移植してある。移植プロセスの結果得られた論理名称空間の部分的な表示を、図4において92として示す。この例では、ディレクトリ“my jukebox”は4つのサブディレクトリを有し、各々CDジュークボックス88内の1枚のCDを表わす。図4では、これらのCDを、“Hit of the Day”、“Encyclopedia”、“Current Events”、および“Baseball”として示す。論理名称空間は、図4では94として示す、プログラム1およびプログラム2というような種々のユーザ・モード・プログラムに利用可能とすることができる。
【0038】
ユーザ・モード・プログラム94は、I/OサブシステムからI/O要求を行うあらゆるプログラムとすることができる。例えば、ユーザ・モード・プログラムの1つは、Microsoft Windows Explorerプログラムのような、ユーザに論理名称空間を表示するプログラムとすればよい。このようなプログラムは、ユーザが論理名称空間を詳しく調べ、ディレクトリまたはファイル上で種々の機能を実行することを可能にする。このようなアクションの11つに、プログラム実行の開始がある。この例では、恐らくユーザはCDジュークボックス88内にあるCDの1枚にアクセスしたいのであろう。ユーザは、このようなアクションを実行するには、ユーザに表示してある対応する名称を活性化すればよい。すると、名称を活性化するプロセスは、適切なデバイスの経路名を用いて、I/OサブシステムへのI/O要求を開始する。
【0039】
この例の目的のために、“Hit of Day”CDは音楽CDであり、“Encyclopedia”CD、“Current Events”CD、および“Baseball”CDはデータCDであると仮定する。“Current Events”CDの場合、更に、このCDはオンライン・データ・サービスにアクセスし、“Current Events”CD上の情報を更新することができると仮定する。第1の例として、ユーザは“Hit of the Day”CDを活性化したと仮定する。I/O要求がI/Oサブシステムに渡されると、I/Oサブシステムは、このI/O要求に付随する経路名の解明を始める。I/Oシステムは、例えば、ハードウエア・デバイス90から、解明プロセスの間情報を検索する。“Hit of the Day”の名称をハードウエア・デバイス90上でチェックしたなら、I/Oサブシステムは、アクティブ・マウント・ポイントを横断したことを認識する。次に、ハードウエア・デバイス90上に格納してあるアクティブ・マウント・ポイント内の情報を抽出し、制御をアクティブ・マウント・ポイント・デバイス96に渡すことができる。アクティブ・マウント・ポイント・デバイス96は、ユーザが“Hit of the Day”CDにアクセスしようとしていたことを認識し、適切なアクションを実行する。この場合、アクティブ・マウント・ポイント・ドライバ96は、メディア・サービス・ドライバ98を用いて、“Hit of the Day”CDをCDジュークボックス88に装填することができる。一旦“Hit of the Day”CDをCDジュークボックス88に装填したなら、アクティブ・マウント・ポイント・ドライバ96は、自動的に“Hit of the Day”CDを演奏する工程に進むことができる。このような工程は、メディア・サービス・ドライバ98よび/または別個のオーディオ・レンダリング・ドライバ(audio rendering driver)および関連するハードウエアの使用必要とすることがある。これを図4において、例えば、他のドライバ100および他のデバイス/システム102で示す。これらのドライバによるCDジュークボックス88への直接アクセスを破線の矢印104で示す。アクティブ・マウント・ポイント・ドライバ96がCDを装填するために用いる機構は、媒体を実装する手段の一例である。メディア・サービス・ドライバ98が当該プロセスの一部である場合、メディア・サービス・ドライバ98はこのような手段の一部をなす場合もあり得る。
【0040】
他の例として、ユーザが“Current Events”CDにアクセスしたと仮定する。以前と同様に、I/OサブシステムがこのCDに関連するアクティブ・マウント・ポイントを横断したときに、制御がアクティブ・マウント・ポイント・ドライバ96に移る。アクティブ・マウント・ポイント・ドライバ96は、メディア・サービス・ドライバ98を利用して適切なCDを装填する。しかしながら、この場合、アクティブ・マウント・ポイント・ドライバ96は、オンライン・データ・サービスにアクセスし、ユーザに更新を与える工程も実行することもあり得る。
【0041】
前述の例では、アクティブ・マウント・ポイント・ドライバ96は、I/Oサブシステムが提供する情報に基づいて実行すべきアクションを決定することができた。他の状況では、アクティブ・マウント・ポイント・ドライバ96は、他の情報、ドライバ、プロセス、システム等を頼りに、情報を提供するか判断を行う機能を備えなければならない場合もある。図4では、例えば、アクティブ・マウント・ポイント・ドライバ96は、環境変数106から情報を受ける場合もある。環境変数106は、日時、CDジュークボックス88に現在装填中のCD、またはその他の何らかの種類の情報というような、システム上で利用可能な情報を表わす。このような環境変数は、I/Oサブシステムによって、マウント・ポイント・ドライバ96へ渡される情報の一部として供給することも可能である。アクティブ・マウント・ポイント・ドライバ96が、実行すべきアクションについて決定する際、その補助として他のドライバ、プロセス、システム等を必要とする場合、制御を渡すことができ、あるいは適切なデバイスまたはコンポーネントから情報を要求することができる。
【0042】
図4では、アクティブ・マウント・ポイント・ドライバ96は、他のドライバ100によって、他のデバイス102にアクセスすることも可能である。加えて、アクティブ・マウント・ポイント・ドライバ96は、専用マウント・ポイント・プログラム108のような関連するプロセスに制御を引き渡したり、あるいはこれから指示または情報を受けることも可能である。プログラム108は専用マウント・ポイント・プログラムとして示しているが、アクティブ・マウント・ポイント・ドライバ96は、アクティブ・マウント・ポイントの処理のみを専用とするのではないプログラムまたはプロセスも利用可能である。アクティブ・マウント・ポイントに出くわしたときに実行するアクションまたは複数のアクションに関する決定に供するこれらの実体のいずれにおいても、そのロジックは、アクションを選択する手段の一例である。
【0043】
図4では、アクティブ・マウント・ポイント・ドライバ96、メディア・サービス・ドライバ98、およびその他のドライバ100は、全てI/O要求を処理するドライバ手段の例である。図4では、実施態様によっては、アクティブ・マウント・ポイント・ドライバ96は、I/Oサブシステムの一部としたり、異なるサブシステムの一部としたり、あるいはそれ自体のソフトウエア・サブシステムとする場合もあり得る。
【0044】
図4の実施形態に示すように、アクティブ・マウント・ポイントに出くわした場合、1つのドライバからアクティブ・マウント・ポイント・ドライバに制御を移管する。したがって、本発明の範囲内に該当する実施形態は、受け取ったI/O要求を処理する制御を第1ドライバ手段から第2ドライバ手段に移管する手段を備えることができる。次に図5を参照し、このような手段を実現するために用いる一機構の例の基本概念を提示する。図5は、例えば、I/O処理を実行する複数のドライバ手段を利用するI/Oシステムを示す上位概念図を示す。クライアント・プロセス110は、I/O要求を行い、矢印114で示すように、最終的にオペレーティング・システム・サービス112に転送する。図5に示すI/Oシステムは、I/O処理を実行する複数のドライバ手段を備えている。限定ではなく一例として、図5では、このようなドライバ手段は、レイヤ1ドライバ116、レイヤ2ドライバ118、およびレイヤNドライバ120で示す。
【0045】
I/O要求はドライバ間で受け渡しされるので、本発明の範囲に該当する実施形態は、1つのドライバ手段から他のドライバ手段にI/O要求を受け渡す手段を備えることができる。一例として、図5では、このような手段は矢印122および124で示し、1つのドライバから他のドライバに直接受け渡すI/O要求を示す。このような手段は、I/O要求の1つのドライバから他のドライバへの移管を処理するI/Oマネージャを備える場合もある。このようなI/Oマネージャは図5のI/Oマネージャ126とすることができる。他の組み合わせも用いることができる。本質的に、1つのドライバ手段から他のドライバ手段にI/O要求を移管することを可能にする機構であれば、そのいずれもが、I/O要求を1つのドライバから他のドライバに受け渡す手段として使用するのに適しているであろう。
【0046】
図5では、I/Oマネージャ126は、クライアント・プロセス110から受け取ったI/O要求を、レイヤ1ドライバ116に送出する。このようなI/O要求は、適切な情報を適切なドライバに転送するI/Oマネージャまたはその他のいずれかの機構がコールする関数またはサービスの形態を取ることができる。Microsoft Windows NTでは、例えば、メッセージ・ドリブン機構を用いて、I/Oシステムの種々のドライバ間で通信を行う。このシステムでは、I/O要求が発生すると、I/OマネージャはI/O要求パケット(IRP)を作成し、IRPを適切なドライバに送る。I/O要求を処理し他のドライバに送出するに連れて、情報がIRPに追加され、このIRPを次のドライバに渡すことができる。加えて、新たなIRPを作成し次のドライバに送ることも可能である。ある状況では、IRPは、次のドライバに渡す前に、変更または「変形」(transmogrify)することも可能である。Microsoft Windows NTでは、I/Oマネージャは、ドライバ間でIRPを転送する役割を担う。他のシステムでは、他の機構を用いる場合もある。このような実施態様の詳細は、設計選択事項と考えられ、本発明には重要ではない。
【0047】
ここで図5を参照すると、I/O要求は、矢印122で示すように、種々のドライバを介して送出され、各ドライバは、いずれかの要求された処理を実行し、次いでI/O要求を次のドライバに送出する。図5は各ドライバが順番にI/O要求を受け取ることを示すが、実施形態によっては、あるドライバを飛ばし、I/O要求を処理するのに必要なドライバのみが実際にI/O要求を処理するようにした方が望ましい場合もあることを注記しておく。
【0048】
本発明の一実施形態では、複数のドライバを用いてI/O処理を実行する場合、アクティブ・マウント・ポイント属性を有するファイルまたはディレクトリに出くわしたときに、I/O処理を処理する通常のシーケンスを中断する機構が存在する。この場合、制御を他のドライバに渡し、アクティブ・マウント・ポイントに関連するI/O要求を処理すべきか否かについて判断を下す。したがって、本発明の範囲に該当する実施形態は、I/O要求の処理を中断する手段を備えることができる。図5では、このような手段は、例えば、レイヤNドライバ120に組み込むことができる。本発明のこの実施形態では、アクティブ・マウント・ポイント属性を有するファイルまたはディレクトリに出くわした場合、通常の処理のシーケンスを中断する。
【0049】
アクティブ・マウント・ポイント属性を認識した場合、I/O要求を処理する通常のシーケンスを保留とし、I/O要求の処理を完了する工程に移る。これらの工程は、I/O要求を処理する制御を異なるドライバに移管し、アクティブ・マウント・ポイントに対するI/O要求の処理に、当該ドライバが参加できるようにすることを伴う。したがって、本発明の範囲内に該当する実施形態は、1つのドライバ手段から他のドライバ手段に、受け取ったI/O要求を処理する制御を移管する手段を含むことができる。I/O要求の処理がアクティブ・マウント・ポイントを識別した場合に、I/O要求を処理するドライバから他のドライバに制御を移管するあらゆる機構が、利用可能である。図5では、このような機構は、例えば、矢印128によって示しており、これは、I/O要求の処理中にアクティブ・マウント・ポイントに出くわした場合に、レイヤNドライバ120からレイヤ1ドライバ116にI/O要求を処理する制御を移管することを示す。以下で更に詳細に説明するが、1つのドライバから他のドライバに制御を移管する機構は、ある情報も転送し、制御を引き受けたドライバが、アクティブ・マウント・ポイントに関与するI/O処理を適正に処理できるようにするとよい。したがって、本発明の範囲内に該当する実施形態は、1つのドライバから他のドライバに情報を受け渡す手段も備えるとよい。
【0050】
図5に示した実施形態では、レイヤ1ドライバ116は、アクティブ・マウント・ポイントに関与するI/O要求を処理する役割を担うアクティブ・マウント・ポイント・ドライバを表わす。一旦レイヤ1ドライバ116が制御を引き受けると、レイヤ1ドライバ116は、アクティブ・マウント・ポイントに関与するI/O要求を更に処理するために、あらゆる適切なアクションを実行することができる。実行可能なアクションのいくつかの例は、既に図4に関連付けて論じ更にそれ以外でも論じた。図5における実施形態は、簡略化した実施形態を表わし、レイヤ1ドライバ116は、他のエンティティを利用して、I/O要求を処理する間に完了すべきあるアクションを実行する。図5では、これらのエンティティは、例えば、他のエンティティ・ブロック130によって表わしてある。矢印132は、レイヤ1ドライバ116と他のエンティティ130との間で受け渡す制御および情報を表わす。他のエンティティ130は、例えば、他のドライバ、他のシステム、種々のデータ・ソースおよびデータ・パイプ、ユーザ・モードまたはカーネル・モード・プロセス、システム・サービス等を表わすことができる。また、レイヤ1ドライバ116は、矢印134で示すように、以前のドライバのいずれでも利用可能である。矢印134は、例えば、I/OサブシステムがI/O要求の処理を再開する前に、開始または完了しなければならないいずれかのアクティブ・マウント・ポイント・アクションをレイヤ1ドライバ116が一旦実行した場合に、通常のI/O処理に制御を戻すことを表わす。I/O要求が完了した場合、矢印138で示すように、結果をクライアント・プロセスに戻すことができる。
【0051】
レイヤNドライバ120は、記憶装置136上でアクティブ・マウント・ポイントに出くわしたときを認識することを注記しておく。アクティブ・マウント・ポイント属性の詳細およびこれらがどのようにしてファイルまたはディレクトリの一部となるかについては、以下で更に詳細に示す。アクティブ・マウント・ポイントは、I/O要求のI/O処理におけるいずれの時点でも出くわし得ることを認めるのは重要である。しかしながら、通常このようなマウント・ポイントは、前述のような名称解明プロセスにおいて出くわす。更に、ディレクトリ階層において多数のマウント・ポイントを用いて多数の名称空間を単一の論理名称空間に移植する場合、アクティブ・マウント・ポイントは、以前のマウント・ポイントを介してアクセスしたデバイス上で出くわす場合もある。言い換えると、名称解明プロセスは、経路名の解明を進める際に、1つの記憶装置から、アクティブ・マウント・ポイントに出くわした第2の記憶装置に導くことができる。
【0052】
最近のオペレーティング・システムでは、ファイルおよびディレクトリは、単に「属性」の集合体と考えることができる。属性とは、その最も抽象的なレベルにおいては、単にデータ格納位置のことである。異なる属性を用いて、ファイルまたはディレクトリの異なるプロパティを識別したり、あるいはファイルまたはディレクトリを扱わなければならないオペレーティング・システムおよびその他のプロセスが当該ファイルまたはディレクトリに関するある情報を知ることができるような、異なる種類または量の情報を保持するために用いる。例えば、ファイルは、プロセスに当該ファイルを識別させる名称属性、および当該ファイルに格納してあるデータを含むデータ属性を収容することができる。ファイルは、ファイルにアクセスできる人およびその方法を示すセキュリティ属性、タイム・スタンプ属性、ファイルが格納されているディレクトリを識別する属性のような、あらゆる数の他の属性でも有することができる。ディレクトリは、同様の種類の属性を収容することができるが、ディレクトリは、典型的には、ユーザが大量のデータを格納できるデータ属性を含まない。本発明のある種の実施形態では、アクティブ・マウント・ポイント属性をファイルまたはディレクトリに追加することによって、アクティブ・マウント・ポイントを識別する。このような属性はファイルまたはディレクトリのいずれかに追加することができるが、マウント・ポイントは、典型的に、他のデバイスの名称空間にリンクする特殊な種類のディレクトリとして考えられる。しかしかがら、完全を期すため、本発明は、アクティブ・マウント・ポイント属性をファイルまたはディレクトリのいずれかに追加することに言及する。
【0053】
これより図6を参照し、本発明と共に用いて好適なファイルまたはディレクトリのいずれかに対する属性の図表を示す。これらの属性は、具体的にはMicrosoft Windows NTのために開発したNTFSファイル・システムが用いる属性の変更リストを表わす。NTFSファイル・システムについては、Microsoft Press(マイクロソフト・プレス社)発行のHelen Custer(ヘレン・カスター)によるInside the Windows NT File System(Windows NTファイルシステムの内側)に詳細に記載されており、この言及によりその内容は本願にも含まれるものとする。図6では、ファイルまたはディレクトリを構成する属性は、2つの基本的なグループに分割することができる。第1基本グループは、全体的に140で示してあり、ファイルおよびディレクトリ双方に共通の属性を表わす。142で示す第2基本グループは、あるファイル(左側に示す)またはディレクトリ(右側に示す)に特定の属性を含む。図6は、限定ではなく一例として与えたものであって、システムが使用する属性のいずれの集合体でも、アクティブ・マウント・ポイント属性に格納されている情報が適切なドライバによって識別し検索できるのであれば、本発明との使用に適していると考えられる。
【0054】
属性140は、標準情報属性144、属性リスト146、名称属性148、セキュリティ記述属性150、アクティブ・マウント・ポイント属性152、およびその他のシステム属性154から成る。標準情報属性144は、読み取り専用、読み取り/書き込み、隠れ等、ファイルに対する標準的な「MS−DOS」属性、ファイルまたはディレクトリのタイム・スタンプ、および当該ファイルを指し示すディレクトリ数を表わす。属性リスト146は、ファイルまたはディレクトリが、マスタ・ファイル・テーブルに記録されている1つの記憶レコード以上を占める場合に、NTFSがファイルまたはディレクトリを構成する追加の属性の場所を識別するために用いる属性である。マスタ・ファイル・テーブルは、ファイルまたはディレクトリの常駐属性全てを格納してある場所である。名称属性148は、ファイルまたはディレクトリの名称である。ファイルまたはディレクトリは、NTFS内に多数の名称属性を有することができ、例えば、長い名称、短いMS−DOS名称等がある。セキュリティ記述子属性150は、Windows NTが、ファイルまたはディレクトリを所有する者およびそれにアクセスできる者を指定するために用いるデータ構造を含む。これらの属性については、Inside the Windows NT File Systemに更に詳しく記載されている。
【0055】
アクティブ・マウント・ポイント属性152は、本発明によって追加した新たな属性である。アクティブ・マウント属性152は、特定のファイルまたはディレクトリを、特定のドライバによる特殊な処理に必要なアクティブ・マウント・ポイントとして識別する。このアクティブ・マウント・ポイント属性は、2つの目的を達成可能にする十分な情報を含むことが好ましい。第1の目的は、当該アクティブ・マウント・ポイントを処理すべき特定のドライバ(アクティブ・マウント・ポイントのオーナー)を識別できなければならないことである。加えて、最大の柔軟性を得るためには、アクティブ・マウント・ポイントのオーナーは、後にオーナーが用いてアクティブ・マウント・ポイントを正しく処理することができるように、アクティブ・マウント・ポイントに関連するデータを格納できることが好ましい。アクティブ・マウント・ポイントに関するこれ以上の情報を以下に与える。他のシステム属性154は、ファイルまたはディレクトリと共に格納する他のいずれのシステム属性を代表する。
【0056】
グループ142のファイル属性は、データ属性156および158、ならびにその他の属性160から成る。ファイルは、典型的に、1つ以上のデータ属性を有する。データ属性156および158は、ユーザ制御データを格納することができる場所を表わす。殆どのシステムにおけるファイルは、単一のデータ属性を備えている。しかしながら、NTFSでは、多数のデータ属性が許される。NTFSでは、ファイルは1つの無名の属性を有し、残りのデータ属性は全て名称のあるデータ属性である。データ属性に関するこれ以上の情報は、Inside the Windows NT File Systemにおいて見出すことができる。他の属性160は、ユーザまたはユーザ・プロセスが作成し格納する、その他のユーザ属性を代表する。これらの属性は、ユーザが望むいずれの関数にも使用可能である。
【0057】
ディレクトリ属性は、例えば、インデックス・ルート属性162、インデックス割り当て属性164、ビットマップ属性166、およびその他の属性168から成るものとすることができる。これらの属性に関するこれ以上の情報は、先に言及し本願にも含まれるものとした、Inside the Windows NT File Systemにおいて見出すことができるが、本質的に、インデックス・ルート属性162は、ディレクトリが収容するファイルに対するインデックスを収容し、インデックス割り当て属性164はデータ・ブロックまたは「クラスタ」マッピングに関する情報を収容し、ビットマップ属性82は、どのクラスタが使用中でありどのクラスタが空いているかを追跡する。その他の属性168によって示すように、その他の属性もディレクトリの一部として定義し、格納することが可能である。
【0058】
これまでの論述は、特定の形式のファイルまたはディレクトリに関していくらか詳細な部分にまで入り込んだが、これは例示に過ぎず、本発明の範囲を限定するものとして解釈すべきではない。本発明は、ファイルまたはディレクトリの既存の属性にアクティブ・マウント・ポイントを追加した、いずれの形式のファイルまたはディレクトリとでも機能するものである。あるいは、既存の属性を利用し、アクティブ・マウント・ポイント属性情報を格納し、したがってファイルまたはディレクトリ内の既存の属性数を増大させることなく、アクティブ・マウント・ポイント属性を含ませる方法を等価的に得ることも可能な場合もある。
【0059】
アクティブ・マウント・ポイント属性152は、マウント・ポイントを識別可能にする情報を格納し、マウント・ポイントは当該マウント・ポイントのオーナーが処理することが好ましい。したがって、これらの目標の達成を可能にするいずれの情報の組み合わせでも、アクティブ・マウント・ポイント属性152に用いることができる。一実施形態では、アクティブ・マウント・ポイント属性として、リパーズ・ポイント属性(reparse point attribute)を用いる。リパーズ・ポイント属性、およびこれらをどのように用いてI/O要求の処理を中断し制御を他のドライバに移管して処理するかに関するこれ以上の情報は、FILE SYSTEM PRIMITIVE ALLOWING REPROCESSING of I/O REQUESTS BY MULTIPLE DRIVERS IN A LAYERED DRIVER I/O SYSTEM(階層状ドライバI/Oシステムにおいて多数のドライバによるI/O要求の再処理を可能にするファイル・システム・プリミティブ)と題する米国特許出願第08/239,593号(以後「リパーズ・ポイント出願」と呼ぶ)において見出すことができる。その内容は、この言及により本願にも含まれるものとする。次に図7を参照し、アクティブ・マウント・ポイント属性として用いて好適な属性の基本構造を示す。図7に示すアクティブ・マウント・ポイント属性は、タグ170および値172から成る。
【0060】
アクティブ・マウント・ポイントは特定のドライバによって処理するので、本発明の範囲内に該当する実施形態は、特定のドライバをアクティブ・マウント・ポイントのオーナーとして識別する手段を備える。アクティブ・マウント・ポイントに関与するI/O要求の少なくとも一部を処理するドライバとして、特定のドライバを識別するいずれの機構でも、このような手段に使用可能である。アクティブ・マウント・ポイントが図7に示す構造を有する場合、このような手段は、例えば、タグ値170を備えるとよい。図7に示すアクティブ・マウント・ポイントでは、タグ170は、当該アクティブ・マウント・ポイントのオーナーのIDを含むデータ・ワードである。タグは、アクティブ・マウント・ポイントのオーナーを識別可能にするように割り当てなければならない。このようにタグを割り当てる機構であれば、いずれでも利用可能である。例えば、どのシステムにドライバをインストールするかには拘らず、同じタグを常に同じオーナーのドライバと関連付けるように、タグを割り当てることができる。例えば、タグ値のブロックを種々のドライバ製造業者に割り当てる、中央リポジトリまたはクリアリング・ハウスがあるとよい。この場合、ドライバ製造業者は、タグを特定のドライバに割り当てることができる。タグ値を多くとも単一のドライバに関連付けさせるような機構であれば、他のあらゆるものも使用可能である。あるいは、動的にローカル・タグ値を割り当て、ドライバのインストール中にタグ値をシステムによって割り当てるようにすることも可能な場合がある。アクティブ・マウント・ポイントのオーナーを識別可能とするあらゆる機構を、タグ値を割り当てるために使用することができる。
【0061】
図7に示すアクティブ・マウント・ポイントは、オーナー制御値フィールド172も含む。オーナー制御値172は、アクティブ・マウント・ポイントのオーナーが、アクティブ・マウント・ポイントを適正に処理するために必要な任意の種類の情報を配置し得る場所を表わす。例えば、オーナーは、アクティブ・マウント・ポイントに出くわしたときに実行すべきアクションに関する決定を可能にする情報を挿入することができる。あるいは、オーナーに、情報を取得すべきその他の場所を識別させる情報、またはどんな他のドライバ、システム、サブシステム等が、アクティブ・マウント・ポイントを処理するために実行すべきアクションに関する判断を行うべきを識別させる情報を、値172に格納することも可能である。
【0062】
図7には示さないが、値172は、データ長インジケータによって処理することも可能である。この記憶フォーマットでは、データ・フィールドの長さを格納しておき、値を完成するにはどの位のデータを読み取らなければならないのかについて確認する。あるいは、実施形態によっては、固定長、またはポインタまたはリンクと共に連鎖する情報のブロックを利用する値を格納する方が一層効率的な場合もある。本質的に、値のフィールドを完成するにはどの位のデータを読み取らなければならないのかを特定する機構であれば、いずれでも利用可能である。また、オーナー・ドライバが格納する必要があり得るデータがどれくらいであるかについても、考慮すべきである。このような考慮は、どのようにデータ・フィールドを格納するか、およびデータ・フィールドの最大可能長に影響を及ぼす。
【0063】
これより図8を参照し、図7のタグ170の一実施形態の更に詳細な図を提示する。図8の実施形態では、タグ170は32ビット・ワードである。図8に示すように、種々の形式の情報をワードにエンコードする。基本的に、図8のタグは、3つの異なるエリアに分割する。ビット0〜15はタグ値174に割り当てる。これらのビットは、ドライバを作成する会社が、一意のタグ値を割り当て、彼らのドライバをアクティブ・マウント・ポイントのオーナーとして識別するために利用可能である。既に説明したように、このような値は、中央の機関によって割り当てることができ、あるいは種々の手順およびプロトコルを用いて、システムによって動的に割り当てることも可能である。ドライバがアクティブ・マウント・ポイントのオーナーをそれ自体であると識別できる限り、タグ値174を割り当てる機構としていずれでも利用可能である。ビット16〜28は、予約フィールド176から成る。これらのビットは、今後の使用のために確保しておく。図8では178として示すビット29は、名称代理フラグ(name surrogate flag)である。このビットをセットすると、ファイルまたはディレクトリは、システム内の別の名称付きエンティティを表わすことになる。これによって、ファイルまたはディレクトリが、他の名称付きエンティティの代理として作用することが可能となる。
【0064】
図8では180として示すビット30は、高レイテンシ・ビットである。1にセットすると、このタグを有するファイルまたはディレクトリは、データの最初のバイトを検索するのに長いレイテンシを有するものと考えられる。既に説明したように、本発明は、あらゆるデバイスの名称空間も、他のあらゆるデバイスの名称空間に移植するために使用可能である。状況によっては、ユーザまたはプログラムが移植部分にアクセスしたときに、要求を行った時点から最初のデータ・バイトが戻ってくるまでに高いレイテンシが生ずる場合がある。このような状況に出くわす可能性があるのは、例えば、アクティブ・マウント・ポイントがある記憶場所から媒体を検索し、その媒体をデバイスにマウントし、データを読み取ることができるように媒体を位置決めしなればならない場合である。これは、例えば、テープ・サイロ(tape silo)を他のデバイスの名称空間に移植した場合であろう。同様の状況は、インターネットまたはその他のネットワークのデータ・プロバイダを、デバイスの名称空間に移植する場合に、生ずる可能性がある。インターネットからデータを検索するためには、デュアル・アップ・ライン上で接続を確立するために、アクティブ・マウント・ポイントが必要となる場合がある。これは、レイテンシ・ビットを必ずセットすることになる程のレイテンシを招く可能性がある。
【0065】
図8では182で示すビット31は、アクティブ・マウント・ポイントのオーナーがMicrosoftドライバであることを示すために予約してある。セットすると、オーナー・ドライバがMicrosoftドライバであることを、他のドライバに確認させることができる。このフラグを含ませることによって、オペレーティング・システムは、内部ドライバに関連するタグを素早くソートすることができ、更に他のものが、それに属さないドライブを素早くソートすることができる。図8に示す構造は、先に言及し本願にも含まれるものとした、リパーズ・ポイント特許出願に記載されているリパーズ・ポイント属性との使用にも好適な場合もある。
【0066】
次に、図9を参照し、本発明の一実施形態の更に詳細な図を提示する。この実施形態では、クライアント・プロセス184は、矢印188で示すように、システム・サービス186にコールすることによって、I/O要求を開始する。I/Oマネージャ190は、I/O要求192をI/Oサブシステムのドライバに送出する。図9では、I/O要求192は、アクティブ・マウント・ポイント・ドライバ194、ファイル・システム・ドライバ196、およびデバイス・ドライバ198間で受け渡されるものであることがわかる。しかしながら、前述のように、実施形態によっては、I/O要求192は、当該I/O要求に直接関与するドライバにのみ導出する場合もある。I/O要求192は、ドライバ間で個々のI/O要求を受け渡すいずれかの機構とすればよい。このような機構は、直接関数コール、メッセージおよびその他の機構で構成することができる。I/OシステムがWindows NTの一部である場合、I/O要求192は、既に説明したようにIRP内に組み込むことができる。
【0067】
I/O要求の処理中にアクティブ・マウント・ポイントに出くわした場合、デバイス・ドライバAは、デバイスA200上のディレクトリまたはファイルが、関連するアクティブ・マウント・ポイント属性を有することを認識する。アクティブ・マウント・ポイント属性の検出時に、デバイスAは適切なアクティブ・マウント情報を抽出し、この情報を次の階層状ドライバに戻す。このプロセスは、図9において、アクティブ・マウント・ポイント情報202によって示す。アクティブ・マウント・ポイント202は、例えば、タグと、恐らくデバイス・ドライバ198が出くわすアクティブ・マウント・ポイントの値とから成る。
【0068】
ファイル・システム・ドライバ196がアクティブ・マウント・ポイント情報202を受け取ると、それをアクティブ・マウント・ポイントとして認識する。ファイル・システム・ドライバ196がそのように構成してある場合、ファイル・システム・ドライバ196はタグをチェックし、アクティブ・マウント・ポイントを処理する役割を担うのでないことを確認する。この例では、しかしながら、アクティブ・マウント・ポインタは、アクティブ・マウント・ポイント・ドライバ194によって処理する。したがって、ファイル・システム・ドライバ196はアクティブ・マウント・ポイント情報202を次に高い層のドライバに渡す。他のドライバがアクティブ・マウント・ポイント・ドライバ194とファイル・システム・ドライバ196との間にある場合、各ドライバはアクティブ・マウント・ポイント情報202を受け取り、タグを検査して、アクティブ・マウント・ポイントを処理する役割を引き受けるのか否か確認する機会を有する。
【0069】
しかしながら、最終的には、アクティブ・マウント・ポイント・ドライバ194がアクティブ・マウント・ポイント情報202を受け取る。次いで、これは、それ自体をアクティブ・マウント・ポイントのオーナーとして認識し、適切な処置を講じて、I/O要求の完了を促進するために必要なあらゆるアクションを遂行する。例えば、アクティブ・マウント・ポイントがリムーバブル媒体デバイスの名称空間を移植している場合、アクティブ・マウント・ポイント・ドライバ194は、読み取りまたは書き込みのために適切な媒体を突き止め、選択し、マウントし、配置するために新たな要求を発生しなければならない可能性がある。次いで、アクティブ・マウント・ポイント・ドライバ194は、I/O要求を発行し、クライアント・プロセス184が開始したI/O要求192を完了する。I/O処理のために媒体をマウントし媒体を位置付けるためにアクティブ・マウント・ポイント194を必要とする場合、実施形態は媒体をマウントする手段を備えればよい。このような手段は、アクティブ・マウント・ポインタ・ドライバ194が適切なデバイス上に適切な媒体をマウントする際に使用するいずれの機構でもよい。CDジュークボックス、テープ・サイロ等は全て、これらの機能を達成するために活性化することが必要なインターフェースを有する。典型的に、アクティブ・マウント・ポイント・ドライバ194は、別のドライバまたはシステムを介して、これらの機能にアクセスする。
【0070】
アクティブ・マウント・ポイント・ドライバ194は、アクティブ・マウント・ポイントに出くわした場合に実行する必要があるアクションを決定するので、アクティブ・マウント・ポイント・ドライバ194は、アクションを選択する手段を有することができる。このような手段は、アクティブ・マウント・ポイント・ドライバ194に、クライアント・プロセス184からのI/O要求の処理に対して、更に開始または完了すべきアクションまたは複数のアクションを決定させる機構であればいずれでもよい。前述のように、実行するとよいアクションを決定するためには、アクティブ・マウント・ポイント・ドライバは、種々のドライバ、情報ソース、プロセス、システム、サブシステム等を利用することができる。これら種々の項目を図9に示す。例えば、情報は、環境変数204のような、種々の環境変数から得ることができる。環境変数204は、アクティブ・マウント・ポイント・ドライバ194が動作する環境に関する情報のあらゆるソースを代表する。このような環境変数は、日時、システムのハードウエア構成、あるいは動作環境またはシステムに関するその他のあらゆる情報等の種々のシステム・レベルの情報を含むことができる。環境変数204から情報を取得することに加えて、情報は、アクティブ・マウント・ポイント・プロセス210に関連するデバイスB206のようなその他のソース、またはその他のデバイス、システム、ドライバ212から得ることも可能である。
【0071】
情報を提供することに加えて、他のデバイス、システム、ドライバ、関連するプロセス等は、決定プロセスにも参加することができる。したがって、アクションを選択する手段は、その他のデバイス、システム、ドライバ、関連するプロセス等を含むこともできる。このような状況では、アクティブ・マウント・ポイント・ドライバ194は、適切なエンティティに要求を行うか、あるいは制御を引き渡し、当該エンティティが発生したあらゆる応答または結果を受け取る。したがって、アクションを選択する手段は、アクティブ・マウント・ドライバ194内だけでなく、本発明が動作するシステムまたはネットワーク全体にわたるその他のエンティティ内にも常駐するとよい。関連するアクティブ・マウント・ポイント・プロセス210との通信を、要求214、矢印216、矢印218、および応答220によって表わす。デバイス・ドライバ208を介したデバイス206との通信を、要求222および応答224で示す。他のデバイス、システムおよびドライバとの通信は、要求226および応答228によって示す。アクティブ・マウント・ポイント・ドライバ194は、他のエンティティを用いて所望の機能を遂行する場合に、1つのソフトウエア・コンポーネントが他のソフトウエア・コンポーネントにコールまたはアクセスする際に利用可能なあらゆる種類の機構を利用できることは当業者には認められよう。このようなコールまたはアクセスは、ローカルであったり、あるいは先に説明したようにネットワークや他の通信会社を通じてのリモートであることもあり得る。
【0072】
図9は、本発明の追加の一面も示す。この一面は、アクティブ・マウント・ポイント・ドライバ194が、リモート・ディスクのようなリモート・データ・ソース、他の記憶媒体、あるいはインターネットまたはイントラネットのようなデータ・パイプからのデータにアクセスするという場面を検討することによって、説明することができる。このような状況では、ユーザがリモート位置からの情報にアクセスしたい場合、アクティブ・マウント・ポイントを利用して、リモート・デバイスの名称空間をローカル・デバイスの名称空間に移植することができる。次いで、ユーザは、リモート・データにアクセスするために特別なアクションを実行することなく、透過的にデータにアクセスすることができる。このような状況では、リモート・データのローカル・キャッシュを作成し、リモート・データへのその後のアクセスを高速化することが望ましい場合もある。例えば、恐らく、アクティブ・マウント・ポイント・ドライバ194は、ユーザがアクセスした種々のリモート・データを検索したり、当該アクティブ・マウント・ポイント・ドライバは、ユーザが近い将来アクセスすると予測する場合がある。この情報は、次にローカル記憶装置上にキャッシュし、次のアクセス時にデータへのアクセスを迅速化することができる。このプロセスは、図9では、デバイスA200に書き込むキャッシュ・データ230によって示す。データをキャッシュした後、アクティブ・マウント・ポイントに出くわした場合、アクティブ・マウント・ポイント・ドライバ194が、リモート位置からデータを検索するために必要なレイテンシを発生する代わりに、デバイスA200から情報を検索することが可能となる。この特徴を組み込んだ実施形態は、第1デバイスからアクセスしたデータをキャッシュする手段を備え、第1デバイスにそれ以上アクセスすることなく、情報を検索できるようにするとよい。
【0073】
要約すると、本発明は、1つのデバイスの名称空間を他のデバイスの名称空間に移植する場合に、任意のアクションを実行するロバスト性の高い機構を提供する。本発明は、アクティブ・マウント・ポイントの概念を用い、アクティブ・マウント・ポイントを横断したときに、システムにあらゆる所望のアクションを実行することを可能にする。このようなアクションは、データの読み取りまたは書き込み、媒体のマウント等のような従来からI/O要求に関連するアクションだけでなく、E−メールの送信、プロセスの実行開始、オーディオCDのマウントおよび演奏、あるいはシステム内においてソフトウエアによって開始または完了することができるその他のあらゆる種類のアクションのような、通常ではI/O要求に関連のないアクションも含むことができる。この機構は非常にロバスト性が高いので、当初の設計者が予想しないような場面への拡張を可能とし、しかも現在の実施態様に不当なインパクトを与えることもない。
【0074】
本発明は、その精神または本質的な特徴から逸脱することなく、他の特定的な形態においても具体化することができる。記載した実施形態は、いかなる観点においても、限定ではなく例示として見なすべきである。したがって、本発明の範囲は、前述の説明ではなく、添付した請求の範囲によって示すものとする。特許請求の範囲の均等の意味および意味に該当する全ての変更は、その範囲に包含するものとする。
【図面の簡単な説明】
【図1】 1つのデバイスの名称空間の別のデバイスの名称空間への移植を示す図である。
【図2】 本発明に適した動作環境を備えたシステムの一例である。
【図3】 複数の階層状ドライバを有するI/Oシステムの一例である。
【図4】 本発明の一実施形態の上位図である。
【図5】 特殊な属性に出くわした場合に、制御を特定のドライバに渡すことを示す図である。
【図6】 本発明と共に用いて好適な属性のリストである。
【図7】 アクティブ・マウント・ポイント属性の一実施形態の図である。
【図8】 アクティブ・マウント・ポイント属性のタグの一実施形態を示す図である。
【図9】 本発明の別の実施形態の上位図である。

Claims (9)

  1. 第1デバイスの名称空間の少なくとも一部分を、ファイル・システムを介してアクセスされる第2デバイスの名称空間に移植するための方法であって、前記第1デバイスの名称空間と前記第2デバイスの名称空間とには、ファイルまたはディレクトリのうちの一方が関係し、該ファイルまたはディレクトリの前記一方はマウント・ポイント属性を含み、前記方法が、
    記第2デバイスの名称空間内のある位置にあるファイルまたはディレクトリの前記一方にマウント・ポイントを設定するステップであって、前記位置は、前記第1デバイスの名称空間の少なくとも一部分を前記第2デバイスの名称空間に移植する位置であり、マウント・ポイントが、前記ファイルまたはディレクトリの前記一方に含まれる前記マウント・ポイント属性により定められ、該マウント・ポイント属性がタグと値とを含み、前記タグが、当該マウント・ポイントを処理するドライバであるマウント・ポイント・ドライバを特定する、ステップと、
    I/O要求を、マウント・ポイントに関係する前記ファイル・システムによっ開始するステップであって、前記I/O要求が、前マウント・ポイント関連た少なくとも1つの名称コンポーネントによって特徴付けられた経路名を含む、ステップと、
    を含み、
    前記I/O要求を処理する前記ファイル・システムが、前記経路名の解明において前記名称コンポーネントを検出したとき、該検出された名称コンポーネントに対応するファイルまたはディレクトリの前記一方の前記マウント・ポイント属性に含まれる前記タグが特定するマウント・ポイント・ドライバが、前記I/O要求の完了前に、前記I/O要求を処理する役割を引き受け、
    マウント・ポイント・ドライバが、前記検出された名称コンポーネントに対応するファイルまたはディレクトリの前記一方の前記マウント・ポイント属性に含まれる前記値に基づいて前記第1デバイスの名称空間において前記経路名により指定された情報にアクセスするためのアクションを開始すること、
    を特徴とする方法。
  2. 請求項1記載の方法において、前記アクションが、前記I/O要求とは異なる、方法。
  3. 請求項1記載の方法において、ユーザへの表示のため情報をユーザ・インターフェースに送るステップを含む、方法。
  4. 請求項1記載の方法において、前記第1デバイスおよび前記第2デバイスの統合名称空間をユーザに表示するステップを含む、方法。
  5. 請求項1記載の方法において、前記I/O要求を完了するステップを含む、方法。
  6. 請求項1記載の方法において、前記I/O要求は、前記第1デバイス上の情報にアクセスする、方法。
  7. 請求項1記載の方法において、前記第1デバイス上でアクセスした情報をキャッシュして、前記第1デバイスにアクセスせずに、前記キャッシュした情報を検索可能とするステップを含む、方法。
  8. 請求項1記載の方法において、前記キャッシュした情報を格納して、前記第2デバイスから前記キャッシュした情報を検索可能とする、方法。
  9. 請求項1ないし8のいずれか1項記載の方法をコンピュータに実行させるコンピュータ実行可能命令を含むコンピュータ読み取り可能記録媒体
JP2000513227A 1997-09-19 1998-09-18 1つの記憶媒体の名称空間を別の記憶媒体の名称空間に移植する場合に既定のアクションを実行するシステムおよび方法 Expired - Fee Related JP4279452B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US08/933,681 US5991777A (en) 1997-09-19 1997-09-19 System and method for performing defined actions when grafting the name space of one storage medium into the name space of another storage medium
US09/010,301 1998-01-21
US09/010,301 US6125373A (en) 1997-09-19 1998-01-21 Identifying a driver that is an owner of an active mount point
US08/933,681 1998-01-21
PCT/US1998/019453 WO1999015994A1 (en) 1997-09-19 1998-09-18 System and method for performing defined actions when grafting the namespace of one storage medium into the namespace of another storage medium

Publications (3)

Publication Number Publication Date
JP2001517836A JP2001517836A (ja) 2001-10-09
JP2001517836A5 JP2001517836A5 (ja) 2009-03-05
JP4279452B2 true JP4279452B2 (ja) 2009-06-17

Family

ID=26681010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000513227A Expired - Fee Related JP4279452B2 (ja) 1997-09-19 1998-09-18 1つの記憶媒体の名称空間を別の記憶媒体の名称空間に移植する場合に既定のアクションを実行するシステムおよび方法

Country Status (6)

Country Link
US (2) US6125373A (ja)
EP (1) EP1012757B1 (ja)
JP (1) JP4279452B2 (ja)
AT (1) ATE223087T1 (ja)
DE (1) DE69807504T2 (ja)
WO (1) WO1999015994A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392234B2 (en) * 1999-05-18 2008-06-24 Kom, Inc. Method and system for electronic file lifecycle management
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US6564219B1 (en) 1998-11-19 2003-05-13 Emc Corporation Method and apparatus for obtaining an identifier for a logical unit of data in a database
US6842758B1 (en) * 1999-07-30 2005-01-11 Computer Associates Think, Inc. Modular method and system for performing database queries
EP1199897A3 (en) * 2000-10-16 2003-03-26 THOMSON multimedia Method and device for storing stream data such as digital video and non-stream data
US6865597B1 (en) * 2002-12-20 2005-03-08 Veritas Operating Corporation System and method for providing highly-available volume mount points
JP4433372B2 (ja) 2003-06-18 2010-03-17 株式会社日立製作所 データアクセスシステム及び方法
US8238696B2 (en) * 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7401104B2 (en) * 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8166101B2 (en) * 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7555497B2 (en) * 2003-08-21 2009-06-30 Microsoft Corporation Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
JP2005190036A (ja) 2003-12-25 2005-07-14 Hitachi Ltd 記憶制御装置及び記憶制御装置の制御方法
JP4463042B2 (ja) * 2003-12-26 2010-05-12 株式会社日立製作所 ボリュームの動的割り付け機能を有する記憶装置システム
EP2178089B1 (en) * 2004-07-22 2018-09-05 Panasonic Intellectual Property Management Co., Ltd. Playback apparatus for performing application-synchronized playback
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US7567960B2 (en) * 2006-01-31 2009-07-28 Xerox Corporation System and method for clustering, categorizing and selecting documents
CA2670597A1 (en) * 2006-12-05 2008-06-12 Don Martin Improved tape backup method using a secure data parser
US8112464B2 (en) 2008-04-28 2012-02-07 Microsoft Corporation On-demand access to container file directories
US8321482B2 (en) * 2008-04-28 2012-11-27 Microsoft Corporation Selectively modifying files of a container file
CN101853254B (zh) * 2009-03-31 2013-08-14 国际商业机器公司 挂载文件或目录到本地或远程主机的方法和装置
US9990253B1 (en) * 2011-03-31 2018-06-05 EMC IP Holding Company LLC System and method for recovering file systems without a replica

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1323448C (en) 1989-02-24 1993-10-19 Terrence C. Miller Method and apparatus for translucent file system
US5363487A (en) * 1989-08-29 1994-11-08 Microsoft Corporation Method and system for dynamic volume tracking in an installable file system
JPH04291638A (ja) * 1991-03-20 1992-10-15 Pfu Ltd 外部記憶媒体のファイル管理方法
US5355497A (en) 1992-06-10 1994-10-11 Physiotronics Corporation File directory structure generator and retrevial tool with document locator module mapping the directory structure of files to a real world hierarchical file structure
US5423034A (en) * 1992-06-10 1995-06-06 Cohen-Levy; Leon Network file management with user determined hierarchical file structures and means for intercepting application program open and save commands for inputting and displaying user inputted descriptions of the location and content of files
DE69434311D1 (de) * 1993-02-01 2005-04-28 Sun Microsystems Inc Archivierungsdateiensystem für datenanbieter in einer verteilten netzwerkumgebung
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5603019A (en) 1994-07-25 1997-02-11 International Business Machines Corporation Takeover technique for networked virtual filesystems
US5590320A (en) 1994-09-14 1996-12-31 Smart Storage, Inc. Computer file directory system
US5689701A (en) * 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
US5617568A (en) * 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5724512A (en) * 1995-04-17 1998-03-03 Lucent Technologies Inc. Methods and apparatus for storage and retrieval of name space information in a distributed computing system
US5758334A (en) 1995-07-05 1998-05-26 International Business Machines Corporation File system remount operation with selectable access modes that saves knowledge of the volume path and does not interrupt an executing process upon changing modes
US5778384A (en) * 1995-12-22 1998-07-07 Sun Microsystems, Inc. System and method for automounting and accessing remote file systems in Microsoft Windows in a networking environment
US5905990A (en) * 1997-06-23 1999-05-18 International Business Machines Corporation File system viewpath mechanism

Also Published As

Publication number Publication date
DE69807504T2 (de) 2003-05-15
US6125373A (en) 2000-09-26
EP1012757A1 (en) 2000-06-28
US6349313B1 (en) 2002-02-19
WO1999015994A1 (en) 1999-04-01
ATE223087T1 (de) 2002-09-15
JP2001517836A (ja) 2001-10-09
DE69807504D1 (de) 2002-10-02
EP1012757B1 (en) 2002-08-28

Similar Documents

Publication Publication Date Title
JP4279452B2 (ja) 1つの記憶媒体の名称空間を別の記憶媒体の名称空間に移植する場合に既定のアクションを実行するシステムおよび方法
US5991777A (en) System and method for performing defined actions when grafting the name space of one storage medium into the name space of another storage medium
US7548959B2 (en) Method for accessing distributed file system
US7860907B2 (en) Data processing
TWI327702B (en) System and method for managing file names for file system filter drivers
US6496837B1 (en) Multiple attribute file directory manipulation and navigation system
US7272606B2 (en) System and method for detecting and storing file content access information within a file system
US7328217B2 (en) System and method for detecting and storing file identity change information within a file system
US5628007A (en) Methods for storing a database in extended attributes of a file system
US7676526B1 (en) System, method and computer program product for multi-level file-sharing by concurrent users
US7831560B1 (en) Snapshot-aware secure delete
US20070022117A1 (en) Accessing file system snapshots directly within a file system directory
US8095678B2 (en) Data processing
US7376681B1 (en) Methods and apparatus for accessing information in a hierarchical file system
US8090925B2 (en) Storing data streams in memory based on upper and lower stream size thresholds
JP2007527074A (ja) ファイルシステム内での効率的なファイルコンテンツをサーチするためのシステム及び方法
JP5241298B2 (ja) 履歴上のファイル名およびロケーションをインデックス付きにすることによりファイル・サーチおよびファイル操作を支援するためのシステムおよび方法
US7415480B2 (en) System and method for providing programming-language-independent access to file system content
US8176087B2 (en) Data processing
KR100631741B1 (ko) 멀티미디어 데이터 처리 방법
JP2008544397A (ja) ファイルシステム内へのコンテンツの格納を管理する方法および装置
CA2279759C (en) Drive names
JPH1031599A (ja) データ記憶システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050914

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081014

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20090114

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: 20090213

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090312

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

Free format text: PAYMENT UNTIL: 20120319

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: 20120319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 5

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