JP2779587B2 - コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法 - Google Patents

コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法

Info

Publication number
JP2779587B2
JP2779587B2 JP6008225A JP822594A JP2779587B2 JP 2779587 B2 JP2779587 B2 JP 2779587B2 JP 6008225 A JP6008225 A JP 6008225A JP 822594 A JP822594 A JP 822594A JP 2779587 B2 JP2779587 B2 JP 2779587B2
Authority
JP
Japan
Prior art keywords
file
name
service
mount
specifier
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
JP6008225A
Other languages
English (en)
Other versions
JPH06231022A (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.)
AT&T Corp
Original Assignee
AT&T 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
Application filed by AT&T Corp filed Critical AT&T Corp
Publication of JPH06231022A publication Critical patent/JPH06231022A/ja
Application granted granted Critical
Publication of JP2779587B2 publication Critical patent/JP2779587B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

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)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、概して、コンピュータ
システムに用いられる名前スペースに関し、詳しくはプ
ロセスごとの名前スペースに関する。
【0002】
【従来の技術】コンピュータシステムでのプログラム実
行に利用可能な主体(エンティティ)の多くは、名前、
すなわち識別子を有する。この識別子は、アドレスでは
ないがそれにも拘らず、識別子が指定するエンティティ
に関してその所在位置を探索するプログラムにこの識別
子が用いられる。このコンピュータシステムのオペレー
ションシステムは、ユ−ザがエンティティに名前を付け
ること、名前とエンティティとの関係をたどること、及
びエンティティの所在位置をその名前によって探索する
こと、を可能にする構成要素を有する。
【0003】ファイルは、このような名前付きエンティ
ティの例として一般に知られている。オペレーティング
システムのファイルシステム構成要素は、ユ−ザがファ
イルに文字列からなる名前(文字列名)を付けること、
及びこの文字列名を用いてファイルの所在位置を探索す
ること、を可能にするものである。ほかの名前付きエン
ティティとしては、端末又はプリンタのような装置(デ
バイス)がある。
【0004】エンティティの所在位置を探索するために
プログラムが用いる名前のセットを「名前スペース」と
名付ける(この名前スペースにおいてプログラムが実行
される)。名前スペースの形成方法はオペレーティング
システムによって定められる。或る場合には、名前スペ
ースは平面状で、全ての名前が単一レベル内にある構造
を有する。別の場合には、名前スペースはオペレーティ
ングシステムによって階層構造に形成される。
【0005】階層的構造の普通の形状はの1つは、単一
樹木形状である。この場合、名前スペースにおける名前
は全て、単一の根部(ルート部)を有する1本の樹木の
形に形成される。樹木の内部ノードにおける名前は、デ
ィレクトリを表し、葉部ノードにおける名前は、通常の
エンティティを表す。
【0006】このような樹木においてエンティティ若し
くはディレクトリの所在位置を探索するために、このエ
ンティティ若しくはディレクトリの名前、及びこの樹木
のルート部とこのエンティティ若しくはディレクトリと
の間の全てのディレクトリの名前、又はこのエンティテ
ィ若しくはディレクトリの名前、及びプロセスのカレン
ト(現行)ディレクトリとこのエンティティ若しくはデ
ィレクトリとの間の全てのディレクトリの名前、がプロ
グラムによって指定される。エンティティの所在位置を
探索するために必要な名前の組み合せを、このエンティ
ティの「パス名」と名付ける。
【0007】従来、名前スペースは概してシステムごと
のものであった。システム上で作動中のプログラムは、
そのシステム内の名前付きエンティティについてはどれ
でもその所在位置を特定することができた。このような
システムごとの名前スペースの一例として、周知のUN
IXオペレーティングシステムを実行するコンピュータ
によって与えられる名前スペースがある。
【0008】UNIXオペレーティングシステムによっ
て与えられるファイルは全て、単一樹木の形に形成さ
れ、システム内のどのファイルも、プログラムが樹木内
のそのファイルのパス名を指定することによってそのフ
ァイルの所在位置を特定することができる。この構造形
状の利点は、オペレーティングシステム又は他のユーテ
ィリティに対して実行可能なコ−ドのような、全てのプ
ログラムによって用いられるエンティティが、それらの
エンティティを名前スペース内の予め定められた場所に
置くことによって、全てのプログラムに利用可能になる
ことである。
【0009】実際には、もしこれらの予め定められた場
所について同じ名前付け規則を2つのUNIXシステム
が共用する場合、一方のシステム上で実行できたプログ
ラムは、他方のシステムにおいても実行可能である。例
えば、UNIXシステムにおいては、共通に用いられる
ユーティリティプログラムは大体に、パス名「/bi
n」によってアクセス可能なディレクトリ内に置かれ
る。
【0010】本来、コンピュータシステムは互いに独立
したエンティティであり、通信媒体によって接続するこ
とができたが、接続されたシステムは、単一システムを
形成してはいなかった。通信媒体が改善され、処理装置
及びメモリの価格が下がると、分散形システムが出現し
て来た。これらの分散形システムにおいては、処理装置
とディスプレイ装置とファイル記憶装置とのセットが通
信媒体によって接続されて単一システムを形成する。
【0011】分散形システムの1つの利点は、システム
の大きさに論理的制約のないことである。現在の分散形
システムは一般に、相互に、そしてファイルサーバ、す
なわちファイルオペレーション専用の処理装置付きファ
イル記憶装置に、ローカルエリアネットワ−ク(LA
N)を介して接続される一組のワークステーション(ワ
ークステーションセット)からなるが、大きな会社、団
体におけるワークステーション、プロセッサ、ファイル
記憶装置、ディスプレイ装置、及びプリンタが単一の分
散形システムの一部を構成できないという理由はない。
【0012】
【発明が解決しようとする課題】分散形システムの設計
における1つの問題は、どのようにして名前スペースを
定義するかである。例えばパイクほか(Pike et al.)
の米国特許出願第07/70265号(1991年5月
17日出願)に述べられている分散形計算システムにお
いては、名前スペースはプロセスによって定義される。
【0013】プロセスは、自身の独自の名前スペースを
持つことも、1つの名前スペースを別のプロセスと共用
することもできる。又プロセスは、名前スペース内の名
前の相互関係を再構成することにより、そしてサービス
(作業機能)から与えられるファイル樹木を名前スペー
スに加えることにより、その名前スペースを改変でき
る。
【0014】上記パイクほかの米国特許出願の計算シス
テムにおける名前スペースの定義の難点は、第1のプロ
セスが第2のプロセスの名前スペースを自身の名前スペ
ースに組み込むことができないことである。その結果、
ワークステーション上で実行中のプロセスの名前スペー
スを、ワークステーションのユ−ザのために中央演算処
理装置(CPU)上で実行中のプロセスの名前スペース
に組み込むようなオペレーションが、極めて煩雑であっ
た。
【0015】
【課題を解決するための手段】上記の問題は、本発明の
技術を用いて1つの名前スペースの一部分を別の名前ス
ペースに組み込むことによって克服できる。すなわち、
本発明の技術による装置は、第1の名前スペースにおい
て作動して、この第1の名前スペースの一部分を第2の
名前スペースに送出して第2の名前スペースの一部分と
して利用可能にするための装置である。
【0016】この装置は、上記第2の名前スペースにお
いて用いられるように上記第1の名前スペースの上記一
部分において1つの名前を用いて1つのオペレーション
を指定する、第1のオペレーション指定子、を受信する
ための手段と、上記オペレーションと同じオペレーショ
ンを指定し、且つ上記第1の名前スペースにおいて用い
られるように上記1つの名前を用いる、第2のオペレー
ション指定子、を上記第1のオペレーション指定子に応
答して作成するための解釈手段と、上記第2のオペレー
ション指定子に応答して、上記オペレーションを行うた
めの手段と、からなる。
【0017】本発明に関する上記及びその他の目的並び
に利点は、添付図面を参照して下に述べる「詳細説明」
により、当業者に明瞭となろう。
【0018】
【実施例】詳細説明 以下、本発明の一実施例について「詳細説明」を行う
が、まず実施例を組み込むオペレーティングシステムと
しての、「プラン9」オペレーティングシステムの概観
と、プラン9システムが或るプロセスに対する名前スペ
ースを形成する手法とについて説明する。
【0019】その次に、1つのプロセスが別のプロセス
に名前スペースを送出する技術を詳細に述べ、最後に、
この技術を用いる2つのプラン9システムコール(シス
テム呼び出し)について述べる。又上記パイクほかの米
国特許出願から取った題材以外の題材に関連しての説明
を「送出ファイルサービス(exportsf)の概
観」及び図14以降に述べる。(尚、説明及び添付図面
において使用される英字略号は、同一略号を大文字又は
小文字で表す場合があるが、いずれの場合もその意味は
互いに同じである。)
【0020】プラン9オペレーティングシステムの概観(図7) プラン9オペレーティングシステム(以下、プラン9シ
ステム)は、種々のコンピュータ及びネットワ−ク上で
実現される汎用で多目的の移植可能分散形システムであ
る。
【0021】プラン9システムは、サービス機能の種類
によって分割される。CPU(中央演算処理装置)サー
バは、演算力を大形(過負荷ではない)マルチプロセッ
サに集中し、ファイルサーバは、記憶場所を提供し、端
末は、システムの各ユ−ザにウインドウシステム実行用
のビットマップ及びマウス付き専用コンピュータを提供
する。演算及びファイル記憶サービスの共用によって、
プログラマ・グループのメンバーに共同体意識が生ま
れ、コスト償却が可能となり、管理業務が集中化され、
したがって簡素化される。
【0022】これらのシステム構成要素は、単一のプロ
トコルによって相互に通信を行う。このプロトコルは、
適切なネットワ−クによって提供される信頼性の高いデ
ータトランスポート層より上に構築され、各サービスを
ルート部付きファイル樹木として定義する。通常にはフ
ァイルとは考えられないようなサービスの場合でも、統
一設計により顕著且つ有益な簡素化が得られる。
【0023】各プロセスは、ローカルファイル名前スペ
ースを有し、この名前スペースには、そのプロセスが用
いている全てのサービスへ、したがってこれらのサービ
スにおけるファイルへ付随させるための機構が含まれ
る。端末の最も重要な仕事の1つは、名前スペース内で
見られるサービスによって表されるような、システム全
体についてのそのユ−ザの、カスタマイズされた態様
(ビュー)をサポートすることである。
【0024】システムを効果的に用いるためには、CP
Uサーバ、ファイルサーバ、及び端末が必要である。こ
の場合のシステムの目的は、部門的又はより大きいコン
ピュータセンタのレベルでのサービスの提供である。C
PUサーバ及びファイルサーバは、大形の装置で、調整
電力を供給された空調付きの機械室に最適状態で収納さ
れる。
【0025】以下の項目においては、プラン9システム
の基本的構成要素について述べ、名前スペース及びその
用法について説明する。又、通常と異なるサービスを数
例紹介して、プラン9システムの考えがどのようにして
種々の問題に適用できるかについて述べる。
【0026】CPUサーバ いくつかのコンピュータが、プラン9システムに対する
CPUサービスを提供する。量産形CPUサーバとし
て、シリコングラフィックス社製のパワーシリーズ装置
が用いられ、これには4個の25MHz、MIPSプロ
セッサ、128メガバイトのメモリ、ディスクなし、及
びファイルサーバへの20メガバイト/秒の、折り返し
形、直接メモリアクセス(DMA)接続線が設けられて
いる。
【0027】このサーバには又、端末及び非プラン9シ
ステムに接続するためのデータキット及びイーサネット
制御装置を備えている。オペレーティングシステムから
は、「fork」システムコールと「exec」システ
ムコールとに基づくプロセスと、主として遠隔ファイル
サーバによって定められるファイルとの通常の態様が得
られる。CPUサーバとの接続が設立されると、ユ−ザ
は、通常の状態にみえる環境においてコマンド・インタ
プリタへコマンドの入力を開始できる。
【0028】マルチプロセッサCPUサーバは、いくつ
かの利点を有する。最も重要な点は、その負荷吸収能力
である。もし装置が飽和していない場合には(この状態
はマルチプロセッサについては経済的に可能である)、
通常、すぐに新たなプロセスを実行できるフリー状態の
プロセッサが存在する。これは、ファイルシステム上で
新ファイルを記憶する場合のフリーディスクブロックの
概念に似ている。
【0029】この比較を更に拡大していえば、ファイル
システムがいっぱいになったときに新しいディスクを買
うように、システムが多忙(ビジー)のときは、システ
ム全体を交換したり重複させたりする必要がなく、マル
チプロセッサにプロセッサを追加すればよい。もちろ
ん、新しくCPUサーバを追加して、ファイルサーバを
共用してもよい。
【0030】CPUサーバは、コンパイレーション、テ
キスト処理、及びその他のアプリケーション処理を行
い、ローカル記憶装置は持たず、CPUサーバがアクセ
スする永続ファイルは全て遠隔サーバから与えられる。
実行中のプロセスの集成イメージ又はユ−ザプロセスに
よって与えられたサービスの集成イメージのような、名
前スペース内の非常駐部分は局部的に駐在するが、CP
Uサーバがリブート(reboot)されると消滅す
る。プラン9CPUサーバは、通常の端末がタスクにつ
いて互換性を有するのと同様に、そのタスクである演算
について互換性を有する。
【0031】ファイルサーバ プラン9ファイルサーバは、全ての永続ファイルを保持
する。ここに用いたサーバは、別のシリコングラフィッ
クス社製コンピュータで、2個のプロセッサ、64メガ
バイトのメモリ、600メガバイトの磁気ディスク、及
び300ギガバイトのジュークボックス形の1回書き込
み光ディスク(WORM)を備えている。本ファイルサ
ーバは、20メガバイト/秒のDMAリンクを経てプラ
ン9CPUサーバに、又通常のネットワ−クを経て端末
及び他の装置に、それぞれ接続される。
【0032】本ファイルサーバは、顧客に対して例えば
ディスク、ブロック、又はファイルのアレイというより
はむしろ、1つのファイルシステムを提供する。各ファ
イルは、樹木の枝ごとにラベルを付ける、斜線で分けら
れた構成要素によって名付けされ、入出力(I/O)に
対してバイトレベルでアドレスされる。サーバ内でのフ
ァイルの所在場所は、顧客には見えない。
【0033】真のファイルシステムは、WORM上に駐
在し、磁気ディスク及びRAMの2レベルキャッシュを
経てアクセスされる。最近使用されたファイルの内容
は、RAMに駐在し、高速リンク上をDMAによって急
速にCPUサーバへ送られる。これは、ローカルメモリ
ほどには速くないが、普通のディスクよりもはるかに速
い。
【0034】磁気ディスクは、WORMに対してはキャ
ッシュとして作動すると同時に、RAMに対してはバッ
クアップ媒体として作用する。高速リンクを用いるの
で、顧客がデータをキャッシュメモリに保持する必要が
なく、代わりに、ファイルサーバは、顧客全てに対する
キャッシュメモリ処理を集中化し、分散形キャッシュの
問題を避けるようにしている。
【0035】ファイルサーバは実際には、いくつかのフ
ァイルシステムを提供する。その1つである主ファイル
システムは、大抵の顧客に対してのファイルシステムと
して使用される。他のファイルシステムは、個々のアプ
リケーションに対する汎用性のより低いデータを扱う。
又、サービスの1つとして通常と異なる種類に属する
「バックアップシステム」がある。1日に1回、ファイ
ルサーバは、主ファイルシステム上の作業を凍結させて
同システム内のデータをWORMに落とす。
【0036】通常のファイルサービスはこれに影響され
ずに継続されるが、ファイルの変更は、要求に基づいて
形成される新たな階層に、「書き込み時コピー」機構を
用いて設定される。したがって、ファイル樹木は、2つ
の部分、すなわちダンプ時点においてシステムを表す読
み取り専用の部分と通常のサービスノード提供を継続す
る普通のシステムとに分割される。
【0037】これら古いファイル樹木のルート部は、他
の読み取り専用システムの場合と全く同様にアクセスが
可能なファイルシステムにおけるディレクトリとして利
用可能である。例えば、1990年4月1日に存在した
状態におけるファイル「usr/rob/doc/pl
an9.ms」は、バックアップファイルシステムを経
て名前「1990/0401/usr/rob/doc
/plan9.ms」によってアクセスできる。
【0038】この機構があるため、バックアップシステ
ム内の特別ユーティリティによることなく、ファイルコ
ピー及び比較ルーチンのような従来のコマンドによっ
て、損失ファイルの回復及び比較が可能となる。更に、
バックアップシステムは、当初のファイルと同じファイ
ルサーバ及び同じ機構によって提供されるので、バック
アップシステムにおける可能化状態は主システムにおけ
る可能化状態と同一であり、又バックアップデータを用
いて機密保持状態を壊すことはできない。
【0039】端末 プラン9システムの標準的な端末は、ノット(Gno
t)端末と称される。ノット端末は、地元設計の装置で
数百台が製造されている。端末のハードウエアは、ディ
スクのないワークステーションに似ている。4又は8メ
ガバイトのメモリ、25MHzの68020プロセッ
サ、画素当り2ビットで1024×1024画素のディ
スプレイ、キーボード、及びマウスを有するが、外部記
憶装置及び拡張バスは備えていない。すなわち、これは
端末であってワークステーションではない。
【0040】これらの端末は、2メガビット/秒のパケ
ット交換装置付き分散形ネットワ−クによってCPU及
びファイルサーバに接続される。その帯域幅はコンパイ
レーションのようなアプリケーションに対しては低い
が、端末の本来の目的であるウインドウシステム、すな
わちプラン9システムの他の部分に対する多重インタフ
ェ−ス、の提供には充分過ぎるほどである。
【0041】ワークステーションと異なり、ノット端末
は、コンパイレーションを扱わない。これはCPUサー
バが扱う。端末は、CPUサーバのオペレーティングシ
ステムであって単一でより小形のプロセッサ用にビット
マップグラフィックのサポートによって構成されたバー
ジョンのオペレーティングシステムを動かし、これを用
いてウインドウシステムやテキストエディタのようなプ
ログラムを実行する。ファイルは、端末のネットワ−ク
接続線を介して標準形のファイルサーバによって提供さ
れる。
【0042】前の文字端末のように、ノット端末は全て
同等で、ローカルにもファイルサーバにも専用の記憶装
置は持たない。又、廉価であるため研究センタの各員が
1台を職場に又1台を自宅にと計2台を持つことができ
る。職場に設置してあるファイルと演算資源(リソー
ス)(CPU等)を効果的に共用し維持することができ
るので、自宅のノット端末で作業する場合、職場におけ
るシステムと全く同じシステムを用いることが可能であ
る。
【0043】ネットワ−ク プラン9システムにおいてはその構成要素に種々のネッ
トワ−クが接続されている。CPUサーバ及びファイル
サーバの間の通信伝達は、折り返しDMA制御装置を介
して行われる。これは、例えばコンピュータセンタの規
模又は部門レベルの演算資源の規模でしか実用にならな
い。より遠くはなれた装置は、イーサネット又はデータ
キットのような従来のネットワ−クによって接続され
る。端末又はCPUサーバは、性能の面の考慮を除いて
はしなければ、遠隔ファイルサーバを完全な透過性(ト
ランスパレンシー)を有する状態で使用できる。
【0044】データキットネットワ−クが例えば米国で
全国的ネットワ−クとして張り巡らされているのに対
し、プラン9システムは、大規模ネットワ−ク用に構成
される。コスト低減のため、ノット端末は、普通の電話
回線と1個のチップからなるインタフェ−スを用いる廉
価ネットワ−クを採用している(処理能力は約120キ
ロバイト/秒と、かなりなものである)。
【0045】端末は通信を仲介するだけであるので(C
PUサーバにファイルサーバへの接続を命令するが、接
続の結果として行われる通信には関与しない)、端末に
対する帯域幅が比較的低くてもシステムの全体性能には
影響しない。
【0046】図7は、プラン9システムの構成要素とシ
ステム構成とを示す。プラン9システム701は、ファ
イルサーバ705、CPU703、及びノット端末71
1から構成される。CPU703及びファイルサーバ7
05のセット717とノット端末711のセット719
とは、全国規模長距離通信ネットワ−ク715によって
接続される。
【0047】端末セット719内のノット端末711
は、LANのような分散形ネットワ−ク713によって
接続され、又CPU・ファイルサーバセット717内の
CPU703とファイルサーバ705とは、高速DMA
リンク709によって接続される。
【0048】名前スペース プラン9システムには2種類の名前スペース、すなわち
ネットワ−ク上の種々のサーバの名前のグローバルスペ
ース、並びにプロセスに可視であるファイル及びサー
バ、のローカルスペース、がある。データキットに接続
された装置及びサービスの名前は階層的で、例えば、
「nj/mh/astro/helix」と表され、そ
れぞれ地域、建物、部門、及び部門内の装置を概略的に
定義する略号である。
【0049】ネットワ−クがその装置の名前付け(ネー
ミング)を行うので、グローバルネーミング問題をプラ
ン9システムが直接扱う必要はない。しかし、プラン9
システムの基本的オペレーションの1つは、プロセスご
とという基準でローカル名前スペースにネットワ−クサ
ービスを付随させることである。ローカル名前スペース
の、このきめの細かい制御は、カスタマイズ性、透過
性、及び異質性の問題を取り扱うために用いられる。
【0050】プラン9システムのサービスと通信する際
のプロトコルは、ファイル志向であり、全てのサービス
は、それぞれ1つのファイルシステムを形成する必要が
ある。すなわち、ローカルか遠隔かを問わず、各サービ
スは、サーバの「名前スペース」と呼ばれる階層の形に
集成されたファイル状の目的体(オブジェクト)のセッ
トとして構成される。これはファイルサーバに対しては
自明の要件である。
【0051】他のサービスの場合には、もう少し想像力
を働かす必要がある。例えば、印刷サービスにおいて
は、印刷すべきファイルをプロセスが1つのディレクト
リ内で作成することを考えてそのディレクトリの形でフ
ァイルシステムを形成することになる。他の例について
は以下の各項において述べる。当面は、ネットワ−クに
分散された通常のファイルサーバセットについて考える
こととする。
【0052】ネットワ−ク内で、且つプラン9システム
自身の外部、において固有の機構を用いてプログラムが
プラン9システムのサービスを呼び出すと、プログラム
は、このサービスの名前スペースのルート部に接続され
る。プロトコルを用い、通常にはローカルオペレーティ
ングシステムによってファイル志向のシステム呼び出し
セットへ仲介されて、プログラムは、名前スペース内で
ファイルを開き、形成し、除去し、読み取り、書き込む
ことによってこのサービスにアクセスする。
【0053】プラン9システムのユ−ザは、ネットワ−
ク上で利用可能なサービスのセットから、望む対象、す
なわち個人ファイルが駐在するファイルサーバ、多分デ
ータが保持されている他のサーバ、又はグループプロジ
ェクト用のソフトウエアが書き込まれている部門ファイ
ルサーバを選択する。これら種々のサービスの名前スペ
ースは集成されて、ユ−ザ自身の専用名前スペースに結
合される。この集成、結合は、サービスの名前スペース
をユ−ザの名前スペースに結合する作業を行う基本プラ
ン9システム扱い者によって行われる。
【0054】ユ−ザの名前スペースは、用いられるサー
ビスのスペースの合体によって形成される。ローカル名
前スペースは、各ユ−ザに対するローカルオペレーティ
ングシステム、一般には端末、によって組み立てられ
る。名前スペースは、実際にはログイン時に組み立てら
れユ−ザのプロセス全てによって共用されるが、プロセ
スごとのレベルで修正可能である。
【0055】システムにログインするために、ユ−ザ
は、端末に位置して、どのファイルサーバに接続すべき
かを命令する。端末はサーバを呼び出し、ユ−ザを認証
し(下記参照)、サーバからオペレーティングシステム
をロードする。そして、ユ−ザの個人ディレクトリ内の
「プロフィル」と称するファイルを読み取る。
【0056】プロフィルは、どのサービスをデフォルト
で使用するか及びローカル名前スペースのどこにそれら
のサービスを付随させるか、を定義するコマンドを有す
る。例えば、主ファイルサーバについてはローカル名前
スペースのルート部「/」に付随させ、プロセスファイ
ルシステムについては、ディレクトリ「/proc」に
付随させる。その後、プロフィルは、一般にはウインド
ウシステムについての実行を開始する。
【0057】ウインドウシステム内の各ウインドウにお
いては、コマンドをローカルに実行するために用いられ
るコマンド解釈ソフトウエアであるコマンド・インター
プリタが、プロフィルによって組み立てられた名前スペ
ース内で解釈されたファイル名前を使用して作動する。
コンパイレーションのような演算集中形アプリケーショ
ンに対しては、ユ−ザは、コマンドを実行するためのC
PUサーバを自動的に又は名前によって選択するコマン
ド「cpu」を実行する。
【0058】cpuをタイプした後には、ユ−ザはコマ
ンド・インタープリタからの指示メッセ−ジ(プロンプ
ト)が可視状態となる。しかし、このコマンド・インタ
ープリタは、「cpu」コマンド自身と同じ名前スペー
スというよりも同じカレントディレクトリにおいてCP
Uサーバ上で作動している。端末は、名前スペースの記
述をCPUサーバに送出(エクスポート)し、これから
CPUサーバは同一の名前スペースを組み立てる。
【0059】したがって、端末によって組み立てられた
このシステムのカスタマイズされた態様は、CPUサー
バ上で可視の態様と同じである(可能な場合にはCPU
サーバが端末の介入を要する手法よりもむしろ高速リン
クを使用できるように、名前スペース自身よりも名前ス
ペースの記述が用いられる)。「cpu」コマンドは、
その次に来るコマンドだけに作用し、利用可能なサービ
スにもそれらのサービスにどのようにアクセスするかに
も無関係である。
【0060】プラン9システムにおいて利用可能なサー
ビスの種類は、サービスを見出すためのサービスも含め
て数が多いが、この設計手法の用法及び可能性を示すに
は、そのうちのいくつかについて述べれば足りる。
【0061】プロセスファイルシステム ローカルサービスの一例はプロセスファイルシステムで
ある。これによって、ファイル志向インタフェ−スを経
ての実行プロセスの点検とデバッグが可能となる。
【0062】プロセスのルート部は、取り決めに基づき
ディレクトリ「/proc」に付随する(プラン9シス
テムにおいては取り決めは重要で、名前スペースは成行
きに従って組み立てられるにしても、多くのプログラム
は、取り決めに合わせて特定の形式(フォーム)を持た
せるようにした名前を用いて構成されている。プログラ
ム「/bin/rc」(コマンド・インタープリタ)が
どのサーバから来るかは問題ではないが、それを必要と
するコマンドがアクセスできるような名前を持つ必要が
ある)。
【0063】付随させた後には、ディレクトリ「/pr
oc」自身がシステム内の各ローカルプロセスについて
のサブディレクトリを有し、このサブディレクトリはこ
のプロセスの独自の数字識別子に等しい名前を有する
(遠隔CPUサーバ上で作動するプロセスも表示させる
ことができる。これについては下に述べる)。
【0064】各サブディレクトリは、このプロセスのこ
の態様を実現するファイルセットを有する。例えば、
「/proc/77/mem」は、プロセス番号77の
仮想メモリのイメージを有する。プラン9システムの
「/proc」は、他のファイルを経て他の機能を実現
する。
【0065】次に、各プロセスについて与えられるファ
イルのリストを示す。 mem−−−−−プロセスイメージの仮想メモリ。ファ
イルのオフセットは、プロセス内の仮想アドレスに対応
する。 ctl−−−−−プロセスの制御挙動。このファイル
に、「書き込み」システムコールにより送られるメッセ
−ジは、プロセスに停止、終結、 実行
再開、等をさせる。
【0066】text−−−−このファイルからプロセ
スが生成されるそのファイル。これは一般に、目標プロ
セスの記号テーブルの点検を行うためにデバッグ用プロ
グラムによって用いられるが、名前を除く全ての点にお
いて、原(オリジナル)ファイルである。したがって、
コマンドインタープリタに「/proc/77/tex
t」とタイプすることによって、プログラムをあらため
て表示することが可能である。
【0067】note−−−−適切な許可を得ているプ
ロセスは、別のプロセスの「note」ファイルに書き
込みを行い、プロセス相互間通信用の非同期メッセ−ジ
を別のプロセスに送ることができる。システムは又、例
えばゼロで割る等、プロセスが誤挙動をした場合に、こ
のファイルを用いてメッセ−ジを送る。
【0068】status−−プロセスの状態について
の、固定フォーマットの、情報交換用米国標準コ−ド
(ASCII)による表記。プロセスが実行されたファ
イルの名前、消費したCPU時間、現在の状態、等を含
む。
【0069】「status」ファイルは、システム機
能に対してファイルサーバモデルによって異質性及び移
植可能性をどのように扱うことができるかを示す。コマ
ンド「cat/proc/*/status」は、シス
テム内の全プロセスの状態を表す(読み取れるがやや不
体裁)。実は、プロセス状態コマンド「ps」は正に、
集められたASCIIテキストを再フォーマットしたも
のである。
【0070】コマンド「ps」のソースは、1ページも
の長さで装置間で完全に移植可能である。たとえ「/p
roc」がいくつかの異質装置についてのプロセスに対
するファイルを有する場合でも、同じ実現例が作動可能
である。
【0071】ここで留意したいのは、「/proc」に
よって得られるサービスは種々あるが、ファイルとして
のプロセスの概念を曲げるものではないということであ
る。例えば、プロセスファイルを除去することによって
プロセスを終結しようとしても不可能である。又、プロ
セスファイルを新たに作成しても新しいプロセスを開始
することはできない。ファイルはプロセスの、実行状態
の態様を与えはするが、文字通りプロセスを代表して表
すものではない。サービスをファイルとして設計する際
に、この区別は重要である。
【0072】ウインドウシステム プラン9システムにおいては、専用の独立形サーバと同
様にユ−ザプログラムによっても、ファイルサービスが
得られる。ウインドウシステムはこのようなプログラム
の一例である。プラン9システムの、通常と最も異なる
性質の1つは、ウインドウシステムがユ−ザレベルのフ
ァイルサーバとして実現されるということである。
【0073】ウインドウシステムは、そのウインドウに
おいて作動中の顧客プロセスに、他のシステムの「/d
ev/tty又はCON」に類似のファイル「/dev
/cons」を提供する。ウインドウシステムがこのフ
ァイル上のI/O動作の全てを制御するので、各ウイン
ドウのプロセスグループが専用の「/dev/con
s」ファイルを見られるように構成できる。
【0074】新しいウインドウが形成されると、ウイン
ドウシステムは、新しい「/dev/cons」ファイ
ルを割り当てて、この新しいファイルをこの新しい顧客
の新しい名前スペースに入れ、このウインドウにおいて
顧客プロセスを開始する。
【0075】そして、このプロセスは、普通のファイル
オープン用システムコールを用いて標準的入出力チャン
ネルを「/dev/cons」ファイルに接続し、コマ
ンド・インタープリタを実行する。コマンド・インター
プリタがプロンプトをプリントすると、プロンプトは
「/dev/cons」ファイルに書き込まれるととも
に適切なウインドウに表示される。
【0076】この構造を他のオペレーティングシステム
と比較することは有益である。大抵のオペレーティング
システムにおいては、プロセスに接続された端末に対す
る別名(エリアス)である「/dev/cons」に似
たファイルが与えられる。この特別ファイルを開くプロ
セスが、プロセスが作動中である端末に、この端末の正
確な名前を知らずにアクセスする。
【0077】別名は、通常オペレーティングシステムに
おける特別な構成によって与えられるため、顧客プロセ
スがこのファイルを経てウインドウにアクセスできるこ
とをウインドウシステムが保証するのは困難である。こ
の難点は、問題を反転することによってプラン9システ
ムによって容易に取り扱うことができる。
【0078】1つのウインドウにおける1組のプロセス
は、名前スペース、詳しくは「/dev/cons」を
共用する。したがって、「/dev/cons」を多重
化し且つテキストの入出力の全てがこのファイルを通る
ように強制することにより、ウインドウシステムが、こ
のファイルの予想される特性をシミュレートすることが
できる。
【0079】ウインドウシステムは、I/O装置のディ
レクトリ「/dev」に通常に付随しているいくつかの
ファイルに対して作動する。これらのファイルは、AS
CIIのI/Oについてのポートである「cons」、
マウスの位置を報告するファイルである「mous
e」、及びビットマップグラフィックスのプリミティブ
を実行するための書面メッセ−ジである「bitbl
t」からなる。
【0080】異なる「cons」ファイルは別個の顧客
の出力を別個のウインドウに保持するけれども、「mo
use」ファイル及び「bitblt」ファイルは、種
々の顧客を互いに独立して保持するような仕方で、ウイ
ンドウシステムによって実現される。
【0081】例えば、ウインドウ内の顧客プロセスが画
面を消去するメッセ−ジを「bitblt」ファイル宛
に書き込むと、ウインドウシステムは、そのウインドウ
だけを消去する。部分的に又は全体的に不明瞭なウイン
ドウに送られたグラフィックスは、全てウインドウシス
テムに専用のメモリにビットマップ層として保持され
る。顧客は互いに他の顧客については気付かない。
【0082】ウインドウシステムは、ファイル及び名前
スペースのオペレーションで全くユ−ザレベルにおいて
実現されるので、このシステムは、繰り返して実行でき
る。すなわち、それ自身の顧客である。ウインドウシス
テムは、オペレーティングシステムによって与えられた
「/dev/cons」、「/dev/bitblt」
等のファイルを開くことにより機能し、顧客間にファイ
ルの機能性を再生し、多重化する。
【0083】そのため、もしウインドウシステムのあら
ためての表示がウインドウにおいて実行される場合、ウ
インドウは通常に挙動し、その「/dev/cons」
及び他のファイルを、その顧客のために多重化する。こ
の繰り返しは、ウインドウにおける新しいウインドウシ
ステムのデバッギングに、又はCPUサーバへの接続の
多重化に用いると有益である。
【0084】ウインドウシステムはビットマップグラフ
ィックスコ−ドを持たない(そのグラフィックスオペレ
ーションは全てファイルに標準的メッセ−ジを書き込む
ことによって実行される)。したがって、ウインドウシ
ステムは、CPUサーバを含む、その名前スペースに
「/dev/bitblt」ファイルを有するどの装置
上でも作動させることができる。
【0085】「cpu」コマンド 「cpu」コマンドは、全二重ネットワ−ク接続線を用
いて端末とCPUサーバとを接続し、そこでセットアッ
ププロセスを実行する。端末プロセスとCPUプロセス
とがユ−ザと名前スペースとについての情報を交換す
る。すると、端末駐在プロセスは、ユ−ザレベルのファ
イルサーバとなる。このファイルサーバは、端末の専用
ファイルをCPUサーバから可視状態にする。本発明の
一実施例において、CPUサーバはユ−ザのプロフィル
を再実行することによって名前スペースを形成する。
【0086】別の実施例においては、名前スペースは、
特別端末駐在サーバによって送出される。このサーバに
対しては、端末の名前スペースを復元するために、質問
を行うことができる。
【0087】CPUプロセスは、名前スペースに対して
僅かな数の調整を施し、ローカル及び遠隔の両方のプロ
セスファイルシステムを「/proc」において可視状
態にしてから、コマンド・インタープリタの実行を開始
する。名前スペースに対するこれらの調整は、例えばC
PUサーバ上の「/dev/cons」ファイルを端末
上のファイルと同じファイルにする調整である。
【0088】コマンド・インタープリタは、その「/d
ev/cons」ファイルからコマンドを読み取り、結
果を同「/dev/cons」ファイル上にプリントす
る。同「/dev/cons」ファイルは、端末プロセ
スを経て適切な(例えば端末上の)ウインドウに接続さ
れる。
【0089】ビットマップエディタのようなグラフィッ
クスプログラムも、CPUサーバ上で実行される。その
理由は、これらプログラムの定義が全体的に、CPUサ
ーバにのために端末が取り扱うファイルへのI/Oに基
づくものだからである。CPUサーバへの接続及び戻り
の接続は、完全に透過性を有する。
【0090】この接続は、異質性の問題を提起する。す
なわち、CPUサーバと端末とは、互いに異なる種類の
プロセッサで有り得るし、現システムにおいてはそうで
ある。ここには、2値データ、及び実行可能コ−ドとい
う2つの異なる問題がある。2値データは2つの仕方、
すなわち2値でないようにする仕方、又はデータのフォ
ーマットをバイトレベルで厳密に定義する仕方によって
扱うことができる。
【0091】前者の例は、「/proc」内の「sta
tus」ファイルである。これによって、プログラムが
遠隔プロセスの状態を、透過性状態及び移植可能状態下
で点検することが可能になる。別の例は、端末のオペレ
ーティングシステムによって与えられる「/dev/t
ime」ファイルである。これは、秒数を固定フォーマ
ットのASCIIで表したものである。理由は、プログ
ラムの時間ベースの役をするエポックがタイムスタンプ
を必要とするためである。
【0092】CPUサーバ上のプロセスは時間ベースを
端末から得て、これにより分散形クロックの問題を未然
に排除している。
【0093】「/dev/bitblt」のようなI/
O集中形のファイルについては、ASCIIのオーバヘ
ッドを禁止できる。故に、プラン9システムにおいては
このようなファイルは、バイト順序が予め定義されてい
る2値フォーマット、及び順序について仮定しないファ
イル使用移植可能ライブラリにアクセスするプログラ
ム、を受け入れる。
【0094】したがって、「/dev/bitblt」
ファイルは、単に端末からだけでなく、どの装置からで
も使用できる。この原理は、プラン9システム全体を通
して用いられる。例えば、コンパイラのオブジェクトフ
ァイルとライブラリとのフォーマットは、同様に定義さ
れる。これは、オブジェクトファイルが、オブジェクト
ファイルをコンパイルするCPUの形式に無関係である
ことを意味する。
【0095】実行可能な2値について異なるフォーマッ
トを有するということは、より困難な問題を提起する。
プラン9システムはこれを次のように解決する。すなわ
ち、実行可能な2値のディレクトリに、「/mips/
bin/68020」等、適切に名前を付ける。そして
プログラムが、どのような種類のCPU上でそのプログ
ラムが作動しているかを、特別なサーバを介して確認す
る。
【0096】具体的には、プログラム、詳しくは「cp
u」コマンドが、適切なディレクトリを通常の名前「/
bin」に付随させる。これによって、プログラムが例
えば「/bin/rc」を作動させると、適切なファイ
ルが見出される。この解法はあまりスマートではない
が、実用的でよい効果が得られる。種々のオブジェクト
ファイル及びコンパイラは、独特のフォーマットとネー
ミングについての取り決めとを用いるので、少なくとも
1回「make」又は類似のプログラムによって自動化
すればクロスコンパイレーションが苦でなくなる。
【0097】機密保護 プラン9システムは、秘密保持の問題を直接には扱わな
いが、プラン9システムの有する態様のいくつかは、こ
の問題と関係がある。ファイルサーバをCPUサーバか
ら分離することで機密保持の可能性が高まる。ファイル
サーバはネットワ−クを介して標準プロトコルによって
のみアクセス可能な別個の装置であるので、ファイルの
みを取り扱い、プログラムを実行することはできない。
【0098】機密保持問題の多くは、それを介して特典
を得ることが不可能なような、厳密に制御されたインタ
フェ−ス、を用いてCPUサーバとファイルサーバとが
相互に通信することを単に観察することによって解決で
きる。
【0099】もちろん、ある種の管理機能はファイルサ
ーバ上で行われなければならないが、これらの機能は、
コンソール(操作卓)上でのみアクセス可能であり、し
たがって物理的な機密保持を必要とする特別のコマンド
インタフェ−ス、を経てのみ利用可能である。
【0100】その上、このインタフェ−スは、管理用に
のみ使用できる。例えば、バックアップ作成並びにファ
イルの形成及び削除はできるが、ファイル読み取りもフ
ァイル動作許可変更もできない。ファイルの所有者に対
してのみの読み取り許可を有するファイルの内容は、フ
ァイルサーバによって他のどのユ−ザにも、又管理者に
さえも漏らされることはない。
【0101】もちろん、この場合、ユ−ザが自分が誰か
をどのようにして証明するかの問題が残る。本発明の一
実施例においては、この証明は、データキットネットワ
−クそれ自身の上で簡単な立証マネジャーを用いて行わ
れる。したがって、ユ−ザが端末からログインすると、
ネットワ−クが、この端末からコールを行ったこのユ−
ザの正真性を保証する。ローカルネットワ−クにおける
信頼の必要性は、立証マネジャーをケルベロスに似たシ
ステムに置き換えることにより除去される。
【0102】プラン9サービスのアーキテクチャの概観(図1) 既に述べたように、プラン9サービスは、ファイルシス
テムとして実現される。すなわち、本サービスはプラン
9オペレーティングシステムをファイルセットとして有
するコンピュータ上で実行されるプロセスに発生する。
このプロセスは、本サービスによって与えられる「ファ
イル」上でファイル読み取りオペレーションを行うこと
によって本サービスからデータを得ることができ、「フ
ァイル」上でファイル書き込みオペレーションを行うこ
とによって本サービスにデータを与えることができる。
【0103】プロセスサービスによって与えられる「フ
ァイルシステム」に関して既に詳しく述べたように、本
サービスは、実際にファイルを維持する必要はなく、フ
ァイルオペレーションに対するプロセスからの要求に本
サービスがファイルを維持しているかのように応答しさ
えすればよい。例えば、プロセスが本サービスによって
維持される「ファイル」を読み取る場合、本サービス
は、「ファイル」を読み取るプロセスにデータを与える
必要がある。
【0104】図1は、プラン9サービスとプロセスとの
間の関係の概観を示す。サービスアーキテクチャ101
は、1つ以上のサービス123にアクセスするためにプ
ロセス102がどのようにファイルシステム109を用
いるかを示す。プロセス102は、ノット端末711
(図7)又はCPU703(図7)のいずれかの上で実
行される。本サービスは、プロセス102が実行中のプ
ロセッサにローカルに実現されるか、又はファイルサー
バ705(図7)のような遠隔の装置内に実現される。
【0105】図1に示すように、各サービス123は、
本サービスを使用するプロセッサ102に1つ以上のフ
ァイル樹木125を与える。ファイル樹木125は、デ
ータファイル131並びにディレクトリファイル127
及び129からなる。ディレクトリファイルは、ファイ
ルのリストを有するファイルである。ディレクトリファ
イルに記載されるファイルは、ディレクトリファイル又
はデータファイルである。
【0106】ファイル樹木125(a)から判るよう
に、データファイル、131のB、C及びDは、ファイ
ル樹木の葉部であり、一方、ディレクトリファイル12
9は樹木が枝別れする点を占める。樹木全体の基部には
単一ルートディレクトリファイル127がある。サービ
ス123内の各ファイルは、ファイル名を有する。本発
明の一実施例においては、ファイル名は、文字列であ
る。
【0107】プロセス102は、プラン9オペレーティ
ングシステムによって与えられたファイルシステム機能
へのコール(呼び出し)を行うことによってサービス1
23内のファイルにアクセスする。機能には2つの主な
種類がある。
【0108】ファイルの所在場所を探索するファイル探
索機能(FL)113と、ファイル探索機能113によ
ってファイルの所在場所が見出された後にファイルにア
クセスするファイルアクセス機能(FA)111とがそ
れである。ファイル探索機能(FL)113へのコール
は、矢印107で表され、ファイルアクセス機能(F
A)111へのコールは、矢印105で表される。
【0109】上記のように、プラン9プロセス102は
各々、それに付随する名前スペースを有する。プロセス
102の名前スペースは、サービス123によって与え
られたどのファイルにプロセス102がアクセスすれば
よいかを定める。本発明の一実施例におけるプロセス1
02の名前スペースは、ファイル樹木125とこれらフ
ァイル樹木のサブ樹木との両方又は一方から組み立てら
れる単一のファイル樹木117から構成される。
【0110】したがって、ファイル探索機能113によ
って維持され使用される名前スペース115(o)は、
プロセス102(a)に対する名前スペースである。図
1から判るように、プロセス102(a)の名前スペー
スは、サービス123(a)からのファイル樹木125
(a)とサービス123(k)からのファイル樹木12
5(k)とを含むが、サービス123(b)からのファ
イル樹木125(b)は含まない。
【0111】ファイル樹木117(0)は、プロセス1
02のファイル樹木117(o)内のディレクトリファ
イル「X」をファイル樹木125(a)のルート部に等
しくし、且つ同じファイル樹木117(o)内のディレ
クトリファイル「Y」をファイル樹木125(k)のル
ート部に等しくすることによって構築されている。
「X」及び「Y」自身がどのようにして名前スペース1
15(o)内にあるようになったかについては、後に詳
しく述べる。
【0112】名前スペース115(o)内では、ファイ
ルはパス名によって探索できる。パス名は、ファイル名
のリストで、探索すべきファイルの名前と、ファイル探
索がそこから行われているファイル樹木内の点からファ
イルまでの間の全てのディレクトリファイルの名前とを
含む。ファイル探索がそこから行われているファイル樹
木内の点を、「作業ディレクトリ」と称する。そして、
もし作業ディレクトリがディレクトリファイルXである
場合、パス名は、A/Cである。A/C内の文字(キャ
ラクタ)「/」は、パス名内の名前を分離する作用を有
する。
【0113】更に、どのファイルも、その全パス名、す
なわちルートディレクトリを表すキャラクタ「/」と、
ルートディレクトリとファイルとの間の全てのディレク
トリの名前と、ファイルの名前とを指定することによっ
て、探索できる。ファイルの名前は、やはりキャラクタ
「/」によって分離される。したがって、名前スペース
115(o)内のファイルCに対する完全なパス名は、
「/X/A/C」である。
【0114】プラン9においては、いくつかのプロセス
102が1つの名前スペースを共用する。1つの名前ス
ペースを共用するプロセス102は、プロセスグループ
103を形成する。そして、プロセスグループ103
(o)内のプロセスは、ファイル樹木117(o)によ
って定義される名前スペース115(o)を共用し、又
プロセスグループ103(z)内のプロセスは、名前ス
ペース115(z)を共用する。
【0115】プラン9においては、プロセスは、「フォ
ーク」システムコールによって形成される。新たに形成
されたプロセス102は、「フォーク」システムコール
を行ったプロセスと同じ名前スペースに付随した状態に
留まり、したがって、「フォーク」システムコールを行
ったプロセス102と同じプロセスグループ103に属
する。
【0116】プロセス102が「フォークプロセスグル
ープ」システムコールを行うと、新しいプロセスグルー
プ103が設立される。このコールが伝送する主題項目
は、新しいプロセスグループがプロセス102の既存の
名前スペース115の複写(コピー)を受け取るべき
か、又は最小限のデフォルト名前スペース115を受け
取るべきかを表示するフラッグだけである。このシステ
ムコールの実行によって、このシステムコールを行って
いるプロセス102は新しいプロセスグループに置かれ
る。
【0117】この「フォークプロセスグループ」システ
ムコールによってプロセス102に対する新しい名前ス
ペース115が設立されると、新しい名前スペース11
5における変更は、「フォークプロセスグループ」シス
テムコールを行っているプロセス102が前に属してい
たプロセスグループ103の既存の名前スペース115
には影響を与えない。
【0118】プロセスグループ103に属するどのプロ
セス102も、このプロセスグループについての名前ス
ペースを修正できる。そうするには、プロセスは2つの
名前スペース修正機能のうちの1つを用いる。これら2
つの機能のうちの第1の機能は「bind」(バイン
ド)(連結)で、これは既に名前スペースにある名前
を、新しいパス名によって指定されるファイルに等しく
する機能である。
【0119】例えば、名前スペース115(o)におけ
る「bind」(「/Y/H」、「/X/A」)機能
は、名前スペース115(o)においてそのルート部が
Aであるサブ樹木を、この名前スペースにおいてそのル
ート部がHであるサブ樹木に置き換えるために用いられ
る。「bind」機能実行後は、パス名「/X/A/
K」は、サブ樹木HのファイルKを意味する。
【0120】第2の名前スペース修正機能は、「mou
nt」(マウント)(搭載)で、これは既に名前スペー
スにある名前を、サービス123のルート部に等しくす
る機能である。後に更に詳しく述べるように、サービス
のルート部は、小さな整数であるファイル記述子によっ
て表される。すなわち、ファイル樹木117(o)のデ
ィレクトリ名「X」は、「mount」機能(「F
D」、「/X」)によってサービス123(a)のファ
イル樹木125(a)のルート部に等しくされたもので
ある。「mount」機能実行後は、パス名「/X/
A」は、ファイル樹木125(a)内のファイル「A」
を意味する。
【0121】プラン9における「mount」及び「b
ind」機能は、更に次のことができるように緻密に構
成される。すなわち、パス名とパス名との間、又はファ
イル記述子とパス名との間に3種類の関係を指定でき
る。それらのうちの第1の関係は置き換えである。もし
この関係が指定されると、既存の(旧の)名前によって
意味されるものが、新しい名前又はファイル記述子によ
って意味されるものに完全に置き換えられる。
【0122】第2及び第3の関係は、「結合ディレクト
リ」と称するものを設立する。結合ディレクトリが設立
されると、「bind」機能において用いられた既存の
名前と新しい名前とは両方共、ディレクトリファイルを
参照する必要があり、「mount」コマンド内の既存
の名前はディレクトリファイルを参照する必要がある
が、一方ファイル記述子は、サービス123におけるフ
ァイル樹木のルート部を参照する必要がある。
【0123】「bind」又は「mount」機能の効
果は、既存のディレクトリファイル及び新しいディレク
トリファイルにおけるファイルの結合である新しいディ
レクトリを設立することである。一方の関係(「前」)
は、新しいディレクトリが既存のディレクトリの前に探
索されるような結合ディレクトリを設立し、他方の関係
(「後」)は、新しいディレクトリが既存のディレクト
リの後に探索されるような結合ディレクトリを設立す
る。
【0124】すなわち、「bind」コマンド(「/Y
/H」、「/X/A」、「BEFORE」)は、ファイ
ル「I」、「J」、「K」がファイル「B」、「C」に
先行するような結合ディレクトリを設立し、ファイル探
索機能113がパス名「/X/A/C」に応答すると
き、これらの機能は最初にディレクトリH内を探索し、
次にディレクトリA内を探索する。
【0125】このように探索機能がファイルを求めてデ
ィレクトリ内を探索する順序を定めることにより、UN
IXのようなオペレーティングシステムにおいて探索リ
ストによって得られるのと同じ種類の制御が、結合ディ
レクトリから得られる。
【0126】名前スペースを再編成する代わりにファイ
ルを探索するファイル探索機能113は、主題項目とし
てパス名をとり、これをファイル記述子を返す。この場
合、ファイル記述子は、ファイルを参照するためにファ
イルアクセス機能111において用いられる小さな整数
である。
【0127】ファイル探索機能113は、パス名によっ
て指定されるディレクトリファイルをプロセス102の
作業ディレクトリにする機能(「chdir」機能)
と、パス名によって指定されるファイルを開く開設機能
(「open」機能)とを有する。「chdir」機能
及び「open」機能は、作業ディレクトリファイルに
ついてのファイル記述子及び開かれたファイルについて
のファイル記述子を、それぞれ返す。
【0128】これに加えて、「create」(創設)
機能があり、この機能は、パス名において指定されたフ
ァイルがこの機能によって創設されること以外は、「o
pen」機能と同じに作用する。
【0129】それからファイルアクセス機能111が、
ファイル探索機能によって与えられたファイル記述子を
用いて、ファイルの読み取り及び書き込み、ファイルの
状態のセット及び取得、並びにファイルの閉じの作業を
行う。
【0130】サービスアーキテクチャ101において、
ファイルシステム109は、プロセス102によって行
われたファイルアクセス機能コール105及びファイル
探索機能コール107をサービスファイルオペレーショ
ン要求に変換する。各サービスファイルオペレーション
要求は、そのファイル樹木125のうちの1本の樹木内
のファイル上でオペレーションを行うようにサービス1
23に要求する。
【0131】ここでも、これらの要求には2つの種類が
ある。すなわち、矢印119によって表示されるサービ
スファイルアクセス要求と、矢印121によって表示さ
れるサービスファイル探索要求との2つである。
【0132】後に更に詳しく説明するように、或るサー
ビス123についての要求119及び121は、機能コ
ールの形式を取り、別のサービス123についての要求
は、ファイルプロトコルの形式を取る。機能コールの場
合には、ファイルはファイル名又はファイル記述子によ
って表され、ファイルプロトコルの場合には、ファイル
はファイル名又は「ファイル識別子」によって表され
る。以下の説明の目的のため、ファイル記述子及びファ
イル識別子を包括して「ファイル指定子」の用語を用い
ることとする。
【0133】ファイルシステム109において、プロセ
ス102によって用いられるファイル記述子には、サー
ビス123によって与えられるファイルハンドル「qi
d」が付随する。この付随関係は、ファイル記述子をフ
ァイル識別しに付随させるか、又はファイル識別子をフ
ァイルハンドル「qid」に付随させるかの方法によ
り、直接又は間接付随となる。
【0134】プロセス102によって用いられるファイ
ル記述子とファイルハンドル「qid」との間に付随関
係があると、プロセス102は、ファイルハンドル「q
id」によって表されるファイルと接続関係にある、と
いわれる。同様に、サービス123において、ファイル
ハンドル「qid」が、1つ以上のファイル指定子に付
随する。
【0135】ファイルシステムコール105又は107
の結果として生じるサービスファイル要求が、与えられ
たファイルハンドル「qid」の付随するファイル指定
子を有する場合、ファイルオペレーションはファイルハ
ンドル「qid」によって識別されるファイル上で行わ
れる、という結果となる。
【0136】ファイルシステム109においては名前又
はファイル指定子によってファイルを表すがサービス1
23においては名前又はファイルハンドル「qid」に
よってファイルを表すことの利点は、サービスが異なる
場合に、ファイル名とファイルハンドル「qid」との
間に異なる関係を設立できることである。例えば、上に
説明したプロセスサービスのような、いくつかのサービ
スにおいては、全てのプロセスによって用いられるファ
イル名は単一のファイルセットを参照するので有利であ
る。
【0137】後に詳しく説明する8.5 ウインドウサー
ビスのような、別のサービスにおいては、各プロセスに
よって用いられるファイル名は、このプロセスに独特の
ファイルセットを参照する。その結果、サービスアーキ
テクチャ101におけるファイル名は、C言語のような
プログラミング言語中の変数の特性に類似の特性を有す
る。
【0138】いくつかのファイル名は、グローバルな静
的変数名に似ている。すなわち、グローバルな静的変数
名が、その変数名が現れる全てのコ−ド内の同一メモリ
所在場所を参照するように、プロセスサービスによって
与えられるファイル名のようなファイル名は、全てのプ
ロセスにおいて同一ファイルを参照する。
【0139】他のファイル名は、ローカルな変数名に似
ている。すなわち、ローカルな変数名が、手順の呼び出
しごとに異なるメモリ所在場所を参照するように、8.
5 サーバによって与えられるファイル名のようなファ
イル名は、各プロセスにおいて異なるファイルを参照す
る。ファイル名がどの特性を有するかは、もちろん、フ
ァイルを与えるサービス123によって定められる。
【0140】変数に用いられる用語に類似して、サービ
ス123は、そのファイルの実例を与える、といわれ
る。すなわち、プロセスサービスはそのファイルの各々
の単一事例を与え、サービスによって与えられたファイ
ルのうちの1つのファイルと接続関係にあるプロセス1
02は、そのファイルと接続関係にある他のプロセス1
02の全てと同じファイルにアクセスを有する。
【0141】他方、ウインドウサービスは、ファイル樹
木のルート部との接続を設立する各プロセス102に、
そのファイル樹木内のファイルの別個の事例を与える。
ウインドウサービスによって与えられるファイルと接続
関係にあるプロセス102は、そのファイルの多数の事
例のうちの1つと接続関係にある。
【0142】各サービス123は、次のような種類のサ
ービスファイル探索要求121を扱うことができる。 ・「attach」:指定されたサービス123におけ
るファイル樹木のルート部についてのファイル指定子を
与えられて、ルート部についてのファイルハンドル「q
id」をファイルシステム109に返す。
【0143】・「walk」(ウオーク):与えられた
名前を有するファイルについてファイル指定子によって
指定されたディレクトリファイルを探し、もしそのファ
イルが見出された場合、ファイル指定子をそのファイル
についてのファイルハンドル「qid」に付随させ、フ
ァイルハンドル「qid」を返す。
【0144】・「create」:ファイル指定子によ
って指定されたディレクトリファイル内に新しいファイ
ルを「創設」し、ファイルに特定の名前を付け、ファイ
ル指定子を、新しいファイルについてのファイルハンド
ル「qid」に付随させ、ファイルハンドル「qid」
を返す。 ・「remove」:ファイル指定子によって指定され
たファイルをサーバから「除去」し、ファイル指定子を
ファイルハンドル「qid」との付随から外し、除去さ
れたファイルの名前を返す。
【0145】各サービス123は更に、次のような種類
のサービスファイルアクセス要求を扱うことができる。 ・「open」:ファイル指定子によって指定されたフ
ァイルを、ファイルアクセスオペレーションのために
「用意」し、ファイル指定子の付随するファイルハンド
ル「qid」を返す。
【0146】・「clone」:ファイルを表す第1の
ファイル指定子と、まだファイルを表していない第2の
ファイル指定子とを与えられて、第1のファイル指定子
が付随するファイルに第2のファイル指定子を付随させ
る。 ・「read」:ファイル指定子と、このファイルにお
けるオフセットと、カウントとを与えられて、このオフ
セットで始まるこのカウントにおいて指定されるバイト
数を「読み取る」。
【0147】・「write」:ファイル指定子と、こ
のファイルにおけるオフセットと、カウントと、データ
とを与えられて、このオフセットで始まるこのカウント
において指定されるバイト数にこのデータを「書き込
む」。 ・「clunk」:ファイル指定子を与えられて、この
ファイル指定子とこのファイルとの間の付随関係を終了
させる。
【0148】・「stat」:ファイル指定子と、ファ
イル状態情報を得るためにサービスによって必要とされ
る情報とを与えられて、ファイルの「状態」を返す。 ・「wsat」:ファイル指定子と、ファイル状態を変
更するためにサービスによって必要とされる情報とを与
えられて、ファイルの状態を変更する。
【0149】全てのサービス123が上記のオペレーシ
ョンを実現する必要があるが、いくつかの場合には、オ
ペレーションが無効であるか、又は誤り(エラー)が発
生する。例えば、もしサービス123がプリンタであ
り、したがって書き込み専用のファイルしか実現できな
い場合には、「read」オペレーション(読み取り)
を行うとエラーが発生する。
【0150】核サービス及びプロトコルサービス(図2) プラン9についての本発明の一実施例には、2種類のサ
ービス123が存在する。第1の種類は核サービスで、
これはファイルオペレーション要求205及び207が
プラン9の核機能へのコールによって実現されるような
サービスである。第2の種類はプロトコルサービスで、
これはファイルオペレーション要求205及び207が
プラン9のファイルプロトコルによって実現されるよう
なサービスである。
【0151】プロトコルサービスにおいては、各サービ
スファイルオペレーション要求は、プロセス102から
プロトコルサービスへ伝送される「tメッセ−ジ」によ
って起こされる。プロトコルサービスは、プロトコルサ
ービスからプロセスに返される情報を含む「rメッセ−
ジ」でtメッセ−ジに応答する。プロトコルサービスに
対するサービスファイルオペレーション要求を構成する
tメッセ−ジ及びrメッセ−ジを、「トランズアクショ
ン」と名付ける。
【0152】例えば、プロトコルサービスに対するサー
ビスファイル「read」(読み取り)オペレーション
要求は、次に示す「read」tメッセ−ジ(「tre
ad」)及び「read」rメッセ−ジ(「rrea
d」)からなる「read」トランズアクションであ
る。
【0153】「tread」:タイプ指定子、ファイル
識別子、タグ、オフセット、及びカウント 「rread」:タイプ指定子、ファイル識別子、タ
グ、カウント、及びデータ
【0154】ファイル識別子は、ファイルシステム10
9内のファイル記述子と、ファイルシステム109内及
びプロトコルサービス内のファイルハンドル「qid」
と、に付随する。
【0155】「tread」メッセ−ジは、メッセ−ジ
が「tread」メッセ−ジであること、すなわちメッ
セ−ジのタイプ(種類)、を表示するタイプ指定子、フ
ァイル識別子、メッセ−ジを識別するタグ、ファイルに
おけるオフセット(そこから「read」が始まる)、
及びカウント(バイト数)からなる。「rread」メ
ッセ−ジは、メッセ−ジが「rread」メッセ−ジで
あることを表示するタイプ指定子、ファイル識別子、別
のタグ、実際に読み取られたバイト数のカウント、及び
データ自身からなる。
【0156】もし「read」(読み取り)オペレーシ
ョンの結果としてエラーが発生した場合、プロトコルサ
ービス209は、「rread」メッセ−ジの代わりに
エラーメッセ−ジを返す。エラーメッセ−ジ(「rer
ror」)は、次に示す形式(フォーム)を有する。 「rerror」:タイプ指定子、タグ、エラーメッセ
−ジ列
【0157】各プロトコルサービス209は、上記のサ
ービスファイルオペレーション要求の各々に対応するト
ランズアクションを行うことができる必要がある。これ
が、プロトコルサービス209に求められる要件の全て
であるので、プロトコルサービス209は、マウントサ
ービス203が実行されるプロセッサのアーキテクチャ
とは全く異なるアーキテクチャを有するプロセッサ上で
実現してもよい。プロトコルサービス209を使用する
ために求められる全要件は、プロトコルの送受信に使用
されるプロトコルサービス209への接続である。
【0158】更に、本発明の一実施例においては、プロ
トコルに含めて送られ返されるデータは、与えられたフ
ァイル樹木を提供する全てのプロトコルサービス209
によって用いられる予め定められたフォーマットを有す
る。したがって、プロセス102は、プロセス102を
実行中の装置のタイプ及びプロセスサービス209を実
行中の装置のタイプに関係なく、条件として与えられた
ファイル樹木を提供するプロセスサービスであれば、ど
のプロセスサービスを用いることもできる。
【0159】図2は、プロトコルサービスと、アーキテ
クチャ101のうちのその他の部分との間の関係を示
す。図示のように、プロトコルサービス(PS)209
は、上記のサービスファイル探索要求及びサービスファ
イルアクセス要求に対応するファイルプロトコルを用い
てファイル探索トランズアクション205とファイルア
クセストランズアクション207とを行う。
【0160】特別な核サービスであるマウントサービス
203が、サービスファイル探索要求を指定する機能コ
ール217、及びサービスファイルアクセス要求を指定
する機能コール219をファイルシステム109から受
信する。それからマウントサービス203は、機能コー
ルに応答して、プロトコルサービス209によって対応
するトランズアクションを行う。
【0161】トランズアクションを行うために、マウン
トサービス203は、いくつもの通信サービス215を
用いる。このような通信サービスには2つの種類、すな
わちネットワ−ク通信サービス(NS)214とプロセ
ス間通信サービス(IPS)216とがある。
【0162】ネットワ−ク通信サービス214は、プロ
セス102を実行するCPUにネットワ−クを介して接
続される遠隔プロトコルサーバ213と通信するために
ネットワ−クを用いる。プロセス間通信サービス216
は、ローカルプロトコルサーバ211と通信するために
プロセス間通信システムを用いる。
【0163】本発明の一実施例において、プロセス間通
信サービス216によって用いられるプロセス間通信シ
ステムは、UNIXオペレーティングシステムにあるよ
うなパイプシステムである。通信サービス215がプロ
トコルサーバ209に接続されるときには、ファイル記
述子によって表される。「mount」システムコール
において用いられるのは、これらのファイル記述子であ
る。
【0164】図2においてネットワ−ク通信サービス2
14に併記した括弧内符号に示すように、ネットワ−ク
通信サービス214は、図7の分散形ネットワ−ク71
3、全国規模長距離通信ネットワ−ク715、及び高速
DMAリンク709を用いてもよい。又、遠隔プロトコ
ルサーバ213には、1つ以上のファイルサーバ705
を設けるようにしてもよい。
【0165】ローカルプロトコルサーバ211は、ノッ
ト端末711に対する8.5 サービスのような装置でよ
く、又与えられたプロセス102との間でプロセス間通
信施設によって通信する他のプロセス102でもよい。
【0166】上に述べたように、プロトコルサービス2
09と、マウントサービス203のような核サービスと
の間の区別は、所在場所ではなく、単に、プロトコルサ
ービス209がマウントサービス203とトランズアク
ションを行うということだけである。
【0167】後に8.5 サービスについての説明で詳し
く述べるように、プロトコルサービス209のこの特性
の利点は、同じプロトコルサービス209を、ローカル
プロセッサ上で作動するプロセス102と、図7のCP
U703のような遠隔プロセッサ上で作動するプロセス
102との両方で使用できることにある。
【0168】プラン9におけるファイルオペレーションの実現 以下、プラン9におけるファイルオペレーションの実現
について説明する。まず、ファイルを表すためとファイ
ルをプロセス102及びサービス123に関連付けるた
めとに用いられるデータ構造について述べ、続いて、プ
ロセスの名前スペース115を表すために用いられるデ
ータ構造について述べ、最後に、或る一般的なファイル
オペレーションの例について述べる。
【0169】プロセス102とファイルとの間の接続の
表示(図3〜図5) プロセス102との間に接続を有するファイルは、チャ
ンネルデータ構造で表される。ファイルについてのチャ
ンネルデータ構造は、最低限でも、ファイルを与えるサ
ービス123を指定し、ファイルを参照するためにプロ
セス102が用いるファイル記述子に、サービス123
によって与えられるファイルハンドル「qid」を付随
させる。
【0170】もしサービス123がプロトコルサービス
209である場合、チャンネルは更に、ファイルプロト
コル内及びファイルプロトコルに対するプロトコルチャ
ンネル内でファイルについて用いられるファイル識別子
をファイル記述子に付随させる。
【0171】図3は、チャンネルデータ構造の説明図で
ある。チャンネルデータ構造301は、次の構成要素を
有する。 ・「LOCK」303(ロック):同時に複数のプロセ
スがチャンネル301にアクセスすることを禁じる。 ・「REF」307(参照カウント):チャンネルが他
の核データ構造によって指し示されているかどうかを表
示する。
【0172】・「NEXT/OFF」(NEXT/OF
FSET)309(次/オフセット):チャンネル30
1が使用されていないときは、不使用チャンネル301
のリストに記憶され、その場合、「NEXT/OFFS
ET」フィールドは、次の不使用チャンネル301を指
し示す。チャンネル301によって表されるファイルが
アクセスされているときは、「NEXT/OFF」フィ
ールドは、ファイル内への現オフセットを指定する。
【0173】・「KSINFO」311(核サービス情
報):チャンネル301によって表されるファイルを与
える核サービスを指定する情報を含む次の2個のフィー
ルドから構成される。 −「TYPE」313(タイプ):このフィールドは、
チャンネル301によって表されるファイルにアクセス
するための核サービスを指定する。プロトコルサービス
209については、「TYPE」フィールド313は、
マウントサービス203を指定する。
【0174】−「DEV」(DEVICE)315(デ
バイス):このフィールドは、核サービスによって表さ
れる特別なデバイスを指定する。マウントサービス20
3の場合には、「DEV」フィールド315は、チャン
ネル301によって表されるファイルを与えるプロトコ
ルサービス209を指定する。
【0175】・「AINFO」317(アクセス情
報):ファイルアクセスを行うのに必要な情報を含む次
の3個のフィールドから構成される。 −「MODE」319(モード):チャンネルによって
表されるファイルにどのようにアクセスするかを表示す
る。 −「FLAG」321(フラッグ):ファイルに関する
状態情報を含む。 −「QID」323:ファイルを与えるサービスがファ
イルに割り当てるファイルハンドル「qid」を表す。
【0176】・「MINFO」325(マウント情
報):チャンネル301によって表されるファイルのパ
ス名に影響を与える「bind」及び「mount」に
関する情報をどこで見出せるかを表示する次の2個のフ
ィールドから構成される。 −「MOUNT PTR」327(マウントポイン
タ):「bind」及び「mount」に関する情報が
見出されるデータ構造にを指し示すポインタである。 −「MOUNT ID」329(マウント識別子):
「MOUNT PTR」327によって指し示されるデ
ータ構造についての識別子である。
【0177】・「FID」331(ファイル識別子):
このファイル識別子は、チャンネル301によって表さ
れるファイルを与えるプロトコルサービス209に対し
てマウントサービス203が与えるファイル識別子であ
り、且つファイルが接続されている間ファイルについて
のファイルハンドル「qid」に対してプロトコルサー
ビス209が付随させる、ファイル識別子である。本発
明の一実施例においては、「FID」331は、チャン
ネル301が形成されるときにチャンネルごとに独自の
値にセットされる。
【0178】・「AUX」333(補助情報):デバイ
スタイプ313によって意味の定まる情報である。 ・「PSINFO」335(プロトコルサービス情
報):チャンネルによって表されるファイルを与えるプ
ロトコルサービスにファイルプロトコルをどのようにし
て送るべきかを表示する次の2個のフィールドから構成
される。
【0179】−「PCHAN」337(プロトコルチャ
ンネル):現チャンネル構造によって表されるファイル
でのトランズアクションに用いられる通信サービス21
5を表すチャンネル構造301を指し示すポインタであ
る。 −「MQID」339:チャンネル301によって表さ
れるファイルを含むプロトコルサービスにおけるファイ
ル樹木のルートディレクトリのファイルハンドル「qi
d」である。
【0180】各プロセス102は、そのプロセス102
が接続関係にあるファイルセットに付随する。ファイル
セットには、プロセス102の先代プロセスによって接
続関係が設立されたファイルであり且つ「fork」シ
ステムコールによってプロセス102が形成されたとき
に受け継がれたファイルを含み、又、プロセス102自
身によって接続関係が設立されたファイルを含む。
【0181】付随関係は、図4に示すデータ構造401
によって達成される。データ構造401は更に、ファイ
ルセット内の各ファイルを、プロセス102がそのファ
イルを参照するために用いるファイル記述子に付随させ
る。
【0182】データ構造401へのアクセスの始点は、
プロセス102についてのユ−ザデータ構造403であ
る。ユ−ザデータ構造403内のポインタ411が、フ
ァイル記述子アレイ(FDA)413を指し示す。ファ
イル記述子アレイ413は、チャンネル401を指し示
すポインタ423のアレイで、ファイル記述子(FD)
417による索引が付けられている。
【0183】もしファイルがプロセス102に接続され
たファイルセットに属する場合、そのファイルについて
のファイル記述子に対応するアレイ413内のエントリ
(FDAE)415には、そのファイルについてのチャ
ンネル構造301を指し示すポインタ423が含まれ
る。このようなチャンネル構造を図4にファイルチャン
ネルデータ構造419として示す。更に、このようなフ
ァイルチャンネルデータ構造419からなるセット42
1が、プロセス102が接続されるファイルセットに対
応する。
【0184】本発明の一実施例においては、ファイル記
述子アレイ413は、100個の要素を有し、したがっ
て、各プロセス102は、最大100個までのファイル
に接続されることになる。
【0185】前に述べたように、「bind」、「mo
unt」、「chdir」、又は「open」機能のよ
うなファイル探索機能は、パス名を主題項目として取
り、そのファイルについてのファイル記述子417を返
す。
【0186】下に更に詳しく述べるように、パス名解釈
の目的でのファイルチャンネルデータ構造419へのア
クセスは、プロセス102のファイル樹木のルート部に
ついてはファイルチャンネルデータ構造419へのユ−
ザデータ構造403内のポインタ407によって与えら
れ、プロセス102の作業ディレクトリについてはファ
イルチャンネルデータ構造419を指し示す別のポイン
タ409によって与えられる。
【0187】パス名解釈に用いられるユ−ザデータ構造
403には別のコンポネントとして要素(ELEM)4
05があり、この要素には現に解釈作業下にあるパス名
を構成する名前リスト内の名前が含まれる。
【0188】ファイルチャンネルデータ構造419によ
って表されるファイルがプロトコルサービス209によ
って与えられると、ファイルチャンネルデータ構造41
9は、通信サービスをかいしてのプロトコルサービス2
09との接続を表すプロトコルチャンネルに 付随され
る。プロトコルチャンネルも又、チャンネル構造301
を用いて実現される。
【0189】プロトコルチャンネルとして作用するチャ
ンネル構造301において、「TYPE」フィールド3
13は、プロセス間通信サービス216又はネットワ−
クサービス214(本発明の一実施例においては、パイ
プサービス又はデータキットネットワ−ク通信サービ
ス)のいずれかを指定する。フィールド327、32
9、及び337は、プロトコルチャンネルにおいては意
味を持たない。
【0190】プロトコルチャンネルによって表される接
続がプロセス102によって開かれると、そのプロトコ
ルチャンネルを指し示すポインタが、プロセス102に
ついてのファイル記述子413内に置かれ、プロトコル
チャンネルが、対応するファイル記述子を受信する。パ
イプを形成するパイプシステムコールがプロセス102
によって実行されると、パイプによるローカルプロトコ
ルサービスへの接続が開かれる。
【0191】そして、srvサービスにおける遠隔プロ
トコルサービス209を表すファイルが開かれると、デ
ータキット接続による遠隔のプロトコルサービス209
への接続が開かれる。
【0192】図5は、ファイルチャンネルデータ構造4
19をプロトコルチャンネルと、「tメッセ−ジ」及び
「rメッセ−ジ」を表すデータ構造とに付随させるため
に本発明の一実施例において用いられるデータ構造50
1を示す。前に述べたように、ファイルチャンネルデー
タ構造419内の「PCHAN」フィールド337はプ
ロトコルチャンネル517を指し示し、これはチャンネ
ル構造301を用いて実現される。
【0193】「tメッセ−ジ」及び「rメッセ−ジ」を
表すデータ構造は、マウントサービスアレイ(MNT
A)502を用いて探索される。マウントサービスアレ
イ502内には、プロトコルサービス209によって与
えられるファイルを表す各ファイルチャンネルデータ構
造419についてのエントリ(MNTE)503が含ま
れる。
【0194】各エントリ503は、1個の識別子及び2
個のポインタを有し、これら2個のポインタは、エント
リ503に対応するファイルチャンネルデータ構造41
9を指し示すポインタ及びマウントサービス待ち行列構
造(MNTQ)509を指し示すポインタである。又、
ファイルチャンネルデータ構造419は、「DEV」フ
ィールド315内の情報の一部分として、エントリ50
3についての識別子を有する。
【0195】マウントサービス待ち行列構造509は、
3個のポインタを有する。第1は、ファイルチャンネル
データ構造419の属する手順を表すデータ構造を指し
示すポインタ511であり、第2は、プロトコルサービ
ス209と、ファイルチャンネルデータ構造419によ
って表されるファイルを含むファイル樹木125との接
続を表すプロトコルチャンネル517を指し示すポイン
タ515であり、そして第3は、メッセ−ジ待ち行列5
20を指し示すポインタ519である。
【0196】待ち行列内のメッセ−ジは、もちろんプロ
トコルサービス209へのそのファイルに関する「tメ
ッセ−ジ」と、プロトコルサービス209からの「rメ
ッセ−ジ」である。マウントサービス待ち行列構造50
9は、メッセ−ジ待ち行列をプロトコルチャンネル51
7とプロセス102とに付随させる。
【0197】各メッセ−ジ520は、少なくとも1個の
マウントサービスヘッダ構造(MNTHDR)521か
らなる。ファイルチャンネルデータ構造419によって
表されるファイルとチャンネルとの組み合せについては
1個を超える数の未決着のメッセ−ジがあるので、マウ
ントサービスヘッダ構造521は、ファイルチャンネル
データ構造419によって表されるプロセスとファイル
との組み合せについての他のメッセ−ジに対するヘッダ
とヘッダ521とをつなぐポインタ527及び529を
有する。
【0198】マウントサービスヘッダ構造521は、更
に又、ファイルチャンネル419が属するプロセスにつ
いてのプロセスデータ構造を指し示すポインタ526を
有する。
【0199】もしメッセ−ジ520が「rメッセ−ジで
ある場合、メッセ−ジの、データ以外の部分は「RHD
R」フィールド525に置かれる。メッセ−ジが「tメ
ッセ−ジ」の場合、メッセ−ジの、データ以外の部分は
「THDR」フィールド523に置かれる。したがっ
て、これらのフィールドは、メッセ−ジのタイプ、マウ
ントサービス203がファイルに付随させたファイル識
別子、及びその他必要情報からなる。
【0200】例えば、もしメッセ−ジが「twrit
e」メッセ−ジであると、「THDR」フィールド52
3は、メッセ−ジのタイプ、ファイルについてのファイ
ル識別子、書き込まれるべきバイト数、及び「writ
e」機能が始まるオフセット位置からなる。更に、「T
HDR」及び「RHDR」フィールドは、メッセ−ジに
入れて送信又は受信されたデータを有するマウントバッ
ファ533を指し示すポインタ531を有する。
【0201】メッセ−ジ520は、ファイルチャンネル
419に対応するエントリ503とマウントサービスヘ
ッダ構造521とを主題項目として取る機能により送信
される。この機能は、エントリ503を用いてプロトコ
ルチャンネル517を探索する。そして、マウントサー
ビスヘッダ構造521によって指定されるメッセ−ジ5
20が、プロトコルチャンネル517によって指定され
る接続線に出力される。送信後、メッセ−ジを送ったプ
ロセス102は、応答を待つ。
【0202】応答が到着すると、メッセ−ジ520内に
おかれ、プロセスが注意喚起され、メッセ−ジ520が
プロセス102によって読み取られる。本発明の一実施
例においては、適切なマウントサービスヘッダデータ構
造521を探索するのに、メッセ−ジ内のタグが用いら
れる。
【0203】与えられたファイルチャンネルデータ構造
419に対するデータ構造501を探索する必要のある
プラン9内の機能は、与えられたファイルチャンネルデ
ータ構造419を指し示すポインタ505を有するエン
トリ503を見出すまでマウントサービスアレイ502
を通して作業することによって、この探索を行う。ファ
イルチャンネルデータ構造は、その「DEV」フィール
ド315が、対応するエントリ503についての識別子
を有する、という事実によって識別が可能である。
【0204】上記の説明から明白なように、図3〜図5
に示すデータ構造によって、ファイルについてのファイ
ル記述子417を有するプロセス102が、ファイル上
での読み書きのようなファイルアクセス機能を行うこと
が可能となる。しかし、これらの機能には、ファイル記
述子のほかにパス名が関連するので、これらのデータ構
造は、ファイル探索機能を行うには十分ではない。
【0205】名前スペース115の表示(図6、図8、及び図9) 前に述べたように、新しいプロセス102の名前スペー
ス115は、プロセス102の親(先代)プロセスから
受け継がれたもの、又は先代の名前スペースを受け継が
ないプロセス102に対してプラン9によって利用可能
にされる名前スペース用の跡地(スタブ)スペース(ス
タブ名前スペース)から新しく形成されたもの、のいず
れかである。図6は、スタブ名前スペースからどのよう
にしてプロセス102の名前スペースが形成されるかを
概念的に示す。
【0206】図6のスタブファイル樹木601は、ルー
トディレクトリ603に単一レベルのファイルを与える
核サービスであるルートサービスによって与えられる。
ルートディレクトリ603及びファイル605〜615
は、他のサービス123に属する樹木125のルート部
がバインド(連結)される点としての役をするだけであ
る。本発明の一実施例においては、符号605〜615
のファイルセットは、サービスの種類を機能によって分
割する役をする。ファイル名は、機能に対して次のよう
に対応する。
【0207】・ファイル「dev」605は、サービス
がバインド(連結)される主な場所である。I/O(入
出力)機能を与えるサービス及び雑機能を有する他のサ
ービスは全て、ファイル「dev」605に連結され
る。 ・ファイル「boot」607は、プラン9が実行され
るCPUをブートするサービスが連結される場所であ
る。
【0208】・ファイル「fd」609は、プロセス
の、接続されたファイルについての複製ファイル記述子
を与えるサービスが連結される場所である。 ・ファイル「proc」610は、プラン9プロセスに
ついての情報を与えるサービスが連結される場所であ
る。 ・ファイル「env」611は、プロセス102につい
ての環境ファイルを与えるサービスが連結される場所で
ある。これらの環境ファイルは、UNIX環境変数と同
じ機能を行う。
【0209】・ファイル「bin」613は、プロセス
102によって実行されるプログラムのファイルを含む
サービスが連結される場所である。 ・ファイル「srv」615は、プログラム102に利
用可能なプロトコルサービス209についてプロトコル
チャンネル517を表すファイルを与えるサービスが連
結される場所である。
【0210】プラン9によって、スタブファイル樹木6
01内のファイル名に連結可能なビルトイン・サービス
のセットが得られる。これらサービスのうちのいくつか
は、プロセス102によって実行されるプラン9核機能
にだけ連結される。他のサービスは、プロセス102に
よって実行されるどの機能に連結してもよい。プラン9
のパス名においては、ビルトイン・サービスの名前に
は、前に「#」記号が付く。
【0211】核機能にだけ連結されるビルトイン・サー
ビスは、次の通りである。 ・「#/」:スタブファイル樹木601を与える核ルー
トサービス。 ・「#」:プロセス間通信についてのUNIX形のパイ
プを与える核パイプサービス。 ・「#M」:プロトコルサービス209とのトランズア
クションを扱うマウントサービス603。 核は、ルートサービスを、プロセス102の名前スペー
スのルート部に連結する。
【0212】プロセス102によって実行されるどの機
能に連結してもよいビルトイン・サービスは、以下の通
りである。 ・「#b」:ブートサービス。このサービスは、ファイ
ルに書き込みが行われたときに、核をして、与えられた
アドレスに分岐させるようにするファイル、を有する。
これによって、核が仮想メモリ内の与えられた場所に書
き込みを行うことが可能になる。ブートサービスは、概
してファイル「boot」607に連結される。
【0213】・「#b」:ビットサービス。このサービ
スは、ビットマップスクリーン及びマウスを表すファイ
ルを有する。ビットサービスは、概してファイル「de
v」605に連結される。 ・「#c」:コンソール・サービス。このサービスは、
システムコンソール(操作卓)を表すファイルを有す
る。コンソール・サービスは、概してファイル「de
v」605に連結される。
【0214】・「#d」:複製サービス。このサービス
によって与えられるファイルは、プロセス102に属す
る接続されたファイルについてのファイル記述子である
名前を有する。複製サービスは、概してファイル「f
d」609に連結される。 ・「#e」:環境サービス。このサービスによって与え
られるファイルは、概してファイル「env」611に
連結される。
【0215】・「#kname」:データキットサービ
ス。このサービスによって与えられるファイルは、「n
ame」によって表されるデータキットハードウエア上
の会話を表す。このサービスは、概してファイル「de
v」に連結される。 ・「#p」:全体概観において述べたプロセスサービ
ス。概してファイル「proc」610に連結される。
【0216】・「#s」:サービス登録サービス。この
サービスによって与えられたファイルは、プロトコルサ
ービス209に接続された既に開かれているプロトコル
チャンネル517を表す。
【0217】本発明の、プラン9についての一実施例に
おいては、その名前スペース115を受け継いでいない
プロセス102がノット端末711上で実行開始すると
きに、ノット端末711上で実行されるプラン9核機能
が、バインド(連結)オペレーションを行い、これによ
って、樹木617として図示されるフォームが、名前ス
ペース115に与えられる。
【0218】もし樹木内の名前にサービスが連結されて
いた場合、その事実は、「=」の後にそのサービスの名
前を付けて表示される。もし連結オペレーションが結合
ディレクトリを形成した場合、その事実は、結合ディレ
クトリの構成要素を括弧内にリストとして列記したもの
を「=」の後に付けて表示される。この列記リストは、
構成要素が探索される順に作成される。ファイル樹木6
17は、次に示す一連の「bind」(連結)及び「m
ount」(マウント)オペレーションによって形成さ
れる。
【0219】・「bind(「#/」、「/」、MRE
PL)」。これは、ルートサービスによって与えられる
樹木を、プロセス102によって解釈されたパス名内の
ルート部を表す「/」に連結する。「/」への参照は、
「/」603への参照として解釈される。
【0220】・「mount(FD、「/」、MAFT
ER)」。これは、マウントサービス203に属するプ
ロトコルチャンネル517を「/」上にマウントし、こ
れによって、ルートサービスのルート部及びプロトコル
チャンネル517によって表されるプロトコルサービス
209のルート部からアクセス可能なファイルからなる
結合ディレクトリを形成する。プラン9においては、プ
ロトコルサービス209が、デフォルトファイルサーバ
705においてデフォルトファイル樹木125を与え
る。
【0221】・「bind(「/68020/bi
n」、「/bin」、MREPL)」。これは、そのル
ート部がデフォルト樹木125内のディレクトリ「/6
8020/bin」であるような樹木を、スタブ名前ス
ペース(スタブファイル樹木)内の名前「bin」61
3に連結する。ディレクトリ「/68020/bin」
はノット端末711について実行可能なコ−ドを有す
る。本発明の一実施例においてはノット端末711はモ
トローラ68020マイクロプロセッサを有する。
【0222】・「bind(「/lib/rc」、「/
bin」、MAFTER)」。これは、そのルート部が
デフォルト樹木125内のディレクトリ「/lib/r
c」である樹木を、名前「bin」613に連結する。
「/68020/bin」が既に「bin」613に連
結されており、MAFTERも指定されているので、結
果は、ディレクトリ「/68020/bin」がディレ
クトリ「/lib/rc」より前に探索されるような結
合ディレクトリである。
【0223】・「bind(「#c」、「/dev」、
MREPL)」。これは、コンソールサービス「#c」
によって与えられる樹木を、名前「dev」605に連
結する。 ・「bind(「#d」、「/fd」、MREP
L)」。これは、複製サービス「#d」によって与えら
れる樹木を、スタブファイル樹木601内の名前「f
d」に連結する。
【0224】これらの連結の結果として、プロセス10
2は、パス名「/bin/cc」によって、「#M1」
が接続されている接続先のプロトコルサービス209の
ディレクトリ「/68020/bin」内の「cc」と
呼ばれるファイルを参照できるし、又パス名「/bin
/pwd」によって、同じプロトコルサービス209の
「/lib/rc」内の「pwd」と呼ばれるファイル
を参照できる。但し、もちろんこれは、もしディレクト
リ「/68020/bin」内にファイル「pwd」が
存在しなければ、ということを前提とする。
【0225】同様に、サービス「#c」によって与えら
れるファイル「pid」は、パス名「/dev/pi
d」によって参照でき、サービス「#d」によって与え
られるファイル「0」は、パス名「/fd/0」によっ
て参照できる。
【0226】上記から明らかなように、プラン9プロセ
ス102についての名前スペース115は、名前スペー
ス115内の名前に対して行われた全ての「bind」
及び「mount」オペレーションの記録を含んでいな
ければならない。この記録を「マウントテーブル」と名
付ける。本発明の一実施例のマウントテーブルは、ファ
イルについてのファイルチャンネルデータ構造419が
そのファイルについてのパス名を暗に表す、という事実
を利用している。
【0227】このことから、「bind」および「mo
unt」オペレーションの記録は、次に示すファイルチ
ャンネルデータ構造間の関係を設立することによって作
成できる。
【0228】すなわち、「bind」オペレーション又
は「mount」オペレーションにおいて用いられた旧
パス名によって表されるファイルを表すファイルチャン
ネルデータ構造419と、「bind」オペレーション
において用いられた新しいパス名によって指定されるフ
ァイルを表すファイルチャンネルデータ構造419、又
は「mount」オペレーションにおいて用いられたフ
ァイル記述子に対応するファイルチャンネルデータ構造
419との間の関係である。
【0229】もちろん、これらのファイルチャンネルデ
ータ構造419は全て、現プロセスグループ103がそ
の名前をそこから受け継いでいる元のプロセスグループ
103内のどれかのプロセス102に接続されているフ
ァイル、又は、現プロセスグループ103内のどれかの
プロセス102によって接続されているファイルを表
す。
【0230】図8は、本発明の一実施例において実現さ
れたマウントテーブル(MT)801の一部分を示す。
マウントテーブル801の構成要素は、マウントテーブ
ルアレイ806から探索され、マウントテーブルアレイ
806は、ユ−ザデータ構造403から探索される。図
8に示すように、ユ−ザデータ構造403は、プロセス
データ構造(PROC)825を指し示すポインタ82
4を有する。
【0231】各プロセス102は、ユ−ザデータ構造4
03とプロセスデータ構造825とを有する。ユ−ザデ
ータ構造403のポインタ824は、プロセス102の
プロセスデータ構造を指し示す。プロセスデータ構造8
25は、更に又、マウントサービス待ち行列構造509
内のポインタ511によっても指し示され、又自分自身
プロセスグループデータ構造(PRGRP)827を指
し示すポインタを有する。
【0232】プロセスグループデータ構造827は、プ
ロセス102が属するプロセスグループ103を表す。
そして、プロセスグループデータ構造827は、マウン
トテーブルアレイ806を指し示すポインタ829を有
し、以上により、ユ−ザデータ構造403が属するプロ
セス102についてのマウントテーブル801の探索が
可能となる。
【0233】マウントテーブルアレイ806は、新しい
パス名又はファイル記述子が連結される連結先の旧パス
名についてのエントリ(MTE)803を有する。与え
られたマウントテーブルエントリ803は、2個のポイ
ンタを有する。そのうちのポインタ805は、旧パス名
によって指定されるファイルを表すファイルチャンネル
データ構造419を指し示すポインタである。マウント
テーブル801内の位置関係において左側にある、これ
らファイルチャンネルデータ構造419を左チャンネル
(LCHAN)802と名付ける。
【0234】マウントテーブルエントリ803の他方の
ポインタ807は、マウント構造809を指し示すポイ
ンタである。各マウント構造809は、1つの「bin
d」又は「mount」オペレーションの結果を表す。
マウント構造809の内容は、下記からなる。 ・「参照」フィールド811。これは、マウントテーブ
ルエントリ803によって指し示されているチャンネル
以外の左チャンネルがマウント構造を使用中かどうかを
表示する。
【0235】・「終結」フィールド813。これは、マ
ウント構造809が結合ディレクトリを定義するマウン
ト構造809のリスト内で最後のマウント構造かどうか
を表示する。 ・「MOUNT ID」(マウント識別子)フィールド
815。これは、このマウント構造809についての、
したがってマウント構造809によって表される「bi
nd」又は「mount」オペレーションの結果につい
ての、独自の識別子である。
【0236】・「ポインタ」817。もしマウント構造
809が結合ディレクトリを定義するマウント構造80
9のリストの一部分であり且つこのリスト上の最後のマ
ウント構造データはない場合、ポインタ817は、リス
ト上の次のマウント構造を指し示す。
【0237】・「ポインタ」819。このポインタは、
新しいパス名によって(又は、「mount」の場合に
は、ファイル記述子によって)識別されるファイルを表
すファイルチャンネルデータ構造419を指し示す。マ
ウントテーブル801内の位置関係において右側にあ
る、これらファイルチャンネルデータ構造419を右チ
ャンネル(RCHAN)804と名付ける。
【0238】上記から判るように、各マウントテーブル
エントリ803は、1つの左チャンネル802と1つ以
上の右チャンネル804との間の関係を設立する。
【0239】これに加えて、「mount」又は「bi
nd」オペレーションが理由でパス名の意味が変更され
たファイルを表すファイルチャンネルデータ構造419
においては、「MOUNT PTR」(マウントポイン
タ)フィールド327は、「mount」又は「bin
d」オペレーションを表すマウント構造809を指し示
し、「MOUNT ID」(マウント識別子)フィール
ド329は、そのマウント構造809についてのマウン
トID(マウント識別子)815を有する。
【0240】更に、プロトコルサービス209によって
与えられるファイルを表すファイルチャンネルデータ構
造419は、そのファイルを与えるプロトコルサービス
209への接続のため、プロトコルチャンネル517を
指し示すポインタ823をプロトコルチャンネルフィー
ルド337に有する。
【0241】図8は又、どのようにして「mount」
及び「bind」機能の「置換」、「前」及び「後」オ
プションの実現が、マウントテーブル801によって許
されるかを示す。
【0242】「置換」オプションの場合、新しいパス名
を表す右チャンネル804を指し示すマウント構造80
9が、マウント構造809のリストを置換する。「前」
オプションの場合は、マウント構造809のリストの先
頭にそのマウント構造809が追加される。もしマウン
ト構造809のリストがない場合は、エラーとなる。
「後」オプションでは、マウント構造809がマウント
構造のリストの末尾に追加される。ここでも、リストが
ない場合にはエラーとなる。
【0243】結合ディレクトリが探索される場合には、
探索は、リスト中の第1のマウント構造809によって
指し示される右チャンネル804によって表されるディ
レクトリから始まる。次に探索されるディレクトリは、
リスト中の第2のマウント構造809によって指し示さ
れる右チャンネル804によって表されるディレクトリ
であり、以下も同様である。
【0244】したがって、もし左チャンネル802
(a)がパス名「/M」を表し、右チャンネル804
(a)が「/M」に連結された第1のサービス123か
らの第1ルートディレクトリを表し、右チャンネル80
4(b)が「/M」に連結された第2のサービス123
からの第2ルートディレクトリを表す場合、「chdi
r(「/M/」)」のようなファイル探索機能において
は、「O」の探索を最初に第1のルートディレクトリに
おいて行い、もしそこで見出されない場合には第2のル
ートディレクトリにおいて探索することになる。
【0245】前に述べたように、プロセス102が「フ
ォークグループ」システムコールを実行するときにはい
つも、プロセス102についての新しい名スペース15
が形成される。「フォークグループ」システムコール
は、単一の主題項目を取る。
【0246】もし主題項目が「0」以外の値を取る場
合、「フォークグループ」システムコールを実行中のプ
ロセス102についての現存の名前スペースは、新しい
名前スペース115へはコピーすべきではない。もし主
題項目が「0」の値を取る場合、「フォークグループ」
システムコールを実行中のプロセス102についての現
存の名前スペースは、新しい名前スペース115へはコ
ピーすべきである。
【0247】「フォークグループ」システムコールが非
「0」主題項目で実行される場合、「フォークグルー
プ」システムコールは、単に新しいプロセスグループ構
造827とプロセス102についての新しいマウントテ
ーブルアレイ806とを形成する。それから、マウント
テーブルエントリ803が、新しい名前スペース115
を定義する「bind」及び「mount」オペレーシ
ョンについての必要に合わせて形成される。
【0248】もし「フォークグループ」システムコール
が「0」主題項目で実行される場合、「フォークグルー
プ」システムコールを実行するプロセス102について
のマウントテーブルアレイ806内のマウントテーブル
アレイエントリ803は、新しいマウントテーブルアレ
イ806内へコピーされる。
【0249】これがすむと、与えられたマウントテーブ
ルアレイエントリ803によって指し示される各左チャ
ンネル802内の「REF」(参照カウント)フィール
ド307と、そのエントリによって指し示される各マウ
ント構造809内の「REF」(参照)フィールド81
1とが、増値される。
【0250】上記から判るように、本発明の一実施例に
おけるマウントテーブル801の実現により、プロセス
についての新しい名前スペース115形成が、比較的効
率のよい廉価なオペレーションとなる。
【0251】図9は、ファイル樹木617(図6)につ
いてのマウントテーブル901の全体を示す。図中、チ
ャンネルデータ構造301は、長手の矩形で表される。
チャンネルデータ構造301上のラベルは、チャンネル
データ構造301によって表されるファイルのパス名を
表示する。第1のマウントテーブルアレイエントリ80
3(b)は、ルート部「/」における「bind」及び
「mount」オペレーションの結果を記録する。
【0252】ルート部「/」を表す左チャンネル802
(b)は、マウントテーブルアレイエントリ803
(b)及び2つのマウント構造809(c)、809
(d)を介して2つの右チャンネルに接続される。これ
ら2つの右チャンネルのうちの1つは804(c)で、
核ルートサービスによって与えられるファイル樹木のル
ート部についてのものであり、他の1つは「#M1」が
接続されるプロトコルサービス209によって与えられ
るファイル樹木のルート部についてのものである。
【0253】右チャンネル804(d)内のプロトコル
チャンネル・ポインタ337は、ルート部への接続を表
すプロトコルチャンネル517を指し示す。
【0254】第2のマウントテーブルアレイエントリ8
03(c)は、左チャンネル802(c)によって表さ
れる「#/bin」における「bind」オペレーショ
ンの結果を記録する。左チャンネル802(c)は、
「#M1/68020/bin」を表す804(e)
と、「#M1/lib/rc」を表す804(f)との
2つの右チャンネルに接続される。
【0255】右チャンネル804(e)及び804
(f)によって表されるファイルは、「#M1」が接続
されるプロトコルサービス209によって与えられるの
で、これらの右チャンネルはいずれも、プロトコルサー
ビス209への接続を与えるプロトコルチャンネル51
7を指し示すプロトコルチャンネル・ポインタ337を
有する。
【0256】更に、左チャンネル802(c)によって
表されるファイルのパス名「#/bin」は、パス名
「#/」を含む。そのディレクトリファイルは、左チャ
ンネル804(c)によって表される。したがって、左
チャンネル802(c)の「MOUNT PTR」(マ
ウントポインタ)フィールド327は、マウント構造8
09(c)を指し示すポインタを有し、マウント構造8
09(c)は、右チャンネル804(c)を指し示すポ
インタを有する。
【0257】マウントテーブル901の残りの部分から
判るように、右チャンネル804によって表される構成
要素を含むパス名を表すマウントテーブル901内の各
ファイルチャンネルは、その構成要素を表すその右チャ
ンネル804を指し示すマウント構造809に対して
「MOUNT PTR」(マウントポインタ)フィール
ド327内のポインタを有する。
【0258】すなわち、左チャンネル802(c)、8
02(d)、及び802(e)は、全てが、「#/」を
含むパス名でファイルを表し、全てがマウント構造80
9(c)を指し示す。一方、右チャンネル804(e)
及び804(f)は、両方共、「#M1」を含むパス名
でファイルを表し、マウント構造809(d)を指し示
す。
【0259】もちろん、「MOUNT PTR」(マウ
ントポインタ)フィールド327がマウント構造809
を指し示す場合、チャンネルデータ構造301内の「M
OUNT ID」(マウント識別子)フィールド329
は、マウント構造809についてのマウント識別子にセ
ットされる。
【0260】残りのマウントテーブルアレイエントリ8
03(d)及び803(e)は、ビルトイン核サービス
の「bind」オペレーションの結果を、核ルートサー
ビス「#/」によって与えられるスタブファイル樹木の
ディレクトリ(スタブディレクトリ)の「dev」及び
「fd」に記録する。
【0261】これらの場合、各マウントテーブルアレイ
エントリ803は、スタブディレクトリを表す左チャン
ネル802をビルトイン核サービスを表す右チャンネル
804に関連付ける。ビルトイン核サービスは、プロト
コルサービスではないので、右チャンネルは、プロトコ
ルチャンネル517に対するポインタを持たない。
【0262】名前スペース115におけるパス名の解
(図10及び図11) 既に指摘したように、マウントテーブル801は、プラ
ン9のファイルチャンネルデータ構造419が各々、フ
ァイルチャンネルデータ構造419によって表されるフ
ァイルのパス名を暗に表す、という事実を利用してい
る。
【0263】プラン9オペレーティングシステムが、
「bind」、「mount」、「chdir」、又は
「open」のようなファイル探索機能においてパス名
を呈示される場合、パス名は、パス名によって指定され
るファイルを表すファイルチャンネルデータ構造419
を得ることと、ファイルチャンネルデータ構造419を
指し示すポインタを返すこととによって解が得られる。
【0264】プロセス102のファイル樹木117はサ
ービス123によって表されるファイル樹木から構成さ
れるので、パス名の解にはマウントテーブル801と、
各サービス123が応答するサービス要求とが関連す
る。具体的なサービス要求は、「walk」サービスフ
ァイル探索要求であり、或る場合には、「attac
h」サービスファイル探索要求である。
【0265】パス名を解くプラン9核機能を「name
c」(ネーメック)と名付ける。この機能の流れ図を図
10に示す。ステップ1003に示すように、「nam
ec」機能は、主題項目として、パス名、「name
c」機能を用いるシステムコールによって要求されるフ
ァイルアクセスの種類(アクセスモード)についてのコ
−ド、及び「namec」機能によって開かれるファイ
ルがどのように開かれるべきか(オープンモード)を表
示するコ−ドを取る。
【0266】「namec」機能は、チャンネルへポイ
ンタを返す。又、「namec」機能は、パス名中の第
1文字を特別に取り扱うが、それ以外は、パス名を
「/」記号で分けられた名前のリストとして扱う。名前
を各々、「要素」と名付ける。
【0267】「namec」機能の最初の部分1067
においては、パス名が始まる点を表すチャンネル301
が求められる。チャンネルを求める仕方は、どのように
パス名が始まるかによる。これには3つの可能性があ
る。
【0268】・もしパス名が完全なパス名である場合、
「/」で始まる。 ・もしパス名が、ビルトイン核サービスによって与えら
れるファイルを指定し、そのサービスが、別のファイル
名にまだ連結されていない場合、パス名は「#」で始ま
る。 ・もしパス名が作業ディレクトリにおいて始まる場合、
パス名はファイル名で始まる。
【0269】もしパス名が「/」で始まる場合、意思決
定ステップ1005の「YES」分岐が取られ、ルート
部についてのファイルチャンネル419の内容がチャン
ネル301「nchan」にコピーされる(ステップ1
009)。前に述べたように、ルートファイルチャンネ
ル419は、そのプロセスについてのユ−ザデータ構造
403から探索できる。
【0270】もしパス名がほかのもの(「/」以外)で
始まる場合、ステップ1005の「NO」分岐が取ら
れ、ステップ1007において、第1の要素が点検さ
れ、「#」であるかどうかが定められる。もし「#」で
ある場合、「#」に続く記号によって指定される核ビル
トインサービスによって、「attach」サービスフ
ァイル探索要求が実行される。「attach」サービ
スファイル探索要求の結果は、ビルトインサービスによ
って与えられるファイル樹木125のルート部を表すチ
ャンネルデータ構造301である。
【0271】与えられたサービスが「attach」要
求を取り扱う仕方は、もちろんそのサービスによる。例
えば、ルートサービスについての「attach」機能
は、一般的な「attach」機能である「devat
tach」を呼び出す。この機能は、主題項目として、
ビルトインサービスの名前、この場合は「/」、を取
る。
【0272】「devattach」機能は、新しいチ
ャンネルデータ構造301を得て、「QID」フィール
ド323(ファイルハンドル)を、ルート部を指定する
値にセットし、「TYPE」フィールド313を、主題
項目「/」から導かれた値にセットする。
【0273】もし第1の要素が「/」でも「#」でもな
い場合には、パス名は作業ディレクトリにおいて始ま
る。そして、ステップ1013に示すように、作業ディ
レクトリを表すファイルチャンネル419が「ncha
n」にコピーされる。そのファイルチャンネルは、もち
ろんそのプロセスについてのユ−ザデータ構造301か
ら探索可能である。
【0274】「namec」機能のうちの次のステージ
1069は、「nchan」によって表されるファイル
についてのパス名が、「bind」又は「mount」
機能コールにおいて旧パス名として用いられていたかど
うかを見出すステージである。最初に、パス名の次の要
素が求められる。これを行う機能は、ユ−ザデータ構造
403内の「ELEM」(要素)フィールド405を、
次の要素であるファイル名にセットする。
【0275】それから、プロセスグループ103につい
てのマウントテーブルアレイ802が、プロセス102
についてのユ−ザデータ構造403から探索される。各
マウントテーブルアレイエントリ803についての左チ
ャンネル802が「nchan」と比較され、「nch
an」に等しいものが見出されるまで比較が繰り返され
る。
【0276】この場合に、「等しい」の意味は、2つの
チャンネル301が同じサービス123内の同じファイ
ルを表す、すなわちこれら2つのチャンネル301が
「TYPE」フィールド313、「DEV」フィールド
315、及び「QID」フィールド323において等し
い値を有する、ということである。
【0277】もしこのような左チャンネル802が見出
されない場合、意思決定ステップ1019の「NO」分
岐が取られ、見出された場合には、「YES」分岐が取
られる。そして、その左チャンネル802が「ncha
n」に等しいようなエントリ803によって指し示され
る右チャンネル804の内容が、「nchan」へコピ
ーされる(ステップ1021)。
【0278】その後、「nchan」内の「MOUNT
PTR」(マウントポインタ)フィールド327が、
右チャンネル804を指し示すマウント構造809を指
し示すようにセットされ、「MOUNT ID」(マウ
ント識別子)フィールド329が、マウント構造809
の「MOUNT ID」の値にセットされる。
【0279】したがって、もしパス名が「bind」又
は「mount」コールにおいて旧パス名として用いら
れた場合、「nchan」は今や右チャンネル804に
よって表されるファイルを表すことになる。もしそうで
なければ、「nchan」は変わらない。
【0280】図10の「namec」機能のうちの、そ
の次の1071の部分は、パス名における残る各要素を
点検するループ1025からなる。ループを通るごとに
核機能である「walk」(ウオーク)機能へのコール
(呼び出し)が行われる。このコールに用いられる主題
項目は、「nchan」、現要素(ステップ102
9)、及び現在の名前がそのファイルを表す左チャンネ
ル802を有する(これが不可能なのは、核ビルトイン
サービス名の場合のみである)かどうかを表示するフラ
ッグである。
【0281】下に更に詳しく説明するように、「wal
k」機能は、その要素によって指定されるファイルを表
すチャンネル301を返す。そのチャンネル(図10に
おいてtchanと名付ける)が、ステップ1031に
示すように、「nchan」に割り当てられる。それか
ら、次の要素が、パス名から求められる(ステップ10
33)。前と同様に、ユ−ザデータ構造403内の「要
素」フィールド405が、次の要素にセットされる。ル
ープが終ると、パス名の最後の要素が残って処理される
段階となる。
【0282】最後の要素が処理される仕方は、どのシス
テムコールが「namec」機能を呼び出したかによ
る。もしそれが「create」(創設)システムコー
ルだった場合、最後の要素は新しいファイルの名前を表
す。そうでなかった場合は、それはアクセスすべきファ
イルを表す。どのシステムコールが「namec」機能
を呼び出したかは、アクセスモード主題項目によって表
示される。
【0283】そして、意思決定ステップ1055に示す
ように、その後の処理もこの主題項目によるが、ここで
の説明の目的のためには、ステップ1057に示すよう
に、アクセスモード主題項目が、ファイルを創設すべき
ことを表示する場合、最後の要素と「tchan」とを
用いて「create」サービスファイル要求が作成さ
れること、を知っていれば十分である。「tchan」
は、この時点では新しいファイルが創設されるべきディ
レクトリについてのファイルチャンネルデータ構造41
9のコピーである。
【0284】したがって、「tchan」は、その「T
YPE」フィールド313及び「DEV」フィールド3
15に、ディレクトリと「QID」フィールド323内
のディレクトリについての「qid」とを含むサービス
123を指定する値、を有する。「create」サー
ビスファイル要求の結果として、新しいファイルが創設
され、最後の要素にその名前として割り当てられる。そ
して、「tchan」の「QID」フィールドが、新し
いファイルの「qid」にセットされる(ステップ10
57)。
【0285】そうでなければ、最後の要素は、既に存在
するファイルの名前を表す。この場合は、「tcha
n」を得るために最後の要素を用いて「walk」機能
が呼び出される。この「tchan」は、最後の要素に
よって参照されるファイルを表す(ステップ105
9)。
【0286】それから、「tchan」内のフィールド
が、「namec」機能の「アクセス」モード及び「オ
ープン」モード主題項目からの要求に合わせてセットさ
れ(ステップ1061)、「tchan」は「ncha
n」にコピーされる(ステップ1063)。次に、ステ
ップ1065に示すように、「nchan」は、パス名
主題項目に指定されるファイルを表すチャンネル301
として返される。
【0287】図11は、「walk」(ウオーク)機能
の流れ図である。図11の開始ステップ1103から明
らかなように、「walk」機能は、主題項目として、
チャンネルデータ構造301、パス名からの要素、及び
要素への「mount」が正当かどうかを表示するフラ
ッグを取る。
【0288】チャンネルデータ構造301は、要素名を
有するファイルについて探索すべきディレクトリを表
す。もし要素名が、そのディレクトリ内、又はチャンネ
ルデータ構造によって表されるそのディレクトリに結合
されたディレクトリ内に見出される場合、「walk」
機能は、パス名の要素によって指定されるファイルを表
すチャンネルデータ構造301を返す。
【0289】概観すれば、アルゴリズムは次の通りであ
る。まず、主題項目として用いられるチャンネル301
の「TYPE」フィールド313及び「DEV」フィー
ルド315によって指定されるサービスに対して、「w
alk」ファイルサービス要求が行われる。「wal
k」ファイルサービス要求には、主題項目として用いら
れる要素が含まれる。
【0290】もしファイルサービス要求が成功すると、
その要素によって指定されるファイルについてのチャン
ネル301を返す。それから、マウントテーブルが点検
されて、「walk」要求によって返されたチャンネル
301が左チャンネル802かどうかが定められる。も
し左チャンネル802でない場合、「walk」要求に
よって返されたチャンネルは、「walk」機能によっ
て返される。
【0291】もし左チャンネル802である場合、その
左チャンネル802に対応する右チャンネル804が、
チャンネル301へコピーされて、「walk」機能に
よって返される。そして、チャンネル301の「MOU
NT PTR」及び「MOUNT ID」のフィールド
が、左チャンネル802を指し示すマウントテーブルア
レイエントリ803によって指し示されるマウントデー
タ構造809からの要求に合わせてセットされる。
【0292】もしファイルサービスがチャンネルによっ
て指定されたディレクトリ内の要素によって指定される
名前を有するファイルを見出すことができない場合に
は、「walk」ファイルサービス要求は成功しない。
このような場合が生じるには次の2つの理由がある。 ・ディレクトリが、別の名前と連結されていた。 ・要素に対応するファイルが、ディレクトリ内に存在し
ない。
【0293】第1の場合、「MOUNT PTR」フィ
ールド327及び「MOUNT ID」フィールド32
9が、その別の名前が連結されたときに創設されたマウ
ント構造809を指定する。そして、「walk」サー
ビスファイル探索要求が、マウント構造809によって
指し示された右チャンネル804内に指定されるサービ
スについて、再度企図される。
【0294】もし「walk」サービスファイル探索要
求が成功すると、処理は上記のように継続される。もし
不成功の場合、上記の理由のいずれかが存在する可能性
が残る。今度は、要素に対応するファイルがディレクト
リ内に存在しないことが問題であると仮定して、まだ2
つの可能性がある。すなわち、ファイルが実際に存在し
ないか、又は探索されたディレクトリが結合ディレクト
リの一部であり、結合ディレクトリの一部である他のデ
ィレクトリがまだ探索されていない、という可能性であ
る。
【0295】もしファイルが実際に存在しない場合に
は、今探索されたディレクトリについてのマウント構造
809内の「終結」フィールド813は、そのマウント
構造809が、結合ディレクトリを構成するマウント構
造809のリスト中の最後のマウント構造であることを
表示する。
【0296】もしそうでない場合、マウント構造809
の次のフィールド817が、結合ディレクトリ内の次の
ディレクトリについてのマウント構造809を指し示
す。そして、その、次のマウント構造から、探索すべき
右チャンネル804を定めることが可能である。この場
合、「walk」サービスファイル探索要求が、次のマ
ウント構造によって指し示される右チャンネル804を
用いて繰り返される。
【0297】更に詳しく説明すれば、ステップ1105
において、それが、「walk」サービスファイル探索
要求が処理される最初の回であることを表示するように
フラッグ「第1」が「1」にセットされ、主題項目とし
て与えられたチャンネルが「cchan」へコピーされ
る。ステップ1107において、「walk」サービス
ファイル探索要求が、「cchan」とその要素とを用
いて処理される。
【0298】その要求に応答してサービスが行う作業
は、そのサービスによる。ここでは2つの例を説明すれ
ば足りる。ルートサービスが、「walk」要求に応答
して、ルートサービスのルート部に対して予約されてい
る「QID」フィールド323に「cchan」が特別
値を有するかどうかを定め、もし有する場合は、その要
素が、ルートサービスが「スタブ」として与える名前の
うちの1つかどうかを定める。
【0299】もし後者の場合には、「cchan」の
「QID」フィールド323がそのスタブ名のために予
約されている特別値にセットされる。そうでない場合、
「walk」サービスファイル探索要求は不成功であ
る。
【0300】マウントサービス203は、「walk」
要求に対して次のように応答する。前に述べたように、
プロトコルサービス209によって与えられるファイル
を表すチャンネル301の「DEV」フィールド315
の一部は、マウントサービスアレイエントリ503を指
定する識別子を有する。
【0301】その識別子を用いて、マウントサービス2
03は、プロトコルサービス209についてのプロトコ
ルチャンネル517についてのマウントサービス待ち行
列509を探索し、「walk」要求のために必要とさ
れる「tメッセ−ジ」についてマウントサービスヘッダ
521を割り当て、チャンネルからのファイル識別子
と、要素とを、「tメッセ−ジ」に置く。
【0302】もしプロトコルサービス209が、チャン
ネルからファイル識別子によって指定されるディレクト
リ内に要素によって指定される名前付きのファイルを有
する場合、プロトコルサービス209は、そのファイル
についての「qid」を含む「rメッセ−ジ」を返す。
そして、その「qid」は、「cchan」の「QI
D」フィールド323に置かれる。
【0303】もし「walk」要求が成功すると、「c
chan」内のフラッグ321が、チャンネル301が
「mount」又は「bind」オペレーションの結果
ではないことを表示するようにセットされる(ステップ
1119)。次のステップでは、「walk」要求が1
回を超えて(2回以上)処理されたかどうかが定められ
る(1121)。
【0304】もしそうである場合、主題項目として受け
られたチャンネルは、返されたチャンネルではない。そ
して、主題項目として受けられたチャンネルは、閉じら
れる(ステップ1123)。「閉じ」オペレーション
は、そのチャンネルの「REF」(参照)フィールド内
のカウントを減値し、もし「REF」フィールドのカウ
ント値が「0」になる場合は、「clunk」サービス
要求を、そのチャンネルの「DEV」フィールド315
によって表示されるサービスに送り、チャンネル構造3
01を自由リストに返す。
【0305】もしそれがまだ、「walk」要求が処理
される最初の回である場合、このステップ1123は省
略される。次の意思決定ステップ1133においては、
パス名の構成要素が別の構成要素をその上にマウントさ
れてもよいことを「cchan」が表しているかどうか
が定められる。これは、「#」以外の構成要素について
は真であり、「walk」機能の「マウントOK」の主
題項目によって表示される。
【0306】もしマウントされた構成要素がない場合、
マウントテーブル801を調査する必要がなく、「cc
han」はそのまま返される(ステップ1135)。そ
うでない場合、マウントテーブル801が、「ccha
n」に等しい左チャンネル802について点検される。
【0307】もしこのような左チャンネル802が見出
される場合、左チャンネル802に対応する右チャンネ
ル804の値が、右チャンネル804を指し示すマウン
ト構造809についての「MOUNT PTR」及び
「MOUNT ID」フィールドの値と共に、「cch
an」へコピーされる。「cchan」は、このように
修正されたうえで返される(ステップ1137〜114
3)。
【0308】「walk」サービス要求可否点検ステッ
プ1107に戻って、もし要求が不成功の場合、次の最
初のステップでは、「cchan」が「mount」又
は「bind」要求の結果であるかどうかが定められる
(ステップ1109)。もし「YES」の場合、この探
索は不成功で、「walk」機能は、「0」を返す(ス
テップ1149)。ステップ1145及び1147に示
すように、もし「walk」要求が1回よりも多い回数
処理された場合には、「cchan」は閉じられる。
【0309】次に、「cchan」の「MOUNT P
TR」フィールド327の値を用いてマウント構造80
9が探索される(ステップ1111)。もしマウント構
造が結合ディレクトリを定義するマウント構造のリスト
の末尾にあることを、マウント構造809の「終結」フ
ィールド813が表示する場合(ステップ1113)、
探索は不成功で、「walk」機能は終了する。
【0310】そうでない場合、現マウント構造809内
の次のポインタ817に沿って進み、次のマウント構造
809によって指し示される右チャンネル804が、仮
チャンネル(「tchan」と名付ける)へコピーされ
る(ステップ1115、1117)。
【0311】それから、「tchan」内の「MOUN
T PTR」フィールド327が、次のマウント構造を
指し示すようにセットされ(ステップ1125)、「t
chan」が「cchan」へコピーされ(ステップ1
127)、フラッグ「第1」の値が、処理が第1回でな
いことを示す「0」にセットされ(ステップ112
9)、機能はステップ1107に戻って「walk」サ
ービス要求が繰り返される。上記のように、ステップ1
107において「walk」要求が成功するか、又は要
素に対応するファイルが見出されなかったことが明白に
なるまで一連のループ手順が繰り返される。
【0312】ファイル探索オペレーションの実現 プラン9における名前解法が理解されると、「ope
n」、「bind」、及び「mount」のようなファ
イル探索システムコールの実現は簡単である。「ope
n」(開設)についてのシステムコールからまず説明す
ると、システムコールは、パス名と、「open」の方
法を示す「open」モードを指定する整数とを主題項
目として取り、開かれたファイルについてのファイル記
述子417を返す。
【0313】システムコールは最初に、現時点において
チャンネル301を指し示していないファイル記述子ア
レイ413内のエントリ415を探索する。その要素の
番号が、新しく開かれたファイルについてのファイル記
述子である。それからシステムコールは、「name
c」機能を呼び出す。主題項目は、パス名、「ope
n」を指定するアクセスモード指定子、及び「ope
n」のモードである。
【0314】上記のように、「namec」機能は、パ
ス名を解き、パス名によって表示されるサービスが、パ
ス名によって指定されるファイル上でオペレーションを
行うこと、を指定する。又、「namec」機能は、フ
ァイルを表すファイルチャンネル419にチャンネル3
01がなるようにフィールドをセットしてチャンネル3
01を返す。「open」システムコールは、ファイル
記述子によって指定されるファイル記述子アレイエント
リ415内に、ファイルチャンネル419を指し示すポ
インタを置き、ファイル記述子を返す。
【0315】本発明の一実施例における「bind」シ
ステムコールは、主題項目として、新しいパス名を指し
示すポインタ、旧パス名を指し示すポインタ、及び「b
ind」機能が「置換」、「前」、又は「後」オプショ
ン付きで行われているかどうかを表示するフラッグを取
る。「bind」システムコールは又、もし「bin
d」が成功したときに「1」を取り不成功のときに
「0」を取る整数指標を返す。
【0316】「bind」システムコールは、「bin
d」と「mount」との両方の機能を行う「bind
mount」と名付ける核機能を呼び出す。「bin
d」又は「mount」システムコールによって与えら
れるフラッグは、どちらを行うべきかを表示する。
【0317】「bind」システムコールが表示される
と、「bindmount」が、第1のパス名によって
指定されるファイルを表す第1のチャンネル301を得
るために、第1のパス名で「namec」機能を呼び出
し、次に、第2のパス名によって指定されるファイルを
表す第2のチャンネル301を得るために、第2のパス
名で「namec」機能を呼び出す。
【0318】次のステップは、核「mount」機能の
呼び出しである。核「mount」機能は、「bin
d」オペレーションの必要に合わせてマウントテーブル
801を再構成する。
【0319】図12は、核「mount」機能の流れ図
である。ステップ1203に示すように、「moun
t」機能は、主題項目として、旧チャンネル、新チャン
ネル、及びフラッグを取り、「bind」又は「mou
nt」機能から結果として得られるマウント構造809
の「マウントID」を返す。フラッグは、「bind」
又は「mount」システムコールのオプションフラッ
グからセットされる。現在の例の場合、旧チャンネル及
び新チャンネルについての実際の主題項目は、それぞ
れ、第1チャンネル301、及び第2チャンネルであ
る。
【0320】アルゴリズムの第1ステップは、「bin
d」又は「mount」オペレーションが、主題項目と
して受けられたチャンネル301上で実行可能かどうか
を定めることである(ステップ1205)。もし両チャ
ンネルが同じファイルを指定する(すなわち同じ「QI
D」フィールド323を有する)場合、又はもし旧チャ
ンネルがディレクトリではないファイルを表し、フラッ
グが「置換」以外のオプションを指定する場合には、オ
ペレーションは許されない。
【0321】次のステップは、既に述べたように、マウ
ントテーブル801内を探索して、旧チャンネル301
が、既にマウントテーブル801内にある左チャンネル
802に等しいかどうかを定めることである。もし等し
い場合は、新しいマウントテーブルエントリ803は必
要なく、ステップ1211は省略される。もし等しくな
い場合、ステップ1211において、空きマウントテー
ブルアレイエントリ803が得られ、そのエントリ80
3においてポインタ805が旧チャンネルを指し示すよ
うにセットされる。
【0322】次に、新チャンネル301内の「FLA
G」フィールド321が、右チャンネル804であるこ
とを意味する「CMOUNT」を表示するようにセット
される(ステップ1213)。「FLAG」フィールド
321は又、「CREATE」オプションを表示する。
「CREATE」オプションは、ファイルが右チャンネ
ル804によって表されるディレクトリ内に創設される
ことを指定する。
【0323】そのオプションが指定されると、新チャン
ネル301内の「FLAG」フィールド321が、「C
MOUNT」と同様に、「CREATE」オプションを
表示するようにセットされる(ステップ1215、12
17)。それから、「mount」機能が、旧チャンネ
ルに対応する左チャンネル802についてのマウントテ
ーブルエントリを、新チャンネル301から形成される
右チャンネル804とリンクするために新マウント構造
を得る。新マウント構造内のポインタ819が、新チャ
ンネル304を指し示すようにセットされる(ステップ
1219)。
【0324】次は、切り換えステップ1221で、ここ
では、フラッグ主題項目が「置換」、「前」、又は
「後」オプションのどれを表示するかによって、3種類
のパスのうちの1つが指定される。「前」オプションの
パス1223では、ステップ1229において、点検が
行われ、別のディレクトリが既に左チャンネル802に
連結されているかどうかが定められる。
【0325】もし連結されていなければ、結合ディレク
トリの可能性はなく、「前」オプションはエラーとなる
(ステップ1231)。もしこのようなディレクトリが
既に存在する場合、「置換」オプション1225に関し
ての処理が続く。
【0326】この「置換」オプションにおいては、新マ
ウント構造809が、旧チャンネル301に等しい左チ
ャンネル802に対応するマウント構造809のリスト
の先頭に置かれる(ステップ1233)。もし「置換」
オプション1225が行使されると、新マウント構造内
の「終結」フィールド813が、リストの末尾を表示す
るようにセットされる(ステップ1234)。
【0327】3種類のうちの最後の、「後」オプション
1227においては、ステップ1235において、点検
が行われ、結合ディレクトリが可能かどうかが定められ
る。もし可能性がないなら、エラーが生じる(ステップ
1237)。そうでなく、可能性があれば、ステップ1
239に示すように、新マウント構造809が、マウン
ト構造809のリストの末尾に置かれる。そして、新マ
ウント構造809に属する「マウントID」(マウント
識別子)815が返される(ステップ1241)。
【0328】「bindmount」機能について説明
すると、この機能は、旧チャンネル及び新チャンネル3
01を閉じることによって終了し、これらのチャンネル
のいずれもマウントテーブルに追加されなかったこと及
びフリーチャンネルのリストに用いられていないことを
返す。
【0329】「mount」機能システムコールは、新
パス名主題項目がないという点で「bind」機能シス
テムコールと異なる。この場合、新パス名主題項目の代
わりに、オープンプロトコルチャンネル517を表すフ
ァイル記述子417を主題項目として採用している。こ
のようなファイル記述子417を得る方法については下
に詳しく述べる。
【0330】更に、「mount」機能システムコール
は、マウントされつつあるプロトコルサービス209に
送られるデータからなる主題項目を有する。フラッグに
応答して、「bindmount」機能は最初にファイ
ル記述子417とファイル記述子アレイ413とを用い
てファイル記述子主題項目によって指定されるプロトコ
ルチャンネル517を探索する。
【0331】次に、マウントサービス「attach」
(アタッチ)オペレーションが、プロトコルチャンネル
517を用いて行われる。「アタッチ」オペレーション
において最初に行われることは、不使用のマウントサー
ビスアレイエントリ503を探索することである。これ
が行われた後、前に述べた一般的な「devattac
h」オペレーションが行われるが、ここで異なるのは、
システム呼び出しに用いられる主題項目が、マウントサ
ービス203を指定する「M」であるということであ
る。
【0332】「devattach」は、「TYPE」
フィールド313をマウントサービス203を指定する
ようにセットしたチャンネル構造301を返す。そし
て、マウントサービスについての「アタッチ」機能が、
チャンネル内の「DEV」フィールド315を不使用マ
ウントサービスアレイエントリ503についての記述子
の値にセットし、不使用エントリ内のポインタ505
を、チャンネル構造を指し示すようにセットする。
【0333】次に、プロトコルチャンネル主題項目が、
用いられて、この主題項目によって指定されるプロトコ
ルチャンネル517について、マウントサービス待ち行
列構造509によって表されるメッセ−ジ待ち行列が既
に存在するかどうかが定められる。もし存在しなけれ
ば、1つのメッセ−ジ待ち行列が割り当てられる。それ
から、「devattach」によって返されたチャン
ネル301についてのファイル識別子と、プロトコルサ
ービス209に送られることになっていた主題項目と、
を含む「アタッチ」「tメッセ−ジ」が送られる。
【0334】「rメッセ−ジ」が返されると、そのメッ
セ−ジには、プロトコルサービス209内のファイル樹
木125のルート部についてのファイルハンドル「qi
d」を含む。「qid」は、「devattach」に
よって返されたチャンネル301の「QID」フィール
ド323と「MQID」フィールド339とへコピーさ
れる。そして、メッセ−ジ待ち行列が属するプロトコル
チャンネル517を指し示すポインタが、「PCHA
N」フィールド337へコピーされる。
【0335】マウントサービス「アタッチ」オペレーシ
ョンから結果として得られるチャンネルは、新チャンネ
ル301主題項目として、「mount」機能に与えら
れる。「mount」が「bindmount」につい
て指定されると、「bindmount」は、ファイル
記述子アレイ413からプロトコルチャンネル517を
閉じることと、ファイル記述子アレイ413からプロト
コルチャンネル517を削除することとによって、終了
する。
【0336】オープンプロトコルチャンネル517の取得(図13) 「mount」システムコールについての主題項目は、
オープンプロトコルチャンネル517についてのファイ
ル記述子417を有する。プロトコルチャンネル517
は、プロトコルサービス209と接続関係にあるファイ
ルを表すチャンネル301である。本発明の一実施例に
おいて、この接続は、ローカルプロトコルサービス21
1がメッセ−ジを送受するパイプ内のファイル、又は通
信システムを介しての遠隔プロトコルサービス213と
の会話を表すファイル、のいずれかである。
【0337】本発明の一実施例において、パイプ内のフ
ァイルについてのファイル記述子は、パイプを創設する
「パイプ」システムコールによって与えられる。通信シ
ステムを介しての会話を表すファイルについてのファイ
ル記述子は、次のようにして得られる。まず、「ダイヤ
ル」機能が呼び出される。この機能は、会話を表すファ
イルを含むディレクトリのパス名を返す。それから、会
話を表すファイルのパス名が、「open」機能内で使
用され、「open」機能は、会話を表すファイルにつ
いてのファイル記述子を返す。
【0338】プロトコルチャンネル517が「srv」
615においてプロトコルサービス209との接続を表
すそのプロトコルサービス209を「登録」することに
より、プロセス102による一般使用に対してプロトコ
ルチャンネル517が利用可能となる。
【0339】これは全てのサーバについて成り立つの
で、「srv」615によって、ファイルとして管理で
きるリソースが提供されることとなる。したがって、プ
ロトコルサービス209を「srv」615に登録する
ためには、「srv」によって表されるディレクトリ内
でプロトコルサービス209を表すファイルを創設し、
ファイルを創設するための接続を表すファイルについて
のファイル記述子を書き込む。
【0340】もちろん、「create」機能の呼び出
しを行うとその結果、「srv」への「create」
ファイル要求を行うことになり、「srv」がこの要求
に応答して、ファイルについてのディレクトリエントリ
を行い、ディレクトリエントリについての「qid」
を、創設されたファイルについてのチャンネル301の
フィールド323に置き、ディレクトリエントリを指し
示すポインタを、「AUX」フィールド333に置く。
【0341】「write」機能の呼出も同様に、結果
として「srv」への「write」ファイル要求とな
り、「srv」が「write」ファイル要求に応答し
て、ファイル記述子によって指定されるプロトコルチャ
ンネル517を指し示すポインタを、プロトコルサービ
ス209についてのディレクトリエントリに置く。
【0342】プロトコルサービス209を表すファイル
の名前を用いて「open」システムコールが行われる
と、結果としての、「srv」615への「open」
ファイル要求により、プロトコルサービス209につい
てのプロトコルチャンネル517が「srv」615か
ら返される。それから、既に述べたように、「ope
n」機能は、プロトコルチャンネル517にファイル記
述子417を与える。そして、ファイル記述子417は
「mount」システムコールに用いられる。
【0343】図13は、プロトコルサービス209を登
録するために「srv」サービス615によって用いら
れるデータ構造1301である。「srv」サービス6
15によって維持されるディレクトリは、ディレクトリ
・エントリ1303の樹木から構成される。各ディレク
トリ・エントリ1303は、ディレクトリ情報1305
及びいくつかのポインタを有する。
【0344】ポインタは、ディレクトリ・エントリ13
03を樹木の形に編成する。樹木の各レベルには1つ以
上のディレクトリ・エントリ1303があり、或る与え
られたレベルにおけるディレクトリ・エントリ1303
は、内部ノード、すなわち樹木の次のより低いレベルに
つながる点、又はプロトコルサービス209を表す葉部
ノード、のいずれかである。内部ノードを以後、「親」
と名付ける。
【0345】与えられた「親」を有するエントリ130
3は、次方向ポインタ1311及び逆方向ポインタ13
13によって子リスト1310に接続される。そのう
え、与えられた子リスト1310内の各エントリ130
3は、その親エントリ1303を指し示すポインタ13
09を有する。親エントリ1303は更に、子リスト1
310内の第1のエントリ1303を指し示すポインタ
1307を有する。
【0346】葉部ノードは、その葉部ノードによって表
されるプロトコルサービス209への接続を表すプロト
コルチャンネル517を指し示すポインタ1314を有
する。更に、エントリ1303がチャンネル301によ
って表されるときは、そのチャンネル301内の「AU
X」フィールド333は、そのチャンネルによって表さ
れるエントリ1303を指し示すポインタ1302を有
する。
【0347】ディレクトリ情報は、次のフィールドを有
する。 ・「NAME」(名前)1315:プロトコルサービス
209が登録されるときにそのプロトコルサービス20
9を識別するために用いられる名前である。 ・「QID」1317:ディレクトリを表すチャンネル
301におけるディレクトリ・エントリ1303を表す
ファイルハンドル「qid」である。 ・「TYPE」フィールド1319及び「DEV」フィ
ールド1321:「srv」615を指定する。
【0348】・「MODE」1323:エントリ130
3によって表されるディレクトリが開かれたときに、オ
ープンモードを表示するようにセットされる。 ・「ATIME」1325:エントリ1303が何時割
り当てられたかを表示する。 ・「MTIME」1327:エントリ1303の親が何
時割り当てられたかを表示する。もしエントリ1303
が親の場合、子が創設された最新の時点を表示する。
【0349】・「LENGTH」1329:もしエント
リ1303が親の場合、子エントリ1303の数を表示
する。 ・「UID」1331:エントリ1303を所有するユ
−ザに名前を付ける、記号列からなる値。 ・「GID」1333:「UID」1331において識
別されたユ−ザの属するグループを識別する、記号列か
らなる値。
【0350】以上、プラン9オペレーティングシステム
において如何にしてプロセスごとの名前スペースを実現
するか、如何にして名前スペースが「bind」及び
「mount」オペレーションによって修正されるか、
如何にして名前スペースがローカルファイルに用いられ
るか、そしてこのようにして探索され見出されたファイ
ル上で如何にしてファイルオペレーションが行われる
か、について説明した。次に、プロセスごとの名前スペ
ースについての有利な用法について説明する。
【0351】送出ファイルサービス(exportf
s)の概観(図14) 上記プラン9システムにおいて、サービス123は、プ
ロセス102の名前スペース115における「moun
t」(マウント)用にファイル樹木の全体しか与えるこ
とができない(上記「プラン9サービスのアーキテクチ
ャの概観」の項参照)。以下に説明する改善によって、
或る1つのプロセス102の名前スペースの一部分で、
別のプロセス102の名前スペースにマウントすべき部
分、を与えるサービス123が得られる。この新サービ
ス123をここでは送出ファイルサービス(expor
tfs)と名付ける。
【0352】図14は、1つのプロセス102(b)が
その名前スペース115(b)の一部分(NSP)14
01を別のプロセス102(a)に送出する場合の2つ
のプロセス102の間の関係を示す。プロセス102
(a)は、この送出された部分を自身の名前スペース1
15(a)にマウントする。
【0353】上記の「プラン9サービスのアーキテクチ
ャの概観」及び「核サービス及びプロトコルサービス」
の項で図1及び図2を参照して述べたように、プラン9
のファイルシステム109は、プロセス102からのフ
ァイルアクセス機能コール(呼び出し)105に応答し
てファイルアクセスオペレーションを行うファイルアク
セス機能成分111と、プロセス102からのファイル
探索機能コール107に応答してファイル探索オペレー
ションを行うファイル探索機能成分113とを有する。
【0354】ファイルアクセス機能コール105は、ア
クセス中のファイルを表すチャンネルデータ構造301
を指定する小さい整数であるファイル記述子417によ
ってアクセスすべきファイルを指定する。ファイル探索
機能コールは、パス名によって探索すべきファイルを指
定する。
【0355】プラン9システムにおいては、ファイル
は、いくつものサービス123によって与えられる。フ
ァイルシステム109がプロセス102からファイルオ
ペレーション機能コールを受けると、ファイルシステム
109は機能コールをそのファイルを与えるサービス1
23についてのサービスファイルオペレーション要求に
変換する。
【0356】機能と同じく、サービスファイルオペレー
ション要求にも2つの種類がある。すなわち、サービス
ファイルアクセス要求119及びサービスファイル探索
要求121である。全てのサービス123は、「プラン
9サービスのアーキテクチャの概観」の項に述べたサー
ビスファイルオペレーションのセットを取り扱うことが
できなければならない。
【0357】多くのサービス123は、上記「核サービ
ス及びプロトコルサービス」の項で述べたプラン9プロ
トコルに応答してサービスファイルオペレーションを行
う。これらのサービスを、プロトコルサービス209と
名付ける。プロトコルは、プロセス間通信によって、又
はネットワ−ク経由のメッセ−ジによって、プロセスと
プロトコルサービスとの間で転送される。
【0358】サービスファイルオペレーション要求とプ
ラン9プロトコルとの間の変換は、マウントサービス2
03によって管理される。マウントサービス203とプ
ロトコルサービス209との間でのプラン9プロトコル
搬送用のチャンネルを、プロトコルチャンネル517と
名付ける。
【0359】ファイルシステム109のファイル探索機
能成分113は、現にプロセス102に利用可能な樹木
を、名前スペース115へ編成する。名前スペース11
5においては、樹木はファイル名によって単一のファイ
ル樹木に編成される。名前スペース115は、プラン9
「bind」及び「mount」機能コールによって修
正できる。
【0360】「bind」機能コールは、名前スペース
115内に既にある名前相互間の関係を変更する。「m
ount」機能コールは、名前スペースに既にある名前
を、サービス123によって与えられるファイル樹木の
ルート部と同等にする。すなわち、「mount」機能
は、サービスによって与えられたファイル樹木をプロセ
スの名前スペース115に追加する。
【0361】図14に示すように、符号(参照番号)1
405は、取込側プロセス102(a)、その、名前ス
ペース115(a)を含むファイルシステム109
(a)、及びマウントサービス203(a)を含むサー
ビス123(a)である。又、符号1407は、送出側
プロセス102(b)、その、名前スペース115
(b)を含むファイルシステム109(b)、及びマウ
ントサービス203(b)を含むサービス123(b)
である。
【0362】マウントサービス203(a)は、プロト
コルチャンネル517によってプロセス102(b)に
接続される。プロトコルチャンネル517は、プラン9
プロトコルを、マウントサービス203(a)とプロセ
ス102(b)との間で直接変換する。
【0363】取込側プロセス102(a)は、何かのプ
ログラムを実行中であり、送出側プロセス102(b)
は、送出ファイルサービスコ−ド1409を実行中であ
るとする。送出ファイルサービスコ−ド1409を実行
すると、プロセス102(b)は、送出ファイルサービ
スになる。
【0364】この送出ファイルサービスは、すなわちプ
ロトコルチャンネル517を介して受けた名前スペース
115(a)の一部分1401内のファイルを指定する
プラン9プロトコルを、その名前スペース115(b)
の一部分(NSP)1401内のファイルを指定するフ
ァイル機能コール105、107に変換できるプロトコ
ルサービス209である。
【0365】その結果、プロセス102(a)がプロト
コルチャンネル517に対応するチャンネルを、名前ス
ペース115(a)のディレクトリ「P」上にマウント
すると、名前スペースの一部分1401は、名前スペー
ス115(a)の一部分となる。
【0366】したがって、「mount」機能の実行後
は、プロセス102(a)は、プロセス102(b)の
名前スペース内のパス名「/O/I/J/L」によって
指定されるファイルを探索するのにパス名「/P/Q/
J/L」を使用することができる。そして、プロセス1
02(a)によってファイル「/P/Q/J/L」上で
行われるファイルアクセスオペレーションは結果とし
て、プロセス102(b)においてパス名「/O/I/
J/L」によって指定されるファイル上で行われるファ
イルアクセスオペレーションとなる。
【0367】プロセス102(b)が送出ファイルサー
ビスコ−ド1409を実行中の場合、プロセス102
(b)は、名前スペース115(b)のどのサブ樹木で
も(名前スペース115(b)の全てを含む)プロトコ
ルチャンネル517を介してプロセス102(a)に与
えることができる。そして、プロセス102(a)は、
「mount」機能を用いて名前スペース115(a)
内のどのディレクトリにでもこのサブ樹木をマウントで
きる。
【0368】本発明の一実施例において、プロセス10
2(a)及びプロセス102(b)が通信ネットワ−ク
によって接続される別個のコンピュータシステム141
1及び1413上でプログラムを実行中であるとする。
図14に示すプロセス102(b)とプロセス102
(a)との名前スペースの間の関係は、次のようにセッ
トアップされる。
【0369】まず、プロセス102(a)がプラン9
「ダイヤル」機能を用いて、プロセス102(b)が作
動しようとするコンピュータシステム1413にダイヤ
ルする。「ダイヤル」機能の主題項目は、システム14
13のネットワ−ク名、及び接続を設立すべき先のプロ
トコルサービスの名前、この場合送出ファイルサービ
ス、である。
【0370】「ダイヤル」機能が成功すると、機能は、
システム1413によって与えられるサービス123に
ついてファイルオペレーションを行うことのできるチャ
ンネルについてのファイル記述子を返す。そして、この
オペレーションについてのプラン9プロトコルが、プロ
トコルチャンネル517上を移動する。
【0371】コンピュータシステム1413上で「リス
ナー(聴取者)」と名付けられるプロセスがネットワ−
クから受信されたメッセ−ジに応答して、メッセ−ジに
指定されるサービスを実行するためのプロセスを生成す
る。今の場合に生成されるプロセスはプロセス102
(b)で、プロセス102(b)は、送出ファイルサー
ビスコ−ド1409を実行する。プロセス102(b)
の名前スペース115(b)は、プロセス102(a)
がシステム1411において作動している対象のユ−ザ
についてのシステム1413上の名前スペースである。
【0372】本発明の一実施例において、システムの各
ユ−ザは、ユ−ザがシステムにログインすると実行され
る、「プロフィル」ファイルを有する。「リスナー」が
プロセス102(b)を生成すると、「リスナー」は、
プロセス102(b)をして、「ダイヤル」機能が実行
された対象の、システム1411内のユ−ザについて、
システム1413内で「プロフィル」ファイルを実行さ
せる。
【0373】そのユ−ザについての「プロフィル」ファ
イル内の「bind」及び「mount」機能コール
が、プロセス102(b)についての名前スペース11
5(b)を構築する。
【0374】「プロフィル」ファイルは更に、プロセス
102(b)によって用いられる標準入力及び標準出力
ファイルをセットするコールを有する。このセットアッ
プは、標準入力ファイルからの読み取りがプロトコルチ
ャンネル517からの読み取りであり、標準出力ファイ
ルへの書き込みがプロトコルチャンネル517への書き
込みであるように行われる。
【0375】プロセス102(b)の名前スペース11
5(b)及び標準入力出力チャンネルをこのようにセッ
トアップしてから、プロセス102(b)は、送出ファ
イルサービスコ−ド1409の実行を開始する。
【0376】一方、プロセス102(a)は、「ダイヤ
ル」機能によって与えられるチャンネルを用いて、「w
rite」(書き込み)オペレーションを行う。書き込
まれるのは、名前スペース115(a)に取り込まれる
べきファイル樹木のルート部の名前スペース115
(b)内のパス名である。すなわち、図14の例では、
「書き込み」オペレーションにおけるパス名は、「/O
/I」である。
【0377】プロセス102(b)は、プロセス102
(a)がパス名を書き込んだチャンネルにおいて読み取
り中である。プロセス102(b)がパス名を受信する
と、プロセス102(b)は、送出ファイルシステムコ
−ド1409内の初期設定コ−ドを実行する。これによ
って、ディレクトリ「I」1403を、プロセス102
(b)によってプロセス102(a)に与えられつつあ
るファイル樹木のルート部にする作業が有効に行われ
る。このコ−ドについては、後に更に詳しく述べる。
【0378】もし初期設定が成功すると、プロセス10
2(b)は、プロセス102(a)によって指定される
ファイル樹木上でのファイルオペレーションの実行準備
ができたことを表示する確認メッセ−ジをプロセス10
2(a)に送る。それから、プロセス102(a)は、
「ダイヤル」機能から受けたチャンネルを、名前スペー
ス115(a)内の望むディレクトリ、この場合はディ
レクトリ「Q」1404、上にマウントする。
【0379】確認メッセ−ジを送った後、プロセス10
2(b)は、プロセス102(a)と接続されているチ
ャンネル上で読み取りオペレーションを行うループに入
る。プロセス102(a)は、名前スペースの一部分1
401内のファイル上でオペレーションを行おうと望む
都度、プロセス102(a)は機能コール105又は1
07を行う。
【0380】この機能コールは、ファイルシステム10
9(a)によってマウントサービス203(a)へのサ
ービスファイル要求に変えられる。そして、マウントサ
ービス203(a)は、このサービスファイル要求を、
同等のプラン9ファイルプロトコルについての「tメッ
セ−ジ」(送信メッセ−ジ)に変換する。
【0381】「tメッセ−ジ」は、プロトコルチャンネ
ル517を介してシステム1413に送られ、そこでプ
ロセス102(b)によって直接に受信される。プロセ
ス102(b)は、この「tメッセ−ジ」を、「tメッ
セ−ジ」内で指定されたオペレーションを実行するため
に名前スペース115(a)において要求されるファイ
ル機能コール105又は107に変換する。
【0382】ファイル機能コール105又は107がオ
ペレーションを完了すると、プロセス102(b)は、
「rメッセ−ジ」を、プロトコルチャンネル517を介
してプロトコル02(a)に返す。マウントサービス2
03(a)がこの「rメッセ−ジ」を受信すると、マウ
ントサービス203(a)は、「tメッセ−ジ」を生成
した元のサービスファイル要求に応答して、「rメッセ
−ジ」の内容をファイルシステム109(a)に与え
る。
【0383】そして、ファイルシステム109(a)
は、サービスファイル要求を生成した機能コールに応答
して、この「rメッセ−ジ」の内容をプロセス102
(a)に与える。
【0384】したがって、プロセス102(a)から見
ると、プロセス102(b)の名前スペースの一部分1
401内のファイル上でのオペレーションは、名前スペ
ース115(a)内の他のファイル上でのオペレーショ
ンと異ならない。そして、プロセス102(b)は、送
出ファイルサービスコ−ド1409を実行しながら、実
は、名前スペースの一部分1401内のファイル樹木に
ついてのプロトコルサービスとしてオペレーションを行
っていることになる。
【0385】送出ファイルサービスの詳細(図15) 図15に、プロトコルサービスの一種である、「送出フ
ァイルサービス」1501の実施例の詳細を示す。送出
ファイルサービス1501の構造は、次の2つの要件の
結果として得られたものである。
【0386】・送出ファイルサービスは、名前スペース
115(a)に出現するパス名に基づくプラン9プロト
コルを、名前スペース115(b)に出現するパス名に
基づくファイル機能コール105及び107に変換でき
なければならない。・送出ファイルサービスは、非閉塞
性(ノンブロッキング)でなければならない。すなわ
ち、ファイル機能コール105又は107が値を返す前
に新しい「tメッセ−ジ」を取り扱うことができなけれ
ばならない。
【0387】後に更に詳しく述べるように、上の第1の
要件は、プロトコルインタプリタデータベース構造(P
IDS)1517によって取り扱われる。プロトコルイ
ンタプリタデータベース構造1517によって、名前ス
ペース115(a)内の名前スペースの一部分1401
についてのパス名と、名前スペース115(b)内の名
前スペースの一部分1401についてのパス名との間
の、マッピングが得られる。
【0388】上の第2の要件は、ファイルアクセス機能
「read」、「write」及び「open」が、閉
塞性(ブロッキング)であるという事実から来ている。
すなわち、これらの機能のうちの1つを実行するプロセ
スは、ファイルシステム109及びサービス123が
「open」、「read」、又は「write」オペ
レーションが実際に完了するまで実行を一時停止する。
【0389】例えば、もし読み取られているファイル
が、キーボード又はマウスのような入力装置である場
合、「read」オペレーションは、入力装置のユ−ザ
が実際にデータを入力しないうちは完了しない。明らか
に、プロセス102(b)は同じ名前スペース部分14
01内の他のファイル上でのオペレーションを指定する
プラン9プロトコルへの応答を終止できない。理由は、
ユ−ザがデータを入力装置に入力してしまうまで一時停
止状態に置かれているからである。
【0390】本発明の一実施例においては、この問題
は、従プロセスを用いることによって解決される。図1
5のプロセス102(b)には、このような1組(セッ
ト)の従プロセスが利用可能である。
【0391】プロセス102(b)が、閉塞性のファイ
ルアクセス機能コール105に変換しなければならない
「tメッセ−ジ」を受信する都度、プロセス102
(b)は、プロトコルに応答するために行うべき仕事を
従プロセス1515に回し、この従プロセス1515
は、プロトコルを適切なファイルアクセス機能コールに
変換する。そして、ファイルアクセス機能が実行を完了
すると、従プロセスによって実行されたコ−ドが、結果
を適切な「rメッセ−ジ」に変換して、プロトコルチャ
ンネル517に与える。
【0392】図15について更に詳しく説明すると、プ
ロセス102(b)及び従プロセス1515は、図15
においては長円形に表されている。矢印は、これらプロ
セスに出入りするデータ及び命令の流れを表す。破線は
子プロセスを示す。送出ファイルサービスコ−ド(以
下、コ−ドと略称)1409から命令が出されるが、こ
のコ−ド1409は、ここでの説明の目的のためには、
次に示す成分に分割できる。
【0393】・「INIT」(初期設定)1503。こ
れは、プロトコルチャンネル517とプロトコルインタ
プリタデータベース構造1517とをセットアップす
る。 ・「RDLOOP」(読み取りループ)1505。これ
は、プロトコルチャンネル517から「tメッセ−ジ」
1521を読み取る。
【0394】・「PI」(プロトコルインタプリタ)1
507。これは、「tメッセ−ジ」1521をファイル
オペレーション機能コール105及び107に変換す
る。プロトコルインタプリタは、次に示す2つのサブ成
分を有する。 a.「NBPI」(非閉塞性プロトコルインタプリタ)
1509。非閉塞性ファイルオペレーションを指定する
全ての「tメッセ−ジ」を適切なファイルオペレーショ
ン105及び107に変換する。
【0395】b.「BPI」(閉塞性プロトコルインタ
プリタ)1511。これは、「read」、「writ
e」、及び「open」の「tメッセ−ジ」1521
を、「read」、「write」及び「open」の
ファイル機能コール105に変換する。 ・「REPLY」(回答)1513。この成分は、ファ
イルオペレーション機能コール105又は107の結果
を「rメッセ−ジ」に変換し、プロトコルチャンネル5
17に与える。
【0396】送出ファイルサービス1501は、次のよ
うに行われる。プロセス102(b)がコ−ド1409
の実行を開始するとき、プロセス102(b)は既に名
前スペース115(b)を有し、その標準入出力はプロ
トコルチャンネル517に向けられている。実行すべき
コ−ド1409の最初の部分は、「INIT」(初期設
定)1503である。
【0397】この「初期設定」1503は、まずプロセ
ス102(b)をそれ自身の新しいプロセスグループ1
03に置く。その結果、名前スペース115(b)は今
やプロセス102(b)だけに属することとなり、「リ
スナー」プロセスによってプロセス102(b)に与え
られるような、名前スペースにおいてなされる変化は、
名前スペース115(b)には反映されない。更に、プ
ロトコルインタプリタデータベース構造1517の成分
のうちのいくつかについて、記憶域が割り当てられる。
【0398】次に、「初期設定」1503は、プロトコ
ルチャンネル517を読む。この時点では、プロトコル
チャンネル517は送出すべき名前スペースのルート部
の仕様を与える。それから「初期設定」1503は、デ
ィレクトリをルート部の仕様において指定されるファイ
ルに変更し、マッピングを行う「PI」(プロトコルイ
ンタプリタデータベース構造)1517内の、マッピン
グを行う部分を初期設定する。
【0399】「RDLOOP」(読み取りループ)15
05が次に、プロトコルチャンネル517から「tメッ
セ−ジ」1521を読み取る。各「tメッセ−ジ」はバ
ッファ内に置かれ、そのバッファは「プロトコルインタ
プリタデータベース構造」1517に与えられる。
【0400】もし「tメッセ−ジ」が「read」、
「write」、又は「open」オペレーション以外
を指定する場合、プロセス102(b)は、「NBP
I」(非閉塞性プロトコルインタプリタ)1509にお
いてコ−ドを実行し、「読み取りループ」1505から
受信したバッファ内の情報と、「プロトコルインタプリ
タデータベース構造」1517内の情報とを用いて、バ
ッファ内の情報をファイルオペレーション機能コール1
05又は107に変換する。ファイルオペレーション機
能コール105又は107は、前に述べたように、ファ
イルシステム109(b)へ行く。
【0401】もし「tメッセ−ジ」が「read」、
「write」、又は「open」オペレーションを指
定する場合、プロセス102(b)は、従プロセス15
15を1つ取り、バッファをこの従プロセスに回す。す
ると、従プロセス1515は、「BPI」(閉塞性プロ
トコルインタプリタ)1511においてコ−ドを実行
し、バッファの内容と、「プロトコルインタプリタデー
タベース構造」1517の内容とを用いて、バッファ内
の情報を「read」、「write」、又は「ope
n」ファイルアクセス機能コール105に変換する。
【0402】本発明の一実施例において、従プロセス1
515は、軽量級のプロセスで、自分のスタックは有す
るが、メモリ及びファイル記述子テーブルの両方をプロ
セス102(b)と共用する。
【0403】最終的に、ファイル機能コール105又は
107が返されると、「REPLY」(回答)1513
成分においてコ−ドが、ファイル機能コール105又は
107を行ったプロセスによって実行される。
【0404】プロトコルインタプリタデータベース構造
1517の詳細(図16、図17) 以下、プロトコルインタプリタデータベース構造151
7の詳細について述べるが、最初にデータ構造の主要要
素について説明し、次にこれらの要素がどのように組み
合わされるかを示し、最後に、「tメッセ−ジ」152
1のファイル機能コール105又は107への変換と
「rメッセ−ジ」1519の生成とに、データ構造15
17がどのように用いられるか、について述べる。プロ
トコルインタプリタデータベース構造1517は、次に
示す異なる4種類の要素から構成される。
【0405】・「FRSPC」1601。これは、「t
メッセ−ジ」1521から受信されたデータを含む。 ・「FID」1609。これは、名前スペース115
(a)の一部分1401内のファイルを識別するために
マウントサービス203(a)が用いる「FID」(フ
ァイル識別子)331に対応し、ファイルにアクセスす
るために必要な情報を有する。
【0406】・「FS」(ファイル構造)1623。こ
れは、名前スペース115(a)の一部分1401から
名前スペース115(b)の一部分1401へ名前をマ
ッピングするために用いられる。 ・「SPROC」(従プロセス構造)1635。従プロ
セス1515のうちの1つを表す。
【0407】「FRSPC」要素1601から始まり、
このような構造の配列(アレイ)が、送出ファイルサー
ビスコ−ド1409の「NNIT」(初期設定)成分1
503によって割り当てられる。
【0408】コ−ド1409の「RDLOOP」(読み
取りループ)成分1505が実行される都度、アレイ内
の使用中でない(ノンビジー)要素が探索され、プロト
コルチャンネル517から読み取られた「tメッセ−
ジ」1521内のデータが、アレイ内のノンビジー要素
に置かれる。その後この要素は、「tメッセ−ジ」15
21に対応する「rメッセ−ジ」1519が送られるま
で使用中(ビジー)の状態を継続する。
【0409】ここでの説明に関連する「FRSPC」要
素1601のフィールドは3種類である。第1は「BU
SY」フィールド1603で、「FRSPC」1601
が現在使用中であることを表示する。第2は「WOR
K」フィールド1605で、どのような種類の「tメッ
セ−ジ」1521が受信されたかを表示する。最後は
「DATA」フィールド1607で、「tメッセ−ジ」
1521で受信されたデータが含まれる。
【0410】次に「FID」要素1609のフィールド
について説明する。「FD」(ファイル記述子)フィー
ルド1611は、名前スペースの一部分1401内のフ
ァイルにアクセスするためにファイルシステム109
(b)が用いるファイル記述子417である。「OF
F」(オフセット)フィールド1613は、「ファイル
記述子」フィールド1611によって指定されるファイ
ル内の位置を表示する。
【0411】「FSPTR」(ファイル構造ポインタ)
フィールド1615は、「ファイル記述子」フィールド
1611によって指定されるファイルを表す「ファイル
構造」要素1623を指し示すポインタである。「MO
DE」(モード)フィールド1617は、「ファイル記
述子」フィールド1611によって指定されるファイル
のモードを表示する。
【0412】「FID」(ファイル識別子)ファイル6
19は、「ファイル記述子」フィールド1611によっ
てファイルシステム109(b)内に指定されるファイ
ルを表すためにマウントサービス203(a)が用いる
「FID」フィールド331である。最後に、「NEX
T」(次)フィールド1621は、一連の「FID」1
619内の次の要素を指し示すポインタである。
【0413】プロトコルインタプリタデータベース構造
1517の「FS」(ファイル構造)1623のフィー
ルドを次に示す。すなわち、「NAME」(名前)フィ
ールド1625は、名前スペースの一部分1401内の
ファイルの名前である。
【0414】「PQID」(プロトコルQID)フィー
ルド1627は、ファイルシステム109(a)のデー
タ構造において用いるために送出ファイルサービスがフ
ァイルシステム109(a)に与える「QID」フィー
ルド323である。これは、ファイルシステム109
(b)がそのファイルを知るための「QID」フィール
ド323と同じではない。
【0415】残る3種類のフィールド、「PAREN
T」1629、「CHILD」(子)1631、及び
「CHLIST」(子リスト)1633は、他のファイ
ル構造1623を指し示すポインタである。これら3種
類のポインタについては下に詳しく述べる。
【0416】「SPROC」(従プロセス構造)163
5は、連結リスト内の要素の1つで、各々1つの従プロ
セス1515を表す。この要素は3種類のフィールドを
有する。第1は、「PID」(プロセス識別子)フィー
ルド1637で、その要素によって表される従プロセス
1515のプロセス識別子である。「BUSY」(ビジ
ー)フィールド1639は、その要素によって表される
従プロセス1515が現在使用中であることを表示す
る。最後に「NEXT」(次)フィールド1641は、
連結リスト内の次の要素を指し示すポインタである。
【0417】図17は、送出ファイルサービスのオペレ
ーションに際して、図16に示すデータ構造がどのよう
に用いられるかを示す。「FID」(ファイル識別子)
331が「tメッセ−ジ」1521から受信されると、
ハッシング機能1701に与えられ、ハッシング機能1
701は、ファイル識別子331に応答して、チェイン
ポインタ1703を「FID」(ファイル識別子)デー
タ構造1609のチェイン1705に与える。
【0418】チェイン1705内の「FID」データ構
造1609の1つは、「FID」331によって表され
るファイルについてのデータ構造1609であり、「F
ID」フィールド1619内にその「FID」331を
有する。「FID」データ構造1609からの「FSP
TR」(ファイル構造ポインタ)フィールド1615
は、「FID」331によって表されるファイルについ
ての「FS」(ファイル構造)1623を指し示す。
【0419】「FS」(ファイル構造)1623は、フ
ァイル樹木1707に編成される。このファイル樹木1
707は、名前スペース115(b)の一部分1401
内のファイル樹木を表すものである。ファイル樹木17
07が完成すると、名前スペースの一部分1401内の
各ファイルは、ファイル構造1623によって表され、
ファイル構造1623は、対応するファイル樹木が名前
スペースの一部分1401のファイル樹木内で占めるの
と同じスペースをファイル樹木1707内で占める。
【0420】このことは、図17においてブロック16
23内の英字によって表され、これらの英字は、「NA
ME」フィールド1625内の名前を表す。ルートブロ
ック1623は、名前スペースの一部分1401のファ
イル樹木のルートディレクトリの名前スペース115
(b)内の全パス名を含む。すなわち、この場合には、
パス名「/O/I」を含む。
【0421】本発明の一実施例において、ルート部は、
コ−ド1409の「INIT」(初期設定)コ−ド成分
1503によって創設される。初期設定コ−ド成分15
03は、ディレクトリを名前スペースの一部分1401
のルート部に変更した後、現ディレクトリのパス名を
「NAME」フィールド1625に置き、「PQID」
1627フィールドについて「PQID」を作成する。
「PQID」は、ファイル樹木1707に独特な方法で
生成される。
【0422】樹木は、「FS」(ファイル構造)162
3内の3種類のポインタフィールド1629、163
1、及び1633によって編成される。図17に示すよ
うに、「PARENT」ポインタフィールド1629
は、樹木1707内のファイル構造1623に親があれ
ばその親を指し示し、「CHILD」ポインタフィール
ド1631は、樹木1707内のファイル構造1623
に子があればその第1の子を指し示し、「CHLIS
T」ポインタフィールド1633は樹木1707内のフ
ァイル構造1623に次の子があればその子を指し示
す。
【0423】最後に、「SPROC」(従プロセス構
造)1635が、これら従プロセス構造チェイン170
9に編成される。
【0424】送出ファイルサービス1501によって行
われるファイルオペレーション プロセス102(b)がコ−ド1409の「RDLOO
P」(読み取りループ)成分1505の実行を開始する
時点においては、単一のファイル構造1623、すなわ
ちルート部についてのファイル構造、から構成されるよ
うな「FID」(ファイル識別子)チェイン1705も
ファイル樹木1707も、存在しない。名前スペースの
一部分1401が使用できるようになる前に、「att
ach」サービスファイル探索要求が処理されなければ
ならない。
【0425】送出ファイルサービス1501はプロセス
サービス209であるので、送出ファイルサービス15
01において最初に受信される「tメッセ−ジ」152
1は、「attach」オペレーションを指定する「a
ttach」メッセ−ジである。「attach」メッ
セ−ジのうち、ここでの説明で重要な部分は、マウント
サービス203(a)が名前スペースの一部分1401
のルート部を識別するために使用中の、「FID」(フ
ァイル識別子)331である。
【0426】「attach」の「tメッセ−ジ」を受
信すると、コ−ド1409の「RDLOOP」成分15
05は、「FID」331を、「FSRPC」構造16
01の「WORK」フィールド1605に置く。それか
らコ−ド1409の「NBPI」(非閉塞性プロトコル
インタプリタ)成分が、名前スペースの一部分1401
のルート部であるフィールドに対応する「FID」構造
1619を得る。
【0427】「FID」構造1619を得るということ
は、「FID」331についての「FID」構造160
9が存在する筈の「FID」チェインを探索するため
に、「FID」331を「WORK」フィールド160
5からハッシング機能1701に与えることに関連す
る。もし「FID」構造1609が「FID」チェイン
1705内に既にある場合には、ポインタ1615がフ
ァイル樹木1707のルート部であるファイル構造16
23を指し示すことになる。
【0428】そうでなければ、「FID」構造を「FI
D」チェインに追加しなければならない。これは、「F
ID」構造1609を構造のフリーリストから得ること
と、「FID」構造1609を適切な「FID」チェイ
ン1705内に置くこととによって行われる。これが済
むと、「FID」331は、「FID」フィールド16
19に置かれ、「FSPTR」(ファイル構造ポイン
タ)1615がファイル樹木1707のルート部を指し
示すようにセットされる。
【0429】次に、「FID」331と、ルートファイ
ル構造内の「PQID」(プロトコルQID)フィール
ド1627の内容とが、コ−ド1409の「REPL
Y」(回答)成分1513に与えられる。これには、
「FID」としての「FID」331と、マウントサー
ビス203(a)に返される「attach」メッセ−
ジ内の「QID」323としての「PQID」フィール
ド1627とが含まれる。前に「プラン9サービスのア
ーキテクチャの概観」の項で述べたように、「qid」
はサービス123によって与えられるファイルハンドル
である。
【0430】送出ファイルサービス1501の重要な面
は、送出ファイルサービスが、それによってファイルシ
ステム109(b)がファイルを知ることができる「Q
ID」323をでなくて、合成「QID」323である
「PQID」1627を、マウントサービス203
(a)に返す、ということである。後に更に詳しく述べ
るように、必要な場合には、ファイルについての実際の
「QID」323がプロトコル02(a)に与えられる
ように構成される。
【0431】ルートディレクトリがアタッチ(付加)さ
れると、オペレーションは「walk」機能コールによ
ることとなり、これは、この場合には「twalk」t
メッセ−ジとなる。「twalk」tメッセ−ジは、
「FID」331を有し、これはこの時点では、現ディ
レクトリと、現ディレクトリの親又は現ディレクトリの
子の1つのいずれかを表示する名前とを表す。
【0432】「rwalk」rメッセ−ジは、「FI
D」331を有し、これは今や、ウオークされたファイ
ルと、そのファイルの「QID」323とを表す。もし
ディレクトリがアタッチされたばかりであれば、現ディ
レクトリはもちろんルートディレクトリである。
【0433】「twalk」tメッセ−ジがファイルの
名前として「J」を指定すると仮定すると、コ−ド14
09の「NBPI」(非閉塞性プロトコルインタプリ
タ)成分1509は、次のようにオペレーションを行
う。
【0434】すなわち、「NBPI」1509は、「t
walk」tメッセ−ジから「FID」331を用い
て、「FID」データ構造1609(この場合、ルート
部についての「FID」データ構造1609)を探索
し、それから「FSPTR」(ファイル構造ポインタ)
1615に従って、対応するファイル構造1623、こ
こではファイル樹木1707のルート部についてのファ
イル構造、を探索する。
【0435】現在、ファイル樹木1707は、ルート部
だけから構成され、したがって、「CHILD」ポイン
タ1631は「0」にセットされる。この場合には、フ
ァイル「J」についての新しい「FS」(ファイル構
造)1623が割り当てられ且つファイル樹木1707
内の適切な場所に置かれる必要がある。
【0436】最初のステップは、ファイル「J」がルー
トディレクトリの子として存在するかどうかの点検であ
る。これは、ファイル「J」についてのパス名を作るこ
とによって行われる。パス名は、名前「J」を、ファイ
ル樹木1707のルート部を通してファイル「J」の全
ての親の名前と組み合わせることによって作られる。フ
ァイル樹木1707のルート部は名前スペースの一部分
1401についてのルートディレクトリの完全なパス名
を有するので、結果として、ファイル「J」の完全なパ
ス名、この場合「/O/I/J」、が得られる。
【0437】そして、この完全なパス名が、ファイルシ
ステム109(b)への「dirstat」ファイルシ
ステム機能コール105において用いられて、ファイル
が存在することが確認される。ファイル「J」が存在す
るので、次のステップは、新しい「FS」(ファイル構
造)1623を割り当てることである。
【0438】新しいファイル構造1623において、
「NAME」(名前)フィールド1625が、「J」に
セットされ、「PQID」フィールド1627について
の値が生成され、「PARENT」ポインタ1629
が、ルートファイル構造1623を指し示すようにセッ
トされる。ルートファイル構造1623において、「C
HILD」ポインタ1631が、新しいファイル構造1
623を指し示すようにセットされる。
【0439】新しいファイル構造1623がファイル樹
木1707に付加されると、新しいファイル構造を指し
示すポインタが、「FID」331についての「FI
D」構造1609内の「FSPTR」フィールド161
5内に置かれる。そして、コ−ド1409の「回答」成
分1513が、「FID」331を「twalk」メッ
セ−ジから返し、「PQID」1627を、ファイル
「J」についての新しいファイル構造1623から、
「rwalk」メッセ−ジ内の「FID」331及び
「QID」323として返す。
【0440】もちろん、もしファイル樹木1707内に
そのファイルについてのファイル構造1623が既にあ
る場合には、必要なことは、「PQID」1627をそ
のファイル構造1623から、「rwalk」メッセ−
ジ内で返される「QID」323として与えることだけ
である。
【0441】同様に、もしファイル名が、現在のファイ
ルの親であることを表示する「..」の場合には、必要
なことは、ファイル樹木1707内の「FID」331
によって表されるファイルについてのファイル構造16
23を探索すること、親ファイル構造1623を指し示
す「PARENT」ポインタ1629に従うこと、及び
親から「PQID」1627を、「rwalk」メッセ
−ジ内で返される「QID」323として与えることだ
けである。
【0442】名前スペース115(b)内にファイル
「J」が存在するかどうかを定めるために用いられる上
記の方法は、名前スペース115(a)内の、名前スペ
ースの一部分1401からの名前を名前スペース115
(b)内の名前スペースの一部分1401からの名前上
にマッピングするために送出ファイルサービス1501
において用いられる一般的技術の一例である。
【0443】この一般的技術は、ファイルについてのフ
ァイル樹木1707内のエントリを探索するためにその
ファイルについての「FID」構造1609を用い、名
前スペース115(b)内のファイルについて望む完全
パス名を生成するためにファイル樹木1707を用い、
それから、ファイルシステム109(b)へのファイル
探索機能コールにおいてその完全パス名を用いることで
ある。
【0444】名前スペースの一部分1401内にファイ
ルを創設するために、プロセス102(a)は、「cr
eate」機能コールを用いる。その結果、マウントサ
ービス203が「tcreate」tメッセ−ジ152
1を送出ファイルサービス1501に送ることになる。
【0445】「tcreate」tメッセ−ジ1521
には、「FID」331が含まれ、この「FID」33
1は現時点において新ファイルを包含する予定のディレ
クトリと、新ファイルについての名前と、新ファイルに
ついての許可事項とモード、すなわちどのような種類の
オペレーションが新ファイル上で許可されるか、とを表
す。「rcreate」rメッセ−ジは、今や新ファイ
ルを表す「FID」331と、新ファイルについての
「QID」323とを含む。
【0446】コ−ド1409の「RDLOOP」成分1
505が「tメッセ−ジ」を読み取った後、メッセ−ジ
内の情報は、使用中でない「FSRPC」構造の「WO
RK」フィールド1605に置かれて、「NBPI」
(非閉塞性プロトコルインタプリタ)1509に与えら
れる。ここで行われる最初のステップは、「FID」3
31に対応する「FID」構造1609を取り、新ファ
イルが創設されるディレクトリについてのファイル構造
1623を指し示す構造ポインタ1615に従うことで
ある。
【0447】次に、「tメッセ−ジ」で受信された名前
と、ファイル樹木内のファイル構造1623及びその祖
先ファイル内の名前とを用いて、新ファイルについての
完全パス名が作られる。それから、この完全パス名と、
「tcreate」メッセ−ジからのモード及び許可事
項についての情報は、ファイルシステム109(b)へ
のファイルシステム「create」機能コールにおい
て用いられる。
【0448】この「create」コールは、新ファイ
ルについてのファイル記述子を返し、このファイル記述
子は、「FID」331に対する「FID」構造160
9のファイル記述子フィールド1611へコピーされ
る。
【0449】新ファイルが創設されたので、このファイ
ルについて新しいファイル構造1623を作る必要があ
る。新しいファイル構造1623においては、「tcr
eate」メッセ−ジで受信された名前が、「NAM
E」フィールド1625に置かれ、このファイルについ
ての新しい「PQID」が合成されて「PQID」フィ
ールド1627に置かれる。
【0450】そして最終的に、このファイルが創設され
たディレクトリについてのファイル構造1623に対す
る子ファイル構造1623のリストの先頭に、新しいフ
ァイル構造1623が行くように、このファイルについ
ての新しいファイル構造1623内のポインタがセット
される。
【0451】最後のステップは、「FID」331に対
する「FID」フィールド1609内の新ファイルにつ
いてのファイル構造1623を指し示すポインタを置
き、「FID」構造1609内の「MODE」フィール
ド1619を、「tcreate」メッセ−ジデータ受
信された値にセットし、「OFFSET」フィールド1
613を「0」にセットし、そして「rcreate」
メッセ−ジで返すべき、コ−ドの「REPLY」(回
答)成分1513に、「FID」331と「PQID」
1617を与えることである。
【0452】プロセス102(a)によるファイルシス
テム109(a)への「open」ファイルコールの結
果、開かれるべきファイルについての「FID」331
と、このファイルを開く際のモードを指定する値とを含
む「topen」メッセ−ジが得られる。この「top
en」メッセ−ジは、この開かれたファイルについての
「FID」331と「QID」323とを含む。
【0453】「open」ファイルコールは、コールを
行うプロセス102をブロックすることになる。その結
果、プロセス102(b)は、従プロセスチェイン17
09から従プロセス1515を1つ取り、「tope
n」tメッセ−ジから作られた「FSRPC」1601
をこの従プロセス1515に回す。それから、この従プ
ロセスは、この「topen」tメッセ−ジについてコ
−ドを「BPI」(閉塞性プロトコルインタプリタ)成
分1511において実行する。
【0454】「open」オペレーションの場合、開く
べきファイルは、「walk」ファイルコール又は「c
reate」ファイルコールによって既に探索され見出
されている。したがって、開くべきファイルについての
ファイル構造1623を指し示すファイル構造ポインタ
1615を有する「FID」331に対する「FID」
構造1609が存在する筈である。
【0455】このファイルについての「FID」構造1
609及びファイル構造1623が探索され見出される
と、このファイルについての完全パス名が、ファイル樹
木内のこのファイル及びその祖先ファイルについてのフ
ァイル構造1623内の「NAME」フィールド162
5から作られて、「topen」tメッセ−ジからのモ
ードで「open」ファイルコールにおいて用いられ
る。
【0456】「open」ファイルコールは、開かれた
ファイルについてのファイル記述子417を返し、この
ファイル記述子417は、「FID」331に対する
「FID」構造1609の「FD」フィールド1611
内に置かれる。その「FID」構造1609の「MOD
E」フィールド1617が、「tメッセ−ジ」によって
与えられる値にセットされ、「OFFSET」フィール
ド1613が「0」にセットされる。
【0457】「REPLY」(回答)1513が、「r
open」メッセ−ジ内の開かれたファイルについての
ファイル構造1623から「FID」331及び「PQ
ID」フィールド1627を返す。「REPLY」(回
答)1513が実行された後、従プロセス1515に対
する従プロセス構造1635内の「BUSY」フィール
ドが、「0」にセットされる。
【0458】「read」及び「write」ファイル
オペレーションの場合、これらのオペレーションは、既
に探索され見出されて開かれているファイル上で行われ
る。両オペレーションについての一例として、「rea
d」(読み取り)オペレーションについて説明する。
【0459】「read」オペレーションについての
「tメッセ−ジ」には、「FID」331と、「読み取
り」が始まる位置のオフセットと、読み取るべきバイト
数とが含まれる。又、「read」オペレーションにつ
いての「rメッセ−ジ」には、「FID」331と、読
み取るべきバイト数と、読み取られたデータとが含まれ
る。
【0460】コ−ド1409の「RDLOOP」成分1
505が「tread」メッセ−ジを受信すると、「R
DLOOP」成分1505は、従プロセス1515を取
り、この従プロセス1515に「tread」メッセ−
ジからのデータを含む「FSRPC」構造1601を回
す。そして、従プロセス1515が、「BPI」(閉塞
性プロトコルインタプリタ)1511において、「re
ad」コ−ドを実行する。
【0461】この読み取り中のファイルは既に探索され
見出されて開かれているので、「tメッセ−ジ」で受信
された「FID」331に対応する「FID」1609
は、フィールド1611において読み取られるべきこの
ファイルについてのファイル記述子417を既に有して
いる。もし「OFFSET」フィールド1613が、
「tメッセ−ジ」で受信された「OFFSET」と同じ
でない場合には、この「OFFSET」は、「tメッセ
−ジ」に指定された「OFFSET」へ動かされる。
【0462】それから、「tread」メッセ−ジで
「OFFSET」によって指定される場所において始ま
る「FID」331によって指定されるファイルの読み
取りが、ファイルシステム109(b)への「rea
d」ファイルシステムコールを用いて行われる。
【0463】読み取りが完了すると、「FID」331
の「FID」構造1609内の「OFFSET」フィー
ルド1613が、旧「OFFSET」に読み取られたバ
イト数を加えたものにセットされ、「REPLY」(回
答)1513が、「FID」331と、「tread」
メッセ−ジで受信されたカウントと、「rread」メ
ッセ−ジで読まれたデータとを返す。ここで再び、「S
PROC」(従プロセス構造)1635内の「BUS
Y」フィールド1639が。「0」にセットされる。
【0464】上記の説明から、又前の「プラン9サービ
スのアーキテクチャの概観」の項におけるサービスファ
イルオペレーションの記述から、「remove」、
「clone」、及び「clunk」オペレーションが
どのようにして送出ファイルサービス1501において
実現されるかは、当業者には明かである。
【0465】しかし、ファイルの状態を読み取る「st
at」オペレーションは、オペレーションにおける「Q
ID」323の役割の点で、少し重要度が高い。「ts
tat」メッセ−ジは、状態を読み取られるべきファイ
ルについての「FID」331だけを含む。
【0466】「FID」331を用いて、「FID」3
31についての「FID」構造1609が探索され、フ
ァイル構造ポインタ1615を用いてファイルについて
の樹木1707内の「FS」(ファイル構造)1623
が探索される。それから、「FID」331によって指
定されるファイルについての全パス名が、ファイル樹木
1707から得られ、「stat」ファイルアクセス機
能コールにおいて用いられる。
【0467】「stat」コールは、ファイルシステム
109(b)内でこのファイルを判るための「QID」
を含む情報を返す。「rstat」メッセ−ジで「st
at」ファイルアクセス機能コールから受信される他の
情報と共に返されるのは、この「QID」323であっ
て、このファイルについてのファイル構造1623から
の「PQID」1627ではない。
【0468】「PQID」1627の代わりに実際の
「QID」323が必要とされる理由は、1つよりも多
い数の、名前スペースの一部分1401が、名前スペー
ス115(b)から名前スペース115(a)へ送出さ
れているかも知れないからである。
【0469】そして更に、もし同じファイルが両方の名
前スペースの一部分1401にある場合には、これら両
方のファイルが名前スペース115(b)において同じ
ファイルであるにも拘らず、このファイルは、各一部分
1401について別個のファイル構造1623を有する
ことになり、これらのファイル構造1623は各々、
「PQID」1627において異なる値を取ることにな
るからである。
【0470】プロセス102(a)は、「stat」機
能によってこのファイルについて返される「QID」3
23を比較することにより、名前スペース115(a)
において異なるパス名を有することになるこれらのファ
イルが同一であるかどうかを定めようとする。したがっ
て、「rstat」rメッセ−ジは、このファイルの、
「PQID」でなく実際の「QID」323を含む必要
がある。
【0471】「プロトコルインタプリタデータ構造」1
517におけるデータ構造の重要な利点は、これらのデ
ータ構造が動的なことである。「FID」構造1609
は、マウントサーバ203(a)が「tメッセ−ジ」で
「FID」331を用いるときにだけ「FID」161
9のチェイン1705に付加され、「tメッセ−ジ」が
「FID」331と名前スペースの一部分1401内の
ファイルとの付随関係がもはや存在しないことを表示す
る場合には「FID」チェイン1705から除去され
る。
【0472】同様に、ファイル構造1623は、このフ
ァイル構造によって表されるファイルの名前を指定する
「twalk」メッセ−ジ又は「tcreate」メッ
セ−ジがあった場合にだけファイル樹木1707に付加
される。
【0473】送出ファイルサービスを用いるプラン9システムコール 送出ファイルサービスを用いるプラン9サービス123
には、「import」(取り込み)と「cpu」との
2つのサービスがある。「import」サービスは、
遠隔システムから名前スペースの一部分1401を取り
込むために送出ファイルサービスを用いる。
【0474】「取り込み」サービスは、主題項目とし
て、遠隔システムの名前と、遠隔システム内の名前スペ
ースの一部分1401についてのルートディレクトリの
パス名とを取る。又主題項目として、このファイルがマ
ウントされるべきローカルシステム内のディレクトリの
パス名もとってもよい。
【0475】上の「プラン9サービスのアーキテクチャ
の概観」の項で述べたように、オプションによって、ル
ートディレクトリがマウントされる先のディレクトリ
の、前、後、又はそのものの場所上(この場合には置換
となる)、へのマウントが許される。
【0476】「取り込み」サービスは次のように行われ
る。すなわち最初に、「ダイヤル」システムコールを用
いて、遠隔システム上の送出ファイルサービスへのプロ
トコルチャンネル517が設立される。それから、ルー
トディレクトリについてのパス名を送出ファイルサービ
スに与え、送出ファイルサービスは、今先に述べたよう
に、ファイル樹木1707を初期設定するためにこのパ
ス名を用いる。
【0477】それから、「取り込み」サービスが送出フ
ァイルサービスから確認メッセ−ジを受信すると、「取
り込み」サービスは、プロトコルチャンネル517につ
いてのファイル記述子417を、主題項目に指定される
名前スペース115(a)内のディレクトリ上に、オプ
ションに指定される仕方でマウントしてから、動作を終
了する。もし名前スペース115(a)内のディレクト
リが指定されない場合は、名前スペース115(b)内
のディレクトリについて指定されたのと同じパス名を有
する名前スペース内のディレクトリがマウント点として
用いられる。
【0478】「cpu」サービス123の説明には最初
に、プラン9プロセスが一般に作動する環境の点検が必
要である。図7を参照して「プラン9オペレーティング
システムの概観」の項で述べたように、プラン9オペレ
ーティングシステムがそこで作動する分散形システムは
一般に、いくつもの、CPU又はCPUサーバ703、
ファイルサーバ705、及び端末711を有する。
【0479】CPUサーバとファイルサーバとの間は、
高速のDMA709によって接続され、端末711は、
高速のDMA709に全国規模長距離通信ネットワ−ク
715によって接続される。プラン9プロセス102
は、少なくともCPUサーバ703及び端末711上で
作動する。
【0480】このシステムの一般的な用法の1つは、端
末711上での編集のようなグラフィックユ−ザインタ
フェ−ス集中形タスクやCPUサーバ703上でのコン
パイレーションのようなコンピュータ集中形タスクの実
行である。
【0481】「cpu」サービス123では、ユ−ザ
の、端末711上でのプログラム実行からCPUサーバ
703上でのプログラム実行へシフトが許される。CP
Uサーバ703上で実行中のプログラムは、端末711
のユ−ザには端末711上のウインドウ内で実行されて
いるように見える。そしてユ−ザは、CPUサーバ70
3上での実行中のプログラムへの入力の付与及びプログ
ラムからの出力の受領をウインドウ内で行うことができ
る。
【0482】「cpu」サービスと、遠隔CPU上でプ
ログラムを実行するために普通に用いられる端末エミュ
レーションプログラムとの基本的な差異は、「cpu」
サービスを行う端末711上のプロセス102の名前ス
ペースがCPUサーバ703上でプログラムを実行する
プロセス102へ送出されることである。
【0483】図14に関連して説明すれば、「システム
2」1413は端末711であり、プロセス102
(b)は「cpu」サービスを実行するプロセスであ
る。又、「システム1」1411はCPUサーバ703
であり、プロセス102(a)はCPUサーバ703上
でユ−ザのために実行中のプロセスである。
【0484】「cpu」サービスを開始するコマンドに
は2つのオプションがあり、1つは、プログラムがそこ
で実行されるCPUサーバ703を指定するオプショ
ン、他の1つは、プラン9シェルである「rc」に対す
るコマンドラインによってプログラムを指定するオプシ
ョンである。もしどちらのオプションも指定されない場
合、デフォルトCPUサーバ703が与えられ、実行さ
れるプログラムは、「rc」となる。
【0485】「cpu」サービスは2つの部分を有す
る。1つの部分は、CPUサーバ上で作動し、他の1つ
の部分は、端末711上で作動する。実行は、端末71
1上で作動する方の部分で開始される。以下の説明にお
いて、この、端末711上で作動する方の部分がプロセ
ス102(i)によって実行されるものと仮定する。
【0486】この部分は、コマンドで又はデフォルトに
よって与えられるCPUサーバ703の名前を用いてC
PUサーバ703のネットワ−クアドレスを定め、次に
「ダイヤル」システムコールを用いて、CPUサーバ7
03へのプロトコルチャンネル517を設立させる結果
となるメッセ−ジをCPUサーバ703に送る。
【0487】「cpu」サービスの端末部分はそれか
ら、まずプロトコルチャンネル517にCPUサーバ7
03によって実行されるべきコマンドを書き込んでか
ら、プロトコルチャンネル517に文字列「NO」又は
プロセス102(i)の作業ディレクトリを書き込む。
【0488】CPUサーバ703において、前に述べた
「リスナー」プロセスが、「ダイヤル」システムコール
に応答して、CPUサーバ703上でこのユ−ザについ
てのデフォルト名前スペース115(j)でプロセス1
02(j)を開始し、プロセスについての標準入力、標
準出力、及びエラーをプロトコルチャンネル517に接
続する。デフォルト名前スペース115(j)は、プロ
セス102(i)からの名前スペースの一部分1401
をその上にマウントできるようなディレクトリ「ter
m」を有する。
【0489】それからプロセスは、CPUサーバ703
上で作動する「cpu」サービスのこの部分の実行を開
始する。それからこのプロセスは、コマンドを得るプロ
トコルチャンネル517上で第1の「read」(読み
取り)を行い、(もしディレクトリがあれば)そのディ
レクトリを得る第2の読み取りを行う。もしディレクト
リがある場合、プロセス102(j)は、そのディレク
トリに変わる。そうでなければ、プロセス102(j)
は、プロセス102(j)についてのホームディレクト
リに変わる。
【0490】次のステップは、プロセス102(j)の
「PID」をこのチャンネルを介してプロセス102
(i)に送り、プロセス102(i)にプロセス102
(j)の存在を確認する。その後、プロセス102
(j)は、最初にプロセス102(i)に文字列「F
S」を送って、プロセス102(i)が送出ファイルサ
ービスコ−ド1409を実行することになっていること
を表示し、それから「/」を送って、このプロセス10
2(i)がその名前スペース115(i)全体を送出す
ることになっていることを表示する。
【0491】端末711において、プロセス102
(i)は、文字列「FS」を受信して送出ファイルサー
ビスコ−ド1409の実行を開始し、こうして送出ファ
イルサービス1501となる。送出ファイルサービス1
501は、プロセス102(j)によって送られた
「/」を読み取り、既に述べたように、これを用いてプ
ロトコルインタプリタデータベース構造1517を初期
設定し、それから文字列「FS」をプロセス102
(j)に返す。
【0492】プロセス102(j)は、これに応答し
て、プロトコルチャンネル517についてのファイル記
述子417を、名前スペース115(j)内のディレク
トリ「term」上にマウントし、これにょって名前ス
ペース102(i)の名前スペース全体をプロセス10
2(j)の名前スペースに組み込む。
【0493】以後、プロセス102(j)の名前スペー
ス115(j)内のディレクトリ「term」内のファ
イル上でのファイルオペレーションは、結果的に、端末
711上での、プロセス102(i)の名前スペース1
15(i)内のファイル上でのオペレーションとなる。
【0494】まとめ 上記の「詳細説明」により、1つの名前スペースの一部
分を別の名前スペース内に組み込むための本発明者らの
技術を実現するために本発明者らが現在知る限りで最良
の方式を開示した。本発明者らがその技術をそこで実現
するために用いたプラン9オペレーティングシステムに
おいて、名前スペースは、プロセスごとのものである。
【0495】したがって、その一部分がそこから送出さ
れる元の名前スペースは、1つのプロセスに属する。こ
れは、名前スペースの一部分が取り込まれる先の名前ス
ペースが別のプロセスに属するのと同様である。
【0496】しかし、本発明の技術は、名前スペースが
プロセスに属することを必要とせず、1つのエンティテ
ィによって定義される名前スペースの一部分が、別の1
つのエンティティによって定義される名前スペース内に
組み込まれることになる場合には、本発明の技術を用い
ることができる。そのうえ、プラン9の名前スペース内
の名前はファイルを意味するのに対し、本発明の技術
は、どの様な種類のエンティティを意味する名前とでも
使用可能である。
【0497】更に、本発明の実施例において送出される
名前スペースが遠隔のプロセッサ上で作動するプロセス
に属するのに対し、本発明の技術は、名前スペースが送
出されつつある先のプロセスが作動するプロセッサと同
じプロセッサ上で作動するプロセスに属する名前スペー
スを送出する際にも用いることができる。
【0498】これに加えて、ここに説明した実現例にお
いてはプラン9ファイルプロトコルからプラン9ファイ
ルシステムコールへの変換が行われるのに対し、同じ技
術を、名前の一部分をそれが取込側名前スペース内に現
れるのと同じ状態に指定するオペレーションを、それが
如何なるオペレーションであっても、その名前をそれが
送出側名前スペース内に現れるのと同じ状態に指定する
オペレーションに変換する作業にも使用できる。
【0499】又更に、取込側名前スペース内に現れるよ
うな名前を送出側名前スペースに現れるような名前にマ
ッピングするために本発明者らが用いた技術は、プラン
9名前スペースが樹木に編成できるという事実を利用し
ている。名前スペースが別の仕方で編成される場合に
は、これらの編成にとって適切なマッピング技術は、こ
こで開示されたのと同じ仕方で用いることができる。
【0500】最後に、上記「詳細説明」に示された手法
以外にも、ここに開示された技術を実現する多くの手法
があることは、当業者には明かである。
【0501】以上の説明は、本発明の一実施例に関する
もので、この技術分野の当業者であれば、本発明の種々
の変形例を考え得るが、それらはいずれも本発明の技術
的範囲に包含される。
【0502】尚、特許請求の範囲に記載した参照番号は
発明の容易な理解のためで、その技術的範囲を制限する
よう解釈されるべきではない。
【0503】
【発明の効果】以上述べたごとく、本発明によれば、第
1のプロセスが第2のプロセスの名前スペースの一部分
又は全部を自身の名前スペースに組み込むことができる
ようにしたので、ワークステーション上で実行中のプロ
セスの名前スペースを、ワークステーションの端末のユ
−ザのためにCPU上で実行中のプロセスの名前スペー
スに組み込むようなオペレーションが、従来技術では極
めて煩雑であったのに比べ、大変容易となり、コンピュ
ータシステムにおける作業効率を大幅に改善することが
できる。
【図面の簡単な説明】
【図1】本明細書に述べるオペレーティングシステムに
よって与えられる、プロセスごとの名前スペースの概観
の説明図である。
【図2】上記オペレーティングシステムにおけるマウン
トサービス及びプロトコルサービスの概観の説明図であ
る。
【図3】チャンネルデータ構造の説明図である。
【図4】ファイルを探索、開設するために用いられるデ
ータ構造の説明図である。
【図5】プロトコルサービスとの間でプロトコルの送受
信を行うために用いられるデータ構造の説明図である。
【図6】ルートサービスによって与えられるファイル樹
木並びに或る「bind」オペレーション及び「mou
nt」オペレーションが行われた後のファイル樹木の説
明図である。
【図7】本発明によるオペレーティングシステムを実現
した分散形システムの説明図である。
【図8】本発明のマウントテーブルの説明図である。
【図9】図6の第2のファイル樹木についてのマウント
テーブルの説明図である。
【図10】本発明の一実施例における「namec」
(ネーメック)機能の、流れ図である。
【図11】本発明の一実施例における「walk」(ウ
オーク)機能の流れ図である。
【図12】本発明の一実施例における「mount」
(マウント)機能の流れ図である。
【図13】本発明の一実施例におけるプロトコルサービ
スを登録するために用いられるデータ構造の説明図であ
る。
【図14】その名前スペースの一部分を第2のプロセス
に与えた第1のプロセスの説明図である。
【図15】送出ファイルサービスの一実施例についての
説明図である。
【図16】プロトコルインタプリタデータベース構造1
517において用いられるデータ構造の説明図である。
【図17】プロトコルインタプリタデータベース構造1
517においてデータ構造がどのように組み合わされる
かを示す説明図である。
【符号の説明】
101 サービスアーキテクチャ 102 プロセス 103 プロセスグループ 105 ファイルアクセス機能(FA)111へのコー
ル(呼び出し) 107 ファイル探索機能(FL)113へのコール 109 ファイルシステム 111 ファイルアクセス機能(FA) 113 ファイル探索機能(FL) 115 名前スペース 117 単一のファイル樹木 119 サービスファイルアクセス要求 121 サービスファイル探索要求 123 サービス 125 ファイル樹木 127、129 ディレクトリファイル 131 データファイル 203 マウントサービス 205 ファイル探索トランズアクション 207 ファイルアクセストランズアクション 209 プロトコルサービス(PS) 211 ローカルプロトコルサーバ 213 遠隔プロトコルサーバ 214 ネットワ−ク通信サービス(NS) 215 通信サービス 216 プロセス間通信サービス(IPS) 217 サービスファイル探索要求を指定する機能コー
ル 219 サービスファイルアクセス要求を指定する機能
コール 301 チャンネルデータ構造 303 「LOCK」(ロック)フィールド 307 「REF」(参照カウント)フィールド 309 「NEXT/OFF」(NEXT/OFFSE
T)フィールド 311 「KSINFO」(核サービス情報) 313 「TYPE」(タイプ)フィールド 315 「DEV」(DEVICE)(デバイス)フィ
ールド 317 「AINFO」(アクセス情報)フィールド 319 「MODE」(モード)フィールド 321 「FLAG」321(フラッグ)フィールド 323 「QID」(ファイルハンドル「qid」)フ
ィールド 325 「MINFO」325(マウント情報) 327 「MOUNT PTR」327(マウントポイ
ンタ)フィールド 329 「MOUNT ID」(マウント識別子)フィ
ールド 331 「FID」(ファイル識別子)フィールド 333 「AUX」(補助情報)フィールド 335 「PSINFO」(プロトコルサービス情報) 337 「PCHAN」(プロトコルチャンネル)フィ
ールド 339 「MQID」339フィールド 401 データ構造 403 ユ−ザデータ構造 413 ファイル記述子アレイ(FDA) 415 (ファイル記述子アレイ)エントリ(FDA
E) 417 ファイル記述子(FD) 419 ファイルチャンネル構造(FCHAN) 501 データ構造 502 マウントサービスアレイ(MNTA) 503 (マウントサービスアレイ)エントリ(MNT
E) 509 マウントサービス待ち行列構造(MNTQ) 517 プロトコルチャンネル(PCHAN) 520 メッセ−ジ待ち行列 521 マウントサービスヘッダ構造(MNTHDR) 533 マウントバッファ 601 スタブファイル樹木 617 ファイル樹木 701 プラン9システム 703 中央演算処理装置(CPU) 705 ファイルサーバ 709 高速DMA(直接メモリアクセス)リンク 711 ノット(Gnot)端末(ローカル処理ユニッ
ト) 713 分散形ネットワ−ク 715 全国規模長距離通信ネットワ−ク 717 CPU・ファイルサーバセット 719 端末セット 801、901 マウントテーブル 802 左チャンネル(LCHAN) 803 マウントテーブルアレイ(MTA) 804 右チャンネル(RCHAN) 806 (マウントテーブルアレイ)エントリ(MT
E) 809 マウント構造 1301 データ構造 1303 ディレクトリ・エントリ 1305 ディレクトリ情報 1310 子リスト 1315 「NAME」(名前)フィールド 1317 「QID」フィールド(ファイルハンドル
「qid」) 1401 名前スペースの一部分 1405 取込側 1407 送出側 1409 送出ファイルサービスコ−ド 1501 送出ファイルサービス 1503 (送出ファイルサービスコ−ド1409の)
「INIT」(初期設定)成分 1505 「RDLOOP」(読み取りループ) 1507 「PI」(プロトコルインタプリタ) 1509 「NBPI」(非閉塞性プロトコルインタプ
リタ) 1511 「BPI」(閉塞性プロトコルインタプリ
タ) 1513 「REPLY」(回答) 1515 従プロセス 1517 プロトコルインタプリタデータベース構造
(PIDS) 1519 rメッセ−ジ 1521 tメッセ−ジ 1601 「FSRPC」 1609 「FID」(ファイル識別子) 1623 「FS」(ファイル構造) 1635 「SPROC」(従プロセス構造)
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 12/00 G06F 15/16

Claims (15)

    (57)【特許請求の範囲】
  1. 【請求項1】 エンティティを表す名前の第1の名前ス
    ペース(115(b))において作動して、この第1の
    名前スペースの一部分(1401)を第2の名前スペー
    ス(115(a))の一部分(1401)として利用可
    能にする装置において、 1つのオペレーションを指定し、且つ前記第2の名前ス
    ペースの前記一部分において1つのオペレーション指定
    子によって要求されるフォームを有する第1の名前を含
    む、その第1のオペレーション指定子を受信する手段
    (1505)と、 前記オペレーションと同じオペレーションを指定し、且
    つ前記第1の名前スペースにおいて要求されるフォーム
    を有する第2の名前を含む、第2のオペレーション指定
    子、を前記第1のオペレーション指定子に応答して作成
    する解釈手段(1507)と、 前記第2のオペレーション指定子に応答して、前記第2
    の名前によって表されるエンティティ上で前記オペレー
    ションを行う手段(109(b))と、からなることを
    特徴とする、コンピュータシステムに用いる第1の名前
    スペースの一部分を第2の名前スペースの一部分として
    利用可能にする装置。
  2. 【請求項2】 第1のオペレーション指定子を受信する
    ための前記手段が、前記第2の名前スペースを用いる原
    始エンティティ(102(a))から前記第1のオペレ
    ーション指定子を受信し、 前記第2のオペレーション指定子手段から前記オペレー
    ションの結果を受信するための、及びこの結果を含む結
    果指定子を前記原始エンティティに送信する回答手段
    (1513)をさらに有することを特徴とする請求項1
    の装置。
  3. 【請求項3】 前記第2の名前スペースにおいて作動
    し、前記受信する手段、前記解釈手段、及び前記回答手
    段を実現するためのプロセス(102(b))と、 前記プロセスと前記原始エンティティとの間で前記第1
    のオペレーション指定子と前記結果指定子とを転送する
    ためのチャンネル(517)とをさらに有することを特
    徴とする請求項2の装置。
  4. 【請求項4】 前記原始エンティティが、別のプロセス
    であり、 前記第1の名前スペース及び前記第2の名前スペース
    が、プロセスごとの名前スペースである、ことを特徴と
    する請求項3の装置。
  5. 【請求項5】 中央演算処理装置(703)と、 ローカル処理ユニット(711)と、をさらに有し、 前記ローカル処理ユニットが、前記第1の名前スペー
    ス、第1のオペレーション指定子を受信する手段、前記
    解釈手段、及び前記オペレーション手段を実現するため
    に用いられ、 前記中央演算処理装置が、前記第2の名前スペースを実
    現するために用いられ、 第1のオペレーション指定子を受信する前記手段が、前
    記第1のオペレーション指定子を前記中央演算処理装置
    から受信する、ことを特徴とする請求項1の装置。
  6. 【請求項6】 前記ローカル処理ユニットが、ディスプ
    レイと入力装置とを有し、 前記第2の名前スペースの前記一部分である前記第1の
    名前スペースの前記一部分が、前記第1の名前スペース
    のうち前記入力装置についての名前と前記ディスプレイ
    についての名前とを有する部分、を有する、ことを特徴
    とする請求項5の装置。
  7. 【請求項7】 前記第1の名前スペース及び前記第2の
    名前スペースが、前記ローカル処理ユニットと前記中央
    演算処理装置との同一ユ−ザに属する、ことを特徴とす
    る請求項5の装置。
  8. 【請求項8】 前記第1のオペレーション指定子が、ブ
    ロッキングオペレーションを含む複数のオペレーション
    のうちの1つのオペレーションを指定し、 前記解釈手段が、前記第1のオペレーション指定子がブ
    ロッキングオペレーションを指定する場合に、前記第2
    のオペレーション指定子に対する従プロセス(151
    5)を得ることによって、前記第1のオペレーション指
    定子に応答し、 前記第2のオペレーション指定子に応答する前記手段
    が、前記従プロセスについてのオペレーションを行う、
    ことを特徴とする請求項1の装置。
  9. 【請求項9】 前記解釈手段が、前記第2の名前に前記
    第1の名前をマッピングするためのマッピング手段を有
    することを特徴とする請求項1の装置。
  10. 【請求項10】 第1のオペレーション指定子を受信す
    るための前記手段が、複数の第1のオペレーション指定
    子を受信し、 前記マッピング手段が、前記受信された第1のオペレー
    ション指定子のための要求に応じて動的に構築され、少
    なくとも、前記第1の名前スペースにおいて前記第1の
    名前に要求されるフォームを定める手段(1707)を
    有する、ことを特徴とする請求項9の装置。
  11. 【請求項11】 前記第1の名前スペースにおいて要求
    される前記フォームを定めるための前記手段が、前記第
    1の名前スペースにおける名前についてのノード(16
    23)を有する、動的に構築された樹木(1707)で
    あり、 前記ノードは、前記樹木において前記第1の名前につい
    てのノードを探し且つこのノードから前記樹木のルート
    部へ樹木に沿って移動することによって、第2の名前の
    ために要求されるフォームが得られるように、構成され
    る、ことを特徴とする請求項10の装置。
  12. 【請求項12】 前記マッピング手段が更に、 前記第1の名前を、前記第2の名前スペースの前記一部
    分において前記第1の名前によって表されるエンティテ
    ィだけを識別するエンティティハンドル(1627)で
    あるが前記オペレーションを行うための前記手段におい
    て前記エンティティのために用いられるエンティティハ
    ンドル(1619)とは異なるようなエンティティハン
    ドル(1627)上にマッピングすることを特徴とする
    請求項10の装置。
  13. 【請求項13】 前記第1のオペレーション指定子を受
    信するための前記手段が、前記第2の名前スペースを用
    いる原始エンティティから前記第1のオペレーション指
    定子を受信し、 前記第2のオペレーション指定子手段から前記オペレー
    ションの結果を受信するための、及びこの結果を含む結
    果指定子を前記原始エンティティへ送信する手段(15
    13)を有し、 前記第1のオペレーション指定子が、前記第1の名前に
    よって表されるエンティティの状態を定めるための状態
    オペレーションを指定し、 前記状態オペレーションについての前記結果指定子が、
    前記オペレーションを行うための前記手段において前記
    エンティティのために用いられる前記エンティティハン
    ドルを返す、ことを特徴とする請求項12の装置。
  14. 【請求項14】 エンティティを表す名前の第1の名前
    スペースの一部分を第2の名前スペースの一部分として
    利用可能にする方法において、 オペレーションを指定する第1のオペレーション指定子
    であって前記第2の名前スペースの前記一部分において
    要求されるフォームを有する第1の名前を含むような第
    1のオペレーション指定子、を原始エンティティから受
    信するステップと、 前記第1のオペレーション指定子に応答して、前記オペ
    レーションと同じオペレーションを指定する第2のオペ
    レーション指示子であって前記第1の名前スペースにお
    いて第2のオペレーション指定子のために要求されるフ
    ォームを有する第2の名前を含むような第2のオペレー
    ション指定子、を作成するステップと、 前記第2のオ
    ペレーション指定子によって指定される前記オペレーシ
    ョンを行うステップと、からなることを特徴とする、コ
    ンピュータシステムに用いる第1の名前スペースの一部
    分を第2の名前スペースの一部分として利用可能にする
    方法。
  15. 【請求項15】 前記オペレーションの結果を受信し
    て、この結果を含む結果指定子を前記原始エンティティ
    に送信するステップをさらに有することを特徴とする請
    求項14の方法。
JP6008225A 1992-12-31 1994-01-04 コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法 Expired - Fee Related JP2779587B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US99975592A 1992-12-31 1992-12-31
US999755 1992-12-31

Publications (2)

Publication Number Publication Date
JPH06231022A JPH06231022A (ja) 1994-08-19
JP2779587B2 true JP2779587B2 (ja) 1998-07-23

Family

ID=25546654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6008225A Expired - Fee Related JP2779587B2 (ja) 1992-12-31 1994-01-04 コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法

Country Status (7)

Country Link
US (1) US5465365A (ja)
EP (1) EP0605959B1 (ja)
JP (1) JP2779587B2 (ja)
AU (1) AU656869B2 (ja)
CA (1) CA2110243C (ja)
DE (1) DE69328162T2 (ja)
ES (1) ES2145764T3 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3270216B2 (ja) * 1993-10-08 2002-04-02 富士通株式会社 ファイル名検出方式
JP3488500B2 (ja) * 1994-02-07 2004-01-19 富士通株式会社 分散ファイルシステム
NL9400682A (nl) * 1994-04-28 1995-12-01 Nederland Ptt Werkwijzen voor het tussen systemen uitwisselen van een bericht dat ten minste één informatie-element omvat, inrichting voor het tussen systemen uitwisselen van een bericht dat ten minste één informatie-element omvat, alsmede systeem omvattende deze inrichting.
JP3297966B2 (ja) * 1994-08-19 2002-07-02 日本電信電話株式会社 データアクセス方法
US5566328A (en) * 1995-01-23 1996-10-15 Tandem Computers Incorporated Reconstructing directory pathnames from file handles in a computer system
EP2270687A2 (en) 1995-04-11 2011-01-05 Kinetech, Inc. Identifying data in a data processing system
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
US6088736A (en) 1995-07-19 2000-07-11 Fujitsu Network Communications, Inc. Joint flow control mechanism in a telecommunications network
AU6970896A (en) 1995-09-14 1997-04-01 Ascom Nexion Inc. Transmitter controlled flow control for buffer allocation in wide area atm networks
JP3738787B2 (ja) * 1995-10-19 2006-01-25 富士ゼロックス株式会社 資源管理装置及び資源管理方法
US5754844A (en) * 1995-12-14 1998-05-19 Sun Microsystems, Inc. Method and system for accessing chunks of data using matching of an access tab and hashing code to generate a suggested storage location
JP2000517488A (ja) 1996-01-16 2000-12-26 フジツウ ネットワーク コミュニケーションズ,インコーポレイテッド Atm網用の信頼性と柔軟性のあるマルチキャスト機構
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6134583A (en) * 1996-07-01 2000-10-17 Sun Microsystems, Inc. Method, system, apparatus and article of manufacture for providing identity-based caching services to a plurality of computer systems (#16)
US6154742A (en) * 1996-07-02 2000-11-28 Sun Microsystems, Inc. System, method, apparatus and article of manufacture for identity-based caching (#15)
US5970247A (en) * 1996-10-07 1999-10-19 Wolf; William M. Methods for encoding decoding and processing six character date designations for the year 2000 and beyond
US6061740A (en) * 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US6189000B1 (en) * 1997-06-30 2001-02-13 Microsoft Corporation System and method for accessing user properties from multiple storage mechanisms
US5995964A (en) * 1997-12-10 1999-11-30 Nihon Unisys, Ltd. Managing first and second handles used in communication with an apparatus connected to a network
US6029168A (en) * 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6061743A (en) * 1998-02-19 2000-05-09 Novell, Inc. Method and apparatus for aggregating disparate namespaces
US6173293B1 (en) * 1998-03-13 2001-01-09 Digital Equipment Corporation Scalable distributed file system
US6219770B1 (en) * 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
US6654881B2 (en) 1998-06-12 2003-11-25 Microsoft Corporation Logical volume mount manager
US6119131A (en) * 1998-06-12 2000-09-12 Microsoft Corporation Persistent volume mount points
US6496839B2 (en) 1998-06-12 2002-12-17 Microsoft Corporation Persistent names for logical volumes
US6256031B1 (en) * 1998-06-26 2001-07-03 Microsoft Corporation Integration of physical and virtual namespace
US6405217B1 (en) * 1998-09-21 2002-06-11 Microsoft Corporation State-based implementation of transactions on a file system
US6581088B1 (en) 1998-11-05 2003-06-17 Beas Systems, Inc. Smart stub or enterprise javaTM bean in a distributed processing system
US6571274B1 (en) 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
US6236999B1 (en) * 1998-11-05 2001-05-22 Bea Systems, Inc. Duplicated naming service in a distributed processing system
US6385643B1 (en) 1998-11-05 2002-05-07 Bea Systems, Inc. Clustered enterprise Java™ having a message passing kernel in a distributed processing system
US6546415B1 (en) 1999-05-14 2003-04-08 Lucent Technologies Inc. Network management system using a distributed namespace
JP3769999B2 (ja) * 1999-09-30 2006-04-26 富士通株式会社 サービス振り分け装置
US6553387B1 (en) * 1999-11-29 2003-04-22 Microsoft Corporation Logical volume configuration data management determines whether to expose the logical volume on-line, off-line request based on comparison of volume epoch numbers on each extents of the volume identifiers
US6684231B1 (en) * 1999-11-29 2004-01-27 Microsoft Corporation Migration of friendly volumes
US6721880B1 (en) 2000-05-31 2004-04-13 Lucent Technologies Inc. Method and apparatus for maintaining configuration information in a computing environment
CN1249576C (zh) * 2000-07-27 2006-04-05 Bea系统公司 用于对请求进行集中和负载均衡的系统和方法
US6751635B1 (en) * 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
US6985936B2 (en) * 2001-09-27 2006-01-10 International Business Machines Corporation Addressing the name space mismatch between content servers and content caching systems
US20030225753A1 (en) * 2001-12-18 2003-12-04 Becomm Corporation Method and system for attribute management in a namespace
US7152225B2 (en) * 2003-02-25 2006-12-19 Sun Microsystems, Inc. Identifying a kernel structure using an element and a variable offset of the structure from debugging
JP4349871B2 (ja) * 2003-09-09 2009-10-21 株式会社日立製作所 ファイル共有装置及びファイル共有装置間のデータ移行方法
JP4622474B2 (ja) 2004-11-17 2011-02-02 横河電機株式会社 フィールド機器及びこれを用いたシステム
US7574516B2 (en) * 2005-02-01 2009-08-11 Microsoft Corporation Mechanisms for transferring raw data from one data structure to another representing the same item
US7603359B2 (en) * 2006-01-17 2009-10-13 International Business Machines Corporation Method and apparatus for maintaining federated name context bindings in a name space
US7640247B2 (en) * 2006-02-06 2009-12-29 Microsoft Corporation Distributed namespace aggregation
US8185576B2 (en) 2006-03-14 2012-05-22 Altnet, Inc. Filter for a distributed network
US8738580B2 (en) * 2008-07-23 2014-05-27 Nvidia Corporation Copying files from one directory to another
US8719539B2 (en) * 2011-06-30 2014-05-06 Red Hat, Inc. Using heuristics for field types of a structure to categorize dynamic memory allocations
US8725978B2 (en) * 2011-06-30 2014-05-13 Red Hat, Inc. Using symbol information for categorization of dynamic memory allocations
US8903875B2 (en) * 2012-11-30 2014-12-02 Apple Inc. Method for identifying corresponding directories in a union-mounted file system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014192A (en) * 1985-05-06 1991-05-07 Motorola Computer X, Inc. System for locating a file in a logical ring by sequentially forwarding access request with file system name and file name
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
JPH0454541A (ja) * 1990-06-21 1992-02-21 Fujitsu Ltd ファイル名生成処理方式
CA2046723C (en) * 1990-07-11 1998-11-24 Robert Charles Pike Distributed computing system
JPH0619771A (ja) * 1992-04-20 1994-01-28 Internatl Business Mach Corp <Ibm> 異種のクライアントによる共用ファイルのファイル管理機構

Also Published As

Publication number Publication date
EP0605959A2 (en) 1994-07-13
EP0605959A3 (en) 1995-04-26
EP0605959B1 (en) 2000-03-22
JPH06231022A (ja) 1994-08-19
CA2110243C (en) 1998-08-11
AU5240893A (en) 1994-07-21
AU656869B2 (en) 1995-02-16
ES2145764T3 (es) 2000-07-16
CA2110243A1 (en) 1994-07-01
DE69328162D1 (de) 2000-04-27
DE69328162T2 (de) 2000-09-14
US5465365A (en) 1995-11-07

Similar Documents

Publication Publication Date Title
JP2779587B2 (ja) コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法
US5623666A (en) Distributed computing system
US6499036B1 (en) Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
US4887204A (en) System and method for accessing remote files in a distributed networking environment
Redell et al. Pilot: An operating system for a personal computer
Popek et al. The LOCUS distributed system architecture
US6314460B1 (en) Method and apparatus for analyzing a storage network based on incomplete information from multiple respective controllers
US5202971A (en) System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
JP3439337B2 (ja) ネットワーク管理システム
US7831655B2 (en) System and method for implementing a service adapter
US8056091B2 (en) Systems and methods for using application services
JPH0713844A (ja) 新たなファイルシステムを既存のファイルシステムに対応付ける方法及び拡張可能なファイルシステム
PL176975B1 (pl) Sposób skutecznego buforowania zbiorów w systemie zbiorów rozproszonych
JPH08339355A (ja) 分散形システムでの処理タスク実行呼び出し方法及び装置
JPH11327919A (ja) オブジェクト指向割込みシステム用の方法およびデバイス
JPH04246742A (ja) 異なるファイル・システムにまたがる記憶管理システム
EP0687973B1 (en) System and method of remotely executing computer processes
JPH058455B2 (ja)
US7209248B1 (en) Managing the lifetime of distributed resource data using temporal scopes
CN113672334A (zh) 一种容器管理方法及装置
JP4060890B2 (ja) 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ
JPH0232430A (ja) ファイル管理装置
Linington The virtual filestore concept
US6032176A (en) Data-independent type computer system: processing machine, data machine and man-machine interface therein
JPH06168197A (ja) Osi管理マネージャ装置

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20080515

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20080515

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20080515

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090515

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees