JP3055566B2 - 分散型マルチプロセッサにおけるプロセス間関係の順序付き及び信頼保守 - Google Patents

分散型マルチプロセッサにおけるプロセス間関係の順序付き及び信頼保守

Info

Publication number
JP3055566B2
JP3055566B2 JP8522897A JP52289796A JP3055566B2 JP 3055566 B2 JP3055566 B2 JP 3055566B2 JP 8522897 A JP8522897 A JP 8522897A JP 52289796 A JP52289796 A JP 52289796A JP 3055566 B2 JP3055566 B2 JP 3055566B2
Authority
JP
Japan
Prior art keywords
processor
inter
lock
processors
change
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
JP8522897A
Other languages
English (en)
Other versions
JPH10502757A (ja
Inventor
ヴェンカテシュ ハリナラヤン
スリニヴァサ ディー マーティー
アレン エル ロウ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of JPH10502757A publication Critical patent/JPH10502757A/ja
Application granted granted Critical
Publication of JP3055566B2 publication Critical patent/JP3055566B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking

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)
  • Hardware Redundancy (AREA)

Description

【発明の詳細な説明】 発明の分野 本発明は、マルチプロセッサ・システムにおけるプロ
セス間関係の変更及びプロセス間信号方式に関する。以
下に説明する、ある一定のプロセス間オペレーションの
理解は、本発明を理解するために必要である。例として
UNIXTMを取り入れる。
近年は、UNIXTMオペレーティング・システムの市場人
気における重要な上昇が見られる。UNIXTMは、コンピュ
ータ・サイエンティスト、コンピュータ・サイエンスの
学生及び他の非常に技術的に熟練したコンピュータ・ユ
ーザによってのみ最初は好まれていたが、市場プログラ
ミング環境としてのUNIXTMに対するプリファレンス(優
位)は、それらの学生がワークフォースの中に入会しか
つそれらと共に彼らの開発したプリファレンスをキャリ
ーするので大きく成長している。従って、それは、その
所有権を主張できるハードウェアと一緒にUNIXTMまたは
UNIXTMライク・プログラミング環境を供給することがコ
ンピュータ製造業者の義務である。
しかしながら、UNIXTMは、歴史的にユニプロセッサに
対するオペレーティング・システムであった:最初は、
ディジタル・イクイップメント・コーポレーションのPD
P−11、後にメインフレーム、そしてさらに後でマイク
ロコンピュータの人気急騰に伴うマイクロプロセッサ。
今日でさえ、ひと握りのUNIXTMマルチプロセッサ・イン
プリメンテーションが存在するだけである。この発明の
出願人である、タンデム・コンピュータ・インコーポレ
ーティッドは、製品名NonStop Kernel Software(“NS
K"),release D30.00で一つのそのようなマルチプロセ
ッサ・インプリメンテーションを市販すべく準備してい
る。NSKのUNIXTMライク部分は、Open System Service
s、略して“OSS"と呼ばれる。
UNIXTMでは、“プロセス”は、プログラムのダイナミ
ック、ランータイム・エンボディメント(具体化)であ
る。プログラムは、ディスクまたはテープのような記憶
媒体の静的状態に一般に存在し、プロセスは、メモリに
ロードされかつ実行する。UNIXTMは、マルチタスキング
・オペレーティング・システムである:多くのプロセス
は、本質的に同時に実行することができる。
UNIXTMでは、プロセスは、fork()システム・コール
を実行することによって別のプロセスを生成することが
できるfork()システム・コールの結果は、とりわけ、
それがそれ自体の固有なプロセス識別番号を有すること
を除き、古いプロセスのコピーである新しいプロセスの
生成である。それ自体のコピーを生成するプロセスのこ
の手順は、“フォーキング(forking)”と呼ばれる。
プロセスは、また、“exec"もできる。即ち、プロセ
スは、−−再び一般的にディスクまたはテープから−−
新しいプログラムに読み込み、この新しいプログラムで
その古いプログラムをオーバレイし、かつ始めから新し
いプログラムを実行することによって、それが走らせて
いるプログラム・コードを変更することができる。プロ
セスは、exec()システム・コールを呼び出すことによ
ってこれを達成することができる。
フォーキングでは、より古いプロセスは、“親”と呼
ばれかつより新しいプロセスは、“子”と呼ばれる。勿
論、親は、多くの子を持つことができ、子は、一つの親
だけを有する。しかしながら、UNIXTMは、プロセス・グ
ループ関係のような、他のプロセス間関係をプロセスに
保守させる。各プロセスは、プロセス・グループのメン
バーである。プロセスのデフォルト・プロセス・グルー
プは、その親のプロセス・グループである。プロセス
は、適切なシステム・コール、一般にsetpgid()を実
行することによってそのプロセス・グループを変更する
ことができる。従って、子プロセスは、その親と同じプ
ロセス・グループまたはある他のプロセス・グループに
あることを選ぶことができる。プロセス・グループは、
メンバーとして一つ以上のプロセスを有しうる。
システム内の事象の発生が複数のプロセスに通信され
る必要がありうるので、プロセス・グループ・メンバー
シップは、重要である。プロセス・グループは、事象が
通知されるべきである全てのプロセスを識別することが
できる。標準的例をとるために、ユーザがUNIXシステム
にログすると想定する。それによりユーザがシステムと
最初に通信する“ログイン(login)”プロセスは、プ
ロセス・グループを有する。ログイン・プロセスは、ユ
ーザがシェル・コマンド及びプログラムを実行できるよ
うにすべくコマンド・インタープリタ(“シェル(shel
l)”)をexecs(実行)する。プログラムを実行してい
るシェルは、フォーキングを必然的に伴いそして上記し
たようにプログラムを実行する。それゆえに、新しく実
行されたプログラムは、シェル、その親と同じプロセス
・グループを有する。事実、シェルによって実行された
プログラム、その子、その孫、等は、デフォルトによっ
て同じプロセス・グループを有する。ここで、ユーザと
シェルの間の通信回線が、意図的にまたはそれ以外で、
壊れたならば、好ましいアクションは、シェル及び祖先
としてシェルを有する各プロセスに対してその事象を知
らせかつそれ自体を終了することである。(プロセスの
終了は、“エキジッティング(出る(exiting))”と
呼ばれる。エキジッティングは、exit()システム・コ
ールを呼び出す結果として生じる。) 非同期事象のプロセスを知らせるためのUNIXTMの機構
は、シグナリング(signalling)と呼ばれる。プロセス
は、kill()システム・コールを用いて、相互の信号を
送ることができる。オペレーティング・システムそれ自
体は、プロセスへ信号を送りうる。プロセスまたはオペ
レーティング・システムは、プロセス・グループに信号
を送りうる。信号を送ることは、シグナリングと呼ばれ
る。
上記から、UNIXTMの従来のマルチ−スレッディング・
パラダイムは、例えば、フォーキング及びエキジスティ
ングを介してプロセス間関係の本質的に非同期な変更を
許容する。しかしながら、そのような非同期プロセス間
関係変更で、問題が生じ、どのようにUNIXTMオペレーテ
ィング・システムがプロセス間関係のアトミック及び順
序付けられた変更を保証するのか? また、上記から明らかなことは、UNIXTMの従来のマル
チ−スレッディング・パラダイムは、シグナリングが生
じている間にプロセス間関係の非同期変更を許容すると
いうことである。例えば、どのようにシステムは、フォ
ーキングの存在において信号のアトミック、順序付けら
れた送付を保証するのか?シグナリング問題の特定の例
は、セクションB.3.1.1にで、以下に説明した、POSIXに
おいて与えられる。歴史的信号−プロセッサUNIXTMイン
プリメンテーションでは、プロセス間関係変更及びシグ
ナリングの非同期性は、アトミック性及び順序付けに関
して重要な問題を与えなかった。プロセス間関係を変更
すべき呼出しのインプリメンテーションは、基礎を成し
ているカーネルへの無停止可能な(少なくとも重要なス
テージにおいて)アクセスを含みうる。それゆえに、プ
ロセス間関係を変更することを望んでいる別のプロセス
がロックアウトされる間に、プロセス間関係変更は、一
つのプロセスのために実行することができる。
同様に、kill()への呼出しは、カーネルを通過する
単一のパスを結果として生じ、カーネルは、一つのプロ
セスのために信号を生成しかつシグナルされたプロセス
・グループの全てのプロセスにその信号を実質的に同時
に送付する。カーネルがシグナリングのメカニクスを実
行している間に、それは、プロセス・グループ・メンバ
ーシップを同時に変更しうるあらゆるプロセスを実行か
ら排除することができる。
プロセス間関係のアトミック及び順序付け変更と信号
のアトミック、順序付け送付の問題は、UNIXTMのマルチ
プロセッサ・インプリメンテーションにおいてそれ以上
に至難である。また、マルチプロセッサ環境は、信頼性
の問題を生起する:どのようにマルチプロセッサ・シス
テムは、故障しているプロセッサの存在において一貫的
プロセス間関係を保証するのか?どのようにマルチプロ
セッサは、プロセスが故障の場合に信号の信頼送付を保
証するのか?アトミック性、順序付け及び信頼性問題の
至難性を増大する−−少なくとも非共有メモリ・マルチ
プロセッサ−−マルチプロセッサ・システムの事実の一
つは、プロセス・グループのプロセスが二つ以上のプロ
セッサにわたり分散することができかつ通常分散され
る。カーネルが単一−スレッディングによる可能なタイ
ミング・コンフリクトを解消することのユニプロセッサ
解決策は、マルチプロセッサ環境では利用不能である:
非同期的に動作している、複数のカーネルがあり、各カ
ーネルには、それぞれが非同期で走っている複数のプロ
セスがある。独立して作用することにより、各プロセッ
サは、そのプロセッサにおいてプロセス間関係の信頼か
つ順序付けられた変更だけを保証することができる。例
えば、第1のプロセッサにおいて、第1のプロセスは、
プロセス・グループへの送付のための信号を生成するこ
とでありうる。プロセス・グループは、第1のプロセス
及び第2のプロセッサにおける第2のプロセスを含んで
いるプロセスを有する。第1のプロセスがプロセス・グ
ループに対する信号を生成していると同時に、第2のプ
ロセスは、制限された時間に対してそのプロセス・グル
ープのメンバーでもありそしてそのプロセス・グループ
・メンバーシップを変更しうる、第3のプロセスをフォ
ーキングする。第3のプロセスが第1のプロセスによっ
て生成された信号を受け取るか否か?それゆえに、単
に、ユニプロセッサ・システムのよりパワフルまたはよ
り高速なバージョンであるマルチプロセッサ・システム
のより望ましいパラダイムは、分解し始める。これらの
アトミック性、順序付け、及び信頼問題の解決なしに、
マルチプロセッサ・システムは、シグナリングをインプ
リメントしているユニプロセッサUNIXTMシステムと同じ
サービスを提供できない。特に、マルチプロセッサ・シ
ステムは、POSIXに詳述されたフル・システム・サービ
スを提供できない。
事実、問題は、マルチプロセッサ・システムでは、そ
のようなハードウェア・ベンダに解法なしでソフトウェ
ア製品を供給させるように至難であった。LOCUS TNC,M
ACH,OSF1,及びISISインプリメンテーションは、次いで
以下に説明される。Locusは、LOCUS TNCと呼ばれる製
品を有する。LOCUS TNCは、“vproc"アブストラクショ
ン(抽象)に基づきUNIXTM分散型システムをインプリメ
ントする。vprocは、プロセスだけを参照するデータ構
造である。単一vprocのコピーは、多くのプロセッサに
装着されたメモリに存在しうる。“owning(所有してい
る)”または“master(マスター)”プロセッサは、非
参照(non−referring)データ構造で実際のプロセスを
記述する。概観レベルで、vprocアブストラクション
は、vprocを有するプロセッサをマスター・コピーでア
ウトーオブーステップにさせ、かつローカル・コピー
は、あるオペレーションに対して用いられる。それゆえ
に、システムは、マスター・プロセッサと変更vprorプ
ロセッサ間のあるメッセージの費用をセーブする。LOCU
S TNCは、上述したようなアトミック性、順序付け及び
信頼性条件を正しく扱わない。ニューヨーク州、アーモ
ンクのインターナショナル・ビジネス・マシン(Intern
ational Business Machines)から入手可能なMAC、及び
マサチューセッツ州、ケンブリッジのオープン・ソフト
ウェア・ファンデーション(Open Software Foundatio
n)から入手可能なOSF1は、また、マルチプロセッサUNI
XTMインプリメンテーションである。MACH/OSF1解法は、
“UNIXTMサーバ”、プロセス関係を保守する単一の、マ
ルチ−スレッディド・プロセスを含む。このプロセス
は、分散されない。単一のコピーだけが存在する。それ
ゆえに、ここで説明した分散型アルゴリズムをアドレス
しない。
ISISは、メッセージ順序付け及びプロセス・グループ
・メンバーシップに対する同様な問題の組を解決する−
−しかし“プロセス・グループ”の異なる定義を用いて
かつシグナリングに対してではなく。ISISは、UNIXTM
ライク・セマンティクをインプリメントすることを試み
ない。
発明の目的および概要 プロセス間関係のアトミック、順序付け及び信頼変更
の知られたインプリメンテーションまたは分散型プロセ
ッサ・システムにおける、特に共有メモリなしのマルチ
プロセッサ・システムにおける信号送付が全くない。実
際、OSSを有するNSKのペンディング・リリースの前に、
タンデム・コンピュータズ・インコーポレーティッド
は、そのUNIXTM−ライク・オペレーティング・システム
・ソフトウェアにおけるような特徴を提供しなかった。
祖先及びプロセス・グループ・メンバーシップと一緒
に、別のUNIXTMプロセス間関係は、“セッション(sess
ion)”である。セッションは、プロセス・グループの
コレクションであり、ユーザにプロセスの実行を選択的
に中止させかつそれらの実行を後の地点で再開させる。
各プロセス・グループは、セッションのメンバーであ
り、かつプロセスは、そのプロセス・グループがメンバ
ーであるセッションのメンバーである。
UNIXTMに他のプロセス間関係が存在し、示した3つ
は、単に主要なものである。しかしながら、ある一定の
UNIXTM機能が個々のプロセスまたはプロセス・グルー
プ、セッションまたは他のプロセス間関係で動作すると
いうことを説明すべく主要なもので充分である。マルチ
プロセッサ環境では、これらのプロセス間関係を操作
(処理)している同時、非同期オペレーションは、種々
のプロセッサのプロセスが分散型データ構造を変更する
ときに多数のレース条件を生成することができる。
従って、本発明の目的は、UNIXTM−ライク・マルチプ
ロセッサ・システムにおいて、プロセス間関係を潜在的
に変更することができ、分散型データ構造へのアクセス
のタイミングに依存している不可能なレース及び他の非
決定性挙動を行う、オペレーションの順序付けである。
本発明の別の目的は、プロセス間関係を変更するプロ
セッサの故障が変更を全くないかまたは全ての生存して
いるプロセッサにわたり全ての生存しているプロセス間
で一貫的である変更のいずれかを結果として生ずるよう
なUNIXTM−ライク・マルチプロセッサ・システムであろ
う。
本発明の別の目的は、タイム−クリティカル機能の良
好な性能と共に、順序付け及び信頼プロセス間関係変更
を有する分散型プロセッシング・システムのUNIXTM−ラ
イク・インプリメンテーションである。本発明のこれら
及び他の目的は、以下に開示の読み込みで容易に明らか
である。
従って、以下に、プロセス間関係が、マルチプロセッ
シング・システムの非共有メモリで複製されたデータ構
造のコピーで表されるようなUNIXTM−ライク・オペレー
ティング・システムのマルチプロセッサ・インプリメン
テーションを説明する。プロセス間関係を変更すること
を望んでいるプロセッサは、制御プロセッサによって保
守されるプロセッサ間ロックに対するアービトレーショ
ンを入力しなければならない。プロセス間ロックは、変
更されるべき特定のプロセス間関係に特定的であり、全
てのプロセス間関係のあるサブセットに特定的である
か、または全てのプロセス間関係に一般的であることが
できる。
所望プロセッサがプロセッサ間ロックを獲得すること
に成功したならば、プロセッサは、次いで、プロセス間
関係の変更を−−所定のシーケンスで−−各プロセッサ
に知らせる。所望プロセッサは、次いで、プロセス間関
係ロックを解放する。
所望プロセッサがプロセッサ間ロックを獲得するのに
失敗したならば、所望プロセッサは、再びアービトレー
ションに入力する前に遅れる。一般に、所望プロセッサ
は、それがアービトレーションに再入力すべく待ってい
る間にプロセッサ間ロックを必要としないようにそのよ
うなプロセスを走らせる。
プロセス間関係の変更の通知を受け取る各プロセッサ
は、変更に対して確認すべくそのプロセス間関係を表し
ているデータ構造のその局所(ローカル)コピーを変更
する。
各受信プロセッサは、一度それが入力変更通知を受取
ったならば、他のプロセッサから非同期で動作する。各
受信プロセッサの更新前または更新後アクションは、他
のプロセッサのアクションである必要がなくかつそれら
に統合されない。
プロセッサ間ロックを獲得しなかった変更プロセッサ
の失敗で、特定の分散型データ構造の一貫性を保証する
ために回復を全く必要としない。プロセッサ間ロックを
獲得した変更プロセッサの失敗で、制御プロセッサは、
変更を受信プロセッサの全てに知らせる機能を引く継
ぐ。
制御プロセッサの失敗で、生存プロセッサは、どの生
存プロセッサが制御プロセッサとして成功するかを決定
すべく所定の手順に従う。
図面の簡単な説明 図1は、本発明のマルチプロセッサ・システムの概略
図である。
図2は、本発明のマルチプロセッサ・システムにおけ
るプロセスの状態の簡略図である。
図3は、本発明のマルチプロセッサ・システムにおけ
るプロセスの状態の簡略図である。
図4は、本発明のマルチプロセッサ・システムにおけ
るプロセスの状態の簡略図である。
実施例 図1は、プロセッサ2a、2b、...、2nを有しているマ
ルチプロセッサ・システムを示す。Nは、16より大きい
かまたは小さいであろうが、Nは、一般に16である。各
プロセッサ2は、対応メモリ3に結合される。
各プロセッサ2は、オペレーティング・システム・ソ
フトウェアを走らせる。好ましい実施例では、プロセッ
サ2は、全て同じオペレーティング・システム・ソフト
ウェアを走らせる。基礎を成しているオペレーティング
・システムGは、タンデム・コンピュータズ・インコー
ポレーティッドから入手可能な、Guardian(ガーディア
ン)であり、オーバレイング(overlaying)オペレーテ
ィング・システムは、Portable Operating System Inte
rface,Part I(ここで参考文献として採り入れられる、
“POSIX",International Standard ISO/IEC 9945−1:19
90;IEEE Std 1003.1−1990)のインプリメンテーション
である、OSSを有するNSKである。ここでOSSは、UNIXTM
の変形であると考えられる。
UNIXTMを走らせる結果として、各プロセッサ2は、プ
ロセスPを有する。UNIXTMシステムにおけるパラダイム
のように、プロセスは子をフォークし、子は次いでフォ
ークし、それら自信の子を生成する、等。マルチプロセ
ッサ・システム1の好ましい実施例では、プロセッサ2a
のプロセスは、2aまたはプロセッサ2b、...、2nの一つ
で走らせることができる子を生成することができる。図
2は、時間t0におけるマルチプロセッサ・システム1の
プロセスを示す。プロセッサ2a、2b及び2cは、それらの
対応プロセス表PT4a、PT4b、PT4cによって表される。プ
ロセス表PT4cは、プロセス間関係分散型データ構造の例
である。プロセス表は、UNIXTMプロセス関係を定義する
累積表である。プロセス表は、各プロセッサのエクスタ
ント・プロセスが存在するようなシステム資源である。
プロセスP100は、プロセッサ2aに存在(R)する。プ
ロセスP100は、プロセッサ2aに存在しない(〜R)がプ
ロセス2bに存在している、プロセスP110の親である。プ
ロセスP110は、次いで、プロセッサ2cのプロセスP111の
親である。プロセスP100のプロセス・グループは、プロ
セス・グループG1である。上記したように、プロセスP1
10のプロセス・グループは、デフォルトによりその親、
プロセスP100のプロセス・グループである。同様に、プ
ロセスP111のプロセス・グループは、その親、P110のプ
ロセス・グループである。プロセスP100、P110、及びP1
11のそれぞれは、プロセス・グループG1にある。
以下に説明する複数のシナリオを考える。第1のシナ
リオは、図3に示される。図3は、時間t1におけるマル
チプロセッサ・システムに存在しているプロセスのサブ
セットを示す。時間t1、t1>t0において、プロセスP100
は、第2の子、プロセスP120を生んだ。プロセスP120
は、その親、プロセスP100のプロセス・グループで生ま
れる。
第2のシナリオは、図4に示される。図4は、時間
t2、t2>t2>t0において、プロセスP111は、そのプロセ
ス・グループ・メンバーシップG1からG2に変更すること
を選んだ。従って、時間t2におけるプロセス・グループ
G1は、プロセスP100、P110及びP120を含む。プロセス・
グループG2は、プロセスP111だけを含む。
UNIXTMシステムにおいて一般的であるように、プロセ
スP110は、そのプロセス・グループGにおける各プロセ
スPに信号を送ることを欲するであろう。P111がそのプ
ロセス・グループ・メンバーシップを変更している間に
プロセスP110が時間t2で信号を送るならば、プロセスP1
11が信号を受信するかどうかという不確定性が存在す
る。kill()またはsetpgid()がレースに勝つかどう
かにより、信号は、プロセスP100、P110、P111及びP120
に送付されるかまたはプロセスP100、P110及びP120にだ
け送付される。プロセスP111は、信号を受信するかまた
は受信しないであろう。
この非決定性のソースは、受信プロセス2cは、シグナ
リング・プロセッサ2bと独立に動作しているということ
である。プロセッサ2b及び2cは、同じオペレーションを
実行していないけれども、プロセッサ2cがsetpgid()
を実行すると同時に、プロセッサ2bは、signal()を実
行し、両方をオペレーションにおいて影響を及ぼされる
基礎を成しているデータ構造は、プロセス表、PTであ
る。そのコピーは、各プロセッサ2のメモリ3に保守さ
れる。
競合機能が両方ともプロセス間関係変更である場合に
もレース条件が生ずる。例えば、setpigd()は、その
子がexec()コールをまだ実行していないならばターゲ
ット子プロセスで作動すべく定義される。子がexec()
コールを発行すると同時にsetpigd()コールが発行さ
れると想定する。まずexecが生ずる(かつsetpigd()
が失敗する)ようにすべきか、またはsetpigd()がま
ず生じそしてexec()が設置された新しいグループ−id
を伴って後で生ずるかのいずれかである。
米国特許公報第4,718,002号(1988)では、カー(Car
r)は、システム1のようなマルチプロセッサ・システ
ムにおけるプロセッサ中の更新された情報を通信する方
法、汎用更新手順(“GLUPP")を記述している。カー
は、多重故障のシステム・トレラントを生成することに
よってその従来技術のシングル−フォールト・トレラン
ト・システムを改良することを考えた。
GLUPPは、以下にざっと説明する。GLUPPは、プロセッ
サ2を二重に順序付ける。第1の順序付けは、プロセッ
サ2が汎用更新メッセージを受け取るような合意によっ
て定められかつ一般に知られたシーケンスである。第2
の順序付けは、オリジナル制御プロセッサ(第2の順序
付けにおける第1のプロセッサ)が故障(失敗)したな
らば、制御プロセッサとして合意によって定められかつ
一般に知られたプロセッサの継承である。二つのGLUPP
順序付けのそれぞれは、実際にループである。
ある一定の分散型、クリティカル・データ構造は、汎
用更新ロック(“GLUPP lock")によって保護される。
そのような分散型、クリティカル・データ構造を変更す
ることを望むプロセッサ2は、GLUPP lockをまず獲得
しなければならない。制御プロセッサは、lockを保守す
る単独のプロセッサである;それは、GLUPP lockの認
可及び否認を調停する。
カーは、プロセッサ故障の脅威にもかかわらず分散型
データ構造に対する更新を通信することに注意を注いで
いるが、本発明は、プロセス間関係を変更する、非同
期、競合プロセッサ及び、ほぼ同時にそのような関係及
びシグナリングを変更する、非同期、競合プロセッサに
固有なレース条件に注意を注いでいる。UNIXTM−スタイ
ル・プロセス間関係変更及びシグナリングをインプリメ
ントすべく変更されるとき、そのプロセッサが別のプロ
セッサが同時発生的に変更しうるプロセス間関係を変更
することを欲するならば、GLUPPは、プロセッサにGLUPP
lockを獲得すべく要求する。GLUPP lockは、また、
シグナリングがそれに依存するプロセス・グルーピング
に影響を及ぼすことができるオペレーションに対して獲
得されなければならない。従って、別のプロセスへの送
付のために信号を生成し、かつ分散型プロセス表PT4を
従ってアクセスしなければならないプロセッサは、制御
プロセッサからGLUPP lockをまず獲得しなければなら
ない。即ち、上記例におけるシグナリング・プロセッサ
2bは、プロセス・グループG1のプロセスPに信号を送る
ためにGLUPP lockを獲得しなければならない。(GLUPP
lockを獲得することにおいて、プロセス2は、GLUPP
lockの支援により送信すべき汎用更新メッセージのコ
ピーを制御プロセスに送信する。制御プロセッサは、そ
の汎用更新メッセージ・メモリに汎用更新メッセージの
そのコピーを保守する。汎用更新メッセージ・メモリの
このコピーは、以下に説明するように用いられる。) 同様に、フォークすることを求めるプロセスは、制御
プロセスからGLUPP lockをまず獲得しなければならな
い。フォーキングは、分散型プロセス表PT4へのアクセ
スを必要とする:プロセス表PT4は、UNIXTMを走らせて
いるシステム1におけるプロセスのレジデンスである。
従って、プロセスP111は、時間t2においてそのプロセス
・グループ・メンバーシップを変更する前にGLUPP loc
kを獲得しなければならない。
上記に関する変更したGLUPPの結果として、プロセス
・グループG1のメンバーシップは、シグナリングの時に
決定される。シグナリング・プロセッサ2bまたはグルー
プ−チェンジング・プロセッサ2cのいずれかがまずGLUP
P lockを獲得しなければならない−−それゆえに二つ
の他のものが待たなければならないので−−信号の送付
は、因果的に順序付けられる。
従って、上記開示は、信号の送付が生じている間に他
のプロセッサがグループ・メンバーシップを変更するこ
とを試みているときでさえも、信号がプロセス・グルー
プのある一貫的状態でプロセス・グループに到着するよ
うなUNIXTM−ライク・シグナリングのインプリメンテー
ションを記述する。プロセス・グループの一貫的状態
は、シグナリング・プロセッサがGLUPP lockを獲得す
るときのプロセス・グループである。次いで他のプロセ
ッサは、プロセス・グループをフォークし、変更するこ
とを試みるかさもなければプロセス・グループ・メンバ
ーシップを変更することを試みるであろうが、しかしそ
のようにする前にGLUPP lockで待機する。GLUPP lock
は、シグナリング・プロセッサがを分散型プロセス表へ
のその必要なアクセスを完了した場合にのみ再び利用可
能になるであろう。グループ・メンバーシップ変更及び
信号送付は、特定の順序で生ずることが保証され、かつ
その順序は、全てのプロセッサにおいて同じである。
この発明の変更された汎用更新手順では、シグナリン
グ・プロセッサ・シグナリング・グループGは、もしあ
れば、他の利用可能なプロセッサのプロセス・グループ
Gのメンバーシップである、プロセッサへ送付されるべ
き信号を全ての他の利用可能なプロセッサに通知しなけ
ればならない。一度シグナリング・プロセッサがGLUPP
lockを獲得したならば、シグナリング・プロセッサ
は、上記した第1の順序付けによって特定された順番に
各利用可能なプロセッサへのシグナリングを反映してい
る汎用更新メッセージ・パケットを送る。それゆえに、
時間t3>t2でシグナリング・プロセスP110がプロセス・
グループG1に信号S1及びS2を送ることを欲しておりかつ
シグナリング・プロセスP111がまたプロセス・グループ
G1に信号S3を送ることを欲している場合、プロセッサ2b
または2cの一つがGLUPP lockを獲得するであろう。プ
ロセッサ2cがGLUPP lockに対するアービトレーション
に勝つと想定すると、プロセッサ2cは、受信プロセッサ
2a、2b、2c、...,2nのそれぞれに通知する。プロセッサ
2cは、汎用更新メッセージ順序付けて特定された順番に
プロセッサに通知する。各プロセッサに送られた汎用更
新メッセージは、信号S3を有するプロセス・グループG
のシグナリングを反映する。汎用更新手順が要求するよ
うに、各受信プロセッサは、汎用更新メッセージの肯定
応答を送らなければならない。汎用更新メッセージ順序
付けで一つの受信プロセッサからの肯定応答の受信で、
シグナリング・プロセッサ2cは、汎用更新メッセージ順
序付けで次のプロセッサに汎用更新メッセージを送る。
退化の場合には、シグナリング・プロセッサ2cは、信号
をそれ自体に通知する。非−故障の場合には、受信プロ
セッサ2の肯定応答は、そのプロセッサ2が、もしあれ
ば、受信プロセッサ2のプロセス・グループG1におけ
る、順序付け各プロセスに汎用更新メッセージ・パケッ
トで表された信号S3を送付したということを示す。受信
プロセッサがプロセッサ2aであれば、次いでプロセスP1
00及びP120のそれぞれは、プロセッサ2aがシグナリング
・プロセッサ2cからの汎用更新メッセージを肯定応答す
るときにS3を受け取ったであろう。受信プロセッサがプ
ロセッサ2cであれば、次いでプロセッサ2cの全てのプロ
セスは、プロセッサ2cがシグナリング・プロセッサ2cか
らの汎用更新メッセージを肯定応答するときに信号S3を
受信しないであろう。
一度シグナリング・プロセッサ2cがプロセス・グルー
プG1への信号S3の送付を表している汎用更新メッセージ
を分散したならば、プロセッサ2cは、GLUPP lockを解
放する。シグナリング・プロセッサ2bは、ここで、信号
S1及びS2を送るためにロックに対してアービトレートす
る。同じ変更されたGLUPPに続いて、シグナリング・プ
ロセッサ2bは、プロセス・グループGへの信号S1及びS2
の送付を表している汎用更新メッセージの信号を送付す
る。
上に示したように、プロセス・グループG1を構成する
プロセスP100、P110及びP120のそれぞれは、まず信号S3
を受信しついで信号S1及びS2を受信する。
従って、上記開示は、複数のシグナリング・プロセッ
サがプロセス・グループ信号をプロセス・グループGに
送る場合に、各シグナリング・プロセッサからの全ての
信号は、全ての他のシグナリング・プロセッサによって
送られたそれらの前または後のいずれかでプロセス・グ
ループGの全てのメンバーに到着するような、シグナリ
ングのUNIXTM−ライク・インプリメンテーションを記述
する。プロセス・グループ・メンバーは、同じ順番で同
じ入力信号を常に見る。
変更したGLUPPでは、制御プロセッサがプロセッサ2
が失敗したということを決定する場合、制御プロセッサ
は、汎用更新がプロセッサにあったかどうか、即ち、GL
UPP lockがシグナリング・プロセッサによって獲得さ
れたかっどうかをチェックする。制御プロセッサは、GL
UPP lockがそのように獲得されていないならば、あら
ゆる回復を実行する必要がない。
しかしながら、GLUPP lockが獲得されている場合、
制御プロセッサは、各プロセッサに汎用更新メッセージ
の信号を送ることのタスクをそれ自体で引き請ける。制
御プロセッサは、それが失敗した場合にシグナリング・
プロセッサが送付していたシグナリング汎用更新メッセ
ージをその汎用更新メッセージ・メモリから再構築す
る。次いで制御プロセッサは、結果としてシグナリング
・プロセッサになり、汎用更新メッセージ順序付けによ
り、順次各プロセッサに信号汎用更新メッセージを送
る。それゆえに、プロセッサ2aが信号S1をプロセスG1に
信号で知らせることを望みかつプロセッサ2d(図示省
略)が制御プロセッサであれば、プロセッサ2aは、制御
プロセッサ2cのGLUPP lockを要求する。要求の受け取
りでかつ他のプロセッサが既にGLUPP lockを獲得して
いないならば、プロセッサ2dは、シグナリング汎用更新
メッセージをその汎用更新メッセージ・メモリの中にコ
ピーしかつそれがGLUPP lockを獲得したということを
シグナリング・プロセッサ2aに通知する。汎用更新メッ
セージ順序付けが2a、2b、2c、...、2nであると想定し
て、シグナリング・プロセッサ2aは、それ自体にS1シグ
ナリング汎用更新メッセージを送付し、それ自体に肯定
応答する。シグナリング・プロセッサ2aは、受信プロセ
ッサ2bに汎用更新メッセージを次に送り、かつプロセッ
サ2bは、肯定応答する。再び、受信プロセッサ2cに対し
て、シグナリング・プロセッサ2aは、汎用更新メッセー
ジを送りかつ肯定応答を待つ。ここで、プロセッサ2aが
受信プロセッサ2cの肯定応答の受け取りの前に故障する
と想定する。そして最終的に制御プロセッサ2dは、プロ
セッサ2aの故障を検出する。制御プロセッサ2dは、その
汎用更新メッセージ・メモリからのS1シグナリング汎用
更新メッセージを次いで生成する。その再生成コピー
で、制御プロセッサ2dは、結果としてシグナリング・プ
ロセッサになる。それは、汎用更新メッセージ順序付を
ウォークスルーしかつ順番に各プロセッサ2b、2
c、...、2nに汎用更新メッセージ・コピーを送る。(制
御プロセッサ2dは、プロセッサ2aが利用可能でないとい
うことに気付いている。) 一般に、UNIXTMプロセスは、どのくらいの数のある一
定の型の信号が受信されるかということを識別すること
ができない。従って、複製シグナリング汎用更新メッセ
ージを拒絶することが受信プロセッサ2に対して必要な
い。しかしながら、好ましい実施例では、受信プロセッ
サは、複製シグナリング汎用更新メッセージを拒絶すべ
く構成されている。例えば、各プロセッサ2は、固有の
汎用更新メッセージIDカウンタを保守する。これら複数
のカウンタは、システム・スタート・アップで同期する
ことができる。GLUPP lockの下で分散され各汎用更新
メッセージは、オリジネーティング・プロセッサ2から
固有の汎用更新メッセージIDを含み、かつ各受信プロセ
ッサ2は、そのIDが受信機プロセッサ2のカウンタに一
致する汎用更新メッセージの受信によりその固有汎用更
新メッセージIDカウンタを増分する。ここで、制御プロ
セッサ2dが、シグナリング・プロセッサとしてのその役
割において、プロセッサ2cに複製シグナリング汎用更新
メッセージを送付する場合、プロセッサ2cは、汎用更新
メッセージの汎用更新メッセージIDとプロセッサ2bの汎
用更新メッセージIDカウンタにおける対応IDが一致しな
いので、さもなければ肯定応答できるがシグナリング汎
用更新メッセージを無視する。同様に、プロセッサ2c
は、制御プロセッサ2dからの複製シグナリング汎用更新
メッセージを無視する。
従って、上記開示は、シグナリング・プロセッサがシ
グナリング・オペレーションの間に故障したならば、信
号は、なんのプロセスにも送付されないかまたはプロセ
ス・グループの全ての生存メンバーに送付されるかのい
ずれであるような、シグナリングのUNIXTM−ライク・イ
ンプリメンテーションを記述する:GLUPP lockを獲得す
る前にシグナリング・プロセッサが故障したならば、シ
グナリング・アクションは、決して行われない。−−シ
グナリング・プロセッサでさえも行われない。GLUPP l
ockを獲得した後にかつ受信プロセッサのあるものに信
号要求を潜在的に送付した後にシグナリング・プロセッ
サが故障したならば、生存しているプロセッサがなくな
るまで、GLUPPは、生存しているプロセッサを用いて同
じシグナリング汎用更新メッセージを送ることを再び試
みる。それゆえに、シグナリング・プロセッサは、死ぬ
ことができるが、生存しているプロセッサは、全ての他
のプロセッサに同じ信号を送付する。汎用メッセージ更
新IDは、各入力要求を“新しい”対“見られかつ作用さ
れた”として識別させる。複製要求は、単に無視され
る。纏めると、信号は、決して部分的に送付されないか
またはプロセス・グループに二度送付されない。
ここで説明した変更されたGLUPPでは、受信プロセッ
サ2の失敗(故障)は、一般的に全く取るに足らない。
各プロセッサは、その受信プロセッサ2のプロセスPに
信号を送付することに対してのみ責任があるので、その
受信プロセッサ2の故障は、一つの例外を有し、取り消
されまたはアカウントされなかったタスクを残さない。
故障した受信プロセッサ2が制御プロセッサであれば、
重要なタスクは、アカウントされないで残される。カー
は、汎用更新を実行しているマルチ−プロセッシング・
システムにおけるロッカー・プロセッサの故障に対する
手順を記述する。その手順は、この更新されたGLUPPコ
ンテキスト内で動作する。
上記手順は、システム1におけるあらゆる数のプロセ
ッサ故障を網羅するために充分である。複数のプロセッ
サ故障は、上記シナリオの組合せに分解することができ
る。
従って、上記開示は、受信プロセッサが故障したなら
ば、どのくらいその受信プロセッサがそのプロセッサに
存在するプロセス・グループ・メンバーに信号を送付す
ることに成功していたかということが全く取るに足らな
いようなシグナリングのUNIXTM−ライク・インプリメン
テーションを記述する。受信プロセッサは、その受信プ
ロセッサに存在するプロセス・グループ・メンバーだけ
を扱うことに対して責任を有する。
上記説明は、限定よりも例としての特定を含む。上記
装置及び方法に対する変更は、当業者において容易に明
らかであろうしかつそのような変更は、この発明の一部
である。
フロントページの続き (72)発明者 マーティー スリニヴァサ ディー アメリカ合衆国 カリフォルニア州 95131 サン ホセ ゴールデンレイク ロード 1410 (72)発明者 ロウ アレン エル アメリカ合衆国 カリフォルニア州 95123 サン ホセ キュリー コート 6443 (56)参考文献 特開 平1−211140(JP,A) 特開 平6−119232(JP,A) 特表 平4−500570(JP,A) 欧州特許出願公開369265(EP,A 2) (58)調査した分野(Int.Cl.7,DB名) G06F 15/177 678 EPAT(QUESTEL) JICSTファイル(JOIS) WPI(DIALOG)

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】複数のプロセッサを有しているマルチプロ
    セッサ・システムにおいて、プロセス間関係を変更する
    方法であって: 前記複数のプロセッサのそれぞれに前記プロセス間関係
    を表わしているデータ構造を記憶し; 前記コピーの変更に対してアービトレートし;かつ 前記アービトレーションを得ている前記複数のプロセッ
    サのプロセッサによって生成された変更に従って前記コ
    ピーを非同期で変更する段階を具備し、 前記アービトレートする段階は、 前記複数のプロセッサを順序付け; プロセス間関係ロックを保守する制御プロセッサとして
    前記複数のプロセッサの一つを設定し; 第1の前記複数のプロセッサに前記プロセス間関係ロッ
    クを要求し、 かつプロセッサが前記プロセス間関係ロックを有してい
    ない場合には、前記第1のプロセッサが前記プロセス間
    関係ロックを有するということを前記第1のプロセッサ
    に対して肯定応答することを更に具備し; 前記変更する段階は、 前記第1のプロセッサが前記プロセス間関係ロックを有
    するならばプロセス間関係変更メッセージを順番に前記
    プロセッサのそれぞれに送り、かつ前記変更するプロセ
    ッサが前記プロセス間関係ロックを有していないならば
    前記要求する段階から継続し; 前記プロセス間関係変更メッセージを受け取り; 前記プロセス間関係メッセージを非同期で処理し;かつ 前記制御プロセッサに前記プロセス間関係ロックを放棄
    することを更に具備することを特徴とする方法。
  2. 【請求項2】前記第1のプロセッサは、前記プロセス間
    関係に対する変更を生成したプロセッサを備えているこ
    とを特徴とする請求の範囲第1項に記載の方法。
  3. 【請求項3】前記制御プロセッサとして連続して前記複
    数のプロセッサを順序付け;かつ 前記制御プロセッサが故障したならば前記制御プロセッ
    サとして連続した順番で次のものを設定することを更に
    具備することを特徴とする請求の範囲第1項に記載の方
    法。
  4. 【請求項4】前記プロセス間関係ロックを前記複数のプ
    ロセッサの第2のプロセッサに要求し; 前記第2のプロセッサが前記プロセス間関係ロックを有
    するということを前記第2のプロセッサに肯定応答する
    ことを失敗し;かつ肯定応答することの失敗に応じて、
    プロセス間関係変更メッセージを送ることを自制する段
    階を更に具備することを特徴とする請求の範囲第1項に
    記載の方法。
  5. 【請求項5】前記第1及び第2のプロセッサは、同じプ
    ロセッサであることを特徴とする請求の範囲第4項に記
    載の方法。
  6. 【請求項6】マルチプロセッサ・システムのプロセス間
    関係を保守する方法であり、該システムは、複数の分散
    型の、相互接続されたプロセッサを有し、該プロセッサ
    のそれぞれは、メモリを有する、該方法であって: 前記複数のプロセッサを順序付けし; プロセス間関係ロックを保守する制御プロセッサとして
    前記複数のプロセッサの一つを設定し; メンバーとして少なくとも一つのプロセスを有するプロ
    セス・セットを生成し、該プロセス・セットの該プロセ
    ス・メンバーは、プロセス間関係を有し、該プロセス間
    関係は、該プロセッサの該それぞれの該メモリに表さ
    れ; 前記プロセス間関係に対する変更を前記複数のプロセッ
    サ中の変更プロセッサに生成し; 前記制御プロセッサの前記プロセス間関係ロックを要求
    しかつ、プロセッサが前記プロセス間関係ロックを有し
    ていない場合には、前記変更プロセッサが前記プロセス
    間関係ロックを有していることを該変更プロセッサに肯
    定応答し; 前記変更プロセッサが前記プロセス間関係ロックを有す
    るならば、該変更プロセッサは、プロセス間関係変更メ
    ッセージを順番に前記プロセッサのそれぞれに送りそし
    て該制御プロセッサに該プロセス間関係ロックを放棄
    し;かつ 前記変更プロセッサが前記プロセス間関係ロックを有し
    ていないならば、前記要求段階から継続し; 前記プロセス間変更メッセージを受け取り;かつ 前記プロセス間変更メッセージをプロセスする段階を具
    備するをことを特徴とする方法。
JP8522897A 1995-01-23 1996-01-16 分散型マルチプロセッサにおけるプロセス間関係の順序付き及び信頼保守 Expired - Fee Related JP3055566B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/377,386 US5577261A (en) 1995-01-23 1995-01-23 Ordered and reliable maintenance of inter-process relationships in a distributed multiprocessor
US08/377,386 1995-01-23
PCT/US1996/000502 WO1996023262A1 (en) 1995-01-23 1996-01-16 Ordered and reliable maintenance of inter-process relationships in a distributed multiprocessor

Publications (2)

Publication Number Publication Date
JPH10502757A JPH10502757A (ja) 1998-03-10
JP3055566B2 true JP3055566B2 (ja) 2000-06-26

Family

ID=23488914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8522897A Expired - Fee Related JP3055566B2 (ja) 1995-01-23 1996-01-16 分散型マルチプロセッサにおけるプロセス間関係の順序付き及び信頼保守

Country Status (6)

Country Link
US (2) US5577261A (ja)
EP (1) EP0806012B1 (ja)
JP (1) JP3055566B2 (ja)
CA (1) CA2210522A1 (ja)
DE (1) DE69633777T2 (ja)
WO (1) WO1996023262A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860003A (en) * 1997-02-28 1999-01-12 Mti Technology, Inc. I/O controller software with each I/O command having a plurality of nets, each with a group of threads
US6163853A (en) 1997-05-13 2000-12-19 Micron Electronics, Inc. Method for communicating a software-generated pulse waveform between two servers in a network
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6401110B1 (en) 1998-11-30 2002-06-04 International Business Machines Corporation Method for managing concurrent processes using dual locking
US6105099A (en) * 1998-11-30 2000-08-15 International Business Machines Corporation Method for synchronizing use of dual and solo locking for two competing processors responsive to membership changes
US6513084B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Arbitration of state changes
US7996843B2 (en) * 1999-08-25 2011-08-09 Qnx Software Systems Gmbh & Co. Kg Symmetric multi-processor system
US6993523B1 (en) 2000-12-05 2006-01-31 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency in a data base page
US6751636B1 (en) 2000-12-05 2004-06-15 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency across multiple instances of a database
US6721739B1 (en) * 2000-12-05 2004-04-13 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency across multiple pages
US6950901B2 (en) * 2001-01-05 2005-09-27 International Business Machines Corporation Method and apparatus for supporting parity protection in a RAID clustered environment
EP1495414B1 (en) * 2002-03-25 2019-06-12 Open Invention Network LLC Transparent consistent active replication of multithreaded application programs
US7305582B1 (en) * 2002-08-30 2007-12-04 Availigent, Inc. Consistent asynchronous checkpointing of multithreaded application programs based on active replication
US7206964B2 (en) * 2002-08-30 2007-04-17 Availigent, Inc. Consistent asynchronous checkpointing of multithreaded application programs based on semi-active or passive replication
US6845115B2 (en) * 2002-12-05 2005-01-18 Agilent Technologies, Inc. Coupled resonant cavity surface-emitting laser
US7546600B2 (en) * 2004-04-30 2009-06-09 Hewlett-Packard Development Company Method of assigning virtual process identifier to process within process domain
US8380549B2 (en) * 2008-09-18 2013-02-19 Sap Ag Architectural design for embedded support application software

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8400186A (nl) * 1984-01-20 1985-08-16 Philips Nv Processorsysteem bevattende een aantal stations verbonden door een kommunikatienetwerk, alsmede station voor gebruik in zo een processorsysteem.
US4760521A (en) * 1985-11-18 1988-07-26 White Consolidated Industries, Inc. Arbitration system using centralized and decentralized arbitrators to access local memories in a multi-processor controlled machine tool
EP0239827B1 (de) * 1986-04-02 1993-05-26 Siemens Aktiengesellschaft Verfahren zum Ansteuern eines gemeinsamen Speichers eines aus einzelnen Mikroprozessorsystemen bestehenden Mehrprozessorsystems
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US5341510A (en) * 1987-05-01 1994-08-23 Digital Equipment Corporation Commander node method and apparatus for assuring adequate access to system resources in a multiprocessor
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US4984153A (en) * 1988-04-27 1991-01-08 Unisys Corporation Storage locking control for a plurality of processors which share a common storage unit
IT1227360B (it) * 1988-11-18 1991-04-08 Honeywell Bull Spa Sistema multiprocessore di elaborazione dati con replicazione di dati globali.
US5404501A (en) * 1989-08-31 1995-04-04 Motorola, Inc. Fault-tolerant method of communicating between processes in a multi processor system by keeping track of the current node location of messages
US5524255A (en) * 1989-12-29 1996-06-04 Cray Research, Inc. Method and apparatus for accessing global registers in a multiprocessor system
US5301290A (en) * 1990-03-14 1994-04-05 International Business Machines Corporation Method for minimizing lock processing while ensuring consistency among pages common to local processor caches and a shared external store
US5226143A (en) * 1990-03-14 1993-07-06 International Business Machines Corporation Multiprocessor system includes operating system for notifying only those cache managers who are holders of shared locks on a designated page by global lock manager
JPH07191944A (ja) * 1991-09-11 1995-07-28 Internatl Business Mach Corp <Ibm> 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
US5243596A (en) * 1992-03-18 1993-09-07 Fischer & Porter Company Network architecture suitable for multicasting and resource locking
US5317739A (en) * 1992-03-30 1994-05-31 International Business Machines Corp. Method and apparatus for coupling data processing systems
US5423044A (en) * 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
US5408629A (en) * 1992-08-13 1995-04-18 Unisys Corporation Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system
US5454108A (en) * 1994-01-26 1995-09-26 International Business Machines Corporation Distributed lock manager using a passive, state-full control-server

Also Published As

Publication number Publication date
DE69633777T2 (de) 2005-11-10
EP0806012A1 (en) 1997-11-12
US5577261A (en) 1996-11-19
EP0806012B1 (en) 2004-11-03
EP0806012A4 (en) 1998-07-15
JPH10502757A (ja) 1998-03-10
US5794034A (en) 1998-08-11
CA2210522A1 (en) 1996-08-01
DE69633777D1 (de) 2004-12-09
WO1996023262A1 (en) 1996-08-01

Similar Documents

Publication Publication Date Title
JP3055566B2 (ja) 分散型マルチプロセッサにおけるプロセス間関係の順序付き及び信頼保守
US5630136A (en) Method and apparatus for serializing access to multithreading unsafe resources
US7536582B1 (en) Fault-tolerant match-and-set locking mechanism for multiprocessor systems
AU713372B2 (en) Multiprocessor cluster membership manager framework
US6360331B2 (en) Method and system for transparently failing over application configuration information in a server cluster
US7206964B2 (en) Consistent asynchronous checkpointing of multithreaded application programs based on semi-active or passive replication
EP1495414B1 (en) Transparent consistent active replication of multithreaded application programs
JP5258019B2 (ja) アプリケーション・プロセス実行の範囲内での非決定論的オペレーションを管理、ロギング、またはリプレイするための予測方法
US6105049A (en) Resource lock/unlock capability in multithreaded computer environment
US6112222A (en) Method for resource lock/unlock capability in multithreaded computer environment
US7216346B2 (en) Method and apparatus for managing thread execution in a multithread application
US7134050B2 (en) Method and system for containing software faults
US7818429B2 (en) Registering a resource that delegates commit voting
US5737515A (en) Method and mechanism for guaranteeing timeliness of programs
JP3670017B2 (ja) 分散型多重プロセッサにおける順序付けされた信頼できる信号送出
Stewart Reliable massively parallel symbolic computing: fault tolerance for a distributed Haskell
Posner et al. Fault Tolerance for Cooperative Lifeline-Based Global Load Balancing in Java with APGAS and Hazelcast
US20050022199A1 (en) Event processor for job scheduling and management
Chen Multiprocessing with the Exokernel operating system
Pfeifer JOLTS: checkpointing and coordination in grid systems
JPS6027954A (ja) マルチプロセッサシステム

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20140414

Year of fee payment: 14

LAPS Cancellation because of no payment of annual fees