JPS63204437A - ロック・システム - Google Patents
ロック・システムInfo
- Publication number
- JPS63204437A JPS63204437A JP63003281A JP328188A JPS63204437A JP S63204437 A JPS63204437 A JP S63204437A JP 63003281 A JP63003281 A JP 63003281A JP 328188 A JP328188 A JP 328188A JP S63204437 A JPS63204437 A JP S63204437A
- Authority
- JP
- Japan
- Prior art keywords
- file
- node
- lock
- server
- inode
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
以下、本発明を下記の順序に従って説明する。
A、産業上の利用分野
B、従来技術
C0発明が解決しようとする問題点
り1問題点を解決するだめの手段
E、実施例
E−1,ファイル・システム
E−2,ファイルの同期モード
E−3,ロック
F0発明の効果
A、産業上の利用分野
本発明は一般に、分散データ処理システム用のオペレー
ティング・システムの改良、特にローカル・エリア・ネ
ットワーク(LAN)又は広域ネットワークCWAN)
によって相互接続されたマルチ・プロセッサーシステム
用のオペレーテイング・システムの改良に関する。LA
N又はWANを構築するだめにIBMシステム・ネツ゛
トワーク・アーキテクチャ(SNA)を使用する事がで
きる。本発明によるオペレーティング・システムは、フ
ァイルがシステム中のどこにあっても、ファイルへのア
クセスを可能にする。本発明の良好な実施例はUNIX
(UNIXはAT&Tの米国における登録商標である)
オペレーティング・システムの1バージヨンにおいて実
施されたが、他の異なったオペレーティングφシステム
で本発明を実施する事もできる。
ティング・システムの改良、特にローカル・エリア・ネ
ットワーク(LAN)又は広域ネットワークCWAN)
によって相互接続されたマルチ・プロセッサーシステム
用のオペレーテイング・システムの改良に関する。LA
N又はWANを構築するだめにIBMシステム・ネツ゛
トワーク・アーキテクチャ(SNA)を使用する事がで
きる。本発明によるオペレーティング・システムは、フ
ァイルがシステム中のどこにあっても、ファイルへのア
クセスを可能にする。本発明の良好な実施例はUNIX
(UNIXはAT&Tの米国における登録商標である)
オペレーティング・システムの1バージヨンにおいて実
施されたが、他の異なったオペレーティングφシステム
で本発明を実施する事もできる。
B、従来技術
1台の実計算機を複数台の計算機に見せる仮想計算機オ
ペレーティング・システムが、従来技術で知られている
。こうした計算機は、それを載せる実計算機に非常に類
似することもあり、また非常に異なることもある。多数
の仮想計算機オペレーティング・システムが開発されて
いるが、その中で恐らく最も広く使われているのは、I
BMシステム/370上で走行するVM/370である
と思われる。VM/!+70オペレーティング・システ
ムは、端末から操作する複数のユーザが、様々なディス
ク容量と記憶容量をもつ完璧なシステム/670を有す
るかのような錯覚を生み出す。
ペレーティング・システムが、従来技術で知られている
。こうした計算機は、それを載せる実計算機に非常に類
似することもあり、また非常に異なることもある。多数
の仮想計算機オペレーティング・システムが開発されて
いるが、その中で恐らく最も広く使われているのは、I
BMシステム/370上で走行するVM/370である
と思われる。VM/!+70オペレーティング・システ
ムは、端末から操作する複数のユーザが、様々なディス
ク容量と記憶容量をもつ完璧なシステム/670を有す
るかのような錯覚を生み出す。
物理的ディスク装置は、VM/り70オペレーティング
・システムによって管理される。ディスク上に存在する
物理的ボリュームが様々なサイズの仮想ボリュームに分
割され、ユーザが行なうマウントと呼ばれる処理によっ
て割り振られアクセスされる。マウントとは、物理的ボ
リュームを定義してVM/370オペレーティング壷シ
ステムに付加し、ボリュームの仮想の特性、たとえばサ
イズ、セキュリティ、所有権などを定義することである
。
・システムによって管理される。ディスク上に存在する
物理的ボリュームが様々なサイズの仮想ボリュームに分
割され、ユーザが行なうマウントと呼ばれる処理によっ
て割り振られアクセスされる。マウントとは、物理的ボ
リュームを定義してVM/370オペレーティング壷シ
ステムに付加し、ボリュームの仮想の特性、たとえばサ
イズ、セキュリティ、所有権などを定義することである
。
さらに、VM/370の下では、ユーザは同じローカル
・プロセッサ上でまたは遠隔の別のプロセッサ上でVM
/370の下で走行する、他のどのオペレーティング・
システムにもアクセスしそれを使用することができる。
・プロセッサ上でまたは遠隔の別のプロセッサ上でVM
/370の下で走行する、他のどのオペレーティング・
システムにもアクセスしそれを使用することができる。
オースチンにいるユーザが、VM、;/370の「パス
スルー」ト呼ハれる機能を便って、同じプロセッサ上、
または例えば同じSNAネットワークに接続されたフラ
ンスのパリにあるプロセッサ上の別のVM/370また
はMVS/370オペレーティング・システムにアクセ
スすることができる。ユーザが一度この機能を使うと、
そのユーザはその別のオペレーティング・システムに接
続されたファイルを処理のために使用することができる
。
スルー」ト呼ハれる機能を便って、同じプロセッサ上、
または例えば同じSNAネットワークに接続されたフラ
ンスのパリにあるプロセッサ上の別のVM/370また
はMVS/370オペレーティング・システムにアクセ
スすることができる。ユーザが一度この機能を使うと、
そのユーザはその別のオペレーティング・システムに接
続されたファイルを処理のために使用することができる
。
この手法にはいくつかの大きな欠点がある。第一に、ユ
ーザが「パススルー」特性を便ってローカルなまたは遠
隔の別のオペレーティング・システムにアクセスすると
き、以前使用されていたファイルと操作環境が、新しい
セツショ;/が終了するまで使えなくなる。他のセツシ
ョンからのファイルを処理する唯一の方法は、それらの
ファイルを他のオペレーティング・システムに送って、
両方のディスク上で実際にコピーを複製することである
。
ーザが「パススルー」特性を便ってローカルなまたは遠
隔の別のオペレーティング・システムにアクセスすると
き、以前使用されていたファイルと操作環境が、新しい
セツショ;/が終了するまで使えなくなる。他のセツシ
ョンからのファイルを処理する唯一の方法は、それらの
ファイルを他のオペレーティング・システムに送って、
両方のディスク上で実際にコピーを複製することである
。
第二に、ユーザは、アクセスしようとするすべてのシス
テムに別々に「ログ・オン」しなければならない。こう
することで、システムの保全性を保護するために必要な
セキュリティがもたらされるが、そのことはまたユーザ
にとっては大変な負担となる。その他の背景知識につい
ては、H,M。
テムに別々に「ログ・オン」しなければならない。こう
することで、システムの保全性を保護するために必要な
セキュリティがもたらされるが、そのことはまたユーザ
にとっては大変な負担となる。その他の背景知識につい
ては、H,M。
ディチル(Harvey M、Deitel)著の教
科書[オペレーティング・システム入門(AnIntr
oduction to OperatingSy
stems)J、Addison−Wesley刊(1
984年)、とくにその第22章「VM :仮想計算機
オペレーティング・システム(V M : A Vir
tualMachine Operating Sys
tem)Jを参照されたい。より詳しい考察については
、H,ローリン(Harold Lorin)とH,M
、ディチル共著(7)教科−trオペレーティング・シ
ステム(OperatingSys tems )J、
Addison−Wesley刊(1981年)、と(
にその第10章[仮想計算機(Virtual Ma
chines)Jを参照されたい。
科書[オペレーティング・システム入門(AnIntr
oduction to OperatingSy
stems)J、Addison−Wesley刊(1
984年)、とくにその第22章「VM :仮想計算機
オペレーティング・システム(V M : A Vir
tualMachine Operating Sys
tem)Jを参照されたい。より詳しい考察については
、H,ローリン(Harold Lorin)とH,M
、ディチル共著(7)教科−trオペレーティング・シ
ステム(OperatingSys tems )J、
Addison−Wesley刊(1981年)、と(
にその第10章[仮想計算機(Virtual Ma
chines)Jを参照されたい。
以下では、UNIXオペレーティング・システムの1バ
ージヨンで本発明を実施した場合について説明するが、
本発明はUNIXオペレーティング・システムに類似す
る特徴をもつ他のオペレーティング・システムでも使用
できる。UNIXオヘレーテイング・システムは、ベル
研究所(BellTelephone Labora
tories、Inc、)がディジタル・エクイツプメ
ント社(DigitalEquipment Cor
porationlIDEC)のミニコンピユータ用に
開発したものであるが、広範囲のミニコンピユータ用、
それに最近ではマイクロコンピュータ用のオペレーティ
ング−システムとして広く使われている。この普及の一
因は、UNIXオペレー゛ティング・システムがアセン
ブリ言語ではな(、やはりベル研究所で開発されたCプ
ログラミング言語で書かれており、したがって、プロセ
ッサの種類を問わないことである。したがって、様々な
計算機用のCコンパイラを使うと、UNIXオペレーテ
ィング・システムをある計算機から別の計算機に移すこ
とが可能になる。すなわち、UNIXオペレーティング
・システム環境用に書かれたアプリケーション・プログ
ラムも、計算機間で移植可能である。UNIXオペレー
ティング・システムの詳細については、[UNIXTM
システム、ユーザーズ・マニュアル、システムVM (UN IX System、User’s M
anual、System V)J、Western
Electric Co、、1983年1月刊を参
照のこと。UNIXオペレーティング・システムの秀れ
た概説が、B、W、カーニハン(Brian W、K
ernighan)とロブーパイク(Rob Pik
e)の共著「ユニックス・プログラミング環境(The
Unix ProgrammingEnviron
ment)j Prentice−)(all、 19
84年刊に出ている。UNIXオペレーティング・シス
テムの設計の詳細については、M、J、バッハ(Mau
rice J、Bach)著[ユニックスーオペレー
テイング会システム(7)設計(Design of
the Unix Operating Sys
tem)J、prentice−Hall、1986年
刊に出ている。
ージヨンで本発明を実施した場合について説明するが、
本発明はUNIXオペレーティング・システムに類似す
る特徴をもつ他のオペレーティング・システムでも使用
できる。UNIXオヘレーテイング・システムは、ベル
研究所(BellTelephone Labora
tories、Inc、)がディジタル・エクイツプメ
ント社(DigitalEquipment Cor
porationlIDEC)のミニコンピユータ用に
開発したものであるが、広範囲のミニコンピユータ用、
それに最近ではマイクロコンピュータ用のオペレーティ
ング−システムとして広く使われている。この普及の一
因は、UNIXオペレー゛ティング・システムがアセン
ブリ言語ではな(、やはりベル研究所で開発されたCプ
ログラミング言語で書かれており、したがって、プロセ
ッサの種類を問わないことである。したがって、様々な
計算機用のCコンパイラを使うと、UNIXオペレーテ
ィング・システムをある計算機から別の計算機に移すこ
とが可能になる。すなわち、UNIXオペレーティング
・システム環境用に書かれたアプリケーション・プログ
ラムも、計算機間で移植可能である。UNIXオペレー
ティング・システムの詳細については、[UNIXTM
システム、ユーザーズ・マニュアル、システムVM (UN IX System、User’s M
anual、System V)J、Western
Electric Co、、1983年1月刊を参
照のこと。UNIXオペレーティング・システムの秀れ
た概説が、B、W、カーニハン(Brian W、K
ernighan)とロブーパイク(Rob Pik
e)の共著「ユニックス・プログラミング環境(The
Unix ProgrammingEnviron
ment)j Prentice−)(all、 19
84年刊に出ている。UNIXオペレーティング・シス
テムの設計の詳細については、M、J、バッハ(Mau
rice J、Bach)著[ユニックスーオペレー
テイング会システム(7)設計(Design of
the Unix Operating Sys
tem)J、prentice−Hall、1986年
刊に出ている。
AT&Tのベル研究所は、多数の団体にUNIXオペレ
ーティング・システム使用のライセンスを供与しており
、現在いくつかのバージョンがある。AT&Tから出た
最新のバージョンは、バージョン5.2である。バーク
レイ・バージョンとして知られるUNIXオペレーティ
ング・システムの別のバージョンが、カリフォルニア大
学バーフレイ校で開発された。広(使われているMS−
DO8およびパーソナル・コンピュータ用のPC−DO
Sオペレーティング・システムを開発したマイクロソフ
ト社(Microsoft)は、XENIXの商標で知
られるバージョンを出している。IBM RT P
C(RISC(縮小命令セット・コンピュータ)技術パ
ーソナル・コンピュータ、RTとRTPCはIBMコー
ポレーションの商標)を1985年に発表したのに伴っ
て、IBMコーポレーションはAIX(拡張対話型エグ
ゼクティブ、AIXはIBMコーポレーションの商標)
ト呼ばれる新しいオペレーティング・システムを公開し
た。AIXは、アプリケーション・インターフェース・
レベルでAT&TのUNIXオペレーティング・システ
ム、バージョン5.2と互換性があり、UNIXオペレ
ーティング・システム、バージョン5.2に対する拡張
機能を含んでいる。AIXオペレーティング書システム
の詳細については、「AIXオペレーティング・システ
ム技術解説書(AIX Operating Sy
stemTechnical Reference)
J第1版、IBMCorp、1985年11月刊を参照
されたい。
ーティング・システム使用のライセンスを供与しており
、現在いくつかのバージョンがある。AT&Tから出た
最新のバージョンは、バージョン5.2である。バーク
レイ・バージョンとして知られるUNIXオペレーティ
ング・システムの別のバージョンが、カリフォルニア大
学バーフレイ校で開発された。広(使われているMS−
DO8およびパーソナル・コンピュータ用のPC−DO
Sオペレーティング・システムを開発したマイクロソフ
ト社(Microsoft)は、XENIXの商標で知
られるバージョンを出している。IBM RT P
C(RISC(縮小命令セット・コンピュータ)技術パ
ーソナル・コンピュータ、RTとRTPCはIBMコー
ポレーションの商標)を1985年に発表したのに伴っ
て、IBMコーポレーションはAIX(拡張対話型エグ
ゼクティブ、AIXはIBMコーポレーションの商標)
ト呼ばれる新しいオペレーティング・システムを公開し
た。AIXは、アプリケーション・インターフェース・
レベルでAT&TのUNIXオペレーティング・システ
ム、バージョン5.2と互換性があり、UNIXオペレ
ーティング・システム、バージョン5.2に対する拡張
機能を含んでいる。AIXオペレーティング書システム
の詳細については、「AIXオペレーティング・システ
ム技術解説書(AIX Operating Sy
stemTechnical Reference)
J第1版、IBMCorp、1985年11月刊を参照
されたい。
本発明は、具体的には、複数のプロセッサがネットワー
ク内で相互接続されることを特徴とする、分散データ処
理システムに関係する。実際に実施された形では、本発
明は、IBMのシステムネットワーク・アーキテクチャ
(SNA)、さらに具体的にはSNA LU6.2拡
張プログラム間通信(APPC)で相互接続された複数
のIBM RT PC上で機能する。SNAでは、
そのリンク・レベルとして、ゼロックス社が開発したロ
ーカル・エリア・ネットワーク(LAN)であるイーサ
ネット(EthernetはXerox Corpor
ationの商標)または5DLC(同期データ・リン
ク制御)を使う。イーサネット・ローカル・エリア・ネ
ットワークを含めてローカル・エリア・ネットワークの
簡単な説明は、L、 E、 ジョーダン(Larr
y E、 Jordan)とB、チャーチル(Bruc
e Churchill)の共著FIBM PC用
の通信ネットワーキング(Communication
3and Networking for the
I BM PC)J、Robert J、 Brad
y(Prentice−Hallの子会社)、1983
年刊に出ている。コンピュータ用通信システム、とくに
SNAと5DLCについてのより明確な説明は、R,J
、 シフf−(Cypser)著[分散システム用通
信アーキテクチャ(Communications
Architecturefor Distribu
t、ed System)j、Addison −We
sley、1978年刊に出ている。ただし、本発明は
、イーサネット・ローカル・エリア・ネットワークやI
BM SNA以外のネットワークで相互接続された、
IBM RT PC以外の様々なコンピュータを用
いても実施できることを了解されたい。
ク内で相互接続されることを特徴とする、分散データ処
理システムに関係する。実際に実施された形では、本発
明は、IBMのシステムネットワーク・アーキテクチャ
(SNA)、さらに具体的にはSNA LU6.2拡
張プログラム間通信(APPC)で相互接続された複数
のIBM RT PC上で機能する。SNAでは、
そのリンク・レベルとして、ゼロックス社が開発したロ
ーカル・エリア・ネットワーク(LAN)であるイーサ
ネット(EthernetはXerox Corpor
ationの商標)または5DLC(同期データ・リン
ク制御)を使う。イーサネット・ローカル・エリア・ネ
ットワークを含めてローカル・エリア・ネットワークの
簡単な説明は、L、 E、 ジョーダン(Larr
y E、 Jordan)とB、チャーチル(Bruc
e Churchill)の共著FIBM PC用
の通信ネットワーキング(Communication
3and Networking for the
I BM PC)J、Robert J、 Brad
y(Prentice−Hallの子会社)、1983
年刊に出ている。コンピュータ用通信システム、とくに
SNAと5DLCについてのより明確な説明は、R,J
、 シフf−(Cypser)著[分散システム用通
信アーキテクチャ(Communications
Architecturefor Distribu
t、ed System)j、Addison −We
sley、1978年刊に出ている。ただし、本発明は
、イーサネット・ローカル・エリア・ネットワークやI
BM SNA以外のネットワークで相互接続された、
IBM RT PC以外の様々なコンピュータを用
いても実施できることを了解されたい。
前述のように、以下では、通信ネットワーク中の分散デ
ータ処理システムを対象として本発明を説明する。この
環境では、ネットワークのあるノードにある各プロセッ
サは、どのノードにファイルがあろうと、潜在的にその
ネットワーク内のすべてのファイルにアクセスすること
ができる。第1図に示すように、分散ネットワーク環境
1゛は、通信リンクまたは通信ネットワーク6を介して
接続ちれた2つ以上のノードA、B、Cかも構成される
。ネットワーク6は上記のようなローカル・エリア・ネ
ットワーク(LAN)でも広域ネットワーク(WAN)
でもよい。後者は、システムの他のノードまたはSNA
ネットワークへの交換回線または専用回線テレプロセッ
シング(TP)接続を含む。ノードA、B、Cのどこに
も、上記のIBM RT PCのような処理システ
ム10A110B、10Cがあり得る。こうした処理シ
ステムIOA、10B、10Cはそれぞれ単一ユーザ・
システムでも複数ユーザ・システムでもよく、ネットワ
ーク6を使ってネットワーク内の遠隔ノードにあるファ
イルにアクセスする能力をもつ。
ータ処理システムを対象として本発明を説明する。この
環境では、ネットワークのあるノードにある各プロセッ
サは、どのノードにファイルがあろうと、潜在的にその
ネットワーク内のすべてのファイルにアクセスすること
ができる。第1図に示すように、分散ネットワーク環境
1゛は、通信リンクまたは通信ネットワーク6を介して
接続ちれた2つ以上のノードA、B、Cかも構成される
。ネットワーク6は上記のようなローカル・エリア・ネ
ットワーク(LAN)でも広域ネットワーク(WAN)
でもよい。後者は、システムの他のノードまたはSNA
ネットワークへの交換回線または専用回線テレプロセッ
シング(TP)接続を含む。ノードA、B、Cのどこに
も、上記のIBM RT PCのような処理システ
ム10A110B、10Cがあり得る。こうした処理シ
ステムIOA、10B、10Cはそれぞれ単一ユーザ・
システムでも複数ユーザ・システムでもよく、ネットワ
ーク6を使ってネットワーク内の遠隔ノードにあるファ
イルにアクセスする能力をもつ。
たとえば、ローカル・ノードAにある処理システム1O
Aは、遠隔ノードBおよびCにあるファイル5Bと5C
にアクセスできる。
Aは、遠隔ノードBおよびCにあるファイル5Bと5C
にアクセスできる。
遠隔ノードにアクセスする際にぶつかる問題は、まずス
タンドアロン・システムがどのようにしてファイルにア
クセスするかを検討すると、よく理解できる。第2図の
10のようなスタンドアロン・システム内では、オペレ
ーティング・システム11中のローカル・バッファ12
を使って永久記憶装置2、たとえばハード・ファイルや
パーソナル・コンピュータ中のディスクとユーザ・アド
レス空間との間で転送されるデータを緩衝記憶する。
タンドアロン・システムがどのようにしてファイルにア
クセスするかを検討すると、よく理解できる。第2図の
10のようなスタンドアロン・システム内では、オペレ
ーティング・システム11中のローカル・バッファ12
を使って永久記憶装置2、たとえばハード・ファイルや
パーソナル・コンピュータ中のディスクとユーザ・アド
レス空間との間で転送されるデータを緩衝記憶する。
オペレーティング・システム11内のローカル・バッフ
ァ12は、ローカル・キャッシュあるいはカーネル・バ
ッファとも呼ばれる。
ァ12は、ローカル・キャッシュあるいはカーネル・バ
ッファとも呼ばれる。
UNIXオペレーティング・システムのカーネルの詳細
については、上記のカーニハン等の著書およびバッハの
著書を参照のこと。ローカル・キャッシュは、メモリ常
駐ディスクとして理解すると最も理解しやすい。データ
はディスク上で持っていた物理的特性を保持するが、情
報は今や、主システム記憶装置で達成される速度に非常
に近い、より速いデータ転送速度を有する媒体中に存在
しているのである。
については、上記のカーニハン等の著書およびバッハの
著書を参照のこと。ローカル・キャッシュは、メモリ常
駐ディスクとして理解すると最も理解しやすい。データ
はディスク上で持っていた物理的特性を保持するが、情
報は今や、主システム記憶装置で達成される速度に非常
に近い、より速いデータ転送速度を有する媒体中に存在
しているのである。
スタンドアロンφシステム内テ、カーネル・バッファ1
2はブロック15で識別されている。これは装置番号お
よびその装置内の論理ブロック番号で指定される。読取
りシステム・コール16が発行されるとき、それは、第
3図のステップ101に示すように、ファイル5のファ
イル記述子およびファイル5内のバイト範囲と一緒に発
行される。オペレーティング・システム11はこの情報
を取り出し、ステップ102でそれを装置番号および装
置内の論理ブロック番号に変換する。次に、オペレーテ
ィング・システム11は、ステップ103で、装置番号
および論理ブロック番号にもとづいてキャッシュ12を
読み取る。
2はブロック15で識別されている。これは装置番号お
よびその装置内の論理ブロック番号で指定される。読取
りシステム・コール16が発行されるとき、それは、第
3図のステップ101に示すように、ファイル5のファ
イル記述子およびファイル5内のバイト範囲と一緒に発
行される。オペレーティング・システム11はこの情報
を取り出し、ステップ102でそれを装置番号および装
置内の論理ブロック番号に変換する。次に、オペレーテ
ィング・システム11は、ステップ103で、装置番号
および論理ブロック番号にもとづいてキャッシュ12を
読み取る。
ディスク2かも読み取られたデータは、キャッシュ中ブ
ロック15が必要となるまでキャッシュ・ブロック15
に保管される。その結果、処理システム10上で走行中
のアプリケーション・プログラム4からディスク2から
以前に読み取られたものと同じデータに対する読取りが
続けて要求されると、それはディスク2からではな(て
キャッシュ12からアクセスされる。キャッシュ12か
ら読み取るのは、ディスクへのアクセスはど時間がかか
らない。したがって、キャッシュから読み取ることによ
り、アプリケーション・プログラム4のパフォーマンス
が向上する。明らかに、アクセスしようとするデータが
キャッシュに入ってない場合は、ディスクにアクセスし
なげればならないが、それが必要となるのは稀である。
ロック15が必要となるまでキャッシュ・ブロック15
に保管される。その結果、処理システム10上で走行中
のアプリケーション・プログラム4からディスク2から
以前に読み取られたものと同じデータに対する読取りが
続けて要求されると、それはディスク2からではな(て
キャッシュ12からアクセスされる。キャッシュ12か
ら読み取るのは、ディスクへのアクセスはど時間がかか
らない。したがって、キャッシュから読み取ることによ
り、アプリケーション・プログラム4のパフォーマンス
が向上する。明らかに、アクセスしようとするデータが
キャッシュに入ってない場合は、ディスクにアクセスし
なげればならないが、それが必要となるのは稀である。
同様に、アプリケーション・プログラム4から書き込ま
れたデータは、直接ディスク2には書き込まれず、キャ
ッシュ12に書き込まれる。このことによっても時間が
節減され、アプリケーション・プログラムのパフォーマ
ンスが向上する。キャッシュ12内の修正されたデータ
・ブロックは、オペレーティング・システム11の制御
下で周期的にディスク2に保管される。
れたデータは、直接ディスク2には書き込まれず、キャ
ッシュ12に書き込まれる。このことによっても時間が
節減され、アプリケーション・プログラムのパフォーマ
ンスが向上する。キャッシュ12内の修正されたデータ
・ブロックは、オペレーティング・システム11の制御
下で周期的にディスク2に保管される。
本発明を実施した環境であるAIXオベレーテインク・
システムヲ使ったスタンドアロン俸システムでキャッシ
ュを便うと、連続する読取りおよび書込みディスク操作
の必要がなくなるので、システム・ディスクの全体的パ
フォーマンスが向上し、アクセス時間が減少する。
システムヲ使ったスタンドアロン俸システムでキャッシ
ュを便うと、連続する読取りおよび書込みディスク操作
の必要がなくなるので、システム・ディスクの全体的パ
フォーマンスが向上し、アクセス時間が減少する。
第1図に示したような分散ネットワーキング環境では、
ローカル・ノードCKある処理システム10Cがノード
Aからファイル5Aを読み取る方式が2通りめる。1つ
の方式では、処理システム10Cがファイル5Aの全体
を複写し、それがノードCKあるローカル−ファイル5
Cであるかのように読み取ることができる。このやり方
でファイルを読み取ると、ノードCでファイル5Aが複
写された後で、たとえばノードBにある別の処理システ
ム10Bがファイル5Aを修正する場合に問題が生じる
。処理システム10Cは、ファイル5Aに対する最近の
修正にアクセスできないことになる。
ローカル・ノードCKある処理システム10Cがノード
Aからファイル5Aを読み取る方式が2通りめる。1つ
の方式では、処理システム10Cがファイル5Aの全体
を複写し、それがノードCKあるローカル−ファイル5
Cであるかのように読み取ることができる。このやり方
でファイルを読み取ると、ノードCでファイル5Aが複
写された後で、たとえばノードBにある別の処理システ
ム10Bがファイル5Aを修正する場合に問題が生じる
。処理システム10Cは、ファイル5Aに対する最近の
修正にアクセスできないことになる。
処理システム10CがノードAにあるファイル5Aにア
クセスするもう一つの方式は、ノードCにある処理シス
テム10Cが要求したとき、一度に1つのブロックを読
み取るものである。この方式に伴う問題は、読取りのた
びにネットワーク通信リンク6を介してファイルがある
ノードAまで行かなげればならないことである。連続す
る読取りのたびにデータを送るのは時間の浪費である。
クセスするもう一つの方式は、ノードCにある処理シス
テム10Cが要求したとき、一度に1つのブロックを読
み取るものである。この方式に伴う問題は、読取りのた
びにネットワーク通信リンク6を介してファイルがある
ノードAまで行かなげればならないことである。連続す
る読取りのたびにデータを送るのは時間の浪費である。
ネットワークを介してファイルにアクセスする場合、上
記の2つの競合する問題が生じる。一つの問題は、連続
する読取りと書込みのためにネットワークを介してデー
タを送信するのに時間がかかることである。他方、ネッ
トワークのトラフィックを減らすためにファイル・デー
タをノードに記憶する場合、ファイルの整合性が失われ
るおそれがある。たとえば、いくつかのノードのうちの
一つがファイルに書込みを行なっている場合、そのファ
イルにアクセスしている他のノードが、令書き込まれた
ばかりの最近の更新済みファイルにアクセスしていない
ことがある。したがって、ファイルの整合性が失われ、
ノードがアクセスしているファイルが正しくない古(な
ったものであることがある。
記の2つの競合する問題が生じる。一つの問題は、連続
する読取りと書込みのためにネットワークを介してデー
タを送信するのに時間がかかることである。他方、ネッ
トワークのトラフィックを減らすためにファイル・デー
タをノードに記憶する場合、ファイルの整合性が失われ
るおそれがある。たとえば、いくつかのノードのうちの
一つがファイルに書込みを行なっている場合、そのファ
イルにアクセスしている他のノードが、令書き込まれた
ばかりの最近の更新済みファイルにアクセスしていない
ことがある。したがって、ファイルの整合性が失われ、
ノードがアクセスしているファイルが正しくない古(な
ったものであることがある。
本明細書中では、ファイルを永久的に記憶している処理
システムを指すのに1サーバ」という言葉を使い、その
ファイルにアクセスするプロセスを有する他の任意の処
理システムを指すのに1クライエント」の語を使うこと
にする。
システムを指すのに1サーバ」という言葉を使い、その
ファイルにアクセスするプロセスを有する他の任意の処
理システムを指すのに1クライエント」の語を使うこと
にする。
UNIXオペレーティングシステム環境内で分散データ
処理システムをサポートする方法は、他にも知られてい
る。たとえば、Sun Microsystemsはネ
ットワーク・ファイル・システム(NFS)を発表し、
ベル研究所は遠隔ファイル・システム(RFS )を開
発している。
処理システムをサポートする方法は、他にも知られてい
る。たとえば、Sun Microsystemsはネ
ットワーク・ファイル・システム(NFS)を発表し、
ベル研究所は遠隔ファイル・システム(RFS )を開
発している。
本発明をその中で実施する分散サービス・システムの、
たとえばSun MicrosystemsのNFSと
は区別される一つの特徴は、Sun の方法が基本的に
状態非保存(5tateless )の機械を設計する
ためのものであったということである。
たとえばSun MicrosystemsのNFSと
は区別される一つの特徴は、Sun の方法が基本的に
状態非保存(5tateless )の機械を設計する
ためのものであったということである。
もつと具体的に言うと、分散システム内のサーバを状態
非保存型に設計することができる。すなわち、サーバは
、どのクライエント・ノードがサ−バ・ファイルをオー
プンしたか、クライエント・プロセスが読取り専用モー
ドでファイルをオープンしたのかそれとも読取り/書込
みモードでファイルをオープンしたのか、あるいはクラ
イエントがそのファイルのバイト範囲にロックをかけて
いるかどうかを含めて、クライエント・ノードに関する
情報を何も記憶しない。このような実施形態をとると、
クライエント・ノードが故障したり、あるいはサーバ資
源に対する要求を解除したとサーバにきちんと知らせず
にオフラインになったときに生じる、誤り回復状況をサ
ーバが処理する必要がないので、サーバの設計が簡単に
なる。
非保存型に設計することができる。すなわち、サーバは
、どのクライエント・ノードがサ−バ・ファイルをオー
プンしたか、クライエント・プロセスが読取り専用モー
ドでファイルをオープンしたのかそれとも読取り/書込
みモードでファイルをオープンしたのか、あるいはクラ
イエントがそのファイルのバイト範囲にロックをかけて
いるかどうかを含めて、クライエント・ノードに関する
情報を何も記憶しない。このような実施形態をとると、
クライエント・ノードが故障したり、あるいはサーバ資
源に対する要求を解除したとサーバにきちんと知らせず
にオフラインになったときに生じる、誤り回復状況をサ
ーバが処理する必要がないので、サーバの設計が簡単に
なる。
本発明をその中で実施する分散サービス・システムの設
計では、全(異なる方法が取られた。もつと具体的に言
うと、この分散サービス・システムは、「状態保存型の
インプリメーション」であると特徴づけることができる
。本明細書に記載する[状態保存型の(Statefu
ll)Jサーバは、誰がそのファイルを使っているか、
およびファイルがどのように使われているかに関する情
報を保持する。それには、サーバが何らかの方法である
クライエントとの接触の喪失を検出して、そのクライエ
ントに関する蓄積された状態情報を廃棄できるようにす
る必要がある。しかし、本明細書に記載するキャッシュ
管理戦略は、サーバがそうした状態情報を保持しない限
り実施できない。キャッシュの管理は、下記で説明する
ように、サーバーファイルをオープンせよとの要求を発
行しているクライエント・ノードの数およびそうしたオ
ープンが読取りモードであるかそれとも書込みモードで
あるかによって影響を受ける。
計では、全(異なる方法が取られた。もつと具体的に言
うと、この分散サービス・システムは、「状態保存型の
インプリメーション」であると特徴づけることができる
。本明細書に記載する[状態保存型の(Statefu
ll)Jサーバは、誰がそのファイルを使っているか、
およびファイルがどのように使われているかに関する情
報を保持する。それには、サーバが何らかの方法である
クライエントとの接触の喪失を検出して、そのクライエ
ントに関する蓄積された状態情報を廃棄できるようにす
る必要がある。しかし、本明細書に記載するキャッシュ
管理戦略は、サーバがそうした状態情報を保持しない限
り実施できない。キャッシュの管理は、下記で説明する
ように、サーバーファイルをオープンせよとの要求を発
行しているクライエント・ノードの数およびそうしたオ
ープンが読取りモードであるかそれとも書込みモードで
あるかによって影響を受ける。
C0発明が解決しようとする問題点
したがって、ネットワーク内でのファイルの位置および
パフォーマンスに関してユーザ透過性をもたらす、通信
ネットワークで相互接続されたマルチ・プロセッサ式デ
ータ処理システムをサポートするオペレーティング・シ
ステム用の分散サービス・システムを提供することが、
本発明の一般的目的である。
パフォーマンスに関してユーザ透過性をもたらす、通信
ネットワークで相互接続されたマルチ・プロセッサ式デ
ータ処理システムをサポートするオペレーティング・シ
ステム用の分散サービス・システムを提供することが、
本発明の一般的目的である。
分散したファイル及びレコードのロッキング機能を提供
する事が、本発明のより具体的な第2の目的である。
する事が、本発明のより具体的な第2の目的である。
D6問題点を解決するだめの手段
本発明によれば、これらの目的は、ファイルをロックす
るのに下記のステップを用いる事によって達成される。
るのに下記のステップを用いる事によって達成される。
もしファイルがローカル・ファイルであれば、その時は
UNIXオペレーティング・システムの標準的なファイ
ル・ロッキングが使われる。しかし、遠隔ファイルがロ
ックされるならば、UNIXオペレーティング・システ
ムのLOCKF及びFCNTI、システムeコールはイ
ンターセプトされ、遠隔プロセス・コール(RPC)D
FS LOCK C0NTR0Lが実行される。
UNIXオペレーティング・システムの標準的なファイ
ル・ロッキングが使われる。しかし、遠隔ファイルがロ
ックされるならば、UNIXオペレーティング・システ
ムのLOCKF及びFCNTI、システムeコールはイ
ンターセプトされ、遠隔プロセス・コール(RPC)D
FS LOCK C0NTR0Lが実行される。
サーバ・ノードはRPCを受は取り、ロック要求を実施
する。この要求は単一のレコード、1組のレコード又は
ファイル全体にロックを行なう事ができる。次に、クラ
イエントの代理iノードがDFS LOCK C0
NTR0L RPCからの返答を待機している間に、
サーバは、クライエントに通知を送る。クライエントは
、ロックの受理上確認しRPCの受信を遠隔サーバに返
答する。
する。この要求は単一のレコード、1組のレコード又は
ファイル全体にロックを行なう事ができる。次に、クラ
イエントの代理iノードがDFS LOCK C0
NTR0L RPCからの返答を待機している間に、
サーバは、クライエントに通知を送る。クライエントは
、ロックの受理上確認しRPCの受信を遠隔サーバに返
答する。
サーバは、クライエントの代理iノードからの返答の受
信後にロック・テーブルを更新する。もしサーバがDF
S LOCK C0NTR0Lの返答の受信を確認
しなげれば、DFS LOCK−CONTROLがロ
ック・テーブルからロックを除去する。
信後にロック・テーブルを更新する。もしサーバがDF
S LOCK C0NTR0Lの返答の受信を確認
しなげれば、DFS LOCK−CONTROLがロ
ック・テーブルからロックを除去する。
E、実施例
E−1,ファイル・システム
下記の開示では、物理的にはい(つかの異なった計算機
の中に存在するファイルがローカルの計算機のファイル
・システムの一部であるように見える事を可能にするよ
うに、ファイルを管理する論理が変更された分散ファイ
ル・システムを形成する時に出会う問題に対する解決策
について説明する。ここで説明するインプリメンテーシ
ョンは、AI)l−ベレーテイング・システムのファイ
ル・システムの拡張である。このAIXオペレーティン
グ・システムの詳細については、前記で参照した技術解
説書を参照されたい。木構造ファイル・システム、ディ
レクトリ、およびiノードを含むファイル・システム構
成などのAIXファイルeシステムに関する特定の知識
があるものと仮定する。
の中に存在するファイルがローカルの計算機のファイル
・システムの一部であるように見える事を可能にするよ
うに、ファイルを管理する論理が変更された分散ファイ
ル・システムを形成する時に出会う問題に対する解決策
について説明する。ここで説明するインプリメンテーシ
ョンは、AI)l−ベレーテイング・システムのファイ
ル・システムの拡張である。このAIXオペレーティン
グ・システムの詳細については、前記で参照した技術解
説書を参照されたい。木構造ファイル・システム、ディ
レクトリ、およびiノードを含むファイル・システム構
成などのAIXファイルeシステムに関する特定の知識
があるものと仮定する。
UNIXオペレーティング・システムにおいて、各ディ
スク(又はディスケット又はディスクの区画)がファイ
ル・システムを含んでいる。この議論に関係のあるファ
イル・システムの基本的態様を下記に列挙する。
スク(又はディスケット又はディスクの区画)がファイ
ル・システムを含んでいる。この議論に関係のあるファ
イル・システムの基本的態様を下記に列挙する。
a)個別のファイル・システム上の各ファイルが、その
iノード番号によって一義的に識別される。
iノード番号によって一義的に識別される。
b)ディレクトリもファイルであり、したがってディレ
クトリもそのiノード番号によって一義的に識別できる
。
クトリもそのiノード番号によって一義的に識別できる
。
注:ある種の文脈中では、ディレクトリであるファイル
とディレクトリでないファイル(たとえば、単に通常の
データを含むだけのファイル、または特殊ファイルやバ
イブなとUNIX類似のオペレーティング・システムで
サポートされる他の種類のファイル)′5r:区別する
必要がある。
とディレクトリでないファイル(たとえば、単に通常の
データを含むだけのファイル、または特殊ファイルやバ
イブなとUNIX類似のオペレーティング・システムで
サポートされる他の種類のファイル)′5r:区別する
必要がある。
この開示では、そうしたディレクトリでないファイルを
示すのに「単純ファイル」という言葉を使う。別設の指
示がない限り、「ファイル」という言葉はディレクトリ
・ファイルも単純ファイルも表し、もちろん、「ディレ
クトリ」の語はディレクトリ・ファイルを意味するもの
とする。
示すのに「単純ファイル」という言葉を使う。別設の指
示がない限り、「ファイル」という言葉はディレクトリ
・ファイルも単純ファイルも表し、もちろん、「ディレ
クトリ」の語はディレクトリ・ファイルを意味するもの
とする。
C)ディレクトリは、次の形式の項目の列を含む。
名前 −iノード番号
ただし、iノード番号は、単純ファイルのiノード番号
でも別のディレクトリのiノード番号でもよい。
でも別のディレクトリのiノード番号でもよい。
注:ディレクトリは他のディレクトリを含むことがあり
、後者はさらに別のディレクトリまたは単純ファイルを
含むことがある。
、後者はさらに別のディレクトリまたは単純ファイルを
含むことがある。
したがって、ディレクトリは何段もの子孫ディレクトリ
を含み得る部分木のルートと見なすことができ、その場
合、木の葉が[゛単純ファイル」でるる。
を含み得る部分木のルートと見なすことができ、その場
合、木の葉が[゛単純ファイル」でるる。
この開示では、「子孫」の語は、他のディレクトリを経
由しないと到達できないものも含めて、ファイル・ツリ
ーの特定のディレクトリより下方にあるすべてのファイ
ルを意味するものとする。
由しないと到達できないものも含めて、ファイル・ツリ
ーの特定のディレクトリより下方にあるすべてのファイ
ルを意味するものとする。
あるディレクトリの「直属子孫」とは、そのディレクト
リに名前が出ているファイル(単純ファイルまたはディ
レクトリ)のみを言う。
リに名前が出ているファイル(単純ファイルまたはディ
レクトリ)のみを言う。
d)規約により、ファイル・システムのルート・ディレ
クトリのiノード番号は、iノード番号2とする。
クトリのiノード番号は、iノード番号2とする。
ある装置のファイル・システム内のバス”/dir1/
dir 2 / f tie ’”をたどるには、次
のようなステップをとる。
dir 2 / f tie ’”をたどるには、次
のようなステップをとる。
1、iノード番号2で識別されるファイル(その装置の
ルート・ディレクトリ)を読み取る。
ルート・ディレクトリ)を読み取る。
2 そのディレクトリを探索して、name =dir
1の項目を見つける。
1の項目を見つける。
3、dirlに関連するiノード番号で識別されるファ
イル(これはバス中の次のディレクトリである)を読み
取る。
イル(これはバス中の次のディレクトリである)を読み
取る。
4、そのディレクトリを探索して、name=dir
2の項目を見つける。
2の項目を見つける。
5、dir2に関連するiノード番号で識別されるファ
イル(これはバス中の次のディレクトリである)を読み
取る。
イル(これはバス中の次のディレクトリである)を読み
取る。
6、そのディレクトリを探索して、name==fil
eの項目を見つげる。
eの項目を見つげる。
Z このディレクトリ内のi’−fileJに関連する
iノード番号が、バス” / dir 1 / dir
2/ f i l e ”で識別される単純ファイル
のiノード番号である。
iノード番号が、バス” / dir 1 / dir
2/ f i l e ”で識別される単純ファイル
のiノード番号である。
個別のファイル・システム上に存在するファイル・ツリ
ーは、あるノードの集合(aggregate)ファイ
ル・ツリーを構築するための構成要素である。ある特定
の装置(たとえば、ハード・ファイル区画)は、ノード
のハード・ファイル・システムを含む装置に指定される
。マウント操作の実行により、別の装置上にあるファイ
ル・ツリーをノードのファイル・ツリーて付加すること
ができる。
ーは、あるノードの集合(aggregate)ファイ
ル・ツリーを構築するための構成要素である。ある特定
の装置(たとえば、ハード・ファイル区画)は、ノード
のハード・ファイル・システムを含む装置に指定される
。マウント操作の実行により、別の装置上にあるファイ
ル・ツリーをノードのファイル・ツリーて付加すること
ができる。
マウント操作の2つの主要バラメー、夕は、(1)マウ
ントされるファイル・ツリーを保持する装置の名前と(
2)装置のファイル・ツリーをマウントするディレクト
リへのパスである。このディレクトリは、既にノードの
ファイル・ツリーの一部分でなければならない。すなわ
ち、ルート・ファイル・システム内のディレクトリ、ま
たは(マウント操作によって)ノードのファイル・ツリ
ーに既に付加されたファイル・システム内のディレクト
リでなければならない。
ントされるファイル・ツリーを保持する装置の名前と(
2)装置のファイル・ツリーをマウントするディレクト
リへのパスである。このディレクトリは、既にノードの
ファイル・ツリーの一部分でなければならない。すなわ
ち、ルート・ファイル・システム内のディレクトリ、ま
たは(マウント操作によって)ノードのファイル・ツリ
ーに既に付加されたファイル・システム内のディレクト
リでなければならない。
マウントの実行後は、普通なら「マウント・オーバーさ
れた」ブイレフ) IJを通って流れるはずのパスが、
マウントされたファイル・システムのルート1ノードを
通って流れる。マウント操作は、次のように進行する。
れた」ブイレフ) IJを通って流れるはずのパスが、
マウントされたファイル・システムのルート1ノードを
通って流れる。マウント操作は、次のように進行する。
1、 マウント点までパスをたどり、マウントされた装
置がカバーするディレクトリのiノード番号と装置番号
を入手する。
置がカバーするディレクトリのiノード番号と装置番号
を入手する。
2 基本的に次のものを含むデータ構造を作成する。
a)カバーされるディレクトリの装置番号と1ノ一ド査
号 b)マウントされる装置の装置名 ノードの集合ファイル拳ツリー内でのパスのたどり方は
、(、)マウント・オーバーされた1ノード(またはも
ちろんパスの終点)にぶつかるまで、装置ファイル・ツ
リー内のパスをたどること、 (b)マウント点にぶつ
かるとマウント・データ構造を便って、バス中で次にど
の装置があるか判定すること、および(c)マウント構
造内で指示される装置中のiノード2(ルート1ノード
)からパスをたどり始めることからなる。
号 b)マウントされる装置の装置名 ノードの集合ファイル拳ツリー内でのパスのたどり方は
、(、)マウント・オーバーされた1ノード(またはも
ちろんパスの終点)にぶつかるまで、装置ファイル・ツ
リー内のパスをたどること、 (b)マウント点にぶつ
かるとマウント・データ構造を便って、バス中で次にど
の装置があるか判定すること、および(c)マウント構
造内で指示される装置中のiノード2(ルート1ノード
)からパスをたどり始めることからなる。
マウント・データ構造は揮発性である。すなわちディス
ク上に記録されない。初期プログラム・ロード(IPL
)の一部として計算機が電源投入されるたびに、所期の
マウントのリストを再発行しなければならない。以上の
議論では、従来のUNIXオペレーティング・システム
がファイル・システム全体のマウントをどのように便っ
てファイル・ツリーを作成し、またそのようなファイル
・ツリー内でどのようにパスをたどるか説明した。
ク上に記録されない。初期プログラム・ロード(IPL
)の一部として計算機が電源投入されるたびに、所期の
マウントのリストを再発行しなければならない。以上の
議論では、従来のUNIXオペレーティング・システム
がファイル・システム全体のマウントをどのように便っ
てファイル・ツリーを作成し、またそのようなファイル
・ツリー内でどのようにパスをたどるか説明した。
こうしたインプリメンテーションは、ある装置上に存在
するファイル・システム全体をマウントスることに限定
されている。仮想ファイル・システムの概念は、(1)
装置をマウントできる上にファイル(ディレクトリまた
は単純ファイル)もマウントできるようにすることによ
り、ある装置上に存在するファイル・システムの一部分
をマウントすること、および(2)既にファイル・ツリ
ーの一部分になっているディレクトリ上に、遠隔ディレ
クトリまたはローカル・デ・丁しクトリをマウントする
こと、さらに(3)既にファイル・ツリーの一部分にな
っている単純ファイルの上に(遠隔またはローカル)単
純ファイルをマウントすることを可能にする。
するファイル・システム全体をマウントスることに限定
されている。仮想ファイル・システムの概念は、(1)
装置をマウントできる上にファイル(ディレクトリまた
は単純ファイル)もマウントできるようにすることによ
り、ある装置上に存在するファイル・システムの一部分
をマウントすること、および(2)既にファイル・ツリ
ーの一部分になっているディレクトリ上に、遠隔ディレ
クトリまたはローカル・デ・丁しクトリをマウントする
こと、さらに(3)既にファイル・ツリーの一部分にな
っている単純ファイルの上に(遠隔またはローカル)単
純ファイルをマウントすることを可能にする。
仮想ファイル・システムでは、特定の装置ファイル・シ
ステム上で実行される操作が、ノードの乗合ファイル・
ツリーの構築および使用に関する操作からはっきり分離
される。ノードの仮想ファイル・システムはローカル及
び遠隔の両者のファイルにアクセスする事を可能にする
。
ステム上で実行される操作が、ノードの乗合ファイル・
ツリーの構築および使用に関する操作からはっきり分離
される。ノードの仮想ファイル・システムはローカル及
び遠隔の両者のファイルにアクセスする事を可能にする
。
ローカル睦ファイルの管理は、遠隔ファイルの管理より
も簡単な問題である。このため、仮想ファイル・システ
ムの考察を2つの部分に分ける。
も簡単な問題である。このため、仮想ファイル・システ
ムの考察を2つの部分に分ける。
第1の部分では、ローカル操作のみについて説明する。
この部分は、遠隔操作を考察するための基礎となる。遠
隔操作にもローカル操作にも同じデータ構造と操作が使
われる。ローカル操作の考察では、データおよび手順の
うちスタンドアロン操作にとって重要な態様について説
明する。遠隔操作の考察では、遠隔操作に関連する情報
を付は加えるが、ローカル操作の部で考察したことは繰
り返さない。
隔操作にもローカル操作にも同じデータ構造と操作が使
われる。ローカル操作の考察では、データおよび手順の
うちスタンドアロン操作にとって重要な態様について説
明する。遠隔操作の考察では、遠隔操作に関連する情報
を付は加えるが、ローカル操作の部で考察したことは繰
り返さない。
第4図は、仮想ファイル・システムのデータ構造間に存
在する関係を示したものである。各マウント操作で、新
しい仮想ファイル・システム(vfs)データ構造が作
成される。この構造中の基本要素は、 (、)この仮
想ファイル・システムのルート1ノード(仮想ノード)
を指すポインタ(たとえば、ブロック21からブロック
26への矢印)、および(b)この仮想ファイル・シス
テムが作成されたときにマウント・オーバーされたVノ
ードを指すポインタ(たとえは、ブロック25からブロ
ック24への矢印)である。
在する関係を示したものである。各マウント操作で、新
しい仮想ファイル・システム(vfs)データ構造が作
成される。この構造中の基本要素は、 (、)この仮
想ファイル・システムのルート1ノード(仮想ノード)
を指すポインタ(たとえば、ブロック21からブロック
26への矢印)、および(b)この仮想ファイル・シス
テムが作成されたときにマウント・オーバーされたVノ
ードを指すポインタ(たとえは、ブロック25からブロ
ック24への矢印)である。
iノードをファイル・システムとは独立なシステム部分
で表す必要がある場合、それはVノードで表される。こ
の構造の基本要素は、次のものである。
で表す必要がある場合、それはVノードで表される。こ
の構造の基本要素は、次のものである。
a)そのVノードを含む仮想ファイル・システムを指す
ポインタ(たとえは、ブロック22からブロック21へ
の矢印)。
ポインタ(たとえは、ブロック22からブロック21へ
の矢印)。
b)このVノードの上にマウントされた仮想ファイル・
システムを指すポインタ(たとえば、ブロック24から
ブロック25への矢印)。ただし、すべてのVノードが
仮想ファイル・システムのマウント点なのではないこと
に留意されたい。すなわち、空白ポインタはこのVノー
ドがマウント点でないことを示す。
システムを指すポインタ(たとえば、ブロック24から
ブロック25への矢印)。ただし、すべてのVノードが
仮想ファイル・システムのマウント点なのではないこと
に留意されたい。すなわち、空白ポインタはこのVノー
ドがマウント点でないことを示す。
C)代理iノードまたは実iノードのどちらかを指すポ
インタ(たとえば、ブロック26からブロック32への
矢印)。
インタ(たとえば、ブロック26からブロック32への
矢印)。
d)ノード・テーブル項目を指すポインタ(これはファ
イルが遠隔ファイルであるときだけ空白でない)。
イルが遠隔ファイルであるときだけ空白でない)。
AIXオペレーティング・システムは、他のUN I
Xオペレーティング・システムと同じく、システムが使
用している各iノードについての情報を含むメモリ常駐
テーブルを保持する。たとえば、あるファイルをオープ
ンするとき、ディスクからそのiノードが読み取られ、
このiノード情報のサブセットが若干の追加情報と共に
iノード・テーブルに記憶される。iノード・テーブル
項目の基本要素は、(a)ファイル・アクセス構造リス
トの先頭を指すポインタと、(b)ディスクiノードか
らの情報(その詳細はここでは重要でない)である。
Xオペレーティング・システムと同じく、システムが使
用している各iノードについての情報を含むメモリ常駐
テーブルを保持する。たとえば、あるファイルをオープ
ンするとき、ディスクからそのiノードが読み取られ、
このiノード情報のサブセットが若干の追加情報と共に
iノード・テーブルに記憶される。iノード・テーブル
項目の基本要素は、(a)ファイル・アクセス構造リス
トの先頭を指すポインタと、(b)ディスクiノードか
らの情報(その詳細はここでは重要でない)である。
ファイル・アクセス構造は、どのノードでファイルがオ
ープンになっているか、およびそれらのオープンのモー
ド(読取専用または読取り/書込み)に関する情報を記
録する。ファイルがオープンになっている各ノードごと
に別々のファイル・アクセス構造がある。この状態情報
全便りと、各クライエントがサーバ・ファイルをどのよ
うに使っているかをサーバが知ることができる。
ープンになっているか、およびそれらのオープンのモー
ド(読取専用または読取り/書込み)に関する情報を記
録する。ファイルがオープンになっている各ノードごと
に別々のファイル・アクセス構造がある。この状態情報
全便りと、各クライエントがサーバ・ファイルをどのよ
うに使っているかをサーバが知ることができる。
ファイル・システムは、その上で実行される1組の操作
をサポートする。次のようにファイル・システム操作を
実行することてより、プロセスがファイル・システムと
対話する。
をサポートする。次のようにファイル・システム操作を
実行することてより、プロセスがファイル・システムと
対話する。
1、 ユーザが(おそら()い(つかの入力パラメータ
を付けて操作の一つを呼び出す。
を付けて操作の一つを呼び出す。
2、 ファイル・システム論理が、ファイル・システム
の内部データ状態を変更し得る操作を実行する。
の内部データ状態を変更し得る操作を実行する。
6 ファイル・システム論理が、おそらくは若干の戻り
パラメータを戻して、呼出し側ユーザに戻る。
パラメータを戻して、呼出し側ユーザに戻る。
ファイル・システム上で実行できる操作は、゛vn操作
゛と呼ばれる。い(つかのvn操作があるが、この考察
で重要なものについて下記で説明する。
゛と呼ばれる。い(つかのvn操作があるが、この考察
で重要なものについて下記で説明する。
〔VN LOOKUP)
vnルックアップ操作では、ファイル・システム内のバ
スをたどる際の基本的反復ステップは、ディレクトリ内
でパス構成要素の名前を探し出し、関連するiノード番
号を便ってチェーン中の次のファイルを探し出すという
ものである。ローカル・ファイル上でのvnルックアッ
プ操作の擬似コードを下記に示す。
スをたどる際の基本的反復ステップは、ディレクトリ内
でパス構成要素の名前を探し出し、関連するiノード番
号を便ってチェーン中の次のファイルを探し出すという
ものである。ローカル・ファイル上でのvnルックアッ
プ操作の擬似コードを下記に示す。
LOOKUP機能
入カニディレクトリのVノード・ポインタ、ディレクト
リ中でルックアップすべき名前用カニ指定されたファイ
ル/ディレクトリを指すVノード・ポインタ ディレクトリのVノード・ポインタを1ノード・ポイン
タに変換する; 一−vノード中のポインタを使う ディレクトリの1ノードをロックする;IF(ディレク
トリ中で探索許可をもっていない) ディレクトリiノードをアンロックする;エラーを戻す
; ディレクトリで名前を探索する; ip(見つかった) 名前に対するファイル・・・ンドルを作成する; m−ディレクトリ・エントリ中で見つかった1ノードを
使う: ′ ファイル會ハンドルに対するVノードを指すポイン
タを得る; ディレクトリiノードをアンロックする;Vノードを指
すポインタを戻す; ELSE−=見つからなかった ディレクトリiノードをアンロックする;エラーを戻す
; (VN 0PFJN〕 vn open機能は、何のオーブンφモード(読取
/書込又は読取専用)がファイルをオープンしたかを記
録するためにファイル・アクセス構造を形成(又は既存
のものを修正)する。vn二open動作に関する擬似
コードを下記に示す。
リ中でルックアップすべき名前用カニ指定されたファイ
ル/ディレクトリを指すVノード・ポインタ ディレクトリのVノード・ポインタを1ノード・ポイン
タに変換する; 一−vノード中のポインタを使う ディレクトリの1ノードをロックする;IF(ディレク
トリ中で探索許可をもっていない) ディレクトリiノードをアンロックする;エラーを戻す
; ディレクトリで名前を探索する; ip(見つかった) 名前に対するファイル・・・ンドルを作成する; m−ディレクトリ・エントリ中で見つかった1ノードを
使う: ′ ファイル會ハンドルに対するVノードを指すポイン
タを得る; ディレクトリiノードをアンロックする;Vノードを指
すポインタを戻す; ELSE−=見つからなかった ディレクトリiノードをアンロックする;エラーを戻す
; (VN 0PFJN〕 vn open機能は、何のオーブンφモード(読取
/書込又は読取専用)がファイルをオープンしたかを記
録するためにファイル・アクセス構造を形成(又は既存
のものを修正)する。vn二open動作に関する擬似
コードを下記に示す。
vn open機能
入カニオープンすべきファイルに関するvnodeポイ
ンタ オープン・フラグ(例えば、読取専用、読取/書込) 形成・モードーー新たに形成する場合のファイル・モー
ド・ビ ット 出カニ成功又は失敗を示す戻りコード Vノードからファイルのiノードへのポインタを得る; iノードをロックする; IF(アクセス不許可) iノードをアンロックする; リターン(エラー); このクライエントに関するファイル・アクセス構造を得
る; −もしファイル・アクセス構造がなげれば1つ割り当て
る IF(ファイル・アクセス構造の割り当て不可能) iノードをアンロックする; リターン(エラー) ファイル・アクセス構造を読取専用、読取/書込、及び
テキスト・カウントに更新する;IF(打ち切りモード
がセットされている)ファイルを打ち切る; iノードをアンロックする; 〔LOOKUPPN〕 1ookuppn操作とは、バスをたどる機能である。
ンタ オープン・フラグ(例えば、読取専用、読取/書込) 形成・モードーー新たに形成する場合のファイル・モー
ド・ビ ット 出カニ成功又は失敗を示す戻りコード Vノードからファイルのiノードへのポインタを得る; iノードをロックする; IF(アクセス不許可) iノードをアンロックする; リターン(エラー); このクライエントに関するファイル・アクセス構造を得
る; −もしファイル・アクセス構造がなげれば1つ割り当て
る IF(ファイル・アクセス構造の割り当て不可能) iノードをアンロックする; リターン(エラー) ファイル・アクセス構造を読取専用、読取/書込、及び
テキスト・カウントに更新する;IF(打ち切りモード
がセットされている)ファイルを打ち切る; iノードをアンロックする; 〔LOOKUPPN〕 1ookuppn操作とは、バスをたどる機能である。
その入力はバス(たとえば/’dir 17’ dir
2/file”)であり、その戻りコードはそのファ
イルを表すVノードを指すポインタである。
2/file”)であり、その戻りコードはそのファ
イルを表すVノードを指すポインタである。
1ookuppnは1つのディレクトリを読み取るため
vn 1ookupを呼び出し、次にvn 1oo
kupから戻されたVノードが既にマウント・オーバー
されているかどうか検査する。Vノードがマウント・オ
ーバーされていない場合、1ookuppnは同じファ
イル・システム中のvn 1ookupを呼び出す。
vn 1ookupを呼び出し、次にvn 1oo
kupから戻されたVノードが既にマウント・オーバー
されているかどうか検査する。Vノードがマウント・オ
ーバーされていない場合、1ookuppnは同じファ
イル・システム中のvn 1ookupを呼び出す。
Vノードが既にマウント・オーバーされている場合は、
1ookuppnはマウント・オーツく−されたVノー
ド(たとえば第4図のブロック24)からマウントされ
たファイル番システムの仮想ファイル・システム(たと
えば第4図のブロック25)へとポインタをたどる。仮
想ファイル・システムから、ルートvノード(たとえば
第4図のブロック26)へとポインタをたどり、Vノー
ドが単純ファイルではなくディレクトリである場合は、
その仮想ファイル・システムのルートvノードとバス中
の次の要素を構成す仝名前を入力として与えて、新しい
vn 1ookupを発行する。
1ookuppnはマウント・オーツく−されたVノー
ド(たとえば第4図のブロック24)からマウントされ
たファイル番システムの仮想ファイル・システム(たと
えば第4図のブロック25)へとポインタをたどる。仮
想ファイル・システムから、ルートvノード(たとえば
第4図のブロック26)へとポインタをたどり、Vノー
ドが単純ファイルではなくディレクトリである場合は、
その仮想ファイル・システムのルートvノードとバス中
の次の要素を構成す仝名前を入力として与えて、新しい
vn 1ookupを発行する。
1ookuppn機能の擬似コードを下記に示す。
LOOKUPPN機能
入カニバス名
出カニ指定されたファイルに対するVノードを指すポイ
ンタ IF(バスの最初の文字が°/“) 探索すべき現Vノードはユーザのルート−ディレクトリ
のVノードである: LSE 探索すべき現Vノードはユーザの現ディレクトリのVノ
ードである; EPEAT IF(バスの次の要素が“0.パなら)WHILE(現
Vノードが仮想ファイル・システムのルートである限り
) 現Vノードは、仮想ファイル・システ ムがマウント・オーバーされたVノ ードとなる; IF(マウント舎オーバーされたVノ ードがない) (エラー)を戻す;−一”9.”が ファイル・システムのルートラ通 過した vn 1ookupを使って現Vノード中のバス構成
要素をルックアップする; IF(vn 1ookupが構成要素を見つけた);現
Vノードはvn 1ookupから戻されだVノード
になる; WHILE(現Vノードがマウント・オーバーされてい
る限り) マウントされた仮想ファイル°システ ムを表すvfs構造へ現Vノードのポ インタをたどる; 現Vノードはマウントされたvfsのル−) vノード
になる; E L S E −−vn 1ookupは7フイル
構成要素を見つけられなかった (エラー)を戻す;−一探索は失敗したUNTIL(追
加のバス構成要素がな(なるまで); (現Vノード)を戻す; あるファイルへのバスをたどりディレクトリをマウント
するというシナリオを用いて、その操作を説明すること
にする。まず、ファイルへのノくスをたどる際に、ある
アプリケーションΦプロセスがファイル″/u/dep
t 54/5tatus”に対するシステム・コール(
たとえばオープン)を発行するものと仮定する。この要
求は、第4図に関して下記のような形で、オペレーティ
ング働システムによって実行される(UNIXオペレー
ティング・システムと基本的に異ならない操作について
は、ここでは詳しくは説明しない)。次の仮定を設ける
。第一に、ブロック21で表される仮想ファイル・シス
テムがルート仮想ファイル・システムである。第二に、
ファイル″/U”はVノード・ブロック24とiノード
・ブロック31で表される。第三に、以前のマウント操
作で装置のファイル・システムがディレクトリ″/U”
にマウントされている。このマウントで、ブロック25
で表される仮想ファイル・システムが作成された。第四
に、関係するすべてのディレクトリとファイルが同じ装
置上である。第五に、指示されたディレクトリ内に次の
ディレクトリ項目が存在する。
ンタ IF(バスの最初の文字が°/“) 探索すべき現Vノードはユーザのルート−ディレクトリ
のVノードである: LSE 探索すべき現Vノードはユーザの現ディレクトリのVノ
ードである; EPEAT IF(バスの次の要素が“0.パなら)WHILE(現
Vノードが仮想ファイル・システムのルートである限り
) 現Vノードは、仮想ファイル・システ ムがマウント・オーバーされたVノ ードとなる; IF(マウント舎オーバーされたVノ ードがない) (エラー)を戻す;−一”9.”が ファイル・システムのルートラ通 過した vn 1ookupを使って現Vノード中のバス構成
要素をルックアップする; IF(vn 1ookupが構成要素を見つけた);現
Vノードはvn 1ookupから戻されだVノード
になる; WHILE(現Vノードがマウント・オーバーされてい
る限り) マウントされた仮想ファイル°システ ムを表すvfs構造へ現Vノードのポ インタをたどる; 現Vノードはマウントされたvfsのル−) vノード
になる; E L S E −−vn 1ookupは7フイル
構成要素を見つけられなかった (エラー)を戻す;−一探索は失敗したUNTIL(追
加のバス構成要素がな(なるまで); (現Vノード)を戻す; あるファイルへのバスをたどりディレクトリをマウント
するというシナリオを用いて、その操作を説明すること
にする。まず、ファイルへのノくスをたどる際に、ある
アプリケーションΦプロセスがファイル″/u/dep
t 54/5tatus”に対するシステム・コール(
たとえばオープン)を発行するものと仮定する。この要
求は、第4図に関して下記のような形で、オペレーティ
ング働システムによって実行される(UNIXオペレー
ティング・システムと基本的に異ならない操作について
は、ここでは詳しくは説明しない)。次の仮定を設ける
。第一に、ブロック21で表される仮想ファイル・シス
テムがルート仮想ファイル・システムである。第二に、
ファイル″/U”はVノード・ブロック24とiノード
・ブロック31で表される。第三に、以前のマウント操
作で装置のファイル・システムがディレクトリ″/U”
にマウントされている。このマウントで、ブロック25
で表される仮想ファイル・システムが作成された。第四
に、関係するすべてのディレクトリとファイルが同じ装
置上である。第五に、指示されたディレクトリ内に次の
ディレクトリ項目が存在する。
ディレクトリ
iノード番号 名前 iノード番号2
u” 15 45 ”dept 54” 7171
”5tatus” 12システム・コール
を実施するコードが、そのバスをたどるために1ook
uppnを呼び出す。
u” 15 45 ”dept 54” 7171
”5tatus” 12システム・コール
を実施するコードが、そのバスをたどるために1ook
uppnを呼び出す。
1ookuppnはルート仮想ファイル・システム(ブ
ロック21)のルートVノード(ブロック23)からス
タートし、このVノードで表されるディレクトリ・ファ
イル中で名前”U“′をルックアップするためにvn
1ookup f呼び出す。vn 1ookupはその
ディレクトリ中で、名前” u”がブロック31のiノ
ード15と関連していることを見つける。vn 1o
okupはiノード15と関連するVノードを指すポイ
ンタを戻さなければならない。そのために、まずiノー
ド15をiノードテーブルに入れる。次に、既にこのV
ノードの親仮想ファイル・システム内にVノードがある
(入力Vノード(ブロック23)が親仮想ファイル・シ
ステムを指すポインタを有する)かどうか検査する。こ
の場合は存在する。vn 1ookupは次に、ルート
仮想ファイルΦシステム(ブロック21)内でそのVノ
ード(ブロック24)を見つけ、Vノードを指すポイン
タを戻す。1ookuppnは、戻されたVノードが親
仮想ファイル・システム内でマウント・オーバーされて
いることを発見する。
ロック21)のルートVノード(ブロック23)からス
タートし、このVノードで表されるディレクトリ・ファ
イル中で名前”U“′をルックアップするためにvn
1ookup f呼び出す。vn 1ookupはその
ディレクトリ中で、名前” u”がブロック31のiノ
ード15と関連していることを見つける。vn 1o
okupはiノード15と関連するVノードを指すポイ
ンタを戻さなければならない。そのために、まずiノー
ド15をiノードテーブルに入れる。次に、既にこのV
ノードの親仮想ファイル・システム内にVノードがある
(入力Vノード(ブロック23)が親仮想ファイル・シ
ステムを指すポインタを有する)かどうか検査する。こ
の場合は存在する。vn 1ookupは次に、ルート
仮想ファイルΦシステム(ブロック21)内でそのVノ
ード(ブロック24)を見つけ、Vノードを指すポイン
タを戻す。1ookuppnは、戻されたVノードが親
仮想ファイル・システム内でマウント・オーバーされて
いることを発見する。
1ookuppnは、Vノード(ブロック24)からマ
ウントされた仮想ファイル・システム(ブロック25)
へと「マウント・オーバーされた」そのポインタをたど
る。1ookuppnは、新しい仮想ファイル・システ
ム(ブロック25)のルートvノード(ブロック26)
へと「ルートVノード」ポインタをたどる。次に1oo
kuppnは今度はルートvノード(ブロック26)を
指すポインタと名前”dept54”を入力して、再び
vn 1ookupを呼び出す。前回と同様に、vn
1ookupはディレクトリを読み取り、その名前と
関連しているiノードを見つけ、親仮想ファイル・シス
テム(ブロック25)内にこのiノードに対するVノー
ドを見つけまたは作成し、このVノードを指すポインタ
を戻す。1ookuppnは、発見つげたばかりのディ
レクトリのVノードと名前”5tatus”を入力して
、もう一度vn 1ookupを呼び出す。、n−1
ookupはディレクトリを読み取り、その名前に関連
する1ノード(ブロック34)を見つけ、親仮想ファイ
ル・システム(ブロック25)内でこのiノードに対す
るVノード(ブロック28)を見つけまたは作成し、こ
のVノードを指すポインタを戻す。システム・コールを
実施したコードは、次にファイル上で要求された操作を
実行する。
ウントされた仮想ファイル・システム(ブロック25)
へと「マウント・オーバーされた」そのポインタをたど
る。1ookuppnは、新しい仮想ファイル・システ
ム(ブロック25)のルートvノード(ブロック26)
へと「ルートVノード」ポインタをたどる。次に1oo
kuppnは今度はルートvノード(ブロック26)を
指すポインタと名前”dept54”を入力して、再び
vn 1ookupを呼び出す。前回と同様に、vn
1ookupはディレクトリを読み取り、その名前と
関連しているiノードを見つけ、親仮想ファイル・シス
テム(ブロック25)内にこのiノードに対するVノー
ドを見つけまたは作成し、このVノードを指すポインタ
を戻す。1ookuppnは、発見つげたばかりのディ
レクトリのVノードと名前”5tatus”を入力して
、もう一度vn 1ookupを呼び出す。、n−1
ookupはディレクトリを読み取り、その名前に関連
する1ノード(ブロック34)を見つけ、親仮想ファイ
ル・システム(ブロック25)内でこのiノードに対す
るVノード(ブロック28)を見つけまたは作成し、こ
のVノードを指すポインタを戻す。システム・コールを
実施したコードは、次にファイル上で要求された操作を
実行する。
次に、アプリケーションφプロセスが、ファイル /
u / g Or p ”をディレクトリ” / et
c / foo ”の上にマウントするため、「マウン
ト」システム・コールを発行するものと仮定する。下記
のシナリオで、この要求がオペレーティング・システム
によってどのように実行されるかを説明する(この場合
も、UNIXオペレーティング・システムと基本的に異
ならない操作は詳しくは説明しない)。
u / g Or p ”をディレクトリ” / et
c / foo ”の上にマウントするため、「マウン
ト」システム・コールを発行するものと仮定する。下記
のシナリオで、この要求がオペレーティング・システム
によってどのように実行されるかを説明する(この場合
も、UNIXオペレーティング・システムと基本的に異
ならない操作は詳しくは説明しない)。
このシナリオでは、第5図と第6図を参照する。
第5図は初期状態を表し、第6図は最終状態を表したも
のである。次の仮定を設ける。まず、ブロック41で表
される仮想ファイル・ブロックがルート仮想ファイル・
ブロックである。第2に、関係するディレクトリとファ
イルは、すべて同−装置上にある。第3に、下記のディ
レクトリ項目が指示したディレクトリ内にある。
のである。次の仮定を設ける。まず、ブロック41で表
される仮想ファイル・ブロックがルート仮想ファイル・
ブロックである。第2に、関係するディレクトリとファ
イルは、すべて同−装置上にある。第3に、下記のディ
レクトリ項目が指示したディレクトリ内にある。
ディレクトリ
iノード番号 名前 iノード番号2
”u” 152 ”etc”
83 ’15 ”gorp”
9283 ”foo″ 75
75 ”filel” 89マウント・
システム・コールを実施fるコ−)’は、次の操作を実
行する。マウント・オーバーされるファイル” / e
t c / f o o”へのパス;t−fトるため
、1ookuppnを呼び出す。この操作が完了したと
き、ルート仮想ファイル・システム(ブロック41)は
、”/etc/foo”に対するVノード(ブロック4
4)を含んでいる。このVノードは、ルート仮想ファイ
ル−システム(ブロック41)を指すポインタと、iノ
ード75に対するiノード争テーブル項目(ブロック4
5)を指すポインタを有する。マウントされるファイル
1/ u / g Q f p ” ヘのバスをたどる
ため、1ookuppnを呼び出す。この操作が完了し
たとき、ルート仮想ファイル拳システム(ブロック41
)は/U7gorp”に対するVノード(ブロック49
)を含んでいる。このVノードは、ルート仮想ファイル
・システム(ブロック41)’(i=指すポインタと、
iノード92に対するiノード番テーブル項目(ブロッ
ク48)を指すポインタを有する。ここでマウント論理
は、新しい仮想ファイル・システムを作成する。それに
は、まず新しい仮想ファイル−システム(ブロック46
)を作成し、次に遡って親仮想ファイル・システム(ブ
ロック46)を指すポインタと、ルートiノード(iノ
ード92、ブロック48)を指すポインタとを有する、
この仮想ファイル・システムに対するルートvノード(
ブロック47)を作成する。「マウント・オーバーされ
る」ポインタが、ルート仮想ファイル・システム(ブロ
ック41)内のカバーされるVノード(ブロック44)
に挿入され、マウント・オーバーされるVノード(ブロ
ック44)を指すポインクが新しい仮想ファイル・シス
テムに挿入される。
”u” 152 ”etc”
83 ’15 ”gorp”
9283 ”foo″ 75
75 ”filel” 89マウント・
システム・コールを実施fるコ−)’は、次の操作を実
行する。マウント・オーバーされるファイル” / e
t c / f o o”へのパス;t−fトるため
、1ookuppnを呼び出す。この操作が完了したと
き、ルート仮想ファイル・システム(ブロック41)は
、”/etc/foo”に対するVノード(ブロック4
4)を含んでいる。このVノードは、ルート仮想ファイ
ル−システム(ブロック41)を指すポインタと、iノ
ード75に対するiノード争テーブル項目(ブロック4
5)を指すポインタを有する。マウントされるファイル
1/ u / g Q f p ” ヘのバスをたどる
ため、1ookuppnを呼び出す。この操作が完了し
たとき、ルート仮想ファイル拳システム(ブロック41
)は/U7gorp”に対するVノード(ブロック49
)を含んでいる。このVノードは、ルート仮想ファイル
・システム(ブロック41)’(i=指すポインタと、
iノード92に対するiノード番テーブル項目(ブロッ
ク48)を指すポインタを有する。ここでマウント論理
は、新しい仮想ファイル・システムを作成する。それに
は、まず新しい仮想ファイル−システム(ブロック46
)を作成し、次に遡って親仮想ファイル・システム(ブ
ロック46)を指すポインタと、ルートiノード(iノ
ード92、ブロック48)を指すポインタとを有する、
この仮想ファイル・システムに対するルートvノード(
ブロック47)を作成する。「マウント・オーバーされ
る」ポインタが、ルート仮想ファイル・システム(ブロ
ック41)内のカバーされるVノード(ブロック44)
に挿入され、マウント・オーバーされるVノード(ブロ
ック44)を指すポインクが新しい仮想ファイル・シス
テムに挿入される。
以上、スタンドアロン操作用のデータ構造について説明
した。次に第7図には、本発明をサポートするオペレー
ティング・システムを実施した第1図のものと同様の分
散システムが示されている。
した。次に第7図には、本発明をサポートするオペレー
ティング・システムを実施した第1図のものと同様の分
散システムが示されている。
以下の説明では、ファイルが永久的に記憶されているノ
ードを指すのに「サーバ」という言葉を使い、そのファ
イルにアクセスするプロセスを有する他の任意のノード
を指すのに「クライエント」の語を使うことにする。た
だし、「サーバ」の語は、一部のローカル・エリア嗜ネ
ットワークφシステムで使われているような専用サーバ
を意味しないことを了解されたい。本発明をその中で実
施する分散サービス・システムは、システム内の様々な
ノードで走行しシステム内のどこにあるファイルにでも
アクセスする、広範なアプリケーションをサポートする
、真の分散システムである。
ードを指すのに「サーバ」という言葉を使い、そのファ
イルにアクセスするプロセスを有する他の任意のノード
を指すのに「クライエント」の語を使うことにする。た
だし、「サーバ」の語は、一部のローカル・エリア嗜ネ
ットワークφシステムで使われているような専用サーバ
を意味しないことを了解されたい。本発明をその中で実
施する分散サービス・システムは、システム内の様々な
ノードで走行しシステム内のどこにあるファイルにでも
アクセスする、広範なアプリケーションをサポートする
、真の分散システムである。
第7図に示した分散システム用のデータ構造を第8図に
示し、そのデータ構造の構成部分を第9A図ないし第9
F図に示す。第8図を参照すると、クライエント・ノー
ドは、遠隔サーバ・ノード内にあるファイルにアクセス
することができる。こうしたクライエントは、サーバの
1つのファイルをマウントすることによりサーバのファ
イルに対するアクセス権を得る。そのクライエント・ノ
ードでは、遠隔マウント操作によって作成されるデータ
構造が、ローカル・エンティティをマウントすることに
よって作成されるデータ構造と同等である。ローカルの
場合と同じ(、遠隔マウント操作で、クライエント・ノ
ード中に仮想ファイル・システム(vfs、たとえばブ
ロック54)が作成される。ローカルの場合と同じく、
遠隔ファイルを含む仮想ファイル・システム中のファイ
ルを使用すると、クライエント・ノード中にVノード構
造(たとえばブロック57)が作成される。ローカルの
場合と同じく、このVノード構造はiノード・テーブル
項目(たとえばブロック63)を指すポインタを有する
。ただし、このiノード・テーブル項目は、遠隔ファイ
ルからのiノード情報を含まず、その代りに代理iノー
ドを含む。この代理iノードは、遠隔iノードの代理で
ある。
示し、そのデータ構造の構成部分を第9A図ないし第9
F図に示す。第8図を参照すると、クライエント・ノー
ドは、遠隔サーバ・ノード内にあるファイルにアクセス
することができる。こうしたクライエントは、サーバの
1つのファイルをマウントすることによりサーバのファ
イルに対するアクセス権を得る。そのクライエント・ノ
ードでは、遠隔マウント操作によって作成されるデータ
構造が、ローカル・エンティティをマウントすることに
よって作成されるデータ構造と同等である。ローカルの
場合と同じ(、遠隔マウント操作で、クライエント・ノ
ード中に仮想ファイル・システム(vfs、たとえばブ
ロック54)が作成される。ローカルの場合と同じく、
遠隔ファイルを含む仮想ファイル・システム中のファイ
ルを使用すると、クライエント・ノード中にVノード構
造(たとえばブロック57)が作成される。ローカルの
場合と同じく、このVノード構造はiノード・テーブル
項目(たとえばブロック63)を指すポインタを有する
。ただし、このiノード・テーブル項目は、遠隔ファイ
ルからのiノード情報を含まず、その代りに代理iノー
ドを含む。この代理iノードは、遠隔iノードの代理で
ある。
サーバ・ノードでは、遠隔ノードがサーバのファイルを
どのように使用しているかに関する状態情報をサーバが
記録できるように、ある種のデータ構造が構築される。
どのように使用しているかに関する状態情報をサーバが
記録できるように、ある種のデータ構造が構築される。
もつと具体的に言うと、各サーバは、遠隔クライエント
によってオープンになっているファイルを保持するため
の仮想ファイル・システムとして「ダミー仮想ファイル
・システム」(たとえばブロック71)を有する。ダミ
ー仮想ファイル・システムは、サーバのファイル・ツリ
ーの一部ではない。遠隔ノードによってオープンになっ
ている各ファイルに対して、サーバのダミー仮想ファイ
ル・システム中にVノード(たとえばブロック74)が
ある。遠隔ノードによってオープンになっている各ファ
イルは、サーバのiノード・テーブル中にiノード・テ
ーブル項目(たとえば)゛ロック85)を有する。この
iノード・テーブル項目は、サーバにあるローカル・プ
ロセスがファイルをオープンしたために存在するテーブ
ル項目と同じである。たとえば、遠隔オープンの故にテ
ーブル中に存在するブロック84は、サーバでの操作の
故にテーブル中に存在するブロック88と同じ構造であ
る。
によってオープンになっているファイルを保持するため
の仮想ファイル・システムとして「ダミー仮想ファイル
・システム」(たとえばブロック71)を有する。ダミ
ー仮想ファイル・システムは、サーバのファイル・ツリ
ーの一部ではない。遠隔ノードによってオープンになっ
ている各ファイルに対して、サーバのダミー仮想ファイ
ル・システム中にVノード(たとえばブロック74)が
ある。遠隔ノードによってオープンになっている各ファ
イルは、サーバのiノード・テーブル中にiノード・テ
ーブル項目(たとえば)゛ロック85)を有する。この
iノード・テーブル項目は、サーバにあるローカル・プ
ロセスがファイルをオープンしたために存在するテーブ
ル項目と同じである。たとえば、遠隔オープンの故にテ
ーブル中に存在するブロック84は、サーバでの操作の
故にテーブル中に存在するブロック88と同じ構造であ
る。
あるクライエントとサーバがあるサーバ・ファイルに関
して通信するとき、ファイルを識別する方法が必要とな
る。これは、ファイル・ハンドルによってもたらされる
。クライエントの要求が出て、サーバが特定ファイルの
指定を伴って回答する(たとえば遠隔ルックアップ要求
)とき、そのファイルはファイル・ハンドルで識別され
る。クライエントの要求が特定ファイルの指定を含む(
たとえば遠隔オープン要求)とき、そのファイルはファ
イル・ハンドルで識別される。ファイル・ハンドルは、
装置番号、iノード番号、iノード世代番号の各フィー
ルドを含んでいる。
して通信するとき、ファイルを識別する方法が必要とな
る。これは、ファイル・ハンドルによってもたらされる
。クライエントの要求が出て、サーバが特定ファイルの
指定を伴って回答する(たとえば遠隔ルックアップ要求
)とき、そのファイルはファイル・ハンドルで識別され
る。クライエントの要求が特定ファイルの指定を含む(
たとえば遠隔オープン要求)とき、そのファイルはファ
イル・ハンドルで識別される。ファイル・ハンドルは、
装置番号、iノード番号、iノード世代番号の各フィー
ルドを含んでいる。
ファイル・ハンドルの必要性は、次のシナリオかられか
る。次のように仮定する。クライエントがサーバに要求
を出して、回答中でファイル・ハンドルを受は取る。ク
ライエントは、そのファイル・ハンドルを記憶し覚える
。サーバでの何らかの活動によってそのファイルが削除
され、iノード・スロットが別のファイル用に再使用さ
れる。
る。次のように仮定する。クライエントがサーバに要求
を出して、回答中でファイル・ハンドルを受は取る。ク
ライエントは、そのファイル・ハンドルを記憶し覚える
。サーバでの何らかの活動によってそのファイルが削除
され、iノード・スロットが別のファイル用に再使用さ
れる。
り゛ライエンドが記憶しているファイル・ノ\ンドルを
使ってサーバに要求を出す。サーバはファイル・ハンド
ルを受は取り、新しいファイルで操作を実行する。そう
なると、その操作は許容できないものとなるはずである
。
使ってサーバに要求を出す。サーバはファイル・ハンド
ルを受は取り、新しいファイルで操作を実行する。そう
なると、その操作は許容できないものとなるはずである
。
この欠点は、iノード世代番号を使うことによって防止
される。iノード世代番号は、iノード中のフィールド
としてディスク上に記憶される。
される。iノード世代番号は、iノード中のフィールド
としてディスク上に記憶される。
サーバがあるファイルを削除するとき、そのiノード世
代番号を増分する。要求がサーバに届いたとき、ファイ
ル・ハンドルは分離され、装置番号とiノード番号が1
ノードを探し出すのに使われ、その後ファイル・ハンド
ルのiノード世代番号がiノードのiノード世代番号と
比較される。両者が異なる場合、その要求は拒否される
。
代番号を増分する。要求がサーバに届いたとき、ファイ
ル・ハンドルは分離され、装置番号とiノード番号が1
ノードを探し出すのに使われ、その後ファイル・ハンド
ルのiノード世代番号がiノードのiノード世代番号と
比較される。両者が異なる場合、その要求は拒否される
。
クライエントが遠隔サーバ上にあるファイルをオープン
したいとき、ネットワーク移送機構を使つてサーバとの
接続を確立する。このファイルに関する以後のトランザ
クション(たとえば、読取り、書込みなど)は、この接
続上を流れる。各ノードはノード・テーブルを含んでい
る。ノードはそのノード・テーブル内の項目(たとえば
ブロック70)を用いて、遠隔ノードに対する既存の接
続に関する情報を記録する。
したいとき、ネットワーク移送機構を使つてサーバとの
接続を確立する。このファイルに関する以後のトランザ
クション(たとえば、読取り、書込みなど)は、この接
続上を流れる。各ノードはノード・テーブルを含んでい
る。ノードはそのノード・テーブル内の項目(たとえば
ブロック70)を用いて、遠隔ノードに対する既存の接
続に関する情報を記録する。
ネットワーク内の1つのノードが別のノードに自分のた
めに実行を要求できる操作が少数ある。
めに実行を要求できる操作が少数ある。
こうした操作は、dfs操作と呼ばれる。あるノードが
別のノードに要求を出すとき、次の操作が行なわれる。
別のノードに要求を出すとき、次の操作が行なわれる。
まず、要求側ノードは、とのdfs、操作を要求してい
るか指定し、その要求に適したパラメータを運ぶメツセ
ージを送る。次に受取側ノードは要求を受は取って指定
された操作を実行する。
るか指定し、その要求に適したパラメータを運ぶメツセ
ージを送る。次に受取側ノードは要求を受は取って指定
された操作を実行する。
最後に、受取側ノードは、そのdfs操作に適した回答
パラメータを運ぶメツセージを送る。
パラメータを運ぶメツセージを送る。
ローカル−ノード内でファイル−システムに対して発行
されるvn操作と、ネットワークを介して発行されるd
fs操作の間には、緊密な関係がある。遠隔ファイルに
対する典型的な操作は次の通りである。まず、ローカル
・カーネルが、操作中のファイルが遠隔かそれともロー
カルか知らずに、vn操作を発行する。第二に、そのフ
ァイルが遠隔ノードにあるので、ファイル・システム争
インプリメンテーション・コードが対応するdfs操作
を、そのファイルを保持するノードに送る。そのファイ
ルがローカル・ファイルであった場合、操作が実行され
、戻りパラメータが戻され、タスクが完了しているはず
であることに留意されたい。
されるvn操作と、ネットワークを介して発行されるd
fs操作の間には、緊密な関係がある。遠隔ファイルに
対する典型的な操作は次の通りである。まず、ローカル
・カーネルが、操作中のファイルが遠隔かそれともロー
カルか知らずに、vn操作を発行する。第二に、そのフ
ァイルが遠隔ノードにあるので、ファイル・システム争
インプリメンテーション・コードが対応するdfs操作
を、そのファイルを保持するノードに送る。そのファイ
ルがローカル・ファイルであった場合、操作が実行され
、戻りパラメータが戻され、タスクが完了しているはず
であることに留意されたい。
第三に、そのファイルを保持するノードがそのdfs操
作要求を受は取り、そのローカル・ファイル・システム
に対応するvn操作の実行を要求する。
作要求を受は取り、そのローカル・ファイル・システム
に対応するvn操作の実行を要求する。
このvn操作からの戻りパラメータを使って、そのdf
s操作に対する戻りパラメータが構築される。
s操作に対する戻りパラメータが構築される。
第四に、要求側ノードがサーバ・ノードからdfa操作
回答を受は取り、dfs操作戻りパラメータを使って、
元のvn操作要求に対する戻りパラメータを構築する。
回答を受は取り、dfs操作戻りパラメータを使って、
元のvn操作要求に対する戻りパラメータを構築する。
ローカル・ファイルの上に遠隔ファイルをマウントし、
ファイルへのパスをたどるというシナリオを用いて、こ
の操作を説明することにする。第一のシナリオでは、ク
ライエント・ノード内のアフリケーション・プロセスが
、ローカル・クライエント−ファイル″/ e t c
/ f o o”の上にサーバ・ノードのファイル″
/u/gorp ” kマウントするため、「マウント
」システム・コールヲ発行するものとする。この要求が
どのよって実行されるかは、次のシナリオかられかる。
ファイルへのパスをたどるというシナリオを用いて、こ
の操作を説明することにする。第一のシナリオでは、ク
ライエント・ノード内のアフリケーション・プロセスが
、ローカル・クライエント−ファイル″/ e t c
/ f o o”の上にサーバ・ノードのファイル″
/u/gorp ” kマウントするため、「マウント
」システム・コールヲ発行するものとする。この要求が
どのよって実行されるかは、次のシナリオかられかる。
このシナリオでは第10図および第11図を参照する。
第10図は初期状態を表し、第11図は最終状態を表す
。ブロック71で表される仮想ファイル・システム(v
fs)がサーバのファイル・ツリーのルート仮想ファイ
ル・システムであり、関係するサーバのディレクトリお
よびファイルはすべて同一装置上にある。指示されたデ
ィレクトリ中には次の項目が存在する。
。ブロック71で表される仮想ファイル・システム(v
fs)がサーバのファイル・ツリーのルート仮想ファイ
ル・システムであり、関係するサーバのディレクトリお
よびファイルはすべて同一装置上にある。指示されたデ
ィレクトリ中には次の項目が存在する。
サーバーノード
ディレクトリ
iノード番号 名前 iノード番号2
” ull 1515 garp
” 92 92 ”file2” 67クライエ
ント・ノード ディレクトリ iノード番号 名前 iノード番号2
°’etc” 86 83 、 ”foo” 75マウント・シ
ステム−コールを実施するコードが、マウント・オーバ
ーされるファイル″/ e tc/ f o o”への
パスをたどるためにIookuppnを呼び出す。この
操作が完了したとき、ルート仮想ファイル・システム(
ブロック51)は、etc/foo″に対するVノード
(ブロック56)を含んでいる。このVノードは、ルー
ト仮想ファイル・システム(ブロック51)を指すポイ
ンタと、iノード75に対するiノード・テーブル項目
(ブロック61)を指すポインタを有する。マウントさ
れるファイルは遠隔ノードにあるため、dfsマウント
要求が、マウントされる目的物へのパスとしてパス”/
u / g o r p”とともにサーバ・ノードに
発行される。dfsマウント要求を受は取ると、サーバ
・ノードは、マウントされるファイル″/u/gorp
”へのパスをたどるため、1ookuppnを呼び出す
。このルックアップ操作が完了したとき、サーバのルー
ト仮想ファイル・システム(ブロック71)は/u7g
orp”に対するVノードを含んでいる。このVノード
は、ルート仮想ファイル・システムを指すポインタと、
iノード92に対するiノード・テーブル項目を指すポ
インタを有する。サーバはiノード中の情報(装置01
1ノード92)を用いて、ファイル”/u/gorp”
に対するファイル・ノ・ンドルを構築する。サーバはd
fsマウント要求に対する回答中でこのファイル・ハン
ドルを戻し、次にVノードとiノードを解放する。最後
に、クライエントはdfsマウント要求に対する回答中
でこのファイルのハンドルを受は取り、次のような新し
い仮想ファイル・システムを作成するのに必要な操作を
実行する。
” ull 1515 garp
” 92 92 ”file2” 67クライエ
ント・ノード ディレクトリ iノード番号 名前 iノード番号2
°’etc” 86 83 、 ”foo” 75マウント・シ
ステム−コールを実施するコードが、マウント・オーバ
ーされるファイル″/ e tc/ f o o”への
パスをたどるためにIookuppnを呼び出す。この
操作が完了したとき、ルート仮想ファイル・システム(
ブロック51)は、etc/foo″に対するVノード
(ブロック56)を含んでいる。このVノードは、ルー
ト仮想ファイル・システム(ブロック51)を指すポイ
ンタと、iノード75に対するiノード・テーブル項目
(ブロック61)を指すポインタを有する。マウントさ
れるファイルは遠隔ノードにあるため、dfsマウント
要求が、マウントされる目的物へのパスとしてパス”/
u / g o r p”とともにサーバ・ノードに
発行される。dfsマウント要求を受は取ると、サーバ
・ノードは、マウントされるファイル″/u/gorp
”へのパスをたどるため、1ookuppnを呼び出す
。このルックアップ操作が完了したとき、サーバのルー
ト仮想ファイル・システム(ブロック71)は/u7g
orp”に対するVノードを含んでいる。このVノード
は、ルート仮想ファイル・システムを指すポインタと、
iノード92に対するiノード・テーブル項目を指すポ
インタを有する。サーバはiノード中の情報(装置01
1ノード92)を用いて、ファイル”/u/gorp”
に対するファイル・ノ・ンドルを構築する。サーバはd
fsマウント要求に対する回答中でこのファイル・ハン
ドルを戻し、次にVノードとiノードを解放する。最後
に、クライエントはdfsマウント要求に対する回答中
でこのファイルのハンドルを受は取り、次のような新し
い仮想ファイル・システムを作成するのに必要な操作を
実行する。
a)新しい仮想ファイル・システム(ブロック54)を
作成する。
作成する。
b)遡っテ親仮想ファイル・システム(ブロック54)
を指すポインタとルートiノード(ブロック62)を指
すポインタとを有する、この仮想ファイル・システムに
対するルートvノード(ブロック55)を作成する。こ
の仮想ファイル・システムのルートiノードは遠隔ファ
イルであるため、ルートVノードから指されるiノード
は代理iノードである。この代理iノードは、クライエ
ントのdfsマウント要求に対してサーバが戻したファ
イル・ハンドルを含んでいる。
を指すポインタとルートiノード(ブロック62)を指
すポインタとを有する、この仮想ファイル・システムに
対するルートvノード(ブロック55)を作成する。こ
の仮想ファイル・システムのルートiノードは遠隔ファ
イルであるため、ルートVノードから指されるiノード
は代理iノードである。この代理iノードは、クライエ
ントのdfsマウント要求に対してサーバが戻したファ
イル・ハンドルを含んでいる。
C)「マウント・オーバー」ポインタを、ルート仮想フ
ァイル・システム(ブロック51)内のカバーされたV
ノード(ブロック53)に挿入する。
ァイル・システム(ブロック51)内のカバーされたV
ノード(ブロック53)に挿入する。
d) マウント・オーバーされるVノード(ブロック
53)を指すポインタを新しい仮想ファイル・システム
(ブロック54)に挿入する。
53)を指すポインタを新しい仮想ファイル・システム
(ブロック54)に挿入する。
次に、上記の遠隔マウント(クライエントの/e t
e / f Q Oの上にサーバの/ u / g o
r p kマウントする)を実行した後、クライエン
ト健プロセスが、ファイル″/ e t c / f
o o / f i l e 2″に対して操作するた
めのシステム・コールを発行すると仮定する。下記のシ
ナリオのブロック番号については第11図および第12
図を参照されたい。第11図は初期状態を表し、第12
図はオーブン操作後のシステム状態を表す。まず、シス
テム・コールを実施するコードが、パスをたどるために
1ookuppnを呼び出す。1ookuppnは、ル
ート仮想ファイル・システム(ブロック51)のルート
Vノード(ブロック52)からスタートし、このVノー
ドで表されるディレクトリ・ファイル中で名前”U”を
ルックアップするためにvl−1ookupを呼び出す
。vn 1ookup はそのディレクトリ中で、名
前″U”が1ノード15と関連していることを見つける
。vn 1ookupは、iノード15に対するルー
ト仮想ファイル・システム中にVノードとiノードを構
築し、このVノードに対するポインタを1ookupp
nに戻す。
e / f Q Oの上にサーバの/ u / g o
r p kマウントする)を実行した後、クライエン
ト健プロセスが、ファイル″/ e t c / f
o o / f i l e 2″に対して操作するた
めのシステム・コールを発行すると仮定する。下記のシ
ナリオのブロック番号については第11図および第12
図を参照されたい。第11図は初期状態を表し、第12
図はオーブン操作後のシステム状態を表す。まず、シス
テム・コールを実施するコードが、パスをたどるために
1ookuppnを呼び出す。1ookuppnは、ル
ート仮想ファイル・システム(ブロック51)のルート
Vノード(ブロック52)からスタートし、このVノー
ドで表されるディレクトリ・ファイル中で名前”U”を
ルックアップするためにvl−1ookupを呼び出す
。vn 1ookup はそのディレクトリ中で、名
前″U”が1ノード15と関連していることを見つける
。vn 1ookupは、iノード15に対するルー
ト仮想ファイル・システム中にVノードとiノードを構
築し、このVノードに対するポインタを1ookupp
nに戻す。
1ookuppnは、今度はiノード15によって識別
されるディレクトリ中で名前”foo”をルックアップ
するために、再度vn 1ookupを呼び出す。
されるディレクトリ中で名前”foo”をルックアップ
するために、再度vn 1ookupを呼び出す。
vn 1ookupは指示されたディレクトリを読取
り、名前″foo″がブロック61中のiノード75と
関連していることを発見する。ルート仮想ファイル・シ
ステム(ブロック51)中には既にこのiノード(ブロ
ック61)に対するVノード(ブロック55)が存在し
、したがってvn 1ookupはこのVノードを指
すポインタを戻す。1ookuppnは、そのVノード
がマウント・オーバーされていることを発見する(ブロ
ック56中の「マウント・オーバー」ポインタはブロッ
ク54を指している)。したがって、1ookuppn
は次の仮想ファイル・システム(ブロック54)へト「
マウント・オーバー」ポインタをたどり、その仮想ファ
イル・システムのルートvノード(ブロック55)へと
そのルートvノード・ポインタをたどる。次に1ook
uppnはバスの次の要素(”file2”)を探すた
めにvn、、1ookupを呼び出し、ブロック55を
指すポインタと名前″file2”をvH−1ooku
pに与える。探索すべきディレクトリは遠隔ノードにあ
り、クライエントの代理iノード(ブロック62)に記
憶されているファイル・ハンドルによって識別される。
り、名前″foo″がブロック61中のiノード75と
関連していることを発見する。ルート仮想ファイル・シ
ステム(ブロック51)中には既にこのiノード(ブロ
ック61)に対するVノード(ブロック55)が存在し
、したがってvn 1ookupはこのVノードを指
すポインタを戻す。1ookuppnは、そのVノード
がマウント・オーバーされていることを発見する(ブロ
ック56中の「マウント・オーバー」ポインタはブロッ
ク54を指している)。したがって、1ookuppn
は次の仮想ファイル・システム(ブロック54)へト「
マウント・オーバー」ポインタをたどり、その仮想ファ
イル・システムのルートvノード(ブロック55)へと
そのルートvノード・ポインタをたどる。次に1ook
uppnはバスの次の要素(”file2”)を探すた
めにvn、、1ookupを呼び出し、ブロック55を
指すポインタと名前″file2”をvH−1ooku
pに与える。探索すべきディレクトリは遠隔ノードにあ
り、クライエントの代理iノード(ブロック62)に記
憶されているファイル・ハンドルによって識別される。
vn 1ookupはそのファイルを保持するサーバに
dfs−1ookupを発行し、そのディレクトリを識
別するファイル・ハンドルとルックアップすべき名前(
”file2”)を送る。サーバがdf s −1oo
kupを受は取ると、ファイル・ハンドルを使って読み
取るべきディレクトリを識別し、このディレクトリ中で
名前゛。
dfs−1ookupを発行し、そのディレクトリを識
別するファイル・ハンドルとルックアップすべき名前(
”file2”)を送る。サーバがdf s −1oo
kupを受は取ると、ファイル・ハンドルを使って読み
取るべきディレクトリを識別し、このディレクトリ中で
名前゛。
file2”を探索するためにvn 1ookupを発
行する。vn二1ookupはディレクトリを読み取り
、名前” file 2”に関連するiノード番号が6
7であることを発見する。vn 1ookupはiノー
ド67に対するダミー仮想ファイル・システム中でVノ
ードとiノードを構築し、このVノードを指すポインタ
を1ookuppnに戻す。dfa−1ookupはv
n 1ookupから戻されたデータ構造中の情報を用
いて、iノード67によって識別されるファイルに対す
るファイル・ノ・ンドルを構築する。dfs−1ook
upは、dfs−1ookup要求に対する回答として
このファイル・ノ・ンドルをクライエントに戻し、■ノ
ードとiノードを解放する。クライエント中で、見つか
ったファイルに対するVノード(ブロック57)と代理
iノード(ブロック63)が作成される。” file
2”はこのパスの最後の要素なので、1ookupp
nは見つかったVノード(ブロック57)を指すポイン
タをその呼出し側に戻す。システム・コールを実施する
コードは、次にそのファイルに対して要求された操作を
実行する。
行する。vn二1ookupはディレクトリを読み取り
、名前” file 2”に関連するiノード番号が6
7であることを発見する。vn 1ookupはiノー
ド67に対するダミー仮想ファイル・システム中でVノ
ードとiノードを構築し、このVノードを指すポインタ
を1ookuppnに戻す。dfa−1ookupはv
n 1ookupから戻されたデータ構造中の情報を用
いて、iノード67によって識別されるファイルに対す
るファイル・ノ・ンドルを構築する。dfs−1ook
upは、dfs−1ookup要求に対する回答として
このファイル・ノ・ンドルをクライエントに戻し、■ノ
ードとiノードを解放する。クライエント中で、見つか
ったファイルに対するVノード(ブロック57)と代理
iノード(ブロック63)が作成される。” file
2”はこのパスの最後の要素なので、1ookupp
nは見つかったVノード(ブロック57)を指すポイン
タをその呼出し側に戻す。システム・コールを実施する
コードは、次にそのファイルに対して要求された操作を
実行する。
E−2,ファイルの同期モード
本発明が実施された分散サービス・システムでは、第7
図に示すように、各ノードA、ESCにそれぞれローカ
ル・キャッシュ12A、12B。
図に示すように、各ノードA、ESCにそれぞれローカ
ル・キャッシュ12A、12B。
12Cが存在する。ファイル5がノードAのディスク2
A上に永久的に存在する場合、ノードAをサーバと呼ぶ
。サーバAでは、サーバ・ノードAで実行されるローカ
ルプロセス13Aによるキャッシュ12Aの使い方は、
上記の従来技術の例で述べたスタンドアロン・システム
の場合と同様である。しかし、ノードB、Cで実行され
る遠隔プロセス13B、13Cは第13図に示すように
、サーバ・キャッシュとクライエント・キャッシュを使
って、2段キャッシング方式によりファイル5にアクセ
スする。サーバ・ノードAは、ディスク2Aからファイ
ル−ブロック5を入手し、それをサーバ・キャッシュ1
2Aに記憶する。クライエント・ノードBは、ネットワ
ーク3を介してサーバ・キャッシュ12Aからファイル
・ブロック5を入手する。クライエント・ノードBは、
サーバ・キャッシュ12A内にあったファイル・ブロッ
ク5をクライエント・キャッシュ12Bに記憶する。ク
ライエントφノードBのユーザ・アドレス・スペース1
4Bがファイル5からのデータをシークするとき、各ア
クセスごとにネットワーク3を介してアクセスする代り
にクライエント・キャッシュ12Bにアクセスする。ク
ライエント・キャッシュ12Bを使って遠隔ファイル5
にアクセスすると、ネットワークのトラフィック及びオ
ーバーヘッドが節減できるので、パフォーマンスが著し
く改善できる。
A上に永久的に存在する場合、ノードAをサーバと呼ぶ
。サーバAでは、サーバ・ノードAで実行されるローカ
ルプロセス13Aによるキャッシュ12Aの使い方は、
上記の従来技術の例で述べたスタンドアロン・システム
の場合と同様である。しかし、ノードB、Cで実行され
る遠隔プロセス13B、13Cは第13図に示すように
、サーバ・キャッシュとクライエント・キャッシュを使
って、2段キャッシング方式によりファイル5にアクセ
スする。サーバ・ノードAは、ディスク2Aからファイ
ル−ブロック5を入手し、それをサーバ・キャッシュ1
2Aに記憶する。クライエント・ノードBは、ネットワ
ーク3を介してサーバ・キャッシュ12Aからファイル
・ブロック5を入手する。クライエント・ノードBは、
サーバ・キャッシュ12A内にあったファイル・ブロッ
ク5をクライエント・キャッシュ12Bに記憶する。ク
ライエントφノードBのユーザ・アドレス・スペース1
4Bがファイル5からのデータをシークするとき、各ア
クセスごとにネットワーク3を介してアクセスする代り
にクライエント・キャッシュ12Bにアクセスする。ク
ライエント・キャッシュ12Bを使って遠隔ファイル5
にアクセスすると、ネットワークのトラフィック及びオ
ーバーヘッドが節減できるので、パフォーマンスが著し
く改善できる。
アプリケーション・プログラム・レベルでのファイル・
アクセス・セマンティックスを保存しながら高パフォー
マンスを達成するように、分散環境でクライエント−キ
ャッシュ12B、!:サーバ・キャッシュ12Aの使用
が管理され′る。こうすることにより、スタンドアロン
・システムで走行する既存のプログラムを、修正なしに
分散システムで走行させることができる。ファイル−ア
クセス・セマンティックスは、別のプロセスがファイル
をオープンして、読取りおよび書込みシステム・コール
を発行してファイルにアクセスし、それを修正するとき
、ファイルの整合性を保つ。このファイル・アクセス・
セマンティックスの要件は、どの時間のどのバイト範囲
でも1つの入出力操作だけしか許されず、一度ある入出
力操作が始まると、同じファイルのバイト範囲に対する
別の入出力操作がその入出力操作を強制排除できないこ
とである。
アクセス・セマンティックスを保存しながら高パフォー
マンスを達成するように、分散環境でクライエント−キ
ャッシュ12B、!:サーバ・キャッシュ12Aの使用
が管理され′る。こうすることにより、スタンドアロン
・システムで走行する既存のプログラムを、修正なしに
分散システムで走行させることができる。ファイル−ア
クセス・セマンティックスは、別のプロセスがファイル
をオープンして、読取りおよび書込みシステム・コール
を発行してファイルにアクセスし、それを修正するとき
、ファイルの整合性を保つ。このファイル・アクセス・
セマンティックスの要件は、どの時間のどのバイト範囲
でも1つの入出力操作だけしか許されず、一度ある入出
力操作が始まると、同じファイルのバイト範囲に対する
別の入出力操作がその入出力操作を強制排除できないこ
とである。
再度第16図を参照して、その−例を示す。プロセス1
61がファイル5内のバイト範囲N1−N2に対して書
込みシステム・コールを発行した場合、バイト範囲N
1−N 2全体にプロセス151がアクセスでき、かつ
バイト範囲N1−N2に関する読取り操作が実行されて
いないときだけ、書込みシステム・コールを実行できる
。書込みシステム・コールの実行中、ファイル5のバイ
ト範囲N1−N2に関する他のすべての操作は、その書
込みが完了するまで中断される。ローカル・キャッシュ
12Aにバイトが書き込まれて始めて、書込みが完了す
る。書込み要求が完了すると、キャッシュ12Aに書き
込まれたデータは、他のプロセス131−13Nのいず
れかによる次の読取り操作で見えるようになる。
61がファイル5内のバイト範囲N1−N2に対して書
込みシステム・コールを発行した場合、バイト範囲N
1−N 2全体にプロセス151がアクセスでき、かつ
バイト範囲N1−N2に関する読取り操作が実行されて
いないときだけ、書込みシステム・コールを実行できる
。書込みシステム・コールの実行中、ファイル5のバイ
ト範囲N1−N2に関する他のすべての操作は、その書
込みが完了するまで中断される。ローカル・キャッシュ
12Aにバイトが書き込まれて始めて、書込みが完了す
る。書込み要求が完了すると、キャッシュ12Aに書き
込まれたデータは、他のプロセス131−13Nのいず
れかによる次の読取り操作で見えるようになる。
ファイル春アクセス・セマンティックスのもう一つの要
件は、N1−N2などのファイルのバイト範囲(1つの
レコードでも、同じ入出力操作でアクセスする関連する
1組のレコードでもよい)が読取り操作で見えるとき、
ファイルのバイト範囲N1−N2は、必ずこの範囲に対
する最近の更新を反映した一貫した1組のデータを含ん
でいなげればならない。書込み操作の実行中は、このバ
イト範囲にアクセスできない。こうして、あるプロセス
から出された次の読取り要求では、古(なった更新前の
データではな(、令書かれたデータが読み取られる。
件は、N1−N2などのファイルのバイト範囲(1つの
レコードでも、同じ入出力操作でアクセスする関連する
1組のレコードでもよい)が読取り操作で見えるとき、
ファイルのバイト範囲N1−N2は、必ずこの範囲に対
する最近の更新を反映した一貫した1組のデータを含ん
でいなげればならない。書込み操作の実行中は、このバ
イト範囲にアクセスできない。こうして、あるプロセス
から出された次の読取り要求では、古(なった更新前の
データではな(、令書かれたデータが読み取られる。
第13図に示す本発明の分散ネットワーキング環境では
、異なるアプリケーション・プログラム4A、4Bおよ
びプロセス151−13N、 231−25Nからの読
取りおよび書込みシステム・コールの実行が同期され、
上記のファイル・アクセス・セマンティックスが保存さ
れている。様々なキャッシュ同期モードを利用して、同
期が保証される。特定のファイル5について、ファイル
5をアクセスのためにオープンしているプロセス131
−131N、231−23Nの位置及び同期モードに応
じて、クライエント・ノードBまたはサーバAのどちら
かによって入出力コールが同期される。
、異なるアプリケーション・プログラム4A、4Bおよ
びプロセス151−13N、 231−25Nからの読
取りおよび書込みシステム・コールの実行が同期され、
上記のファイル・アクセス・セマンティックスが保存さ
れている。様々なキャッシュ同期モードを利用して、同
期が保証される。特定のファイル5について、ファイル
5をアクセスのためにオープンしているプロセス131
−131N、231−23Nの位置及び同期モードに応
じて、クライエント・ノードBまたはサーバAのどちら
かによって入出力コールが同期される。
第14図に6つの同期モードを示し、第7図を参照しな
がら説明を行なう。第1のモードはASYNC同期モー
ド、すなわち非同期モードと呼ばれる。第14図のブロ
ック107に示すように1つのクライエント遠隔モード
のみで実行されるプロセス15cによる読取り/書込み
アクセスのためにファイル5がオープンされている場合
に、ファイル5がこのモード104で動作する。このモ
ード104では、制御権はすべてクライエント・ノード
Cにある。これらの読取り/書込み操作には、サーバー
キャッシュ12Aもクライエント・キャッシュ12Cも
使われる。クライエ/ト−キャッシュ12Cから充たせ
ない場合にのみ、読取りまたは書込み操作でサーバ・キ
ャッシュ12Aへのアクセスが必要になる。周期的同期
操作てよつて、あるいはクライエント・ノードC中での
すべてのプロセス13Cによってファイル5がクローズ
されたとき、または他のデータをキャッシュに入れるス
ペースを空けるためにブロックを書き込まなければなら
ないとき、クライエント・ノード12Cにある修正済み
のデータ・ブロックがサーバ12Aに書き込まれる。さ
らに、ファイルがASYNC同期モードからFULLS
YNC同期モードに変更されるとき、修正済みのデータ
・ブロックがサーバ12Aに書き込まれる。
がら説明を行なう。第1のモードはASYNC同期モー
ド、すなわち非同期モードと呼ばれる。第14図のブロ
ック107に示すように1つのクライエント遠隔モード
のみで実行されるプロセス15cによる読取り/書込み
アクセスのためにファイル5がオープンされている場合
に、ファイル5がこのモード104で動作する。このモ
ード104では、制御権はすべてクライエント・ノード
Cにある。これらの読取り/書込み操作には、サーバー
キャッシュ12Aもクライエント・キャッシュ12Cも
使われる。クライエ/ト−キャッシュ12Cから充たせ
ない場合にのみ、読取りまたは書込み操作でサーバ・キ
ャッシュ12Aへのアクセスが必要になる。周期的同期
操作てよつて、あるいはクライエント・ノードC中での
すべてのプロセス13Cによってファイル5がクローズ
されたとき、または他のデータをキャッシュに入れるス
ペースを空けるためにブロックを書き込まなければなら
ないとき、クライエント・ノード12Cにある修正済み
のデータ・ブロックがサーバ12Aに書き込まれる。さ
らに、ファイルがASYNC同期モードからFULLS
YNC同期モードに変更されるとき、修正済みのデータ
・ブロックがサーバ12Aに書き込まれる。
第2のモード105はREADONLY同期モード10
5である。READONLY同期モード105は、第1
4図のブロック108に示すように、1つのノードC内
のプロセス13Cからの、または複数のノード8%C内
のプロセス13B113Cからの読取シ専用アクセスの
ためにオープンされているファイル5に用いられる。こ
のモード105では、サーバ・キャッシュ12Aとクラ
イエント・キャッシュ12Cの一方または両方が使われ
る。一時に1つまたは複数のブロックに対して、読取り
要求が発行される。同じクライエント・ノードBまたは
Cからの特定のデータ・ブロックに対する他の読取シ要
求は、どれもサーバ12に行かず、尚該のクライエント
・キャッシュ12Aまたは12Cから読み取られる。言
い換えれば、クライエント・キャッシュ12Cまたは1
2Bから充たせる場合、読取シ操作でサーバ12Aへの
アクセスは必要ではない。まとめると、任意のノードA
、B1C内のプロセス13A、13B。
5である。READONLY同期モード105は、第1
4図のブロック108に示すように、1つのノードC内
のプロセス13Cからの、または複数のノード8%C内
のプロセス13B113Cからの読取シ専用アクセスの
ためにオープンされているファイル5に用いられる。こ
のモード105では、サーバ・キャッシュ12Aとクラ
イエント・キャッシュ12Cの一方または両方が使われ
る。一時に1つまたは複数のブロックに対して、読取り
要求が発行される。同じクライエント・ノードBまたは
Cからの特定のデータ・ブロックに対する他の読取シ要
求は、どれもサーバ12に行かず、尚該のクライエント
・キャッシュ12Aまたは12Cから読み取られる。言
い換えれば、クライエント・キャッシュ12Cまたは1
2Bから充たせる場合、読取シ操作でサーバ12Aへの
アクセスは必要ではない。まとめると、任意のノードA
、B1C内のプロセス13A、13B。
13Cのいずれかによる読取シ専用アクセスのためにフ
ァイル5がオープンされている場合に、ファイル5はR
EADONLY同期モード42で動作する。
ァイル5がオープンされている場合に、ファイル5はR
EADONLY同期モード42で動作する。
第3のモード106はFULLSYNC同期モードであ
る。FULLSYNC同期モード106は、第14図の
ブロック111で示すように、サーバ・ノードA内のプ
ロセス1゛3Aによる書込みアクセスのためにオープン
されているファイル5に用いられる。この同期モード1
06は、第14図のブロック109.110で示すよう
に、サーバ・ノードAおよび他の少なくとも1つのノー
ドB%Cでファイル5がオープンし、かつ少なくとも1
つのプロセス13A113B、13Cで書込みアクセス
のためにファイル5がオープンされている場合にも用い
られる。一般に複数のノードでファイル5がオープンし
、それらのノードのうちの1つで書込みアクセスのため
にファイルがオープンしている場合、そのファイルはF
ULLSYNC同期モードである。FULLSYNC同
期モード106では、クライエント・キャッシュ12C
または12Bは迂回し、サーバ・キャッシュ12Aだけ
が用いられる。読取り操作と書込み操作はすべてサーバ
12Aで実行される。
る。FULLSYNC同期モード106は、第14図の
ブロック111で示すように、サーバ・ノードA内のプ
ロセス1゛3Aによる書込みアクセスのためにオープン
されているファイル5に用いられる。この同期モード1
06は、第14図のブロック109.110で示すよう
に、サーバ・ノードAおよび他の少なくとも1つのノー
ドB%Cでファイル5がオープンし、かつ少なくとも1
つのプロセス13A113B、13Cで書込みアクセス
のためにファイル5がオープンされている場合にも用い
られる。一般に複数のノードでファイル5がオープンし
、それらのノードのうちの1つで書込みアクセスのため
にファイルがオープンしている場合、そのファイルはF
ULLSYNC同期モードである。FULLSYNC同
期モード106では、クライエント・キャッシュ12C
または12Bは迂回し、サーバ・キャッシュ12Aだけ
が用いられる。読取り操作と書込み操作はすべてサーバ
12Aで実行される。
第7図の分散ネットワーキング環境1では、大部分のフ
ァイル5は、READONLY同期モード105(第1
4図)で複数のノードA、 B”、Cでのプロセス13
A、13B113Cによる読取専用アクセスのためにオ
ープンしたり、あるいはASYNCH同期モード104
で1つのノードで更新のためにオープンしたりする方が
、FULLSYNC同期モード106で複数のノードで
実行されるプロセスによる読取シ/書込みアクセスのた
めにオープンするよりも頻繁である。READONLY
同期モード105でもASYNC同期モード104でも
、クライエント・キャッシュ12B(第13図)を使用
するため、遠隔読取1)/書込みのファイル5にアクセ
スする応答時間が著しく減少シ、全体的システム・パフ
ォーマンスが向上する。
ァイル5は、READONLY同期モード105(第1
4図)で複数のノードA、 B”、Cでのプロセス13
A、13B113Cによる読取専用アクセスのためにオ
ープンしたり、あるいはASYNCH同期モード104
で1つのノードで更新のためにオープンしたりする方が
、FULLSYNC同期モード106で複数のノードで
実行されるプロセスによる読取シ/書込みアクセスのた
めにオープンするよりも頻繁である。READONLY
同期モード105でもASYNC同期モード104でも
、クライエント・キャッシュ12B(第13図)を使用
するため、遠隔読取1)/書込みのファイル5にアクセ
スする応答時間が著しく減少シ、全体的システム・パフ
ォーマンスが向上する。
第15図に示すように、FULLSYNC同期モードで
は、クライエント・キャッシュは使われない。クライエ
ント・ノードBは、各読取シおよび書込みのたびにサー
バAからネットワーク3を介してファイル5にアクセス
する。このモードでは、読取り/書込み応答時間は増加
するが、サーバAに常駐する対応するファイルと一緒に
更新されていないファイル5をクライエント・ノードが
ローカル・キャッシュに保持しないので、ファイル・ア
クセス・セマンティックスは保存される。
は、クライエント・キャッシュは使われない。クライエ
ント・ノードBは、各読取シおよび書込みのたびにサー
バAからネットワーク3を介してファイル5にアクセス
する。このモードでは、読取り/書込み応答時間は増加
するが、サーバAに常駐する対応するファイルと一緒に
更新されていないファイル5をクライエント・ノードが
ローカル・キャッシュに保持しないので、ファイル・ア
クセス・セマンティックスは保存される。
この3つのモードを使ってクライエント・キャツシ二の
使用を管理すると、読取り/書込み応答速度が全体的に
平均して増加し、かつファイルの整合性が保たれるため
に、全体的システム・パフォーマンスが最適になる。あ
る状況ではクライエント・キャッシュを使うので読取り
/書込み応答時間が減少し、別の状況ではクライアント
・キャラシュラ使ワないので、ファイル・システム・セ
マンティックスが保存される。
使用を管理すると、読取り/書込み応答速度が全体的に
平均して増加し、かつファイルの整合性が保たれるため
に、全体的システム・パフォーマンスが最適になる。あ
る状況ではクライエント・キャッシュを使うので読取り
/書込み応答時間が減少し、別の状況ではクライアント
・キャラシュラ使ワないので、ファイル・システム・セ
マンティックスが保存される。
ファイルの同期モードは、どのノードでファイルがオー
プンになっているか、およびファイルが読取シのために
オープンになっているのか、それとも書込みのためにオ
ープンになっているのかだけでなく、ファイルの存在す
る装置がロー(raw)アクセス・モードでオープンに
なっているかどうかにも依存する。ある装置に対するロ
ー・アクセスとは、装置2人内のデータ・ブロックLB
N 1(第13図)がアクセスされるという意味である
。
プンになっているか、およびファイルが読取シのために
オープンになっているのか、それとも書込みのためにオ
ープンになっているのかだけでなく、ファイルの存在す
る装置がロー(raw)アクセス・モードでオープンに
なっているかどうかにも依存する。ある装置に対するロ
ー・アクセスとは、装置2人内のデータ・ブロックLB
N 1(第13図)がアクセスされるという意味である
。
すなわち、装置2Aの読取シおよび書込みは、装置2人
のデータ・ブロックLBN1に対する読取シおよび書込
みである。そのデータ・ブロックがどのファイルに属す
るのか重要ではない。装置2Aは、サーバ・ノードAで
のプロセス131−13Nからのロー・アクセスのため
にオープンすることができるが、遠隔ノードB、Cから
のロー・アクセスのためにオープンすることはできない
。
のデータ・ブロックLBN1に対する読取シおよび書込
みである。そのデータ・ブロックがどのファイルに属す
るのか重要ではない。装置2Aは、サーバ・ノードAで
のプロセス131−13Nからのロー・アクセスのため
にオープンすることができるが、遠隔ノードB、Cから
のロー・アクセスのためにオープンすることはできない
。
第13図を参照すると、キャッシュ12Aは、第2図に
関して先に説明したスタンドアロン・システムと同様に
、装置2人のブロックLBN1として管理される。サー
バAは、サーバ・キャッシュ12Aを装置2人内の論理
ブロックLBNB:して見る。クライエント嚇ノードB
は、ファイル5が装置2人上のどこにあるのか知らない
。クライエント−ノードBが知っているのは、装置2A
ノブロック番号N1にあるファイル5にアクセスしてい
ることだけである。クライアント・キャッシュ12Bは
、データをファイル5の論理ブロックN1として扱う。
関して先に説明したスタンドアロン・システムと同様に
、装置2人のブロックLBN1として管理される。サー
バAは、サーバ・キャッシュ12Aを装置2人内の論理
ブロックLBNB:して見る。クライエント嚇ノードB
は、ファイル5が装置2人上のどこにあるのか知らない
。クライエント−ノードBが知っているのは、装置2A
ノブロック番号N1にあるファイル5にアクセスしてい
ることだけである。クライアント・キャッシュ12Bは
、データをファイル5の論理ブロックN1として扱う。
サーバ・キャッシュ12A内では、データは装置2人の
論理ブロックLBNiとして扱われる。データをこのよ
うに扱う際に、サーバAは、データがロー(raw)装
置としての装置に書き込まれ、かつそのファイルの装置
に書き込まれたブロックと同じブロックに対する読取シ
が別にあった場合に、新しく書き込まれたデータがその
読取りで見えることを保証することができる。このため
、ファイル・システム・セマンティックスが保存される
。
論理ブロックLBNiとして扱われる。データをこのよ
うに扱う際に、サーバAは、データがロー(raw)装
置としての装置に書き込まれ、かつそのファイルの装置
に書き込まれたブロックと同じブロックに対する読取シ
が別にあった場合に、新しく書き込まれたデータがその
読取りで見えることを保証することができる。このため
、ファイル・システム・セマンティックスが保存される
。
第13図に示すようにクライエント・ノードBでファイ
ルがアクセスされておシ、かつファイルがASYNCモ
ードまたはREADONI、Yモードの場合、クライア
ント・オペレーティング・システム11Bは、システム
コールREAD (ファイル記述子、N1)16中のフ
ァイル記述子とファイル内のバイト範囲を、装置番号お
よび装置内の論理ブロック番号に変換しない。クライア
ントは、ファイル記述子とバイト範囲を、ファイル・ハ
ンドル、ノード識別子、およびファイル内の論理ブロッ
ク番号に変換する。クライエント・キャッシュ12B内
にハ、ファイル拳ハンドル、ノード識別子、およびファ
イル内の論理ブロック番号によシ指定されるブロック1
7が存在する。クライエントのアプリケーション・プロ
グラム4Bから読取シ要求16が発行されると、その読
取シ要求は、ファイル記述子およびファイル内のバイト
範囲と共にオペレーティング・システム118に向う。
ルがアクセスされておシ、かつファイルがASYNCモ
ードまたはREADONI、Yモードの場合、クライア
ント・オペレーティング・システム11Bは、システム
コールREAD (ファイル記述子、N1)16中のフ
ァイル記述子とファイル内のバイト範囲を、装置番号お
よび装置内の論理ブロック番号に変換しない。クライア
ントは、ファイル記述子とバイト範囲を、ファイル・ハ
ンドル、ノード識別子、およびファイル内の論理ブロッ
ク番号に変換する。クライエント・キャッシュ12B内
にハ、ファイル拳ハンドル、ノード識別子、およびファ
イル内の論理ブロック番号によシ指定されるブロック1
7が存在する。クライエントのアプリケーション・プロ
グラム4Bから読取シ要求16が発行されると、その読
取シ要求は、ファイル記述子およびファイル内のバイト
範囲と共にオペレーティング・システム118に向う。
次にオペレーティング・システム11Bはクライエント
・キャッシュ12Bを見る。ファイル・ハンドル、ノー
ド識別子、およびファイル内の論理ブロック番号がそこ
にある場合、キャッシュ12Bが読み取られる。そこに
ない場合、その読取り要求はサーバに送られる。サーバ
は次にファイル・ハンドルとファイル内の論理ブロック
番号を装置番号と装置内の論理ブロック番号に変換する
。この変換が必要なのは、サーバ・キャッシュ12Aが
スタンドアロン・システムと同様に、装置番号と装置内
ブロック番号によって管理されるためである。読取シ要
求はサーバに送られた後、第2図に関して先に説明した
スタンドアロン・システムで読取シ要求がそれ自体のア
プリケーション・プログラムから来ている場合と同様に
扱われる。
・キャッシュ12Bを見る。ファイル・ハンドル、ノー
ド識別子、およびファイル内の論理ブロック番号がそこ
にある場合、キャッシュ12Bが読み取られる。そこに
ない場合、その読取り要求はサーバに送られる。サーバ
は次にファイル・ハンドルとファイル内の論理ブロック
番号を装置番号と装置内の論理ブロック番号に変換する
。この変換が必要なのは、サーバ・キャッシュ12Aが
スタンドアロン・システムと同様に、装置番号と装置内
ブロック番号によって管理されるためである。読取シ要
求はサーバに送られた後、第2図に関して先に説明した
スタンドアロン・システムで読取シ要求がそれ自体のア
プリケーション・プログラムから来ている場合と同様に
扱われる。
クローズされているファイルには、同期モードがない。
しかし、あるプロセスによってファイルが始めてオープ
ンされると、第16図に示すように下記の通シ、ファイ
ルの同期モードが初期設定される。ファイルが存在する
装置(D)がクローズされている、すなわち特別装置と
してオープンされていす且つファイルが1つの遠隔ノー
ドでの書込みアクセスに対してオープンされる場合、フ
ァイルの同期モードはASYNCモード104に初期設
定される。ファイルが存在する装置がクローズされ、1
つまたは複数のノードでの読取り専用アクセスのために
、ファイルがオープンにされる場合、あるいは装置もフ
ァイルも読取シ専用アクセスのためにオープンされる場
合、ファイルの同期モードはREADONLY 105
である。ファイルが存在する装置が読取シ/書込みアク
セスのためにブロック特別装置としてオープンになって
いる場合、あるいはファイルが複数のノードでオープン
シ、少なくとも1つのオープンが書込みに対するもので
ある場合、ファイルの同期モードはFULLSYNCモ
ード106に初期設定される。
ンされると、第16図に示すように下記の通シ、ファイ
ルの同期モードが初期設定される。ファイルが存在する
装置(D)がクローズされている、すなわち特別装置と
してオープンされていす且つファイルが1つの遠隔ノー
ドでの書込みアクセスに対してオープンされる場合、フ
ァイルの同期モードはASYNCモード104に初期設
定される。ファイルが存在する装置がクローズされ、1
つまたは複数のノードでの読取り専用アクセスのために
、ファイルがオープンにされる場合、あるいは装置もフ
ァイルも読取シ専用アクセスのためにオープンされる場
合、ファイルの同期モードはREADONLY 105
である。ファイルが存在する装置が読取シ/書込みアク
セスのためにブロック特別装置としてオープンになって
いる場合、あるいはファイルが複数のノードでオープン
シ、少なくとも1つのオープンが書込みに対するもので
ある場合、ファイルの同期モードはFULLSYNCモ
ード106に初期設定される。
ブロック特別装置とは、その装置に対するロー・アクセ
スがあるという意味である。
スがあるという意味である。
ファイルがあるモードに初期設定されても、条件が変わ
れば、ファイル・モードも変わることがある。第16図
で線118ないし126によって示すようなあるモード
から別のモードへの移行が、下記の条件で起こり得る。
れば、ファイル・モードも変わることがある。第16図
で線118ないし126によって示すようなあるモード
から別のモードへの移行が、下記の条件で起こり得る。
ファイルが現在ASYNCモード104であり、そのフ
ァイル(F)がオープンになっているノードの数が2以
上になった場合(124)、第16図で線119によっ
て示すように同期モードはFULLSYNCモード10
6に変わる。また、ファイルが存在するブロック特別装
置りのオープンがある場合(125)、同期モードはA
SYNCモード1[]4からFULLSYNCモード1
06に変わる。ファイルのクローズ動作については、そ
のクローズ動作がファイルの最終クローズではな(、フ
ァイルは書込みに対しては依然としてオープンである場
合は、モード変更は起こらない。しかし、そのクローズ
動作がそのファイルの書込みアクセスに対する最終クロ
ーズであり、残っているオープンはすべて読込みアクセ
スに対するものである場合(126)は、線121で示
すようにREADONLYモード105が新しいモード
になる。そのクローズ動作がそのファイルの最終クロー
ズである場合、同期モードはない。
ァイル(F)がオープンになっているノードの数が2以
上になった場合(124)、第16図で線119によっ
て示すように同期モードはFULLSYNCモード10
6に変わる。また、ファイルが存在するブロック特別装
置りのオープンがある場合(125)、同期モードはA
SYNCモード1[]4からFULLSYNCモード1
06に変わる。ファイルのクローズ動作については、そ
のクローズ動作がファイルの最終クローズではな(、フ
ァイルは書込みに対しては依然としてオープンである場
合は、モード変更は起こらない。しかし、そのクローズ
動作がそのファイルの書込みアクセスに対する最終クロ
ーズであり、残っているオープンはすべて読込みアクセ
スに対するものである場合(126)は、線121で示
すようにREADONLYモード105が新しいモード
になる。そのクローズ動作がそのファイルの最終クロー
ズである場合、同期モードはない。
ファイルが現在READONLY同期モード105であ
り、ファイル・オープン動作がある場合、そのオープン
が読取りに対するものなら、モード変更はない。しかし
、そのオープンが書込みに対するものなら、+1120
で示すようにすべてのオープンが1つのクライエント・
ノードで行なわれる場合(127)、ASYNC%−ド
104が新しい同期モードとなる。そうでなければ、同
期モード&!FULLSYNCモー)’106である。
り、ファイル・オープン動作がある場合、そのオープン
が読取りに対するものなら、モード変更はない。しかし
、そのオープンが書込みに対するものなら、+1120
で示すようにすべてのオープンが1つのクライエント・
ノードで行なわれる場合(127)、ASYNC%−ド
104が新しい同期モードとなる。そうでなければ、同
期モード&!FULLSYNCモー)’106である。
さらに、ファイルが存在する装置が読取り/書込みアク
セスに対してオープンされる場合(130)、そのファ
イルの新しい同期モードはFULLSYNCモード10
6である。クローズ動作について、そのクローズがその
ファイルの最終クローズである場合、そのファイルの同
期モードはない。クローズ動作の後、ファイルが1つま
たは複数のノードで依然としてオープンになっている場
合、同期モードに変更はない。
セスに対してオープンされる場合(130)、そのファ
イルの新しい同期モードはFULLSYNCモード10
6である。クローズ動作について、そのクローズがその
ファイルの最終クローズである場合、そのファイルの同
期モードはない。クローズ動作の後、ファイルが1つま
たは複数のノードで依然としてオープンになっている場
合、同期モードに変更はない。
ファイルが現在FULLSYNCモード106であり、
そのファイルに対して別のオープンがある場合、あるい
はファイルが存在する装置がオープンされる場合、同期
モードの変更はない。ファイルのクローズ動作の後、1
つの遠隔ノードで読取り/書込みアクセスのためのオー
プンが残っており、かつそのファイルが存在するブロッ
ク特別装置がオープンされていない場合、線118を介
してブロック141で示されるよ゛うに、同期モードは
ASYNC同期モード104に変わる。ファイルが存在
するブロック特別装置がオープンされず、かつ線122
上のブロック142で示されるように、そのファイルが
1つまたは複数のノードでの読取り専用アクセスに対し
てオープンされる場合、あるいはファイルが存在するブ
ロック特別装置が読取り専用アクセスに対してオープン
され、かつそのファイルが読取り専用アクセスに対して
オープンされる場合、同期モードはFULLSYNCモ
ード106からREADONLYモード105に変わる
。
そのファイルに対して別のオープンがある場合、あるい
はファイルが存在する装置がオープンされる場合、同期
モードの変更はない。ファイルのクローズ動作の後、1
つの遠隔ノードで読取り/書込みアクセスのためのオー
プンが残っており、かつそのファイルが存在するブロッ
ク特別装置がオープンされていない場合、線118を介
してブロック141で示されるよ゛うに、同期モードは
ASYNC同期モード104に変わる。ファイルが存在
するブロック特別装置がオープンされず、かつ線122
上のブロック142で示されるように、そのファイルが
1つまたは複数のノードでの読取り専用アクセスに対し
てオープンされる場合、あるいはファイルが存在するブ
ロック特別装置が読取り専用アクセスに対してオープン
され、かつそのファイルが読取り専用アクセスに対して
オープンされる場合、同期モードはFULLSYNCモ
ード106からREADONLYモード105に変わる
。
ファイルおよび装置に対するすべてのオープン動作およ
びクローズ動作は、サーバΦノードで解決される。サー
バは、同期モードを変更する可能性がある任意の動作を
実行するとき、オープン・ファイルの同期モードを決定
する。また、サーバは同期モードの変更を実行する。サ
ーバがそのファイルに対する新しいオープンまたはクロ
ーズを獲得するとき、そのファイルの同期モードの変更
がトリガされることがある。必要とされる同期モードが
現在のモードではない場合、サーバはそのファイルがオ
ープンになっているすべてのクライエントに「同期モー
ド変更」遠隔手順コール(rpc)を送る。ファイルが
初めてオープンされた後、そのファイルをオープンした
クライエントには、そのファイルのモードが知らされる
。モードがASYNCまたはREADONLYである場
合、クライエントは、第15図に示すように、読取りの
ため、あるいはASYNCモードの場合は書込みのため
にも、フライエン)・キャッシュの使用を開始すること
ができる。クライエントは、通信リンクを介してサーバ
に対して読取りまたは書込みを行なう必要はない。第1
5図に示すようにモードがFULLSYNCモードであ
る場合は、クライエント・キャッシュは使われず、クラ
イエントは通信リンク3を介してサーバに対し読取りま
たは書込みを送る必要がある。
びクローズ動作は、サーバΦノードで解決される。サー
バは、同期モードを変更する可能性がある任意の動作を
実行するとき、オープン・ファイルの同期モードを決定
する。また、サーバは同期モードの変更を実行する。サ
ーバがそのファイルに対する新しいオープンまたはクロ
ーズを獲得するとき、そのファイルの同期モードの変更
がトリガされることがある。必要とされる同期モードが
現在のモードではない場合、サーバはそのファイルがオ
ープンになっているすべてのクライエントに「同期モー
ド変更」遠隔手順コール(rpc)を送る。ファイルが
初めてオープンされた後、そのファイルをオープンした
クライエントには、そのファイルのモードが知らされる
。モードがASYNCまたはREADONLYである場
合、クライエントは、第15図に示すように、読取りの
ため、あるいはASYNCモードの場合は書込みのため
にも、フライエン)・キャッシュの使用を開始すること
ができる。クライエントは、通信リンクを介してサーバ
に対して読取りまたは書込みを行なう必要はない。第1
5図に示すようにモードがFULLSYNCモードであ
る場合は、クライエント・キャッシュは使われず、クラ
イエントは通信リンク3を介してサーバに対し読取りま
たは書込みを送る必要がある。
第15図のサーバAは、常にファイル5のモード151
を設定する。またサーバAは、どのノードのファイルが
オープンになっているか、およびそれらのオープンが読
取りに対するものかそれとも書込みに対するものかを知
っている。サーバAは、ノード内がどのプロセス131
−13N、251−23Nがファイルをオープンしてい
るかを知る必要はない。サーバは、第15図に示すよう
にファイル・アクセス構造リスト150中に上記の全て
の情報を保持する。ファイル・アクセス構造リスト15
0の各要素は、そのファイルをオープンしたノード15
2、そのノードで読取りのためにオープンされている数
156、及び書込みのためにオープンされている数15
4を含んでいる。
を設定する。またサーバAは、どのノードのファイルが
オープンになっているか、およびそれらのオープンが読
取りに対するものかそれとも書込みに対するものかを知
っている。サーバAは、ノード内がどのプロセス131
−13N、251−23Nがファイルをオープンしてい
るかを知る必要はない。サーバは、第15図に示すよう
にファイル・アクセス構造リスト150中に上記の全て
の情報を保持する。ファイル・アクセス構造リスト15
0の各要素は、そのファイルをオープンしたノード15
2、そのノードで読取りのためにオープンされている数
156、及び書込みのためにオープンされている数15
4を含んでいる。
E−6,ロック
UNIXオペレー亨インダイングテムにおいて、プロセ
スは、他のプロセスがアクセスしないように、ファイル
中のバイト範囲をロックする事ができる。そのようなロ
ッキングに関するサポートは、UNIXオペレーティン
グ・システムのバージョン毎に違っているが、多くのイ
ンプリメンテーションにおいてはロックはファイルのバ
イト範囲に適用される。ファイル全体にわたるロックは
ファイルをロックし、しばしばファイル・ロックと呼ば
れる。規約により、長さゼロ・バイトの範囲をロックす
る要求は、範囲の始めからファイルの終りまでの全ての
バイトをロックすべき事を示す。
スは、他のプロセスがアクセスしないように、ファイル
中のバイト範囲をロックする事ができる。そのようなロ
ッキングに関するサポートは、UNIXオペレーティン
グ・システムのバージョン毎に違っているが、多くのイ
ンプリメンテーションにおいてはロックはファイルのバ
イト範囲に適用される。ファイル全体にわたるロックは
ファイルをロックし、しばしばファイル・ロックと呼ば
れる。規約により、長さゼロ・バイトの範囲をロックす
る要求は、範囲の始めからファイルの終りまでの全ての
バイトをロックすべき事を示す。
これにより、プロセスがファイルに付加的なバイトを追
加する前にファイルをロックし、そして新しいバイト全
部に対して制御を維持する事が可能となる。任意のバイ
ト範囲にわたるロックはしばしばレコード・ロックと呼
ばれるが、本明細書中ではファイル及びレコード(バイ
ト範囲)に対する全てのロックは単にロックと呼ぶ。
加する前にファイルをロックし、そして新しいバイト全
部に対して制御を維持する事が可能となる。任意のバイ
ト範囲にわたるロックはしばしばレコード・ロックと呼
ばれるが、本明細書中ではファイル及びレコード(バイ
ト範囲)に対する全てのロックは単にロックと呼ぶ。
AIXオペレーティング・システムにおいては、10e
kf(2)及びfcntl(2)が読取ロック及び書込
みロックの両者に関するサポートを与えている。書込み
ロックは排他的なロックである。即ち、もしファイルの
ある範囲が書込みロックされると、いずれの種類の他の
ロックもその範囲には存在する事ができない。読取ロッ
クは共有的ロックである。即ち、任意の数の重なり合っ
た読取ロックをファイルのセグメントにかげる事ができ
る。既存の読取ロックは他の読取ロックを阻止する事は
ないが、他の書込ロックは阻止する。また既存の書込ロ
ックは重なり合った範囲上の他の全てのロックを阻止す
る。
kf(2)及びfcntl(2)が読取ロック及び書込
みロックの両者に関するサポートを与えている。書込み
ロックは排他的なロックである。即ち、もしファイルの
ある範囲が書込みロックされると、いずれの種類の他の
ロックもその範囲には存在する事ができない。読取ロッ
クは共有的ロックである。即ち、任意の数の重なり合っ
た読取ロックをファイルのセグメントにかげる事ができ
る。既存の読取ロックは他の読取ロックを阻止する事は
ないが、他の書込ロックは阻止する。また既存の書込ロ
ックは重なり合った範囲上の他の全てのロックを阻止す
る。
AIXオペレーティング・システムにおいて、ファイル
は強制的ロッキング・モード又は勧告的ロッキング・モ
ードのいずれかの状態にある。ファイルのロッキング・
モードはchmodシステム・コールを用いてファイル
の許可コードを変更する事によって制御される。強制的
ロッキング・モードのファイルに対するロックは強制的
ロックと呼ばれ、勧告的ロッキング・モードのファイル
に対するロックは勧告的ロックと呼ばれる。勧告的ロッ
クはファイル又はレコードに対して絶対的な保護は与え
ない。というのはそれは、ロックされたファイル又はレ
コードをプロセスが読み書きするのを妨げないからであ
る。勧告的ロックは1ockf(2)又はfcnte(
2)に対する呼び出しの結果にしか影響せず、従ってそ
れは共有ファイルに対するロックの状態を1ockf(
2)又はfcntl(2)を用いて照会するように、協
調的に動作するプロセスによって使用されなければなら
ない。勧告的ロックの利点は、通常の読取り又は書込み
動作の間にカーネルによって質問されなくてよい点であ
る。強制的ロックは、おそらく、より頻繁に使用される
。
は強制的ロッキング・モード又は勧告的ロッキング・モ
ードのいずれかの状態にある。ファイルのロッキング・
モードはchmodシステム・コールを用いてファイル
の許可コードを変更する事によって制御される。強制的
ロッキング・モードのファイルに対するロックは強制的
ロックと呼ばれ、勧告的ロッキング・モードのファイル
に対するロックは勧告的ロックと呼ばれる。勧告的ロッ
クはファイル又はレコードに対して絶対的な保護は与え
ない。というのはそれは、ロックされたファイル又はレ
コードをプロセスが読み書きするのを妨げないからであ
る。勧告的ロックは1ockf(2)又はfcnte(
2)に対する呼び出しの結果にしか影響せず、従ってそ
れは共有ファイルに対するロックの状態を1ockf(
2)又はfcntl(2)を用いて照会するように、協
調的に動作するプロセスによって使用されなければなら
ない。勧告的ロックの利点は、通常の読取り又は書込み
動作の間にカーネルによって質問されなくてよい点であ
る。強制的ロックは、おそらく、より頻繁に使用される
。
強制的ロックは、勧告的ロックのように、1ockf
(2)及びfcntl(2)に対するその後の呼び出し
に影響を与えるが、それに加えて、read(2)、w
rite(2)、open(2)、creat(2)、
fclear(2)、ftruncate(2)及びs
hmat(2)の各々により、ファイルの読取り又は書
込みロックされた部分が変更されず、且つファイルの書
込みロックされた部分がアクセスされない事が保証され
る。
(2)及びfcntl(2)に対するその後の呼び出し
に影響を与えるが、それに加えて、read(2)、w
rite(2)、open(2)、creat(2)、
fclear(2)、ftruncate(2)及びs
hmat(2)の各々により、ファイルの読取り又は書
込みロックされた部分が変更されず、且つファイルの書
込みロックされた部分がアクセスされない事が保証され
る。
fcntl(2)システム・コールの3つの異なったコ
マンドがロッキングに関係している。
マンドがロッキングに関係している。
F GETLK:これは、fcntl(2)の引数に
よって記述されたロックを 呼び出し例プロセスに許可−r るのを妨げる、最初の既存の ロックを見い出す。
よって記述されたロックを 呼び出し例プロセスに許可−r るのを妨げる、最初の既存の ロックを見い出す。
F 5ETLK:これは、fcntt(2)の引数に
よって記述されたロックを 呼び出し側プロセスに許可す る。もし既存のロックが要求 と干渉するためにロックが許 可できないならば、その既存 の「ロックの記述を返す。
よって記述されたロックを 呼び出し側プロセスに許可す る。もし既存のロックが要求 と干渉するためにロックが許 可できないならば、その既存 の「ロックの記述を返す。
F 5ETLKW:これはfcntl(2)の引数に
よって記述されたロックを呼 び出し側プロセスに許可する。
よって記述されたロックを呼 び出し側プロセスに許可する。
もし既存のロックが要求と干
渉する事によってロック75f許
可できないならば、デッド口
ツクをチェックし、もしデッ
ドロックの原因がなければ、
呼び出し側プロセスを待機さ
せる。干渉を起こすロックが
クリアされる毎に、カーネル
は再び、干渉するロックを探
索する事によって、要求され
たロックを確立しようと試み
る。プロセスは永久に待機す
る事も可能である。単一ノー
ド上のファイル・ロックにし
か関係しないデッドロックは
検出されても、複数ノード上
のファイル−ロックによるデ
ラドロックが生じ得る。また、
プロセスはデッドロックを生
じなくても、干渉的ロックが
クリアされた時に既に他の干
渉的ロックがセットされてい
る事により、不定期間、ロッ
クを取得できない事もある。
これらのコマンドの各々に関して、構造体、即ちロック
を記述するflock構造体へのポインタがfcntl
(2)コールの引数として与えられる。
を記述するflock構造体へのポインタがfcntl
(2)コールの引数として与えられる。
flock構造体は下記の形成を有する。
5truct flock (
short 1.、Jype ;5horむ
l−whence ;long l 5ta
rt ;long 1 1en ; uns′i’g+)edzlong l 5ysid
;5hort 1 pid ; 第18図に示すようなflock構造体のフィールドは
下記の意味を有している。
l−whence ;long l 5ta
rt ;long 1 1en ; uns′i’g+)edzlong l 5ysid
;5hort 1 pid ; 第18図に示すようなflock構造体のフィールドは
下記の意味を有している。
1 type 200は、ロックが読取ロックか又は
書込ロックかを示すために使われる。
書込ロックかを示すために使われる。
l whence205は、このロックに関するバイ
ト範囲がファイルの開始点を基準としてそれに相対的に
定められた位置で始まるならば0であり、範囲が現在の
位置を基準とする位置で始まるならば1であり、そして
範囲がファイルの終りを基準とする位置で始まるならば
2である。
ト範囲がファイルの開始点を基準としてそれに相対的に
定められた位置で始まるならば0であり、範囲が現在の
位置を基準とする位置で始まるならば1であり、そして
範囲がファイルの終りを基準とする位置で始まるならば
2である。
l 5tart2[31は、1 whenceによ
り指定された位置に対する、ロックすべき範囲の開始点
のオフセットである。
り指定された位置に対する、ロックすべき範囲の開始点
のオフセットである。
1 1en202は、ロックすべき範囲のサイズである
。
。
l pid204は、F GETLKコマンドに応
答してfcntlにより返される、ロックの所有者のプ
ロセスidでアル。
答してfcntlにより返される、ロックの所有者のプ
ロセスidでアル。
l 5ysid203は、ロックの所有者が存在する
ノードのノードidである。
ノードのノードidである。
ロックはオープンしたファイルに伴なうものであり、ロ
ック情報をオープン・ファイルに関する他の情報と共に
、ファイルのiノード構造中に置(のは自然な事である
。AIXオペレーティング・システムではこれは非実際
的である。というのはiノード構造は固定サイズを有し
、ファイルのロックに伴なう可変長のデータを含む事が
できないからである。その代りに、ロック情報は、iノ
ード構造210(第19図)から到達可能であるがその
中には含まれないよ5に記憶される。ファイル・ロック
に付随するデータは、iノード構造210のフィールド
220によって指し示される連鎖リスト中に保持される
。この連鎖リスト221.222.223は、ロック・
テーブルと呼ばれるテーブル中のエントリのリストであ
る。ロック・テーブルの各エントリは下記の形式を有す
る。
ック情報をオープン・ファイルに関する他の情報と共に
、ファイルのiノード構造中に置(のは自然な事である
。AIXオペレーティング・システムではこれは非実際
的である。というのはiノード構造は固定サイズを有し
、ファイルのロックに伴なう可変長のデータを含む事が
できないからである。その代りに、ロック情報は、iノ
ード構造210(第19図)から到達可能であるがその
中には含まれないよ5に記憶される。ファイル・ロック
に付随するデータは、iノード構造210のフィールド
220によって指し示される連鎖リスト中に保持される
。この連鎖リスト221.222.223は、ロック・
テーブルと呼ばれるテーブル中のエントリのリストであ
る。ロック・テーブルの各エントリは下記の形式を有す
る。
5truct filock (
struct flock set ’unio
n ( int wakeflg ; 5truct ( unsigned long 5ysid ;5h
ort pid ; l blk ; )stat ; 5truct filock *prev ;5
truct filock *next ;f
i 1ock構造体221.222.223は、各々現
在例らかのロックをセットしているファイル毎に、別個
のリストの形に連鎖される。リストの先頭要素はそのフ
ァイルのiノード構造体220のメンバーによって指示
される。filock構造体の1つの付加的なリストが
AIXオペレーティング・システムによって維持される
。このリストはスリーブ脅リスト2’30,211.2
62(第20図)であり、スリーブ・ロック229によ
r[示される。スリーブ・リストは、現在ロックを確立
しようとしているが既存の、干渉的なロックによりそう
する事を妨げられている(従ってスリーブ状態にある)
プロセス毎に1つのエントリを有している。
n ( int wakeflg ; 5truct ( unsigned long 5ysid ;5h
ort pid ; l blk ; )stat ; 5truct filock *prev ;5
truct filock *next ;f
i 1ock構造体221.222.223は、各々現
在例らかのロックをセットしているファイル毎に、別個
のリストの形に連鎖される。リストの先頭要素はそのフ
ァイルのiノード構造体220のメンバーによって指示
される。filock構造体の1つの付加的なリストが
AIXオペレーティング・システムによって維持される
。このリストはスリーブ脅リスト2’30,211.2
62(第20図)であり、スリーブ・ロック229によ
r[示される。スリーブ・リストは、現在ロックを確立
しようとしているが既存の、干渉的なロックによりそう
する事を妨げられている(従ってスリーブ状態にある)
プロセス毎に1つのエントリを有している。
ファイル上のロックの連鎖リストの要素221.222
.223として使われている時、filock構造体の
メンバーは下記の意味を有する。
.223として使われている時、filock構造体の
メンバーは下記の意味を有する。
setは、ロックされた領域の記述、並びにロックを所
有しているプロセスのノードid及びプロセスidを含
むflock構造体である。
有しているプロセスのノードid及びプロセスidを含
むflock構造体である。
5tat、 wakeflyは、プロセスがスリーブ状
態にあって、このエントリに対応するロックが解除され
るのを待機して〜・る時にセットされる。
態にあって、このエントリに対応するロックが解除され
るのを待機して〜・る時にセットされる。
5tat、 blk、 5ysid及び5tat、 b
lk、 pidは使用しない。
lk、 pidは使用しない。
prev及びnextは(二重連鎖)リスト中の先行及
び後続要素へのポインタである。
び後続要素へのポインタである。
filock構造体のメンバーは、スリーブ・リスト2
30.261.232の要素として使われる時には、下
記の意味を有する。(第21図参照)。
30.261.232の要素として使われる時には、下
記の意味を有する。(第21図参照)。
set 300は、スリーブ状態のプロセスがロックし
ようと望んでいる範囲の記述、並びにスリーブ状態のプ
ロセスのプロセスid及びノードidを含むflock
構造体である。
ようと望んでいる範囲の記述、並びにスリーブ状態のプ
ロセスのプロセスid及びノードidを含むflock
構造体である。
5tat、 wakef ly 304は使用されない
。
。
5tat、 blk、 5ysid 304は、set
のメンバーによって記述される要求を阻止しているロッ
クを所有しているプロセスのノードidである。
のメンバーによって記述される要求を阻止しているロッ
クを所有しているプロセスのノードidである。
5tat、 blk、 pid 301は、setのメ
ンバーによって記述される要求を阻止しているロックを
所有しているプ・ロセスのプロセスidである。
ンバーによって記述される要求を阻止しているロックを
所有しているプ・ロセスのプロセスidである。
prev 302及びnext 303は、 (2重連
鎖)リスト中の先行及び後続要素へのポインタである。
鎖)リスト中の先行及び後続要素へのポインタである。
AIXオペレーティング・システムにおいてロックを行
なうために使う事のできる2つの異なったシステム・コ
ールが存在する。その両者はreclockと呼ばれる
ルーチンを呼び出す事によって実施される。このルーチ
ンは次のように動作する。
なうために使う事のできる2つの異なったシステム・コ
ールが存在する。その両者はreclockと呼ばれる
ルーチンを呼び出す事によって実施される。このルーチ
ンは次のように動作する。
(reclock )
入カニ
1ノード・ポインタ、即ちロックすべきファイルに関す
るiノードへのポインタ ファイル・ポインタ、即ちロックすべきファイルに関す
るファイル構造へのポインタ、ファイル構造はファイル
のオーブン・モード及び現在のオフセットを含んでいる 要求、即ちロック又はアンロックすべき範囲の記述を含
むflock構造体へのポインタ出カニ ロック要求が許されると0を返し、さもなければエラー
表示を返す 手続: /宋要求を標準形式にする*/ 範囲(l whence、 1start、及びe−1
en )を、1 5tartがファイルの開始点に対す
るものになるような形に変換する;/*ロック・リスト
を取得する*/ ロック・リストはiノード構造体のメンバーによって指
し示される; /*要求を試みる*/ if要求がアンロックである reclockを要求したプロセスによって所有されて
いるロックを探すためにロック・リストを走査する: 要求の範囲と交わるロックの部分をアンロックする; アンロックされた部分を含むロック範囲上でスリーブ状
態にあったプロセスを起こす;0を返す/*成功*/ /*そうでなければ、要求はロックにセットされている
べきである*/ /*ファイル上の干渉的なロックをテストする*/ whi1e干渉的なロックが存在する /*デッドロックをチェックする*/ if要求がデッドロックを生じさせる エラーを返す; ifロック・テーブルに余地が存在しない/*即ち呼び
出し側プロセスをスリープさせられない*/ エラーを返す; /*呼び出し側プロセスをスリーブ状態*//*にする
;*/ /*ロック・テーブルのエントリはスリ*//*−プ・
リストに連鎖される;*/ /*スリーブ・リストは、スリーブ状態*//*にあっ
て、ロック範囲がアンロック*//*されるのを待機し
ている各プロセス*//*毎に1つのエントリを有する
;*//*スリーブ・リスト上のロック・チー*//*
プル・エントリは、スリーブ状態の*//*プロセス及
びそれが待機している口*//*ツクを所有するプロセ
スを識別する;*/スリーブ・リストにエントリを付加
する;/*こうして、走行中のプロセスをスリ*//*
−ブさせる用意がほぼ整っだ;*//*シかし、最初に
、もしiノードが口未//*ラックれていればそれを解
放する;*//*これは、強制的ロッキング・モード*
//*でのファイルの読み書きの間にこの*//*コー
ドが実行されている場合に起き*//*得る;*/ lf iノードがロックされている iノードを解放する; /*最終的に準備が整う*/ スリーブさせる、割り込みを捕獲する;ifスリーブか
らの割り込み エラーを返す; e 1 s e / *正・規のめざめ;*//*干渉
的なロックは終了した;*/ /*もうスリーブの必要はない;*/ スリーブ・リストからエントリを除去 する; if iノードが以前ロックされていたiノードを再ロ
ックする; /*ループ・バックしリスト全体を再び*//*走査す
る;*/ /*ススリーブ中ロックが変化した可能*//*性があ
る;*/ イ /*今や、干渉的なロックは存在しない*/新しいロッ
クをファイルのロック・リストに付加する: /*いくつかのエントリが併合された可能性に注意*/ if要求がロック・リストに付加できた0を返す;/*
成功*/ lse /*エラー、おそらくロック・テーブル*/中に余地が
ないのであろう */エラーを返す: 分散環境においては、2以上のノードのプロセスが同時
に1つのファイルをオープンする事ができる。ロックが
付加又は除去される毎に、ファイルのロック・リスト全
体が走査及び更新されなければならない。そのようなシ
ステムの単純な設計はロックφリスト及びスリーブ・リ
ストをファイルのサーバ上に保持する事である。従って
ロックが行なわれる毎に、(そのサーバにローカルなプ
ロセスがロックを行なうのでな−げれば)ロック・リス
ト及びおそらくスリーブ・リストに対して必要な活動を
行なうために要求がサーバに送られる。
るiノードへのポインタ ファイル・ポインタ、即ちロックすべきファイルに関す
るファイル構造へのポインタ、ファイル構造はファイル
のオーブン・モード及び現在のオフセットを含んでいる 要求、即ちロック又はアンロックすべき範囲の記述を含
むflock構造体へのポインタ出カニ ロック要求が許されると0を返し、さもなければエラー
表示を返す 手続: /宋要求を標準形式にする*/ 範囲(l whence、 1start、及びe−1
en )を、1 5tartがファイルの開始点に対す
るものになるような形に変換する;/*ロック・リスト
を取得する*/ ロック・リストはiノード構造体のメンバーによって指
し示される; /*要求を試みる*/ if要求がアンロックである reclockを要求したプロセスによって所有されて
いるロックを探すためにロック・リストを走査する: 要求の範囲と交わるロックの部分をアンロックする; アンロックされた部分を含むロック範囲上でスリーブ状
態にあったプロセスを起こす;0を返す/*成功*/ /*そうでなければ、要求はロックにセットされている
べきである*/ /*ファイル上の干渉的なロックをテストする*/ whi1e干渉的なロックが存在する /*デッドロックをチェックする*/ if要求がデッドロックを生じさせる エラーを返す; ifロック・テーブルに余地が存在しない/*即ち呼び
出し側プロセスをスリープさせられない*/ エラーを返す; /*呼び出し側プロセスをスリーブ状態*//*にする
;*/ /*ロック・テーブルのエントリはスリ*//*−プ・
リストに連鎖される;*/ /*スリーブ・リストは、スリーブ状態*//*にあっ
て、ロック範囲がアンロック*//*されるのを待機し
ている各プロセス*//*毎に1つのエントリを有する
;*//*スリーブ・リスト上のロック・チー*//*
プル・エントリは、スリーブ状態の*//*プロセス及
びそれが待機している口*//*ツクを所有するプロセ
スを識別する;*/スリーブ・リストにエントリを付加
する;/*こうして、走行中のプロセスをスリ*//*
−ブさせる用意がほぼ整っだ;*//*シかし、最初に
、もしiノードが口未//*ラックれていればそれを解
放する;*//*これは、強制的ロッキング・モード*
//*でのファイルの読み書きの間にこの*//*コー
ドが実行されている場合に起き*//*得る;*/ lf iノードがロックされている iノードを解放する; /*最終的に準備が整う*/ スリーブさせる、割り込みを捕獲する;ifスリーブか
らの割り込み エラーを返す; e 1 s e / *正・規のめざめ;*//*干渉
的なロックは終了した;*/ /*もうスリーブの必要はない;*/ スリーブ・リストからエントリを除去 する; if iノードが以前ロックされていたiノードを再ロ
ックする; /*ループ・バックしリスト全体を再び*//*走査す
る;*/ /*ススリーブ中ロックが変化した可能*//*性があ
る;*/ イ /*今や、干渉的なロックは存在しない*/新しいロッ
クをファイルのロック・リストに付加する: /*いくつかのエントリが併合された可能性に注意*/ if要求がロック・リストに付加できた0を返す;/*
成功*/ lse /*エラー、おそらくロック・テーブル*/中に余地が
ないのであろう */エラーを返す: 分散環境においては、2以上のノードのプロセスが同時
に1つのファイルをオープンする事ができる。ロックが
付加又は除去される毎に、ファイルのロック・リスト全
体が走査及び更新されなければならない。そのようなシ
ステムの単純な設計はロックφリスト及びスリーブ・リ
ストをファイルのサーバ上に保持する事である。従って
ロックが行なわれる毎に、(そのサーバにローカルなプ
ロセスがロックを行なうのでな−げれば)ロック・リス
ト及びおそらくスリーブ・リストに対して必要な活動を
行なうために要求がサーバに送られる。
この単純な設計に基づいたシステムは、ファイルをオー
プンしている唯一のプロセスが1つの非サーバ・ノード
で走行しているものだけである時に、不必要なネットワ
ーク・トラフィック及び遅延という欠点を有する。
プンしている唯一のプロセスが1つの非サーバ・ノード
で走行しているものだけである時に、不必要なネットワ
ーク・トラフィック及び遅延という欠点を有する。
最も頻繁には、AIXオペレーティング・システム中の
ファイルは1つのプロセスによってオープンされる。プ
ロセスがクライエント(非サーバ)ノードで走行してい
るならば、上述の単純な設計は遠隔サーバとの通信の不
所望のコストを導入する。時々、AIXオペレーティン
グ・システム中のファイルは、分散環境中の異なったノ
ードに存在し得る多くの異なったプロセスによって同時
にオープンされる。AIXオペレーティング・システム
におけるファイル及びレコードのロックに関して何らか
の設計を行なうと、単純で一般的な場合には上記単純な
設計のコストを避は且つより一般的でないより複雑な場
合には効率的でなくとも正しく動作するであろう。本明
細書中で述べる発明は、これらの相反する目的を達成す
る。
ファイルは1つのプロセスによってオープンされる。プ
ロセスがクライエント(非サーバ)ノードで走行してい
るならば、上述の単純な設計は遠隔サーバとの通信の不
所望のコストを導入する。時々、AIXオペレーティン
グ・システム中のファイルは、分散環境中の異なったノ
ードに存在し得る多くの異なったプロセスによって同時
にオープンされる。AIXオペレーティング・システム
におけるファイル及びレコードのロックに関して何らか
の設計を行なうと、単純で一般的な場合には上記単純な
設計のコストを避は且つより一般的でないより複雑な場
合には効率的でなくとも正しく動作するであろう。本明
細書中で述べる発明は、これらの相反する目的を達成す
る。
この問題に対する1つの解は、スリーブ・リスト及びロ
ック・リストのコピーを、それが有用であるような全て
のノードにおいて保持する事である。この方式に伴なう
問題は、1つのリストがマスクに指定されなければ、変
更が行なわれるにつれてリストが互いに矛盾を含むよう
になる事である。しかしマスクを指定した場合には、全
ての変更がマスクとの間で通信されなければならず、単
純な設計を上回る利益はない。また、各リストに対する
変更を、そのリストのコピーを持つ他のノードとの間で
注意深く交渉するようにすると、ネットワーク・トラフ
ィックに付加的な不所望のオーバーヘッドが生じ、ロッ
クが変更される毎に遅延を生じる。
ック・リストのコピーを、それが有用であるような全て
のノードにおいて保持する事である。この方式に伴なう
問題は、1つのリストがマスクに指定されなければ、変
更が行なわれるにつれてリストが互いに矛盾を含むよう
になる事である。しかしマスクを指定した場合には、全
ての変更がマスクとの間で通信されなければならず、単
純な設計を上回る利益はない。また、各リストに対する
変更を、そのリストのコピーを持つ他のノードとの間で
注意深く交渉するようにすると、ネットワーク・トラフ
ィックに付加的な不所望のオーバーヘッドが生じ、ロッ
クが変更される毎に遅延を生じる。
本明細書で説明する発明は、各ファイル毎にロック・リ
ストの1つだけのコピーを保持する。ロック・リスト情
報は、異なったノードに存在する複数のプロセスがファ
イルをオープンしている時にはサーバに保持され、また
ファイルをオープンしている全てのプロセスが単一のノ
ードで走行しているという頻繁な場合にはロック・リス
ト情報は非サーバ・ノードに保持される。複数コピーの
無矛盾性の問題は回避され、且つ全てのオープンが1つ
のノードに関するものである普通の場合には各ロック動
作のためにネットワーク・メツセージを必要とする事の
非効率さも避けられる。
ストの1つだけのコピーを保持する。ロック・リスト情
報は、異なったノードに存在する複数のプロセスがファ
イルをオープンしている時にはサーバに保持され、また
ファイルをオープンしている全てのプロセスが単一のノ
ードで走行しているという頻繁な場合にはロック・リス
ト情報は非サーバ・ノードに保持される。複数コピーの
無矛盾性の問題は回避され、且つ全てのオープンが1つ
のノードに関するものである普通の場合には各ロック動
作のためにネットワーク・メツセージを必要とする事の
非効率さも避けられる。
このアーキテクチャには2つの重要な含意が存在する。
第1に、プロセスはロックをセット又はテストするため
に遠隔手続き呼出しくRPC)を使用しなければならな
い。これらのRPCはファイルのサーバ上で走行する。
に遠隔手続き呼出しくRPC)を使用しなければならな
い。これらのRPCはファイルのサーバ上で走行する。
第2に、ファイルの同期モードが変化する時、ファイル
のロック・リストはクライエントからサーバへ又はその
逆方向に移動されなければならない。iノードのロック
・テーブルのエントリはiノードのファイルのセグメン
ト上のロックに対応する。ロックを表現するために、ロ
ック・リストのエントリは、ロックされたバイト範囲、
ロックの型(読取又は書込)、ロックの所有者を識別す
る情報を含まなければならない。
のロック・リストはクライエントからサーバへ又はその
逆方向に移動されなければならない。iノードのロック
・テーブルのエントリはiノードのファイルのセグメン
ト上のロックに対応する。ロックを表現するために、ロ
ック・リストのエントリは、ロックされたバイト範囲、
ロックの型(読取又は書込)、ロックの所有者を識別す
る情報を含まなければならない。
スタンド・アロンのUNIXオペレーティング・システ
ムでは、ロックを確立しようとするプロセスは、最初に
既存のロックがクリアされるのを待たなければならない
。待機する(スリーブ状態になる)前に、プロセスは待
機を行なった場合にデッドロックが生じない事を保証す
るためにスリーブ・リストをチェックしなげればならな
い。待機中のプロセスは、それが待機しているロック・
テーブルのエントリを指すためにprocテーブルのW
CHANフィールドを使用する。
ムでは、ロックを確立しようとするプロセスは、最初に
既存のロックがクリアされるのを待たなければならない
。待機する(スリーブ状態になる)前に、プロセスは待
機を行なった場合にデッドロックが生じない事を保証す
るためにスリーブ・リストをチェックしなげればならな
い。待機中のプロセスは、それが待機しているロック・
テーブルのエントリを指すためにprocテーブルのW
CHANフィールドを使用する。
分散システムにおいて、待機は容易な事ではない。阻止
しているロックを待機するために2つの方法がある。第
1は、直接的に、ローカルのロック−リスト・エントリ
に対して、第2は間接的にサーバのロック・リスト・エ
ントリに対して待機する事である。直接的待機は上述の
スタンド・アロンの待機と同一である。それは、ロック
・テーブル中でローカルに生じたロックをプロセスが待
機しなければならない時に使われる。ファイルに関する
ロック・リストは1つのノードにしか存在しない事に留
意するのは重要である。呼び出した側のプロセスが同じ
ノード中に存在しなげれば、ロック・リストはサーバ中
に存在する。そのロック・リストが遠隔ノード(サーバ
)中に存在するファイルの領域をロックしようとするプ
ロセスは、間接的にロックを待機する。この間接的な待
機は、サーバテトランザクジョン・プログラムを起動し
ロックを待機するRPCによって行なわれる。スタンド
・アロンのUNIXオペレーティング・システムでは、
ロックが許可されるか又は待機がデッドロックを生じ得
るならば、プロセスは決してスリーブ状態に入らない。
しているロックを待機するために2つの方法がある。第
1は、直接的に、ローカルのロック−リスト・エントリ
に対して、第2は間接的にサーバのロック・リスト・エ
ントリに対して待機する事である。直接的待機は上述の
スタンド・アロンの待機と同一である。それは、ロック
・テーブル中でローカルに生じたロックをプロセスが待
機しなければならない時に使われる。ファイルに関する
ロック・リストは1つのノードにしか存在しない事に留
意するのは重要である。呼び出した側のプロセスが同じ
ノード中に存在しなげれば、ロック・リストはサーバ中
に存在する。そのロック・リストが遠隔ノード(サーバ
)中に存在するファイルの領域をロックしようとするプ
ロセスは、間接的にロックを待機する。この間接的な待
機は、サーバテトランザクジョン・プログラムを起動し
ロックを待機するRPCによって行なわれる。スタンド
・アロンのUNIXオペレーティング・システムでは、
ロックが許可されるか又は待機がデッドロックを生じ得
るならば、プロセスは決してスリーブ状態に入らない。
分散型システムでは、ロック・テーブルと同じノードに
存在しない、ロック要求を行なうプロセスは、少なくと
も短期間、常にスリーブ状態に入る。RPCに関して返
答を待機している間、それはそうしなければならない。
存在しない、ロック要求を行なうプロセスは、少なくと
も短期間、常にスリーブ状態に入る。RPCに関して返
答を待機している間、それはそうしなければならない。
不必要なネットワーク通信を避けるために、dfs−f
lock RPCからの返答を待機するプロセスは、
RPCトランザクション嗜プログラムが阻止的なロック
に関して待機しているのでそれが待機を行なっているの
か又は阻止的なロックは何も見つからなかったがサーバ
中でトランザクション・プログラムがまだ終了していな
いので待機しているのかを知らないであろう。
lock RPCからの返答を待機するプロセスは、
RPCトランザクション嗜プログラムが阻止的なロック
に関して待機しているのでそれが待機を行なっているの
か又は阻止的なロックは何も見つからなかったがサーバ
中でトランザクション・プログラムがまだ終了していな
いので待機しているのかを知らないであろう。
他にロックが存在しないファイルにロックが最初にかけ
られる時、ファイルがFULLSYNCHモード又はR
EADONLYモードでオープンしていれば、サーバの
ロック・テーブルに記入が行なわれ、またファイルがA
SYNCHモードでオープンしていれば、クライエント
のロック・テーブルに記入が行なわれる。オープン、ク
ローズ又はchmodシステム・コールがファイルの同
期モードを変更しない限り、付加的な記入は同じテーブ
ルに行なわれ、−緒に連鎖される。(chmodはファ
イルを強制的ロッキング・モードにする事によってファ
イル同期モードを変更し得る事に注意されたい。強制的
ロッキング・モードのファイルは、ファイルをオープン
しているプロセスの数にかかわりなく、FULLSYN
CHモードであるかのように扱われる。)例えばオープ
ンによりファイルの同期モードが変化する時、ロック・
リスト及びスリーブ状態のプロセスは1つのノードから
他のノードに移動される。
られる時、ファイルがFULLSYNCHモード又はR
EADONLYモードでオープンしていれば、サーバの
ロック・テーブルに記入が行なわれ、またファイルがA
SYNCHモードでオープンしていれば、クライエント
のロック・テーブルに記入が行なわれる。オープン、ク
ローズ又はchmodシステム・コールがファイルの同
期モードを変更しない限り、付加的な記入は同じテーブ
ルに行なわれ、−緒に連鎖される。(chmodはファ
イルを強制的ロッキング・モードにする事によってファ
イル同期モードを変更し得る事に注意されたい。強制的
ロッキング・モードのファイルは、ファイルをオープン
しているプロセスの数にかかわりなく、FULLSYN
CHモードであるかのように扱われる。)例えばオープ
ンによりファイルの同期モードが変化する時、ロック・
リスト及びスリーブ状態のプロセスは1つのノードから
他のノードに移動される。
強制的ロッキング−モードのファイルはFULLSYN
CH同期モードを有し、他のFULLSYNCHファイ
ルと同様に、強制的ロッキング・モードのファイルに関
するロック・リストはサーバに保持される。
CH同期モードを有し、他のFULLSYNCHファイ
ルと同様に、強制的ロッキング・モードのファイルに関
するロック・リストはサーバに保持される。
本発明において考慮しなければならない点は、いつロッ
ク・リスト情報がノード間で移動されるか、どのように
してロック・リスト情報がノード間で移動されるか、及
びどのようにしてロックを待機している間スリープして
いるプロセスを管理するかの問題である。分散環境でフ
ァイル及びレコードのロックを行なうためにAIXで使
用されるデータ構造は上述のスタンド・アロン動作に関
して述べたものと同じであるが、ロックを付加及び除去
するために使われる手続きは分散システムでは異なって
いる。クライエント・ノード、即ちロックすべきファイ
ルを含んでいない分散環境中のノード上のシステム・コ
ール1ockf及びfcntlは、rai’x fl
ockへの呼び出しを用いてインプリメントされる。ル
ーチンraix flockは下記のように動作する。
ク・リスト情報がノード間で移動されるか、どのように
してロック・リスト情報がノード間で移動されるか、及
びどのようにしてロックを待機している間スリープして
いるプロセスを管理するかの問題である。分散環境でフ
ァイル及びレコードのロックを行なうためにAIXで使
用されるデータ構造は上述のスタンド・アロン動作に関
して述べたものと同じであるが、ロックを付加及び除去
するために使われる手続きは分散システムでは異なって
いる。クライエント・ノード、即ちロックすべきファイ
ルを含んでいない分散環境中のノード上のシステム・コ
ール1ockf及びfcntlは、rai’x fl
ockへの呼び出しを用いてインプリメントされる。ル
ーチンraix flockは下記のように動作する。
(raix flock )
入カニ
Vノード・ポインタ、ロックすべきファイルに関するV
ノードへのポインタ ファイル・ポインタ、ロックすべきファイルに関するフ
ァイル構造体へのポインタ、ファイル構造体は現在のオ
フセット及びファイルのオープン・モードを含んでいる 要求、ロック又はアンロックすべき領域の記述を含むf
Lock構造体へのポインタ出カニ ロック要求が許可されると0を返し、さもなければエラ
ー表示を返す 手続: /***金標準形式にする*/ 要求中の範囲(1whence、1 5tart。
ノードへのポインタ ファイル・ポインタ、ロックすべきファイルに関するフ
ァイル構造体へのポインタ、ファイル構造体は現在のオ
フセット及びファイルのオープン・モードを含んでいる 要求、ロック又はアンロックすべき領域の記述を含むf
Lock構造体へのポインタ出カニ ロック要求が許可されると0を返し、さもなければエラ
ー表示を返す 手続: /***金標準形式にする*/ 要求中の範囲(1whence、1 5tart。
及びl 1en)を、1 5tartがファイルの開
始点に対するものであるような形式に変換する; /*エラー又は終了まで試行を続ける*/while(
TRUE) ifファイルがASYNCHモード /*コロ−ル処理を行なう。*/ /*可能になるまで待機して、ファイ*//*ルの代理
iノードをロックする。*//−にファイルの代理iノ
ードはファイ*//末ルのVノード構造体のメンバーに
*//ネよって指示される。 */代理i
ノードがアンロックされるまで待機し、次にそれをロッ
クする; /*以前のステップでスリープしてい*//*たならば
、同期モードを再びテス*//*トする
*/ifファイルがASYNCHモードで
ない/*モードが変更されているので再*//*試行す
る */goto retry
; /*OK。依然としてASYNCHモ*/−ド
*/ if要求が領域のアンロックである 呼び出したプロセスによって所有されているロックに関
してロック・リストを走査する; アンロック要求の範囲と交わるロックの部分をアンロッ
クする; そのロック範囲に関連してスリーブ状態にあったプロセ
スを起こす; goto 5uccess ; / * e l s e 、要求はロックをセットする
事である*/ /*干渉的なロックがあるかテストする*/while
干渉的なロックが存在 /*デッドロックをチェック*/ if要求がデッドロックを生じる /*許可できない*/ goto errorexit ; ifロック・テーブルに余地がない /*呼び出したプロセスをスリーブさ せられない*/ goto errorexit ; /*呼び出したプロセスをスリーブ*//*させる。ロ
ック・テーブルの工*//*ントリはスリーブ・リスト
上に*//*連鎖される。スリーブ−リスト*//*は
、スリーブ状態にあってロツ*//*り範囲がアンロッ
クされるのを*//*待っている各プロセス毎に1つ*
//*のエンh IJを有する。スリーブ*//*・リ
スト上のロック・テーブル*//*エントリはスリーブ
状態のプロ*//*セス及びそのプロセスが待機し*/
/*ているロックを所有しているプ*//*ロセスの両
者を識別する。 */スリーブ・リストにエントリを
付加する;/*こうして、走行中のプロセスを*//*
スリープさせる準備が殆んど整*//*つた。しかし、
最初に、iノー*//*ドがロックされていればそれを
*//*解放する。これは、強制的ロツ*//*キング
・モードでファイルを読*//木取り又は書込みする間
にこのコ*//*−ドが実行されている場合に起*//
*き得る。 */if iノー
ドがロックされている iノードを解放する; /*最終的に準備完了*/ スリーブ、割込みを捕獲する; ifスリーブからの割込み有り goto errorexit ; /*正規のスリーブ解除*/ /*干渉的なロックは終る*/ /*もはやスリーブの必要はない*/ スリーブ・リストからエントリを除去する; /*同期モードが変更されているか?*/if ファイ
ル同期モードがASYNCHでない goto retry ; 百代理iノードが以前にロックされた 代理iノードを再ロックする; /*ループ・バックし再度試行する*//*今や、干渉
的なロックは存在しない*/新しいロックをファイルの
ロック・リストに付加する; if要求がリストに付加できた goto 5uccess ;/*成功*/lse goto errorexit ’else/*フ
ァイルがASYNCHモードでない*/ dfs flock RPCを用いて、サーバにオ
けるロックを要求する; /*dfs flockは、遠隔ロッキング*//*
を行なうためにサーバでaix *//*flock
を起動する */if エラー goto errorexit ’else i
f エラーなし goto 5uccess ’ /*エラーでも成功でもない。同期モ*//*−ド変更
中にロック要求が起きた*//*ので、再試行する。
〕ト/retry : if代理がアンロックされた 代理をアンロックする; /*ループ・バックし再度試行する*/errorex
it : if代理がアシロツクされた 代理をアンロックする; エラーを返す; 5uccess 。
始点に対するものであるような形式に変換する; /*エラー又は終了まで試行を続ける*/while(
TRUE) ifファイルがASYNCHモード /*コロ−ル処理を行なう。*/ /*可能になるまで待機して、ファイ*//*ルの代理
iノードをロックする。*//−にファイルの代理iノ
ードはファイ*//末ルのVノード構造体のメンバーに
*//ネよって指示される。 */代理i
ノードがアンロックされるまで待機し、次にそれをロッ
クする; /*以前のステップでスリープしてい*//*たならば
、同期モードを再びテス*//*トする
*/ifファイルがASYNCHモードで
ない/*モードが変更されているので再*//*試行す
る */goto retry
; /*OK。依然としてASYNCHモ*/−ド
*/ if要求が領域のアンロックである 呼び出したプロセスによって所有されているロックに関
してロック・リストを走査する; アンロック要求の範囲と交わるロックの部分をアンロッ
クする; そのロック範囲に関連してスリーブ状態にあったプロセ
スを起こす; goto 5uccess ; / * e l s e 、要求はロックをセットする
事である*/ /*干渉的なロックがあるかテストする*/while
干渉的なロックが存在 /*デッドロックをチェック*/ if要求がデッドロックを生じる /*許可できない*/ goto errorexit ; ifロック・テーブルに余地がない /*呼び出したプロセスをスリーブさ せられない*/ goto errorexit ; /*呼び出したプロセスをスリーブ*//*させる。ロ
ック・テーブルの工*//*ントリはスリーブ・リスト
上に*//*連鎖される。スリーブ−リスト*//*は
、スリーブ状態にあってロツ*//*り範囲がアンロッ
クされるのを*//*待っている各プロセス毎に1つ*
//*のエンh IJを有する。スリーブ*//*・リ
スト上のロック・テーブル*//*エントリはスリーブ
状態のプロ*//*セス及びそのプロセスが待機し*/
/*ているロックを所有しているプ*//*ロセスの両
者を識別する。 */スリーブ・リストにエントリを
付加する;/*こうして、走行中のプロセスを*//*
スリープさせる準備が殆んど整*//*つた。しかし、
最初に、iノー*//*ドがロックされていればそれを
*//*解放する。これは、強制的ロツ*//*キング
・モードでファイルを読*//木取り又は書込みする間
にこのコ*//*−ドが実行されている場合に起*//
*き得る。 */if iノー
ドがロックされている iノードを解放する; /*最終的に準備完了*/ スリーブ、割込みを捕獲する; ifスリーブからの割込み有り goto errorexit ; /*正規のスリーブ解除*/ /*干渉的なロックは終る*/ /*もはやスリーブの必要はない*/ スリーブ・リストからエントリを除去する; /*同期モードが変更されているか?*/if ファイ
ル同期モードがASYNCHでない goto retry ; 百代理iノードが以前にロックされた 代理iノードを再ロックする; /*ループ・バックし再度試行する*//*今や、干渉
的なロックは存在しない*/新しいロックをファイルの
ロック・リストに付加する; if要求がリストに付加できた goto 5uccess ;/*成功*/lse goto errorexit ’else/*フ
ァイルがASYNCHモードでない*/ dfs flock RPCを用いて、サーバにオ
けるロックを要求する; /*dfs flockは、遠隔ロッキング*//*
を行なうためにサーバでaix *//*flock
を起動する */if エラー goto errorexit ’else i
f エラーなし goto 5uccess ’ /*エラーでも成功でもない。同期モ*//*−ド変更
中にロック要求が起きた*//*ので、再試行する。
〕ト/retry : if代理がアンロックされた 代理をアンロックする; /*ループ・バックし再度試行する*/errorex
it : if代理がアシロツクされた 代理をアンロックする; エラーを返す; 5uccess 。
if代理がアンロックされた
代理をアンロックする;
0を返す・;
この関数raix flockは、遠隔ファイルに関す
る1ockf又はfcntlへの呼び出しによって起動
される。即ち、クライエント・ノードのプロセスが、サ
ーバφノードのファイルに対して1ockf又はfcn
tlを使用する時、クライエントにおいてraix
flockが実行される。クライエントでASYNCH
ファイル同期モードでファイルがオープンされると、r
aix flockはローカル動作しか実行しない。
る1ockf又はfcntlへの呼び出しによって起動
される。即ち、クライエント・ノードのプロセスが、サ
ーバφノードのファイルに対して1ockf又はfcn
tlを使用する時、クライエントにおいてraix
flockが実行される。クライエントでASYNCH
ファイル同期モードでファイルがオープンされると、r
aix flockはローカル動作しか実行しない。
またクライエントでファイルがA S Y N CH以
外のモードでオープンされると、raix flock
はdfa flock RP、Cを使用し、サーバ
においてカーネル・プロセスを走行させる。このカーネ
ル・プロセスは、この場合にファイルのロック・リスト
が存在する、サーバにおいて指定範囲をロック又はアン
ロックする。
外のモードでオープンされると、raix flock
はdfa flock RP、Cを使用し、サーバ
においてカーネル・プロセスを走行させる。このカーネ
ル・プロセスは、この場合にファイルのロック・リスト
が存在する、サーバにおいて指定範囲をロック又はアン
ロックする。
クライエントにより送られたdfs flock R
PCは、サーバにおいて、カーネル・プロセスにより、
dfs flock関数を走行させる。dfs f
lock関数の動作は下記のように記述できる。
PCは、サーバにおいて、カーネル・プロセスにより、
dfs flock関数を走行させる。dfs f
lock関数の動作は下記のように記述できる。
(dfs flock )
入カニ
(dfs flock RPCの一部として受は取
る) ファイル・ハンドル、ロックすべきファイルに関するフ
ァイル・ハンドル ファイル構造体、現在のオフセット及びファイルのオー
プン働モードを含んでいる、ロックすべきファイルに関
するファイル構造体要求、ロック又はアンロックすべき
領域の記述を含む構造体 出カニ (dfs flock RPCに対する返答の一部
として返される) ロック要求が許可されると0を返す エラーの場合はエラ一番号を返す 動作が失敗し、同期モード変更により再試行すべき場合
にはEBUSYを返す 手続き: if ファイル争ハンドルに対応するVノードが存在し
ない /*ファイルはもはやオープンして℃・ない*/返答に
エラーを送る; /*要求者は依然として返答を待ち続げ*//*る事は
できない。というのはそれは*//*ファイルがまだオ
ープンしていた事*// 〕+=を意味するからである
木/aix flockを使ってロッ
ク動作を行なう;/*aix flockはvn
flockを通じ*//*て間接的に呼び出される
*/if エラー 返答にエラーを送る; else if EBUSY 返答KEBUSYを送る; else 成功の表示を有する返答を送る(これは確認返答が要求
される); if確認返答が、どのプロセスも返答を受は取らなかっ
た事を示す /*元の要求を出したプロセスは終了*//*シた。従
つズ元の要求されたロツ*//*りをアンロックする
*/dfs fLock関数は、dfs
flock RPC要求に応答してサーバでロッキ
ングを行なうためにvn 1ockf vノード動
作を起動する。サーバのvn 1ockf’ Vノー
ド動作はaix flock関数の呼び出しに写像さ
れる。この関数はraix−floakルーチンに類似
しているが、ファイル拳アクセス構造体のロックの操作
に関係している。
る) ファイル・ハンドル、ロックすべきファイルに関するフ
ァイル・ハンドル ファイル構造体、現在のオフセット及びファイルのオー
プン働モードを含んでいる、ロックすべきファイルに関
するファイル構造体要求、ロック又はアンロックすべき
領域の記述を含む構造体 出カニ (dfs flock RPCに対する返答の一部
として返される) ロック要求が許可されると0を返す エラーの場合はエラ一番号を返す 動作が失敗し、同期モード変更により再試行すべき場合
にはEBUSYを返す 手続き: if ファイル争ハンドルに対応するVノードが存在し
ない /*ファイルはもはやオープンして℃・ない*/返答に
エラーを送る; /*要求者は依然として返答を待ち続げ*//*る事は
できない。というのはそれは*//*ファイルがまだオ
ープンしていた事*// 〕+=を意味するからである
木/aix flockを使ってロッ
ク動作を行なう;/*aix flockはvn
flockを通じ*//*て間接的に呼び出される
*/if エラー 返答にエラーを送る; else if EBUSY 返答KEBUSYを送る; else 成功の表示を有する返答を送る(これは確認返答が要求
される); if確認返答が、どのプロセスも返答を受は取らなかっ
た事を示す /*元の要求を出したプロセスは終了*//*シた。従
つズ元の要求されたロツ*//*りをアンロックする
*/dfs fLock関数は、dfs
flock RPC要求に応答してサーバでロッキ
ングを行なうためにvn 1ockf vノード動
作を起動する。サーバのvn 1ockf’ Vノー
ド動作はaix flock関数の呼び出しに写像さ
れる。この関数はraix−floakルーチンに類似
しているが、ファイル拳アクセス構造体のロックの操作
に関係している。
このロック及びiノードに対するロックを取得する試み
の後で、aix flockはファイルの同期モード
の変化する可能性を許容しなければならない。これらの
ロックを待機する間にスリーピングが起きる可能性があ
る。スリーブ期間中、さらに別のオーブン又は゛クロー
ズがそのファイルに対して行なわれる事もあり得る。
の後で、aix flockはファイルの同期モード
の変化する可能性を許容しなければならない。これらの
ロックを待機する間にスリーピングが起きる可能性があ
る。スリーブ期間中、さらに別のオーブン又は゛クロー
ズがそのファイルに対して行なわれる事もあり得る。
aix flockの詳細な動作の説明は次の通りで
ある。
ある。
(aix fLock )
入カニ
Vノード・ポインタ、ロックすべきファイルに関するV
ノードへのポインタ ファイル・ポインタ、ロックすべきファイルに関するフ
ァイル構造体へのポインタ、ファイル構造体は現在のオ
フセット及びファイルのオーブンΦモードを含んでいる 要求、ロック又はアンロックすべき領域の記述を含むf
lock構造体へのポインタ出カニ ロック要求が許められれば0を返し、さもなければエラ
ー表示を返す 手続: /*要求を標準形式にする*/ 要求中の範囲(l whence、1 5tart及
び1 1en)を、l 5tartがファイルの開始
点に対するような形式に変換する; /*ロック・リストを取得する*/ ロック・リストはiノード構造体のメンバーによって指
示され、1ノ一ド構造体はVノード構造体のメンバーに
よって指示される; /*ファイル・アクセス・ロックを得る*/ファイル拳
アクセス・ロックを待機し、それをロックする: /*スリーブ状態であった可能性がある、*//*モー
ドをチェックする */if ファイル同
期モードがASYNCHgoto ebus7 : /*サーバでファイルがオープンしてぃ*//*る時に
この事は起こり得ない事に注*//*意
*//*要求を試みる*/ if要求がアンロックを行なう事 reclockを呼び出したプロセスによって所有され
ているロックを求めて、ロック・リストを走査する; 要求の範囲と交わるそのようなロックの部分をアンロッ
クするニ アンロックされた部分を有していたロック範囲の上でス
リーブしていたプロセスを起こす;goto 5uc
cess ; /*そうでなげれば、要求はロックをセットする事であ
る*/ /★スフアイル上干渉的なロックをテストするに/wh
i 1 e 干渉的なロックが存在する/*デッドロ
ックをチェックする*/ if要求がデッドロックを生じる goto errorexit ; 1fロツク・テーブル中に余地がない /*即ち呼び出したプロセスをスリーブ+://*させ
ることができない */goto err
orexit ; /*呼び出しを行なったプロセスをスリ*//*−ブさ
せる; 木//*ロック・テー
ブルのエントリはスリ*//*−プ・リストに連鎖され
る;*/ /*スリーブ・リストは、スリーブ状態*//*にあっ
てロック範囲がアンロックさ*//*れるのを待機して
いるプロセス毎に*///本1つのエントリを有する;
★//*スリーブφリスト上のロック・チー
*2//*プル・エントリはスリーブ中のプロ*//*
セス及びそれが待機しているロック*//*を所有して
いるプロセスを識別する*/エントリをスリーブ・リス
トに付加する;/*こうして、走行中のプロセスをスリ
*//*−プさせる用意が殆んど整った;*//*シか
し最初に、iノードがロックさ*//*れていれば、そ
れを解放する;*//*これはこのノードが強制的ロツ
キン*//*グ・モードでファイルの読取り又は*//
*書込みを行なっている場合に生じ得*//*る
*/if iノードがロックさ
れている iノードを解放する; ファイル・アクセス構造体のロックを解放する; /*最終的に準備完了*/ スリーブ、割込みを捕獲する: if スリーブからの割込み goto errorexit ; if 同期モードがASYNCH /*スリーブ中にそれが変化した*/ goto ebusy ;/*再試行を要する*/ス
リーブ・リストからエントリを除去する;ファイル・ア
クセス構造体ロック全ロックする; if iノードが以前にロックされているiノードを再
ロックする; /*ここでループ・バックし、リスト全*//*体を再
び走査する、スリーブ状態の*//*間にロックが変化
した可能性がある*//*干渉的なロックは存在しない
*/ 新しいロックをファイルのロック・リストに付加する; /*いくつかのエン) IJが併合された可能性に注意
*/ if要求をロック・リストに付加する事ができた goto 5uccess ;/*成功*/lse /*エラー、おそらく、ロック・テープ*//*ルにも
う余地がないのであろう */goto erro
rexit ; errorextt : ファイル・アクセス構造体のロックを解放する; エラーを返す; ebusy : ファイル・アクセス構造体のロックを解放する; EBUSYを返す; 5uccess : 0を返す; ファイル同期モードの変化が起きている期間中に、ファ
イルを記述した構造体は、サーバ及びある非サーバ・ノ
ードの両者で更新されている。更新には遠隔ノードとの
通信が関与するので、更新が開始した後、それが終了す
る以前、プロセッサは優先使用され得る。同期モードが
変更されつつある期間中にファイルに関する、部分的し
て更新され従って矛盾した情報をプロセスが見い出す事
を防止するために、AIXオペレーティング・システム
はファイル・アクセス構造のロックを使用する。各オー
プンされたファイルはファイル・アクセス構造体ロック
を有し、これはファイルに関するオペレーティング・シ
ステム情報がおそらく矛盾している事を他のプロセスに
示すためにセットし得る。
ノードへのポインタ ファイル・ポインタ、ロックすべきファイルに関するフ
ァイル構造体へのポインタ、ファイル構造体は現在のオ
フセット及びファイルのオーブンΦモードを含んでいる 要求、ロック又はアンロックすべき領域の記述を含むf
lock構造体へのポインタ出カニ ロック要求が許められれば0を返し、さもなければエラ
ー表示を返す 手続: /*要求を標準形式にする*/ 要求中の範囲(l whence、1 5tart及
び1 1en)を、l 5tartがファイルの開始
点に対するような形式に変換する; /*ロック・リストを取得する*/ ロック・リストはiノード構造体のメンバーによって指
示され、1ノ一ド構造体はVノード構造体のメンバーに
よって指示される; /*ファイル・アクセス・ロックを得る*/ファイル拳
アクセス・ロックを待機し、それをロックする: /*スリーブ状態であった可能性がある、*//*モー
ドをチェックする */if ファイル同
期モードがASYNCHgoto ebus7 : /*サーバでファイルがオープンしてぃ*//*る時に
この事は起こり得ない事に注*//*意
*//*要求を試みる*/ if要求がアンロックを行なう事 reclockを呼び出したプロセスによって所有され
ているロックを求めて、ロック・リストを走査する; 要求の範囲と交わるそのようなロックの部分をアンロッ
クするニ アンロックされた部分を有していたロック範囲の上でス
リーブしていたプロセスを起こす;goto 5uc
cess ; /*そうでなげれば、要求はロックをセットする事であ
る*/ /★スフアイル上干渉的なロックをテストするに/wh
i 1 e 干渉的なロックが存在する/*デッドロ
ックをチェックする*/ if要求がデッドロックを生じる goto errorexit ; 1fロツク・テーブル中に余地がない /*即ち呼び出したプロセスをスリーブ+://*させ
ることができない */goto err
orexit ; /*呼び出しを行なったプロセスをスリ*//*−ブさ
せる; 木//*ロック・テー
ブルのエントリはスリ*//*−プ・リストに連鎖され
る;*/ /*スリーブ・リストは、スリーブ状態*//*にあっ
てロック範囲がアンロックさ*//*れるのを待機して
いるプロセス毎に*///本1つのエントリを有する;
★//*スリーブφリスト上のロック・チー
*2//*プル・エントリはスリーブ中のプロ*//*
セス及びそれが待機しているロック*//*を所有して
いるプロセスを識別する*/エントリをスリーブ・リス
トに付加する;/*こうして、走行中のプロセスをスリ
*//*−プさせる用意が殆んど整った;*//*シか
し最初に、iノードがロックさ*//*れていれば、そ
れを解放する;*//*これはこのノードが強制的ロツ
キン*//*グ・モードでファイルの読取り又は*//
*書込みを行なっている場合に生じ得*//*る
*/if iノードがロックさ
れている iノードを解放する; ファイル・アクセス構造体のロックを解放する; /*最終的に準備完了*/ スリーブ、割込みを捕獲する: if スリーブからの割込み goto errorexit ; if 同期モードがASYNCH /*スリーブ中にそれが変化した*/ goto ebusy ;/*再試行を要する*/ス
リーブ・リストからエントリを除去する;ファイル・ア
クセス構造体ロック全ロックする; if iノードが以前にロックされているiノードを再
ロックする; /*ここでループ・バックし、リスト全*//*体を再
び走査する、スリーブ状態の*//*間にロックが変化
した可能性がある*//*干渉的なロックは存在しない
*/ 新しいロックをファイルのロック・リストに付加する; /*いくつかのエン) IJが併合された可能性に注意
*/ if要求をロック・リストに付加する事ができた goto 5uccess ;/*成功*/lse /*エラー、おそらく、ロック・テープ*//*ルにも
う余地がないのであろう */goto erro
rexit ; errorextt : ファイル・アクセス構造体のロックを解放する; エラーを返す; ebusy : ファイル・アクセス構造体のロックを解放する; EBUSYを返す; 5uccess : 0を返す; ファイル同期モードの変化が起きている期間中に、ファ
イルを記述した構造体は、サーバ及びある非サーバ・ノ
ードの両者で更新されている。更新には遠隔ノードとの
通信が関与するので、更新が開始した後、それが終了す
る以前、プロセッサは優先使用され得る。同期モードが
変更されつつある期間中にファイルに関する、部分的し
て更新され従って矛盾した情報をプロセスが見い出す事
を防止するために、AIXオペレーティング・システム
はファイル・アクセス構造のロックを使用する。各オー
プンされたファイルはファイル・アクセス構造体ロック
を有し、これはファイルに関するオペレーティング・シ
ステム情報がおそらく矛盾している事を他のプロセスに
示すためにセットし得る。
上述の手続きaix flockは、ある条件の下で干
渉的なロックに関して待機しながら、スリーブ状態にな
る。そうする前にファイル・アクセス構造体ロックが解
放される事が重要である。もしaix flockが、
何らかのロックを待機する前にファイル・アクセス構造
体を解放しなければ、デッドロックが生じ得る。
渉的なロックに関して待機しながら、スリーブ状態にな
る。そうする前にファイル・アクセス構造体ロックが解
放される事が重要である。もしaix flockが、
何らかのロックを待機する前にファイル・アクセス構造
体を解放しなければ、デッドロックが生じ得る。
ファイル・アクセス構造体に関するソース・コードを下
記に与える。詳細な論理を示すために説明的な情報を付
けた。
記に与える。詳細な論理を示すために説明的な情報を付
けた。
5TRUCT FILE ACCESS(/〕七フ
ァイル・アクセス構造体ポインタ」′/5TRUCT
FILE ACCESS *FA NEXT
; /*ファイル・アクセス構造体フラグ*/5HORT
FA FLAG;/*ファイル・アクセス構造
体トータル・ユーザー*/ 5HORT FA C0UNT; /*ファイル・アクセス構造体読取専用カウント*/ 5I(ORT FA 0ROCNT;/*ファイル
・アクセス構造体読取/書込カウント*/ 5)(ORT FA 0RWCNT;/*ファイル
・アクセス構造体実行中プロセス*/5HORT
FA TXTCNT;/*ファイル争アクセス構造体
ノード構造ポインタ*/ 5TRUCT N0DE’*FA NID;/*フ
ァイル・アクセス構造体ノードID’*/INT
FA NID; /*ファイル・アクセス構造体代理iノード・ポインタ
*/ 5TRUCT lN0DE *FA SIP;)
;ファイル・アクセス構造ロック、fasロックは、分
散型ファイル・システム(DFS)でオーブン・ファイ
ルに対するiノードおよび代理iノードの使用を同期す
るために使われる。この同期はデッドロック状況を回避
するために実行される。デッドロック状態は、iノード
および代理iノードがロックされた場合に発生し得る。
ァイル・アクセス構造体ポインタ」′/5TRUCT
FILE ACCESS *FA NEXT
; /*ファイル・アクセス構造体フラグ*/5HORT
FA FLAG;/*ファイル・アクセス構造
体トータル・ユーザー*/ 5HORT FA C0UNT; /*ファイル・アクセス構造体読取専用カウント*/ 5I(ORT FA 0ROCNT;/*ファイル
・アクセス構造体読取/書込カウント*/ 5)(ORT FA 0RWCNT;/*ファイル
・アクセス構造体実行中プロセス*/5HORT
FA TXTCNT;/*ファイル争アクセス構造体
ノード構造ポインタ*/ 5TRUCT N0DE’*FA NID;/*フ
ァイル・アクセス構造体ノードID’*/INT
FA NID; /*ファイル・アクセス構造体代理iノード・ポインタ
*/ 5TRUCT lN0DE *FA SIP;)
;ファイル・アクセス構造ロック、fasロックは、分
散型ファイル・システム(DFS)でオーブン・ファイ
ルに対するiノードおよび代理iノードの使用を同期す
るために使われる。この同期はデッドロック状況を回避
するために実行される。デッドロック状態は、iノード
および代理iノードがロックされた場合に発生し得る。
スタンドアロンのAIXオペレーティング・システムで
は、ファイルFに対するアクセスを必要とするシステム
・コールの実行は、そのファイル 。
は、ファイルFに対するアクセスを必要とするシステム
・コールの実行は、そのファイル 。
に対するシステム・コールの全実行時間中にFに対する
iノードをロックすることにより直列化される。DFS
では、ファイルFが遠隔ノードCでオープンされている
場合は、ファイルFを表わす代理iノードがノードCで
作成される。したがって、2つの資源が関係する。すな
わち、ファイルが存在するサーバ・ノードにおける特定
のファイルに対するiノードと、ファイルがオーブンさ
れているクライエント・ノードにおける代理iノードで
ある。クライエントCで実行されるシステム・コールを
直列化するため、各コールの実行時間中ファイルFに対
する代理iノードがロックされる。クライエント・キャ
ッシュで使用可能でないデータ・ブロックを読み取るた
めにサーバに対するアクセスが必要な場合、ファイルF
に対するiノードもロックされる。
iノードをロックすることにより直列化される。DFS
では、ファイルFが遠隔ノードCでオープンされている
場合は、ファイルFを表わす代理iノードがノードCで
作成される。したがって、2つの資源が関係する。すな
わち、ファイルが存在するサーバ・ノードにおける特定
のファイルに対するiノードと、ファイルがオーブンさ
れているクライエント・ノードにおける代理iノードで
ある。クライエントCで実行されるシステム・コールを
直列化するため、各コールの実行時間中ファイルFに対
する代理iノードがロックされる。クライエント・キャ
ッシュで使用可能でないデータ・ブロックを読み取るた
めにサーバに対するアクセスが必要な場合、ファイルF
に対するiノードもロックされる。
サーバにあるファイルFに対するiノードとクライエン
トにあるファイルFに対する代理iノードを各システム
・コールの全実行時間中ロックすると、2つの資源を獲
得する順序が常に同じ順序で実施されない場合、デッド
ロック状況をもたらす可能性がある。一般には、代理i
ノードが最初にロックされ、次に遠隔手順コール(RP
C)を介してサーバがアクセスされ、iノードがロック
される。しかし、上記の順序には幾つかの例外がある。
トにあるファイルFに対する代理iノードを各システム
・コールの全実行時間中ロックすると、2つの資源を獲
得する順序が常に同じ順序で実施されない場合、デッド
ロック状況をもたらす可能性がある。一般には、代理i
ノードが最初にロックされ、次に遠隔手順コール(RP
C)を介してサーバがアクセスされ、iノードがロック
される。しかし、上記の順序には幾つかの例外がある。
特定の条件の下で、サーバが17−ドをロックし、次に
、代理iノードのロックを要求するRPCをクライエン
トに送ることができる。
、代理iノードのロックを要求するRPCをクライエン
トに送ることができる。
2つの動作が現在01および02を実行している以下の
状況のいずれか一方でデッドロックが発生する可能性が
ある(01は読取り動作、02はオーブン動作である)
。
状況のいずれか一方でデッドロックが発生する可能性が
ある(01は読取り動作、02はオーブン動作である)
。
a)01がクライエント・ノードで実行されている。0
1は代理iノードをロックし、読取り動作のためサーバ
でiノードをロックしようとする。
1は代理iノードをロックし、読取り動作のためサーバ
でiノードをロックしようとする。
b)02がサーバで実行されている。02は1ノードを
ロックし、ファイルをオープンするためにクライエント
・ノードに対してRPCを開始する。
ロックし、ファイルをオープンするためにクライエント
・ノードに対してRPCを開始する。
クライエント・ノードでのRPC要求は代理iノードを
待って、それをロックしてから実行される。
待って、それをロックしてから実行される。
両方の動作が実行されており、かつ2つの同じ資源を必
要とし、それぞれ1つの資源を獲得し、かつ他方のロッ
クされた資源を待っているので、デッドロック状態が存
在する。原因を調べるに当たっては、サーバからクライ
エントに対するRPCの実行中にデッドロックが発生す
ることに留意されたい。サーバ上のiノードがまずロッ
クされ、代理iノードをロックしようとする試みがなさ
れる。これは、代理iノードがまずロックされ、次にi
ノードをロックするためにRPCを送る大部分の場合と
は逆である。
要とし、それぞれ1つの資源を獲得し、かつ他方のロッ
クされた資源を待っているので、デッドロック状態が存
在する。原因を調べるに当たっては、サーバからクライ
エントに対するRPCの実行中にデッドロックが発生す
ることに留意されたい。サーバ上のiノードがまずロッ
クされ、代理iノードをロックしようとする試みがなさ
れる。これは、代理iノードがまずロックされ、次にi
ノードをロックするためにRPCを送る大部分の場合と
は逆である。
上記間組の発生を防ぐだめ、サーバは、代理1ノードを
ロックするためのRP Ceクライエントに出す前に、
iノードをアンロックすることができる。オープン動作
の実行中にiノードをアンロックすると、上記の問題が
解決される。しかし、そうすると複数のオープン動作ま
たはクローズ動作あるいはその両方が同時にサーバで行
なわれる可能性があるので、オープン・ファイルのため
の同期モード変更の管理が複雑になる。第17図に示す
ようなもう1つの問題が生じる可能性もある。
ロックするためのRP Ceクライエントに出す前に、
iノードをアンロックすることができる。オープン動作
の実行中にiノードをアンロックすると、上記の問題が
解決される。しかし、そうすると複数のオープン動作ま
たはクローズ動作あるいはその両方が同時にサーバで行
なわれる可能性があるので、オープン・ファイルのため
の同期モード変更の管理が複雑になる。第17図に示す
ようなもう1つの問題が生じる可能性もある。
第17図に示すように、ファイルFが、クライエント・
ノードC−1内のただ1つのプロセスによって、ASY
NCモードでオープンされている。
ノードC−1内のただ1つのプロセスによって、ASY
NCモードでオープンされている。
2つの動作が進行中である。すなわち、クライエントC
−1からのクローズ動作と、別のクライエントC−2か
らの、同じファイルFに対・するオープン動作60であ
る。クライエントc−1からのクローズ動作は代理iノ
ード(使用カウント1を有する)をロックし、「dfs
closeJRPc50をサーバに送る。クライエ
ントc−2からのオープン動作は[dfs open
J70をサーバに送る。このRPCはサーバに到達し、
クライエントC−1からのl’−dfs close
JRPc50の前に実行される。ファイルFに対する同
期モードはASYNGなので、サーバはiノードをアン
ロックし、[dfs chng 5ync mo
de(dfs同期モード変更)JRPC80をクライエ
ントc−iに送り、ファイルFがFULLSYNCモー
ドに変更されることを要求する。このRPCがクライエ
ントC−1に到着し、代理iノードがアンロックされる
のを待つ。次に、「dfs closeJRPc50
がサーバに到着する。ファイルFに対するiノードはサ
ーバではロックされないので、クローズ動作がサーバで
実行され、f−dfs close−Ack(dfs
クローズ肯定応答)JRPC90がクライエントC−1
に送られる。ld’fs close−AckJRP
C90がクライエントC−1に到着すると、代理iノー
ドに関する使用カウントが減分され、使用カウントの値
が0になったので、代理iノードは100に示すように
解放される。これにより、同期モード変更をクライエン
トC−1に適用するための代理iノードは残らない。
−1からのクローズ動作と、別のクライエントC−2か
らの、同じファイルFに対・するオープン動作60であ
る。クライエントc−1からのクローズ動作は代理iノ
ード(使用カウント1を有する)をロックし、「dfs
closeJRPc50をサーバに送る。クライエ
ントc−2からのオープン動作は[dfs open
J70をサーバに送る。このRPCはサーバに到達し、
クライエントC−1からのl’−dfs close
JRPc50の前に実行される。ファイルFに対する同
期モードはASYNGなので、サーバはiノードをアン
ロックし、[dfs chng 5ync mo
de(dfs同期モード変更)JRPC80をクライエ
ントc−iに送り、ファイルFがFULLSYNCモー
ドに変更されることを要求する。このRPCがクライエ
ントC−1に到着し、代理iノードがアンロックされる
のを待つ。次に、「dfs closeJRPc50
がサーバに到着する。ファイルFに対するiノードはサ
ーバではロックされないので、クローズ動作がサーバで
実行され、f−dfs close−Ack(dfs
クローズ肯定応答)JRPC90がクライエントC−1
に送られる。ld’fs close−AckJRP
C90がクライエントC−1に到着すると、代理iノー
ドに関する使用カウントが減分され、使用カウントの値
が0になったので、代理iノードは100に示すように
解放される。これにより、同期モード変更をクライエン
トC−1に適用するための代理iノードは残らない。
この問題に対する解決策は、それを待つ間に同期モード
変更手順に代理iノードの使用カウントを増分させるこ
とである。しかし、この時点では、ファイルFはC−1
でオープンされていす、その同期モードはFULLSY
NCHではないので、この手法はファイル管理システム
にとって一層の管理上の問題をもたらす。それよりも望
ましい手法は新しいロック、すなわちファイル・アクセ
ス構造体ロック(fasロック)を導入することである
。fasロックを使用することにより、iノードは重要
な資源ではなくなる。2つの重要な資源はクライエント
・ノードにある代理iノードとサーバにあるfasロッ
クである。デッドロックを防ぐには、fasロックの保
持を必要とするクライエント・ノードで実行中の動作が
、RPCがサーバに送られる前に、代理iノードをアン
ロックしなげればならない。
変更手順に代理iノードの使用カウントを増分させるこ
とである。しかし、この時点では、ファイルFはC−1
でオープンされていす、その同期モードはFULLSY
NCHではないので、この手法はファイル管理システム
にとって一層の管理上の問題をもたらす。それよりも望
ましい手法は新しいロック、すなわちファイル・アクセ
ス構造体ロック(fasロック)を導入することである
。fasロックを使用することにより、iノードは重要
な資源ではなくなる。2つの重要な資源はクライエント
・ノードにある代理iノードとサーバにあるfasロッ
クである。デッドロックを防ぐには、fasロックの保
持を必要とするクライエント・ノードで実行中の動作が
、RPCがサーバに送られる前に、代理iノードをアン
ロックしなげればならない。
サーバからクライエントに対してRPCを発生する動作
は、RPCを送る前に、fasロックを獲得しなければ
ならな〜・。UNIXオペレーティング・システムまた
はAIXオペレーティング・システム環境における状況
の例は以下の通りである。
は、RPCを送る前に、fasロックを獲得しなければ
ならな〜・。UNIXオペレーティング・システムまた
はAIXオペレーティング・システム環境における状況
の例は以下の通りである。
遠隔手順コール(RPC):
*DFS 0PEN *DFS’CREAT
E*DFS CLO8E *DFS GET
ATTR*DFS SET ATTR*DFS
LOOKUP*DFS CHNG 5YNCMO
DEサーバ・フ0 セスカラのLTNIXシステム・コ
ール:*0PEN *CLO8E*
CREAT *5TAT*FULLS
TAT *CHMOD*EXIT 上記u N I Xオペレーティング−システムおよヒ
A I X、t−ベレーテイング串システムの動作は以
下のvn動作に対応する。
E*DFS CLO8E *DFS GET
ATTR*DFS SET ATTR*DFS
LOOKUP*DFS CHNG 5YNCMO
DEサーバ・フ0 セスカラのLTNIXシステム・コ
ール:*0PEN *CLO8E*
CREAT *5TAT*FULLS
TAT *CHMOD*EXIT 上記u N I Xオペレーティング−システムおよヒ
A I X、t−ベレーテイング串システムの動作は以
下のvn動作に対応する。
*vn open *vn create
*vn close *vn getat
tr*vn 5etattr *vn 1
ookupvn動作実行の一例を以下に考察する。動作
(オープン)はクライエント・ノードで実行され、何ら
かのローカル処理が必要な場合は、通常通り代理iノー
ドをロックする。上記に列挙したRPCの1つ(dfs
オープン)がサーバに送られた場合、RPCが送られる
前に、代理iノードがアンロックされる。す二バでは、
RPC要求はfasロックをロックするか、あるいはf
asロックが使用中の場合はそれを待ち、次に、ファイ
ルFに対するiノードをロックする。RPC要求がロー
カル・サーバ動作である場合は、実行中のプロセスはf
asロックを獲得し、次にiノードをロックする。
*vn close *vn getat
tr*vn 5etattr *vn 1
ookupvn動作実行の一例を以下に考察する。動作
(オープン)はクライエント・ノードで実行され、何ら
かのローカル処理が必要な場合は、通常通り代理iノー
ドをロックする。上記に列挙したRPCの1つ(dfs
オープン)がサーバに送られた場合、RPCが送られる
前に、代理iノードがアンロックされる。す二バでは、
RPC要求はfasロックをロックするか、あるいはf
asロックが使用中の場合はそれを待ち、次に、ファイ
ルFに対するiノードをロックする。RPC要求がロー
カル・サーバ動作である場合は、実行中のプロセスはf
asロックを獲得し、次にiノードをロックする。
DFS CHNG 5YNCMODEまたはDFS
GET ATTRRPCがサーバからクライエン
トに送られる場合、RPCが送られる前に、iノードが
アノロックされる。したがって、サーバは、RPCが送
られた後で、読取りおよび書込み動作を受諾することが
できる。すべてのクライエントからの応答メツセージを
受は取ると、サーバはiノードをロックして、残りのロ
ーカル処理を終了する。動作がクライエント・ノードで
開始された場合は、そのクライエントに肯定応答が送ら
れる。iノードが次にアノロックされ、fasロックが
解除される。
GET ATTRRPCがサーバからクライエン
トに送られる場合、RPCが送られる前に、iノードが
アノロックされる。したがって、サーバは、RPCが送
られた後で、読取りおよび書込み動作を受諾することが
できる。すべてのクライエントからの応答メツセージを
受は取ると、サーバはiノードをロックして、残りのロ
ーカル処理を終了する。動作がクライエント・ノードで
開始された場合は、そのクライエントに肯定応答が送ら
れる。iノードが次にアノロックされ、fasロックが
解除される。
fasロックは、iノードの使用を同期化し、デッドロ
ック動作を回避する手段を提供する。それは分散ファイ
ル・システムに投入されなければならない必要なソフト
ウェア・オーバーヘッドを最小限のものにする。
ック動作を回避する手段を提供する。それは分散ファイ
ル・システムに投入されなければならない必要なソフト
ウェア・オーバーヘッドを最小限のものにする。
F1発明の効果
本発明によれば、分散型データ処理システムにおいて効
果的なファイルのロックが実現される。
果的なファイルのロックが実現される。
第1図は本発明が適用される典型的な分散型データ処理
システムのブロック図、 第2図は典型的なスタンドアロン型プロセッサ・システ
ムのブロック図、 第6図は読取りシステム・コールが発行された時にオペ
レーティング・システムが行なうステップを示す図、 第4図はローカル・ノードにおけるファイル管理のため
に使われるデータ構造の一例を示す図、第5図及び第6
図はローカル・ノードにおけるマウント動作の前後のフ
ァイル管理用データ構造の例を示す図、 第7図は第1図と同様の分散型データ処理システムのブ
ロック図、 第8図は分散型ファイル・システムのだめのデータ構造
の一例を示す図、 第9A図〜第9F図は第8図の各要素のブロック図、 第10図、第11図及び第12図は、分散型システムの
ローカル・ノード及び遠隔ノードにおけるファイル管理
用データ構造の一例を示す図、第15図は第7図の分散
型データ処理システムをより詳細に示すブロック図、 第14図は同期モードの状態図、 第15図は第13図と同様のブロック図、第16図は第
14図と同様の状態図、 第17図はファイル・アクセス動作の一例を示す図、 第18図はfLockデータ構造の図、第19図はロッ
ク・テーブルとiノードとの関係を示す図、 第20図はロック・テーブルとスリーブ中ロック・リス
トとの関係を示す図、 第21図はf ilo ckデータ構造の図である。 出願人 インターフウタナノービジネスφマシーンズ
eコ1fレーション代理人 弁理士 頓 宮
孝 −(外1名) 第3図 クライエント −It−ノぐ 第10図 クライエ〉ト サーノに 第11図 フライ1:/ト →トーノ( fs node 第12図
システムのブロック図、 第2図は典型的なスタンドアロン型プロセッサ・システ
ムのブロック図、 第6図は読取りシステム・コールが発行された時にオペ
レーティング・システムが行なうステップを示す図、 第4図はローカル・ノードにおけるファイル管理のため
に使われるデータ構造の一例を示す図、第5図及び第6
図はローカル・ノードにおけるマウント動作の前後のフ
ァイル管理用データ構造の例を示す図、 第7図は第1図と同様の分散型データ処理システムのブ
ロック図、 第8図は分散型ファイル・システムのだめのデータ構造
の一例を示す図、 第9A図〜第9F図は第8図の各要素のブロック図、 第10図、第11図及び第12図は、分散型システムの
ローカル・ノード及び遠隔ノードにおけるファイル管理
用データ構造の一例を示す図、第15図は第7図の分散
型データ処理システムをより詳細に示すブロック図、 第14図は同期モードの状態図、 第15図は第13図と同様のブロック図、第16図は第
14図と同様の状態図、 第17図はファイル・アクセス動作の一例を示す図、 第18図はfLockデータ構造の図、第19図はロッ
ク・テーブルとiノードとの関係を示す図、 第20図はロック・テーブルとスリーブ中ロック・リス
トとの関係を示す図、 第21図はf ilo ckデータ構造の図である。 出願人 インターフウタナノービジネスφマシーンズ
eコ1fレーション代理人 弁理士 頓 宮
孝 −(外1名) 第3図 クライエント −It−ノぐ 第10図 クライエ〉ト サーノに 第11図 フライ1:/ト →トーノ( fs node 第12図
Claims (3)
- (1)第1のノードに存在し且つ少なくとも1つの第2
のノード上のプロセスによりアクセス可能なファイルの
所定バイト範囲をロックするためのシステムであつて、 上記第1のノードの上記ファイルに関する少なくとも1
つのロックを記述するデータ構造と、上記少なくとも1
つの第2のノードへ上記データ構造中のデータを移動さ
せる手段とを有するシステム。 - (2)上記ファイルをオープンしている全てのプロセス
が上記第2のノードに存在する時に上記データ構造中の
データが上記第2のノードに移動される特許請求の範囲
第1項記載のシステム。 - (3)上記ファイルが強制的にロック・モードにある時
に上記データ構造中のデータが上記第1のノードに移動
される特許請求の範囲第2項記載のシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US1489187A | 1987-02-13 | 1987-02-13 | |
| US014891 | 1987-02-13 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS63204437A true JPS63204437A (ja) | 1988-08-24 |
| JPH056895B2 JPH056895B2 (ja) | 1993-01-27 |
Family
ID=21768397
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63003281A Granted JPS63204437A (ja) | 1987-02-13 | 1988-01-12 | ロック・システム |
Country Status (4)
| Country | Link |
|---|---|
| EP (1) | EP0278312B1 (ja) |
| JP (1) | JPS63204437A (ja) |
| BR (1) | BR8800631A (ja) |
| DE (1) | DE3851904T2 (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02266461A (ja) * | 1989-04-05 | 1990-10-31 | Nec Corp | データ引き渡し装置 |
| JPH02309445A (ja) * | 1989-05-15 | 1990-12-25 | Internatl Business Mach Corp <Ibm> | データ処理システムのクライエント装置のアクセス制御方法、装置およびコンピユータ・プログラム製品 |
| JPH036751A (ja) * | 1989-05-15 | 1991-01-14 | Internatl Business Mach Corp <Ibm> | フアイル・ロツク方法及び装置 |
| JPH07262074A (ja) * | 1994-03-07 | 1995-10-13 | Internatl Business Mach Corp <Ibm> | キャッシュ管理方法、コンピュータ・ファイル・システム及びキャッシュ装置 |
| JP2000163386A (ja) * | 1998-11-25 | 2000-06-16 | Nec Software Chugoku Ltd | 分散共有メモリシステムおよびその管理方法 |
Families Citing this family (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5226159A (en) * | 1989-05-15 | 1993-07-06 | International Business Machines Corporation | File lock management in a distributed data processing system |
| US5423044A (en) * | 1992-06-16 | 1995-06-06 | International Business Machines Corporation | Shared, distributed lock manager for loosely coupled processing systems |
| US5526491A (en) * | 1992-09-22 | 1996-06-11 | International Business Machines Corporation | System and method for calling selected service procedure remotely by utilizing conditional construct switch statement to determine the selected service procedure in common stub procedure |
| ATE355714T1 (de) | 1993-06-15 | 2006-03-15 | British Tech Group Int | Telekommunikationssystem |
| US5513351A (en) * | 1994-07-28 | 1996-04-30 | International Business Machines Corporation | Protecting a system during system maintenance by usage of temporary filenames in an alias table |
| US5682507A (en) * | 1995-06-07 | 1997-10-28 | Tandem Computers, Incorporated | Plurality of servers having identical customer information control procedure functions using temporary storage file of a predetermined server for centrally storing temporary data records |
| US5630133A (en) * | 1995-06-07 | 1997-05-13 | Tandem Computers, Incorporated | Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment |
| US5790868A (en) * | 1995-06-07 | 1998-08-04 | Tandem Computers, Inc. | Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment |
| US7233946B1 (en) * | 2003-04-11 | 2007-06-19 | Sun Microsystems, Inc. | File interval lock generation interface system and method |
| US20050289143A1 (en) * | 2004-06-23 | 2005-12-29 | Exanet Ltd. | Method for managing lock resources in a distributed storage system |
| JP4892429B2 (ja) | 2007-07-26 | 2012-03-07 | キヤノン株式会社 | 画像形成装置、画像形成装置の制御方法及びプログラム |
| US9575985B2 (en) | 2009-12-07 | 2017-02-21 | Novell, Inc. | Distributed lock administration |
| CN103942269B (zh) * | 2014-03-26 | 2017-05-31 | 北京京东尚科信息技术有限公司 | 对文件系统进行操作的方法和装置 |
| US10216950B2 (en) | 2015-12-11 | 2019-02-26 | International Business Machines Corporation | Multi-tiered file locking service in a distributed environment |
| US10951706B2 (en) | 2016-12-09 | 2021-03-16 | Google Llc | High-throughput algorithm for multiversion concurrency control with globally synchronized time |
| US10705889B2 (en) | 2016-12-27 | 2020-07-07 | Dropbox, Inc. | Kernel event triggers |
| US10614039B2 (en) | 2017-04-04 | 2020-04-07 | International Business Machines Corporation | Testing of lock managers in computing environments |
| US10140467B1 (en) | 2017-10-16 | 2018-11-27 | Dropbox, Inc. | Workflow functions of content management system enforced by client device |
| US10331623B2 (en) | 2017-10-16 | 2019-06-25 | Dropbox, Inc. | Workflow functions of content management system enforced by client device |
| FR3076003B1 (fr) | 2017-12-27 | 2021-01-22 | Bull Sas | Acces multiples a un fichier de donnees stocke dans un systeme de stockage de donnees associe a un espace memoire tampon |
| US11409716B2 (en) | 2019-01-30 | 2022-08-09 | Citrix Systems, Inc. | File conflict detection |
| CN112905533B (zh) * | 2021-02-05 | 2023-04-25 | 优车库网络科技发展(深圳)有限公司 | 文件提交的管理方法、装置、设备及存储介质 |
-
1988
- 1988-01-12 JP JP63003281A patent/JPS63204437A/ja active Granted
- 1988-01-26 EP EP88101085A patent/EP0278312B1/en not_active Expired - Lifetime
- 1988-01-26 DE DE3851904T patent/DE3851904T2/de not_active Expired - Fee Related
- 1988-02-12 BR BR8800631A patent/BR8800631A/pt not_active Application Discontinuation
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02266461A (ja) * | 1989-04-05 | 1990-10-31 | Nec Corp | データ引き渡し装置 |
| JPH02309445A (ja) * | 1989-05-15 | 1990-12-25 | Internatl Business Mach Corp <Ibm> | データ処理システムのクライエント装置のアクセス制御方法、装置およびコンピユータ・プログラム製品 |
| JPH036751A (ja) * | 1989-05-15 | 1991-01-14 | Internatl Business Mach Corp <Ibm> | フアイル・ロツク方法及び装置 |
| JPH07262074A (ja) * | 1994-03-07 | 1995-10-13 | Internatl Business Mach Corp <Ibm> | キャッシュ管理方法、コンピュータ・ファイル・システム及びキャッシュ装置 |
| JP2000163386A (ja) * | 1998-11-25 | 2000-06-16 | Nec Software Chugoku Ltd | 分散共有メモリシステムおよびその管理方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH056895B2 (ja) | 1993-01-27 |
| DE3851904D1 (de) | 1994-12-01 |
| EP0278312A2 (en) | 1988-08-17 |
| DE3851904T2 (de) | 1995-04-20 |
| EP0278312A3 (en) | 1990-10-24 |
| EP0278312B1 (en) | 1994-10-26 |
| BR8800631A (pt) | 1988-09-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPS63204437A (ja) | ロック・システム | |
| US5202971A (en) | System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock | |
| US4887204A (en) | System and method for accessing remote files in a distributed networking environment | |
| CN107045530B (zh) | 一种将对象存储系统实现为本地文件系统的方法 | |
| KR102450281B1 (ko) | 콘텐츠 아이템의 동기화를 위한 고유 식별자의 할당 및 재할당 | |
| JP4394643B2 (ja) | アイテムベースのストレージプラットフォームにおけるデータモデリングのためのシステムおよび方法 | |
| KR101120817B1 (ko) | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보의 단위들에 대한 관계 및 계층적 동기화서비스를 제공하는 시스템 및 방법 | |
| EP0278317B1 (en) | A system and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment | |
| KR101041319B1 (ko) | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한정보 단위의 피어 대 피어 동기화를 위해 충돌 처리를제공하는 시스템 및 방법 | |
| US5689706A (en) | Distributed systems with replicated files | |
| CN100550010C (zh) | 用于将应用程序与基于项的存储平台接口的系统和方法 | |
| JP3968242B2 (ja) | 共有データにアクセスするための方法と装置 | |
| JP3062070B2 (ja) | 分散ファイル・システム用マルチレベル・トークン管理のためのシステムおよび方法 | |
| RU2377646C2 (ru) | Системы и способы для обеспечения услуг синхронизации для блоков информации, управляемых аппаратной/программной интерфейсной системой | |
| JP2779587B2 (ja) | コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法 | |
| US5001628A (en) | Single system image uniquely defining an environment for each user in a data processing system | |
| JP4759570B2 (ja) | データベース管理システムにおけるファイル操作のためのロックを提供するための手法 | |
| EP0278313B1 (en) | Distributed file management system | |
| WO2018208482A1 (en) | Metadata storage for placeholders in a storage virtualization system | |
| JP4580390B2 (ja) | ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法 | |
| CA2152528C (en) | Distributed systems with replicated files | |
| JP4394644B2 (ja) | データの編成、検索、および共有のためのストレージプラットフォーム | |
| JPS63205742A (ja) | データ処理システム及び方法 |