JPH04233654A - コンピュータシステム - Google Patents

コンピュータシステム

Info

Publication number
JPH04233654A
JPH04233654A JP3196061A JP19606191A JPH04233654A JP H04233654 A JPH04233654 A JP H04233654A JP 3196061 A JP3196061 A JP 3196061A JP 19606191 A JP19606191 A JP 19606191A JP H04233654 A JPH04233654 A JP H04233654A
Authority
JP
Japan
Prior art keywords
file
service
name
namespace
channel
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.)
Granted
Application number
JP3196061A
Other languages
English (en)
Other versions
JP2724256B2 (ja
Inventor
Robert C Pike
ロバート チャールズ パイク
L Thompson Kenneth
ケニス エル.トンプソン
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 Inc
Original Assignee
American Telephone and Telegraph Co Inc
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 American Telephone and Telegraph Co Inc filed Critical American Telephone and Telegraph Co Inc
Publication of JPH04233654A publication Critical patent/JPH04233654A/ja
Application granted granted Critical
Publication of JP2724256B2 publication Critical patent/JP2724256B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 【0001】 【産業上の利用分野】本発明は、概して電算システムに
関し、さらに詳細には分散型電算システム、即ちシステ
ムの構成要素が通信媒体によって接続されているような
電算システムに関する。 【0002】 【従来の技術】電算機システムにおいてプログラムの実
行に利用できる多くの要素実体が、名前、即ちアドレス
ではないが、それによって指定されるその実体を位置づ
けるためにプログラムによって使用される識別子を有す
る。 【0003】そのような名前の付けられた実体の一般的
な例は、ファイルである。オペレーティング・システム
のファイル・システムの構成要素によって、利用者は、
ファイルに文字列からなる名前を与えかつその文字列の
名前を用いてファイルを位置づけることができる。その
ほかの名前の付けられた実体には、端末またはプリンタ
などの装置がある。実体を位置づけするためにプログラ
ムが使用する名前の集合は、名前空間と称し、その範囲
内でプログラムが実行する。オペレーティング・システ
ムによって、名前空間の編成の仕方が決定される。階層
的な編成の一般的な形は、単一の木構造である。名前空
間におけるすべて名前は、単一のルートを有する木構造
へと編成される。この木構造の内側のノードにある名前
は、ディレクトリを表し;葉のノードにある名前は、普
通の実体を表す。このような木構造において実体または
ディレクトリを位置づけるために、プログラムでは、そ
の実体若しくはディレクトリの名前、および木構造のル
ートとその実体若しくはディレクトリとの間のすべての
ディレクトリ名を指定するか、または実体若しくはディ
レクトリの名前、およびプロセスの現在のディレクトリ
と実体若しくはディレクトリとの間のすべてのディレク
トリ名を指定する。実体を位置づけるのに必要な名前の
組み合わせを実体の「パス名」と称する。 【0004】分散型システムの設計における1つの問題
は、名前空間を如何に定義するかである。1つの方法は
、アモエバ(Amoeba)分散型システムの例に示さ
れるように、単にこの問題を無視することである。アモ
エバ・システムは、1990年5月のIEEEコンピュ
ータにおけるマレンダ(Mullender)他による
「1990年代のアモエバA分散型オペレーティング・
システム(Amoeba−A Distributed
 Operating System for the
 1990’s)」に説明されているが、このオペレー
ティング・システムでは、名前空間は定義されていない
。その代わり、このシステムには、名前サーバと称する
構成要素を含めることができる。名前サーバによって名
前空間が定義される。 【0005】オペレーティング・システムによって名前
空間が定義されている場合、いくつかの方法がとられて
いる。この方法については、カリフォルニア州バークレ
イのカリフォルニア大学出版により1990年発行、カ
マー(Comer)、ドロムズ(Droms)およびマ
ーター(Murtagh)共著の「電算システム(Co
mputing Systems)」における「ティル
デ命名方式の実験的実施(An Exprementa
l Implementationof the Ti
lde Naming System)」(p.487
−p.515)に、さらに詳細な説明がある。1つの方
法は、分散システムにおけるすべての名前を単一の全シ
ステム的な名前の階層に含めることである。場合によっ
ては、名前の階層に、その名前によって表される実体が
位置づけられるシステム構成要素の名前を含めることも
ある。この方法に関する1つの難しさは、名前空間の純
然たる大きさである。一般のプログラムでは2、3の名
前しか使わないが、プログラムや利用者が集まれば、莫
大な階層を処理しなければならない。さらに、システム
構成要素の名前が名前の階層に含まれる場合には、何れ
の構成要素が求めている実体を有するかを利用者または
プログラムが知る必要がある。明らかに、これらの難し
さの程度は、分散システムの規模が拡大するほど、増大
する。 【0006】大きさの問題は、名前空間を分割すること
によって扱われてきた。名前空間を分割する1つの方法
は、プロセッサまたはワーク・ステーションごとに行う
ものである。名前空間を分割するもう1つの方法は、利
用者ごとに行うものである。 【0007】利用者による分割も、プロセッサによる分
割も、コンピュータ・システムにおいてプログラムを実
行する実体はプロセスであり、利用者や機械ではないと
いう事実には対処していない。名前空間を除くすべての
点において、プログラムが実行する環境は、それを実行
するプロセスの環境である。例えば、プログラムが一時
的な変数を生成すると、その変数は、そのプログラムを
実行しているプロセスの環境の一部であり、それをアク
セスできるのは、そのプロセスだけである。しかし、プ
ログラムが一時的なファイルを生成すると、そのファイ
ルは、その下でプロセスが実行している名前空間の一部
となるが、これは、その名前空間が、全システム的な名
前空間か、あるプログラムに対する名前空間か、または
ある利用者に対する名前空間かを問わない。 【0008】一般に、同じ名前空間で実行中の2つのプ
ロセスによって使用される同じ名前は同じ実体を指すと
いう事実のために、重大な命名上の問題が起こる。例え
ば、一時的なファイルのような実体が、真に単一のプロ
セスのみに関係しているならば、プロセスは、その実体
に対して、名前空間における唯一無二の名前を生成しな
ければならない。2つのプロセスが異なる名前空間を持
っている場合、そのような固有の名前を生成する必要性
、およびそれらの使用から生じる複雑さが、避けられる
。プロセスごとの名前空間が無いことによって起こる難
しさは、分散システムに限らないが、プロセスが走って
いる名前空間の大きさが拡大するほど明らかに厳しくな
るので、分散システムによって与えられる名前空間が大
きくなるほど、その難しさも増す。 【0009】 【発明が解決しようとする課題】各プロセスが名前の独
立した階層(名前空間)を持ち、かつプロセスどうしが
異なるプロセッサ上で実行中でも、互いに他のプロセス
の名前空間を利用することを許すことにより、大規模な
システムにおいても、効率的に名前を管理することがで
きる分散型オペレーテインク・システムを与えることで
ある。 【0010】 【課題を解決するための手段】ここに開示する本発明の
1つは、次の構成要素によって特徴付けられるマルチプ
ロセス・オペレーティング・システムである。即ち、1
つまたはそれ以上の名前空間;各名前空間に関係付けら
れたプロセスの集合;何れのプロセスにも利用可能で、
そのプロセスに関係付けられた名前空間における名前の
意味を変更するための名前空間変更手段;および何れの
プロセスにも利用可能で、そのプロセスの現在の名前空
間との関係を終了させ、そのプロセスに新たに生成され
た名前空間を関係つけるための新名前空間生成手段であ
る。 【0011】そのほか、本発明には次のものが含まれる
。即ち、名前の単一の木構造からなるプロセスごとの名
前空間、単一の木構造における名前の意味を変更する名
前空間変更手段、名前の意味の変更記録を保持する簡潔
な手段、ファイルに対する操作によって実体を管理する
ように実体がファイルによって表されるようなサービス
、プロセスの名前空間のルートに結合するために所定の
ファイル木構造を与えるオペレーティング・システムの
ルート・サービス、ファイル操作をファイル・プロトコ
ルに変換するオペレーティング・システムのマウント・
サービス、マウント・サービスによって与えられるファ
イル・プロトコルの集合にすべて応答するプロトコル・
サービス、およびプロセスごとに実体を管理するファイ
ルを与えるサービスなどである。さらに、本発明には、
キーボードからコマンドを入力するための改良された方
法、およびあるプロセス上に位置するサービスによって
与えられるファイルへのアクセスを離れたプロセッサ上
で実行しているプロセスに与える方法も含まれる。 【0012】 【実施例】実施例において用いる参照番号は、2つの部
分を有する。即ち、下位2桁の数字は、1つの図面にお
ける番号であり、残りの桁は、図面番号である。従って
、参照番号115によって特定される項目は、図1に最
初に現れる。 【0013】次の好ましい実施例の詳細な説明は、本発
明が具体化される第7案のオペレーティング・システム
の概要から開始する。概要に続いて、付加的な題材によ
り第9案の次のような内容−−−第9案によりプロセス
に対する名前空間を生成する方法、第9案のウィンドウ
・システム、およびCPUコマンド−−−をさらに詳細
に説明する。 【0014】第9案のオペレーティング・システムの概
要:図7第9案は、種々のコンピュータおよびネットワ
ークの上で実施される汎用のマルチユーザ過般分散型シ
ステムである。 【0015】第9案は、サービス関数の線に沿って分割
される。CPUサーバにより処理の権限が大きな(過負
荷がかけられていない)マルチプロセッサに集中され、
ファイル・サーバにより記憶のための格納場所が提供さ
れ、端末によりウィンドウ・システムを操作するための
ビットマップ・スクリーンおよびマウスを備えた専用の
コンピュータがシステムの各利用者に与えられる。処理
およびファイル格納のサービスを共有することにより、
プログラマのグループに共同意識を与え、費用を償却し
、かつ管理・運営を集中化し、従って、その単純化を行
う。 【0016】各部分は、単一のプロトコルによって通信
を行うが、プロトコルは、適切なネットワークによって
提供される信頼性のあるデータ伝達層上に構築されてい
て、各サービスをルートを有するファイル木構造として
定義する。ファイルとは通常考えられないサービスに対
しても、統一された設計によって、顕著かつ有益な単純
化が可能となる。各プロセスは、そのプロセスが使用し
ているすべてのサービスへの連結を含み、それによって
それらのサービスに関するファイルへの連結も含む局部
的なファイル名空間を有する。端末の重要な仕事の1つ
は、名前空間にあるサービスによって表されるように利
用者向けに用意したシステム全体の概念(view)を
与えるようにすることである。 【0017】効率的に利用するために、本システムは、
CPUサーバ、ファイル・サーバ、および端末を必要と
する。端末は、部門別かまたはそれより大きな単位のコ
ンピュータ・センタの水準でサービスを与えることを意
図したものである。CPUサーバおよびファイル・サー
バは、大きな機械であり、調節された電源を有する空調
付きの機械室に収容することが望ましい。 【0018】以降、第9案の基本的な構成要素を述べる
。名前空間およびその使用方法を説明し、さらに第9案
の概念が種々の問題に如何にして適用できるかを解説す
る普通でないサービスの例を幾つか提示する。 【0019】CPUサーバ いくつかのコンピュータが第9案のCPUサービスを与
える。製品のCPUサーバは、25MHz MIPSの
プロセッサおよび128メガバイトのメモリを有するが
、ディスクは無く、ファイル・サーバへの毎秒20メガ
バイトのブロックDMA接続を行うシリコン・グラフィ
クス(Silicon Graphics)のパワー・
シリーズ(Power Series)の機械である。 また、これは、端末および第9案以外のシステムに接続
するためにDatakitおよびEthernetコン
トローラも備えている。オペレーティング・システムは
、forkおよびexecシステム・コールに基づくプ
ロセスおよび大部分は遠隔のファイル・サーバによって
決定されるファイルの通常の概念を与える。CPUサー
バへの接続がひとたび確立されると、利用者は、通常ど
おりに見える環境の下で、コマンド・インタプリタにコ
マンドをタイプ入力することができる。 【0020】CPUサーバは、コンパイル、テキスト処
理、およびその他のアプリケーションを実行する。CP
Uサーバは、それ自体の外部記憶装置を持たず、それが
アクセスする永久ファイルはすべて遠隔のサーバによっ
て与えられる。利用者のプロセスによって与えられるサ
ービスまたは活性なプロセスを集めたイメージなどの名
前空間の一時的な部分は、局部的に存在し得るが、CP
Uサーバがリブートされると、それらは消滅する。普通
の端末どおしがそれらのタスクに対して交換可能である
ように、第9案のCPUサーバどおしは、それらのタス
ク、即ち処理に対して交換可能である。 【0021】ファイル・サーバ 第9案のファイル・サーバは、すべての永久ファイルを
保持する。現在のサーバは、2つのプロセッサ、64メ
ガバイトのメモリ、600メガバイトの磁気ディスク、
および300ギガバイト相当の追記型(WORM)光デ
ィスク・ユニットを備えたもう1つのシリコン・グラフ
ィックスのコンピュータである。このサーバは、毎秒2
0メガバイトのDMAリンクを通して第9案のCPUサ
ーバに接続され、また通常のネットワークを通して端末
およびその他の機械に接続される。 【0022】ファイル・サーバは、クライアント(依頼
者)に対し、ディスク、ブロックまたはファイルの配列
などではなくファイル・システムを提示する。ファイル
は、木構造の枝の標識となる斜線で区切られた構成要素
によって命名され、入出力のためにバイト・レベルでア
ドレス指定される。サーバにおけるファイルの位置は、
クライアントには見ることができない。真のファイル・
システムは、WORMに存在し、磁気ディスクの2水準
のキャッシュおよびRAMを通してアクセスされる。最
近利用されたファイルの内用は、RAMに駐在して、高
速リンクを介するDMAによりCPUサーバに迅速に送
られる。この転送は、局部メモリほどは速くないが正規
のディスクよりはるかに高速である。磁気ディスクは、
WORMに対するキャッシュとして作用すると同時に、
RAMに対するバックアップ媒体として作用する。高速
リンクについては、クライアントがデータをキャッシュ
する必要がある;そのかわり、ファイル・サーバがその
すべてのクライアントに対しキャッシュ処理を集中化し
て、分散されたキャッシュの問題を回避している。 【0023】端  末 ここでは第9案に対する標準の端末をGnot(ノット
)と称する。Gnotは、限定地域で設計された機械で
あり、数百台が製造された。この端末のハードウェアは
、ディスクの無いワークステーションのようであり、4
乃至8メガバイトのメモリ、25MHzの68000プ
ロセッサ、1画素あたり2ビットで1024x1024
画素の画面、キーボード、およびマウスを備えている。 この端末は、外部記憶装置も拡張バスも無い。これは、
端末であって、ワークステーションではないからである
。毎秒2メガビットのパケット交換分散網によって、端
末がCPUサーバおよびファイル・サーバに接続される
。コンパイルのような用途には帯域幅が狭いが、端末を
意図した目的−−−ウィンドウ・システム、つまり第9
案の他の部分への多重化インタフェースを与えること−
−−には十分すぎるほどである。 【0024】ワークステーションとは異なり、Gnot
は、コンパイルを扱わない;これは、CPUサーバによ
って行われる。端末では、CPUサーバのオペレーティ
ング・システムを単一のさらに小型のプロセッサ用にビ
ットマップ・グラフィックスのサポートを付けて変更し
たものを実行させ、これを用いてウィンドウ・システム
およびテキスト・エディタなどのプログラムを実行させ
る。 ファイルは、標準のファイル・サーバによって端末網接
続を介して与えられる。 【0025】旧式の文字端末のように、すべてのGno
tは、局部的にもファイル・サーバ上にも独自の記憶装
置を持っていないので、同等である。この端末は高価で
はないので、研究センタの各人が2台;1台は職場に、
もう1台は自宅に持つことができる。自宅に居てGno
tで仕事をしている人は、職場と全く同じシステムを見
ることになる。これは、ファイルおよび処理資源がすべ
て効率的に共有・維持できれば、それらは職場に残って
いるからである。 【0026】ネットワーク 第9案は、構成要素を接続する種々のネットワークを有
する。CPUサーバおよびファイル・サーバは、ブロッ
クDMAコントローラを介して通信を行う。これは、例
えばコンピュータ・センタまたは部門ごとの処理資源の
規模に対して実際的であるにすぎない。さらにはなれた
機械どおしは、EthernetまたはDatakit
などの通常のネットワークで接続される。端末またはC
PUサーバは、性能面を考慮しなければ、遠隔のファイ
ル・サーバを全く透過的に利用することができる。Da
takitネットワークは全国的な範囲にわたるので、
第9案のシステムは、大規模に構築することができる。 費用を低く抑えるために、Gnotは、標準の電話線お
よび単一チップインタフェースを用いる安価なネットワ
ークを使用する。(処理効率は、毎秒約120キロバイ
トとかなり高い。)端末は単に通信を仲介する−−−フ
ァイル・サーバに接続するようにCPUサーバに指示は
するが、結果としての通信には関与しない−−−だけな
ので、端末の対する比較的低い帯域幅も、システムの全
体的な性能には影響がない。 【0027】図7は、第9案の構成要素およびトポロジ
ー(位相幾何学的配置表現)を示す図である。第9案の
システム701は、ファイル・サーバ705、CPU7
05、およびGnot711から成る。CPU703お
よびファイル・サーバ705のクラスタ717、および
Gnot711のクラスタ719は、全国的な長距離通
信ネットワーク715によって接続されている。クラス
タ719の内部のGnot711は、LANなどの分散
型ネットワーク713によって接続され、クラスタ71
7の内部のファイル・サーバ705およびCPU703
は、高速DMAリンク709によって接続されている。 【0028】名前空間 第9案には2種類の名前空間がある。即ち、ネットワー
ク上の種々のサーバの名前のグローバル(全体)空間お
よびプロセッサから見えるファイルおよびサーバのロー
カル(局所)空間である。Datakitに接続されて
いる機械およびサーバの名前は、階層的であり、例えば
、nj/mh/astro/helixと言うように、
(大まかに)地域を、そして建物、部門、部門における
機械を定義する。ネットワークによって、その機械に対
する命名が為されるので、グローバル名の命名の問題は
、第9案において直接扱う必要はない。しかし、第9案
の基本的な作用として、ネットワーク・サービスをプロ
セスごとに基づくローカル名前空間に結び付けることが
あげられる。このローカル名前空間のきめ細かい管理は
、カスタマイズ可能性、透過性、および異種混交性の問
題に取り組むのに使用される。 【0029】第9案のサービスと通信するためのプロト
コルは、ファイル指向であり、すべてのサービスによっ
てファイル・システムを実現しなければならない。つま
り、局所的なものであれ全体的なものであれ、各サービ
スは、サーバの名前空間と称する階層へと集められるフ
ァイル状のオブジェクトの集合へと配置される。ファイ
ル・サーバにとっては、これは些細な必要条件である。 他のサービスについては、さらに想像的にならなければ
ならない場合がある。例えば、印字サービスであれば、
プロセスが印字されるべきファイルを生成する場所のデ
ィレクトリとして実施される。その他の例は次の節で説
明するので、僅かな間、ネットワーク中に分布する普通
のファイル・サーバの集合のみを考えることにする。 【0030】プログラムがあるサービスを(そのネット
ワークに本来あり第9案に含まれない機構を用いて)呼
び出すと、プログラムは、そのサービスの名前空間のル
ートに接続される。通常、ファイル指向のシステム・コ
ールの集合へとローカル・オペレーティング・システム
によって仲介されるようなプロトコルを用いて、プログ
ラムは、前記の名前空間におけるファイルに対し、オー
プン、生成、削除、読出し、および書込みを行うことに
よって、サービスにアクセスする。 【0031】ネットワーク上で利用可能なサービスの集
合から、第9案の利用者は、所望のものを選択する:個
人的なファイルが駐在するファイル・サーバ、恐らくは
、データが蓄えられている他のファイル・サーバ、また
はグループの計画のためのソフトウェアが書かれている
部門的なファイル・サーバ。それらの種々のサービスの
名前空間は、attachと称する第9案の基本的な演
算子によって、収集されて利用者自身の個人的な名前空
間に連結される。利用者の名前空間は、使用中のサービ
スのすべての空間の統一によって形成される。ローカル
名前空間は、各利用者に対し、一般には端末ごとに、ロ
ーカル・オペレーティング・システムによって作られる
。名前空間は、プロセスごとのレベルで変更可能である
が、実際には、ログ・イン時に作られ、その利用者のす
べてのプロセスによって共有される。 【0032】システムのログ・インするには、端末にお
いて、何れのファイル・サーバを接続するべきかを端末
に命令する。端末は、サーバを呼び出し、利用者の真正
を証明し(以下参照)、さらにそのサーバからオペレー
ティング・システムをロードする。次に、端末は、利用
者の個人的なディレクトリにあるプロファイル(pro
file)と称するファイルを読む。プロファイルには
、何れのサービスがデフォルトで使用されるべきか、ま
たそれらをローカル名前空間の何れの場所に結び付ける
べきかを明示するコマンドが、入っている。例えば、使
用されるべき主なファイル・サーバは、ローカル名前空
間のルート / に結び付けられ、プロセス・ファイル
・システムは、ディレクトリ/procに結び付けられ
る。その後、プロファイルは、ウィンドウ・システムを
開始させるのが一般的である。 【0033】ウィンドウ・システムにおける各ウィンド
ウ内で、局所的にコマンドを実行する場合に使用される
コマンド・インタプリタが、プロファイルによって作ら
れた名前空間において解釈されたファイル名を用いて、
実行される。コンパイルなどの演算集約的なアプリケー
ションについては、利用者は、コマンドを実行させるた
めにCPUサーバを(自動的に、または名前によって)
選択するコマンドcpuを走らせる。cpuとタイプし
た後、利用者には、コマンド・インタプリタからの正規
のプロンプトが見える。しかし、そのコマンド・インタ
プリタは、cpuコマンド自体と同じ名前空間−−−デ
ィレクトリも同じ現在のディレクトリ−−−にあるCP
Uサーバ上を実行している。端末は、その名前空間の記
述をCPUサーバに送り、そのCPUサーバにおいて、
同一の名前空間を作って、端末によって作られたシステ
ムのカスタマイズされた概念が、CPUサーバ上にある
ものと同じにする。(名前空間の記述は、名前空間それ
自体以外で使用されることが多いので、CPUサーバは
、可能であれば、端末による仲介を要求せずに高速リン
クを使用する。)cpuコマンドは、後続のコマンドの
効率に影響を与えるだけであり、利用可能なサービスや
それらアクセス方法には無関係である。 【0034】サービスを見つけるサービスも含めて、第
9案において利用可能なサービスの大きなカタログがあ
るが、使用法およびこの設計の可能性を説明するには、
2、3のサービスで十分である。 【0035】プロセス・ファイル・システムローカル・
サービスの一例は、「プロセス・ファイル・システム」
であり、これによって、ファイル指向インタフェースに
よるプロセスの実行の検査およびデバッグが可能となる
。 【0036】プロセス・ファイル・システムのルートは
、慣例どうりディレクトリ/procに結び付ける。 (第9案において慣例は重要である;名前空間は、いや
おうなしに作られるが、多くのプログラムには、名前空
間がある形式を持つことを必要とするような慣例的な名
前が組み込まれる。プログラム/bin/rc(コマン
ド・インタプリタ)が何れのサーバから来るかは重要で
はないが、そのプログラムは、それを要求するコマンド
によってアクセス可能となるような名前を持たなければ
ならない。)結び付けた後は、ディレクトリ/proc
それ自体に、システムにおける各ローカル・プロセスに
対して、そのプロセス特有の数的識別子を有する1つの
サブディレクトリが含まれる。(遠隔のCPUサーバで
走っているプロセスも見えるようにすることができる;
これは、後述する。)各サブディレクトリには、そのプ
ロセスの概念を実施するファイルの集合が含まれる。例
えば、/proc/77/memには、プロセス番号7
7の仮想メモリのイメージが入っている。第9案の/p
rocにより、他のファイルを通して他の関数が実施さ
れる。ここで、各プロセスに対して与えられるファイル
のリストを掲げる。プロセス・イメージの仮想メモリ;
ファイルにおけるオフセットは、そのプロセスにおける
仮想アドレスに対応する。プロセスの制御動作;このフ
ァイルに(writeシステム・コールによって)送ら
れたメッセージによって、プロセスは、停止、終了、実
行の再開などを行う。プログラムの発生源であるファイ
ル;これは、一般に、対象のプロセスのシンボル・テー
ブルを調べるためにデバッガによって使用されるが、名
前は別としてすべての点においてオリジナル・ファイル
である;従って、そのプログラムを新たな例示するよう
に、コマンド・インタプリタに対し「/proc/77
/text」とタイプ入力することもできる。適切な許
可を有するプロセスであれば、他のプロセスのノート(
note)ファイルを書いて、プロセス間通信のために
非同期メッセージをそれに送ることができる。このファ
イルは、例えばプロセスがゼロで割ると言うような誤動
作をする場合に、(毒入りの)メッセージを送るために
、システムによっても使用される。プロセス状態の一定
形式のASCII表現;これには、そのプロセスが実行
される元のファイルの名前、それが消費したCPU時間
、現在の状態などが含まれる。 【0037】状態(status)ファイルは、異種混
交性および過般性がシステムの機能のためにファイル・
サーバ・モデルによって如何に処理され得るかを説明す
るものである。cat /proc/*/status
というコマンドによって、システムにおけるすべてのプ
ロセスの状態が(読むことは可能であるが幾分見にくく
)表示される;実際には、プロセス状態コマンドpsが
、そのように集められたASCIIテキストを書式化す
るものである。psに対するデータ源は、1ページの長
さであり、機械を問わず完全な過般性がある。いくつか
種類の異なる機械のプロセスに対するファイルが/pr
ocに入っている場合でも、同様の実施が有効である。 【0038】/procが与えるサービスが、多様では
あっても、ファイルとしてのプロセスの概念を十分使用
していないことは、全く無意味である。例えば、プロセ
スを終了させるために、そのプロセス・ファイルを削除
しようとしても無駄であり、プロセス・ファイルを生成
することによって、新たなプロセスを開始することもで
きない。ファイルは、プロセスの有効な概念(acti
veview)を与えるが、ファイルを文字どおり表す
わけではない。 サービスをファイル・システムとして設計する場合、こ
の区別が重要である。 【0039】第9案のサービスのアーキテクチャの概要
:図1 既に述べたように、サービスは、ファイル・システムと
して実施される、つまり、第9案のオペレーティング・
システムによってコンピュータ上で実行中のプロセスに
とっては、サービスはファイルの集合として映る。プロ
セスは、サービスによって与えられる「ファイル」にフ
ァイル読出し操作を行うことによって、サービスからデ
ータを得ることができ、それらの「ファイル」にファイ
ル書込み操作を行うことによって、サービスにデータを
与えることができる。プロセス・サービスによって与え
られる「ファイル・システム」について既に詳細に説明
したように、サービスは、実際にファイルを保持する必
要はなく、プロセスによるファイル操作への要求に対し
、単に、それらを保持しているかのように反応するだけ
でよい。例えば、プロセスがサービスによって保持され
ているある「ファイル」を読む場合、サービスは、その
「ファイル」を読むプロセスにデータを与えなければな
らない。 【0040】サービスとプロセスとの間の関係の概要を
図1に示す。サービスのアーキテクチャ101は、プロ
セスが1つまたはそれ以上のサービス123にアクセス
するためにファイル・システムを如何に使用するかを示
している。プロセス102は、Gnot711またはC
PU703の何れかにおいて実行中であり、サービスは
、プロセス102が実行中のプロセッサに対して局所的
に実施されることもあれば、ファイル・サーバ705の
ような遠隔の装置において実施されることもある。 【0041】図1に示したように、各サービスは、その
サービスを使用するプロセッサ102に1つ以上のファ
イルの木構造を与える。ファイルの木構造は、データ・
ファイル131とディレクトリ・ファイル127および
129とから成り立つ。ディレクトリ・ファイルは、フ
ァイルのリストが入っているファイルである。ディレク
トリ・ファイルに掲げられたファイルは、ディレクトリ
・ファイルかデータ・ファイルの何れかである。ファイ
ル木構造125(a)から分かるように、データ・ファ
イル131B、CおよびDが、ファイル木構造の「葉」
であるのに対し、ディレクトリ・ファイル129は、そ
の木構造が分岐する点を占める。木構造全体の根元には
、単一のルート・ディレクトリ・ファイル127がある
。サービス123中の各ファイルは、ファイル名を有す
る。好ましい実施例では、ファイル名は、文字列である
。 【0042】プロセス102は、第9案のオペレーティ
ング・システムによって与えられるファイル・システム
関数へのコールによって、サービス123中のファイル
にアクセスする。関数には主な種類が2つある。ファイ
ル・ロケータ関数(FL)113;ファイルを位置づけ
る。ファイル・アクセス関数(FA)111;ファイル
・ロケータ関数113によってファイルが位置づけられ
た後に、そのファイルをアクセスする。ファイル・ロケ
ータ関数113へのコールは、矢印107で表し、ファ
イル・アクセス関数111へのコールは、矢印105に
よって表す。 【0043】前述のように、第9案の各プロセス102
は、名前空間に関係付けられている。プロセス102の
名前空間により、サービス123によって与えられる何
れのファイルにプロセス12がアクセスできるかが決定
される。好ましい実施例におけるプロセス102の名前
空間は、ファイル木構造125および(または)それら
の木構造の下位木構造から構成させる単一のファイル木
構造117からなる。このように、ファイル・ロケータ
関数113によって維持・使用される名前空間115(
o)は、プロセス102(a)に対する名前空間である
。図1から分かるように、プロセス102(a)の名前
空間には、サービス123(a)からの125(a)お
よびサービス123(k)からのファイル木構造125
(k)を含むファイル木構造117(o)が、入ってい
るが、サービス123(b)からのファイル木構造12
5(b)は含んでいない。ファイル木構造117(o)
は、プロセス102のファイル木構造117(o)のデ
ィレクトリ・ファイル「X」を木構造125(a)のル
ートと同じにし、かつファイル木構造117(o)のデ
ィレクトリ・ファイル「Y」をファイル木構造125(
k)のルートと同じにすることによって、構成された。 「X」および「Y」それ自体が如何にして名前空間11
5(o)に存在するようになったかは、詳細に後述する
。 【0044】名前空間115(o)において、ファイル
は、パス名によって位置が特定される。パス名は、位置
が特定されるべきファイルの名前、およびそのファイル
の位置を特定している元のファイル木構造における点か
らそのファイルまでのすべてのディレクトリ・ファイル
の名前を含むファイル名リストである。そのファイルの
位置を特定している元のファイル木構造における点は、
ワーキング・ディレクトリと称する。従って、ワーキン
グ・ディレクトリが、ディレクトリ・ファイルXならば
、前記のパス名は、A/Cである。A/Cにおける文字
「/」は、パス名における名前を区切る役目をする。 さらに、任意のファイルは、その完全なパス名−−−ル
ート・ディレクトリを表す文字「/」、ルート・ディレ
クトリとそのファイルとの間のすべてのディレクトリ名
、およびそのファイル名−−−を指定することによって
位置を特定することができる。それらのファイル名も「
/」によって区切られる。従って、名前空間115(o
)におけるファイルCの完全なパス名は、/X/A/C
である。 【0045】第9案においては、多数のプロセス102
が、1つの名前空間を共有する。ある名前空間を共有す
るプロセス102によって、1つのプロセス・グループ
103が構成される。従って、プロセス・グループ10
3(o)に所属するプロセスは、ファイル木構造117
(o)によって定義される名前空間115(o)を共有
し、一方、プロセス・グループ103(z)におけるプ
ロセスは、名前空間115(z)を共有する。プロセス
は、第9案において、システム・コール「fork」に
よって生成される。新たに生成されたプロセス102は
、その「fork」システム・コールを行ったプロセス
102と同じ名前空間115に関係付けられた状態を維
持するので、そのforkシステム・コールを行ったプ
ロセス102と同じプロセス・グループに属する。プロ
セス102がシステム・コール「forkpgrp」を
行うと、新たなプロセス・グループが確立される。この
コールは、引数を1つだけ持つ;即ち、新たなプロセス
・グループがプロセス102の古い名前空間105のコ
ピーを受け取るか、または最小限のデフォルトの名前空
間105を受け取るかを示すフラグである。システム・
コールを実行することによって、そのシステム・コール
を行っているプロセス102は新たなプロセス・グルー
プに置かれる。forkpgrpシステム・コールによ
って、プロセス102に対し新たな名前空間115が確
立されると、新たな名前空間115における変化は、そ
のforkpgrpシステム・コールを行っているプロ
セス102が以前に所属していたプロセス・グループ1
03の古い名前空間には、影響を与えない。 【0046】プロセス・グループ103に属するプロセ
スは、そのプロセス・グループに対する名前空間115
を変更することができる。これを行うには、プロセスは
、2つの名前空間修正関数のうちの1つを使用する。 第1の関数は、「bind(結合)」であり、その名前
空間に既に存在する名前を新たなパス名によって指定さ
れるファイルと同じにする。bindの実行後は、古い
パス名によって指定されたファイルへの参照は、新たな
パス名によって指定されるファイルへの参照へと変換さ
れる。例えば、名前空間115(o)においてAという
ルートを有する下位木構造をその名前空間においてHと
いうルートを有する下位木構造で置き換える場合には、
名前空間115(o)における「bind(”/Y/H
”,”/X/A”)」というシステム・コールが使用さ
れる。このbindの後、パス名/X/A/Kは、下位
木構造HのファイルKを参照することになる。 【0047】第2の関数は、「mount」であり、名
前空間に既にある名前をサービス123のルートと同じ
にするものである。詳細は後述するが、サービスのルー
トは、小さい整数のタファイル記述子(ファイル・ディ
スクリプタ)によって表される。従って、マウント関数
「mount(FD,”/X”)」によって、ファイル
木構造117(o)のディレクトリ名「X」は、サービ
ス123(a)のファイル木構造125(a)のルート
と同じになる。マウントした後は、パス名/X/Aによ
ってファイル木構造125(a)のファイルAが参照さ
れる。 【0048】第9案における「mount」および「b
ind」の更なる改良点は、パス名どうしの間またはフ
ァイル記述子とパス名との間に3種類の異なる関係を指
定できることである。第1の関係は、置換である。この
関係が指定された場合、新たな名前またはファイル記述
子によって参照されるものが、すべて古い名前によって
参照されるものに置き代わる。第2および第3の関係に
より、結合ディレクトリと称するものが確立される。結
合ディレクトリが確立されると、bind関数において
使用される古い名前と新たな名前は、共にディレクトリ
・ファイルを示さなければならず、またmountコマ
ンドにおける古い名前は、ディレクトリ・ファイルを示
さなければならないが、他方、ファイル記述子は、サー
ビス123中のファイル木構造のルートを示さなければ
ならない。bindまたはmountの作用は、新旧の
ディレクトリ・ファイルの結合体である新たなディレク
トリを確立することである。関係beforeによって
、古いディレクトリの前に新たなディレクトリが探査さ
れるような結合ディレクトリが確立され、もう1つの関
係afterによって、古いディレクトリの後に新たな
ディレクトリが探査されるような結合ディレクトリが確
立される。従って、結合コマンド「bind(”/Y/
H”,”/X/A”,BEFORE)」により、ファイ
ルI、J、KがファイルBおよびCより先行するような
ディレクトリが確立され、ファイル・ロケータ関数11
3がパス名/X/A/Cに応答する場合、その関数は、
まずディレクトリHを通って探査し、次にディレクトリ
Aを通って探査することになる。ロケータ関数がファイ
ルを求めてディレクトリを探査する順序をこのように決
定することにより、結合ディレクトリは、UNIXのよ
うなオペレーティング・システムにおけるリスト探査に
よって与えられる制御と同じ種類の制御を与える。 【0049】名前空間の配置を変えずにファイルの位置
を特定するファイル・ロケータ関数113は、引数とし
てパス名を取り、ファイル記述子を返す。ここにおいて
、ファイル記述子は、ファイルを参照するためにファイ
ル・アクセス関数において使用される小さい整数である
。ファイル・ロケータ関数113には、パス名によって
指定されたディレクトリ・ファイルをプロセス102の
ワーキング・ディレクトリに変更する「chdir」、
およびパス名によって指定されたファイルを開く「op
en」が含まれる。「chdir」および「open」
は、ワーキング・ディレクトリのファイルおよび開かれ
たファイルに対するファイル記述子をそれぞれ返す。さ
らに、「create」関数は、パス名において指定さ
れたファイルが生成されると言う点を除けば、「ope
n」と同様に作用する。 そして、ファイル・アクセス関数105は、ファイルの
読出し・書込み、ファイルの状態の設定・獲得、および
ファイルのクローズを行う場合に、ファイル・ロケータ
関数によって与えられるファイル記述子を使用する。 【0050】アーキテクチャ101において、ファイル
・システム109は、プロセス102によって行われる
ファイル・アクセス・コール105およびファイル・ロ
ケータ・コール107をサービス・ファイル操作要求に
変換する。各サービス・ファイル操作要求によって、サ
ービス123に、そのファイル木構造125のうちの1
つにあるファイルに対してある操作を実行することを要
求する。このような要求には2種類ある:矢印119で
示したサービス・ファイル・アクセス要求、および矢印
121で示したシステム・ファイル・ロケータ要求であ
る。あるサービス123に対する要求119および12
1は、関数呼び出し(ファンクション・コール)の形式
を取り、他のサービス123に対しては、要求はファイ
ル・プロトコルの形式を取る。関数読出しの場合、ファ
イルは、ファイル名またはファイル記述子(descr
iptor)によって表され;ファイル・プロトコルの
場合、ファイルは、ファイル名またはファイル識別子(
identifier)によって表される。以降の説明
のために、ファイル記述子およびファイル識別子をファ
イル指定子(specifier)という用語に包括す
る。 【0051】ファイル・システム109において、プロ
セス102によって使用されるファイル記述子は、サー
ビス123によって与えられるファイル・ハンドルqi
dに関係付けられる。この関係付けは、ファイル記述子
のファイル識別子への関係付け、およびファイル識別子
のqidへの関係付けによって、直接的または間接的に
行われる。プロセス102によって使用されるファイル
記述子とqidとの間に関係付けがある場合、プロセス
102は、qidによって表されるファイルへの接続(
connection)があると称する。同様に、サー
ビス123において、qidは、1つ以上のファイル指
定子に関係付けられている。所与のqidに関係付けら
れたファイル指定子を有するシステム・ファイル要求を
発生させるファイル・システム・コール105によって
、qidによって指定されるファイルに対してファイル
操作が行われることになる。 【0052】ファイルを名前、即ちサービス123にお
けるqidではなく、名前、即ちファイル指定子によっ
て表すことの利点は、異なるサービスによって、名前お
よびqidの間に異なる関係を確立することができるこ
とである。例えば、前記のプロセス・サービスなどのサ
ービスにおいては、すべてのプロセスによって使用され
るファイル名がファイルの単一の集合を示すことが有益
であり;詳細に後述する予定の8.5ウィンドウ・サー
ビスのような他のサービスでは、各プロセスによって使
用されるファイル名は、そのプロセス固有のファイル集
合を示す。結果として、アーキテクチャ101における
ファイル名は、Cなどのプログラミング言語における変
数の性質と類似の性質を有する。ファイル名のあるもの
は、グローバルな静的変数名に似ている;グローバルな
静的変数名が、その変数名が現れるすべてのコードにお
いて同一のメモリ位置を示すように、プロセス・サービ
スによって与えられるようなファイル名は、すべてのプ
ロセスにおいて同じファイルを示す。ファイル名の中に
は、局所的変数名に似たものがある;局所的変数名が、
プロシージャの呼び出しの度に異なるメモリ位置を示す
ように、8.5サーバによって与えられるようなファイ
ル名は、各プロセスにおいて異なるファイルを示す。フ
ァイル名が何れの性質を有するかは、勿論、そのファイ
ルを与えるサービス123によって決定される。変数に
ついて用いられる用語との類似性により、サービス12
3が、そのファイルのインスタンスを与えると言える。 従って、プロセス・サービスにより、そのファイルの各
々の単一のインスタンスが与えられ、そのサービスによ
って与えられるファイルの1つへの接続を有するプロセ
ス102は、そのファイルへの接続を有する他のすべて
プロセス102と同じファイルにアクセスすることがで
きる。一方、ウィンドウ・サービスは、そのファイル木
構造のルートとの接続を確立する各プロセス102に対
し、そのファイル木構造におけるファイルの別個のイン
スタンスを与え;ウィンドウ・サービスによって与えら
れるファイルとの接続を有するプロセス102は、その
ファイルの多数のインスタンスの1つへの接続を有する
。 【0053】各サービス123は、次の種類のサービス
・ファイル・ロケータ要求121を処理することができ
る。attach:指定されたサービス123における
ファイル木構造のルートに対するファイル指定子が与え
られると、そのルートに対するqidをファイル・シス
テム109に返す。walk:所与の名前を有するファ
イルを求めてファイル指定子によって指定されたディレ
クトリ・ファイルを探査し、かつ求めるファイルが見つ
かった場合、そのファイルのqidにファイル指定子を
関係付けて、そのqidを返す。create:ファイ
ル指定子によって指定されたディレクトリ・ファイルに
新たなファイルを生成し、そのファイルに指定された名
前を与え、そのファイル指定子を新たなファイルに対す
るqidに関係付け、さらにそのqidを返す。rem
ove:ファイル指定子によって指定されたファイルを
サーバから削除し、ファイル指定子をqidから切り放
し、さらに削除中のファイルの名前を返す。 【0054】さらに、各サービスは、次の種類のサービ
ス・ファイル・アクセス要求を処理することができる。 open:ファイル・アクセス操作のために、ファイル
指定子によって指定されたファイルを準備し、そのファ
イル指定子に関係付けられたqidを返す。clone
:ファイルを表す第1のファイル指定子およびファイル
をまだ表していない第2のファイル指定子が与えられた
場合、第2のファイル指定子を第1のファイル指定子に
関係付けられたファイルに関係付ける。read:ファ
イル指定子、そのファイルにおけるオフセット、および
総数が与えられた場合、オフセットで始まる総数で指定
された数のバイトを読み出す。write:ファイル指
定子、そのファイルにおけるオフセット、総数、および
データが与えられた場合、オフセットで始まる総数で指
定された数のバイトにデータを書き込む。clunk:
ファイル指定子が与えられた場合、ファイル指定子とそ
のファイルとの間の関係付けを終了させる。stat:
ファイル指定子およびファイル状態情報を得るためにサ
ービスによって必要とされる情報が与えられた場合、そ
のファイルの状態を返す。wstat:ファイル指定子
およびファイルの状態を変更するためにサービスによっ
て必要とされる情報が与えられた場合、そのファイルの
状態を変更する。 【0055】すべてのサービス123は、前記の操作を
実施できなければならないが、操作が、実際には、全く
作用しなかったり、エラーを生じたりする場合もある。 例えば、サービス123が、プリンタで、書込み専用「
ファイル」しか実施できない場合には、読出し操作によ
ってエラーを生じることになる。 【0056】カーネル・サービスおよびプロトコル・サ
ービス:図2 第9案の好ましい実施例には、2種類のサービスがある
。カーネル・サービスは、サービス・ファイル操作要求
205および207が、第9案のカーネル関数の呼び出
しによって実施されるサービスである。プロトコル・サ
ービスは、サービス・ファイル操作要求205および2
07が、第9案のファイル・プロトコルによって実施さ
れるサービスである。プロトコル・サービスにおいて、
各サービス・ファイル操作要求は、プロセス102のた
めにプロトコル・サービスに対して送られる往信メッセ
ージ(tmessage)によって開始される。プロト
コル・サービスは、その往信メッセージに対し、プロト
コル・サービスからそのプロセスに返される情報を入れ
た返信メッセージ(rmessage)によって応答す
る。プロトコル・サービスに対するサービス・ファイル
操作要求を構成する往信メッセージおよび返信メッセー
ジは、トランザクション(処理)と称する。例えば、プ
ロトコル・サービスに対するサービス・ファイル・リー
ド操作要求は、次のようなリード往信メッセージ(tr
ead)およびリード返信メッセージ(rread)か
らなるリード・トランザクションである。 tread: 型指定子、ファイル識別子、タグ、オフ
セット、総数 rread: 型指定子、ファイル識別子、タグ、総数
、データ ファイル識別子は、ファイル・システム109における
ファイル記述子、およびファイル・システム109およ
びプロトコル・サービスにおけるqidに関係付けられ
ている。treadメッセージには、このメッセージが
リード往信メッセージであることを示す型指定子、ファ
イル識別子、このメッセージを識別するタグ、読出しを
開始するべきファイル内のオフセット、およびバイト数
が、含まれる。rreadメッセージには、このメッセ
ージがリード返信メッセージであることを示す型指定子
、ファイル識別子、このメッセージを識別するタグ、実
際に読み出されるバイト数、およびデータそのものが、
含まれる。 読出しの結果、エラーとなった場合、プロトコル・サー
ビス209は、rreadメッセージの代わりに、エラ
ー・メッセージを返す。それは次のような形式である。 rerror: 型指定子、タグ、エラー・メッセージ
文字列【0057】各プロトコル・サービス209は、
先に掲げたサービス・ファイル操作要求のそれぞれに対
応するトランザクションを実行できなければならない。 プロトコル・サービス209に求められることは、これ
だけであるから、プロトコル・サービス209は、マウ
ント・サービス203が実行しているプロセッサのアー
キテクチャと完全に異なるアーキテクチャを有するプロ
セッサ上に実現しても良い。プロトコル・サービス20
9を使用するために必要なことは、それによってプロト
コルが送受信され得るようなプロトコル・サービス20
9への接続だけである。さらに、好ましい実施例では、
プロトコルによって送りかつ戻されるデータは、所与の
ファイル木構造を与えるすべてのプロトコル・サービス
209によって使用される所定の書式を有する。従って
、プロセス102は、このプロセス102がその上で実
行中の機械の種類またはプロトコル・サービス209が
その上で実行中の機械の種類にかかわらず、所与のファ
イル木構造を与える任意のプロトコル・サービスを使用
することができる。 【0058】図2において、プロトコル・サービス(P
S)209は、前記のサービス・ファイル・ロケータ要
求およびサービス・ファイル・アクセス要求に対応する
ファイル・プロトコルを伴うファイル・ロケータ・トラ
ンザクション205およびファイル・アクセス・トラン
ザクション207を実行する。特殊なカーネル・サービ
スであるマウント・サービス203が、サービス・ファ
イル・ロケータ要求を指定する関数コール217および
サービス・ファイル・アクセス要求を指定する関数コー
ル219をファイル・システム109から受信する。次
に、マウント・サービス203は、これらの関数コール
に応じて、プロトコル・サービス209により対応する
トランザクションを行う。このトランザクションを行う
ために、マウント・サービス203は、多数の通信サー
ビス215を利用する。このような通信サービスには、
2種類ある:ネットワーク通信サービス(NS)214
およびプロセス間通信サービス(IPS)216である
。ネットワーク通信サービスは、プロセス102が実行
中のCPUにネットワークを介して接続されている遠隔
のプロトコル・サーバ213との通信にネットワークを
利用するものである。プロセス間通信サービス216は
、局所的なプロトコル・サーバ211との通信にプロセ
ス間通信システムを利用するものである。好ましい実施
例において、IPS216によって使用されているプロ
セス間通信システムは、UNIXオペレーティング・シ
ステムにおけるものと同様のパイプ・システムである。 通信サービス215が、プロトコル・サーバ209に接
続されると、このことが、ファイル記述子によって表さ
れる。「マウント」システム・コールで使用されるのは
、このようなファイル記述子である。 【0059】括弧内の参照番号によって分かるように、
ネットワーク通信サービス215は、図7の分散ネット
ワーク713、長距離ネットワーク715、およびDM
Aネットワーク705を使用することができる。局所的
プロトコル・サービス211は、Gnot711に対す
る8.5サービスのようなサービスの場合もあり、さら
には、プロセス間通信手段によって所与のプロセス10
2と通信を行う別のプロセス102の場合もある。既に
指摘したように、プロトコル・サービス209とマウン
ト・サービス203のようなカーネル・サービスとの間
の区別は、位置ではなく、プロトコル・サービス209
がトランザクションをマウント・サービス203によっ
て行うという点に過ぎない。次の8.5サービスの説明
で詳細に示すとおり、プロトコル・サービス209に関
するこの特徴の利点は、局所的なプロセッサ上を走って
いるプロセス102および図7のCPUのような遠隔の
プロセッサ上を走っているプロセス102が、共に同一
のプロトコル・サービス209を使用できることである
。 【0060】第9案のファイル操作の実施以下において
、第9案のファイル操作の実施例を説明する。最初に、
ファイルを表すために使用されるデータ構造体ならびに
そのデータ構造体とプロセス102およびサービス12
3との関係を説明し、次に、プロセスの名前空間115
を表すために使用されるデータ構造体、そして最後に、
典型的なファイル操作の例を説明する。 【0061】プロセス102とファイルとの間の接続の
表現:図3〜5 プロセス102が接続を有する先のファイルは、チャネ
ル・データ構造体によって表される。あるファイルに対
するチャネル・データ構造体は、少なくとも、そのファ
イルを与えているサービス123を指定し、かつサービ
ス123によって与えられるqidを、プロセス102
がそのファイルを示すために使用するファイル記述子に
関係付ける。サービス123がプロトコル・サービス2
09である場合には、そのチャネルは、さらに、そのフ
ァイル・プロトコルにおけるファイルに対して使用され
るファイル識別子およびプロトコル・ファイルに対する
プロトコル・チャネルを、ファイル記述子に関係付ける
。 【0062】図3において、チャネル・データ構造体3
01は、次の構成要素を有する。即ち、ロック303:
1つ以上のプロセスが同時にチャネル301にアクセス
を有することを防ぐ。参照指数(ref)307:チャ
ネルが他のカーネル・データ構造体によって指し示され
たかどうかを示す。ネクスト/オフセット・フィールド
309:チャネル301が使用されていない場合、この
フィールドは、使用されていないチャネル301のリス
トに格納されていて、さらにこの場合、使用されていな
い次のチャネル301を示す;チャネル301によって
表されるファイルがアクセスされている場合、このフィ
ールドは、そのファイルへの現在のオフセットを示す。 カーネル・サービス情報(KSINFO)311:チャ
ネル301によって表されるファイルを与えるカーネル
・サービスを指定する情報が、次の2つのフィールドに
収容される−−−種類313:このフィールドにより、
チャネル301によって表されるファイルがアクセスさ
れる手段としてのカーネル・サービスが指定され;プロ
トコル・サービス209に対しては、種類フィールド3
13によってマウント・サービス203が指定される;
装置(DEV)315:このフィールドにより、カーネ
ル・サービスによって表される特定の装置が指定され;
マウント・サービス203の場合は、装置フィールド3
15により、チャネル301によって表されるファイル
を与えるプロトコル・サービス209が指定される。ア
クセス情報(AINFO)317:ファイル・アクセス
を行うために必要な情報が、次の3つのフィールドに収
容される−−−モード319:チャネルによって表され
るファイルが如何にアクセスされるかを示す;フラグ3
19:ファイルに関する状態情報を収容する;qid3
23:ファイルを与えるサービスが、そのファイルに割
り当てたqidである。マウント情報(MINFO):
チャネル301によって表されるファイルのパス名に影
響を及ぼすbindおよびmountに関する情報がど
こにあるかを示す。mountptr327:bind
およびmountに関する情報があるデータ構造体への
ポインタである。mountid329:mountp
tr327によって示されるデータ構造体の識別子であ
る。ファイル識別子(FID)331:マウント・サー
ビス203がチャネル301によって表されるファイル
を与えているプロトコル・サービス209に与えるファ
イル識別子であり、かつそのファイルが接続されている
限り、プロトコル・サービス209がそのファイルに対
するqid323に関係付けるファイル識別子である;
好ましい実施例において、チャネル301が生成された
とき、ファイル識別子331は、各チャネル301に対
し固有の値に設定される。補助情報333:装置の種類
313によって意味が変わる情報。プロトコル・サービ
ス情報(PSINFO)335:チャネル301によっ
て表されるファイルを与えているプロトコル・サービス
にファイル・プロトコルが如何にして送られるかを示す
情報である。プロトコル・チャネル(PCHAN)33
7:現在のチャネル構造体によって表されるファイルに
関するトランザクションのために使用される通信サービ
ス215を表すチャネル構造体301へのポインタであ
る。mqid339:チャネル301によって表される
ファイルを収容しているプロトコル・サービスにおける
ファイル木構造のルート・ディレクトリのqidである
。 【0063】各プロセス102は、そのプロセスが接続
を有する先のファイルの集合に関係付けられている。こ
のファイルの集合には、プロセス102の祖先(以前の
代のプロセス)によって確立された接続の接続先であり
、かつプロセス102が「fork」システム・コール
によって生成されたときに、それによって「継承」され
たファイル、およびプロセス102自体によって確立さ
れた接続の接続先のファイルが、含まれる。この関係付
けは、図4に示したデータ構造体401によって達成さ
れる。さらに、データ構造体401は、前記の集合に属
する各ファイルを、プロセス102がそのファイルを参
照するために使用するファイル記述子に関係付ける。 【0064】データ構造体401へのアクセスするため
の開始点は、プロセス102に対するユーザ・データ構
造体403である。ユーザ・データ構造体403におけ
るポインタ411は、ファイル記述子の配列(FDA)
413を示す。ファイル記述子の配列413は、ファイ
ル記述子(FD)417によってインデックス付けされ
たチャネル401へのポインタの配列である。あるファ
イルが、プロセス102に接続されたファイルの集合に
属する場合、そのファイルに対するファイル記述子に対
応する配列413におけるエントリ(FDAE)415
には、そのファイルに対するチャネル構造体301への
ポインタ423が入る。このようなチャネル構造体は、
図4においてファイル・チャネル構造体419として現
れる。プロセス102が接続される接続先のファイルの
集合に対応するファイル・チャネル419の集合がある
。好ましい実施例において、ファイル記述子の配列41
3は、100の要素を有するので、各プロセス102は
、100のファイルに接続することができる。 【0065】既に指摘したように、「bind」、「m
ount」、「chdir」および「open」などの
ファイル・ロケータ関数は、引数としてパス名を取り、
そのファイルに対するファイル記述子417を返す。さ
らに詳細に後述するように、パス名の解釈を目的とする
ファイル・チャネル419へのアクセスが、プロセス1
02のファイル木構造のルートに対するファイル・チャ
ネル419へのユーザ・データ構造体403におけるポ
インタ、およびプロセス102のワーキング・ディレク
トリに対するファイル・チャネルへのもう1つのポイン
タ409によって与えられる。パス名の解釈において使
用されるユーザ・データ構造体403のもう1つの構成
要素は、要素(ELEM)405であり、これには、現
在解釈されているパス名を構成する名前のリストにある
名前が入っている。 【0066】ファイル・チャネル419によって表され
るファイルが、プロトコル・サービス209によって与
えられると、ファイル・チャネル419は、通信サービ
スを介するプロトコル・サービス209との接続を表す
プロトコル・チャネルに関係付けられる。プロトコル・
チャネルは、チャネル構造体301を用いても実施され
る。プロトコル・チャネルとして作用するチャネル構造
体301において、種類フィールド313によって、プ
ロセス間通信サービス216またはネットワーク・サー
ビス214(好ましい実施例においては、パイプ・サー
ビスまたはDATAKITネットワーク通信サービス)
の何れかが指定される。フィールド327、329およ
び337は、プロトコル・チャネルにおいては無意味で
ある。プロトコル・チャネルによって表される接続がプ
ロセス102によって開かれた場合、プロトコル・チャ
ネルへのポインタが、プロセス102に対するファイル
記述子の配列413に配置され、さらにプロトコル・チ
ャネルが、それに対応するファイル記述子を受け取る。 局所的なプロトコル・サービスへのパイプによる接続は
、そのパイプ生成しているパイプ・システム・コールが
プロセス102によって実行されたときに、開かれ、遠
隔のプロトコル・サービス209へのDATAKIT接
続による接続は、srvサービス中にその遠隔のプロト
コル・サービス209を表すファイルが開かれたときに
、開かれる。 【0067】実施例においてファイル・チャネル419
をプロトコル・チャネルならびにtmessageおよ
びrmessageを表すデータ構造体に関係付けるた
めに使用されるデータ構造体501を図5に示す。前記
のように、ファイル・チャネル419のPCHANフィ
ールド337は、プロトコル・チャネル517を示すが
、このプロトコル・チャネルは、チャネル構造体301
を用いて実施される。tmessageおよびrmes
sageを表すデータ構造体は、マウント・サービス配
列(MNTA)502を用いて、その位置が特定される
。この配列には、すべてのファイル・チャネル419に
対して、プロトコル・サービス209によって与えられ
るファイルを表すエントリ(MNTE)503が存在す
る。各エントリ503には、1つの識別子および2つの
ポインタ−−−エントリ503に対応するファイル・チ
ャネル419へのポインタおよびマウント・サービス・
キュー(待ち行列)の構造体(MNTQ)509へのポ
インタ−−−が含まれる。一方、ファイル・チャネル4
19は、装置フィールド315の情報の一部として、エ
ントリ503に対する識別子を含む。マウント・サービ
ス・キューの構造体509には、ファイル・チャネル4
19が属するプロシージャを表すデータ構造体、プロト
コル・サービス209への接続とファイル・チャネル4
19によって表されるファイルを含むファイル木構造1
25とを表すプロトコル・チャネル517へのポインタ
515、およびメッセージ520の待ち行列へのポイン
タ519が含まれる。この待ち行列にあるメッセージは
、勿論、プロトコル・サービス209へのファイルを収
容したtmessageおよびプロトコル・サービス2
09からのrmessageである。従って、マウント
・サービスの待ち行列509によって、メッセージの待
ち行列が、プロトコル・チャネル517およびプロセス
102に関係付けられる。 【0068】各メッセージ520は、少なくともマウン
ト・サービス・ヘッダ(MNTHDR)521から構成
される。ファイル・チャネル419によって表されるフ
ァイルおよびプロセスの組み合わせに対し1つ以上の未
解決のメッセージが存在することがあるので、マウント
・サービス・ヘッダ521には、ファイル・チャネル4
19によって表されるプロセスとファイルの組み合わせ
に対する他のメッセージへのヘッダにヘッダ521を連
結するポインタ527および529が含まれる。マウン
ト・サービス・ヘッダ521は、さらに、ファイル・チ
ャネル419が所属するプロセスに対するプロセス・デ
ータ構造体へのポインタを含む。 【0069】メッセージ520が、rmessageで
ある場合、そのメッセージのデータ以外の部分は、rh
dr525に置かれ、tmessageである場合は、
受信されたメッセージのデータ以外の部分は、thdr
523に置かれる。このように、これらのフィールドに
は、メッセージの型、マウント・サービス203がファ
イルに関係付けたファイル識別子、および必要に応じた
その他の情報が、含まれる。例えば、メッセージがライ
ト往信(twrite)メッセージの場合、thdr5
23には、そのメッセージの型、そのファイルのファイ
ル識別子、書き込むべきバイト数、および書込み開始位
置のオフセットが含まれる。さらに、thdr523お
よびrhdr525には、そのメッセージによって送信
または受信されるデータを収容するマウント・バッファ
533へのポインタ531が含まれる。 【0070】メッセージ720は、引数としてファイル
・チャネル419に対応するエントリ503およびマウ
ント・ヘッダ521を取る関数によって送信される。こ
の関数は、エントリ503を用いてプロトコル・チャネ
ル517の位置の特定し、マウント・ヘッダ521によ
って指定されたメッセージ520が、プロトコル・チャ
ネル517によって指定された接続に出力される。送信
と同時に、そのメッセージを送信中のプロセス102は
、応答を求めて待機する。応答は、受信されると、メッ
セージ520に置かれ、プロセス102が起こされ、こ
のプロセスによって、メッセージ520が読まれる。 実施例においては、メッセージ内のタグを用いて、適切
なマウント・ヘッダのデータ構造体521の位置を特定
する。第9案において所与のファイル・チャネル419
に対する構造体の位置を特定する役の関数は、その役を
果たすべく、所与のファイル・チャネル419へのポイ
ンタ505が入っているエントリ503を発見するまで
マウント・サービスの配列502を逐一あたっていく。 ファイル・チャネルは、その装置フィールド315に対
応するエントリ503に対する識別子を入れているとい
う事実によって識別することが可能である。 【0071】以上のように、図3から図5に示したデー
タ構造により、ファイルに対するファイル記述子を有す
るプロセス102は、そのファイルに対して読出しおよ
び書込みなどのファイル・アクセス関数を実行すること
ができる。しかし、これだけでは、ファイル・ロケータ
関数を実行するには不十分である。なぜなら、これらの
関数には、ファイル記述子だけでなくパス名も関係する
からである。 【0072】名前空間115の表現:図6、8および9
前記のように、新しいプロセス102の名前空間115
は、そのプロセス102の親から継承されるか、親の名
前空間を継承しないプロセス102に対し第9案が利用
できるようにした「控え」の名前空間から作られるかの
何れかである。プロセス102の名前空間115が「控
え」の名前空間から如何にして作られるかを図6に概念
的に示した。図6の「控え」の名前空間601は、単一
レベルのファイルを有するルート・ディレクトリ603
を与えるカーネル・サービスであるルート・サービスに
よって、与えられる。ルート・ディレクトリ603およ
びファイル605および615は、他のサービス123
に属するファイル木構造125のルートが結合される可
能性のある場所として作用するだけである。実施例では
、ファイル605〜615の集合は、サービスの種類を
機能によって分けるのに役立つ。ファイル名は、機能に
次のように対応する。dev605:サービスが結合さ
れる主な場所である。I/O関数を与えるサービスおよ
びその他の種々雑多な機能を有するサービスは、すべて
dev605に結合される。boot607:第9案が
実施されているCPUをブートするサービスが結合され
る場所である。fd609:プロセスの接続されたファ
イルに対する複製のファイル記述子を与えるサービスが
結合される場所である。proc610:第9案のプロ
セスに付いての情報を与えるサービスが結合される場所
である。env611:プロセス102に対する環境フ
ァイルを与えるサービスが結合される場所である。環境
ファイルは、UNIXの環境変数と同じ機能を果たす。 bin613:プロセス102によって実行されるプロ
グラムのファイルを収容するサービスが結合される場所
である。そして、srv615:プロセス102が利用
できるプロトコル・ザーバ209に対するプロトコル・
チャネル517を表すファイルを与えるサービスが結合
される場所である。 【0073】第9案には、控えの木構造601における
ファイル名に結合できる組み込みサービスの集合がある
。これらのサービスには、プロセス102によって実行
される第9案のカーネル関数によってのみ結合できるも
のと、プロセス102によって実行される任意の関数に
よって結合できるものとがある。第9案のパス名におい
て、組み込みサービスの名前には、その前に文字「#」
が付く。カーネル関数によってのみ結合され得る組み込
みサービスは、次のとおりである。即ち、#/:控えの
木構造601を与えるカーネル・ルート・サービス、#
:プロセス間通信のためにUNIX風のパイプを与える
カーネル・パイプ・サービス、および#M:プロトコル
・サービス209に関するトランザクションを処理する
マウント・サービス603である。尚、カーネルは、ル
ート・サービスをプロセス102の名前空間のルートに
結合する。 【0074】プロセス102によって実行される任意の
関数によって結合できる組み込みサービスには、次のも
のがある。#b:ブート・サービス。このサービスは、
ファイルを幾つか有し、このファイルに書き込まれると
、このファイルによってカーネルは所与のアドレスに分
岐させられ、またこのファイルにより、カーネルは仮想
メモリの所与の位置に書き込むことができる。ブート・
サービスは、概してboot607に結合される。#b
:ビット・サービス。このサービスは、ビット・マップ
・スクリーンおよびマウスを表すファイルを有する。ビ
ット・サービスは、概してdev605に結合される。 #c:コンソール・サービス。このサービスは、システ
ム・コンソールを表すファイルを有し、概してdev6
05に結合される。#d:複製サービス。このサービス
によって与えられるファイルは、プロセス102に属す
る接続されたファイルに対するファイル記述子であるよ
うな名前を有する。複製サービスは、概してfd609
に結合される。#e:環境サービス。このサービスによ
って与えられるファイルは、概してenv611に結合
される。 #kname:datakitサービス。このサービス
によって与えられるファイルは、nameによって表さ
れるdatakitハードウェア上の会話を表す。この
サービスは、概してdev605に結合される。#p:
プロセス・サービス。これは、概してproc610に
結合される。#s:サービス登録サービス。このサービ
スによって与えられるファイルは、プロトコル・サービ
ス209に接続され既に開いているプロトコル・チャネ
ル517を表す。 【0075】第9案の実施例において、その名前空間1
15を継承しなかったプロセス102がGnot711
において走り始めると、Gnot711上で実行中のカ
ーネルが、bind処理を実行する。このbind処理
によって、前記の名前空間115には、木構造617と
して示した形式が与えられる。木構造609における名
前にサービスが結合されていた場合、この事実は、「=
」の後にそのサービス名を付けることによって示される
。bind処理によって結合ディレクトリが生成された
場合、この事実は、「=」に続く括弧内にその結合ディ
レクトリの構成要素をリストとして載せることによって
示される。このリストは、それらの構成要素が探査され
る順番になっている。木構造617は、bindおよび
mountの処理からなる次のような手順で生成された
ものである。bind:ルート・サービスによって与え
られる木構造を、プロセス102によって解釈されたパ
ス名におけるルートを表す「/」に結合する。「/」へ
の参照は、ここでは「/」603への参照として解釈さ
れる。mount(FD,”/”,MAFTER,””
):マウント・サービス203に属するプロトコル・チ
ャネル517を「/」にマウントし、これによって、ル
ート・サービスのルートおよびプロトコル・チャネル5
17によって表されるプロトコル・サービス209のル
ートからアクセス可能なファイルから成る結合ディレク
トリを生成する。第9案においては、このプロトコル・
サービス209によって、デフォルト・ファイル・サー
バ705内にデフォルトのファイル木構造125が与え
られる。bind(”/68020/bin”,”/b
in”,MREPL):デフォルトのファイル木構造1
25におけるディレクトリ/68020/binをルー
トとして持つような木構造を控えのファイル木構造60
1における名前bin613に結合する。ディレクトリ
/68020/binには、Gnot711(実施例で
は、モトローラ社の68020プロセッサを有する)の
ための実行可能なコードが入っている。bind(”/
lib/rc”,”/bin”,MAFTER):デフ
ォルトの木構造125における/lib/rcをルート
として持つような木構造を名前bin613に結合する
。ディレクトリ/68020/binは既にbin61
3に結合されているので、MAFTERが指定されてい
る。結果として、ディレクトリ/68020/binが
ディレクトリ/lib/rcより先に探査されるような
結合ディレクトリとなる。bind(”#c”,”/d
ev”,MREPL):コンソール・サービス#cによ
って与えられる木構造を名前dev605に結合する。 最後に、bind(”#d”,”/fd”,MREPL
):複製サービス#dによって与えられる木構造を控え
の木構造601における名前fdに結合する。 【0076】これらの結合の結果として、プロセッサ1
02は、#M1が接続される先のプロトコル・サービス
209のディレクトリ/68020/binにある「c
c」というファイルをパス名「/bin/cc」によっ
て参照することができ、また同じプロトコル・サービス
209の/lib/rcにある「pwd」というファイ
ルをパス名「/bin/pwd」によって参照すること
ができる。勿論、これは、ディレクトリ/68020/
binにファイル「pwd」が無い場合である。同様に
、サービス#cによって与えられるファイル「pid」
ならば、パス名「/dev/pid」によって参照する
ことができ、またサービス#dによって与えられるファ
イル「0」であれば、パス名「/fd/0」によって参
照することができる。 【0077】従って、第9案のプロセスに対する名前空
間には、名前空間115における名前に対して実行され
たbind処理およびmount処理のすべての記録が
入っていなければならない。ここでは、この記録をマウ
ント・テーブルと称する。本実施例のマウント・テーブ
ルは、ファイルに対するファイル・チャネル419が、
そのファイルに対するパス名を明示的に表すという事実
を利用している。従って、bindおよびmountの
処理記録は、bind処理またはmount処理で使用
された古いパス名によって表されるファイルを表すファ
イル・チャネル419と、bind処理で使用された新
たなパス名によって指定されるファイルを表すファイル
・チャネル419またはmountで処理で使用された
ファイル記述子に対応するファイル・チャネル419と
の間に関係を確立することによって、作ることも可能で
ある。勿論、これらのファイル・チャネル419は、す
べて、現在のプロセス・グループ103がその名前空間
を受け継いだ元のプロセス・グループ103の中のいく
つかのプロセス102に接続されているか、または現在
のプロセス・グループ103の中のいくつかのプロセス
102によって接続されているようなファイルを表す。 【0078】図8において、マウント・テーブルの構成
要素は、マウント・テーブル配列802から位置が特定
され、配列802は、ユーザ・データ構造体403から
位置が特定される。図8に示したように、ユーザ構造体
403は、プロセス(PROC)のデータ構造体825
へのポインタ824を含む。各プロセス102は、ユー
ザ構造体403およびプロセス・データ構造体825を
持つ。ポインタ824は、そのプロセス102のプロセ
ス・データ構造体へのユーザ構造体403のポインタで
ある。プロセス・データ構造体825は、さらにマウン
ト・サービス・キューの構造体509におけるポインタ
511によっても示され、かつそれ自体に、プロセス・
グループ(PRGRP)の構造体827へのポインタを
含んでいる。構造体827は、プロセス102が属する
プロセス・グループ103を表す。最終的に、プロセス
・グループ構造体827に、マウント・テーブル配列8
02へのポインタ829が含まれることによって、ユー
ザの構造体403が属するプロセス102に対するマウ
ント・テーブル801の位置づけが可能となる。 【0079】マウント・テーブル配列802は、新たな
パス名またはファイル記述子が結合される古いパス名の
それぞれに対する要素(MTE)からなる。所与のマウ
ント・テーブル配列のエントリ803は、2つのポイン
タからなる。ポインタ805は、古いパス名によって指
定されるファイルを表すファイル・チャネル・データ構
造体419へのポインタである。マウント・テーブル8
01との関係から、このようなデータ構造体419を左
手チャネル(LCHAN)と称する。ポインタ807は
、マウント構造体809へのポインタである。各マウン
ト構造体809は、bindまたはmountの1回の
処理結果を表す。マウント構造体809の内容には、次
のものが含まれる。参照フィールド(ref)811:
これは、マウント・テーブル配列のエントリ803によ
って示されるもの以外の左手チャネルが、マウント構造
体を使用しているかどうかを示す。終端フィールド81
3:これは、マウント構造体809が、結合ディレクト
リを定義するマウント構造体809のリストの最後であ
るかどうかを示す。マウント識別子フィールド815:
これは、このマウント構造体809に対する固有の識別
子であり、従って、マウント構造体809によって表さ
れるbindまたはmountの処理の結果に対する識
別子でもある。ポインタ817:マウント構造体809
が、結合ディレクトリを定義しているマウント構造体8
09のリストの一部であり、かつそのリストの最後のマ
ウント構造体809でない場合、ポインタ817は、そ
のリストの次のマウント構造体を示す。ポインタ819
:このポインタは、新たなパス名によって(または、m
ountの場合には、ファイル記述子によって)指定さ
れるファイルを表すファイル・チャネル419を示す。 マウント・テーブルの関係から、このようなファイル・
チャネルを右手チャネル(RCHAN)804と称する
。 【0080】以上から分かるように、各マウント・テー
ブル・エントリ803によって、左手チャネル802と
1つ以上の右手チャネル804との間の関係が確立され
る。さらに、mountまたはbind処理のためにそ
のパス名の意味が変更されたファイルを表すファイル・
チャネル419においては、マウント・ポインタ(mo
untptr)フィールド327が、そのmountま
たはbind処理を表すマウント構造体809を示し、
さらにマウント識別子(mountid)フィールド3
29には、そのマウント構造体809のマウント識別子
815が入る。さらに、プロトコル・サーバ209によ
って与えられるファイルを表すファイル・チャネル41
9は、そのファイルを与えるプロトコル・サービス20
9への接続に対するプロトコル・チャネル517へのポ
インタをフィールド337に含む。 【0081】また、図8において、「mount」およ
び「bind」処理のreplace、before、
およびafterの各オプションが、マウント・テーブ
ル801により如何にして実施され得るかを説明する。 replaceオプションが付いた場合、新たなパス名
を表す右手チャネル804を示すマウント構造体809
は、単にマウント構造体809のリストの代わりをする
。beforeオプションは、そのマウント構造体80
9をマウント構造体809のリストの先頭に追加するが
、マウント構造体809のリストがない場合には、エラ
ーを発生する。afterオプションを付けると、その
マウント構造体809が、前記リストの最後に追加され
る。この時も、そのリストがない場合には、エラーとな
る。結合ディレクトリが探査される場合、前記リストの
最初のマウント構造体809によって示される右手チャ
ネル804によって表されるディレクトリから探査され
る。次に探査されるべきディレクトリは、そのリストの
2番目のマウント構造体809によって示される右手チ
ャネル804によって表されるディレクトリというふう
に、探査される。従って、左手チャネル802(a)が
、パス名/Mを表し、かつ右手チャネル804(a)が
、/Mに結合されたサービス123から1番目のルート
・ディレクトリを表し、かつ右手チャネル804(b)
が、/Mに結合されたサービス123から2番目のルー
ト・ディレクトリを表すならば、「chdir(”/M
/.”)」のようなファイル・ロケータ関数は、「O」
を求めて、最初は1番目のディレクトリを探査し、それ
がそこで発見できない場合は、2番目のディレクトリを
探査する。 【0082】前述のように、プロセス102が、システ
ム・コール「forkpgrp」を実行すると、必ず、
プロセス102に対する新たな名前空間115が生成さ
れる。 「forkpgrp」は、引数を1つだけ取る。この引
数が、0以外の値を持つときは、forkgrpを実行
しているプロセス102に対する既存の名前空間115
は、新たな名前空間115にコピーしてはならない。こ
の引数が値0を有する場合、その既存の名前空間は、コ
ピーされるべきものである。「forkgrp」に「0
」でない引数を付けて実行すると、forkgrpは、
単に、プロセス102に対する新たなプロセス・グルー
プ構造体827および新たなマウント・テーブル配列8
02を作るだけである。そして、新たな名前空間115
を定義するbindおよびmount処理に必要とされ
るようなマウント・テーブル・エントリ803が、生成
される。引数「0」を付けてforkpgrpが実行さ
れると、その「forkpgrp」システム・コールを
実行中のプロセス102に対するマウント・テーブル配
列802におけるマウント・テーブル配列のエントリ8
03が、新たなマウント・テーブル配列802へとコピ
ーされる。これが行われると、所与のマウント・テーブ
ル・エントリ803によって示される各左手チャネル8
02におけるrefフィールド307およびそのエント
リによって示される各マウント構造体809におけるr
efフィールド811がインクリメントされる。以上か
ら明らかなように、本実施例においてはマウント・テー
ブル801を実施しているので、プロセスに対し新たな
名前空間105を生成することは、比較的効率的かつ安
価な作業である。 【0083】図9において、チャネル構造体301を長
い長方形で表した。チャネル構造体301のラベルは、
そのチャネル構造体301によって表されるファイルの
パス名を示す。第1のマウント・テーブル配列エントリ
803(b)により、ルート「/」上のbindおよび
mount操作の結果が記録される。ルート「/」を表
すLCHAN802(b)が、エントリ803(b)お
よび2つのマウント構造体809(c)および(d)を
介して2つの右手チャネルに接続されている。これらの
右手チャネルのうち、804(c)は、カーネル・ルー
ト・サービスによって与えられるファイル木構造のルー
トに対するもので、804(d)は、#M1が接続され
ている先のプロトコル・サービス209によって与えら
れるファイル木構造のルートに対するものである。右手
チャネル804(d)におけるmchanポインタ33
7は、ルートへの接続を表すプロトコル・チャネル51
7を示す。 【0084】第2のマウント・テーブル配列エントリ8
03(c)によって、左手チャネル802(c)によっ
て表される、#/bin上のbind操作の結果が記録
される。 チャネル802(c)は、2つの右手チャネル−−−#
M1/68020/binを表す804(e)および#
M1/lib/rcを表す804(f)−−−に接続さ
れている。右手チャネル804(d)および(e)によ
って表されるファイルは、#M1の接続先のプロトコル
・サービス209によって与えられるので、前記の右手
チャネルは、共に、サービス209への接続を与えるプ
ロトコル・チャネル517へのmchanポインタ33
7を含む。さらに、左手チャネル802(c)によって
表されるファイルのパス名#/binには、パス名#/
が含まれる。そのディレクトリ・ファイルは、右手チャ
ネル804(c)によって表される。従って、左手チャ
ネル802(c)のマウント・ポインタ(mountp
tr)フィールド327には、右手チャネル804(c
)を示すマウント構造体809(c)へのポインタが入
る。 【0085】マウント・テーブル901の残りの部分か
ら分かるように、右手チャネル804によって表される
構成要素を含むパス名を表すマウント・テーブル901
における1つ1つのファイル・チャネル419に、その
構成要素を表す右手チャネル804を示すマウント構造
体809へのmountptrフィールド327におけ
るポインタが、含まれる。従って、#/を含むパス名を
有するファイルを何れも表すような左手チャネル802
(c)、802(d)および802(e)は、すべてマ
ウント構造体809(c)を示す。一方、#M1を含む
パス名を有するファイルを双方とも表すような右手チャ
ネル804(e)および804(f)は、すべてマウン
ト構造体809(d)を示す。勿論、mountptr
フィールド327が、マウント構造体809を示すとき
は、チャネル301におけるmountidフィールド
329が、そのマウント構造体809に対するマウント
識別子に設定される。 【0086】残りのエントリ803(d)および803
(e)によって、カーネル・ルート・サービス#/によ
って与えられる「控え」のディレクトリ「dev」およ
び「fd」への組み込みカーネル・サービスの結合が、
記録される。この場合、各エントリ803によって、控
えのディレクトリを表す左手チャネル802は、組み込
みカーネル・サービスを表す右手チャネル804に関係
付けられる。組み込みカーネル・サービスは、プロトコ
ル・サービスではないので、右手チャネルは、プロトコ
ル・チャネル517へのポインタは持っていない。 【0087】名前空間115におけるパス名の分析:図
10および11 前記のとおり、マウント・テーブル801は、第9案の
ファイル・チャネル419は、いずれも、そのファイル
・チャネル419によって表されるファイルのパス名を
明示的に表すという事実を利用している。第9案のオペ
レーティング・システムに、「bind」、「moun
t」、「chdir」および「open」などのファイ
ル・ロケータ関数において、パス名が提示されると、オ
ペレーティング・システムは、そのパス名によって指定
されたファイルを表すファイル・チャネル419を得る
ことによって、そのパス名を分析して、そのファイル・
チャネル419へのポインタを返す。プロセス102の
ファイル木構造117は、サービス123によって与え
られるファイル木構造で構成されるので、パス名の分析
には、マウント・テーブル801および各サービス12
3が応答するサービス要求が、共に関与する。これらの
特別なサービス要求は、walkサービス・ファイル・
ロケータ要求であり、場合によっては、attachサ
ービス・ファイル・ロケータ要求である。 【0088】パス名を分析する第9案のカーネル関数を
(チャネルへの名前として)「namec」と称する。 この関数の流れ図を図10に示す。コールの端子100
3に示したように、namecが引数として取るものは
、パス名、namecを用いるシステム・コールが必要
とするファイル・アクセスの種類のコード、およびna
mecによって開かれるファイルが如何にして開かれる
べきかを示すコードである。namecは、チャネルへ
のポインタを返す。namecは、パス名の最初の文字
は特に処理するが、そのほかは、パス名を、文字「/」
によって区切られた名前のリストとして、扱う。名前の
各々を要素と称する。 【0089】namecの最初の部分(1067)では
、パス名が始まる点を表すチャネル301を得る。その
チャネルを得る要領は、そのパス名の始まり方による。 始まり方には3つの可能性がある。パス名が、完全なパ
ス名の場合、そのパス名は、「/」で始まる。パス名が
、組み込みカーネル・サービスによって与えられるファ
イルを示し、かつそのサービスが、もう1つのファイル
名にまだ結合されていない場合、「#」で始まる。パス
名がワーキング・ディレクトリで始まる場合、ファイル
名で始まる。 【0090】パス名が、「/」で始まる場合、判断ブロ
ック1005の分岐yが取られ、ルートに対するファイ
ル・チャネル419の内容が、チャネル301「nch
an」にコピーされる(1009)。前記のように、ル
ートのファイル・チャネル419は、そのプロセスに対
するユーザ・データ構造体403から位置を特定するこ
とができる。 【0091】パス名が他のもので始まる場合、ブロック
1005の分岐nが取られ、ブロック1007において
、最初の要素を検査して、それが「#」かどうかを判断
する。「#」ならば、「#」に続く文字によって指定さ
れるカーネル組み込みサービスによって、attach
サービス・ファイル・ロケータ要求が実行される。at
tachロケータ要求の結果は、組み込みサービスによ
って与えられるファイル木構造125のルートを表すチ
ャネル301である。所与のサービスがattach要
求を処理する要領は、そのサービスによる。例えば、ル
ート・サービスに対するattach関数は、包括的な
attach関数であるdevattachを呼び出す
。devattachは、引数として組み込みサービス
の名前、この場合は「/」、を取る。devattac
hは、新たなチャネル・データ構造体301を獲得し、
qidフィールド323をルートを指定する値に設定し
、さらに型フィールド315を引数「/」から得た値に
設定する。最初の要素が、「/」でも「#」でもない場
合、そのパス名はワーキング・ディレクトリで始まる。 そこで、ブロック1013において、ワーキング・ディ
レクトリを表すファイル・チャネル419をnchan
にコピーする。このファイル・チャネルは、プロセスに
対するユーザ・データ構造体403から位置を特定する
ことができる。 【0092】1069で示した次の段階では、ncha
nによって表されるファイルに対するパス名が、bin
dまたはmountの関数コールにおいて古いパス名と
して使用されたかどうかを調べる。まず、パス名の最初
の要素を得る。これを行う関数により、構造体403に
おけるフィールドELEM405を次の要素であるファ
イル名に設定する。その上で、プロセス102に対する
ユーザ・データ構造体403からプロセス・グループ1
03に対するマウント・テーブル配列802の位置を特
定する。各マウント・テーブル・エントリ803に対す
る左手チャネル802を次々にnchanと比較してゆ
き、nchanに「等しい」ものが見つかるまで続ける
。ここで言う「等しい」とは、2つのチャネル301が
同じサービス123における同じファイルを表す、即ち
、それらが、それらの型フィールド313、devフィ
ールド315、およびqidフィールド323に等しい
値を有するということである。 【0093】該当する左手チャネル802が見つからな
い場合、判断ブロック1019の分岐nが取られ、見つ
かった場合、分岐yが取られて、nchanに等しい左
手チャネル802を有するエントリ803によって示さ
れる右手チャネル804の内容をnchanにコピーす
る(1021)。その上で、nchanにおけるmou
ntptrフィールド327を、それが右手チャネル8
04を示すマウント構造体809を示すように、設定し
、さらにmountidフィールド329をマウント構
造体809のmountidの値に設定する。従って、
パス名がbindまたはmountのコールにおいて古
いパス名として使用された場合、nchanは、この時
点で、右手チャネル804によって表されるファイルを
表す。それ以外の場合は、nchanは不変である。 【0094】図10の10Bにおいて、namecの一
部1071は、パス名の残りの各要素を調べるループ1
025からなる。このループを通過する度に、「wal
k」カーネル関数へのコールが行われる。このコールに
おいて使用される引数は、nchan、現在の要素(ブ
ロック1029)、および現在の名前がそのファイルを
表す左手チャネル802を持つことができるか(これは
、カーネル組み込みサービス名の場合に限って不可能で
ある)どうかを示すフラグである。さらに詳細に後述す
るが、walk関数は、要素によって指定されたファイ
ルを表すチャネル301を返す。ブロック1031にお
いて、そのチャネル(図10ではtchanで示す)を
nchanに割り当てる。そして、次の要素をパス名か
ら得る(ブロック1033)。前のように、USER構
造体403にあるELEMフィールド405を次の要素
に設定する。ループが終了すると、パス名の最後の要素
が処理されるべく残る。 【0095】最後の要素を処理する要領は、何れのシス
テム・コールがnamecを呼び出したかによる。それ
がcreateシステム・コールの場合、最後の要素は
、新たなファイルの名前を表し、それ以外の場合は、ア
クセスするべきファイルを表す。何れのシステム・コー
ルがnamecを呼び出したかは、アクセス・モード引
数によって示され、判断ブロック1055に示したよう
に、以降の処理は、その引数に依存する。尚、ブロック
1057に示すように、アクセス・モード引数により、
ファイルの生成が指示されている場合、最後の要素およ
びtchanを用いてcreateサービス・ファイル
要求を行う。ただし、この時、tchanは、新たなフ
ァイルが生成されるべきディレクトリに対するファイル
・チャネル419のコピーである。結果的に、tcha
nは、その型フィールド313およびdevフィールド
315に、ディレクトリおよびqidフィールド323
におけるそのディレクトリに対するqidを含むサービ
ス123を指定する値を収容する。createサービ
ス・ファイル要求の結果として、新たなファイルがm生
成され、その名前として最後の要素が割り当てられ、さ
らに、tchanのqidフィールドが、新たなファイ
ルのqidに設定される。 【0096】namecを呼び出したシステム・コール
がcreate以外である場合、最後の要素は、既に存
在するファイルの名前である。この場合も、最後の要素
を用いてwalk関数を呼び出し、tchanを得る。 このtchanは、最後の要素によって参照される(1
059)ファイルを表す。 その上で、tchanのフィールドをnamecのアク
セス・モードおよびオープン・モードの引数により要求
されるとおりに設定し(1061)、さらにtchan
をnchanにコピーする(1063)。戻り端子10
65に示したように、パス名引数において指定されたフ
ァイルを表すチャネル301としてnchanが返され
る。 【0097】図11の開始端子1103において、wa
lkは、チャネル・データ構造体301、パス名の一要
素、およびその要素へのマウントが有効かどうかを示す
フラグを取る。チャネル・データ構造体301は、その
要素の名前を有するファイルを求めて探査するべきディ
レクトリを表す。そのディレクトリか、またはそのチャ
ネル・データ構造体によって表されるディレクトリと結
合したディレクトリにおいて、その要素の名前が発見さ
れた場合、この関数は、そのパス名の要素によって指定
されるファイルを表すチャネル・データ構造体301を
返す。 【0098】そのアルゴリズムは、およそ次のとおりで
ある。まず、引数として使用されるチャネル301の型
フィールド313および装置フィールド315によって
指定されるサービスに対し、walkファイル・サービ
ス要求を行う。このwalkファイル・サービス要求に
は、引数として使用される要素が含まれる。このファイ
ル・サービス要求は、成功した場合、その要素によって
指定されるファイルに対するチャネル301を返す。そ
の上で、マウント・テーブル308の検査によって、w
alk要求によって返されたチャネル301が、左手チ
ャネル802かどうかを判断し、そうでない場合、wa
lk要求によって返されたチャネルは、walk関数に
よって返される。そである場合、その左手チャネル80
2に対応する右手チャネル804をwalk関数によっ
て返されることになっているチャネル301にコピーし
、さらにチャネル301のmountptrフィールド
およびmountidフィールドを、左手チャネル80
2を示すマウント・テーブル配列エントリ803によっ
て示されるマウント・データ構造体809の要求に合わ
せて設定する。 【0099】ファイル・サービスが、要素によって指定
される名前を有するファイルをチャネルによって指定さ
れたディレクトリにおいて発見できない場合、walk
ファイル・サービス要求は、成功しない。このようなこ
とが起こる理由は2つある。即ち、そのディレクトリに
別な名前が結合されているか、または要素に対応するフ
ァイルがそのディレクトリに存在しないかである。 【0100】前記の第1の場合、別の名前が結合された
ときに、mountptr327およびmountid
329により、生成されたマウント構造体809を指定
し、さらにそのマウント構造体809によって示される
右手チャネル804において指定されるサービスについ
て、walkサービス・ファイル要求を再び試みる。そ
のwalkサービス・ファイル要求が、成功した場合、
処理を既に説明したように続ける。失敗した場合、やは
り、前記の何れの可能性もある。ここでは、要素に対応
するファイルがそのディレクトリに存在しないという問
題を仮定する。この場合も2つの可能性がある。即ち、
ファイルが実際に存在しないか、または探査されたディ
レクトリが結合ディレクトリの一部であり、かつその結
合ディレクトリの一部である他のディレクトリが依然と
して探査されていない可能性がある。ファイルが実際に
存在しない場合には、実際に探査されたディレクトリに
対するマウント構造体809における終端フィールド8
13によって、マウント構造体809がその結合ディレ
クトリを構成するマウント構造体809のリストの最後
のものであることが示されるはずである。そうでなけれ
ば、マウント構造体809におけるネクスト・フィール
ド817が、結合ディレクトリにおける次のディレクト
リに対するマウント構造体809を示すことになり、そ
の次のマウント構造体から、探査するべき右手チャネル
804を決定することができる。この場合、次のマウン
ト構造体によって示される右手チャネル804を用いて
、walkサービス・ファイル・ロケータ要求を繰り返
す。 【0101】詳細には、ブロック1105において、最
初は、これがサービス・ファイル・ロケータ要求を行う
1回目であることを示すフラグを設定し、引数として与
えられたチャネルをcchanにコピーする。ブロック
1107において、cchanおよび要素を用いてwa
lkサービス・ファイル・ロケータ要求を行う。そのサ
ービスがこの要求に応じて実行する動作は、そのサービ
スに依存する。その2つの例を説明する。ルート・サー
ビスでは、walk要求に応じて、cchanがルート
・サービスのルートのために予約されているqidフィ
ールド323に特別な値を持っているかどうかを判断し
、さらに、持っている場合、要素がルート・サービスに
より「控え」として与えられる名前のうちの1つである
かどうかを判断する。 後者の場合、cchanのqidフィールド323を、
前記の控えの名前に対し予約された特別な値に設定する
。前記以外の場合、walkサービス・ファイル・ロケ
ータ要求は失敗する。  【0102】マウント・サービス203は、walk要
求に対し次のように応答する。前記のように、プロトコ
ル・サービス209によって与えられるファイルを表す
チャネル301のdevフィールド315の一部に、マ
ウント・サービス配列エントリ503を指定する識別子
が含まれる。その識別子を用いて、マウント・サービス
203は、プロトコル・サービス209に対するプロト
コル・チャネル517に対するマウント・サービスの待
ち行列509の位置を特定し、walkサービス・ファ
イル・ロケータ要求に必要なtmessageに対する
マウント・ヘッダ521を割り当て、さらにチャネルか
ら得たファイル識別子および要素をtmessageに
配置する。プロトコル・サービス209が、チャネルか
らのファイル識別子によって指定されたディレクトリに
おける要素によって指定される名前の付いたファイルを
有する場合、プロトコル・サービス209は、ファイル
に対するqidが入ったrmassageを返し、その
qidは、cchanのqidフィールド323に置か
れる。 【0103】walk要求が成功した場合、チャネル3
01がmountまたはbind操作の結果ではないこ
とを示すように、cchanのフラグ321が設定され
る(1119)。 次に、walk要求が2回以上行われたかどうかを判断
する(1121)。2回以上行われた場合、引数として
受け取ったチャネルは、返されたものではないことにな
り、その引数として受け取ったチャネルは、閉じられる
(1123)。このクローズ操作によって、そのチャネ
ルのrefフールドにある計数が、デクリメントされる
が、この時、そのrefフィールドが値0を有する場合
、clunkサービス要求がそのチャネルのdevフィ
ールド315によって示されるサービスに送られ、さら
にチャネル構造体301がフリー・リストに返される。 walk要求が行われたのが、これでまだ一回目である
場合、このステップは省略される。次に、判断ブロック
1133において、cchanが、他の構成要素が結合
されている可能性のあるパス名の構成要素を表すかどう
かを判断する。この状態は、「#」以外の構成要素に対
して成立し、かつwalkの「mountok」引数に
よって示される。マウントされた構成要素があり得ない
場合、マウント・テーブル801を調べる必要はなく、
cchanはそのまま返される(1135)。そうでな
い場合、cchanに等しい左手チャネル802を求め
て、マウント・テーブル801を調べ、該当する左手チ
ャネル802を発見した場合、左手チャネル802に対
応する右手チャネル804の値を、右手チャネル804
を示すマウント構造体809に対するマウント・ポイン
タおよびマウント識別子と共に、cchanにコピーす
る。cchanをこのように変更して返す(ブロック1
137〜1143)。 【0104】walkサービス要求ブロック1107に
戻り、その要求が失敗した場合、まず、cchanが、
mountまたはbind要求の結果であるかどうかを
判断する。そうであるならば、探査に失敗したのであり
、結合子「B」のように、walk関数は、失敗を示す
0を返す(端子1149)。ブロック1145および1
147において、walk要求が2回以上行われた場合
、cchanをクローズする。 次に、cchanのマウント・ポインタ・フィールド3
27を用いて、マウント構造体809の位置を特定する
(ブロック111)。マウント構造体809の終端フィ
ールド813により、そのマウント構造体809が、結
合ディレクトリを定義するマウント構造体809のリス
トの最後にあることが示されている場合、その探査は失
敗したのであり、walkは、結合子Bにおいて終了す
る。そうでない場合、現在のマウント構造体809のネ
クスト・ポインタ817の方が先であるから、次のマウ
ント構造体809によって示される右手チャネル804
を一時的なチャネルtchanにコピーする(ブロック
1115)。 次に、tchanにおけるmountptrフィールド
327を、次のマウント構造体809を示すように設定
し(ブロック1125)、tchanをcchanにコ
ピーし(1127)、firstを0に設定し、さらに
、結合子「D」によって示したように、ブロック110
7において、walkサービス要求を繰り返す。結合子
Dによって定義されるループ1131は、ブロック11
07におけるwalk要求が成功するか、または要素に
対応するファイルが発見されなかったことが明かとなる
まで、繰り返される。 【0105】ファイル・ロケータ操作の実施第9案にお
ける名前の分析が分かったので、「open」、「bi
nd」および「mount」などのファイル・ロケータ
・システム・コールの実施は容易である。まず、ope
nシステム・コールは、パス名、動作モードを指定する
整数を引数として取り、オープンされたファイルのファ
イル記述子417を返す。このシステム・コールは、最
初に、現在はチャネル301を示していないファイル記
述子配列413の要素415の位置を確認する。その要
素の番号が、新たに開かれたファイルに対するファイル
記述子である。次に、システム・コールは、namec
を呼び出す。この時の引数は、パス名、オープンを指定
するアクセス・モード指定子、およびオープンを行うモ
ードである。前記のように、namecは、パス名を分
析し、パス名によって示されたサービスがパス名によっ
て指定されたファイルにある処理を行うことを指定し、
かつその時点でチャネル301が当該ファイルを表すフ
ァイル・チャネル419であるように設定されたフィー
ルドを備えたチャネル301を返す。openシステム
・コールは、そのファイル・チャネル419へのポイン
タをファイル記述子配列の要素415に置いて、そのフ
ァイル記述子を返す。 【0106】好ましい実施例における「bind」シス
テム・コールは、引数として、新たなパス名へのポイン
タ、古いパス名へのポインタ、およびそのbindがr
eplace、beforeまたはafterのオプシ
ョンを付けて行われているかどうかを示すフラグを取る
。このシステム・コールは、このbindが、成功した
場合は「1」の値を、失敗した場合は「0」の値を有す
る整数を返す。このシステム・コールは、bindとm
ountの両方を行う「bindmount」と称する
カーネル関数を呼び出す。「bind」または「mou
nt」システム・コールによって与えられるフラグによ
って、何れを行うべきかが示される。「bind」シス
テム・コールが示されると、bindmountは、第
1のパス名を付けてnamecを呼び出して、第1のパ
ス名によって指定されたファイルを表す第1のチャネル
301を得る。次に、第2のパス名を付けてnamec
を呼び出して、第2のパス名によって指定されたファイ
ルを表す第2のチャネル301を得る。次の段階で、カ
ーネル・マウント関数を呼び出す。この関数は、bin
d操作の必要に応じてマウント・テーブル801を配置
し直す。 【0107】図12において長方形1203で示したよ
うに、カーネル・マウント関数は、引数として、古いチ
ャネル、新たなチャネル、およびフラグを取り、bin
dまたはmountの結果得られたマウント構造体80
9のマウント識別子を返す。フラグは、bindまたは
mountのシステム・コールのオプション・フラグか
ら設定される。現在の場合、古いチャネルに対する実際
の引数は、第1のチャネル301であり、新たなチャネ
ルに対する実際の引数は、第2のチャネル301である
。 【0108】このアルゴリズムの最初のステップは、引
数として受け取ったチャネル301についてbindま
たはmountの処理を実行することができるかどうか
判断することである(1205)。両方のチャネルが、
同じファイルを指定している(即ち、同じqid323
を持つ)場合、または古いチャネルが、ディレクトリで
ないファイルを表し、かつフラグによってreplac
e以外のオプションが指定されている場合、処理は許さ
れない。処理が許されない場合、1207において、エ
ラーとなる。次に、既に説明したように、マウント・テ
ーブル801を探査して、古いチャネルが既にマウント
・テーブル801にある左手チャネル802に等しいか
どうかを判断する。等しい場合、新たなマウント・テー
ブル・エントリ803は全く必要ないので、ブロック1
211は省略することができる。等しくない場合には、
ブロック1211において、空のマウント・テーブル・
エントリ803を入手して、そのエントリ803のポイ
ンタ805を古いチャネルを示すように設定する。 【0109】次に、新たなチャネル301のフラグ・フ
ィールド321を、そのチャネルが右手チャネル804
であることを示すCMOUNTを示すように設定する(
1213)。また、フラグ・フィールド321により、
CREATEオプションを示すこともできる。このオプ
ションは、右手チャネル804によって表されるディレ
クトリにファイルを生成しても良いことを指定する。こ
のオプションが指定されると、新たなチャネル301の
フラグ・フィールド321が、CMOUNTオプション
だけでなくCREATEオプションも示すように設定さ
れる(1215、1217)。ここで、マウント関数は
、新たなマウント構造体809を入手して、古いチャネ
ルに対応する左手チャネル802に対するマウント・テ
ーブル・エントリを新たなチャネル301から作られて
いる右手チャネル804に連結する。新たなマウント構
造体におけるポインタ819が、新たなチャネル301
を示すように設定される(1219)。 【0110】結合子「A」に続いて、switch文1
221において、フラグ引数がreplace,bef
ore、またはafterのオプションの何れかを示す
かどうかによって、3つの分岐の中の1つを指定する。 before分岐1223の場合、ブロック1221に
おいて、検査により、別のディレクトリが既に左手チャ
ネル802に結合されているかどうかを判断する。結合
されていない場合、結合ディレクトリは不可能であり、
beforeオプションはエラーである(1231)。 そのようなディレクトリが既に存在する場合、repl
aceオプション1225の場合にように処理が継続す
る。replaceオプションにおいては、、古いチャ
ネル301と同等の左手チャネル802に対応するマウ
ント構造体809のリストの先頭に、新たなマウント構
造体809が置かれる(1233)。replaceオ
プション1225が使用されている場合、新たなマウン
ト構造体809における終端フィールド813が、リス
トの最後を示すように設定される(1234)。aft
erオプション1227においては、最終的に、ステッ
プ1235において再び検査を行い、結合ディレクトリ
が可能かどうかを判断し、そうでない場合、エラー12
37となる。可能ならば、ブロック1239で示したよ
うに、マウント構造体809のリストの末尾に新たなマ
ウント構造体809が置かれる。次に、mountは、
新たなマウント構造体809に属するマウント識別子を
返す。bindmountを続けると、この関数は、新
旧のチャネル301をクローズし、それらのうち、マウ
ント・テーブルにも追加されず、フリー・チャネルのリ
スト以外には使用されないものを返す。 【0111】システム・マウント関数コールは、新たな
パス名引数がないという点で、システム結合関数コール
とは異なる。その代わり、新たなパス名引数は、オープ
ン・プロトコル・チャネル517を表すファイル記述子
417である引数によって置き換えられている。そのよ
うなファイル記述子417を得る方法は、さらに詳細に
後述する。さらに、システム・マウント関数コールは、
マウントされているプロトコル・サービス209へと渡
されるデータからなる引数を含む。そのフラグに応じて
、bindmountは、最初にファイル記述子417
およびファイル記述子配列413を用いて、ファイル記
述子引数によって指定されたプロトコル・チャネル51
7の位置を特定する。 【0112】次に、プロトコル・チャネル517を用い
てマウント・サービス・アタッチ処理を実行する。アタ
ッチ処理において最初に行うことは、使用されていない
マウント・サービス配列要素503の位置を特定するこ
とである。これが終わると、既に説明した包括的なde
vattach処理を実行する。ただし、これを呼び出
すのに使用する引数は、マウント・サービス203を指
定する「M」である。devattachは、その型フ
ィールド313がマウント・サービス203を指定する
ように設定されたチャネル構造体301を返す。そのマ
ウント・サービス203に対するアタッチ関数は、その
チャネルのdevフィールド315を使用されていない
マウント・サービス配列要素503に対する識別子の値
に設定し、さらに前記の使用されていない要素のポイン
タ505を、それがチャネル構造体を示すように、設定
する。次に、プロトコル・チャネル引数を用いて、引数
によって指定されたプロトコル・チャネル517に対し
マウント・サービス・キュー構造体509によって表さ
れるメッセージ・キューが既に存在するかどうかを判断
する。存在しない場合、割り当てられている。ここで、
devattachによって返されたチャネル301に
対する識別子およびプロトコル・サービス209に渡さ
れるはずであった引数が入ったattach往信メッセ
ージ(tmassage)が送られる。返信メッセージ
が戻ったとき、それには、プロトコル・サービス209
におけるファイル木構造125のルートに対するqid
が入っている。このqidは、devattachによ
って返されたチャネル301のqidフィールド323
およびmqidフィールド339へとコピーされ、さら
に、メッセージ・キューが属するプロトコル・チャネル
517へのポインタが、pchanフィールド337に
コピーされる。次に、マウント・サービス・アタッチ処
理の結果得られたチャネルは、新たなチャネル301引
数としてマウント関数に与えられる。bindmoun
t関数についてmountが指定されると、bindm
ountは、ファイル記述子配列413のプロトコル・
チャネル517をクローズし、さらにファイル記述子配
列413からそれを削除することによって、終了する。 【0113】オープン・プロトコル・チャネル517の
獲得:図13 マウント・システム・コールの引数は、オープン・プロ
トコル・チャネルのファイル記述子417が含まれる。 プロトコル・チャネル517は、プロトコル・サービス
209への接続であるファイルを表すチャネル301で
ある。好ましい実施例において、接続は、ローカル・プ
ロトコル・サービス211がメッセージを送受信する手
段であるパイプにおけるファイル、または通信システム
を介した遠隔のプロトコル・サービス213との会話を
表すファイルの何れも良い。実施例においては、パイプ
におけるファイルに対するファイル記述子は、そのパイ
プを生成する「pipe」システム・コールによって与
えられる。通信システムを介する会話を表すファイルに
対するファイル記述子は、次のようにして獲得される。 まず、「dial」関数が呼び出される。この関数は、
その会話を表すファイルを含むディレクトリのパス名を
返す。 次に、その会話を表すファイルのパス名が、「open
」関数で用いられ、そのopen関数は、その会話を表
すファイルに対するファイル記述子を返す。 【0114】プロトコル・チャネル517が表す接続の
対象であるプロトコル・サービス209をプロセッサ1
02によってsrv615に登録することにより、プロ
トコル・チャネル517を一般的な用途に使用できるよ
うにすることができる。すべてのサービスについて言え
ることであるが、srv615は、それがファイルとし
て管理する資源を提供する。従って、プロトコル・サー
ビス209をsrv615に登録するためには、そのプ
ロトコル・サービス209を表すファイルをsrvによ
って表されるディレクトリに生成し、さらにその生成し
たファイルへの接続を表すファイルに対するファイル記
述子を書けばよい。 【0115】勿論、システム生成関数を呼び出せば、s
rvへのファイル生成要求が発生することになり、sr
vは、この生成要求に応じて、そのファイルに対するデ
ィレクトリ・エントリを作り、ディレクトリ・エントリ
に対するqidを生成されたファイルに対するチャネル
301のフィールド323に置き、さらにディレクトリ
・エントリへのポインタを補助フィールド333に置く
。同様に、システム・ライト・処理の実行も、srvへ
のファイル書込み要求を発生する結果となり、srvは
、この書込み要求に応じて、ファイル記述子によって指
定されるプロトコル・チャネル517へのポインタをプ
ロトコル・サービス209へのディレクトリ・エントリ
に置く。プロトコル・サービス209を表すファイルの
名前を用いて、オープン・システム・コールを行うと、
結果的に発生するsrv615に対するオープン・ファ
イル要求によって、srv615は、プロトコル・サー
ビス209に対するプロトコル・チャネル517を返す
ことになる。そして、openにより、既に述べたファ
イル記述子417と共にプロトコル・チャネル517が
与えられ、マウント・システム・コールにおいて、その
ファイル記述子417を使用することもできる。  【0116】図13において、srv615によって維
持されているディレクトリは、ディレクトリ・エントリ
1303の木構造からなる。各ディレクトリ・エントリ
1303は、情報1305および多数のポインタからな
る。これらのポインタによって、ディレクトリ・エント
リ1303が1つの木構造へと組織される。この木構造
の各レベルに1つ以上のディレクトリ・エントリ130
3があり、所与のレベルのエントリ1303は、内側の
ノード、即ち木構造の次に低いレベルの点、またはプロ
トコル・サービス209を表す葉ノードの何れかである
。以下において、内側のノードを「親」と称する。所与
の親を有するエントリ1303は、次ポインタ1311
および後ポインタ1313によって子リスト1310へ
と接続される。さらに、所与の子リスト1310の各エ
ントリ1303は、その親エントリ1303へのポイン
タ1309を有する。親エントリ1303は、さらに子
リスト1310における最初のエントリ1303へのポ
インタ1307も有する。葉ノードは、その葉ノードに
よって表されるプロトコル・サービス209への接続を
表すプロトコル・チャネル517へのポインタ1314
を持つことがある。さらに、エントリ1303が、チャ
ネル301によって表される場合、そのチャネル301
の補助フィールド333には、そのチャネルによって表
されるエントリ1303へのポインタ1302が収容さ
れる。 【0117】ディレクトリ情報1305は、次のフィー
ルドからなる。名前1315:プロトコル・サービス2
09が登録されている場合、それを特定するために使用
される名前である。qid1317:そのディレクトリ
を表すチャネル301におけるディレクトリ・エントリ
1303を表すqidである。type1319および
dev1321:これらによりsrv615を指定する
。モード1323:エントリ1303によって表される
ディレクトリが開かれている場合、そのオープン・モー
ドを示すように設定される。atime1325:いつ
エントリ1303が割り当てられたかを示す。mtim
e1327:いつエントリ1303の親が割り当てられ
たか、またはエントリ1303が親ならば、最後に子が
生成された時間を示す。 長さ1329:エントリ1303が親ならば、子のエン
トリ1303の数を表す。uid1331:そのエント
リ1303を所有する利用者を命名する文字列値である
。 gid1333:uidにおいて特定される利用者が所
属するグループを識別する文字列値である。 【0118】以上、第9案のオペレーティング・システ
ムにより、プロセスごとの名前空間がどのように実施さ
れるか、その名前空間がbindおよびmount処理
によりどのように変更できるか、ファイルの位置を特定
するために名前空間をどのように利用できるか、さらに
そのように特定されたファイルに対してファイル処理を
どのように実行できるかについて、詳細に示した。以下
において、プロセスごとの名前空間にとり特に有利な2
つの用途を調べる。 【0119】第9案のウィンドウ・システム:図14〜
23 ウィンドウ・システムとは、オペレーティング・システ
ムの下で実行中のプロセス102にグラフィックス端末
上のウィンドウを与え、かつキーボードまたはマウスの
ような指示装置からウィンドウへの入力に応答するよう
な、オペレーティング・システムのサブシステムである
。Xウィンドウのような従来技術のウィンドウ・システ
ムは、大きく且つ複雑なシステムである。第9案がプロ
セスに利用可能な関数をファイル木構造として定義し、
さらに第9案のプロセス102がそれ自体の名前空間1
15を定義できることから、Xウィンドウなどの従来技
術のウィンドウ・システムとほぼ同じ機能を備えながら
も、それより相当少ないコードしか必要としないような
ウィンドウ・システムを構築することが可能となった。 現在のところ好ましい実施例は、Xウィンドウの大きさ
の1/10以下である。さらに、第9案のウィンドウ・
システムの設計で使用される原理は、他のオペレーティ
ング・システムに対する異なるウィンドウ・システムの
設計にも使用することができる。以降、はじめに第9案
のウィンドウ・システムの概要を提示し、その上で、そ
の効率の原因となるシステムのある側面をさらに詳細に
説明する。 【0120】第9案のウィンドウ・システムの概要:図
14および15 第9案の端末、即ちGnot711には、キーボード、
グラフィック・ディスプレイ(graphics di
splay)、およびマウスが含まれる。これらの装置
は、カーネル・サービス#bおよび#cをディレクトリ
/dev619に結合することにより、第9案のプロセ
ス102の名前空間115にまとめてもよい。そのよう
な結合を実行すると、/dev/mouseはマウスを
示し、/dev/consはキーボードを示し、/de
v/bitbltはグラフィック・ディスプレイを示す
。これらのファイルを開き、リードおよびライト処理を
適切に行うことにより、グラフィック操作を行うことが
できる。例えば、マウスの動きは、/dev/mous
eへのリード処理によって決定され、/dev/bit
bltに書き込むことによってグラフィック・ディスプ
レイ上に表示が生成される。 【0121】第9案のウィンドウ・システムは、プロト
コル・サービス209として実施される。ウィンドウ・
プロトコル・サービスは、Gnot711上にウィンド
ウを有するファイルのインスタンスをプロセス102に
与える。プロセスは、ウィンドウ・サービスによって与
えられたファイルを読み・書きすることによって、ウィ
ンドウを制御する。ウィンドウ・サービスは、ファイル
/dev/mouse、/dev/consおよび/d
ev/bitbltを含む名前空間を有するプロセスの
集合によって実施される。さらに詳細に後述するように
、これらのファイルを如何なるサービス123によって
与えてもよい。必要なことは、そのファイルに対するリ
ードまたはライト処理が、結果的に、端末に表示された
ウィンドウからデータを読んだり、端末に表示されたウ
ィンドウにデータを書いたりすることになるということ
だけである。最も一般的には、それらのファイルは、カ
ーネル・サービス#bおよび#cによって与えられるか
、または問題のウィンドウ・プロトコル・サービスがそ
のクライアントであるような別のウィンドウプロトコル
・サービスによって与えられ、さらにそれらのファイル
によって制御されるウィンドウが、Gnot711にお
いて表示される。 【0122】ウィンドウ・サービスは、プロトコル・サ
ービス209であるため、リードおよびライト処理は、
マウント・サービス203に至る。マウント・サービス
203では、それらの処理をウィンドウ・サービスへの
往信メッセージ(tmassage)に変換し、そのウ
ィンドウ・サービスから返信メッセージ(rmessa
ge)に入ったデータが戻るのを待つ。そのデータが、
マウント・サービス203に戻ると、そのデータは、リ
ードまたはライト処理を行ったプロセス102に返され
る。ウィンドウ・サービスは、tmessageに応じ
て、それらのtmessageをウィンドウ・サービス
の名前空間の一部であるファイル/dev/mouse
、/dev/consおよび/dev/bitbltに
対するリードおよびライトへと変換する。これらのリー
ドおよびライトへの応答は、rmessageに変換さ
れて、マウント・サービス203に返される。このよう
に、ウィンドウ・サービスは、その名前空間におけるフ
ァイル/dev/mouse、/dev/consおよ
び/dev/bitbltを複数のプロセス102の間
で効率的に多重化する。または、換言すれば、ウィンド
ウ・サービスは、プロセス102に仮想端末の集合を与
える。 【0123】図15において、ルート1502は、次の
ファイルからなるディレクトリである。bitblt1
503:このファイルに書き込むと、プロセス102に
対するウィンドウにおけるグラフィック表示が変化し、
このファイルから読み出すと、プロセス102に対する
ウィンドウにおける表示に関する情報が返される。co
ns1505:このファイルのリードにより、Gnot
711に接続されたキーボードからの入力を獲得し、こ
のファイルへのライトによって、文字がカーソル位置の
表示に出力される。hold1507:このファイルに
より、cons1505からのリードにおいて得られた
新たな行の文字に対しプロセス102が如何に応答する
べきかを示す。mouse1509:このファイルのリ
ードにより、Gnot711に接続されたマウスからの
入力を得る。nbmouse511:このファイルのリ
ードによって、同様にマウスからの入力を得るが、マウ
スの状態に変化は待たない。rcons1513:この
ファイルのリードによって、Gnot711に接続され
たキーボードから未処理の入力を得る。snarf15
15:このファイルは、ウィンドウ間のデータ転送に使
用される;ライトによって、ウィンドウからsnarf
ファイルにデータが書き込まれ;リードによって、sn
arfファイルのデータがウィンドウに読み込まれる。 【0124】プロセス102が、その名前空間における
ファイル木構造1501をマウントする度に、プロセス
102は、ファイル木構造1501の新たなインスタン
スを受け取る、即ち、そのファイル木構造1501にお
けるファイルのインスタンスは、そのマウント処理を行
ったプロセス102から結果的に生じる接続を介してし
かアクセスできない。サービス123の概要において指
摘したように、ファイル木構造1501がプロセス10
2の名前空間においてマウントされる度に、ウィンドウ
・サービスは、ファイル木構造1501の新たなインス
タンスを与えることができる。これは、ウィンドウ・サ
ービスによってプロセス102に与えられるファイルを
表すチャネル301が、ウィンドウ・サービスによって
与えられるqidによって、そのファイルを識別するか
らである。従って、1つのプロセス102に対するファ
イル/dev/bitbltは、別のプロセス102に
対するファイル/dev/bitbltとは異なるqi
dを有するのであり、プロセス102によるそのファイ
ルへのライトは、そのプロセス102に対するファイル
/dev/bitbltのみに対するライトである。 【0125】図14において、ウィンドウ・サービス1
405は、その名前空間にカーネル・サービス#b14
11および#c1419によって与えられるファイルを
有す、かつプロセスP102(a)〜P102(n)の
集合にGnot711上のウィンドウを与えている。各
プロセスP102は、パイプ1403によってウィンド
ウ・サービス1405に接続されている。前記のように
、ウィンドウ・サービス1405によって与えられるフ
ァイルに対する処理は、ウィンドウ・サービス1405
とプロセス102との間のパイプ1403上のtmes
sageおよびrmessage205および207と
なる。ウィンドウ・サービス1405によって与えられ
るファイルは、図14において1406として現れる。 プロセス102がサービス1405によって与えられる
ファイル木構造1502をマウントする度に、そのプロ
セスは、ファイル1406におけるスロット1407を
受け取る。このスロットは、サービス1405によって
プロセス102に与えられるファイル1409(0..
k)の完全な集合を含む。 従って、スロット1407(a)は、プロセス102(
a)に対するファイル1409(0..k)のインスタ
ンスからなる。 【0126】ウィンドウ・サービス1405により、所
与のプロセス102に対するファイル1409について
のファイル処理を指定するメッセージ205および20
7が、カーネル・サービス#b1411およびカーネル
・サービス#c1417によって与えられるファイルに
ついての処理を指定する関数コール217および219
へと変換される。#bが/dev605に結合されると
、/dev/mouse1413に関するリード関数コ
ール1412は、マウス1423から入力を獲得し、一
方、/dev/bitblt1415に関するリード/
ライト関数コール1425は、表示1427を制御する
。同様に、#cが/dev605に結合されると、/d
ev/consに関するリード関数コール1429は、
キーボード1431から入力を得る。 【0127】ファイル・システム1406の実施:図1
8および19 好ましい実施例において、ウィンドウ・サービス140
5がプロセス102に与えるファイル木構造1501に
おけるファイルのインスタンスの実施および位置づけに
、図18のデータ構造体1801を使用する。プロトコ
ル・サービス209によって与えられるファイルが開か
れている場合、マウント・サービス203によってプロ
トコル・サービス209に送られるオープンtmess
ageは、ファイル識別子(FID)331を含む。こ
のオープンtmessageに応じて、プロトコル・サ
ービス209は、そのファイル識別子331を、プロト
コル・サービス209がファイルを識別するために内部
的に使用するqid323に関係付ける。プロトコル・
サービス209によって返されるオープンrmessa
geは、そのqidを含み、さらにプロトコル・サービ
ス209によってそれに関係付けられたfid331お
よびqid323は、共に、そのオープン・ファイルを
表すチャネル301に含まれる。 【0128】まず、ファイル配列1803であるが、フ
ァイル配列1803は、プロトコル・サービス209に
よって現在与えられているファイルのすべてのインスタ
ンスに対するエントリ1805を収容する。所与のイン
スタンスのエントリ1805は、そのインスタンスのフ
ァイル識別子によって示される。各エントリ1805は
、3つのフィールドからなる。ビジー・フィールド18
07:エントリ1805が使用中かどうかを示す。フィ
ールド1809:インスタンスがオープンかどうかを示
す。ファイル・ポインタ・フィールド1811:インス
タンスに対するファイル構造体1813を指し示す。 ファイル構造体1813は、次のフィールドからなる。 ビジー1815:インスタンスがビジーかどうかを示す
。ファイル型1817:ファイルが、ファイル木構造1
501におけるファイルの何れであるかを示す。スロッ
ト1819:ファイルが何れのスロット1407に属す
るかを示す値である。所与のファイル木構造1501の
すべてのファイルに対するファイル構造体1813は、
スロット1819に同じ値を有する。最後に、記述ポイ
ンタ(dptr)1821:ディレクトリ木構造150
1に存在し得るファイルの記述子の配列におけるエント
リ1823を指し示す。 【0129】ファイル型1817およびスロット181
9は、インスタンスのqid323を生成するために、
共に連結される。記述子エントリ(DE)1823は、
3つのフィールドを有する。文字列名1825:ファイ
ル木構造1501における名前の1つである。ファイル
型値1827:名前に対応するファイル型であり、ファ
イル型(ftype)フィールド1817と同じ値を有
する。そして、許可フィールド1829:ファイルをど
のように使用できるかを示す。 【0130】スロット1819の可能な値は、それぞれ
、そのスロットによって表されるファイル木構造150
1へのtmessageによって制御される表示142
7中のウィンドウを表すデータ構造体に対応する。ウィ
ンドウのデータ構造体1903を図19に示す。構造体
1903は、次の種類の情報を含む。refフィールド
1905:スロット1819の値に相当するファイル木
構造1501があるかどうかを示す。ビジー1907:
ウィンドウ・データ構造体1903が現在使用中かどう
かを示す。スロット1909:ウィンドウ1903が対
応するスロット値。wdesc1911:構造体190
3によって表されるウィンドウを記述する情報である。 フレーム記述1913:wdesc1911によって指
定されたウィンドウの何れの部分が現在表示されている
かを記述する情報。qh1914:テキスト1915に
おける文字へのポインタ。テキスト1915は、ウィン
ドウに表示されるべきテキストを収容する。rawbu
f1917:キーボード1431からウィンドウへの生
の(未処理の)入力を収容するバッファ。コンソール・
ライト情報1919:ファイルcons1505を指定
するtwriteメッセージで受信した情報。コンソー
ル・リード情報1921:ファイルcons1505を
指定するtreadメッセージに応じて送られるべき情
報。マウス・リード情報:ファイルmouse1509
を指定するtreadメッセージに応じて送られるべき
情報。リード・キュー・ポインタ(rqpr)1925
:スロットによって表されるファイル木構造1501に
おけるファイルを指定するtreadメッセージの待ち
行列を示す。ライト・キュー・ポインタ(wqpr)1
927:スロットによって表されるファイル木構造15
01におけるインスタンスを指定するtwriteメッ
セージの待ち行列を示す。kbdc1929:そのウィ
ンドウにとって重要なキーボードの文字を収容する。s
end1931:ウィンドウにおける変更のためにrm
essageを送信らなければならないことを示すフラ
グ。ウィンドウ状態1933:ウィンドウの現在の状態
を示す情報。そして、ビット・リード情報1935:ウ
ィンドウのビット・マップからビットを読み出すために
必要な情報。 【0131】ファイル木構造1501に対するファイル
・ロケータ処理 ウィンドウ・サービス1405は、プロトコル・サービ
ス209として、マウント・サービス203からtme
ssageを受け取ると、このtmessageに対し
、マウント・サービス203に返すrmessageに
よって応答する。以下において、ウィンドウ・サービス
1405がtmessageのいくつかに応答する方法
をを説明し、マウント・サービス203とプロトコル・
サービス209との間の相互作用をプロトコル・サービ
ス209から見た例を与える。 【0132】tmessageによって指定される処理
を2つあげれば、attachおよびwalkファイル
・ロケータ処理である。まず、attach処理につい
ては、既に述べたとおり、マウント・システム・コール
の実行の結果、マウント・サービス203により、その
ファイル記述子417がマウント・システム・コールに
おいて使用されたプロトコル・チャネルによって表され
るプロトコル・サービス209にattach返信メッ
セージが送られる。好ましい実施例では、マウント・シ
ステム・コールは、さらに、マウント・サービス203
がattach往信メッセージに入れてプロトコル・サ
ービス209に送るデータを含む。プロトコル・サービ
ス209が、ウィンドウ・サービス1405ならば、そ
のデータには、スロット数が含まれる。 ウィンドウ・サービス1405は、このattach往
信メッセージに応じて、attach往信メッセージに
含まれるファイル識別子に対するエントリ1805を発
見し、ビジー1807を1に、オープン1809を0に
それぞれ設定する。次に、ウィンドウ・サービス140
5は、インスタンスにファイル構造体1813を割り当
て、スロット・フィールド1819をルート・ディレク
トリを指定する値に設定し、さらにdptr1821を
ルート1502に対するディレクトリ・エントリ182
3を示すように設定する。ウィンドウ・サービス140
5によって返されるattach返信メッセージには、
ftype1817およびスロット1819から作られ
たqid323が含まれる。最後に、スロットに関係付
けられたウィンドウ1905における参照カウンタがイ
ンクリメントされる。 【0133】既に述べたとおり、パス名の分析時に呼び
出されたチャネル301がプロトコル・サービス209
におけるファイルを表すときに、walk往信メッセー
ジが生成される。この往信メッセージによって、プロト
コル・サービス209におけるディレクトリに対するフ
ァイル識別子331およびそのディレクトリにおけるフ
ァイルの名前が指定される。返信メッセージにより、そ
の名前によって指定されたインスタンスのqidが、返
される。この時、往信メッセージにおけるファイル識別
子331が、返されたqidに関係付けられる。好まし
い実施例において、ウィンドウ・サービス1405は、
walk往信メッセージに応じて、ファイル識別子33
1に対するエントリ1805の位置を特定して、その名
前を見る。 その名前が、ルート1502を示す「.」ならば、エン
トリ1805内のファイル・ポインタ1811によって
示されるファイルは、そのルート・ディレクトリを記述
する。この場合、そのファイル1813におけるqid
323が、返信メッセージに入れて返され、そうでない
場合、その名前に対応する同じフィールド1825を有
する記述エントリ1823が見つかるまで、ファイル記
述の配列が探査される。エントリ1823からのfty
peフィールド1827の値およびディレクトリに対す
るファイル1813からのスロット1819の値が、保
存される。次に、現在使用されているすべてのファイル
構造体1813が、探査され、保存されたスロット値を
スロット1819に、保存されたファイル型の値をft
ypeフィールド1817にそれぞれ持つものが求めら
れる。見つかった場合、それらの保存された値は、qi
d323として返され、見つからなかった場合は、新た
なファイル構造体1813が割り当てられて、ftyp
eフィールド1817が保存されたファイル型の値から
設定され、スロット1819が保存されたスロット値か
ら設定され、dptr1821がその名前を持っていた
ファイル記述の配列のエントリを示すように設定され、
ビジーが1に設定され、ファイル識別子331に対する
エントリ1805のfptr1811が新たなファイル
構造体を示すように設定される。そして、保存されたス
ロットおよびftypeの値は、qid323として返
される。 【0134】ウィンドウ・サービス1405の内部構造
:図16〜19および図21 好ましい実施例においては、ウィンドウ・サービス14
05は、第9案のオペレーティング・システムの下で実
行する3つのプロセス102によって実施される。図1
6において、ウィンドウ・サービス1405(0)にあ
たるこれら3つのプロセス102、ならびにカーネル・
サービス#b1411、#c1419およびウィンドウ
・サービス1405のクライアント(依頼主)であるプ
ロセス102に対する関係を説明する。クライアントで
あるプロセス102は、図16において、CP1615
(0)、CP1615(1)、および第2のウィンドウ
・サービス1405(1)を構成する3つのプロセスと
して現れるが、これは、また、ウィンドウ・サービス1
405(0)のクライアントでもあり、かつそれ自体が
、図16には示していないクライアントを有する。この
ように、図16には、3つのレベルの端末サービスが存
在する。 即ち、カーネル・サービス#bおよび#cによって与え
られる実端末サービス、ウィンドウ・サービス1405
(0)によってそのクライアントに与えられる第1水準
の仮想端末サービス、およびウィンドウ・サービス14
05(1)によってそのクライアントに与えられる第2
水準の仮想端末サービスである。さらに詳細に後述する
が、各水準の端末サービスは、異なる名前背景(NC)
1621に対応する。例えば、名前背景1621(0)
においては、ファイル名「mouse」は、カーネル・
サービス1411によって与えられるmouseファイ
ルを示し;名前背景1621(1)においては、ファイ
ル名「mouse」は、ウィンドウ・サービス1405
(0)によって与えられるファイル木構造1501のう
ちの1つにあるファイルを示し;名前背景1621(2
)においては、ファイル名「mouse」は、ウィンド
ウ・サービス1405(1)によって与えられるファイ
ル木構造1501のうちの1つにあるファイルを示す。 【0135】まず、ウィンドウ・サービス1405(0
)については、ウィンドウ・サービス1405(0)を
構成する3つのプロセスは、主プロセス1613(0)
、マウス従プロセス(MS)1603(0)、およびキ
ーボード従プロセス(KS)1605(0)である。主
プロセス1613(0)は、ウィンドウ・サービス14
05(0)のクライアントからパイプ1607(0)を
介して往信メッセージを受信し、この往信メッセージに
応じて、返信メッセージをパイプ1606(0)を介し
てクライアントに与える。往信メッセージおよび返信メ
ッセージは、図16では205(0)および207(0
)として現れる。往信メッセージが、#b1411およ
び#c1419によって与えられるファイルに対する処
理を必要とする場合、主プロセス1613(0)は、第
9案のリードおよびライトのシステム・コールを用いて
必要な処理を行う。前記のとおり、第9案のオペレーテ
ィング・システムは、ファイル・システム・コールをフ
ァイル・サービス#bまたは#cに適合する種類の要求
217および219へと自動的に変換する。 【0136】マウス従プロセス1603(0)およびキ
ーボード従プロセス1605(0)が、必要なのは、#
b1411によって与えられるmouseファイルまた
は#c1419によって与えられるconsファイルに
対するファイル・リード処理を行うプロセス102が、
そのファイルから読み出されるべき実際のデータがない
限り、ブロックするからである。主プロセス1613(
0)は、そのクライアントからの往信メッセージに常に
応答できなければならないので、ブロックすることはで
きず、従って、#bにおけるmouseファイルまたは
#cにおけるconsファイルに対し、リード処理を直
接行うことはできない。 これらのリードは、それぞれマウス従プロセス1603
(0)およびキーボード従プロセス1605(0)によ
って行われる。これら2つの従プロセスは、共に、主プ
ロセス1613(0)のクライアントである。マウス従
プロセス1603(0)の処理は、両者に典型的である
。マウス従プロセス1603(0)は、これが#b14
11によって与えられるファイルmouseに対して第
9案のシステム・リード・コールを行うときのループを
単に実行し、さらにウィンドウ・サーバ1405(0)
によって与えられるファイル木構造1501にうちの1
つにあるファイルmouseに対して第9案のシステム
・ライト・コールを行う。好ましい実施例における慣例
により、マウス従プロセス1603(0)およびキーボ
ード従プロセス1605(0)によって書き込まれるフ
ァイル木構造1501は、常に、スロット1407(0
)を持つものである。勿論、第9案のオペレーティング
・システムは、ファイル・システム・コールを#bによ
って適切な要求215に与えられたmouseファイル
に、ファイル・システム・コールをパイプ1607を介
して主プロセス1613に送られるwrite往信メッ
セージにウィンドウ・サーバ1405(0)によって与
えられるmouseファイルに自動的に変換する;主プ
ロセス1613は、そのwrite往信メッセージに、
他のクライアントからの往信メッセージと同じように応
答する。 【0137】以上より明らかなように、マウス従プロセ
ス1603(0)は、2つの異なる名前背景1621に
存在するmouseファイルに対してファイル処理を行
っている。リード処理は、名前背景1621(0)にあ
るmouseファイルに対するものであり、一方ライト
処理は、名前背景1621(1)にあるmouseファ
イルに対するものである。この状態は、マウス従プロセ
ス1603(0)において、第9案のopen、for
kpgrp、およびmountの処理を用いることによ
って達成される。これを行う方法を図17に示した。関
数mkslave1701を用いて、マウス従プロセス
1603(0)およびキーボード従プロセス1605(
0)の両方を作る。この関数は、2つの引数−−−パス
名、および各リード処理の時に読むべきバイト数を指定
する計数−−−を持ち、それが生成した従プロセスのプ
ロセス識別子(pid)を返す。 【0138】mkslave1701は、主プロセス1
613(0)によって、引数「/dev/mouse」
および「10」を付けて呼び出される。主プロセス16
13(0)は、その中でカーネル・サービス#b141
1がカーネル・ルート・ファイル・サービスによって与
えられるファイル/devに結合されているような名前
空間115を有するので、パス名「/dev/mous
e」は分析されて、カーネル・サービス#b1411に
よって与えられるファイル「mouse」を表すチャネ
ル301を指定するファイル記述子417となる。この
事実は、図17の最上部にある表記「名前背景1621
(0)」によって示される。主プロセス1613(0)
は、マウス従プロセス1603(0)を生成するために
mkslave1701を使用する時点で、既にパイプ
1607(0)生成し、かつウィンドウ・サービス14
05(0)をsrvに登録している。ウィンドウ・サー
ビス1405(0)を表すsrvのファイルに書き込ま
れるファイル記述子は、パイプ1607(0)によって
表されるファイルに対するファイル記述子のうちの1つ
である。このファイル記述子は、以下において「cfd
」と称するが、ウィンドウ・サービス1405(0)の
クライアントが往信メッセージを書き込むファイルを表
す。 【0139】mkslave1701が最初に行うこと
は、パス名引数荷よって指定されたファイルを開くこと
である(1705)。依然として名前背景1621(0
)にあるので、そのファイルは、#b1411によって
与えられるファイル「mouse」である。オープン処
理の結果として、ファイル記述子fd1は、この時点で
、#bのファイル「mouse」を表す。次に、for
k関数を含んだswitch文がくる(1707)。こ
のfork関数は、親プロセス1613(0)の背景の
コピーを有し、従ってfd1のコピーを有する新たな子
プロセス102を生成する。その子プロトコル・サービ
ス209は、また親プロセス1613(0)と同じ名前
空間105を有する。このswithc文には3つの分
岐がある。第1の分岐1709は、fork関数の実行
中の発生するエラーを処理する。第2の分岐1713は
、親プロセス1613(0)によって実行されるが、子
プロセス1603(0)によっては実行されないような
コードである。ブロック1737および1739によっ
て示したように、このコードは、fd1の親プロセス1
613(0)のコピーをクローズし、子プロセス160
3(0)のpidであるpidを返す。 【0140】switch文の第3の分岐1715は、
子プロセス1603(0)によってのみ実行されるコー
ドである。まず、子プロセス1603(0)に新たな名
前空間105を与えるために「forkpgrp」が実
行される。forkgrpが引数「0」と共に呼び出さ
れるので、その新たな名前空間は、親プロセス1613
の名前空間105のコピーである。次に、システム・マ
ウント処理が、行われる(1721)。このマウントは
、cfd−−−これは、ウィンドウ・サービス1405
(0)のクライアントによって使用されるパイプ160
7(0)の最後を表す−−−を、BEFOREオプショ
ンを用いて、新たな名前空間105におけるディレクト
リ/devに結合する。マウント処理の結果として、サ
ービス1405(0)のファイル1406のスロット0
にあるファイル木構造1501は、/devに結合され
ていて、/dev/consなどのファイルへの参照は
、この時点で、ファイル1406のスロット0における
ファイルconsへの参照となる。しかし、プロセス1
603(0)の名前空間105は変化し、「cfd」は
/devにマウントされているので、オープン・システ
ム・コールにおけるパス名引数は、この時点で、サービ
ス#b1411 におけるファイル「mouse」では
なく、サービス1405(0)のスロット0のファイル
木構造にあるファイル「mouse」と分析される。こ
の名前背景の変化を図17にブロック1717に続く波
線によって示した。ブロック1717において、名前背
景1621(0)は、名前背景1621(1)から分離
される。 【0141】オープン・システム・コールによって返さ
れたファイル記述子417は、「fd2」に割り当てら
れる。従って、この時点で、fd1は、サービス141
1におけるファイル「mouse」を表し、fd2は、
サービス1405(0)のスロット0にあるファイル「
mouse」を表す。switch1707の第3の分
岐の残りの部分は、マウス従プロセス1603が、fd
1を用いてリード・システム・コールを行うループ17
35であり、それは、サービス#b1411におけるm
ouseファイルを読み(1725)、さらにfd2お
よびサービス#b1411におけるmouseファイル
から受け取ったデータを用いてライト・システム・コー
ルを行い、そのデータをサービス1405(0)のスロ
ット0にあるmouseファイルに書き込む(1733
)。書込みが失敗の場合、即ち、サービス#b1411
から受け取っただけのデータをサービス1405(0)
に書き込むことができない場合、このプロセスは、出る
(1731)。キーボード従プロセス1605(0)も
全く同じようにして生成されるが、mkslave17
01の呼び出しでは、パス名として「/dev/rco
ns」を指定し、バイト長として「1」を指定する点が
異なる。従って、キーボード従プロセス1605による
fd1に対する各リードは、キーボードから1文字を読
み、プロセス1605によるfd2に対する各ライトは
、スロット0にあるファイル木構造1501の「rco
ns」ファイルに1文字を書き込む。ここでは「rco
ns」が使用されるので、ウィンドウ・サービス140
5(0)は、文字を、ちょうどそれらがキーボードから
入力されたとおりに受け取る。 【0142】mkslave関数によって、第9案にお
けるファイル・アクセス処理、ならびに「fork」お
よび「forkpgrp」システム・コールのセマンテ
ィックス(意味と動作の関係)の基本的な意義がいくつ
か説明される。まず、ファイル・アクセス処理では、パ
ス名ではなくファイル記述子417によってファイルを
参照する;代わって、ファイル記述子がチャネルを参照
し、そして、チャネル301が所与のファイルを表す限
り、そのチャネルを参照するファイル記述子を使用する
ファイル・アクセス処理は、所与のファイルをアクセス
することになる。 さらに、「fork」が新たなプロセス102を生成す
ると、その新たなプロセス102は、古いプロセス10
2の背景のコピーを受け取る。この背景にはファイル記
述子配列413が含まれる;従って、新たなプロセス1
02は、そのforkシステム・コールを実行したプロ
セス102に対し開かれていた任意のファイルに対して
ファイル・アクセス処理を行うことができる。最後に、
「forkpgrp」は、新たな名前空間115を生成
するとき、forkpgrpを実行しているプロセス1
02に対し新たなマウント・テーブル801を生成する
に過ぎない;そのプロセス102に対するファイル記述
子配列413は、不変のままである。このようなことか
ら、mkslave1703を実行するプロセス102
は、同じパス名を用いて、カーネル・サービス#c14
19のファイル「rcons」およびウィンドウ・サー
ビス1405のファイル「rcons」を開くことがで
きる。さらに詳細に後述するように、ファイル・アクセ
ス処理、「fork」および「forkpgrp」のセ
マンティックスにより、サービスの再帰的な生成も可能
である、即ち、サービスは、クライアントとして、それ
自体の別のインスタンスを持つことができる。 【0143】また、パイプ1607(0)は、主プロセ
ス1613(0)をそのクライアント1615(0およ
び1)およびウィンドウ・サービス1405(1)に接
続する。パイプ1607は、主プロセス1613(0)
によって生成されたので、主プロセス1613(0)は
、それが返信メッセージを書き込む先のパイプ1607
(0)内のファイルを表すサービス・ファイル記述子1
617(0)を有する。各クライアント・プロセスは、
そのクライアントが往信メッセージを書き込む先のパイ
プ1607(0)内のファイルを表すクライアント・フ
ァイル記述子1619(0)を有する。クライアント・
プロセスは、主プロセス1613(0)によって、生成
され、かつクライアント・ファイル記述子1619(0
)が与えられている。Gnot711の利用者が画面1
27において新たなウィンドウを要求する度に、新たな
クライアント・プロセスが、生成される。好ましい実施
例において、新たなウィンドウは、マウス1423を用
いて画面1427上のメニューからその選択肢を選ぶこ
とによって、要求される。 【0144】マウス1423によってメニューから新た
なウィンドウを選択すると、結果として、マウス従プロ
セス1603(0)が、サービス#b1411によって
与えられるmouseファイルに対するリードを完了し
、そのmouseファイルから読み出したデータをサー
ビス1405(0)のスロット0にあるmouseファ
イルに書き込む。結果的に、主プロセス1613(0)
へのパイプ1607(0)上に往信メッセージが発生し
、この往信メッセージに応じて、主プロセス1613(
0)は、新たなウィンドウに対しウィンドウ構造体19
03を位置付けて用意する。次に、主プロセス1613
(0)は、引数として新たなウィンドウに対するスロッ
トを用いて関数「spawn」を呼び出す。spawn
は、クライアント・プロセス1615を生成し、引数に
おいて指定されたスロットに対するウィンドウ・サービ
ス1405(0)におけるファイル木構造1501をク
ライアント・プロセス1615の名前空間105の一部
とし、さらに新たなクライアント・プロセス1615に
おけるシェル・プログラムを実行する。 【0145】図21において、spawn関数2101
は、まず同期パイプをオープンする(2105)。同期
パイプの目的は、新たなクライアント・プロセス161
5が走るまで、主プロセス1613(0)が進まないこ
とを確実にするためである。次に、switch文にお
けるforkシステム・コールを実行することによって
、クライアント・プロセス1615が生成される(21
07)。forkに関しエラーがあった場合、分岐21
09が取られ、エラーを示す値−1が返される。for
kが成功した場合、主プロセス1613(0)が、分岐
2113に示したように進行する;synchパイプを
読み(2115)、子に対するpidを返す(2117
)。新たなクライアント・プロセス1615がsync
hパイプにデータを置くまで、主プロセス1613(0
)は、リードを完了できないので、主プロセス1613
は、新たなクライアント・プロセス1615が走るまで
は、戻らない。 【0146】分岐2107は、新たなクライアント・プ
ロセスがどのように進むかを示す。まず、新たなクライ
アント・プロセス1615は、forkpgrpを実行
することによって、新たな名前空間を得る(2119)
。引数「0」が使用されるので、その新たな名前空間は
、主プロセス1613の名前空間のコピーである。そこ
で、クライアント・プロセス1615は、主プロセス1
613(0)が実行を継続できるように、synchパ
イプへのライトを行う(2121)。次に、プロセス1
615は、ウィンドウ・サービス1405(0)からフ
ァイル木構造1501をマウントするべき標準の場所を
示すパス名にcdf1619(0)をマウントする。こ
れを行うために使用されるマウント・システム・コール
は、引数としてスロット数を含む(2123)。前記の
ように、クライアント・プロセス1615におけるマウ
ント・システム・コールの結果として、attach往
信メッセージがパイプ1607(0)を介してウィンド
ウ・サービス1405(0)に送られる;ウィンドウ・
サービス1405(0)が、このattach往信メッ
セージに応じて、スロット数によって指定されたスロッ
トにおけるファイル木構造1501のルートに対するq
idを返し、そのqidが、cfd1619によって指
定されるチャネル301に置かれる(勿論、クライアン
ト・プロセス1615は、生成されたときに、cfd1
619の新たなコピーが与えられた)。次に、bind
システム・コールを用いて、ファイル木構造1501が
マウントされた先のパス名を/devに結合する(21
25)。「BEFORE」オプションを使用するので、
/dev/mouseのようなパス名は、この時、スロ
ット数によって指定されるスロットにあるファイル木構
造1501におけるファイル「mouse」へと分析さ
れる。 【0147】次に、synchパイプに対するファイル
記述子によって表されるファイル、パイプ1606(0
)のサービス端、および標準I/Oがクローズされる(
ブロック2127、2129、2131)。第9案の慣
例により、あるプロセスに属する標準I/Oに対するフ
ァイルは、ファイル記述子0および1を有する;従って
、ステップ2131においてこれらのファイルをクロー
ズすることにより、それらの記述子は、以降の用途に確
実に使用できるようになる。次に、読み出すために/d
ev/consを開く(2133)。このオープン・シ
ステム・コールによって、walk往信メッセージが発
生し、これにより、ファイル2406の適切なスロット
に/dev/consに対するファイル木構造1813
が生成され、さらに前記コールによりopen往信メッ
セージが発生し、これによって、1に設定されているフ
ァイルに対するエントリ1805に対するファイル18
09が開かれる。openは、クライアント・プロセス
1615に対するファイル記述子配列413の最初から
ファイル記述子417を捜し始めるので、openによ
って返されるファイル記述子は、ファイル記述子0とな
り、/dev/consは、標準入力ファイルとして作
用することになる。続いて、openシステム・コール
は、読むために/dev/consをオープンする;結
果は既に説明したとおりであるが(2135)、ope
nによって返されるファイル記述子417は、ファイル
記述子1となり、/dev/consは、標準出力ファ
イルとして作用する点が異なる。ステップ2137にお
いて、ファイル記述子1がオープンされるので、ファイ
ル記述子2−−−これは、慣例により標準エラー・ファ
イルを表す−−−がファイル記述子1と同じファイルを
表すことになり、エラー・メッセージが、/dev/c
onsに出力される。最後に、シェル・プログラム−−
−第9案のユーザ・インタフェースを与えるーーーが、
実行される(2139)。 【0148】ここで、新たなクライアント・プロセス1
615が、ウィンドウ・サービス1405に対するプロ
グラムを実行すると、結果は、ウィンドウ・サービス1
405(0)のクライアントである新たなウィンドウ・
サービス1405(1)である。ウィンドウ・サービス
1405(1)は、ウィンドウ・サービス1405(0
)と同じ構成要素を有し、その従プロセスおよびクライ
アント・プロセスにパイプ1607(1)によって接続
されている。 ウィンドウ・サービス1405(1)は、ウィンドウ・
サービス1405(0)と全く同様に作用するが、新た
なクライアント・プロセス1615(1)の名前空間1
05に設けられている、即ち、/dev/mouseま
たは/dev/consなどのパス名は新たなクライア
ント・プロセス1615に属するサービス1405(0
)のスロット1407にあるファイル木構造1501に
おけるファイルを指す点が異なる。従って、これらのフ
ァイルに対するリードおよびライトは、カーネル・サー
ビス#bおよび#cの代わりに、ウィンドウ・サービス
1405(0)へのパイプ1607(0)を介する往信
メッセージを発生する結果となる。そして、ウィンドウ
・サービス1405(0)が、ウィンドウ・サービス1
405(1)からの往信メッセージに応じて、カーネル
・サービス#bおよび#cへの要求を生成する。 【0149】主プロセス1613の内部構造:図20図
20において、主プロセス1613は、クライアント・
プロセス1615、マウス従プロセス1603、および
キーボード従プロセス1605からの往信メッセージ2
05および207を処理し、それらの往信メッセージに
応じて、ウィンドウ・データ構造体1903を更新する
。そして、#b1411および#c1419によって与
えられるファイルに対するファイル・アクセス・システ
ム・コールにおいてウィンドウ・データ構造体1903
の情報を使用する。好ましい実施例において、主プロセ
ス1613は、次の主な構成要素を含む。I/O関数2
019:ウィンドウ・サービス1405のクライアント
、マウス従プロセス1603およびキーボード従プロセ
ス1605からの往信メッセージ205および207に
応答する。マウス制御タスク2008:I/O関数20
19がマウス従プロセス1603から受信する往信メッ
セージを処理するタスク。キーボード制御タスク200
9:I/O関数2019がキーボード従プロセス160
5から受信した往信メッセージを処理するタスク。ウィ
ンドウ制御タスク2005:ウィンドウ・データ構造体
1903のデータをマウス1423からの入力の要求ど
おりに更新するタスク。各ウィンドウ1903(0・・
n)に対応する端末制御タスク2015(0..n):
キーボード制御2009およびウィンドウ制御2005
からの入力の要求どおりに対応するウィンドウ2013
の状態を変更し、そのウィンドウが属するクライアント
・プロセス1615に要求どおりの返信メッセージを送
り、さらに変更したとおりにウィンドウを表示するため
に、#b1411および#c1419によって与えられ
たファイルにライト処理を行う。 【0150】主プロセス1613のタスク構成要素は、
ウィンドウ1903の状態を変更する事象に応じて主プ
ロセス1613が計画して走らせる主プロセス1613
の内部の実体である。従って、これらのタスクは、プロ
セスの一般的性質をいくつか有するが、第9案のプロセ
ス102ではない。特に、それらは、すべて、名前空間
105も含めて主プロセス1613の背景を共有する。 タスクのスケジュリング規則は次のとおりである。即ち
、あるタスクが責任を有する資源の状態を変更するI/
O関数2019において、メッセージが受信されると、
直ちに、そのタスクが、実行予定のキュウーに配置され
、そのキュウーが空の場合は、直ちにI/O関数201
9が実行される。 【0151】構成要素2001の処理は、およそ次のと
おりである。I/O関数2019は、往信メッセージを
得るために、パイプ1607のサービス・ファイル記述
子1617によって指定されるファイルを読む。往信メ
ッセージが、ファイル位置づけ処理を指定した場合、I
/O関数2019は、そのメッセージ自体を処理して、
適切な返信メッセージを返す。前記の往信メッセージが
、ファイル・アクセス処理を指定した場合、I/O関数
2019は、そのメッセージを送ったプロセスに属する
ウィンドウ構造体1903(i)を見つけ、その構造体
1903の情報を矢印2019で示したように更新して
、端末制御2015(i)を走らせる予定をする。端末
制御タスク2015(i)が走る場合、ウィンドウ19
03(i)を矢印2023および2025で示したよう
に更新し、その更新により必要とされる動作を行う。そ
のような動作の例としては、矢印207によって示した
ようなウィンドウ1903(i)が属するプロセスへの
返信メッセージがある。この返信メッセージは、パイプ
1607にあるクライアント・ファイル記述子1619
によって表されるファイルに書き込まれる。もう1つの
例は、矢印219によって示したような、ウィンドウ1
903(i)に対応する画面1427におけるウィンド
ウを再描画する#b1411および#c1419へのラ
イト処理である。少し時間をおいて、I/O関数201
9は、実行を再開し、パイプ1607から新たに往信メ
ッセージを読む。 【0152】マウス従プロセス1603およびキーボー
ド従プロセス1605からメッセージを受信するのは、
特殊な場合である。メッセージがマウス従プロセス16
03からのもでであれば、I/O関数2019は、その
メッセージをグローバルな記憶装置のマウス・メッセー
ジ2002に書き込み、マウス制御タスク2008を予
定する。そのタスク2008が、走ると、マウス・メッ
セージ2002をマウス・データ2006に変換し、さ
らにウィンドウ制御2005を予定に入れる。ウィンド
ウ制御2005は、マウス・データ2006を調べて、
現在のウィンドウ2013を決定する。現在のウィンド
ウ2013とは、マウス1423からデータを受信した
ときにカーソルが位置していた画面1427上のウィン
ドウに対応するウィンドウ構造体1903のことである
。マウス・データ2006が、現在のウィンドウ201
3と一致しない画面1427内のウィンドウを示す場合
、ウィンドウ制御2005は、マウス・データ2006
によって指定される画面1427内のウィンドウに対応
するウィンドウ構造体1903を新たな現在のウィンド
ウ2013とする。そして、現在のウィンドウ2013
をマウス・メッセージによって要求されるように更新し
て、その新たな現在のウィンドウに対する端末制御20
15を予定する。端末制御2015が実行すると、端末
制御2015は、画面を再描画するライト処理を行い、
必要なメッセージをマウス従プロセス1603に送る。 メッセージが、キーボード従プロセス1605からのも
のである場合、I/O関数2019は、マウス従プロセ
スで示したように進むが、新たに入力された文字がグロ
ーバルな記憶装置のKBDC2004に書き込まれて、
キーボード制御2009が予定される点が異なる。キー
ボード制御2009が走ると、現在のウィンドウ201
3を変更し、現在のウィンドウ2013に対する端末制
御2015を予定する。端末制御2015は、既に説明
した処理を行う。 【0153】詳細な例:保持ファイル1507に対する
処理:図22および23 ウィンドウ・サービス1405によって与えられるファ
イル木構造1501の「保持」ファイル1507は、対
話的なプログラムのための文字入力インタフェースの改
良を実施する場合に、使用する。このようなインタフェ
ースにおける典型的な問題部分は、この改良によって解
決される。このようなインタフェースにおいては、線の
端を示すのに使用される線終端コード(一般に、改行ま
たは復帰)は、3つの異なる機能を有する。即ち、一連
のテキストを表示する場合、それをどのように行に分割
するかを指定する;対話的なプログラムに入力されてい
る場合、最後の行の終端子と現在の行の終端子との間の
テキストの文字列が送られるべきことを指定する;およ
び、コマンド行インタフェースの場合、最後の行の終端
子と現在の行の終端子との間のテキストの文字列が実行
されるべきことを指定する。従って、典型的な対話型ユ
ーザ・インタフェースにおいては、利用者が、行終端コ
ードを使用する場合、その行に関しては終了しており、
その行は、その利用者が行終端コードを使用したときの
ままの状態で、表示され、送られ、そして実行される。 【0154】この構造に本質的な問題は明白であり、従
来の技術は、その幾つかを特殊な文字によって解決して
きた。こうして、表示のために改行を阻止するべく特殊
文字を用いることがあり、コマンド行インタフェースで
は、コマンド行の入力が次の行へと続くことを示すため
に別な特殊文字をたいてい使用する。これまで解決され
てこなかったものは、行が行終端文字に応じて対話型プ
ログラムに送られるという事実から起こる問題である。 その結果、対話型プログラムでは、行終端コードを入力
するまでは、その行を編集することが許されるが、一方
、僅かに編集プログラムにおいては、行を入力し、行終
端コードを入力した後に、入力済みの行に戻って編集す
ることが一般に許される。この問題に有効な解決策と言
えば、ファイルから入力を読み出すような対話型プログ
ラムを設計し、入力ファイルをエディタを用いて生成し
たうえで、そのファイルを対話型プログラムに与えるこ
とぐらいであった。必要であり、かつウィンドウ・サー
ビス1405によって与えられるものは、利用者が指定
するまでは入力中の文字列が送られないようにする方法
である。 【0155】ウィンドウ・サービス1405では、この
問題を次のように扱う。第1のモードにおいて、行終端
コードにより、これまでのように行が送られるようにす
る。第2のモードにおいて、端末においてキーを叩くこ
とにより入力されると、そのモードに入ったときから出
るまでの間に入力文字が、そのモードから出た時点で送
られる。ここでは、第2のモードを保持モードと称する
。好ましい実施例において、保持モードからは、入った
ときに使用したものと同じキーを叩くことによって出る
。さらに、好ましい実施例において使用されるカーソル
およびウィンドウの境界線の形によって、そのウィンド
ウが現在、保持モードにあるかどうかを示す。好ましい
実施例では、カーソルは矢印である。保持モードにおけ
るカーソルは、中抜きの矢印であり、その他の場合は、
ベタの矢印である。 【0156】図22において、ウィンドウ構造体190
3におけるウィンドウ記述情報には、現在のカーソルに
対するビット・マップを示すcursorpフィールド
2203が含まれる。qh1914は、テキスト191
5における現在位置を示すポインタであり、代わりに、
ウィンドウ・データ構造体1903(i)によって表さ
れるウィンドウに表示されているテキストを収容してい
る。 【0157】cons read info1921は
、3つのフィールドからなり、ウィンドウ構造体190
3(i)に対応するファイル木構造1501にあるファ
イルconsおよびrconsに対するリードを指定す
る最も最近のtreadメッセージからの情報を格納す
る。それらのフィールドは、次のとおりである。rta
g2205:メッセージからのタグを収容する。rfi
d2207:メッセージからのfidを収容する。rc
nt2209:メッセージからの計数であり、読み出す
べき文字数を指定する。RQPTR1927は、優先す
るtreadを満たすために実行されるべき未解決のリ
ードの待ち行列を指し示す。この待ち行列の各要素22
13は、それが対応するtreadメッセージからのr
tag、rfidおよびrcntを持つ。KBDC19
29は、キーボードから読み出されるべき最後の文字を
収容し、hold2211は、ウィンドウ1903(i
)が保持モードかどうかを示すフラグである。 【0158】保持モードは、treadメッセージに応
じてデータを送るために使用されるので、好ましい実施
例においてtreadメッセージが処理される様子を最
初に説明する。好ましい実施例において、I/O関数2
019が、rconsまたはconsに対するリードを
指定するtreadメッセージを受信すると、I/O関
数2019は、qid323を用いて、rconsまた
はconsが入っているファイル木構造1501に対す
るスロットを確認したうえで、そのスロットに対応する
ウィンドウ構造体1903の所在を特定する。次に、図
23の流れ図2333で示したように、treadメッ
セージからのtagをウィンドウ構造体1903(k)
のrtag2205に、同じくそのメッセージからのf
idをrfid2207に、計数をrcnt2209に
、それぞれ書き込む(2335)。ここで、I/O関数
2019が、スケジュラを呼び出すと、これが、タスク
2008、2005、2009または2015のうち、
タスクの待ち行列において次に実行するべきものを実行
させる(2337)。 【0159】端末制御2015(k)が、次に走ると、
流れ図2313に示した処理を行う。rfid2207
は、0に等しくないので(2325)、新たなtrea
dメッセージを受信する。結果的に、新たなrqe22
13を生成し(2317)、rtag2205、rfi
d2207、およびrcnt2209からのフィールド
を0に設定し、新たなrqe2213を待ち行列の最後
に置く。cons read info1919に示さ
れたリード処理に対するリード・キューにおけるエント
リを作ると、端末制御2015(k)は、次に、リード
・キューが空かどうかを判断し、空ならば、待ち行列の
最初のエントリ2213を処理する(2325)。流れ
図2323に示したように、エントリを処理する要領は
、ウィンドウ1903(k)が保持モードにあることを
hold2211が示しているかどうかに依存する。ウ
ィンドウ1903(k)が保持モードにあることをho
ld2211が示している場合、リード処理において送
られた文字数をエントリ2213におけるrcntの最
小値に設定し、テキスト1915の最後とqh1914
によって現在印が付けられている位置との間の文字、即
ち、qh1914によって印が付けられている位置とテ
キスト1915の最後との間の行終端文字の数は単に無
視する。 そのうえで、エントリ2213からのtagおよびfi
d、および文字が入ったrreadメッセージをウィン
ドウ1903(k)が属するプロセスに送る。最後に、
最後に送られた文字に続くテキスト1915を示すよう
にqhを更新し、要求待ち行列の次の要素を示すように
RQPTR1925を更新する。 【0160】hold2211が、ウィンドウ1903
(k)が保持モードでないことを示す場合、制御はブロ
ック2326に戻る。ここで、nをrcntの最小値に
設定すると、次の改行からqh1914によって区別さ
れる位置までの文字の数、即ちnにより、qhから次の
改行文字までのテキスト1915にある文字のみの数が
指定される。 これらが、このとき、ブロック2329において送られ
る文字である。そして、qh1914を、次の改行文字
に続く文字を示すように更新する。 【0161】実施例においては、エスケープ・キーを叩
いて保持モードに入り、再びエスケープ・キーを叩くこ
とによって出る。このように、エスケープ・キーは、保
持モードと行終端子により行が送られるモード(以降、
非保持モードと称する)との間でトグル・スイッチとし
て作用する。流れ図2301は、エスケープ・キーに応
じてholdフィールド2211がどのように設定・解
除されるかを示す。前記のように、キーボード従プロセ
ス1605は、文字を受信すると、ウィンドウ・サービ
ス1405のスロット0のファイルrconsへのライ
トを行う。このライトの結果、twriteメッセージ
が主プロセス1613によって受信される。I/O関数
2019が、スロット0のrconsへのtwrite
メッセージの処理を行うべく、KBDC2004に文字
を置き、キーボード制御タスク2009を予定する。キ
ーボード制御2009は、KBDC2004の内容を現
在のウィンドウ2013のKEYBDC1929に書き
込み、現在のウィンドウ2013に対応する端末制御2
015を実行するべきタスクの待ち行列に配置した後、
スケジュラを呼び出す。少し時間をおいて、ウィンドウ
制御タスク2005が走る;これが走ると、そのウィン
ドウ構造体1903にあるKEYBDC1929を調べ
るコードを実行する。このコードに対する流れ図を図2
3の2301に示す。ブロック2303において、KE
YBDC1929からKBDC1929を取り出す。判
断ブロック2305において、それを検査し、それがエ
スケープ文字ならば、hold2211を反転し(23
07)、hold2211の新たな値によって要求され
るとおりにカーソルを設定し(2309)、さらに新た
な値の要求どおりに画面の境界線を設定する(2311
)。実施例では、流れ図2301、2313、および2
314が、この順に端末制御2015によって実行され
る。こられの流れ図の実行後、端末制御2015は、エ
スケープ・キーの入力結果がGnot711の利用者に
直ちに見えるように、ウィンドウ2013を再描画する
。 【0162】ウィンドウ・サービス1405の好ましい
実施例により、クライアント・プロセス1615に対し
、そのプロセス1615に対応するウィンドウ構造体1
903におけるhold2211を設定する方法が与え
られる。これを行うために、クライアント・プロセス1
615は、保持ファイル1507に対しクローズ・シス
テム・コールを実行する。クローズ・システム・コール
の結果、tclunkメッセージが発生する。I/O関
数2019は、このtclunkメッセージに応じて、
対応するウィンドウ構造体1903のhold2211
を設定する。また、実施例により、リードまたはライト
処理が無意味であるようなファイルに対し、それらの処
理がどのように扱われるかの例も提供される。即ち、I
/O関数2019は、hold1507を指定するtr
eadメッセージを受信すると、返されるデータの長さ
が0であるようなrreadメッセージを返す。同様に
、I/O関数2019は、前記のファイルに対するtw
riteメッセージを受信すると、書き込まれるデータ
の長さが0であるようなrwriteメッセージを返す
。 【0163】CPUコマンドの実施:図24〜26図7
において、第9案のオペレーティング・システムは、G
not端末711の他に高性能CPU703およびファ
イル・サーバ705を含む分散型システム701におい
て実施されている。Gnot端末711内部のプロセッ
サ上では如何なるプログラムを実行してもよいが、Gn
otプロセッサは、エディタまたはデバッガなどの対話
型プログラムを実行させるように使用し、高性能CPU
703は、コンパイラまたはデータ・ベース・システム
などの処理集約型のプログラムの実行に使用する方が概
して効率的である。そのために、シェルを走らせている
Gnot端末711の利用者は、CPUコマンドを使用
する。 【0164】CPUコマンドは、オプションの引数とし
てCPU703の名前を取る。引数が与えられない場合
は、デフォルトのCPU703が選ばれる。タイプする
かマウスによって選択することによって、CPUコマン
ドが入力されると、そのCPUコマンドが入力されたウ
ィンドウが、CPUコマンドにおいて選択されたCPU
703で走っているプロセス102に対するウィンドウ
となる。プロセス102は、シェル・プログラムを実行
しているので、利用者は、そのCPU703において、
単にプログラム名をシェルに指定するだけで、他のプロ
グラムを実行することができる。CPUコマンドが実施
される様式の重要な意義は、CPU703上を走行中の
プロセス102が、Gnot711上のCPUコマンド
を実行したプロセス102の名前空間115とほぼ同じ
名前空間115を有する点にある。所与のパス名は、G
not711上を走っているプロセス102においてそ
うであるように、CPU703上を走っているプロセス
102における同じファイルへと分析される。異なるの
は、位置の変更によって必要になるものだけである。例
えば、プロセス・サービスにおけるファイルは、Gno
t711上の情報ではなく、CPU703上の情報を含
む。 【0165】図24に、CPUコマンドの実行の前と後
におけるシステム701の構成要素の間の関係の概略を
示す。2401と記した図の部分は、実行前の関係を示
す。CPU2403(a)(これは、Gnot711の
CPUでもよい)は、ユーザ・プロセス2405(a)
を走らせている。ファイル・システム109(a)によ
って、ユーザ・プロセス2405(a)は、ネットワー
ク713、715および709からなるネットワーク2
409を介して、ファイル・サービス705の1つであ
るファイル・サービス2411のファイルに対し、読み
書きを行っている。また、ユーザ・プロセス2405(
a)は、ファイル・システム109(a)を用いて、ウ
ィンドウ・サービス1405によって与えられるファイ
ルに対する処理を行っていて、これによって、ディスプ
レイ、キーボード、およびマウス2407(a)(この
場合、Gnot711のディスプレイ、キーボード、お
よびマウス)を制御している。CPU703の1つであ
るCPU2403(b)は、ユーザ・プロセス2405
(a)とシステムの他の構成要素との間の相互作用に関
するものは何も持っていない。 【0166】ユーザ・プロセス2405(a)は、CP
Uコマンドを受信する時点で、シェル・プログラムを走
らせている。このCPUコマンドに応じて、シェル・プ
ログラムは、名前空間も含めてユーザ・プロセス240
5(a)と同じ環境を有する子プロセスを生成し、他の
プロセスが終了するまで、それ自体停止する。さらに詳
細に後述するように、子プロセスは、CPUサービス(
CPUS)2413を設定する。CPUサービス241
3が、メッセージをプロセッサ2403(b)に送ると
、結果として、プロセッサ2403(b)にプロセス2
405(b)が生成される。 このように、CPUコマンドの実行後、ユーザ・プロセ
ス2405(a)は、CPU2403(a)での走行を
止めており、ユーザ・プロセス2405(b)が、プロ
セッサ2403(b)上で走っている。ユーザ・プロセ
ス2405(b)は、ファイル・サービス109(b)
によって、ファイルを読み書きしている。ユーザ・プロ
セス2405(b)は、ユーザ・プロセス2405(a
)が持つものとほぼ同じ名前空間115を有するので、
読み書きされているファイルは、ファイル・サービス2
411によって与えられるファイルおよびCPU240
3(a)上で実行したサービス123によって与えられ
るファイルである。勿論、これらのファイルには、ウィ
ンドウ・サービス1405によって与えられるファイル
も含まれる。CPU2403(a)上に配置されたサー
ビス123によって与えられるファイルに対する処理は
、CPUサービス2413によって扱われる。ユーザ・
プロセス2405(b)が、CPU2403(a)上の
サービスによって与えられるファイルに対する処理を指
定すると、ファイル・システム109(b)により、ネ
ットワーク2409を介してCPUサービス2413に
行く往信メッセージへと変換される。ここで、CPUサ
ービス2413は、CPU2403(a)においてその
ファイルに対し往信メッセージで指定された処理をファ
イル・システム109(a)を用いて実行し、その結果
を返信メッセージによって返す。従って、ユーザ・プロ
セス2405(b)の観点からすれば、CPUサービス
2413は、ユーザ・プロセス2405(a)の名前空
間115からユーザ・プロセス2405(b)にファイ
ルを与えるサービスである。 【0167】CPUサービス2413の実施:図25お
よび26 図2413に、CPUサービス2413の好ましい実施
例の概要を示す。ウィンドウ・サービス1405に加え
、CPUサービス2413により、第9案のサービス1
23の簡潔性、柔軟性および能力が例示される。CPU
サービス2413は、多数の成分プロセス102を有す
る。成分プロセスの名前空間115には、ユーザ・プロ
セス2405の名前空間115のコピーも含まれる。通
信プロセスは、ファイル・システム109(b)からC
PUパイプ2501を介して往信メッセージを受信して
、そのメッセージをサービス・パイプ(SERVP)2
505に書き込む。マルチプレクサ・プロセス(MPX
)2507は、サービス・パイプ2505を読み、往信
メッセージに応じて、CPUサービスのファイル・シス
テム2523にあるファイルに対して処理を行う。ファ
イル・システム2523には、ユーザ・プロセス240
5(b)がプロセッサ2403(b)に置かれたサービ
ス123において開いた各ファイル2513に対応する
サービス・ファイル2521がある。処理の結果発生す
る返信メッセージは、CPUパイプ2501を介してフ
ァイル・システム109(b)に返される。 【0168】オープン・ファイル2513へのファイル
・アクセス処理は、オープン・ファイル・プロセス25
11によって行われる。各オープン・ファイル2513
に対しオープン・ファイル・プロセス2511がある;
オープン・ファイル・プロセス2511は、それがその
ファイルに関するファイル・アクセス往信メッセージを
マルチプレクサ・プロセス2507から受信する手段で
あるような別個のパイプ2509を有し、さらに各プロ
セス2511は、サービス・パイプ2505に接続され
ている。各プロセス2511は、さらにそのデータの一
部として、そのオープン・ファイル2513に対するフ
ァイル記述子2517を有する。マルチプレクサ250
7からのファイル・アクセス往信メッセージに応じて、
ファイル記述子2517を用いて、そのオープン・ファ
イル2513に対するアクセス処理を行った後、プロセ
ス2511は、往信メッセージの結果をオープン・ファ
イル・プロセス2511からの返信メッセージとして、
サービス・パイプ2505に書き込む。マルチプレクサ
・プロセス2507は、その往信メッセージに応じて、
単にそれをCPUパイプ2501に書き込む。さらに詳
細に後述するように、その処理を実行するために各プロ
セス2511および2507によって必要とされる情報
は、プロセス2511の各々に対するサービス・データ
構造体(SRVD)2519およびマルチプレクサ・プ
ロセス2525に対するサービス・データ構造体251
5に収容される。 【0169】図26に、サービス・データ構造体262
3、およびCPUサービス・ファイル・システム252
3におけるファイルを表すのに使用されるデータ構造体
を詳細に示す。まず、サービス・データ構造体2623
であるが、フィールド2625は、サービス・データ構
造体2623が属するプロセスがファイル処理を実行す
るために用いるプロシージャへのポインタから成る。M
PXSRVデータ2525の場合、サービス・ファイル
要求の各々にプロシージャがある。リードおよびライト
以外のすべての要求に対するプロシージャは、ファイル
・システム2523に対する処理を行う。リードおよび
ライトに対するプロシージャは、ファイルのオープン・
ファイル・プロセス2511に対するパイプ2509に
ライト処理を行うことによって、リードまたはライトさ
れているファイル2513に対応するオープン・ファイ
ル・プロセス2511に処理を渡す。オープン・ファイ
ルSRVデータ2519の場合、リードおよびライト処
理に対するプロシージャしかなく、これらのプロシージ
ャは、単に、オープン・ファイル・プロセス2511に
対するFD2517によって指定されたファイルに適切
な処理を行い、応答として受信した返信メッセージをサ
ービス・パイプ2505に書き込むだけである。 【0170】SRVD2623のその他の内容は、次の
とおりである。RFD2627:SRVD2623が属
するプロセスがメッセージを読むために使用するファイ
ル記述子。 WFD2629:メッセージを書くために使用されるフ
ァイル記述子。DSIZE2631:DATA2637
の大きさ。thdr2633:往信メッセージがRFD
2627に基づきプロセスによって読まれたときの往信
メッセージのヘッダを収容する。rhdr2633:返
信メッセージがWFD2629に基づいてプロセスによ
って書かれたときの返信メッセージのヘッダを収容する
。DATA2637:往信メッセージまたは返信メッセ
ージのデータを収容する。 【0171】MPX SRVD2515においては、W
FD2629は、MPX2507によって読まれるメッ
セージが書き込まれる先のサービス・パイプ2505に
おけるファイルのファイル記述子であり(即ち、MPX
2507はメッセージをそれ自体に書く)、WFD26
29は無効である。OF SRVD2529においては
、RFD2627は、オープン・ファイル・プロセス2
511がメッセージを読む読出し元のパイプ2509に
おけるファイルのファイル記述子であり、WFD262
9は、オープン・ファイル・プロセス2511がメッセ
ージを書き込む先のサービス・パイプ2505における
ファイルのファイル記述子である。 【0172】続いて、CPUサービス・ファイル・シス
テム2523に付いてであるが、このファイル・システ
ムは、図26の2523に示したデータ構造体を用いて
実施される。CPUサービス2413によって与えられ
る各CPUサービス・ファイル2521(i)は、CP
U2403(a)上で実行中のサービスによってプロセ
ッサ2403(b)上で動作中のユーザ・プロセス24
05(b)に与えられるファイル2513(i)に対応
する。各CPUサービス・ファイル2521(i)は、
ファイル・ポインタ配列(FPA)2603内にエント
リを有する。各エントリ2605(i)は、ファイル2
513(i)に関する往信メッセージ要求処理において
ファイル・システム109によって与えられるfid3
31によってインデックスが与えられる。このエントリ
におけるフィールドは、次のとおりである。FP260
7:ファイル・エントリ2615へのポインタであり、
エントリ2615は、サービス・ファイル2521に対
応するオープン・ファイル2513(i)に関する情報
からなる。FD2609:オープン・ファイル2513
(i)のファイル記述子。OFPPID2611:オー
プン・ファイル2513(i)およびサービス・ファイ
ル2521(i)に対応するオープン・ファイル・プロ
セス2511(i)に対するプロセス識別子。最後に、
オープン・ファイル・プロセス・パイプ(OFPP)2
613:パイプ2509(i)に対するファイル記述子
の配列。ファイル・エントリ2615は、オープン・フ
ァイル2513(i)に関する情報を収容する。この情
報は、ファイル2513(i)の所在を特定するファイ
ル・システム109からのwalk要求の過程で得られ
る。FNAMEP2617は、ファイル2513(i)
のパス名である文字列FNAME2691へのポインタ
である。QID323、DEV315、およびTYPE
313は、ファイル2513(i)に対するチャネル3
01からの対応する値である。REF2621は、ファ
イル・エントリ2615が再利用可能かどうかを示す参
照カウンタである。実施例において、ファイル・ポイン
タ配列2603、およびファイル・エントリ2615の
配列は、CPUサービス2413が処理を開始したとき
に生成される。 【0173】CPUサービス2413の動作CPUサー
ビス2413の処理の例を、attach、walk、
open、およびclunkの各要求によって与えられ
る。attach要求により、サービス123によって
与えられるファイル木構造が、そのattach要求を
しているプロセス102に利用できるようになる。at
tach要求に対する往信メッセージには、アタッチさ
れているサービス123のルートに対するfid331
が含まれる。attachが成功ならば、返信メッセー
ジには、そのルートに対するqid323およびfid
331が含まれる。CPUサービス2413の場合、こ
のサービスによって与えられるファイル木構造は、ユー
ザ・プロセス2405(a)に属するファイル木構造で
ある。MPXプロセス2507は、往信メッセージを受
信すると、MPXプロセス2507のMPX SRVD
2515において指定されるattach関数を呼び出
す。この関数は、fid331に対応するFPACE2
603を生成する。FPACE2603において、フィ
ールド2609、2611、および2613は、すべて
、空値を有する。次に、attach関数が、ルート「
/」に関するstat要求をすると、これにより、ユー
ザ・プロセス2405の名前空間115のqid323
が返される。ここで、この関数は、ファイル・エントリ
2615を生成し、「/」をファイル名2619に、q
idをqid323にそれぞれ配置し、参照カウントを
1に設定する。その後、SRVD2525のthdr2
633にあるqid323をルートのqid323に設
定する。最後に、関数「srveply」を呼び出すと
、これが、qidが入った返信メッセージを生成して、
これをサービス・パイプ2505に書き込む。MPXプ
ロセス2507は、この返信メッセージを受信すると、
それをcpuパイプ2501に書く。 【0174】walk要求の往信メッセージには、ディ
レクトリに対するqid323に関係付けられたfid
331およびそのディレクトリ内のファイルの名前が含
まれる。walkが、成功した場合、fid331は、
提示されたファイルに関係付けられ、さらに提案された
ファイルに対するqid323が、fid331と共に
返信メッセージで返される。MPXプロセス2507は
、walk往信メッセージを受信すると、SRVD25
15において指定されるwalk関数を呼び出す。wa
lk関数は、fid311に対応するFPAE2605
の所在を特定し、さらにFPAE2605のファイル・
エントリ2615の所在を特定する。次に、往信メッセ
ージにおける名前によって指定されたファイルのパス名
を生成するために、その指定されたファイルの名前をF
NAME2619に入っているパス名に追加する。その
うえで、stat要求を行って、そのパス名で指定され
るファイルの状態情報を得る。次に、REF2621が
実行される。REF2621が、値1を有する場合、提
示されたファイルに対して、ファイル・エントリ261
5を使用することができる。この場合、stat要求に
よって獲得したqid、dev、およびtypeの値が
、ファイル・エントリ2615のフィールド323、3
15および313に書き込まれ、FNAME2619が
、そのファイルのパス名に設定され、さらにMPX S
RVD2515のthdr2633における323が、
そのファイルの対するqidに設定される。REF26
21が、1を越える値を有する場合、新たなファイル・
エントリ2615が割り当てられ、そのフィールドおよ
びthdr2633が、前記のように設定され、さらに
FP2607が、新たなファイル・エントリ2615を
示すように設定される。そのうえで、返信メッセージが
、fid331およびqid323と共に返される。 【0175】open要求の往信メッセージには、開か
れるファイルのfid331および開かれたファイルの
モードを示す値が含まれる。返信メッセージには、開か
れたファイルのfid331およびqid323が含ま
れる。open関数は、open往信メッセージに応じ
てMPXプロセス2507によって実行され、fid3
31を用いて適切なファイル・ポインタ配列エントリ(
FPAE)2605の所在を特定し、FPAE2605
に対するファイル・エントリ2615の所在を特定し、
さらにFNAME2619にあるパス名およびモードの
値を用いてopenシステム・コールを行う。このコー
ルは、そのファイルのファイル記述子を返す。次に、そ
のオープン・ファイルに対しパイプ2509が生成され
る。そのオープン・ファイルのファイル記述子が、FP
AE2605のFDフィールド2609に置かれ、さら
にパイプ2509に対するファイル記述子が、オープン
・ファイル・プロセス・パイプ(OFPP)2613に
置かれる。次に、開かれたファイルに対応するオープン
・ファイル・プロセス2511が、生成され、さらにそ
のSERVD2519構造体が、オープン・ファイル・
プロセスがパイプ2509から読み出し、サービス・パ
イプ2505に書き込むように、設定される。オープン
・ファイル・プロセスのプロセス識別子が、オープン・
ファイル・プロセスpidフィールド(OFPPID)
2611に置かれる。このうえで、thdr2633の
qidフィールドが、ファイル・エントリ2615から
設定され、そのfidおよびqidが、返信メッセージ
に入れられて返される。 【0176】clunk要求により、サービス123は
、fid331とqid323との間の関係付けを止め
るように要求される。この要求の往信メッセージには、
fid331が含まれる。返信メッセージは、単にその
fidを返す。clunk関数は、マルチプレクサ・プ
ロセスによって実行され、fid331を用いて、適切
なFPAE2605の所在を特定する。そのエントリを
見つけると、フィールドOFPPID2611において
指定されるオープン・ファイル・プロセス2511を終
了させ、オープン・ファイル・プロセス2511が読み
出していたパイプ2509にあるファイルをクローズし
、フィールドFD2609にあるファイル記述子によっ
て指定されるオープン・ファイルをクローズし、さらに
フィールド2609、2611および2613を、その
ファイルが使用されていないことを示すように設定する
。次に、ファイル・エントリ2615のREF2621
をデクリメントし、デクリメントされたフィールドが値
0を有するならば、FNAME2619を解放し、さら
にFPAE2605のファイル・ポインタ2607を0
に設定する。最後に、fid331と共に返信メッセー
ジを返す。 【0177】CPUサービス2413とユーザ・プロセ
ス2405(b)との接続 ユーザ・プロセス2405(a)が、シェル・コマンド
を実行すると、そのユーザ・プロセス2405(a)と
同じ名前空間を有する子プロセス102が生成される。 生成された子プロセス102は、最初に、カーネル環境
サービスによって与えられるファイル木構造にある「c
pudir」と称するファイルを生成し、その現在のワ
ーキング・ディレクトリ(これは、ユーザ・プロセス2
405(a)のそれである)の名前をそのファイルに書
き込む。 次に、このプロセスは、ダイヤル関数においてCPUコ
マンドで指定されたCPU703の名前を使用する。ダ
イヤル関数は、ユーザ・プロセス2405(a)(これ
も、子プロセスを使用する)の利用者を求めてネットワ
ーク2409経由で指定されたCPU703を呼び出し
、この呼び出しの終了と同時に、指定されたCPU70
3(図24では、CPU2403(b)と示した)への
接続を与える。このうえで、サービス・パイプ2505
、およびCPUサービス・ファイル・システム2523
に対するデータ構造体が、生成される。最後に、通信プ
ロセスが、生成され、かつそのネットワーク接続に対す
るファイル記述子に接続され、さらにマルチプレクサ・
プロセス2507が、生成され、かつサービス・パイプ
2505およびCPUパイプ2501に接続される。勿
論、通信サービス2503は、CPUパイプ2501に
ついてリードを行うので、この時点で、CPUサービス
2413は、ユーザ・プロセス2405(a)からの入
力を待っている。 【0178】CPU2403(b)において、ネットワ
ーク2409への接続を傾聴し、かつネットワーク24
09に接続された他の実体から呼をCPU2403(b
)が受信したときに応答するようなプロセス102が存
在する。そのプロセスは、子プロセス102を開始する
ことによって、ユーザ・プロセス2405(a)からの
呼に応答する。子プロセス102は、ネットワーク接続
を表すファイルのパス名を入手し、さらに引数0を付け
てforkpgrpを行って、新たな名前空間115を
得る。つぎに、子プロセス102は、/dev/use
rがコールを行った利用者の名前を収容するように、そ
の新たな名前空間115を設定し、/srv/boot
を開いてデフォルト・ファイル・サービス2411のル
ートへの接続に対するファイル記述子を獲得し、さらに
「/」を「#/」およびファイル・サービス2411に
よって与えられるファイル木構造のルートへと結合する
。そして、子プロセス102は、/dev/userに
あるユーザ名を用いて子プロセス102のワーキング・
ディレクトリを利用者のワーキング・ディレクトリとし
、標準入力、標準出力、および標準エラーを、それらが
ネットワーク接続へと接続されるように、設定する。さ
らに、結合処理をいくつか行う。その終了時には、/b
inは、CPU2403(b)によって実行できるコー
ドを収容するディレクトリに変わり、/binは、シェ
ル・プログラムのコードを収容する/lib/rcに結
合されていて、さらにカーネル・サービスは、控えのフ
ァイル木構造601における適切な位置に結合されてい
る。 この時点で、子プロセス102は、分岐してユーザ・プ
ロセス2405(b)を生成する。このユーザ・プロセ
ス2405(b)は、子プロセス102の名前空間11
5を受け継いでいる。 【0179】ユーザ・プロセス2405(b)は、ユー
ザ・プロセス2405(b)の名前空間115の設定の
仕上げを行うCPUサーブと称するプログラムの名前を
シェル・プログラムに与えて、これを実行する。次に、
ユーザ・プロセス2405(b)が、replaceオ
プション付きのシステム・マウント・コールを行うと、
ディレクトリ「/mnt/term」が、ネットワーク
接続を表すファイル記述子にマウントされる。/mnt
/termは、キーボード、マウスおよびディスプレイ
がそれによって制御されるようなファイルに対して使用
される、ユーザ・プロセス2405(b)の名前空間に
おけるディレクトリである。 【0180】マウントの結果として、このとき「/mn
t/term」には、ユーザ・プロセス2405(a)
の名前空間115にあるファイルが含まれる。これらの
ファイルには、ディレクトリ/fd609が含まれる。 このディレクトリのファイルは、値として、ユーザ・プ
ロセス2405(a)によって現在使用されているファ
イル記述子を有する。従って、ファイル/fd/0、/
fd/1、および/fd/2は、ユーザ・プロセス24
05(a)の標準入力、標準出力、および標準エラーに
対するファイル記述子を収容する。ユーザ・プロセス2
405(a)は、ウィンドウ・サービス1405を使用
中であり、そのウィンドウ・サービス1405によって
与えられるファイルconsを/dev/consに結
合しているので、標準入力、標準出力、および標準エラ
ーに対するファイル記述子は、ウィンドウ・サービス1
405によって与えられるファイルconsを指定する
。次に、ユーザ・プロセス2405(b)は、それ自体
の標準入力、出力、およびエラーをクローズし、それに
よってファイル記述子0、1、および2を解放し、そし
て直ちに、/fd/0、/fd/1、および/fd/2
における識別子によって指定されるファイルを開く。従
って、ユーザ・プロセス2405(b)における標準入
力、出力、およびエラーに対するリードおよびライトに
より、ユーザ・プロセス2405(a)におけるcon
s−−−代わって、端末2407(a)におけるキーボ
ードおよびディスプレイを表す−−−に対するリードお
よびライトが発生する結果となる。 【0181】同様に、マウントの結果として、/mnt
/termは、ディレクトリ/mnt/term/en
vを含み、さらに、これが、ファイル「cpudir」
を含むが、ファイルcpudirは、ユーザ・プロセス
2405(a)のワーキング・ディレクトリを収容する
ように、ユーザ・プロセス2405(a)によって設定
されたものである。次に、ユーザ・プロセス2405(
b)は、/mnt/term/env/cpudirを
開き、それを読み、さらにディレクトリ変更コマンドを
指定してシェルを実行する。ディレクトリ変更コマンド
において、「cpudir」から読み出した値が、引数
として使用される。その結果、ユーザ・プロセス240
5(a)の現在のディレクトリにおいて、新たなシェル
が走り始める。次に、この新たなシェルは、利用者が定
義したスクリプトを実行する。このスクリプトは、利用
者がシェルを実行する度に走らされ、ユーザ・プロセス
2405(b)の名前空間をさらに利用者向きに変更す
ることができる。一般に、シェル・スクリプトは、次の
内容を行うシステム結合コールの実行をもたらすシェル
・コマンド含む。 bind(”/mnt/term/mnt/8.5”,
”/dev/”,AFTER)bind(”/mnt/
term/mnt/8.5/cons”,”/dev/
cons”,REPLACE)最初の結合コールによっ
て、8.5にあるファイル(ウィンドウ・サービス14
05によってユーザ・プロセス2405(a)に与えら
れるファイル)が、/devに結合され;AFTERオ
プションが使用されているので、そのディレクトリが探
査される前に、以前に結合されていたすべてのディレク
トリが、ウィンドウ・サービス1405によって与えら
れるファイルを求めて探査される。2番目の結合コール
によって、ウィンドウ・サービス1405によって与え
られるファイルconsが、/dev/consに結合
される。/dev/cons自体が、以前にカーネル・
サービス#cを/devに結合した結合処理の結果であ
る。従って、/devは、ウィンドウ・サービス140
5によって与えられるファイルconsが結合されてい
る先のファイルである。REPLACEが使用されてい
るので、パス名/dev/consは、以降、ウィンド
ウ・サービス1405によってユーザ・プロセス240
5(a)に与えられたファイルconsを示すことにな
る。consからのリードにより、端末2407(a)
のキーボードにおいて入力されたデータを受信するよう
になり、一方、consへのライトにより、端末240
7(a)の画面上にデータを表示するようになる。 【0182】以上の説明は、本発明の一実施例に関する
もので、この技術分野の当業者であれば、本発明の種々
の変形例が考えられるが、それらはいずれも本発明の技
術的範囲に包含される。 【0183】尚、特許請求の範囲に記載した参照番号は
、発明の容易なる理解のためで、その技術的範囲を制限
するように解釈されるべきではない。 【0184】 【発明の効果】以上述べたように、本発明のオペレーテ
ィング・システムによれば、各プロセスが、独立した階
層(名前空間)を持ち、かつ、プロセスどうしが、異な
るプロセッサ上で実行中でも、互いに他のプロセスの名
前空間を利用することができるので、分散型システムの
ような大規模なシステムにおいても効率的に名前を管理
することができる。
【図面の簡単な説明】
【図1】本発明のオペレーティング・システムによって
与えられるプロセスごとの名前空間の概要を示す図であ
る。
【図2】本オペレーティング・システムにおけるマウン
ト・サービスおよびプロトコル・サービスの概要を示す
図である。
【図3】チャネル・データ構造体の線図である。
【図4】オープン・ファイルを位置づけるために使用さ
れるデータ構造体の線図である。
【図5】プロトコル・サービスとの間でプロトコルの受
け渡しに使用されるデータ構造体の線図である。
【図6】ルート・サービスによって与えられるファイル
木構造およびある結合操作、およびマウント操作が行わ
れた後のファイル木構造の線図である。
【図7】本発明のオペレーティング・システムが実施さ
れる分散システムの線図である。
【図8】本発明のマウント・テーブルの線図である。
【図9】図6の第2のファイル構造に対するマウント・
テーブルの線図である。
【図10】10Aおよび10Bは、好ましい実施例にお
けるnamec関数の流れ図である。
【図11】11Aおよび11Bは、好ましい実施例にお
けるwalk関数の流れ図である。
【図12】12Aおよび12Bは、好ましい実施例にお
けるmount関数の流れ図である。
【図13】好ましい実施例においてプロトコル・サービ
スを登録するために使用されるデータ構造体の線図であ
る。
【図14】本発明のオペレーティング・システムと共に
用いられるウィンドウ・サービスの概要を示す図である
【図15】ウィンドウ・サービスによって与えられるフ
ァイル木構造の線図である。
【図16】ウィンドウ・サービスの構造の概要を示す図
である。
【図17】ウィンドウ・サービスにおいて実行されるm
kslave関数の流れ図である。
【図18】ウィンドウ・サービスによって与えられるフ
ァイル木構造の実施例の線図である。
【図19】ウィンドウサービスで利用されるウィンドウ
・データ構造体の線図である。
【図20】ウィンドウ・サービスの一部の内部構造の線
図である。
【図21】ウィンドウ・サービスにおいて実行されるs
pawn関数の流れ図である。
【図22】保持モードの好ましい実施例にとって重要な
ウィンドウ・データ構造体のある部分の線図である。
【図23】好ましい実施例において保持モードに対して
行われた処理のある部分の流れ図である。
【図24】CPUコマンドの作用の概要を示す図である
【図25】CPUサービスの内部データ構造体を示す線
図である。
【図26】CPUサービスによって用いられるデータ構
造体を示す線図である。
【符号の説明】
101  サービスのアーキテクチャ 102  プロセス 103  プロセス・グループ 113  ファイル・ロケータ関数 111  ファイル・アクセス関数 115  名前空間115 117、125ファイル木構造 123  サービス 127、129ルート・ディレクトリ・ファイル131
  データ・ファイル

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】  複数の名前空間(115)と、前記名
    前空間の所与の1つに関連する複数のプロセス(102
    )とを有することを特徴とする多重プロセス操作システ
    ム。
  2. 【請求項2】  いずれのプロセスにも利用可能で、現
    行名前空間を有するプロセスの関連を終了させ、新たに
    形成された名前空間を有するプロセスに関連させる新名
    前空間形成手段(827、802)を更に有し、この新
    名前空間は、いずれのプロセス形成手段とは異なること
    を特徴とする請求項1のシステム。
  3. 【請求項3】  前記プロセスに関連する名前空間内の
    いずれもの名前の結合を変更する名前空間変更手段(8
    01)を更に有することを特徴とする請求項1のシステ
    ム。
  4. 【請求項4】  前記名前空間変更手段が、前記名前空
    間内の第1名前の結合を、前記第1名前を1組の名前に
    関連付けることにより、変更することを特徴とする請求
    項3のシステム。
  5. 【請求項5】  前記名前空間変更手段が、前記名前空
    間内の第1名前の結合を前記第1名前を1組の名前に関
    連付けることにより、変更することを特徴とする請求項
    3のシステム。
  6. 【請求項6】  前記名前空間変更手段が、前記の第1
    名前の結合を、前記第1名前を別の組の名前に関連付け
    ることにより、変更することを特徴とする請求項4のシ
    ステム。
  7. 【請求項7】  前記名前空間変更手段が、前記の第1
    名前を、前記別の組の名前に関連付ける場合、前記名前
    空間変更手段は、交互に、前記の組の名前を別の組の名
    前で置き換え、別の組の名前を前記の組の名前に結合す
    ることを特徴とする請求項6のシステム。
  8. 【請求項8】  前記名前空間変更手段が、別の組の名
    前を前記の組の名前に結合する場合、前記名前空間変更
    手段が、前記の組の名前に本来存在する名前と別の組の
    名前との間の順序を指定することを特徴とする請求項6
    のシステム。
  9. 【請求項9】  前記新名前空間変更手段が、前記プロ
    セスの現行の名前空間のコピーである新名前空間のプロ
    セスに関連させるか、空である新名前空間を有するプロ
    セスに関連させるかのいずれかが実行可能であることを
    特徴とする請求項2のシステム。
  10. 【請求項10】  前記プロセスの現行の名前空間の新
    名前が、前記プロセスにアクセス可能な実態を表し、前
    記プロセスにアクセス可能な実態のいずれかを形成する
    手段を有し、前記実態の1つが前記プロセスにアクセス
    可能になると、このアクセス可能性は、プロセス用の新
    名前空間の形成には影響されないことを特徴とする請求
    項2のシステム。
  11. 【請求項11】  複数のサービス(123)が、実態
    (125)を複数のクライアント(102)に提供し、
    各クライアントは、その固定されたセットから要求(1
    19)をサービスに提供する手段(109)を有し、各
    サービスは、固定されたセットに属する要求に応答する
    ことを特徴とするコンピュータシステム。
  12. 【請求項12】  サービスにより提供される実態は、
    ファイルの形態を採り、  前記要求は、ファイル上の
    操作要求であることを特徴とする請求項11のコンピュ
    ータシステム。
  13. 【請求項13】  前記要求は、付属要求を含み、各サ
    ービスは、その付属要求を形成するクライアントに入手
    可能なサービスにより提供されるファイルの例を形成す
    ることにより、付属要求に応答する手段を有することを
    特徴とする請求項12のコンピュータシステム。
  14. 【請求項14】  各クライアントは、名前の付された
    実態を配置する名前空間(115)を有し、各サービス
    は、ファイル名前の組を提供し、付属要求の形成に際し
    て、要求を形成するクライアントは、ファイル名前の組
    の中のファイル名前をその名前空間に組み入れることを
    特徴とする請求項13のコンピュータシステム。
  15. 【請求項15】  前記要求は、ファイルを名前で配置
    するウォーク要求を含み、このウォーク要求は、クライ
    アントにより提供される名前の付されたファイルと名前
    の付されたファイルの名前用の第1識別子を有し、各サ
    ービスは、名前によりファイルを探し、そのファイルが
    発見された場合、第1識別子をサービスにより提供され
    る第2識別子と関連づけることにより、前記ウォーク要
    求に応答することを特徴とする請求項14のコンピュー
    タシステム。
  16. 【請求項16】  前記要求は、第1識別子を第2識別
    子から関連を解くクランク要求を含み、このクランク要
    求は、第1識別子を有し、各サービスは、第1識別子を
    第2識別子から関連を解くことにより、前記クランク要
    求に応答することを特徴とする請求項15のコンピュー
    タシステム。
  17. 【請求項17】  第1のサービスは、要求が操作シス
    テムコール(217、219)の形式でなされるカーネ
    ルサービス(203)であり、第2のサービスは、要求
    がメッセージ(205、207)の形式でなされるプロ
    トコールサービス(209)であることを特徴とする請
    求項11ないし16のいずれかのコンピュータシステム
  18. 【請求項18】  前記カーネルサービスは、操作シス
    テムコール形式の第1サービスを受信し、この第1サー
    ビスを、対応するメッセージ形式の第2サービスに変換
    することを特徴とする請求項17のコンピュータシステ
    ム。
  19. 【請求項19】  コンピュータシステムに採用される
    、一連のキャラクタコードからなる入力をその受信者に
    伝送する方法において、列内のキャラクタコードのある
    ものの受信が一連のキャラクタが送信されるべきキャラ
    クタコードのあるものに先行させるような第1モードで
    入力を受信するステップと、キャラクタコードのあるも
    のが無視されるような第2モードを指示する為に、入力
    を受信する実態の値を設定するステップと、第1モード
    を指示する為に、前記値が設定されるまで、キャラクタ
    コードのあるものに関係なく、入力を受信するステップ
    と、全体の受信された入力を送信するステップと、第1
    モードの操作を繰り返すステップとからなることを特徴
    とするキャラクタコード伝送方法。
  20. 【請求項20】  コンピュータシステムが表示手段を
    有し、前記値が第2モードを指示しない場合、第1表示
    モードに従って、表示手段に入力を表示させるステップ
    と、前記値が第2モードを指示する場合、第2表示モー
    ドに従って、表示手段に入力を表示させるステップと、
    を更に有することを特徴とする請求項19の方法。
  21. 【請求項21】  コンピュータシステムがキーボード
    を有し、第2モードを指示する為、値を設定するステッ
    プが、キーボードのキーを打つことにより実行され、入
    力を受信するステップが、そのキーが再度打たれるまで
    継続することを特徴とする請求項19ないし20のいず
    れかの方法。
  22. 【請求項22】  前記値を設定するステップが、コン
    ピュータシステムで実行されるプログラムの制御下で実
    行されることを特徴とする請求項21の方法。
JP3196061A 1990-07-11 1991-07-11 コンピュータシステム Expired - Fee Related JP2724256B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US55121890A 1990-07-11 1990-07-11
US551218 1990-07-11
US70265191A 1991-05-17 1991-05-17
US702651 1991-05-17

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP9221547A Division JPH10124376A (ja) 1990-07-11 1997-08-18 コンピュータシステムでキャラクタコード列からなる入力を変換して出力する方法

Publications (2)

Publication Number Publication Date
JPH04233654A true JPH04233654A (ja) 1992-08-21
JP2724256B2 JP2724256B2 (ja) 1998-03-09

Family

ID=27069681

Family Applications (2)

Application Number Title Priority Date Filing Date
JP3196061A Expired - Fee Related JP2724256B2 (ja) 1990-07-11 1991-07-11 コンピュータシステム
JP9221547A Pending JPH10124376A (ja) 1990-07-11 1997-08-18 コンピュータシステムでキャラクタコード列からなる入力を変換して出力する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP9221547A Pending JPH10124376A (ja) 1990-07-11 1997-08-18 コンピュータシステムでキャラクタコード列からなる入力を変換して出力する方法

Country Status (7)

Country Link
US (1) US5623666A (ja)
EP (1) EP0466486B1 (ja)
JP (2) JP2724256B2 (ja)
AU (1) AU649455B2 (ja)
CA (1) CA2046723C (ja)
DE (1) DE69129479T2 (ja)
ES (1) ES2116276T3 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348511A (ja) * 1993-05-21 1994-12-22 American Teleph & Telegr Co <Att> プログラム実行分割装置およびクライアント・サーバシステム
JPH08339355A (ja) * 1995-04-17 1996-12-24 At & T Ipm Corp 分散形システムでの処理タスク実行呼び出し方法及び装置
JPH10240603A (ja) * 1997-02-27 1998-09-11 Fuji Xerox Co Ltd ファイル管理装置及びファイル転送方法
JP2013257627A (ja) * 2012-06-11 2013-12-26 Bank Of Tokyo-Mitsubishi Ufj Ltd データベースサーバ
JP2020187790A (ja) * 2010-09-24 2020-11-19 フィッシャー−ローズマウント システムズ,インコーポレイテッド プロセス制御装置情報を表示する方法、並びに、装置

Families Citing this family (143)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826017A (en) * 1992-02-10 1998-10-20 Lucent Technologies Apparatus and method for communicating data between elements of a distributed system using a general protocol
CA2110243C (en) * 1992-12-31 1998-08-11 Philip Steven Winterbottom Apparatus and methods for making a portion of a first name space available as a portion of a second name space
US7174352B2 (en) * 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6138126A (en) * 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
EP0746816B1 (en) * 1993-08-03 2001-10-24 Sun Microsystems, Inc. Flexible multi-platform partitioning for computer applications
FR2715486B1 (fr) * 1994-01-21 1996-03-29 Alain Nicolas Piaton Procédé de comparaison de fichiers informatiques.
US6418484B1 (en) * 1994-06-17 2002-07-09 Sun Microsystems, Inc. Method of remotely executing computer processes
US7188352B2 (en) 1995-07-11 2007-03-06 Touchtunes Music Corporation Intelligent digital audiovisual playback system
US7424731B1 (en) 1994-10-12 2008-09-09 Touchtunes Music Corporation Home digital audiovisual information recording and playback system
US8661477B2 (en) 1994-10-12 2014-02-25 Touchtunes Music Corporation System for distributing and selecting audio and video information and method implemented by said system
ES2143556T3 (es) 1994-10-12 2000-05-16 Touchtunes Music Corp Sistema de reproduccion audiovisual digital inteligente.
JP3335801B2 (ja) * 1995-07-05 2002-10-21 株式会社日立製作所 異種ファイルへのアクセスを可能とする情報処理システム及びその制御方法
US6487580B1 (en) * 1995-09-25 2002-11-26 International Business Machines Corporation Method and system for managing concurrently executable computer processes
JP3738787B2 (ja) * 1995-10-19 2006-01-25 富士ゼロックス株式会社 資源管理装置及び資源管理方法
US5941943A (en) * 1996-06-17 1999-08-24 International Business Machines Corporation Apparatus and a method for creating isolated sub-environments using host names and aliases
US5805786A (en) * 1996-07-23 1998-09-08 International Business Machines Corporation Recovery of a name server managing membership of a domain of processors in a distributed computing environment
FR2753868A1 (fr) 1996-09-25 1998-03-27 Technical Maintenance Corp Procede de selection d'un enregistrement sur un systeme numerique de reproduction audiovisuel et systeme pour mise en oeuvre du procede
US5909542A (en) * 1996-11-20 1999-06-01 Cfi Proservices, Inc. Distributed computing system for executing intercommunicating applications programs
US6678724B2 (en) * 1997-03-12 2004-01-13 Microsoft Corporation Common namespace for internet and local filesystem objects
US5946685A (en) * 1997-06-27 1999-08-31 Sun Microsystems, Inc. Global mount mechanism used in maintaining a global name space utilizing a distributed locking mechanism
US6044465A (en) * 1997-07-07 2000-03-28 International Business Machines Corporation User profile storage on and retrieval from a non-native server domain for use in a client running a native operating system
US7574727B2 (en) 1997-07-23 2009-08-11 Touchtunes Music Corporation Intelligent digital audiovisual playback system
FR2769165B1 (fr) 1997-09-26 2002-11-29 Technical Maintenance Corp Systeme sans fil a transmission numerique pour haut-parleurs
US6173293B1 (en) * 1998-03-13 2001-01-09 Digital Equipment Corporation Scalable distributed file system
US6119131A (en) * 1998-06-12 2000-09-12 Microsoft Corporation Persistent volume mount points
US6654881B2 (en) 1998-06-12 2003-11-25 Microsoft Corporation Logical volume mount manager
US6496839B2 (en) 1998-06-12 2002-12-17 Microsoft Corporation Persistent names for logical volumes
US6487577B1 (en) * 1998-06-29 2002-11-26 Intel Corporation Distributed compiling
FR2781582B1 (fr) 1998-07-21 2001-01-12 Technical Maintenance Corp Systeme de telechargement d'objets ou de fichiers pour mise a jour de logiciels
FR2781580B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Circuit de commande de son pour systeme de reproduction audiovisuelle numerique intelligent
US8028318B2 (en) 1999-07-21 2011-09-27 Touchtunes Music Corporation Remote control unit for activating and deactivating means for payment and for displaying payment status
FR2781593B1 (fr) 1998-07-22 2001-01-12 Technical Maintenance Corp Telecommande pour systeme de reproduction audiovisuelle numerique intelligent
FR2781591B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Systeme de reproduction audiovisuelle
US6219028B1 (en) * 1998-08-19 2001-04-17 Adobe Systems Incorporated Removing a cursor from over new content
US6467050B1 (en) 1998-09-14 2002-10-15 International Business Machines Corporation Method and apparatus for managing services within a cluster computer system
US6405217B1 (en) * 1998-09-21 2002-06-11 Microsoft Corporation State-based implementation of transactions on a file system
US6230190B1 (en) * 1998-10-09 2001-05-08 Openwave Systems Inc. Shared-everything file storage for clustered 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
US6581088B1 (en) * 1998-11-05 2003-06-17 Beas Systems, Inc. Smart stub or enterprise javaTM bean 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
US8726330B2 (en) 1999-02-22 2014-05-13 Touchtunes Music Corporation Intelligent digital audiovisual playback system
US6546415B1 (en) 1999-05-14 2003-04-08 Lucent Technologies Inc. Network management system using a distributed namespace
FR2796482B1 (fr) 1999-07-16 2002-09-06 Touchtunes Music Corp Systeme de gestion a distance d'au moins un dispositif de reproduction d'informations audiovisuelles
US6629127B1 (en) * 1999-07-26 2003-09-30 Microsoft Corporation Methods and systems for processing HTTP requests
US7634453B1 (en) 1999-08-13 2009-12-15 Storage Technology Corporation Distributed file data location
US6684231B1 (en) * 1999-11-29 2004-01-27 Microsoft Corporation Migration of friendly volumes
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
FR2805377B1 (fr) 2000-02-23 2003-09-12 Touchtunes Music Corp Procede de commande anticipee d'une selection, systeme numerique et juke-box permettant la mise en oeuvre du procede
FR2805060B1 (fr) 2000-02-16 2005-04-08 Touchtunes Music Corp Procede de reception de fichiers lors d'un telechargement
FR2805072B1 (fr) 2000-02-16 2002-04-05 Touchtunes Music Corp Procede d'ajustement du volume sonore d'un enregistrement sonore numerique
DE10018327A1 (de) * 2000-04-13 2001-10-25 Sep Elektronik Gmbh Mehrprozess-Anwendungsmanagement
US7080078B1 (en) * 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
FR2808906B1 (fr) 2000-05-10 2005-02-11 Touchtunes Music Corp Dispositif et procede de gestion a distance d'un reseau de systemes de reproduction d'informations audiovisuelles
US6721880B1 (en) 2000-05-31 2004-04-13 Lucent Technologies Inc. Method and apparatus for maintaining configuration information in a computing environment
FR2811175B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Procede de distribution d'informations audiovisuelles et systeme de distribution d'informations audiovisuelles
KR100433678B1 (ko) * 2000-06-29 2004-05-31 주식회사 아이너스기술 이벤트 흐름 차트를 이용한 이산 이벤트 시스템의 모델링방법
FR2811114B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Dispositif et procede de communication entre un systeme de reproduction d'informations audiovisuelles et d'une machine electronique de divertissement
US6498937B1 (en) 2000-07-14 2002-12-24 Trw Inc. Asymmetric bandwidth wireless communication techniques
US6886004B2 (en) * 2000-08-24 2005-04-26 Red Hat, Inc. Method and apparatus for atomic file look-up
FR2814085B1 (fr) 2000-09-15 2005-02-11 Touchtunes Music Corp Procede de divertissement base sur les jeux concours a choix multiples
AU2002234258A1 (en) * 2001-01-22 2002-07-30 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7069317B1 (en) 2001-02-28 2006-06-27 Oracle International Corporation System and method for providing out-of-band notification of service changes
US6892205B1 (en) 2001-02-28 2005-05-10 Oracle International Corporation System and method for pre-compiling a source cursor into a target library cache
US7058629B1 (en) * 2001-02-28 2006-06-06 Oracle International Corporation System and method for detecting termination of an application instance using locks
US7444335B1 (en) 2001-02-28 2008-10-28 Oracle International Corporation System and method for providing cooperative resource groups for high availability applications
NL1018008C1 (nl) * 2001-05-07 2002-11-08 Jean-Luc Rochet Werkwijze en systeem voor het uitvoeren van gepersonifieerde interactieve geautomatiseerde elektronisch marketing van de leverancier van marketingdiensten.
US6718327B1 (en) * 2001-08-31 2004-04-06 Openwave Systems Inc. Fault-tolerant queue with autonomous client operation
US7444393B2 (en) * 2001-10-30 2008-10-28 Keicy K. Chung Read-only storage device having network interface, a system including the device, and a method of distributing files over a network
JP2003208343A (ja) * 2002-01-10 2003-07-25 Ricoh Co Ltd ファイル作成・閲覧方法、ファイル作成方法、ファイル閲覧方法、ファイル構造及びプログラム
JP3862588B2 (ja) * 2002-04-11 2006-12-27 キヤノン株式会社 通信装置及びその制御方法
US8332895B2 (en) 2002-09-16 2012-12-11 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US9646339B2 (en) 2002-09-16 2017-05-09 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US11029823B2 (en) 2002-09-16 2021-06-08 Touchtunes Music Corporation Jukebox with customizable avatar
US8584175B2 (en) 2002-09-16 2013-11-12 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US8103589B2 (en) 2002-09-16 2012-01-24 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US7822687B2 (en) 2002-09-16 2010-10-26 Francois Brillon Jukebox with customizable avatar
US8151304B2 (en) 2002-09-16 2012-04-03 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US12100258B2 (en) 2002-09-16 2024-09-24 Touchtunes Music Company, Llc Digital downloading jukebox with enhanced communication features
US10373420B2 (en) 2002-09-16 2019-08-06 Touchtunes Music Corporation Digital downloading jukebox with enhanced communication features
US8346884B2 (en) 2003-01-21 2013-01-01 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US7046668B2 (en) * 2003-01-21 2006-05-16 Pettey Christopher J Method and apparatus for shared I/O in a load/store fabric
US7664909B2 (en) 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US7698483B2 (en) * 2003-01-21 2010-04-13 Nextio, Inc. Switching apparatus and method for link initialization in a shared I/O environment
US7457906B2 (en) * 2003-01-21 2008-11-25 Nextio, Inc. Method and apparatus for shared I/O in a load/store fabric
US7188209B2 (en) * 2003-04-18 2007-03-06 Nextio, Inc. Apparatus and method for sharing I/O endpoints within a load store fabric by encapsulation of domain information in transaction layer packets
US7617333B2 (en) * 2003-01-21 2009-11-10 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US7103064B2 (en) * 2003-01-21 2006-09-05 Nextio Inc. Method and apparatus for shared I/O in a load/store fabric
US7174413B2 (en) * 2003-01-21 2007-02-06 Nextio Inc. Switching apparatus and method for providing shared I/O within a load-store fabric
US7953074B2 (en) 2003-01-21 2011-05-31 Emulex Design And Manufacturing Corporation Apparatus and method for port polarity initialization in a shared I/O device
US8032659B2 (en) * 2003-01-21 2011-10-04 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US7493416B2 (en) 2003-01-21 2009-02-17 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US7512717B2 (en) 2003-01-21 2009-03-31 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US7502370B2 (en) 2003-01-21 2009-03-10 Nextio Inc. Network controller for obtaining a plurality of network port identifiers in response to load-store transactions from a corresponding plurality of operating system domains within a load-store architecture
US7917658B2 (en) * 2003-01-21 2011-03-29 Emulex Design And Manufacturing Corporation Switching apparatus and method for link initialization in a shared I/O environment
US7836211B2 (en) * 2003-01-21 2010-11-16 Emulex Design And Manufacturing Corporation Shared input/output load-store architecture
US7219183B2 (en) * 2003-01-21 2007-05-15 Nextio, Inc. Switching apparatus and method for providing shared I/O within a load-store fabric
US8102843B2 (en) * 2003-01-21 2012-01-24 Emulex Design And Manufacturing Corporation Switching apparatus and method for providing shared I/O within a load-store fabric
US7827156B2 (en) * 2003-02-26 2010-11-02 Microsoft Corporation Issuing a digital rights management (DRM) license for content based on cross-forest directory information
JP4022764B2 (ja) * 2003-06-26 2007-12-19 日本電気株式会社 情報処理装置、ファイル管理方法およびプログラム
JP4278452B2 (ja) * 2003-08-04 2009-06-17 株式会社日立製作所 計算機システム
US20050131960A1 (en) * 2003-12-15 2005-06-16 Reed Benjamin C. Method and system of accessing at least one target file in a computer system with an operating system with file locking implemented at file-open time
US7380246B2 (en) * 2003-12-15 2008-05-27 Lenovo (Singapore) Pte. Ltd. Method and system of accessing at least one target file in a computer system with an operating system with file locking implemented with byte-range locking
US8463748B1 (en) * 2004-02-05 2013-06-11 Emc Corporation File system quiescing
US7275071B2 (en) * 2004-02-27 2007-09-25 Scientific-Atlanta, Inc. Method of distributing content information over a broadcast file system
US7230520B2 (en) * 2004-05-03 2007-06-12 Dell Products L.P. Method and apparatus for RF access to system ID and fault information
US20060074940A1 (en) * 2004-10-05 2006-04-06 International Business Machines Corporation Dynamic management of node clusters to enable data sharing
JP4038216B2 (ja) * 2005-05-10 2008-01-23 ファナック株式会社 シーケンスプログラム編集装置
US7797273B2 (en) * 2006-03-27 2010-09-14 Emoze Ltd. System and a method for reliable symmetric data synchronization
US9330529B2 (en) 2007-01-17 2016-05-03 Touchtunes Music Corporation Game terminal configured for interaction with jukebox device systems including same, and/or associated methods
US9171419B2 (en) 2007-01-17 2015-10-27 Touchtunes Music Corporation Coin operated entertainment system
US12450978B2 (en) 2007-01-17 2025-10-21 Touchtunes Music Company Llc. Coin operated entertainment system
US9953481B2 (en) 2007-03-26 2018-04-24 Touchtunes Music Corporation Jukebox with associated video server
DE102007026242A1 (de) * 2007-05-30 2008-12-11 Carad Beteiligungen Gmbh Datenspeichereinrichtung
US10290006B2 (en) 2008-08-15 2019-05-14 Touchtunes Music Corporation Digital signage and gaming services to comply with federal and state alcohol and beverage laws and regulations
US8332887B2 (en) 2008-01-10 2012-12-11 Touchtunes Music Corporation System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server
US8849435B2 (en) 2008-07-09 2014-09-30 Touchtunes Music Corporation Digital downloading jukebox with revenue-enhancing features
US8806611B2 (en) * 2008-12-02 2014-08-12 At&T Intellectual Property I, L.P. Message administration system
US12112093B2 (en) 2009-03-18 2024-10-08 Touchtunes Music Company, Llc Entertainment server and associated social networking services
US10719149B2 (en) 2009-03-18 2020-07-21 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
CN102449658A (zh) 2009-03-18 2012-05-09 踏途音乐公司 娱乐服务器及相关的社交网络系统
US9292166B2 (en) 2009-03-18 2016-03-22 Touchtunes Music Corporation Digital jukebox device with improved karaoke-related user interfaces, and associated methods
US10564804B2 (en) 2009-03-18 2020-02-18 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US8683576B1 (en) * 2009-09-30 2014-03-25 Symantec Corporation Systems and methods for detecting a process to establish a backdoor connection with a computing device
CA3034363C (en) 2010-01-26 2021-04-06 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
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
US20130067346A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Content User Experience
GB2511003B (en) 2011-09-18 2015-03-04 Touchtunes Music Corp Digital jukebox device with karaoke and/or photo booth features, and associated methods
US11151224B2 (en) 2012-01-09 2021-10-19 Touchtunes Music Corporation Systems and/or methods for monitoring audio inputs to jukebox devices
US9092455B2 (en) 2012-07-17 2015-07-28 Microsoft Technology Licensing, Llc Image curation
US10346422B2 (en) * 2012-10-18 2019-07-09 International Business Machines Corporation Use of proxy objects for integration between a content management system and a case management system
US20140114864A1 (en) 2012-10-22 2014-04-24 International Business Machines Corporation Case management integration with external content repositories
US9921717B2 (en) 2013-11-07 2018-03-20 Touchtunes Music Corporation Techniques for generating electronic menu graphical user interface layouts for use in connection with electronic devices
US9276938B2 (en) * 2013-11-27 2016-03-01 General Electric Company Cross-enterprise workflow
KR102533342B1 (ko) 2014-03-25 2023-05-17 터치튠즈 뮤직 컴퍼니, 엘엘씨 향상된 사용자 인터페이스를 가지는 디지털 주크박스 장치 및 관련 방법
US10592080B2 (en) 2014-07-31 2020-03-17 Microsoft Technology Licensing, Llc Assisted presentation of application windows
US9836464B2 (en) 2014-07-31 2017-12-05 Microsoft Technology Licensing, Llc Curating media from social connections
US10254942B2 (en) 2014-07-31 2019-04-09 Microsoft Technology Licensing, Llc Adaptive sizing and positioning of application windows
US10678412B2 (en) 2014-07-31 2020-06-09 Microsoft Technology Licensing, Llc Dynamic joint dividers for application windows
KR102263357B1 (ko) * 2017-04-19 2021-06-11 한국전자통신연구원 분산 파일시스템 환경에서 사용자 수준 dma i/o를 지원하는 시스템 및 그 방법
US11941104B2 (en) * 2020-12-03 2024-03-26 Red Hat, Inc. Utilizing extended file attributes for working directory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525780A (en) * 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US5060150A (en) * 1987-01-05 1991-10-22 Motorola, Inc. Process creation and termination monitors for use in a distributed message-based operating system
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US5032979A (en) * 1990-06-22 1991-07-16 International Business Machines Corporation Distributed security auditing subsystem for an operating system
US5237680A (en) * 1990-09-27 1993-08-17 Sun Microsystems, Inc. Method for incremental rename propagation between hierarchical file name spaces

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
UKUUG UNIX-THE LEGEND EVOLVES PROCEEDINGS OF THE SUMMER 1990 UKUUG CONFERENCE 1990 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348511A (ja) * 1993-05-21 1994-12-22 American Teleph & Telegr Co <Att> プログラム実行分割装置およびクライアント・サーバシステム
JPH08339355A (ja) * 1995-04-17 1996-12-24 At & T Ipm Corp 分散形システムでの処理タスク実行呼び出し方法及び装置
JPH10240603A (ja) * 1997-02-27 1998-09-11 Fuji Xerox Co Ltd ファイル管理装置及びファイル転送方法
JP2020187790A (ja) * 2010-09-24 2020-11-19 フィッシャー−ローズマウント システムズ,インコーポレイテッド プロセス制御装置情報を表示する方法、並びに、装置
JP2013257627A (ja) * 2012-06-11 2013-12-26 Bank Of Tokyo-Mitsubishi Ufj Ltd データベースサーバ

Also Published As

Publication number Publication date
JP2724256B2 (ja) 1998-03-09
CA2046723A1 (en) 1992-01-12
AU8033491A (en) 1992-01-16
JPH10124376A (ja) 1998-05-15
ES2116276T3 (es) 1998-07-16
DE69129479D1 (de) 1998-07-02
US5623666A (en) 1997-04-22
EP0466486A3 (en) 1993-08-11
DE69129479T2 (de) 1998-11-05
AU649455B2 (en) 1994-05-26
CA2046723C (en) 1998-11-24
EP0466486B1 (en) 1998-05-27
EP0466486A2 (en) 1992-01-15

Similar Documents

Publication Publication Date Title
JP2724256B2 (ja) コンピュータシステム
EP0605959B1 (en) Apparatus and methods for making a portion of a first name space available as a portion of a second name space
JP3439337B2 (ja) ネットワーク管理システム
US4901231A (en) Extended process for a multiprocessor system
Presotto et al. Plan 9, a distributed system
US6654741B1 (en) URL mapping methods and systems
JP4603106B2 (ja) オブジェクトの遠隔的ブラウズ方法及びシステム
PL176975B1 (pl) Sposób skutecznego buforowania zbiorów w systemie zbiorów rozproszonych
US20030093420A1 (en) Method and system for retrieving sharable information using a hierarchically dependent directory structure
JPH08339355A (ja) 分散形システムでの処理タスク実行呼び出し方法及び装置
US4849877A (en) Virtual execution of programs on a multiprocessor system
JPH07146844A (ja) 製造装置の制御および調整を行う統合オートメーション開発システムおよび方法
US20020042814A1 (en) Processing common work using flexible command strings
JPH11224196A (ja) リモート・オブジェクト・アクセス
CN113672334A (zh) 一种容器管理方法及装置
US7752225B2 (en) Replication and mapping mechanism for recreating memory durations
Chesson The network UNIX system
JP2000503430A (ja) 分散処理
CN120909587A (zh) 微前端应用操作方法、装置、设备、存储介质和程序产品
JP3489216B2 (ja) ファイルシステム
US5764909A (en) Self-configuring device connection for a data independent type computer system in a network
US6308226B1 (en) Communication method and system for objects movable in network
JPH09160847A (ja) クライアント・サーバ型分散処理システム
CN115016774A (zh) 一种idc数据中心行业动环数据采集系统
US6032176A (en) Data-independent type computer system: processing machine, data machine and man-machine interface therein

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

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20081128

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20091128

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20101128

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees