JPH0522259B2 - - Google Patents

Info

Publication number
JPH0522259B2
JPH0522259B2 JP63301094A JP30109488A JPH0522259B2 JP H0522259 B2 JPH0522259 B2 JP H0522259B2 JP 63301094 A JP63301094 A JP 63301094A JP 30109488 A JP30109488 A JP 30109488A JP H0522259 B2 JPH0522259 B2 JP H0522259B2
Authority
JP
Japan
Prior art keywords
processing unit
page
segment
application program
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP63301094A
Other languages
English (en)
Other versions
JPH01188965A (ja
Inventor
Rii Buranto Marion
Kotsuchii Ansonii
Furederitsuku Miiigen Maaku
Hooru Moogan Suteiun
Ana Ueronika Radaa Katarin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH01188965A publication Critical patent/JPH01188965A/ja
Publication of JPH0522259B2 publication Critical patent/JPH0522259B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Description

【発明の詳細な説明】 A 産業上の利用分野 本発明は総括的に言えば、仮想メモリの同一の
アドレス空間を共用する、相互接続された複数個
の同じようなデータ処理ユニツトからなる仮想メ
モリのデータ処理システムに関し、より詳細に言
えば、システムを構成しているコンポーネントの
うちの何れか1つのコンポーネントが故障した結
果生じるデータ喪失や、データのコンシステンシ
ー(無矛盾)の喪失を最少限にとどめるために、
共用仮想メモリを管理するための方法に関する。
B 従来の技術及びその問題点 単一の独立型の中央処理ユニツト(CPU)を
含み複数個の仮想メモリを有するデータ処理シス
テムは従来から知られている。通常、これらの仮
想メモリのデータ処理システムは、1バイトのデ
ータを記憶し、且つ個々にアドレスし得る多数の
記憶位置を有する主メモリと、データをブロツク
で記憶し、ブロツクでアドレスする複数個の記憶
位置を含むデイスク・フアイルのような2次スト
レージ装置とを使用している。従来のデイスク・
フアイル装置の説明を簡略化するために、デイス
ク・フアイルの各ブロツク・アドレスは、例えば
2Kバイト(実際は2048バイト)のデータを記憶
するものと便宜上仮定する。仮想メモリは、しば
しば単一レベル記憶装置と呼ばれている概念を含
んでいる。単一レベル記憶装置において、システ
ムがアドレスしうる最大の範囲は通常、主メモリ
の実際の容量よりも遥かに大きい。主メモリはペ
ージング機構と、主メモリ中のアプリケーシヨ
ン・プログラム(適用業務プログラム)が必要と
するデータを記録するために共働する2次的な記
憶装置とを使用することによつて遥かに大きく見
えるようにされている。ページング機構の機能
は、アプリケーシヨン・プログラムによつてアド
レスされたページが主メモリに存在しないときは
常に、デイスク・フアイルから主メモリへ、デー
タのページを転送することにある。このように、
主メモリにページが存在しないことは「ページ不
在」(page fault)と呼ばれている。デイスク・
フアイルから主メモリへデータのページを転送す
ることは「ページ不在」処理と呼ばれている。
また、データの処理能力を増加させるために、
複数個のプロセツサを使用した多重プロセツサ・
システム構成も公知である。多重プロセツサ・シ
ステム構成は、論理的コミニユケーシヨン・チヤ
ンネルを共用する複数の処理ユニツトとして捉え
ることが出来る。論理的コミニユケーシヨン・チ
ヤンネルは、複数の処理ユニツトの間で共用され
るメモリであつて、1つの処理ユニツトから他の
処理ユニツトへのメツセージを記憶するためのメ
モリであると考えることが出来る。更に、論理的
コミニユケーシヨン・チヤンネルは1方の処理ユ
ニツトから他方の処理ユニツトへメツセージを転
送する際に、メツセージを通過させるコミニユケ
ーシヨン・ネツトワークの形式を取ることが出来
る。
強結合(tightly−coupled)多重プロセツサ・
システム構成と称されている従来の多重プロセツ
サ・システム構成において、構成内のすべての処
理ユニツトによつてアクセスすることが出来るあ
る容量のメモリを共用し、そして、各処理ユニツ
トは、その処理ユニツトだけしかアクセスするこ
とができず、他の処理ユニツトによつてはアクセ
スすることのできない、ある容量の専用メモリを
持つているような多重プロセツサ・システム構成
がある。
強結合多重プロセツサ構成に配列された計算シ
ステムは、共用メモリによる迅速なコミニユケー
シヨンの利点を持つており、また、デイスク・キ
ヤツシユとしての共用メモリをも利用することに
なる。ページ不在は、強結合多重プロセツサ構成
中の1つの処理ユニツトによつて実行されるアプ
リケーシヨン・プログラムが、主メモリに存在し
ないデータのページをアドレスした時に生じる。
ページ不在処理の間において、この多重プロセツ
サ構成に接続されている2次ストレージ装置は、
共用主メモリ中にデータのページを読込むように
命令される。データのページが共用メモリに読込
まれると、そのデータはこの多重プロセツサ構成
中の任意の処理ユニツトによつてアドレスするこ
とが出来る。
多重プロセツサ構成中の複数の処理ユニツトが
共通の問題を処理している場合、「参照の局所性」
(locality of reference)を経験するような方法
で、それらの処理ユニツトがデータをアクセスす
るのが普通である。そのデータのページを保持す
る共用メモリ中のページ・フレームが、他のデー
タのページを保持するよう、多重プロセツサ構成
によつて再使用される前に、この多重プロセツサ
構成中の1つの処理ユニツトで実行するアプリケ
ーシヨン・プログラムによつて仮想メモリにアク
セスすることから生じたページ不在を満足するた
めに、2次ストレージから検索されて、共用メモ
リに置かれた(読みこまれた)データのページ
が、この構成中の他の処理ユニツトで実行する他
のアプリケーシヨン・プログラムによつてもアク
セスされるであろう可能性がゼロではない時に、
「参照の局所性」が使われる。多重プロセツサ構
成中の他の処理ユニツトで実行するアプリケーシ
ヨン・プログラムによるアクセスが生じた場合
に、多重プロセツサ構成は、共用メモリに既に存
在するデータのページによつて、ページ不在を解
決することによりデイスクのアクセスを行わせず
に済ますことが出来る。
然しながら、共用メモリをデイスク・キヤツシ
ユとして用いた時、処理ユニツトが、共用メモリ
をアクセスする際に、多重プロセツサ構成中の処
理ユニツトの間でのアクセスの競合が、共用メモ
リによつて与えられる利益を越える程、大きくな
つた時、強結合多重プロセツサの構成の実際上の
限界がある。例えば、その構成中の他方の処理ユ
ニツトが、データのページの内容の検索を行つて
いるときに、1方の処理ユニツトがデータの同じ
ページの内容の変更を行おうとしている場合があ
る。このような場合に対処するために通常、2つ
の処理ユニツトはデータについてコンシステンシ
ーを持つように、他方の処理ユニツトの立場で処
理ユニツトのうちの1つを監視するためのある種
の手段が設けられている。強結合多重プロセツサ
構成において、複数の処理ユニツトに関するデー
タについてコンシステンシーを持たせるために、
幾つかの従来技術がある。これらの方法は、その
構成中の他の処理ユニツトが共用メモリへのアク
セスを完了するまで、その構成中の一方の処理ユ
ニツトを空転させることを含んでいる。空転して
いる処理ユニツトを更に空転させることは出来な
いし、有益な作業も出来ないから、システム全体
として考えたとき、共用メモリへのアクセスの競
合が、多重プロセツサ構成の処理能力を減少する
結果を生じることは避けることが出来ない。これ
らの理由によつて、単一の強結合多重プロセツサ
の構成中の処理ユニツトの数は6台を越えること
は殆どない。
緊密結合(closely−coupled)多重プロセツ
サ・システム構成と称される従来の多重プロセツ
サ・システムの構成において、複数個の処理ユニ
ツトが、コミニユケーシヨン・ネツトワークを介
して接続され、そして各処理ユニツトはそれ自身
のメモリに直接にアクセスすることが出来るが、
他のすべての処理ユニツトはそのメモリにはアク
セスすることが出来ないように構成されている。
緊密結合多重プロセツサ・システム構成中の処理
ユニツトは、コミニユケーシヨン・ネツトワーク
を介して、その構成内の他の処理ユニツトへメツ
セージを転送することによつて、データを共用す
ることが出来る。緊密結合多重プロセツサ・シス
テム構成の変形例において、その多重プロセツサ
構成中の処理ユニツトの内の1つの処理ユニツト
を共用メモリの処理ユニツトとして区別してい
る。共用メモリ処理ユニツトに接続された主メモ
リは、共用メモリ処理ユニツトによつて管理され
るデイスク型のキヤツシユ・メモリとして使用さ
れる。何時、そしてどんな構成の下で、共用メモ
リのどの領域に対して、複数の処理ユニツトのう
ちのどの処理ユニツトがアクセスすべきかを制御
するための機能が、共用メモリ処理ユニツトに割
当てられている。共用メモリが高速度の主メモリ
と相対的に低速度の2次ストレージ装置を含む仮
想メモリである場合、所定のヒツト率を得るため
に必要な主メモリの大きさは多重プロセツサ構成
によつて実行される毎秒当りのインストラクシヨ
ンの数に直接関係する。或る場合に、独立したプ
ロセツサ・ユニツトは毎秒当り百万個単位の命令
を実行出来るかの目安のミツプス(millions of
Instructions per seconds−MIPS)によつて性
能が決められる。若し、2個の4MIPSの処理能
力を持つ処理ユニツトと、第3の共用メモリ処理
ユニツトとが緊密結合多重プロセツサ構成で使用
されたとすれば、この構成に関連した主メモリ
は、所定のヒツト率を得るために、バイト単位で
約80メガバイトのアドレスをすることの出来るメ
モリを持たなければならない。共用メモリ中で85
%のヒツト率を得るために、大ざつぱに言つて、
1MIPS当り10メガバイトのアドレス可能な主メ
モリが必要である。従つて、若しこの緊密結合多
重プロセツサ構成に対して更に4MIPSの処理ユ
ニツトを付加しようとすれば、85%のヒツト率を
維持するために、更に、40メガバイトのアドレス
可能な主メモリを共用メモリに付加しなければな
らない。然しながら、緊密結合多重プロセツサ構
成を実際に設計するに際して、コストと性能のパ
ラメータに関しての損益分岐点を越えない範囲の
結合としなければならないので、処理ユニツトを
緊密結合多重プロセツサ構成に付加することは、
この点から自ら限界がある。
局所領域(local area)ネツトワーク内で、複
数個の独立型パーソナル・コンピユータ、または
独立型のエンジニヤリング・ワークステーシヨン
を構成する技術が最近になつて使われるようにな
つた。このような構成は、弱結合(loosely−
coupled)多重プロセツサ構成とか、分散システ
ム(distributed system)構成とか、またはクラ
スタ構成と呼ばれているが、このような構成にお
ける任意のワークステーシヨンは、標準的な通信
プロトコルを使用した他のワークステーシヨンと
通信することが出来る。クラスタ構成を設立する
ための動機づけは、データ処理能力をより大きく
するためではなく、情報を非電子的に交換するこ
との代りに電子的に交換するという単純な利益を
得るためであつた。然しながら、或る場合には、
個々のワークステーシヨンが、同一のオペレーテ
ング・システムを走らせ、時には同一のアプリケ
ーシヨン・プログラムを走らせることもあること
が見出された。計算機協会(Association for
Computing Machinery)の「配分された計算の
原理に関する1986年の第5回年次シンポジユー
ム」(5th Annual Symposium on Principle of
Distrbuted Computing)で報告されたリー
(Kai Li)及びフダク(Paul Hudak)による共
用仮想ストレージ・システムにおけるメモリの均
一性(Memory Coherence in Shared Vertual
Storage Systems)と題する文献は、クラスタ構
成で接続された複数個の仮想メモリのデータ処理
ユニツトを開示している。この装置において、す
べての処理ユニツトは同じオペレーテング・シス
テムを持ち、そして同じ仮想アドレス空間
(space)をアドレスする。各処理ユニツトは異
なつたフアイルを所有するフアイルの所有装置で
あり、それらのフアイルは、各処理ユニツト自身
ののメモリ・システムに記憶されている。アプリ
ケーシヨン・プログラムを実行しているフアイル
の非所有装置は、適当な通信リンクを介して他の
処理ユニツトのメモリ・システムへのアクセスを
獲得し、これは、データの仮想ページのフアイル
の所有装置に対して、要求装置へ仮想ページを送
る要求を発生する。クラスタ構成中の各処理ユニ
ツトは、その構成中の他の処理ユニツトと共に、
仮想メモリ・システム内のフアイルの組を共用す
る。要求により生じたページ不在はフアイルの所
有装置によつてサービスされる。若し、要求が局
部(local)であれば、即ち所有装置からの要求
であれば、要求されたページは所有装置の2次ス
トレージ装置から直接に所有装置の主メモリに転
送される。若し、要求が他の処理ユニツトからの
ものであれば、ページは通信リンクを介して、所
有装置の2次ストレージ装置から要求装置の主メ
モリへ転送される。要求装置がデータのページの
処理を済ませた後に、データのページの処理を制
御するために、システムのプロトコルが設定され
る。このプロトコルは、例えば、所有装置にペー
ジを返還する時に、一方のユニツトがそのページ
に書込みを要求しているのに対して、他方のユニ
ツトはそのページから読取りを要求している場合
のように、同じページに対する競合した要求をど
のようにして両立させるかを管理することとか、
または、記憶データを共用するための機能に共通
する他の種々の状況を管理することを取り扱う。
各処理ユニツト自身の仮想メモリを、クラスタ
中の他の処理ユニツトと共に共用することは、ク
ラスタに対して利用可能なフアイルの合計数が複
数個の2次ストレージ装置の中に分散されるか
ら、2次ストレージ装置の寸法や容量を減らすこ
とが出来るという利益を生じる。これは、ストレ
ージ装置に対するアクセス時間を短縮し、かつ装
置の価格の低減をもたらす。考え得る不利点とし
ては、データのページの所有装置に対して複数個
の他のユニツトからの同時的な要求が複数個のデ
イスク装置を順番にアクセスしなければならない
ことがある。通常、要求は重複した態様でサービ
スされるけれども、デイスクのアクセスは、処理
ユニツトに対して比較的時間の浪費となる動作で
あり、また、そのユニツトに無関係のアプリケー
シヨン・プログラムを実行している所有ユニツト
の性能に可成りの悪影響を与えることがあり、2
次ストレージ装置のサービスにも影響を与える。
米国特許出願第126814号(出願日1987年11月30
日)には、共用された仮想メモリを含む、クラス
タ構成のデータ処理システムによつて使用される
新規な処理方法が示されており、2次ストレージ
装置にアクセスを必要とするページ不在(page
fault)の数を顕著に減少させる方法が開示され
ている。
従来の技術における弱結合多重プロセツサ構成
は、慣習的に、メツセージ通過型のモデル
(message passing model)に関して構成されて
おり、この構成において、夫々独立したプロセツ
サで動作する個々のカーネル(kernel)は、広範
囲にわたつて共用されている資源(ハードウエア
及びソフトウエアを含む)を持つ構成を管理する
他のプロセツシング・ユニツトに対してサービス
を求める要求を含むメツセージを送る。メツセー
ジの通過路は本来的に、プロセツシング・ユニツ
ト間の接続路と対応しており、プロセツサの接続
路は一般に、弱結合構成の性能を向上するための
隘路であると信じられているので、メツセージ通
過型のモデルは信頼性の問題に遭遇することにな
るし、システムを結合したモデルとしてのメツセ
ージ通過型のモデルは幾つかの弱点を持つてい
る。
メツセージ通過型のシステム内のプロセツサ間
で直接に共用している複合データ構造(例えば、
ポインタを含む制御ブロツク)により惹起される
問題は既に知られている通りである。
メツセージ通過型のモデルで与えられた共用の
複合データ構造の問題点は、「プログラミング言
語及びシステム」に関する1982年10月の「ACM
会報」第4巻第4号に記載されたヘリー
(Herlihy)等による「抽象型データのための数
値伝送方法」(A Value Transmission
Method For Abstract Data Types)と題する
文献に記載されている。この問題は更に、1981年
5月、カーネギー・メロン大学(Carnegie
Mellon University)で刊行されたネルソン
(Nelson)による「遠隔プロシージヤ・コール」
(Remote Procedure Call)と題する学位論文で
論議されている。
多重プロセツサ構成内の個々のプロセツシン
グ・ユニツトで実行されるオペレーテイング・シ
ステムの2つのコンポーネントの間のエレメント
のリストを共用するために、それらのエレメント
は送信側コンポーネントにおいて転送用として適
当なフオーマツトにパツクされねばならず、次
に、パツクされたエレメントは送信側コンポーネ
ントから受信側コンポーネントへ転送され、その
後、パツクされたエレメントは、受信側において
アンパツクされねばならない。この動作の順序は
プロセツサの利用度の上から見ても、コミニユケ
ーシヨン・チヤンネルの利用度の上から見ても効
率的ではない。
この方式の、より重要な弱点として、上述の動
作順序は複雑で且つ取扱いが困難なことである。
メツセージ通過型のモデルの他の欠点は、送信側
コンポーネント及び受信側コンポーネントの両方
が、不便で複雑なアーキテクチヤを持ち、その結
果、コストがかかり、そしてデバグ作業や、拡張
及び保守が困難なことである。代表的な汎用目的
のオペレーテイング・システムのカーネルは、多
くの対話式のコンポーネントを含む傾向があるか
ら、メツセージ通過型のモデルに関連する多重プ
ロセツサ構成のオペレーテイング・システムを構
成する含意(implication)は膨大化する傾向が
ある。
強結合多重プロセツサ構成の従来の技術による
オペレーテイング・システムは、慣習的に、メツ
セージ通過型のモデルについては構成されること
がなく、その代りに、強結合多重プロセツサ構成
中のプロセツシング・ユニツトは、主メモリの或
る容量を共用し、プロセツシング・ユニツトのカ
ーネルは、その共用メモリ中の複合データ構造を
共用し、且、つ夫々のプロセツシング・ユニツト
自身の間で、プロセツサの目的に対してポインタ
だけを通過させる。単一プロセツサ用として開発
されたオペレーテイング・システムは、強結合多
重プロセツサ構成において効果的に実行するため
に、オペレーテイング・システムの再書込をする
ことなく、直列化の領域及びキヤツシユのコンシ
ステンシーを計る領域において或る種の修正を施
すことが可能である。強結合多重プロセツサ構成
において実行するために、メツセージ通過型のモ
デルに関して構成されたオペレーテイング・シス
テムを修正することは通常ありえないことであ
り、且つ、これを行うのは困難である。このこと
は、汎用目的のオペレーテイング・システムがメ
ツセージ通過型のモデルよりも、共用ストレージ
型のモデルに、より良く適合するという想定を裏
付けるものである。
IBMのRT・PC仮想メモリ管理ハードウエア
は、効果的な共用仮想メモリを実現する能力を備
えており、本発明の方法を使用するのに好適な環
境を与える。IBMのAIXオペレーテイング・シ
ステムは共用仮想メモリに適用することができ
る。仮想メモリ・マネージヤは、メツセージ通過
型のモデルに関して構成される必要がある。フア
イル・システムと、プロセツサ間連絡
(interprocess communication)の機能とを含む
すべての高位レベルのAIXオペレーテイング・
システムは、仮想メモリ・マネージヤによつて与
えられる共用メモリ型のモデルに関して構成され
る。共用メモリ構成型のモデルは、単純化を計る
ため性能面を若干犠牲にすることにより、多くの
利点を生じるような態様で、AIXオペレーテイ
ング・システムの個々のコンポーネントを実行さ
せることができる。
オペレーテイング・システムはそのメモリ中
に、その現在の状態を表わすデータを維持してお
り、このデータは、システムの再始動後には存在
しないと云う意味から揮発性のデータである。ア
トミツク・トランザクシヨン(atomic
transaction)を用いてこのデータを更新するこ
とが必要なので、これは、データのコンシステン
シーのない状態を絶対に生じることがない。この
ようなデータの1例は、フアイルを現行のロケー
シヨンに関連付けるためのシステム・デイレクト
リである。このデイレクトリ(登録簿)は、シス
テムが動作したとき、デイスク上の情報から形成
される。それを更新(update)している間、ま
たはその更新ができなかつたときは、その情報の
中間的な値は使用可能にされてはならない。
トランザクシヨンとは、アプリケーシヨン・プ
ログラムによつて遂行される仕事の単位であり、
このアプリケーシヨン・プログラムはクラスタ構
成中のプロセツシング・ユニツトの間で共用され
ている仮想メモリに記憶されているデータをアク
セスすること(参照すること、または更新するこ
と)ができる。1つのトランザクシヨンは、クラ
スタ構成中の1つのプロセツシング・ユニツト中
の1つのアプリケーシヨン・プログラムの一連の
実行(thread of execution)によつて遂行され
る。
与えられた1つのプロセツシング・ユニツトで
実行されるトランザクシヨンは、同じプロセツシ
ング・ユニツトで実行される他のトランザクシヨ
ンでアクセスしうるデータをアクセスすることが
できる。多くの通常のプロセツシング・ユニツト
は、唯1つの命令の流れ、即ち1つの命令スレツ
ド(thread of instructions)だけしか実行しな
いから、同じプロセツシング・ユニツトで同時に
実行される複数個のトランザクシヨンは、同時に
同じデータを実際にアクセスすることは生じえな
いのが通常であるけれども、それにも拘らず、複
数のトランザクシヨンが同時に実行され、そし
て、クラスタ構成中のプロセツシング・ユニツト
の間で共用されている仮想メモリに記憶されてい
るデータを同時にアクセスすることを想定するこ
とには意義がある。
同時に実行される複数のトランザクシヨンは、
共用のデータをアクセスできる(少くとも仮想的
に)から、若し、複数のトランザクシヨンが同じ
データに関して直列に(どんな順序でも)実行さ
れたならば達成不可能であるような状態に、デー
タを更新してデータを配置してしまうことはあり
得ることである。複数個のトランザクシヨンを同
時に実行するためには、タイミングに依存しなけ
ればならないから、上述の方法はタイミングの予
測が困難なので、好ましい状態ではない。同時に
発生した複数個のトランザクシヨンが或る種の
(または任意の)直列順位で実行されたときだけ
にトランザクシヨンの処理が達成しうるように、
共用されたデータが常に現われることを保証する
ことが望まれる。このような特性(property)は
直列化能力(serializability)と呼ばれる。直列
化能力を保証するような方法で、複数のトランザ
クシヨンが共用データへ同時にアクセスするのを
調整する技術は、同時動化(concurrency)制御
技術と称される。
プロセツシング・ユニツトの資源(ハードウエ
ア及びソフトウエアの両方を含む)の効果的使用
を与えるような方法で同時動化を制御することが
望まれる。直列化能力を保証するための簡単な方
法は、トランザクシヨンを直列に(ある順序で)
実行することである。トランザクシヨンは、その
ときに主メモリに存在しないかもしれない仮想メ
モリのページのような直ちに入手できない資源へ
のアクセスを必要とするので、これは非能率的で
ある。このような場合、プロセツシング・ユニツ
トは、進行中のトランザクシヨンが完了するま
で、他のトランザクシヨンの実行は開始されない
ので、そのプロセツシング・ユニツトは空転せざ
るを得ない。同時動化を制御する上述のアプロー
チは好ましくないという他の理由があるが、ここ
ではこれ以上の説明はしない。必要な資源が入手
可能になるまで、有益な仕事を続ける1つまたは
それ以上の他の同時動化トランザクシヨンを指名
(dispatch)することが好ましい。同時に動化す
るトランザクシヨンの直列化能力を保証するため
に、適当な同時動化制御アルゴリズムが、しばし
ば用いられ、これによりトランザクシヨン・デイ
スパツチヤーでは容易に予測することのできない
時間で資源が入手可能になる。
同時動化制御技術による1つのアプローチは、
1つのトランザクシヨンによつてアクセスされた
共用データをロツクし、そして、衝突
(conflict)を起こすような状態で同時に発生し
た他のトランザクシヨンが同じデータをロツクす
るのを阻止することである。通常、このアプロー
チは、ロツク・マネージヤと言われる抽象的なエ
ンテイテイ(abstract entity)によつて与えら
れる2つのタイプのロツクが使用される。即ち、
一方のタイプは読取りロツク、他方のタイプは書
込みロツクであり、前者のロツクは、トランザク
シヨンがロツクにより保護されるデータを読取る
権利を持つことを表示し、後者のロツクは読取
り/書込みの権利を持つことを表示する。
1つのトランザクシヨンが或る共用データを保
護する読取りロツクを保持し、他のトランザクシ
ヨンが同じデータに対して書込みロツクを要求し
ているときか、または、1つのトランザクシヨン
が或る共用データを保護する書込みロツクを保持
し、他のトランザクシヨンが同じデータに対し
て、読取りロツクか書込みロツクの何れかを要求
しているときに、衝突が発生する。同じデータを
保護する読取りロツクは、衝突を生じることな
く、同時動化の複数のトランザクシヨンに与えら
れる。1つまたはそれ以上のトランザクシヨンで
保持されたロツクと衝突するであろうロツクを要
求するトランザクシヨンは、衝突が解決される
(即ち、他のトランザクシヨンが、それらの衝突
ロツクを解放する時)まで、待機しなければなら
ない。
公知の解決原理として、2位相ロツキング・プ
ロトコル(two phase locking protocol)があ
り、これは複数のロツクの中でどのロツクもが解
放されないうちに、トランザクシヨンによつて必
要とされるすべてのロツクが捕獲されるというも
のであり、このプロトコルによつて、直列化能力
は十分に保証される。
2つ以上の同時に発生したトランザクシヨンの
組の各々が、その組中の他のトランザクシヨンと
衝突するような態様でデータをロツクして待機し
ている状態は、デツドロツクと称される。トラン
ザクシヨンの組の中のトランザクシヨンどうしが
待ち状態なので、その待ち状態のトランザクシヨ
ンは、その組の中の他のトランザクシヨンが待機
しているロツクを解放することはできない。デツ
ドロツクの発生が開始すると、デツドロツクされ
た組のすべてのメンバーは有効な仕事を遂行する
ことはできず、また、デツドロツクされた組中に
はないトランザクシヨンの組によつても有効な仕
事は遂行することはできず、更に、デツドロツク
の組のメンバーによつて保持されているロツクと
衝突する要求をロツクする。当業者はこの状態を
「フリンジ・トランザクシヨンの組」(set of
fringe transactions)と呼んでいる。
このデツドロツク及びその結果が続くのを阻止
するために、2位相ロツクキング・プロトコルを
使用している多くのコンピユータ・システムは、
デツドロツクの存在を定期的にチエツクして、若
し、デツドロツクが発見されれば、デツドロツク
の組の中の1つ以上のトランザクシヨンを打ち切
る。トランザクシヨンを打ち切るということは、
修正されたデータに対する全ての更新はバツクア
ウト(back out)されねばならず、また全ての
ロツクは解放されねばならないことを意味する。
トランザクシヨンが打ち切られる実際上の他の
例として、システムの誤動作や、トランザクシヨ
ンのプログラム・エラーや、トランザクシヨンの
プログラム・デザインや、オペレータの介入など
によつてトランザクシヨンが打ち切られる場合が
ある。このような場合、トランザクシヨンが終点
まで到達する前に、トランザクシヨンが打ち切ら
れるので、トランザクシヨンによつて行われた更
新は「アトミツク」で現われること、換言すれ
ば、全ての更新が同時に適用されるか、または全
ての更新は適用しないかの何れかということが必
要である。この規則が適用されたならば、共用デ
ータは常に無矛盾の状態(consistent state)に
保たれねばならず、そして、各トランザクシヨン
には、他のすべてのトランザクシヨンによつて作
られたすべての更新が見えるか、または他のすべ
てのトランザクシヨンによつて作られたすべての
更新が見えないかのいずれかである。
トランザクシヨンがその終点に達した時、トラ
ンザクシヨンは、確約サービス、即ちコミツト・
サービス(commit service)を使用することに
よつて、他のトランザクシヨンに対して、その更
新が可視である(visible)ことを要求する。若
し、オペレーテイング・システムがそのトランザ
クシヨンに対して肯定的に応答したとすれば、ト
ランザクシヨンのすべての更新が適用されるが、
若し、そうでなければ、トランザクシヨンのすべ
ての更新は適用されない。何れの場合でも、トラ
ンザクシヨンのすべてのロツクは解放される。全
ての更新をバツクアウトさせ、そして全てのロツ
クを解放させるために、トランザクシヨンはコミ
ツト・サービスではなく、バツクアウト・サービ
スを使用する。
ロツキングに基づく同時動化制御メカニズムに
よつて与えられるデータに関するコンシステンシ
ーについて基本的に異なつた5種類の重要な等級
(degree)がある(1981年の大規模データベース
に関する第7回国際会議(7th International
Conference on Very Large Databases)のグ
レー(Gray)による「トランザクシヨンの概念
と、その長所及び短所」(The Transaction
Concept:Virtures and Limitations)と題する
文献を参照)。それらの等級は、 「自由アクセス」:読取り機構は与えられた目
的データ(object)を自由に参照できる。書込み
機構は与えられた目的データを自由に更新でき
る。
「等級0」:読取り機構は与えられた目的デー
タを自由に参照できる。書込み機構は、与えられ
た目的データを更新する前に、そのデータをロツ
クしなければならない。書込み機構は他の書込み
機構と衝突する。
「等級1」:読取り機構は与えられた目的デー
タを自由に参照できる。書込み機構は、与えられ
た目的データを更新する前に、そのデータをロツ
クしなければならない。書込み機構は他の書込み
機構と衝突する。2位相書込みロツキングが実施
される。
「等級2」:読取り機構は、与えられた目的デ
ータを参照する前にそのデータをロツクしなけれ
ばならない。読取り機構は書込み機構と衝突す
る。書込み機構は他の書込み機構と衝突する。2
位相書込みロツキングが実施される。
「等級3」:読取り機構は、与えられた目的デ
ータを参照する前にそのデータをロツクしなけれ
ばならない。書込み機構は、与えられたデータを
更新する前に、そのデータをロツクしなければな
らない。読取り機構は書込み機構と衝突する。2
位相ロツキングが実施される。
AIXオペレーテイング・システムはクラス
タ・ストレージと呼ばれる共用仮想メモリの形式
を使用し、共用仮想メモリは、アトミツクであ
る、直列化された更新(update)の意味
(semantics)を与え、そして、オペレーテイン
グ・システムの幾つかのコンポーネントと、サブ
システム及びアプリケーシヨン・プログラム…と
に対して等級3のコンシステンシーを与える。
オペレーテイング・システムは直列化された更
新の意味を達成するためにロツキングを使用す
る。ロツキングを実施するためのメカニズムはチ
ヤン(Chang)等による「801ストレージのアー
キテクチヤ及びプログラミング」(801
Storage:Architecture and Programming)と
題する文献に記載されている。このロツキング・
メカニズムは配分されたクラスタの環境における
機能を拡張することができる。現在使用されてい
るロツク・マネージヤの例は、AIXオペレーテ
イング・システムの「配分されたサービスLPP」
において実現されている。
C 問題点を解決するための手段 本発明は、システムが再構成される時とか、ま
たはトランザクシヨンが初期の開始点から再試行
される時に、バイパスされる処理スレツド
(processing thread)中の或る処理の障害から生
じたデータの喪失や、トランザクシヨンが故意に
打ち切られた場合に生じるデータの喪失を回避す
るために、仮想メモリを有し、クラスタ構成にさ
れたデータ処理システムを管理する方法である。
本発明の方法は、1つのプロセツシング・ユニツ
トによつて遂行される、識別されたトランザクシ
ヨンによつて影響されるデータ構造のコピーを維
持し、そして、トランザクシヨンがコミツト(確
約)された時だけそのコピーを更新する。従つ
て、トランザクシヨンが開始された時点で存在し
た情報がコピーとして入手できるので、何等かの
理由によつて打ち切られねばならなかつたトラン
ザクシヨンを再試行することができる。各トラン
ザクシヨンを処理する際に、どのプロセツシン
グ・ユニツトが、どのフアイルに責任を持つてい
るか、主たるアクセス・コーデイネータの変更デ
ータ構造のコピーに対してどのプロセツシング・
ユニツトが、バツクアツプの責任を持つているか
というシステム・アウエアネスを維持するため
に、本発明に従つて種々のデータ構造が設定され
る。
本発明は、複数のプロセツサ同士が通信リンク
によつて相互に結合され、上記複数のプロセツサ
のそれぞれが、当該プロセツサに関連づけられた
物理的なメモリ、及び仮想メモリ変換機構を具備
してなるデータ処理システムにおけるデータのア
ベイラビリテイ、つまりはシステム・アベイラビ
リテイを維持する方法であつて、 (a) コア内部の揮発性データを、上記複数のプロ
セツサが一様にアドレツシングできるように、
仮想アドレス空間にマツプし、 (b) 任意のプロセツサによる上記データへのアク
セスを制御するプロセツサを指定し、 (c) 上記データを更新するトランザクシヨンを行
うトランザクシヨン・プロセツサに対して、上
記データへのアクセスを認め、 (d) 上記更新されたデータを、トランザクシヨ
ン・プロセツサのメモリ及び他の1つのプロセ
ツサのメモリに維持する ことを特徴とする。
上記ステツプ(a)における仮想アドレス空間は、
上記複数のプロセツサによつて共用されるもので
あつてもよい。あるいは、上記データを複数の仮
想アドレス空間にマツプし、上記データの構造体
に与えられるアドレスを同一にしてもよい。
トランザクシヨン・プロセツサが制御プロセツ
サ以外のプロセツサであるときには、制御プロセ
ツサが、上記ステツプ(d)における他の1つのプロ
セツサとなる。
上記ステツプ(d)を詳しく説明すると、以下のと
おりである。
(d1) 上記データの更新に先立つて、上記ト
ランザクシヨン・プロセツサとは異なるプロセ
ツサのメモリに、上記データを維持する。
(d2) 上記トランザクシヨン・プロセツサに
よつてトランザクシヨンがコミツトされた後
に、トランザクシヨン・プロセツサのメモリ及
び他の1つのプロセツサのメモリに、更新後の
データを維持する。
(d3) 上記トランザクシヨン・プロセツサに
よつてトランザクシヨンがコミツトされた後、
上記更新に先立つて維持されたデータを破棄す
る。
以後のトランザクシヨンでは、更新後のデータ
が新たに更新対象となつて、上記(d1)〜(d3)
のステツプが繰り返される。このようにして、ア
トミツク・トランザクシヨンが実行される。
なお、ステツプ(a)でいうコア内部(in−core)
とは、メイン・メモリにあるデータ、したがつて
CPUが直接アクセスできるデータのことを言う。
かつてメモリがコアによつてできていた時代があ
つたことに由来する語であるけれども、現在では
コア・メモリに限らず、広く一般に、上記の意味
で用いられている。
D 実施例 第7図は3個のプロセツシング・ユニツト10
a,10b及び10cと、スイツチ11と、スイ
ツチに対してプロセツシング・ユニツトを接続す
るためのコミニユケーシヨン・リンク12とを含
むクラスタ構成のブロツク図を示している。各プ
ロセツシング・ユニツトは、プロセツシング・ユ
ニツトに直接接続されているデイスク・ストレー
ジ装置とみなすことのできる2次ストレージ装置
を有している。個々のプロセツシング・ユニツト
に接続されている2次ストレージ装置に記憶され
ているフアイルの内容を除いて、プロセツシン
グ・ユニツト10a,10b及び10cは同一で
あるのが好ましい。第8図乃至第19図は、クラ
スタ構成における本発明の1実施例の動作を説明
する流れ図である。これらの動作の記載や、メツ
セージの流れに関する記載は、汎用目的のオペレ
ーテイング・システムの分野で仮想メモリ・マネ
ージヤのコンポーネントのソフトウエアを取り扱
う専門家であれば、本発明の方法を実施するため
に過度な実験を行うことなく、本発明を実施する
ことのできる程度のレベルで記載されている。
第8図は与えられたプロセツシング・ユニツト
で実行されるアプリケーシヨン・プログラムが、
クラスタ・ストレージのセグメントをオープン
し、フアイルを作成する時、そのプロセツシン
グ・ユニツトで実行されるオペレーテイング・シ
ステムによつて遂行されるステツプを説明する流
れ図である。
第8図のステツプAにおいて、プロセツシン
グ・ユニツト10aで実行しているアプリケーシ
ヨン・プログラムは、O−CREAT、O−
RDWR及びO−TEMPというオプシヨン(任意
選択)を使つて“/u/smorgan/status”とい
うフアイル名を持つクラスタ・ストレージ・フア
イルに対してオープン・システム・コールを発生
する。説明を簡明にするために、フアイルの名称
の付け方についてのUNIXの規則と、UNIXのデ
イレクトリ構成とを使用するものとする。勿論、
この前提条件、または以下の説明で用いられる前
提条件は本発明を実施するための必須要件ではな
いことは容易に理解されるだろう。O−CREAT
オプシヨンは、フアイルが存在していない場合、
オペレーテイング・システムがアプリケーシヨ
ン・プログラムのためにフアイルを作成すること
を意味する。O−RDWRオプシヨンは、アプリ
ケーシヨン・プログラムがフアイルに対する読取
り/書込みアクセスを得ようとしていることを意
味する。O−TEMPオプシヨンは、そのフアイ
ルがクラスタ・ストレージ・フアイルであること
を意味する。
ステツプBにおいて、プロセツシング・ユニツ
ト10aで実行しているオペレーテイング・シス
テムは、アプリケーシヨン・プログラムからのシ
ステム・コールをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムは、ルート・システム・デイレクトリ「/」
を検査し、そのデイレクトリが「u」についての
エントリを含んでいることと、「u」がデイレク
トリであることとを見出す。
ステツプDにおいて、オペレーテイング・シス
テムは“smorgan”の「u」デイレクトリを検査
し、そして“smorgan”がデイレクトリであるこ
とを確定する。
ステツプEにおいて、オペレーテイング・シス
テムは“status”を求めて“smorgan”のデイレ
クトリを検査し、“status”のエントリが存在し
ないことを確定する。
ステツプFにおいて、オペレーテイング・シス
テムは、フアイル名“/u/smorgan/status”
に対して、クラスタ・ストレージ・フアイル識別
子(Cluster Storage File Identifier−CSFID)
と、クラスタ・ストレージ・フアイル記述子
(Cluster Storage File Descriptor−CSFD)と
を発生する。ここで説明を簡単にするため、クラ
スタ・ストレージ・フアイル識別子はこのクラス
タ構成において、クラスタ・ストレージ・フアイ
ルを識別する32ビツトの整数であると仮定する。
クラスタ・ストレージ・フアイル識別子は、アク
セス・コーデイネータ(プロセツシング・ユニツ
ト10a)用のプロセツシング・ユニツト識別子
を連結することによつて形成され、そしてその内
容は、アクセス・コーデイネータによつて選択さ
れた数字であつて、アクセス・コーデイネータに
とつてのクラスタ・ストレージ・フアイルを識別
する数字を含んでいる。プロセツサ識別子は、ク
ラスタ構成内の与えられたプロセツシング・ユニ
ツトを識別する7ビツトの整数である。オペレー
テイング・システムは、プロセツシング・ユニツ
ト10aにあるクラスタ・ストレージ・フアイル
記述子テーブル(CSFDT)中にインデツクスす
るために、クラスタ・ストレージ・フアイル識別
子CSFIDを用いることによつて、クラスタ・ス
トレージ・フアイル記述子CSFDを作成する。プ
ロセツシング・ユニツト10aにあるCSFDT
は、存在する各クラスタ・ストレージ・フアイル
に対するクラスタ・ストレージ・フアイル記述子
を含んでおり、プロセツシング・ユニツト10a
は、その記述子を含むクラスタ・ストレージ・フ
アイルに対してアクセス・コーデイネータとして
動作する。クラスタ・ストレージ・フアイル記述
子は、与えられたクラスタ・ストレージ・フアイ
ルと関連した共用仮想メモリ・セグメントを識別
する。加えて、クラスタ・ストレージ・フアイル
記述子は、フアイルの長さとか、そのフアイルに
最も最近にアクセスした時間とか、フアイルの所
有者の名前などのフアイルに関する他の情報を含
んでいる。フアイル、“/u/smorgan/status”
がプロセツシング・ユニツト10aでオープン・
コールを実行した結果として作成された時、プロ
セツシング・ユニツト10aはそのフアイルのた
めのアクセス・コーデイネータとして自分自身を
選択する。
ステツプGにおいて、オペレーテイング・シス
テムは、クラスタ・ストレージ・フアイル識別子
CSFIDによつて識別されたクラスタ・ストレー
ジ・フアイルの仮想メモリ・セグメントを作成す
るために、セグメント作成サービス(Create
Segment Service−CSS)を使用する。この動作
を遂行する際に、プロセツシング・ユニツト10
aは、セグメントがクラスタ・ストレージ・フア
イル記述子CSFDを使用して作成されるべきこと
と、作成されるべきセグメント用の要求された保
護キーが読取り/書込みであることとを特定す
る。セグメント作成サービスCSSは新しく作成さ
れたクラスタ・ストレージのセグメント用の外部
ページ・テーブル(External Page Table−
XPT)を作成する。外部ページ・テーブルXPT
中の各エントリは、クラスタ・ストレージのセグ
メント中の仮想ページに対応し、そしてプロセツ
シング・ユニツトのページ付与用の空間
(space)に位置するデイスク・アドレスを指示
(ポイント)している。若し、クラスタ・ストレ
ージのセグメントの与えられた仮想ページが、仮
想メモリ・マネージヤ(VMM)のページ置換ア
ルゴリズムによつて選択されたならば、そのペー
ジはその対応したXPTエントリによつて指示さ
れたデイスクのブロツクにコピーされる。
ステツプHにおいて、プロセツシング・ユニツ
ト10aは、CSFIDによつて識別されたクラス
タ・ストレージ・フアイルを作成するプロセツシ
ング・ユニツト10bにメツセージ1を送る。メ
ツセージ1は、クラスタ・ストレージ・フアイル
の名前、クラスタ・ストレージ・フアイル識別子
CSFID及びアクセス・コーデイネータのプロセ
ツサ識別子PIDを含んでいる。
ステツプIにおいて、プロセツシング・ユニツ
ト10bがプロセツシング・ユニツト10aから
メツセージ1を受け取ると、プロセツシング・ユ
ニツト10bは、新しく作成されたフアイル“/
u/smorgan/status”の存在を表示するととも
に、そのフアイルのクラスタ・ストレージ・フア
イル識別子CSFID及びアクセス・コーデイネー
タのプロセツサ識別子PIDを表示するために、シ
ステム・デイレクトリのコピーを更新する。
ステツプJにおいて、プロセツシング・ユニツ
ト10aで実行しているオペレーテイング・シス
テムは、フアイル“/u/smorgan/status”が
作成されたことを、プロセツシング・ユニツト1
0aで実行しているアプリケーシヨン・プログラ
ムに通知する。
第9図はオープンされたクラスタ・ストレー
ジ・フアイルが、どのようにして、クラスタ構成
中で共用されている仮想メモリにロードされるか
を説明するための流れ図を示している。
第9図のステツプAにおいて、プロセツシン
グ・ユニツト10aで実行されるアプリケーシヨ
ン・プログラムは、オープンされたクラスター・
ストレージ・フアイル、“/u/smorgan/
status”に関連したローカル・セグメントSを、
読取り/書込みアクセス用のアプリケーシヨン・
プログラムの仮想アドレス空間内にマツプするた
めにシマート(schmat)システム・コールを用
いる。
ステツプBにおいて、プロセツシング・ユニツ
ト10aで実行されるオペレーテイング・システ
ムは、アプリケーシヨン・プログラムからのシス
テム・コールをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムは、Sがローカル・セグメントであることを
決定する。プロセツシング・ユニツト10aはセ
グメント識別テーブルSITを検査することによつ
て、この決定を行う。
ステツプDにおいて、プロセツシング・ユニツ
ト10aはマツプ・ページ範囲サービス(Map
Page Range Service−MPRS)を用いて、セグ
メントSの内容をアプリケーシヨン・プログラム
の仮想アドレス空間中にマツプする。
ステツプEにおいて、プロセツシング・ユニツ
ト10aは、フアイル“/u/smorgan/
status”がアプリケーシヨン・プログラムの仮想
アドレス空間中に成功裡にマツプされたことを決
定し、そしてアプリケーシヨン・プログラムにこ
れを通知する。
第10図は、クラスタ構成中のただ1つのプロ
セツシング・ユニツトがクラスタ・ストレージの
セグメントをオープンした時に、オープンされマ
ツプされた現存するクラスタ・ストレージのセグ
メントに対して、どのようにしてトランザクシヨ
ンが実行され、そしてコミツトされるかを説明す
るための流れ図である。説明を簡単にするため
に、以下の前提条件を設ける。即ち、それらの前
提は(1)セグメントSは、プロセツシング・ユニツ
ト10aで実行するアプリケーシヨン・プログラ
ムによつて行われる読取り/書込みアクセス
(RWA)のためにマツプされたクラスタ・スト
レージのセグメントであり、(2)セグメントSは、
仮想メモリ中の丁度2つのページ、即ちページ1
及びページ2を現在含んでおり、(3)ページ1及び
ページ2の両方は現在、主メモリに記憶されてお
り、(4)ページ1及びページ2が主メモリに記憶さ
れてから後に、ページ1及びページ2の両方は修
正されたものとする、という前提条件である。
第10図のステツプAにおいて、プロセツシン
グ・ユニツト10aで実行するアプリケーシヨ
ン・プログラムはセグメントSのページ1中への
ストアを試みている。アプリケーシヨン・プログ
ラムは、セグメントSに関するロツクを未だ保持
していないので、ページ1にストアする試みはロ
ツク・ミスを発生する。
ステツプBにおいて、プロセツシング・ユニツ
ト10aのオペレーテイング・システムはロツ
ク・ミスをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aで実行
しているすべてのアプリケーシヨン・プログラム
がセグメントSのページ1に関するロツクを保持
していないことを確定する。
ステツプDにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aがセグ
メントSのアクセス・コーデイネータであること
を確定する。
ステツプEにおいて、オペレーテイング・シス
テムは、他のすべてのプロセツシング・ユニツト
がセグメントSをアクセスしていないことを確定
する。
ステツプFにおいて、オペレーテイング・シス
テムは、セグメントSのページ1に関する書込み
ロツクを、アプリケーシヨン・プログラムに対し
て付与(許可)する。この動作を遂行するため
に、オペレーテイング・システムは、 (1) 現在のページ1の状態のコピーを作るための
ページ・フレームを割り当て、 (2) ページ・フレームのための拡張ストレージ
(Extension Storage−ES)の仮想アドレスを
割り振り、 (3) ロツク・テーブル(Lock Table−LT)中
にそのページのためのエントリ(記入項目)を
割り当て、 (4) 新しく割り振られたESの仮想アドレスを、
そのページ・フレームに対して割当て、 (5) セグメントSのページ1をページ・フレーム
にコピーし、 (6) アプリケーシヨン・プログラムがセグメント
Sのページ1に関するロツクを保持しているこ
とを表示するために、ロツク・テーブルLTの
エントリに記入を行い、 (7) そのページのコピーのES仮想アドレスを、
ページ1のLTのエントリにコピーし、 (8) アプリケーシヨン・プログラムによつて保持
されているロツクのリスト中に、そのページに
ついてのロツク・テーブルLTのエントリを連
結(chain)する。
トランザクシヨンを打ち切る必要がある場合、
拡張ストレージES中のページのコピーは、ペー
ジの内容を回復するのに用いられる。アプリケー
シヨン・プログラムによつて保持されているロツ
ク・テーブルのエントリのチエーン(連鎖)は、
トランザクシヨンを処理している時に、アプリケ
ーシヨン・プログラムによつて変更された仮想ペ
ージのセツト内容を「覚えておく」ために用いら
れる。
ステツプGにおいて、オペレーテイング・シス
テムは、ロツクに関する情報を、そのページの反
転ページ・テーブル(Inverted Page Table−
IPT)のエントリにコピーし、そして、アプリケ
ーシヨン・プログラムのストア命令を再試行する
ためのアプリケーシヨン・プログラムをスケジユ
ールする。
ステツプHにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行し、それを成功
裡に完結する。
ステツプIにおいて、アプリケーシヨン・プロ
グラムはセグメントSのページ2へのストアを試
みる。
ステツプJにおいて、オペレーテイング・シス
テムはセグメントSのページ2に対して、ステツ
プB乃至ステツプGで行つた動作と同じ動作を遂
行する。
ステツプKにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行して、それを成
功裡に完結する。
ステツプLにおいて、アプリケーシヨン・プロ
グラムはコミツト・サービスを呼び出して、走つ
ているトランザクシヨンをコミツトしたいことを
表示する。
ステツプMにおいて、オペレーテイング・シス
テムはコミツト要求をインターセプトする。
ステツプNにおいて、オペレーテイング・シス
テムはアプリケーシヨン・プログラムにより保有
されていた各ロツクを解放(free)する。この動
作を遂行するために、アプリケーシヨン・プログ
ラムによつてロツクされたページ毎に、オペレー
テイング・システムは、(1)もしそのページがアプ
リケーシヨン・プログラムによつて修正されたこ
とをそのページのロツク・テーブル(LT)のエ
ントリが表示したならば、そのページのLTのエ
ントリによつてポイントされた拡張ストレージ
ESのページ(若しあれば)を解放し、(2)アプリ
ケーシヨン・プログラムによつて保持されている
ロツクのリストから、そのページのLTのエント
リを非連結(unchain)にし、(3)そのページのた
めに割り振られたロツク・テーブルのエントリを
解放する動作を遂行する。
ステツプOにおいて、オペレーテイング・シス
テムは、トランザクシヨンが成功裡に完了された
ことを、アプリケーシヨン・プログラムに通知す
る。
第11図はクラスタ構成中のただ1つのプロセ
ツシング・ユニツトがクラスタ・ストレージのセ
グメントをオープンした時、オープンされマツプ
された現存するクラスタ・ストレージのセグメン
トに対して、トランザクシヨンがどのように実行
され、そして打ち切られるかを説明する流れ図で
ある。説明を簡明にするために、 (1) セグメントSはプロセツシング・ユニツト1
0aで実行されているアプリケーシヨン・プロ
グラムによる読取り/書込みアクセス
(RWA)用にマツプされたクラスタ・ストレ
ージのセグメントであり、 (2) セグメントSは現在、仮想メモリに2つのペ
ージ、即ちページ1及びページ2だけを含んで
おり、 (3) ページ1及びページ2の両方とも現在、主メ
モリ中に存在しており、 (4) ページ1及びページ2が主メモリに転送され
てから後に、それらの両方とも修正を受けてい
るものとする。
第11図のステツプAにおいて、プロセツシン
グ・ユニツト10aで実行されているアプリケー
シヨン・プログラムは、セグメントSのページ1
にストアを試みている。アプリケーシヨン・プロ
グラムは、セグメントSに関するロツクを未だ保
持していないから、ページ1へのストアの動作
は、ロツク・ミスを発生する。
ステツプBにおいて、プロセツシング・ユニツ
ト10aのオペレーテイング・システムは、ロツ
ク・ミスをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aで実行
しているすべてのアプリケーシヨン・プログラム
が、セグメントSのページ1に関するロツクを保
持していないことを確定する。
ステツプDにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aがセグ
メントSのアクセス・コーデイネータであること
を確定する。
ステツプEにおいて、オペレーテイング・シス
テムは、他のプロセツシング・ユニツトがセグメ
ントSをアクセスしていないことを確定する。
ステツプFにおいて、オペレーテイング・シス
テムは、セグメントSのページ1に関する書込み
ロツクを、アプリケーシヨン・プログラムに対し
て付与する。
この動作を遂行するために、オペレーテイン
グ・システムは、 (1) 現在の状態のページ1のコピーを作るための
ページ・フレームを割り当て、 (2) ページ・フレームのための、拡張ストレージ
(ES)の仮想アドレスを割り振り、 (3) ロツク・テーブル(LT)中に、そのページ
のための、エントリ(記入項目)を割り当て、 (4) そのページ・フレームに対して、新しく割り
振られたES仮想アドレスを割り当て、 (5) セグメントSのページ1の内容をページ・フ
レーム中にコピーし、 (6) アプリケーシヨン・プログラムが、セグメン
トSのページ1に関するロツクを保持している
ことを表示するために、LTのエントリに記入
を行い、 (7) そのページのコピーのES仮想アドレスを、
ページのLTのエントリにコピーし、 (8) アプリケーシヨン・プログラムによつて保持
されているロツクのリスト中に、そのページに
ついてのLTのエントリを、連結(chain)す
る。
トランザクシヨンを打ち切る必要がある場合、
拡張ストレージES中のページのコピーは、ペー
ジの内容を回復するのに使用される。アプリケー
シヨン・プログラムによつて保持されているロツ
ク・テーブルのエントリの鎖は、トランザクシヨ
ンを処理している時に、アプリケーシヨン・プロ
グラムによつて変更された仮想ページの組の内容
を「覚えておく」ために使用することができる。
ステツプGにおいて、オペレーテイング・シス
テムはロツクに関する情報をページ用の反転ペー
ジ・テーブルIPTにコピーし、そして、アプリケ
ーシヨン・プログラムがそのストア命令を再試行
するためのスケジユールをたてる。
ステツプHにおいて、アプリケーシヨン・プロ
グラムはストア命令を再試行して、それを成功裡
に完了する。
ステツプIにおいて、アプリケーシヨン・プロ
グラムはセグメントSのページ2にストアを試み
る。
ステツプJにおいて、オペレーテイング・シス
テムはステツプB乃至ステツプGで遂行した動作
と同様な動作をセグメントSのページ2に対して
遂行する。
ステツプKにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行し、それを成功
裡に完了する。
ステツプLにおいて、アプリケーシヨン・プロ
グラムはバツクアウト・サービスを呼出して、走
つているトランザクシヨンを打ち切りたいことを
表示する。
ステツプMにおいて、オペレーテイング・シス
テムは打ち切り要求(abort request)に割り込
む。
ステツプNにおいて、オペレーテイング・シス
テムはアプリケーシヨン・プログラムによつて保
持されていた各ロツクを解放する。この動作は遂
行するために、オペレーテイング・システムは、
アプリケーシヨン・プログラムによりロツクされ
た各ページに対して、以下の動作を行う。即ち、 (1) アプリケーシヨン・プログラムによつて保持
されているロツクに対応する各ロツク・テーブ
ル(LT)・エントリを検査する。
(2) 主メモリ中にあつて、LTが存在し、アプリ
ケーシヨン・プログラムによつて修正されたこ
とを表示するすべてのページの内容を破棄す
る。
(3) LTが存在し、アプリケーシヨン・プログラ
ムによつてページが修正されたことを表示する
各ページに対して、そのロツク・テーブル
(LT)のエントリによつてポイントされた拡張
ストレージESのページを、主メモリにストア
する。
(4) ESページを、それが前の内容を表わすペー
ジに関連した仮想アドレスにリネームする。
(5) アプリケーシヨン・プログラムによつて保持
されていたロツクのリストからそのページの
LTのエントリを非結合(unchain)にする。
(6) そのページ用に割り振られたロツク・テーブ
ルのエントリを解放する。
ステツプOにおいて、オペレーテイング・シス
テムはトランザクシヨンが打ち切られたことをア
プリケーシヨン・プログラムに通知する。
第12図はアクセス・コーデイネータとは異な
つたプロセツシング・ユニツトで走つているアプ
リケーシヨン・プログラムによつて、既に存在す
るクラスタ・ストレージ・フアイルが、どのよう
にしてオープンされるかを説明するための流れ図
である。
第12図のステツプAにおいて、プロセツシン
グ・ユニツト10bにおいて実行されているアプ
リケーシヨン・プログラムはオプシヨンO−
CREAT、O−RDWR及びO−TEMPを使つて
“/u/smorgan/status”というフアイル名を
持つフアイルをオープンするために、オープン・
システム・コールを使用する。
ステツプBにおいて、プロセツシング・ユニツ
ト10bで実行されるオペレーテイング・システ
ムはアプリケーシヨン・プログラムからシステ
ム・コールに割り込む。
ステツプCにおいて、オペレーテイング・シス
テムはルート・システム・デイレクトリ「/」を
検査して、そのルート・システム・デイレクトリ
が「u」というエントリを含んでいること、そし
て「u」はデイレクトリであることを見出す。
ステツプDにおいて、オペレーテイング・シス
テムはuデイレクトリを検査して“smorgan”を
探し、smorganがデイレクトリであることを決定
する。
ステツプEにおいて、オペレーテイング・シス
テムは“status”を求めて“smorgan”のデイレ
クトリを検査し、そして以下のことを確定する。
(1) “status”はクラスタ・ストレージ・フアイ
ルであること、 (2) “status”は既に存在していること、 (3) プロセツシング・ユニツト10aは、アクセ
ス・コーデイネータであること、 (4) CSFIDはそのクラスタ・ストレージ・フア
イル識別子であること。
ステツプFにおいて、プロセツシング・ユニツ
ト10bにおいて実行しているオペレーテイン
グ・システムはクラスタ・ストレージ・フアイル
識別子CSFIDを含んでいるメツセージ1をプロ
セツシング・ユニツト10aに送り、そして、
CSFIDによつて識別されたクラスタ・ストレー
ジ・フアイルが、プロセツシング・ユニツト10
bで実行されるアプリケーシヨン・プログラムの
ためにオープンされることを要求する。
ステツプGにおいて、プロセツシング・ユニツ
ト10aがプロセツシング・ユニツト10bから
メツセージ1を受け取つたとき、プロセツシン
グ・ユニツト10aは、CSFIDによつて識別さ
れたクラスタ・ストレージ・フアイルを表わすク
ラスタ・ストレージ・フアイル記述子CSFIDを
突きとめる(ロケートする)。プロセツシング・
ユニツト10aはクラスタ・ストレージ・フアイ
ル識別子CSFIDを使用することによつて、クラ
スタ・ストレージ・フアイル記述子CSFDを突き
とめて、プロセツシング・ユニツト10aにある
クラスタ・ストレージ・フアイル記述子テーブル
(CSFDT)中にストレージ・フアイル記述子
CSFDをインデツクス(索引付け)する。
ステツプHにおいて、プロセツシング・ユニツ
ト10aは、CSFIDによつて識別されたクラス
タ・ストレージ・フアイルが現在オープンされて
いること、即ちクラスタ・ストレージ・フアイル
はそれに関連する仮想セグメントSを持つている
ことを確定する。
ステツプIにおいて、プロセツシング・ユニツ
ト10aは、CSFIDによつて識別されたクラス
タ・ストレージ・フアイルが、バツクアツプ・ア
クセス・コーデイネータをまだ持たないことを確
定し、プロセツシング・ユニツト10bをバツク
アツプ・アクセス・コーデイネータとして選択
し、クラスタ・ストレージ・フアイル記述子
CSFDの中にこのことを記録する。
ステツプJにおいて、プロセツシング・ユニツ
ト10aが、プロセツシング・ユニツト10bの
ためにCSFIDによつて識別されたクラスタ・ス
トレージ・フアイルを成功裡にオープンしたこと
と、プロセツシング・ユニツト10bが、
CSFIDによつて識別されたクラスタ・ストレー
ジ・フアイルのためのバツクアツプ・アクセス・
コーデイネータであることとに応答して、プロセ
ツシング・ユニツト10aは、プロセツシング・
ユニツト10bにメツセージ2を送る。メツセー
ジ2はCSFIDによつて識別されたクラスタ・ス
トレージ・フアイルに関連した共用仮想メモリの
セグメントとしてセグメント識別子Sを識別す
る。
ステツプKにおいて、プロセツシング・ユニツ
ト10aからのメツセージ2を受け取ると、プロ
セツシング・ユニツト10bは遠隔セグメント作
成サービス(Create Remote Segment Service
−CRSS)を用いて、CSFIDにより識別されたク
ラスタ・ストレージ・フアイルに対してローカ
ル・セグメントSBを作成する。遠隔セグメント
作成サービスCRSSはセグメント識別子Sを取
り、そして「ダミー」セグメントSBを作成する。
ダミー・セグメントSBは、セグメント識別子及
びセグメント識別子テーブル(SIT)のエントリ
を持つローカル・セグメントである。CRSSは新
しく作成さたクラスタ・ストレージのセグメント
のための外部ページ・テーブル(XPT)を作成
する。XPT中の各エントリは、クラスタ・スト
レージのセグメント中の仮想ページに対応し、そ
して、プロセツシング・ユニツトのページング空
間に位置するデイスク・ストレージのアドレスを
指示(ポイント)する。若し、クラスタ・ストレ
ージのセグメントの与えられた仮想ページが、仮
想メモリ・マネージヤ(Virtual Memory
Manager−VMM)のページ置換アルゴリズムに
よつて選択されたならば、そのページは対応する
XPTエントリによつて指示されたデイスク・ブ
ロツクにコピーされる。
ステツプLにおいて、プロセツシング・ユニツ
ト10bは遠隔セグメント結合サービス(Bind
Remote Segment Service−BRSS)を使用し
て、ローカル・セグメントSBをグローバル・セ
グメント、即ち大域セグメントSに結合する。
BRSSは、セグメントS及びSBと、アクセス・
コーデイネータ(プロセツシング・ユニツト10
a)のプロセツシング・ユニツト識別子PIDとを
取り、そしてセグメントSBがセグメントSに関
係していることを表示するために、セグメント
SBと関連しているSITエントリを修正する。セ
グメントSのアクセスはプロセツシング・ユニツ
ト識別子PIDにより調整される。
ステツプMにおいて、プロセツシング・ユニツ
ト10bは、クラスタ・ストレージ・フアイル
“/u/smorgan/status”が成功裡にオープン
されたことを確定し、それをアプリケーシヨン・
プログラムに通知する。
第13図はクラスタ構成中の2つのプロセツシ
ング・ユニツトが、クラスタ・ストレージのセグ
メントをオープンした時、オープンされマツプさ
れた現存するクラスタ・ストレージのセグメント
に対するトランザクシヨンが、アクセス・コーデ
イネータとして動作するプロセツシング・ユニツ
ト上で、どのようにして実行され、そしてコミツ
トされるかを説明する流れ図である。説明を簡明
にするために、以下のように前提条件を設ける。
即ち、 (1) セグメントSは、プロセツシング・ユニツト
10aで実行されるアプリケーシヨン・プログ
ラムと、プロセツシング・ユニツト10bで実
行されるアプリケーシヨン・プログラムとによ
る読取り/書込みアクセスのためにマツプされ
たクラスタ・ストレージのセグメントであるこ
と、 (2) セグメントSは現在、ページ1とページ2の
丁度2つのページを含んでいること、 (3) ページ1及びページ2の両方は現在、プロセ
ツシング・ユニツト10aの主メモリに記憶さ
れていること、 (4) ページ1及びページ2の両方は、それらがプ
ロセツシング・ユニツト10aの主メモリに入
れられてから後に、修正を受けていることとす
る。
第13図のステツプAにおいて、プロセツシン
グ・ユニツト10aで実行しているアプリケーシ
ヨン・プログラムはセグメントSのページ1にス
トアの動作を行つている。アプリケーシヨン・プ
ログラムはセグメントSに関するロツクを未だ保
持していないから、ページ1にストアする動作
は、ロツク・ミスを発生する。
ステツプBにおいて、プロセツシング・ユニツ
ト10aのオペレーテイング・システムはロツ
ク・ミスをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムはプロセツシング・ユニツト10aで実行し
ているすべてのアプリケーシヨン・プログラムが
セグメントSのページ1に関するロツクを保持し
ていないことを確定する。
ステツプDにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aがセグ
メントSのアクセス・コーデイネータであること
を確定する。
ステツプEにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10bがセグ
メントSをアクセスしたが、プロセツシング・ユ
ニツト10bがセグメントSに関するロツクを保
持していないことを確定する。
ステツプFにおいて、オペレーテイング・シス
テムは、セグメントSのページ1に関する書込み
ロツクを、プロセツシング・ユニツト10aで実
行しているアプリケーシヨン・プログラムに付与
する。この動作を達成するために、オペレーテイ
ング・システムは、次の動作を行う。即ち、 (1) ページ1の現在の状態のコピーを作るための
ページ・フレームを割り当て、 (2) ページ・フレームのための拡張ストレージ
(ES)の仮想アドレスを割り振り、 (3) ロツク・テーブル(LT)中に、そのページ
のエントリ(記入項目)を割り当て、 (4) そのページ・フレームに対して、新しく割り
振られたES仮想アドレスを割り当て、 (5) セグメントSのページ1の内容をページ・フ
レーム中にコピーし、 (6) アプリケーシヨン・プログラムが、セグメン
トSのページ1に関するロツクを保持している
ことを表示するために、LTのエントリに記入
し、 (7) そのページのコピーのES仮想アドレスを、
当該ページのLTのエントリにコピーし、 (8) アプリケーシヨン・プログラムによつて保持
されているロツクのリスト中に、そのページに
ついてのLTのエントリを、連結(chain)す
る。
トランザクシヨンを打ち切る必要がある場合、
拡張ストレージES中のページのコピーは、ペー
ジの内容を回復するのに使用される。アプリケー
シヨン・プログラムによつて保持されているロツ
ク・テーブルのエントリの鎖は、トランザクシヨ
ンを処理しているときに、アプリケーシヨン・プ
ログラムによつて変更された仮想アドレスの組の
内容を「覚えておく」ために使用することができ
る。
ステツプGにおいて、オペレーテイング・シス
テムはロツクに関する情報をページ用の反転ペー
ジ・テーブルIPTにコピーし、そして、アプリケ
ーシヨン・プログラムがそのストア命令を再試行
するためのスケジユールをたてる。
ステツプHにおいて、アプリケーシヨン・プロ
グラムはストア命令を再試行して、それを成功裡
に完結する。
ステツプIにおいて、アプリケーシヨン・プロ
グラムはセグメントSのページ2にストアを試み
る。
ステツプJにおいて、オペレーテイング・シス
テムはステツプB乃至ステツプGで遂行した動作
と同様な動作をセグメントSのページ2に対して
遂行する。
ステツプKにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行し、それを成功
裡に完結する。
ステツプLにおいて、アプリケーシヨン・プロ
グラムはコミツト・サービスを呼び出して、その
アプリケーシヨン・プログラムで走つているトラ
ンザクシヨンをコミツトしたいことを表示する。
ステツプMにおいて、オペレーテイング・シス
テムはコミツト・サービスをインターセプトす
る。
ステツプNにおいて、プロセツシング・ユニツ
ト10bがアプリケーシヨン・プログラムによつ
て更新されたことを、若し、そのページのロツ
ク・テーブル(LT)のエントリが表示したなら
ば、アプリケーシヨン・プログラムによつてロツ
クされたページ毎に、オペレーテイング・システ
ムは、バツクアツプ・アクセスコーデイネー タ
(プロセツシング・ユニツト10b)にメツセー
ジを送り、プロセツシング・ユニツト10bに対
して、拡張ストレージ(ES)にそのページをコ
ピーすることを要求する。
ステツプOにおいて、プロセツシング・ユニツ
ト10bがプロセツシング・ユニツト10aによ
つて修正された最後のページを受け取ると、プロ
セツシング・ユニツト10bは、その拡張ストレ
ージESから、それらの適切な仮想メモリのセグ
メント中に、個々のページを移動し、次に、プロ
セツシング・ユニツト10bは、プロセツシン
グ・ユニツト10bがそのページをES中に、移
動したことを通知するメツセージを、プロセツシ
ング・ユニツト10aに送る。
ステツプPにおいて、プロセツシング・ユニツ
ト10aがプロセツシング・ユニツト10bから
の通知を受取つた時、プロセツシング・ユニツト
10aは次の動作を行う。
(1) アプリケーシヨン・プログラムにより保持さ
れているロツクのリストから、アプリケーシヨ
ン・プログラムによりロツクされていた各ペー
ジについてのLTのエントリを連結解除
(unchain)する。
(2) そのページに割り振られたロツク・テーブル
のエントリを解放する。
ステツプQにおいて、オペレーテイング・シス
テムは、トランザクシヨンが成功裡に完結したこ
とをアプリケーシヨン・プログラムに通知する。
第14図はクラスタ構成中の2つのプロセツシ
ング・ユニツトがクラスタ・ストレージのセグメ
ントをオープンしたとき、オープンされ、マツプ
された現存するクラスタ・ストレージのセグメン
トに対するトランザクシヨンが、アクセス・コー
デイネータとして動作するプロセツシング・ユニ
ツト上で、どのようにして実行され、そして打ち
切られるかを説明する流れ図である。説明を簡明
にするために、以下の前提を設ける。即ち、 (1) セグメントSは、プロセツシング・ユニツト
10aで実行するアプリケーシヨン・プログラ
ムと、プロセツシング・ユニツト10bで実行
するアプリケーシヨン・プログラムとによる読
取り/書込みアクセス(RWA)のためにマツ
プされたクラスタ・ストレージのセグメントで
あり、 (2) セグメントSは、仮想メモリ中の丁度2つの
ページ、即ちページ1及びページ2を現在含ん
でおり、 (3) ページ1及びページ2の両方は現在、プロセ
ツシング・ユニツト10aの主メモリに記憶さ
れており、 (4) ページ1及びページ2がプロセツシング・ユ
ニツト10aの主メモリに記憶されてから、ペ
ージ1及びページ2の両方は修正されているも
のとするという前提である。
第14図のステツプAにおいて、プロセツシン
グ・ユニツト10aで実行するアプリケーシヨ
ン・プログラムはセグメントSのページ1中への
ストアを試みている。アプリケーシヨン・プログ
ラムは、セグメントSに関するロツクを未だ保持
していないので、ページ1にストアする試みはロ
ツク・ミスを発生する。
ステツプBにおいて、プロセツシング・ユニツ
ト10aのオペレーテイング・システムはロツ
ク・ミスをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aで実行
される他のすべてのアプリケーシヨン・プログラ
ムがセグメントSのページ1に関するロツクを保
持していないことを確定する。
ステツプDにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aがセグ
メントSのアクセス・コーデイネータであること
を確定する。
ステツプEにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10bがセグ
メントSをアクセスするのだけれども、プロセツ
シング・ユニツト10bは現在セグメントSにつ
いてのロツクを保持していないことを確定する。
ステツプFにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aで実行
しているアプリケーシヨン・プログラムに対し
て、セグメントSのページ1に関する書込みロツ
クを付与する。この動作を遂行するために、オペ
レーテイング・システムは、 (1) ページ1の現在の状態のコピーが作られるた
めのページ・フレームを割り当て、 (2) そのページ・フレームに対して、拡張ストレ
ージ(ES)の仮想アドレスを割り振り、 (3) ロツク・テーブル(LT)中に、そのページ
についてのエントリ(記入項目)を割り当て、 (4) そのページ・フレームに対して、新しく割り
振られたES仮想アドレスを割り当て、 (5) セグメントSのページ1の内容をページ・フ
レームにコピーし、 (6) アプリケーシヨン・プログラムがセグメント
Sのページ1に関するロツクを保持しているこ
とを表示するために、LTのエントリに記入し、 (7) そのページのコピーのES仮想アドレスを、
該ページについてのLTのエントリにコピーし、 (8) アプリケーシヨン・プログラムによつて保持
されているロツクのリスト中に、そのページに
ついてのLTのエントリを、連結(chain)す
る。
トランザクシヨンを打ち切る必要がある場合、
拡張ストレージES中のページのコピーは、ペー
ジの内容を回復するのに用いられる。アプリケー
シヨン・プログラムによつて保有されているロツ
ク・テーブルのエントリのチエーン(連鎖)は、
トランザクシヨンを処理している時に、アプリケ
ーシヨン・プログラムによつて変更された仮想ペ
ージのセツトの内容を「覚えておく」ために用い
られる。
ステツプGにおいて、オペレーテイング・シス
テムは、ロツクに関する情報を、そのページの反
転ページ・テーブルIPTのエントリにコピーし、
そして、アプリケーシヨン・プログラムのストア
命令を再試行するために、アプリケーシヨン・プ
ログラムがそのストア命令を再試行するようにス
ケジユールする。
ステツプHにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行し、それを成功
裡に完了する。
ステツプIにおいて、アプリケーシヨン・プロ
グラムはセグメントSのページ2のストアの動作
を試みる。
ステツプJにおいて、オペレーテイング・シス
テムはセグメントSのページ2に対して、ステツ
プB乃至ステツプGで遂行した動作と同じ動作を
遂行する。
ステツプKにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行して、それを成
功裡に完了する。
ステツプLにおいて、アプリケーシヨン・プロ
グラムは、バツクアウト・サービスを呼び出し
て、走つているトランザクシヨンを打ち切りたい
ことを表示する。
ステツプMにおいて、オペレーテイング・シス
テムは打ち切り要求をインターセプトする。
ステツプNにおいて、オペレーテイング・シス
テムはアプリケーシヨン・プログラムによつて保
持されていたロツクを解放する。この動作を遂行
するために、オペレーテイング・システムは、ア
プリケーシヨン・プログラムによりロツクされて
いる各ページに対して、以下の動作を行う。即
ち、オペレーテイング・システムは、 (1) アプリケーシヨン・プログラムによつて保持
されていたロツクに対応する各ロツク・テーブ
ル(LT)・エントリを検査する。
(2) 主メモリ中にあつて、LTが存在し、アプリ
ケーシヨン・プログラムによつて修正されたこ
とを表示するすべてのページの内容を破棄す
る。
(3) LTが存在し、アプリケーシヨン・プログラ
ムによつてページが修正されたことを表示する
ページ毎に、そのロツク・テーブル(LT)の
エントリによつて指示された拡張ストレージ
ESのページを、主メモリに持つて来る。
(4) ESページを、それが前の内容を表わすペー
ジに関連した仮想アドレスにリネームする。
(5) アプリケーシヨン・プログラムによつて保持
されていたロツクのリストから、そのページに
ついてのLTのエントリを非結合(unchain)
にする。
(6) そのページ用に割り振られたロツク・テーブ
ルのエントリを解放する。
ステツプOにおいて、オペレーテイング・シス
テムはトランザクシヨンが打ち切られたことをア
プリケーシヨン・プログラムに通知する。
第15図はクラスタ構成中の2つのプロセツシ
ング・ユニツトがクラスタ・ストレージのセグメ
ントをオープンしたとき、オープンされマツプさ
れた現存するクラスタ・ストレージのセグメント
に対するトランザクシヨンが、バツクアツプ・ア
クセス・コーデイネータとして動作するプロセツ
シング・ユニツトに関して、どのようにして実行
され、そしてコミツトされるかを説明する流れ図
である。説明を簡明にするために、以下の前提を
設ける。即ち、 (1) セグメントSは、プロセツシング・ユニツト
10aで実行するアプリケーシヨン・プログラ
ム及びプロセツシング・ユニツト10bで実行
するアプリケーシヨン・プログラムによつて行
われる読取り/書込みアクセス(RWA)のた
めにマツプされたクラスタ・ストレージのセグ
メントであり、 (2) セグメントSは、仮想メモリ中の丁度2つの
ページ、即ちページ1及びページ2を現在含ん
でおり、 (3) ページ1及びページ2の両方は現在、プロセ
ツシング・ユニツト10bの主メモリに記憶さ
れており、 (4) ページ1及びページ2はプロセツシング・ユ
ニツト10bの主メモリに記憶されてから後
に、ページ1及びページ2の両方は修正されて
いるものとするという前提条件である。
第15図のステツプAにおいて、プロセツシン
グ・ユニツト10bにおいて実行されるアプリケ
ーシヨン・プログラムはセグメントSのページ1
中へのストアを試みている。アプリケーシヨン・
プログラムは、セグメントSに関するロツクを未
だ保持していないので、ページ1にストアする試
みはロツク・ミスを発生する。
ステツプBにおいて、プロセツシング・ユニツ
ト10bのオペレーテイング・システムはロツ
ク・ミスをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10bで実行
される他のすべてのアプリケーシヨン・プログラ
ムがセグメントSのページ1に関してロツクを保
持していないことを確定する。
ステツプDにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aがセグ
メントSのアクセス・コーデイネータであること
を確定する。
ステツプEにおいて、プロセツシング・ユニツ
ト10bはプロセツシング・ユニツト10aにメ
ツセージ1を送ることにより、プロセツシング・
ユニツト10aがセグメントSのページ1に関す
る書込みロツクをプロセツシング・ユニツト10
bに対して付与することを、要求する。
ステツプFにおいて、プロセツシング・ユニツ
ト10aがプロセツシング・ユニツト10bから
メツセージ1を受取ると、プロセツシング・ユニ
ツト10aは、クラスタ構成中の他のプロセツシ
ング・ユニツトがセグメントSのページ1に関す
るロツクを、現在保持していないことを確定す
る。
ステツプGにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10bに
メツセージ2を送ることにより、プロセツシン
グ・ユニツト10aがセグメントSのページ1に
関する書込みロツクをプロセツシング・ユニツト
10bに付与したことを、通知する。
ステツプHにおいて、プロセツシング・ユニツ
ト10bのオペレーテイング・システムは、プロ
セツシング・ユニツト10bで実行されているア
プリケーシヨン・プログラムに対して、セグメン
トSのページ1に関する書込みロツクを付与す
る。この動作を遂行するために、オペレーテイン
グ・システムは、 (1) ページ1の現在の状態のコピーが作られるた
めのページ・フレームを割り当て、 (2) そのページ・フレームに対して拡張ストレー
ジ(ES)の仮想アドレスを割り振り、 (3) ロツク・テーブル(LT)中に、そのページ
についてのエントリ(記入項目)を割り当て、 (4) そのページ・フレームに対して、新しく割り
振られたESの仮想アドレスを割り当て、 (5) セグメントSのページ1の内容をページ・フ
レームにコピーし、 (6) アプリケーシヨン・プログラムが、セグメン
トSのページ1に関するロツクを保持している
ことを表示するために、LTのエントリに記入
し、 (7) そのページのコピーのES仮想アドレスを、
そのページについてのLTのエントリにコピー
し、 (8) アプリケーシヨン・プログラムによつて保持
されているロツクのリスト中に、そのページに
ついてのLTのエントリを、連結(chain)す
る。
トランザクシヨンを打ち切る必要がある場合、
拡張ストレージES中のページのコピーは、ペー
ジの内容を回復するのに用いられる。アプリケー
シヨン・プログラムによつて保有されているロツ
ク・テーブルのエントリのチエーン、即ち鎖は、
トランザクシヨンを処理している時に、アプリケ
ーシヨン・プログラムによつて変更された仮想ペ
ージのセツトの内容を「覚えておく」ために用い
られる。
ステツプIにおいて、オペレーテイング・シス
テムは、ロツクに関する情報を、そのページの反
転ページ・テーブルIPTのエントリにコピーし、
そして、アプリケーシヨン・プログラムがストア
命令を再試行するようにスケジユールする。
ステツプJにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行し、それを成功
裡に完結する。
ステツプKにおいて、アプリケーシヨン・プロ
グラムはセグメントSのページ2へのストア動作
を行う。
ステツプLにおいて、オペレーテイング・シス
テムはセグメントSのページ2に対して、ステツ
プB乃至ステツプJで行つた動作と同じ動作を遂
行する。
ステツプMにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行して、それを成
功裡に完結する。
ステツプNにおいて、アプリケーシヨン・プロ
グラムはコミツト・サービスを呼び出して、走つ
ているトランザクシヨンをコミツトしたいことを
表示する。
ステツプOにおいて、オペレーテイング・シス
テムはコミツト要求をインターセプトする。
ステツプPにおいて、アプリケーシヨン・プロ
グラムによつてロツクされたページ毎に、プロセ
ツシング・ユニツト10bのオペレーテイング・
システムは、アクセス・コーデイネータであるプ
ロセツシング・ユニツト10aにメツセージを送
り、これにより、若し、そのページについてのロ
ツク・テーブル(LT)がそのページがアプリケ
ーシヨン・プログラムによつて更新されたという
ことを表示しているならば、プロセツシング・ユ
ニツト10aがそのページを拡張ストレージ
(ES)にコピーすることを、プロセツシング・ユ
ニツト10aに対して要求する。
ステツプQにおいて、プロセツシング・ユニツ
ト10aがプロセツシング・ユニツト10bによ
つて修正された最後のページを受取ると、プロセ
ツシング・ユニツト10aは、そのESから、修
正された個々のページをその適切な仮想メモリの
セグメントに移動し、次に、プロセツシング・ユ
ニツト10bにメツセージを送り、プロセツシン
グ・ユニツト10aがそのESにそのページを移
動したことを通知する。
ステツプRにおいて、プロセツシング・ユニツ
ト10aがプロセツシング・ユニツト10bから
の通知を受取つた時、プロセツシング・ユニツト
10aは次の動作を行う。
(1) アプリケーシヨン・プログラムにより保持さ
れていたロツクのリストから、アプリケーシヨ
ン・プログラムによりロツクされていた各ペー
ジのLTエントリを連結解除し、そして、 (2) そのページに割り当てられたロツク・テーブ
ルのエントリを解放する。
ステツプSにおいて、オペレーテイング・シス
テムは、トランザクシヨンが成功裡に完結したこ
とをアプリケーシヨン・プログラムに通知する。
第16図は、クラスタ構成中の2つのプロセツ
シング・ユニツトがクラスタ・ストレージのセグ
メントをオープンしたとき、オープンされマツプ
された現存のクラスタ・ストレージのセグメント
に対するトランザクシヨンが、バツクアツプ・ア
クセス・コーデイネータとして動作するプロセツ
シング・ユニツトに関して、どのようにして実行
され、そして打ち切られるかを説明する流れ図で
ある。説明を簡明にするために、以下の前提を設
ける。即ち、 (1) セグメントSは、プロセツシング・ユニツト
10aで実行するアプリケーシヨン・プログラ
ム及びプロセツシング・ユニツト10bで実行
するアプリケーシヨン・プログラムによつて行
われる読取り/書込みアクセス(RWA)のた
めにマツプされたクラスタ・ストレージのセグ
メントであり、 (2) セグメントSは、仮想メモリ中の丁度2つの
ページ、即ちページ1及びページ2を現在含ん
でおり、 (3) ページ1及びページ2の両方は現在、プロセ
ツシング・ユニツト10bの主メモリに記憶さ
れており、 (4) ページ1及びページ2はプロセツシング・ユ
ニツト10bの主メモリに記憶されてから、ペ
ージ1及びページ2の両方は修正されているも
のとするという前提条件である。
第16図のステツプAにおいて、プロセツシン
グ・ユニツト10bで実行するアプリケーシヨ
ン・プログラムはセグメントSのページ1中への
ストアを試みている。アプリケーシヨン・プログ
ラムは、セグメントSに関するロツクを未だ保持
していないので、ページ1にストアする試みはロ
ツク・ミスを発生する。
ステツプBにおいて、プロセツシング・ユニツ
ト10aのオペレーテイング・システムはロツ
ク・ミスをインターセプトする。
ステツプCにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10bで実行
される他のすべてのアプリケーシヨン・プログラ
ムがセグメントSのページ1に関するロツクを保
持していないことを確定する。
ステツプDにおいて、オペレーテイング・シス
テムは、プロセツシング・ユニツト10aがセグ
メントSのアクセス・コーデイネータであること
を確定する。
ステツプEにおいて、プロセツシング・ユニツ
ト10bは、プロセツシング・ユニツト10aに
メツセージ1を送り、プロセツシング・ユニツト
10aがプロセツシング・ユニツト10bにペー
ジ1の書込みロツクを付与することを要求する。
ステツプFにおいて、プロセツシング・ユニツ
ト10aがプロセツシング・ユニツト10bから
メツセージ1を受取ると、プロセツシング・ユニ
ツト10aは、クラスタ構成中の他のプロセツシ
ング・ユニツトがセグメントSのページ1のロツ
クを、現在保持していないことを確定する。
ステツプGにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10bに
対してメツセージ2を送り、プロセツシング・ユ
ニツト10aがセグメントSのページ1に書込み
ロツクを付与したことに応答する。
ステツプHにおいて、プロセツシング・ユニツ
ト10bのオペレーテイング・システムは、プロ
セツシング・ユニツト10bで実行されているア
プリケーシヨン・プログラムに対して、セグメン
トSのページ1に関する書込みロツクを付与す
る。この動作を遂行するために、オペレーテイン
グ・システムは、 (1) ページ1の現在状態のコピーが作られるため
のページ・フレームを割り当て、 (2) ページ・フレームのための拡張ストレージ
(ES)の仮想アドレスを割り振り、 (3) ロツク・テーブル(LT)中に、そのページ
のエントリ(記入項目)を割り当て、 (4) そのページ・フレームに対して、新しく割り
振られたES仮想アドレスを割り当て、 (5) セグメントSのページ1の内容をページ・フ
レーム中にコピーし、 (6) アプリケーシヨン・プログラムが、セグメン
トSのページ1に関するロツクを保持している
ことを表示するために、LTのエントリに記入
し、 (7) そのページのコピーのES仮想アドレスを、
そのページについてのLTのエントリにコピー
し、 (8) アプリケーシヨン・プログラムによつて保持
されているロツクのリスト中に、そのページに
ついてのLTのエントリを、連結(chain)す
る。
トランザクシヨンを打ち切る必要がある場合、
拡張ストレージES中のページのコピーは、ペー
ジの内容を回復するのに用いられる。アプリケー
シヨン・プログラムによつて保有されているロツ
ク・テーブルのエントリのチエーンは、トランザ
クシヨンを処理している時に、アプリケーシヨ
ン・プログラムによつて変更された仮想ページの
セツト内容を「覚えておく」ために用いられる。
ステツプIにおいて、オペレーテイング・シス
テムは、ロツクに関する情報を、そのページの反
転ページ・テーブルIPTのエントリにコピーし、
そして、アプリケーシヨン・プログラムが、スト
ア命令を再試行するようにスケジユールする。
ステツプJにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行し、それを成功
裡に完結する。
ステツプKにおいて、アプリケーシヨン・プロ
グラムはセグメントSのページ2にストアの動作
を行う。
ステツプLにおいて、オペレーテイング・シス
テムはセグメントSのページ2に対して、ステツ
プB乃至ステツプHで行つた動作と同じ動作を遂
行する。
ステツプMにおいて、アプリケーシヨン・プロ
グラムはそのストア命令を再試行して、それを成
功裡に完結する。
ステツプNにおいて、アプリケーシヨン・プロ
グラムは、走つているトランザクシヨンを打ち切
りたいことを表示し、バツクアツプ・サービスを
呼び出す。
ステツプOにおいて、オペレーテイング・シス
テムは打ち切り要求をインターセプトする。
ステツプPにおいて、オペレーテイング・シス
テムはアプリケーシヨン・プログラムによつて保
持されていたロツクを解放する。この動作を遂行
するために、オペレーテイング・システムは、ア
プリケーシヨン・プログラムによりロツクされて
いた各ページに対して、以下の動作を行う。即
ち、 (1) アプリケーシヨン・プログラムによつて保持
れていたロツクに対応する各ロツク・テーブル
(LT)・エントリを検査する。
(2) 主メモリ中にあり、LT中に存在するページ
であつて、アプリケーシヨン・プログラムによ
つて修正されたことが表示されたすべてのペー
ジの内容を破棄する。
(3) LT中に存在し、アプリケーシヨン・プログ
ラムによつてページが修正されたことが表示さ
れたページの各々について、ロツク・テーブル
(LT)のエントリによつて指示されている拡張
ストレージESのページを、主メモリに持ち込
む。
(4) ESページを、それが前の内容を表わすペー
ジに関連した仮想アドレスにリネームする。
(5) アプリケーシヨン・プログラムによつて保持
されていたロツクのリストから、そのページの
LTについてのエントリを非結合(unchain)
にする。
(6) そのページのために割り当てられたロツク・
テーブルのエントリを解放する。
ステツプQにおいて、オペレーテイング・シス
テムはトランザクシヨンが打ち切られたことをア
プリケーシヨン・プログラムに通知する。
3個またはそれ以上のプロセツシング・ユニツ
トが同じクラスタ・ストレージのセグメントをオ
ープンし、そして、アクセス・コーデイネータと
して動作するプロセツシング・ユニツトにおいて
実行するアプリケーシヨン・プログラムが、トラ
ンザクシヨンを実行した後、それをコミツトする
クラスタ構成においては、第13図において説明
した動作と類似の動作が遂行される。主な相違点
は、2つの付加的な動作が加えられるということ
である。一方のステツプは、第13図のステツプ
のステツプFとステツプGの間に加えられる。こ
のステツプにおいて、バツクアツプ・アクセス・
コーデイネータがバツクアツプ・ロツク・テーブ
ル(Backup Lock Table−BLT)中にそれらの
ロツクをストアすることができるように、アクセ
ス・コーデイネータは、アクセス・コーデイネー
タ及びバツクアツプ・アクセス・コーデイネータ
以外のプロセツシング・ユニツトによつて実行さ
れるアプリケーシヨン・プログラムによつて保持
されているロツクのリストを、バツクアツプ・ア
クセス・コーデイネータに送る。このBLTは、
クラスタ構成内の個々のプロセツシング・ユニツ
トの仮想メモリ中に、どのクラスタ・ストレージ
のセグメントのページがストアされたかを確定す
るために、回復動作の間で使用される。どのよう
にして、このBLTが回復を促進するために用い
られるかについては、以下に細述する。他方のス
テツプは、第13図のステツプのQ及びRの間で
付加されている。このステツプにおいて、アクセ
ス・コーデイネータは、アクセス・コーデイネー
タ及びバツクアツプ・アクセス・コーデイネータ
以外のプロセツシング・ユニツトによつて実行さ
れるアプリケーシヨン・プログラムによつて解放
されるロツクのリストを、バツクアツプ・アクセ
ス・コーデイネータに送るので、バツクアツプ・
アクセス・コーデイネータはバツクアツプ・ロツ
ク・テーブルBLT中からそれらのロツクを取り
除くことができる。
3個またはそれ以上のプロセツシング・ユニツ
トが同じクラスタ・ストレージのセグメントをオ
ープンし、そして、アクセス・コーデイネータと
して動作するプロセツシング・ユニツトにおいて
実行するアプリケーシヨン・プログラムがトラン
ザクシヨンを実行した後に、それを打ち切るクラ
スタ構成においては、第14図において説明した
動作と類似の動作が遂行される。主な相違点は、
2つの付加的な動作が加えられるということであ
る。一方のステツプは、第14図のステツプのス
テツプFとステツプGの間に加えられる。このス
テツプにおいて、バツクアツプ・アクセス・コー
デイネータがバツクアツプ・ロツク・テーブル
BLT中にそれらのロツクをストアすることがで
きるように、アクセス・コーデイネータは、アク
セス・コーデイネータ及びバツクアツプ・アクセ
ス・コーデイネータ以外のプロセツシング・ユニ
ツトによつて実行されるアプリケーシヨン・プロ
グラムによつて保持されているロツクのリスト
を、バツクアツプ・アクセス・コーデイネータに
送る。このBLTは、クラスタ構成内の個々のプ
ロセツシング・ユニツトの仮想メモリ中に、どの
クラスタ・ストレージのセグメントのページがス
トアされたかを確定するために、回復動作の間で
使用される。どのようにして、このBLTが回復
を促進するように用いられるかについては、以下
に細述する。他方のステツプは、第14図のステ
ツプのN及びOの間で付加されている。このステ
ツプにおいて、アクセス・コーデイネータは、ア
クセス・コーデイネータ及びバツクアツプ・アク
セス・コーデイネータ以外のプロセツシング・ユ
ニツトによつて実行されるアプリケーシヨン・プ
ログラムによつて解放されるロツクのリストを、
バツクアツプ・アクセス・コーデイネータに送る
ので、バツクアツプ・アクセス・コーデイネータ
はバツクアツプ・ロツク・テーブルBLT中から
それらのロツクを取り除くことができる。
3個またはそれ以上のプロセツシング・ユニツ
トが同じクラスタ・ストレージのセグメントをオ
ープンし、そして、バツクアツプ・アクセス・コ
ーデイネータとして動作するプロセツシング・ユ
ニツトにおいて実行するアプリケーシヨン・プロ
グラムがトランザクシヨンを実行した後、それを
コミツトするクラスタ構成においては、第15図
において説明した動作と類似の動作が遂行され
る。
3個またはそれ以上のプロセツシング・ユニツ
トが同じクラスタ・ストレージのセグメントをオ
ープンし、そして、バツクアツプ・アクセス・コ
ーデイネータとして動作するプロセツシング・ユ
ニツトにおいて実行するアプリケーシヨン・プロ
グラムがトランザクシヨンを実行後、それを打ち
切るクラスタ構成においては、第16図において
説明した動作と類似の動作が遂行される。
3個またはそれ以上のプロセツシング・ユニツ
トが同じクラスタ・ストレージのセグメントをオ
ープンし、そして、アクセス・コーデイネータと
しても、またはバツクアツプ・アクセス・コーデ
イネータとしても動作していないプロセツシン
グ・ユニツトにおいて実行するアプリケーシヨ
ン・プログラムがトランザクシヨンを実行した
後、それをコミツトするクラスタ構成において
は、第15図において説明した動作と類似の動作
が遂行される。
3個またはそれ以上のプロセツシング・ユニツ
トが同じクラスタ・ストレージのセグメントをオ
ープンし、そして、アクセス・コーデイネータと
しても、またはバツクアツプ・アクセス・コーデ
イネータとしても動作していないプロセツシン
グ・ユニツトにおいて実行するアプリケーシヨ
ン・プログラムがトランザクシヨンを実行した後
に、それを打ち切るクラスタ構成においては、第
16図において説明した動作と類似の動作が遂行
される。
第17図はアクセス・コーデイネータとして
も、または、バツクアツプ・アクセス・コーデイ
ネータとしても動作していないプロセツシング・
ユニツトが誤動作を生じた時、クラスタ・ストレ
ージのセグメントについて、どのように誤動作の
回復が達成されるかを説明するための流れ図であ
る。プロセツシング・ユニツト10aはアクセ
ス・コーデイネータであり、プロセツシング・ユ
ニツト10bはバツクアツプ・アクセス・コーデ
イネータであり、プロセツシング・ユニツト10
cが故障したものとする。
第17図のステツプAにおいて、アクセス・コ
ーデイネータとして動作しているプロセツシン
グ・ユニツト10aは、アクセス・コーデイネー
タとして動作していないプロセツシング・ユニツ
ト10cが誤動作を生じたことを確定する。
ステツプBにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10c中
の仮想メモリのクラスタ・ストレージ・セグメン
トのページの組を確定するために、ロツク・テー
ブルLTを走査する。
ステツプCにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10bが
アクセスコーデイネータであることを確定する。
ステツプDにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10c以
外のプロセツシング・ユニツトの仮想メモリ中に
複写されたクラスタ・ストレージのセグメント内
のページの組を確定するために、そのロツク・テ
ーブルLTを走査する。この実施例においては、
その仮想メモリ中にクラスタ・セグメントのペー
ジを保持する可能性のあるただ1つのプロセツシ
ング・ユニツト10bがある。
ステツプEにおいて、プロセツシング・ユニツ
ト10aは2つのページの組を比較して、プロセ
ツシング・ユニツト10cの仮想メモリ中にはあ
つたけれども、プロセツシング・ユニツト10b
の仮想メモリ中にはないクラスタ・ストレージの
セグメントのページを確定する。プロセツシン
グ・ユニツト10aだけが、その仮想メモリ中の
これらの残りのページのコピーを持つている。そ
の後の故障に対して備えるために、プロセツシン
グ・ユニツト10aは、バツクアツプ・アクセ
ス・コーデイネータの仮想メモリ中にこれらのペ
ージを複写しなければならない。
ステツプFにおいて、これらのページ毎に、プ
ロセツシング・ユニツト10aは、バツクアツ
プ・アクセス・コーデイネータ、即ちプロセツシ
ング・ユニツト10bにメツセージを送ることに
よつて、プロセツシング・ユニツト10bがそれ
らの各ページをその仮想メモリにコピーすること
を要求する。
ステツプGにおいて、プロセツシング・ユニツ
ト10bがプロセツシング・ユニツト10aか
ら、最後のページを受け取つたとき、プロセツシ
ング・ユニツト10bは、プロセツシング・ユニ
ツト10aにメツセージを送り、プロセツシン
グ・ユニツト10bがそれらの各ページを仮想メ
モリにコピーしたことを通知する。
ステツプHにおいて、プロセツシング・ユニツ
ト10aがプロセツシング・ユニツト10bから
の通知を受取ると、プロセツシング・ユニツト1
0aはプロセツシング・ユニツト10cについて
のすべてのLTエントリを解放する。
第18図はアクセス・コーデイネータとして動
作しているプロセツシング・ユニツトが誤動作を
起こした時、クラスタ・ストレージのセグメント
について、どのようにして誤動作の回復が行われ
るかを説明するための流れ図である。プロセツシ
ング・ユニツト10aはアクセスコーデイネータ
であるが故障し、プロセツシング・ユニツト10
bはバツクアツプ・アクセス・コーデイネータで
あり、プロセツシング・ユニツト10cが新しい
バツクアツプ・アクセス・コーデイネータとして
選ばれる様子を示している。
第18図のステツプAにおいて、バツクアツ
プ・アクセス・コーデイネータとして動作してい
るプロセツシング・ユニツトであるプロセツシン
グ・ユニツト10bは、アクセス・コーデイネー
タとして動作しているプロセツシング・ユニツト
10aが故障したことを確定する。
ステツプBにおいて、プロセツシング・ユニツ
ト10bは、プロセツシング・ユニツト10aの
仮想メモリ中にあつたクラスタ・ストレージのセ
グメントのページの組を確定するために、そのバ
ツクアツプ・ロツク・テーブル(BLT)を走査
する。
ステツプCにおいて、プロセツシング・ユニツ
ト10bは、新しいバツクアツプ・アクセス・コ
ーデイネータとしてプロセツシング・ユニツト1
0cを選択する。一般に、現在のバツクアツプ・
アクセス・コーデイネータを除いて、任意の残り
のプロセツシング・ユニツトを新しいバツクアツ
プ・アクセス・コーデイネータとして選択するこ
とができる。
ステツプDにおいて、プロセツシング・ユニツ
ト10bは、プロセツシング・ユニツト10aに
存在していたページの組が、プロセツシング・ユ
ニツト10a以外のどのプロセツシング・ユニツ
トのメモリ中に複写されていたかを確定するため
に、そのBLTを走査する。この実施例において
は、プロセツシング・ユニツト10b、またはプ
ロセツシング・ユニツト10cがその仮想メモリ
中にクラスタ・セグメントのページのコピーを持
つている可能性がある。
ステツプEにおいて、プロセツシング・ユニツ
ト10bは以下の2つのページの組を比較により
確定する。それらの2つのページの組とは、 (1) プロセツシング・ユニツト10aが故障した
時に、プロセツシング・ユニツト10aと、プ
ロセツシング・ユニツト10bの仮想メモリの
中には存在していたが、プロセツシング・ユニ
ツト10cの仮想メモリ中には存在していなか
つたクラスタ・ストレージのセグメントのペー
ジの組と、 (2) プロセツシング・ユニツト10aが故障した
時に、プロセツシング・ユニツト10aと、プ
ロセツシング・ユニツト10cの仮想メモリの
中には存在していたが、プロセツシング・ユニ
ツト10bの仮想メモリ中には存在していなか
つたクラスタ・ストレージのセグメントのペー
ジの組である。
ステツプFにおいて、プロセツシング・ユニツ
ト10aとプロセツシング・ユニツト10cの仮
想メモリ中には存在したが、プロセツシング・ユ
ニツト10bの仮想メモリには存在しなかつたペ
ージ毎に、プロセツシング・ユニツト10bは、
プロセツシング・ユニツト10cにメツセージを
送ることによつて、プロセツシング・ユニツト1
0cがプロセツシング・ユニツト10bに該ペー
ジのコピーを送ることを要求する。
ステツプGにおいて、プロセツシング・ユニツ
ト10cからの最後のページを受取つたとき、プ
ロセツシング・ユニツト10bは、プロセツシン
グ・ユニツト10aとプロセツシング・ユニツト
10bの仮想メモリ中には存在したが、プロセツ
シング・ユニツト10cの仮想メモリには存在し
なかつたページの各々につき、プロセツシング・
ユニツト10cにメツセージを送ることにより、
プロセツシング・ユニツト10cが当該ページを
その仮想メモリにコピーすることを要求する。
ステツプHにおいて、プロセツシング・ユニツ
ト10bからの最後のページを受取つたとき、プ
ロセツシング・ユニツト10cはメツセージをプ
ロセツシング・ユニツト10bに送り、プロセツ
シング・ユニツト10cがページを仮想メモリに
移動したことを通知する。
ステツプIにおいて、プロセツシング・ユニツ
ト10cからの応答を受取つたとき、プロセツシ
ング・ユニツト10bは故障したプロセツシン
グ・ユニツト10aについてのLTのすべてのエ
ントリを解放する。
第19図はバツクアツプ・アクセス・コーデイ
ネータとして動作しているプロセツシング・ユニ
ツトが故障した時に、クラスタ・ストレージのセ
グメントに対して、どのようにして誤動作の回復
が行われるかを説明するための流れ図である。ユ
ニツト10aがアクセス・コーデイネータであ
り、ユニツト10bがバツクアツプ・アクセス・
コーデイネータであるが故障し、ユニツト10c
が新しいバツクアツプ・アクセス・コーデイネー
タに選ばれるものとする。
第19図のステツプAにおいて、アクセス・コ
ーデイネータとして動作しているプロセツシン
グ・ユニツト10aは、バツクアツプ・アクセ
ス・コーデイネータとして動作しているプロセツ
シング・ユニツト10bが故障したことを確定す
る。
ステツプBにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10bの
仮想メモリ中にあつたクラスタ・ストレージのセ
グメントのページの組を確定するために、そのロ
ツク・テーブル(LT)を走査する。
ステツプCにおいて、プロセツシング・ユニツ
ト10aは、新しいバツクアツプ・アクセス・コ
ーデイネータとしてプロセツシング・ユニツト1
0cを選択する。一般に、現在のバツクアツプ・
アクセス・コーデイネータを除いて、任意の残り
のプロセツシング・ユニツトを新しいバツクアツ
プ・アクセス・コーデイネータとして選択するこ
とができる。
ステツプDにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10bに
存在していたページの組が、プロセツシング・ユ
ニツト10b以外のプロセツシング・ユニツトの
メモリ中に複写されていたかを確定するために、
そのLTを走査する。この実施例においては、プ
ロセツシング・ユニツト10a、またはプロセツ
シング・ユニツト10cがその仮想メモリ中にク
ラスタ・セグメントのページのコピーを持つてい
る可能性がある。
ステツプEにおいて、プロセツシング・ユニツ
ト10bは以下の2つのページの組の比較の結果
として、確定する。それらのページの組は、 (1) プロセツシング・ユニツト10aが故障した
時に、プロセツシング・ユニツト10bと、プ
ロセツシング・ユニツト10cの仮想メモリ中
には存在していたが、プロセツシング・ユニツ
ト10aの仮想メモリ中には存在していなかつ
たクラスタ・ストレージのセグメントのページ
の組と、 (2) プロセツシング・ユニツト10aが故障した
時に、プロセツシング・ユニツト10aと、プ
ロセツシング・ユニツト10bの仮想メモリ中
には存在していたが、プロセツシング・ユニツ
ト10cの仮想メモリ中には存在していなかつ
たクラスタ・ストレージのセグメントのページ
の組とである。
ステツプFにおいて、プロセツシング・ユニツ
ト10aは、プロセツシング・ユニツト10aと
プロセツシング・ユニツト10cの仮想メモリ中
には存在したが、プロセツシング・ユニツト10
aの仮想メモリには存在しないページ毎に、プロ
セツシング・ユニツト10cにメツセージを送る
ことによつて、プロセツシング・ユニツト10c
がプロセツシング・ユニツト10aに該ページの
コピーを送ることを要求する。
ステツプGにおいて、プロセツシング・ユニツ
ト10cからの最後のページを受取つたとき、プ
ロセツシング・ユニツト10aは、プロセツシン
グ・ユニツト10aとプロセツシング・ユニツト
10bの仮想メモリに存在したが、プロセツシン
グ・ユニツト10cには存在しなかつたページ毎
に、プロセツシング・ユニツト10cにメツセー
ジを送ることによつて、プロセツシング・ユニツ
ト10cが該ページをその仮想メモリにコピーす
ることを要求する。
ステツプHにおいて、プロセツシング・ユニツ
ト10aからの最後のページを受取つたとき、プ
ロセツシング・ユニツト10cはメツセージをプ
ロセツシング・ユニツト10aに送り、プロセツ
シング・ユニツト10cがページを仮想メモリに
移動したことを通知する。
ステツプIにおいて、プロセツシング・ユニツ
ト10cからの応答を受取つたとき、プロセツシ
ング・ユニツト10aは故障したプロセツシン
グ・ユニツト10bについてのすべてのLTエン
トリを解放する。
E 発明の効果 以上説明したように、本発明は、仮想メモリを
有する多重プロセツサ・システムにおいて、アプ
リケーシヨン・プログラムにより同時に実行され
るトランザクシヨンが、どんな理由で打ち切られ
たとしても、データの喪失やデータのコンシステ
ンシーの喪失を発生することのないデータ処理シ
ステムを簡単な構成によつて与えることが出来
る。
【図面の簡単な説明】
第1図は本発明を適用するためのクラスタ構成
に相互接続されている複数個のプロセツシング・
ユニツトの機能的ブロツク図、第2図は第1図に
示した1つのプロセツシング・ユニツトに含まれ
ている種々の機能を説明するためのブロツク図、
第3図は第1図及び第2図に示したプロセツシン
グ・ユニツトに適用されるソフトウエア機能を説
明するためのブロツク図、第4図は第2図及び第
3図に示されたユニツトの仮想メモリ・マネージ
ヤの機能により適用される外部ページ・テーブル
(XPT)データ構造を説明するための図、第5図
は第2図及び第3図に示したユニツトの仮想メモ
リ・マネージヤの機能により適用される反転ペー
ジ・テーブルのデータ構造を説明するための図、
第6図は仮想メモリのセグメントを識別する大域
セグメント識別子及び局部セグメント識別子のデ
ータ構造を示す図、第7図は3つのプロセツシン
グ・ユニツト、1つのスイツチ、3つのコミニユ
ケーシヨン・リンクを持ち、各プロセツシング・
ユニツトは2次ストレージを持つたクラスタ構成
を示すブロツク図、第8図は与えられたプロセツ
シング・ユニツトで実行されるアプリケーシヨ
ン・プログラムがクラスタ・ストレージのセグメ
ントを作成し、そしてオープンする時、そのプロ
セツシング・ユニツトで実行されるオペレーテイ
ング・システムにより遂行されるステツプを説明
するための流れ図、第9図はオープンされたクラ
スタ・ストレージ・フアイルが、クラスタ構成中
で共用された仮想メモリにどのようにしてロード
されるかを説明するための流れ図、第10図はク
ラスタ構成中のただ1つのプロセツシング・ユニ
ツトがクラスタ・ストレージのセグメントをオー
プンした時、オープンされマツプされた現存する
クラスタ・ストレージのセグメントに対して、ど
のようにして、トランザクシヨンがが実行され、
そしてコミツトされるかを説明するための流れ
図、第11図はクラスタ構成中のただ1つのプロ
セツシング・ユニツトがクラスタ・ストレージの
セグメントをオープンした時、オープンされマツ
プされた現存するクラスタ・ストレージのセグメ
ントに対するトランザクシヨンがどのように実行
され、そして打ち切られるかを説明するための流
れ図、第12図はアクセス・コーデイネータとは
異なつたプロセツシング・ユニツトで走つている
アプリケーシヨン・プログラムによつて、存在す
るクラスタ・ストレージ・フアイルが、どのよう
にしてオープンされるかを説明するための流れ
図、第13図はクラスタ構成中の2つのプロセツ
シング・ユニツトがクラスタ・ストレージのセグ
メントをオープンした時、オープンされマツプさ
れた現存するクラスタ・ストレージのセグメント
に対するトランザクシヨンが、アクセス・コーデ
イネータとして動作するプロセツシング・ユニツ
トに対して、どのようにして実行され、そしてコ
ミツトされるかを説明するための流れ図、第14
図はクラスタ構成中の2つのプロセツシング・ユ
ニツトがクラスタ・ストレージのセグメントをオ
ープンした時、オープンされマツプされた現存す
るクラスタ・ストレージのセグメントに対するト
ランザクシヨンが、アクセス・コーデイネータと
して動作するプロセツシング・ユニツトに対し
て、どのようにして実行され、そして打ち切られ
るかを説明するための流れ図、第15図はクラス
タ構成中の2つのプロセツシング・ユニツトがク
ラスタ・ストレージのセグメントをオープンした
時、オープンされマツプされた現存するクラス
タ・ストレージのセグメントに対するトランザク
シヨンが、バツクアツプ・アクセス・コーデイネ
ータとして動作するプロセツシング・ユニツトに
対して、どのようにして実行され、そしてコミツ
トされるかを説明するための流れ図、第16図は
クラスタ構成中の2つのプロセツシング・ユニツ
トがクラスタ・ストレージのセグメントをオープ
ンした時、オープンされマツプされた現存するク
ラスタ・ストレージのセグメントに対するトラン
ザクシヨンが、バツクアツプ・アクセス・コーデ
イネータとして動作するプロセツシング・ユニツ
トに対して、どのようにして実行され、そして打
ち切られるかを説明するための流れ図、第17図
はアクセス・コーデイネータとしても、またはバ
ツクアツプ・アクセス・コーデイネータとしての
いずれでも動作していないプロセツシング・ユニ
ツトが誤動作を生じた時、クラスタ・ストレージ
のセグメントに対して、どのように誤動作の回復
が達成されるかを説明するための流れ図、第18
図はアクセス・コーデイネータとして動作してい
るプロセツシング・ユニツトが誤動作を起こした
時、クラスタ・ストレージのセグメントに対し
て、どのようにして誤動作の回復が行われるかを
説明するための流れ図、第19図はバツクアツ
プ・アクセス・コーデイネータとして動作してい
るプロセツシング・ユニツトが誤動作を起こした
時、クラスタ・ストレージのセグメントに対し
て、どのようにして誤動作の回復が行われるかを
説明するための流れ図である。 10a,10b,10c……プロセツシング・
ユニツト、11……スイツチ、12……コミニユ
ケーシヨン・リンク、14……2次ストレージ装
置、16……主メモリ、20……入出力ポート、
24……デイスク装置。

Claims (1)

  1. 【特許請求の範囲】 1 複数のプロセツサ同士が通信リンクによつて
    相互に結合され、上記複数のプロセツサのそれぞ
    れが、当該プロセツサに関連づけられた物理的な
    メモリ、及び仮想メモリ変換機構を具備してなる
    データ処理システムにおけるデータ処理方法であ
    つて、 (a) コア内部の揮発性データを、上記複数のプロ
    セツサが一様にアドレツシングできるように、
    仮想アドレス空間にマツプし、 (b) 任意のプロセツサによる上記データへのアク
    セスを制御するプロセツサを指定し、 (c) 上記データを更新するトランザクシヨンを行
    うトランザクシヨン・プロセツサに対して、上
    記データへのアクセスを認め、 (d) 上記更新されたデータを、トランザクシヨ
    ン・プロセツサのメモリ及び他の1つのプロセ
    ツサのメモリに維持する ことを特徴とする方法。
JP63301094A 1987-11-30 1988-11-30 データ処理方法 Granted JPH01188965A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12682087A 1987-11-30 1987-11-30
US126820 1987-11-30

Publications (2)

Publication Number Publication Date
JPH01188965A JPH01188965A (ja) 1989-07-28
JPH0522259B2 true JPH0522259B2 (ja) 1993-03-29

Family

ID=22426862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63301094A Granted JPH01188965A (ja) 1987-11-30 1988-11-30 データ処理方法

Country Status (5)

Country Link
US (1) US5197148A (ja)
EP (1) EP0323013B1 (ja)
JP (1) JPH01188965A (ja)
BR (1) BR8806305A (ja)
DE (1) DE3854384T2 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410700A (en) * 1991-09-04 1995-04-25 International Business Machines Corporation Computer system which supports asynchronous commitment of data
CA2078312A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital data processor with improved paging
DE69231873T2 (de) * 1992-01-08 2002-04-04 Emc Corp., Hopkinton Verfahren zur Synchronisierung von reservierten Bereichen in einer redundanten Speicheranordnung
WO1994000816A1 (en) * 1992-06-18 1994-01-06 Andor Systems, Inc. Remote dual copy of data in computer systems
US5815656A (en) * 1992-09-23 1998-09-29 International Business Machines Corporation Method of validating memory structures in data processing systems
US5276878A (en) * 1992-10-07 1994-01-04 International Business Machines Corporation Method and system for task memory management in a multi-tasking data processing system
EP0613083B1 (en) * 1993-02-25 2002-01-23 Sun Microsystems, Inc. Transaction management in object oriented systems
US5802391A (en) * 1993-03-16 1998-09-01 Ht Research, Inc. Direct-access team/workgroup server shared by team/workgrouped computers without using a network operating system
JP2963298B2 (ja) * 1993-03-26 1999-10-18 富士通株式会社 二重化共有メモリにおける排他制御命令のリカバリ方法および計算機システム
US5485573A (en) * 1993-07-16 1996-01-16 Unisys Corporation Method and apparatus for assisting in the determination of the source of errors in a multi-host data base management system
DE69521101T2 (de) * 1994-10-31 2001-10-18 International Business Machines Corp., Armonk Gemeinsam genutzte virtuelle Platten mit anwendungstransparenter Wiedergewinnung
US5550973A (en) * 1995-03-15 1996-08-27 International Business Machines Corporation System and method for failure recovery in a shared resource system having a moving write lock
US5761403A (en) * 1995-05-17 1998-06-02 Nec Corporation Failure recovery system and failure recovery method in loosely coupled multi-computer system, and medium for storing failure recovery program
US5682537A (en) * 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5708771A (en) * 1995-11-21 1998-01-13 Emc Corporation Fault tolerant controller system and method
US5724501A (en) * 1996-03-29 1998-03-03 Emc Corporation Quick recovery of write cache in a fault tolerant I/O system
US6226665B1 (en) * 1996-09-19 2001-05-01 Microsoft Corporation Application execution environment for a small device with partial program loading by a resident operating system
US5909682A (en) * 1996-12-30 1999-06-01 Mci Worldcom, Inc. Real-time device data management for managing access to data in a telecommunication system
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6301643B1 (en) 1998-09-03 2001-10-09 International Business Machines Corporation Multi-environment data consistency
US6269432B1 (en) * 1998-10-23 2001-07-31 Ericsson, Inc. Distributed transactional processing system having redundant data
US6631478B1 (en) * 1999-06-18 2003-10-07 Cisco Technology, Inc. Technique for implementing high performance stable storage hierarchy in a computer network
US6587962B1 (en) * 1999-10-20 2003-07-01 Hewlett-Packard Development Company, L.P. Write request protection upon failure in a multi-computer system
TW454120B (en) * 1999-11-11 2001-09-11 Miralink Corp Flexible remote data mirroring
US7231430B2 (en) * 2001-04-20 2007-06-12 Egenera, Inc. Reconfigurable, virtual processing system, cluster, network and method
US6971044B2 (en) * 2001-04-20 2005-11-29 Egenera, Inc. Service clusters and method in a processing system with failover capability
US20040153746A1 (en) * 2002-04-24 2004-08-05 Talagala Nisha D. Mechanisms for embedding and using integrity metadata
US7051155B2 (en) * 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US7020805B2 (en) * 2002-08-15 2006-03-28 Sun Microsystems, Inc. Efficient mechanisms for detecting phantom write errors
US7133883B2 (en) * 2002-12-23 2006-11-07 Sun Microsystems, Inc. General techniques for diagnosing data corruptions
US7103811B2 (en) * 2002-12-23 2006-09-05 Sun Microsystems, Inc Mechanisms for detecting silent errors in streaming media devices
US20040123032A1 (en) * 2002-12-24 2004-06-24 Talagala Nisha D. Method for storing integrity metadata in redundant data layouts
US7353432B1 (en) 2003-11-25 2008-04-01 Sun Microsystems, Inc. Maintaining high data integrity
US7350034B2 (en) * 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US8799680B2 (en) 2005-09-15 2014-08-05 Microsoft Corporation Transactional sealed storage
US7552306B2 (en) * 2005-11-14 2009-06-23 Kabushiki Kaisha Toshiba System and method for the sub-allocation of shared memory
DE102007062974B4 (de) * 2007-12-21 2010-04-08 Phoenix Contact Gmbh & Co. Kg Signalverarbeitungsvorrichtung
US10089220B1 (en) * 2013-11-01 2018-10-02 Amazon Technologies, Inc. Saving state information resulting from non-idempotent operations in non-volatile system memory
JP6405851B2 (ja) * 2014-09-30 2018-10-17 富士通株式会社 予兆検知支援プログラム、方法、装置、及び予兆検知プログラム、
CN105242856B (zh) * 2015-10-29 2019-02-15 维沃移动通信有限公司 一种移动终端多系统间共享数据的方法和移动终端
US11080262B1 (en) * 2019-09-27 2021-08-03 Amazon Technologies, Inc. Optimistic atomic multi-page write operations in decoupled multi-writer databases
US11874796B1 (en) 2019-09-27 2024-01-16 Amazon Technologies, Inc. Efficient garbage collection in optimistic multi-writer database systems
EP3964959A1 (en) * 2020-09-03 2022-03-09 ARM Limited Data processing

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
DE3376590D1 (en) * 1982-04-28 1988-06-16 Int Computers Ltd Data processing system
DE3382152D1 (de) * 1982-12-09 1991-03-07 Sequoia Systems Inc Sicherstellungsspeichersystem.
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4758951A (en) * 1985-04-09 1988-07-19 Tektronix, Inc. Method for translating virtual addresses into real addresses
US4710870A (en) * 1985-07-10 1987-12-01 Bell Communications Research, Inc. Central computer backup system utilizing localized data bases
US5047917A (en) * 1985-07-12 1991-09-10 The California Institute Of Technology Apparatus for intrasystem communications within a binary n-cube including buffer lock bit
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4843542A (en) * 1986-11-12 1989-06-27 Xerox Corporation Virtual memory cache for use in multi-processing systems
US5060150A (en) * 1987-01-05 1991-10-22 Motorola, Inc. Process creation and termination monitors for use in a distributed message-based operating system

Also Published As

Publication number Publication date
EP0323013B1 (en) 1995-08-30
EP0323013A2 (en) 1989-07-05
JPH01188965A (ja) 1989-07-28
DE3854384T2 (de) 1996-03-28
BR8806305A (pt) 1989-08-15
DE3854384D1 (de) 1995-10-05
EP0323013A3 (en) 1991-03-20
US5197148A (en) 1993-03-23

Similar Documents

Publication Publication Date Title
JPH0522259B2 (ja)
US5222217A (en) System and method for implementing operating system message queues with recoverable shared virtual storage
US4399504A (en) Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
CN101807169B (zh) 事务型存储器访问的混合硬件软件实现
US4819159A (en) Distributed multiprocess transaction processing system and method
US4480304A (en) Method and means for the retention of locks across system, subsystem, and communication failures in a multiprocessing, multiprogramming, shared data environment
US8635193B2 (en) Cluster-wide read-copy update system and method
US7814065B2 (en) Affinity-based recovery/failover in a cluster environment
Mueller et al. A nested transaction mechanism for LOCUS
JPH03161859A (ja) リクエスト管理方法及びアクセス制御システム
WO1996003704A1 (en) Computer method and apparatus for asynchronous ordered operations
JPH0954754A (ja) 疎結合並列処理環境における顧客情報制御システム及び方法
JPH103416A (ja) 情報処理装置およびその方法
JPH09311839A (ja) データ共用方式
US5682507A (en) Plurality of servers having identical customer information control procedure functions using temporary storage file of a predetermined server for centrally storing temporary data records
Haderle et al. IBM Database 2 overview
JPH06301657A (ja) 並行管理方法
US5790868A (en) Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment
EP0747812A2 (en) Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment
JP2829115B2 (ja) ファイル共用方法
US6366946B1 (en) Critical code processing management
EP0049423B1 (en) Multiprocessor system
Mishra et al. Hyflowcpp: A distributed transactional memory framework for c++
EP3771980A1 (en) Computer-implemented method of interaction among operating system components and tasks by means of an interface bus
La Manna et al. An implementation of optimistic policy for concurrency control in a computer network for real-time applications

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees