JPH08263352A - デッドロック検出機構 - Google Patents
デッドロック検出機構Info
- Publication number
- JPH08263352A JPH08263352A JP7319023A JP31902395A JPH08263352A JP H08263352 A JPH08263352 A JP H08263352A JP 7319023 A JP7319023 A JP 7319023A JP 31902395 A JP31902395 A JP 31902395A JP H08263352 A JPH08263352 A JP H08263352A
- Authority
- JP
- Japan
- Prior art keywords
- deadlock
- dependency
- probe
- ddm
- dependencies
- 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.)
- Abandoned
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】 分散されたデータ処理システムにおける疑似
デッドロックを回避し得るデッドロック検出機構を提供
する。 【解決手段】 分散されたデータ処理システムは、トラ
ンザクション間の依存性の循環的連鎖を含む潜在的デッ
ドロックを検出するデッドロック検出機構を有し、更に
潜在的デッドロック連鎖内の全ての依存性が同時に存在
することを確認するデッドロック・ダブルチェック機構
を有する。デッドロックが確認された場合、そのデッド
ロックを終わらせるための動作が行われる。デッドロッ
ク・ダブルチェック機構は、循環的連鎖内の依存性を独
自の存在番号をもってマークすることにより動作し、そ
れにより循環的連鎖内の各依存性の存在番号が変化して
いないことをチェックする。依存性のマーキングは、独
自のプローブ存在番号を含むプローブ・メッセージを伝
搬させ、そしてこのプローブ存在番号をマーカ・プロー
ブにより訪問された各依存性と関連づけることによって
行われ得る。
デッドロックを回避し得るデッドロック検出機構を提供
する。 【解決手段】 分散されたデータ処理システムは、トラ
ンザクション間の依存性の循環的連鎖を含む潜在的デッ
ドロックを検出するデッドロック検出機構を有し、更に
潜在的デッドロック連鎖内の全ての依存性が同時に存在
することを確認するデッドロック・ダブルチェック機構
を有する。デッドロックが確認された場合、そのデッド
ロックを終わらせるための動作が行われる。デッドロッ
ク・ダブルチェック機構は、循環的連鎖内の依存性を独
自の存在番号をもってマークすることにより動作し、そ
れにより循環的連鎖内の各依存性の存在番号が変化して
いないことをチェックする。依存性のマーキングは、独
自のプローブ存在番号を含むプローブ・メッセージを伝
搬させ、そしてこのプローブ存在番号をマーカ・プロー
ブにより訪問された各依存性と関連づけることによって
行われ得る。
Description
【0001】
【産業上の利用分野】本発明は、分散されたデータ処理
システムのためのデッドロック検出機構に関する。
システムのためのデッドロック検出機構に関する。
【0002】
【従来の技術】データベース・システムにおいて、多数
の処理を同時に実行することにより性能を向上させるの
は一般的なことである。データの整合性を確保するた
め、トランザクション(取引)は、データ・リソースを
アクセス前にロックし、その後アンロックしなければな
らず、更に2段階ロッキング(two-phase locking)プロ
トコルに従わなければならない。2段階ロッキングと
は、1つのトランザクションがその全てのロックを、そ
のロックのいずれかを解除し得る前に、持たなければな
らないことを意味する。なお、第1段階はロックを持つ
ことからなり、第2段階はロックを解除することからな
る。
の処理を同時に実行することにより性能を向上させるの
は一般的なことである。データの整合性を確保するた
め、トランザクション(取引)は、データ・リソースを
アクセス前にロックし、その後アンロックしなければな
らず、更に2段階ロッキング(two-phase locking)プロ
トコルに従わなければならない。2段階ロッキングと
は、1つのトランザクションがその全てのロックを、そ
のロックのいずれかを解除し得る前に、持たなければな
らないことを意味する。なお、第1段階はロックを持つ
ことからなり、第2段階はロックを解除することからな
る。
【0003】ロッキングは、トランザクションとトラン
ザクションとの間に依存性(dependencies)を生じさせ
る。即ち、あるトランザクションは、それが続行され得
る前にロックを解除すべく、他のトランザクション処理
を待ち続けなければならない。ここで、もし依存性の循
環的連鎖(cyclic chain)が生じた場合には、その連鎖内
にある全てのトランザクションはその状態を維持される
ことになり、各トランザクションは他のトランザクショ
ンを待ち続ける。このような状態をデッドロック(deadl
ock)と称する。従って、デッドロックを検出し、検出さ
れたデッドロックを終了(break)させるため適当な動作
を行う機構が設けられなければならない。この動作は、
デッドロックされた複数のトランザクションの1つを生
け贄(victim)として選択し、途中で打ち切ることを含
む。デッドロックの検出は、データベース管理システム
後端(database management system back-end)やプラッ
トフォーム特定プログラム(platform-specific progra
m)により実施される。
ザクションとの間に依存性(dependencies)を生じさせ
る。即ち、あるトランザクションは、それが続行され得
る前にロックを解除すべく、他のトランザクション処理
を待ち続けなければならない。ここで、もし依存性の循
環的連鎖(cyclic chain)が生じた場合には、その連鎖内
にある全てのトランザクションはその状態を維持される
ことになり、各トランザクションは他のトランザクショ
ンを待ち続ける。このような状態をデッドロック(deadl
ock)と称する。従って、デッドロックを検出し、検出さ
れたデッドロックを終了(break)させるため適当な動作
を行う機構が設けられなければならない。この動作は、
デッドロックされた複数のトランザクションの1つを生
け贄(victim)として選択し、途中で打ち切ることを含
む。デッドロックの検出は、データベース管理システム
後端(database management system back-end)やプラッ
トフォーム特定プログラム(platform-specific progra
m)により実施される。
【0004】デッドロック検出機構は、データ・リソー
ス(data resource)のロッキングが原因となるもの以外
のデッドロックの形式を検出することを要求されること
がある。これらの場合には、処理は2段階ロッキングプ
ロトコル通りに進められない。最新のデータベース管理
システム後端がマルチスレッド(multi-threaded)構造を
有しているという事実は、トランザクションが実行され
ている間にそのトランザクションがロックを持ち、そし
て解除することを多数回行わなければならないことを意
味する。これは、従来のデッドロック検出機構により検
出されるべき疑似デッドロック(spurious deadlocks)を
生じさせる。
ス(data resource)のロッキングが原因となるもの以外
のデッドロックの形式を検出することを要求されること
がある。これらの場合には、処理は2段階ロッキングプ
ロトコル通りに進められない。最新のデータベース管理
システム後端がマルチスレッド(multi-threaded)構造を
有しているという事実は、トランザクションが実行され
ている間にそのトランザクションがロックを持ち、そし
て解除することを多数回行わなければならないことを意
味する。これは、従来のデッドロック検出機構により検
出されるべき疑似デッドロック(spurious deadlocks)を
生じさせる。
【0005】
【発明が解決しようとする課題】本発明の目的は、この
ような疑似デッドロックを回避し得るデッドロック検出
機構を提供することにある。
ような疑似デッドロックを回避し得るデッドロック検出
機構を提供することにある。
【0006】
【課題を解決するための手段】本発明によれば、分散さ
れたデータ処理システムであって、(a)システム内の複
数の構成要素(entity)(例えば、トランザクション)間
の依存性の循環的連鎖を含む潜在的なデッドロックを検
出する最初のデッドロック検出手段、(b)潜在的なデッ
ドロックの検出に応答して、その循環的連鎖内の全ての
依存性が同時に存在する旨を確認するデッドロック・ダ
ブルチェック手段、及び(c)その循環的連鎖内の全ての
依存性が同時に存在する旨の確認に応答して、そのデッ
ドロックを終了させるための動作を行うデッドロック解
消手段を具備するシステムが提供される。
れたデータ処理システムであって、(a)システム内の複
数の構成要素(entity)(例えば、トランザクション)間
の依存性の循環的連鎖を含む潜在的なデッドロックを検
出する最初のデッドロック検出手段、(b)潜在的なデッ
ドロックの検出に応答して、その循環的連鎖内の全ての
依存性が同時に存在する旨を確認するデッドロック・ダ
ブルチェック手段、及び(c)その循環的連鎖内の全ての
依存性が同時に存在する旨の確認に応答して、そのデッ
ドロックを終了させるための動作を行うデッドロック解
消手段を具備するシステムが提供される。
【0007】本発明は、可能性あるデッドロック内の構
成要素依存性(entity dependencies)が全て同時に存在
するかダブルチェックを行うデッドロック検出機構を提
供するということが分かる。従って、本発明は、複数構
成要素が必ずしも2段階ロッキングプロトコル通りに進
められない場合に、誤ってデッドロックを検出する可能
性を回避するものである。
成要素依存性(entity dependencies)が全て同時に存在
するかダブルチェックを行うデッドロック検出機構を提
供するということが分かる。従って、本発明は、複数構
成要素が必ずしも2段階ロッキングプロトコル通りに進
められない場合に、誤ってデッドロックを検出する可能
性を回避するものである。
【0008】
【実施例】以下、本発明の1つの実施例について、添付
図面を参照しつつ説明する。
図面を参照しつつ説明する。
【0009】図1は、分散されたデータ処理システム1
0を示す。データ処理システム10は、データ・リソー
ス12をアクセスする多数のトランザクション(transac
tions)11を有する。データの整合性を確保するため、
1つのトランザクションは、それをアクセスする前にデ
ータ・リソースをロックし、その後アンロックしなけれ
ばならない。このシステム10は、また複数のデッドロ
ック検出マネージャ(DDM)13を具備するデッドロ
ック検出機構を有する。各マネージャ13は特定のトラ
ンザクションと関連づけられている。トランザクショ
ン、リソース及びDDMは、メッセージ通過機構14に
よって相互に情報のやりとりを行う。
0を示す。データ処理システム10は、データ・リソー
ス12をアクセスする多数のトランザクション(transac
tions)11を有する。データの整合性を確保するため、
1つのトランザクションは、それをアクセスする前にデ
ータ・リソースをロックし、その後アンロックしなけれ
ばならない。このシステム10は、また複数のデッドロ
ック検出マネージャ(DDM)13を具備するデッドロ
ック検出機構を有する。各マネージャ13は特定のトラ
ンザクションと関連づけられている。トランザクショ
ン、リソース及びDDMは、メッセージ通過機構14に
よって相互に情報のやりとりを行う。
【0010】各DDMは、依存性セット15を保持す
る。依存性セット15は、DDMが関連づけられたトラ
ンザクションが依存するトランザクションのリストを具
備する。依存性セットの各メンバは、それと関連づけら
れた1又はそれ以上の独自のプローブ存在番号(PE
N)を有する。以下に明らかにされるように、PENは
同一の依存性の異なる用例(instances)を他から区別す
るため使用され得る。
る。依存性セット15は、DDMが関連づけられたトラ
ンザクションが依存するトランザクションのリストを具
備する。依存性セットの各メンバは、それと関連づけら
れた1又はそれ以上の独自のプローブ存在番号(PE
N)を有する。以下に明らかにされるように、PENは
同一の依存性の異なる用例(instances)を他から区別す
るため使用され得る。
【0011】デッドロック検出機構は、トランザクショ
ン間の依存性を知らされることが必要である。依存性が
2つのトランザクション間で生ずるごとに、メッセージ
が待機(waiting)トランザクションのDDMへ送られ、
待機されているトランザクションの名称をそのDDMに
知らせる。同様に、依存性が除去されるごとに、メッセ
ージが待機トランザクションのDDMに送られ、もはや
依存性の存在していないトランザクションの名称をその
DDMに知らせる。以下に示すように、DDMは、それ
らDDMの依存性セットを最新の状態に維持(up-to-dat
e)しておくためそれらメッセージを用いる。更に、新た
な依存性が生じたときはいつでも、DDMは可能性のあ
るデッドロックを検出するための動作を行う。
ン間の依存性を知らされることが必要である。依存性が
2つのトランザクション間で生ずるごとに、メッセージ
が待機(waiting)トランザクションのDDMへ送られ、
待機されているトランザクションの名称をそのDDMに
知らせる。同様に、依存性が除去されるごとに、メッセ
ージが待機トランザクションのDDMに送られ、もはや
依存性の存在していないトランザクションの名称をその
DDMに知らせる。以下に示すように、DDMは、それ
らDDMの依存性セットを最新の状態に維持(up-to-dat
e)しておくためそれらメッセージを用いる。更に、新た
な依存性が生じたときはいつでも、DDMは可能性のあ
るデッドロックを検出するための動作を行う。
【0012】各トランザクションは、それと関連づけら
れた重み値(significance value)を有する。この重み値
は、各トランザクションの存在時間により決まってお
り、最も古くて存在時間が長いトランザクションの重み
値の方が、より高い値となっている。夫々のトランザク
ションが発生された順序で連続的に名称付け(番号付
け)される場合には、各トランザクションの重み値はそ
の名称の単純関数として与えられる。
れた重み値(significance value)を有する。この重み値
は、各トランザクションの存在時間により決まってお
り、最も古くて存在時間が長いトランザクションの重み
値の方が、より高い値となっている。夫々のトランザク
ションが発生された順序で連続的に名称付け(番号付
け)される場合には、各トランザクションの重み値はそ
の名称の単純関数として与えられる。
【0013】以下、デッドロック検出機構の動作につい
て、図2乃至図7を参照しつつ説明する。この機構は、
プローブ(probe)と称する特別のメッセージを使用す
る。具体的には、第1段階プローブ、第2段階プローブ
及び第3段階プローブと称する3種類のプローブが使用
される。これら異なるプローブの種類は、夫々異なるヘ
ッダによって区別される。
て、図2乃至図7を参照しつつ説明する。この機構は、
プローブ(probe)と称する特別のメッセージを使用す
る。具体的には、第1段階プローブ、第2段階プローブ
及び第3段階プローブと称する3種類のプローブが使用
される。これら異なるプローブの種類は、夫々異なるヘ
ッダによって区別される。
【0014】図2は、DDMが新たな依存性を示すメッ
セージを受信したときの、そのDDMの動作を示すフロ
ー図である。
セージを受信したときの、そのDDMの動作を示すフロ
ー図である。
【0015】(ステップ21)最初に、DDMは待機さ
れているトランザクションの名称をその依存性セットに
付加する。この時点では、プローブ存在番号(PEN)
は依存性と関連づけられていない。
れているトランザクションの名称をその依存性セットに
付加する。この時点では、プローブ存在番号(PEN)
は依存性と関連づけられていない。
【0016】(ステップ22)その後、DDMは第1段
階プローブ(FPP)を起動し、それを待機されている
トランザクションのDDMへ送る。FPPは2つの情報
を有する。1つは起動されるトランザクション(即ち、
そのDDMがFPPを起動したトランザクション)の名
称であり、もう1つは企図された生け贄(proposed vict
im)(即ち、デッドロックが検出されたら中断されるべ
きトランザクション)の名称である。企図された生け贄
は、プローブによって訪問される(visited)までは、最
下位のトランザクションであり、最初は起動されるトラ
ンザクションである。
階プローブ(FPP)を起動し、それを待機されている
トランザクションのDDMへ送る。FPPは2つの情報
を有する。1つは起動されるトランザクション(即ち、
そのDDMがFPPを起動したトランザクション)の名
称であり、もう1つは企図された生け贄(proposed vict
im)(即ち、デッドロックが検出されたら中断されるべ
きトランザクション)の名称である。企図された生け贄
は、プローブによって訪問される(visited)までは、最
下位のトランザクションであり、最初は起動されるトラ
ンザクションである。
【0017】図3は、DDMが、その関連づけられてい
るトランザクションはもはや他のトランザクションによ
って決まるものではないことを示すメッセージを受信し
たときの、そのDDMの動作を示すフロー図である。
るトランザクションはもはや他のトランザクションによ
って決まるものではないことを示すメッセージを受信し
たときの、そのDDMの動作を示すフロー図である。
【0018】(ステップ31)DDMは、その(如何な
る関連づけられた存在番号をも含む)依存性セットか
ら、待機されているトランザクションを削除する。その
後、更なる動作は行われない。
る関連づけられた存在番号をも含む)依存性セットか
ら、待機されているトランザクションを削除する。その
後、更なる動作は行われない。
【0019】図4は、DDMが第1段階プローブ(FP
P)を受信したときの、そのDDMの動作を示すフロー
図である。
P)を受信したときの、そのDDMの動作を示すフロー
図である。
【0020】(ステップ41)最初にDDMは、そのト
ランザクションの重さと企図された生け贄の重さとを比
較する。もしDDMのトランザクションの重さの方が企
図された生け贄の重さより低い場合、DDMは、企図さ
れた生け贄として、そのトランザクションをFPPへ代
用する。FPPにおける起動されるトランザクションは
変更されない。
ランザクションの重さと企図された生け贄の重さとを比
較する。もしDDMのトランザクションの重さの方が企
図された生け贄の重さより低い場合、DDMは、企図さ
れた生け贄として、そのトランザクションをFPPへ代
用する。FPPにおける起動されるトランザクションは
変更されない。
【0021】(ステップ42)その後DDMは、FPP
の起動されるトランザクションがその依存性セットのメ
ンバかどうかチェックする。
の起動されるトランザクションがその依存性セットのメ
ンバかどうかチェックする。
【0022】(ステップ43)FPPの起動されるトラ
ンザクションがDDMの依存性セット内にない場合、D
DMはその後FPPをその依存性セットの全てのメンバ
のDDMに送る。依存性セット内にトランザクションが
ない場合、FPPは放棄される。
ンザクションがDDMの依存性セット内にない場合、D
DMはその後FPPをその依存性セットの全てのメンバ
のDDMに送る。依存性セット内にトランザクションが
ない場合、FPPは放棄される。
【0023】(ステップ44)受信されたFPPの起動
されるトランザクションがDDMの依存性セット内に存
在するとき、このことは、依存性の循環的連鎖(cyclic
chain)が存在し、それにより潜在的なデッドロックが存
在することを意味する。しかし、循環内の全ての依存性
が同時発生しない場合には、このデッドロックは疑似的
なものである。従って、DDMは、企図された生け贄の
DDMにメッセージを送り、デッドロックのダブルチェ
ックを開始するよう要求する。
されるトランザクションがDDMの依存性セット内に存
在するとき、このことは、依存性の循環的連鎖(cyclic
chain)が存在し、それにより潜在的なデッドロックが存
在することを意味する。しかし、循環内の全ての依存性
が同時発生しない場合には、このデッドロックは疑似的
なものである。従って、DDMは、企図された生け贄の
DDMにメッセージを送り、デッドロックのダブルチェ
ックを開始するよう要求する。
【0024】図5は、DDMがデッドロックのダブルチ
ェックを開始するよう要求するメッセージを受信したと
きの、そのDDMの動作を示すフロー図である。DDM
がこのメッセージを受信すると、DDMはそのトランザ
クションが企図された生け贄であることを知る。
ェックを開始するよう要求するメッセージを受信したと
きの、そのDDMの動作を示すフロー図である。DDM
がこのメッセージを受信すると、DDMはそのトランザ
クションが企図された生け贄であることを知る。
【0025】(ステップ51)最初に、DDMは新たな
プローブ存在番号(PEN)を生成する。各DDMは、
各自のカウンタを用いて複数のPENを生成する。その
カウンタは、DDMがPENを生成するごとにインクリ
メント(increment)を行う。各PENは、そのPENを
生成したDDMの名称を含む。それにより、各PENは
システム全体を通じて独自のものとなる。
プローブ存在番号(PEN)を生成する。各DDMは、
各自のカウンタを用いて複数のPENを生成する。その
カウンタは、DDMがPENを生成するごとにインクリ
メント(increment)を行う。各PENは、そのPENを
生成したDDMの名称を含む。それにより、各PENは
システム全体を通じて独自のものとなる。
【0026】(ステップ52)DDMは、新たに生成さ
れたPENを、その依存性セットの複数のメンバの各々
と関連づける。新たなPENは、依存性セットと既に関
連づけられたいずれのPENにも付加されるということ
に注意すべきである。
れたPENを、その依存性セットの複数のメンバの各々
と関連づける。新たなPENは、依存性セットと既に関
連づけられたいずれのPENにも付加されるということ
に注意すべきである。
【0027】(ステップ53)その後、DDMは第2段
階プローブ(SPP)を起動し、そのDDMの依存性セ
ットの各メンバのDDMに起動したSPPを送る。各S
PPは2つのパラメータを有する。1つは起動されるト
ランザクション(即ち、企図された生け贄)の名称であ
り、もう1つはPENである。
階プローブ(SPP)を起動し、そのDDMの依存性セ
ットの各メンバのDDMに起動したSPPを送る。各S
PPは2つのパラメータを有する。1つは起動されるト
ランザクション(即ち、企図された生け贄)の名称であ
り、もう1つはPENである。
【0028】図6は、DDMがSPPを受信したとき
の、そのDDMの動作を示すフロー図である。
の、そのDDMの動作を示すフロー図である。
【0029】(ステップ61)最初に、DDMは、その
DDMがSPPを起動したか否かをチェックする。
DDMがSPPを起動したか否かをチェックする。
【0030】(ステップ62)DDMがSPPを起動し
なかった場合、そのDDMは、SPP内のプローブ存在
番号(PEN)をそのDDMの依存性セットの複数のメ
ンバの各々と関連づける。ここで、PENは依存性セッ
トと既に関連づけられたいずれのPENにも付加される
ということに注意すべきである。従って、依存性セット
の各メンバは、そのメンバが依存性セット内に存在する
間に起動され又は受信された各SPPのために、そのメ
ンバと関連づけられたPENを有することになる。
なかった場合、そのDDMは、SPP内のプローブ存在
番号(PEN)をそのDDMの依存性セットの複数のメ
ンバの各々と関連づける。ここで、PENは依存性セッ
トと既に関連づけられたいずれのPENにも付加される
ということに注意すべきである。従って、依存性セット
の各メンバは、そのメンバが依存性セット内に存在する
間に起動され又は受信された各SPPのために、そのメ
ンバと関連づけられたPENを有することになる。
【0031】(ステップ63)DDMは、その後そのD
DMの依存性セットの全てのメンバのDDMにSPPを
送る。
DMの依存性セットの全てのメンバのDDMにSPPを
送る。
【0032】(ステップ64)一方、DDMがSPPを
起動した場合、そのDDMはSPP内のPENをDDM
の依存性セットの複数メンバの各々と関連づけられたP
ENと比較する。SPP内のPENが依存性セット内の
どのPENとも一致しない場合には、その後の動作は行
われない。
起動した場合、そのDDMはSPP内のPENをDDM
の依存性セットの複数メンバの各々と関連づけられたP
ENと比較する。SPP内のPENが依存性セット内の
どのPENとも一致しない場合には、その後の動作は行
われない。
【0033】(ステップ65)SPP内のPENが依存
性セット内のPENの少なくとも1つと一致する場合に
は、DDMはその後第3段階プローブ(TPP)を起動
する。TPPは、一致するPENを有する依存性セット
の各メンバのDDMに送られる。なお、TPPはSPP
と同じ情報を有する。(依存性の循環的連鎖は多数存在
することに起因して)SPPの1以上のコピーが戻る場
合に送られる多数のTPP間での区別を可能にするた
め、与えられたいずれのSPPとも関連づけられたTP
Pは、TPPに付加される異なった複数の第3段階の存
在番号(TPEN)に割り当てられる。各DDMは、そ
れにより生成された最後のTPENを記憶している。
性セット内のPENの少なくとも1つと一致する場合に
は、DDMはその後第3段階プローブ(TPP)を起動
する。TPPは、一致するPENを有する依存性セット
の各メンバのDDMに送られる。なお、TPPはSPP
と同じ情報を有する。(依存性の循環的連鎖は多数存在
することに起因して)SPPの1以上のコピーが戻る場
合に送られる多数のTPP間での区別を可能にするた
め、与えられたいずれのSPPとも関連づけられたTP
Pは、TPPに付加される異なった複数の第3段階の存
在番号(TPEN)に割り当てられる。各DDMは、そ
れにより生成された最後のTPENを記憶している。
【0034】図7は、DDMがTPPを受信したとき
の、そのDDMの動作を示すフロー図である。
の、そのDDMの動作を示すフロー図である。
【0035】(ステップ71)最初にDDMは、そのD
DMがTPPを起動したか否かチェックする。
DMがTPPを起動したか否かチェックする。
【0036】(ステップ72)DDMがイニシエータ(i
nitiator)ではなかった場合、DDMは、TPP内のP
ENを、DDMの依存性セットの複数のメンバの各々と
関連づけられたPENと比較する。TPP内のPENが
依存性セット内のPENのいずれとも一致しない場合に
は、その後の動作は行われない。
nitiator)ではなかった場合、DDMは、TPP内のP
ENを、DDMの依存性セットの複数のメンバの各々と
関連づけられたPENと比較する。TPP内のPENが
依存性セット内のPENのいずれとも一致しない場合に
は、その後の動作は行われない。
【0037】(ステップ73)TPP内のPENが、依
存性セット内の複数のPENの少なくともいずれか1つ
と一致する場合、TPPは、その後一致するPENを有
する依存性セットの各メンバのDDMに送られる。
存性セット内の複数のPENの少なくともいずれか1つ
と一致する場合、TPPは、その後一致するPENを有
する依存性セットの各メンバのDDMに送られる。
【0038】(ステップ74)TPPが、そのイニシエ
ータへ戻ってきた場合、TPP内のTPENは、このD
DMによって生成されているべき最後のTPENである
か否かチェックされる。最後のTPENではない場合に
は、その後の動作は行われない。従って、TPPが送ら
れた後にSPPの更なるコピーが着く(arrive)場合に
は、そのTPPは無視される。これは、幾つかのTPP
が同一のデッドロックについて生成される場合に生じ得
る潜在的な競争状態(potential race condition)を回避
する。
ータへ戻ってきた場合、TPP内のTPENは、このD
DMによって生成されているべき最後のTPENである
か否かチェックされる。最後のTPENではない場合に
は、その後の動作は行われない。従って、TPPが送ら
れた後にSPPの更なるコピーが着く(arrive)場合に
は、そのTPPは無視される。これは、幾つかのTPP
が同一のデッドロックについて生成される場合に生じ得
る潜在的な競争状態(potential race condition)を回避
する。
【0039】(ステップ75)TPENが最後のTPE
Nである場合、デッドロックが確認される。その後、そ
のデッドロックを終わらせるべく、デッドロック検出機
構から生け贄を打ち切る(abort)ためのメッセージが送
られる。
Nである場合、デッドロックが確認される。その後、そ
のデッドロックを終わらせるべく、デッドロック検出機
構から生け贄を打ち切る(abort)ためのメッセージが送
られる。
【0040】要約すると、上述のデッドロック検出機構
は3つの段階で動作するということが分かる。第1段階
においては、潜在的デッドロックを検出するために依存
性の循環的連鎖がトレースされる。しかし、このデッド
ロックは、同時に存在しない依存性を含むため、疑似的
なものである。第2段階においては、依存性の循環的連
鎖が再度トレースされ、そしてその連鎖内の依存性が独
自のプローブ存在番号(PEN)と共にラベルされる。
そして第3段階においては、依存性の循環的連鎖は、循
環が依然として存在するか、そしてその循環内の依存性
が依然として同じPENを有するかチェックするため
に、再度トレースされる。もしそうである場合、依存性
は全て同時に存在すると結論され、その結果デッドロッ
クを終わらせるための動作が行われる。
は3つの段階で動作するということが分かる。第1段階
においては、潜在的デッドロックを検出するために依存
性の循環的連鎖がトレースされる。しかし、このデッド
ロックは、同時に存在しない依存性を含むため、疑似的
なものである。第2段階においては、依存性の循環的連
鎖が再度トレースされ、そしてその連鎖内の依存性が独
自のプローブ存在番号(PEN)と共にラベルされる。
そして第3段階においては、依存性の循環的連鎖は、循
環が依然として存在するか、そしてその循環内の依存性
が依然として同じPENを有するかチェックするため
に、再度トレースされる。もしそうである場合、依存性
は全て同時に存在すると結論され、その結果デッドロッ
クを終わらせるための動作が行われる。
【0041】(幾つかの可能性ある変形例)本発明の範
囲を逸脱することなく上述のシステムについて多くの変
更が可能である。
囲を逸脱することなく上述のシステムについて多くの変
更が可能である。
【0042】例えば、潜在的デッドロックを検出するた
めに、第1段階において他のデッドロック検出機構を使
用することが可能である。これにより、図2乃至図4に
示されるデッドロック検出機構が、プローブのコピーが
DDM内で保持されない「プローブ忘失(probe forgett
ing)」機構である限りは、例えば本願の出願人による欧
州特許出願第93,306,677号に示されているような「プロ
ーブ思い出し(probe remembering)」機構が同様に使用
され得る。
めに、第1段階において他のデッドロック検出機構を使
用することが可能である。これにより、図2乃至図4に
示されるデッドロック検出機構が、プローブのコピーが
DDM内で保持されない「プローブ忘失(probe forgett
ing)」機構である限りは、例えば本願の出願人による欧
州特許出願第93,306,677号に示されているような「プロ
ーブ思い出し(probe remembering)」機構が同様に使用
され得る。
【0043】また、打ち切り(aborting)トランザクショ
ンの代わりに、他の方法を使用してデッドロックを終わ
らせてもよい。例えば、上述の欧州特許出願第93,306,6
77号に示されているように、デッドロック循環内の複数
のトランザクションの1つがロッキングを解除するよう
強制され得る。
ンの代わりに、他の方法を使用してデッドロックを終わ
らせてもよい。例えば、上述の欧州特許出願第93,306,6
77号に示されているように、デッドロック循環内の複数
のトランザクションの1つがロッキングを解除するよう
強制され得る。
【0044】上述の実施例においては、各DDMは単一
のトランザクションを扱っているに過ぎないが、各DD
Mが多数の別個独立のトランザクションを扱うようにす
ることも同様に可能である。この場合、各DDMは、そ
のDDMにより扱われる各トランザクションに各々が対
応する多数の依存性セットを維持することになる。
のトランザクションを扱っているに過ぎないが、各DD
Mが多数の別個独立のトランザクションを扱うようにす
ることも同様に可能である。この場合、各DDMは、そ
のDDMにより扱われる各トランザクションに各々が対
応する多数の依存性セットを維持することになる。
【0045】以上の開示においては、複数トランザクシ
ョン間のデッドロックを検出するために機構が示されて
いるが、本発明は、同様に別のタイプの構成要素(entit
y)間のデッドロックを検出すべく適用することも可能で
ある。
ョン間のデッドロックを検出するために機構が示されて
いるが、本発明は、同様に別のタイプの構成要素(entit
y)間のデッドロックを検出すべく適用することも可能で
ある。
【0046】別の可能性ある変更例においては、分散さ
れた第2段階よりもむしろ最初のデッドロック検出段階
にPENを付加することによって、第1段階プローブと
第2段階プローブの機能を結合することが可能である。
しかしながら、上述のように、性能的な理由のため、最
初のデッドロック検出段階はできるだけシンプルに維持
し、そして分散された第2段階にPENを付加すること
が好ましいと考えられている。疑わしいデッドロックは
複数のケースの一部においてのみ生じ、そのため余分な
段階についての経費は多大なものとはならない。
れた第2段階よりもむしろ最初のデッドロック検出段階
にPENを付加することによって、第1段階プローブと
第2段階プローブの機能を結合することが可能である。
しかしながら、上述のように、性能的な理由のため、最
初のデッドロック検出段階はできるだけシンプルに維持
し、そして分散された第2段階にPENを付加すること
が好ましいと考えられている。疑わしいデッドロックは
複数のケースの一部においてのみ生じ、そのため余分な
段階についての経費は多大なものとはならない。
【0047】更に別の可能性ある変更例においては、P
ENを使用する代わりに、潜在的デッドロック循環内の
依存性の各々は、DDMにより局部的に生成される独自
の依存性存在番号(DEN)をもってマークされるよう
にしてもよい。この場合は、デッドロックは、SPP内
の複数のDENのリストを蓄積し、その後このリストを
TPP内で循環させ、そしてどのDENも変化していな
いことをチェックすることによって確認され得るもので
ある。
ENを使用する代わりに、潜在的デッドロック循環内の
依存性の各々は、DDMにより局部的に生成される独自
の依存性存在番号(DEN)をもってマークされるよう
にしてもよい。この場合は、デッドロックは、SPP内
の複数のDENのリストを蓄積し、その後このリストを
TPP内で循環させ、そしてどのDENも変化していな
いことをチェックすることによって確認され得るもので
ある。
【0048】
【発明の効果】以上説明したように、本発明によれば、
可能性あるデッドロック内の構成要素の依存性が全て同
時に存在するかダブルチェックを行うデッドロック検出
機構が提供されるため、構成要素が必ずしも2段階ロッ
キングプロトコル通りに進められない場合でも、誤って
デッドロックを検出する可能性が回避されることにな
る。
可能性あるデッドロック内の構成要素の依存性が全て同
時に存在するかダブルチェックを行うデッドロック検出
機構が提供されるため、構成要素が必ずしも2段階ロッ
キングプロトコル通りに進められない場合でも、誤って
デッドロックを検出する可能性が回避されることにな
る。
【図1】本発明による分散されたデータ・トランザクシ
ョン・システムのブロック図である。このシステムは、
多数のデッドロック検出マネージャ(DDM)を具備するデ
ッドロック検出機構を有する。
ョン・システムのブロック図である。このシステムは、
多数のデッドロック検出マネージャ(DDM)を具備するデ
ッドロック検出機構を有する。
【図2】デッドロック検出マネージャ(DDM)の動作を示
すフロー図である。
すフロー図である。
【図3】デッドロック検出マネージャ(DDM)の動作を示
すフロー図である。
すフロー図である。
【図4】デッドロック検出マネージャ(DDM)の動作を示
すフロー図である。
すフロー図である。
【図5】デッドロック検出マネージャ(DDM)の動作を示
すフロー図である。
すフロー図である。
【図6】デッドロック検出マネージャ(DDM)の動作を示
すフロー図である。
すフロー図である。
【図7】デッドロック検出マネージャ(DDM)の動作を示
すフロー図である。
すフロー図である。
10 分散されたデータ処理システム 11 トランザクション 12 データ・リソース 13 デッドロック検出マネージャ(DDM) 14 メッセージ通過機構 15 依存性セット
フロントページの続き (72)発明者 スティーヴ ロバート ペッティファー イギリス国.エム19 2エルジー マンチ ェスター,バーネイジ,グランジソープ ドライヴ 18 アッディヤナ コミュニテ ィ (72)発明者 コリン マイケル トムソン イギリス国.シーダブリュ12 4イーユー チェシャー,コングルトン,ウエスト ロード,ウィラビー ヴィラ(番地なし) (72)発明者 ナッサー シッディキ イギリス国. エム14 5エッチエッチ マンチェスター,ラショルム,ワレス ア ヴェニュー 19
Claims (5)
- 【請求項1】 分散されたデータ処理システムにおい
て、前記システムが、(a)前記システム内の複数の構成
要素(例えば、トランザクション)間の依存性の循環的
連鎖を含む潜在的デッドロックを検出する最初のデッド
ロック検出手段、 (b)潜在的デッドロックの検出に応答して、前記循環的
連鎖内の全ての依存性が同時に存在することを確認する
デッドロック・ダブルチェック手段、及び (c)前記循環的連鎖内の全ての依存性が同時に存在する
旨の確認に応答して、前記デッドロックを終わらせるた
め動作を行うデッドロック解消手段、を具備することを
特徴とするシステム。 - 【請求項2】 請求項1に記載のシステムにおいて、前
記デッドロック・ダブルチェック手段が、 独自の存在番号をもって前記循環的連鎖内の依存性をマ
ークするマーク手段、及びその後に、前記循環的連鎖内
の各依存性の存在番号が変化しないことをチェックする
チェック手段、を具備することを特徴とするシステム。 - 【請求項3】 請求項1に記載のシステムにおいて、前
記最初のデッドロック検出手段が、 複数の依存性セットであって、その1つは前記各構成要
素に対応し、また各依存性セットは他の構成要素につい
て依存性を示す多数の依存性メンバを有するもの、及び
前記依存性セット間の依存性の循環的連鎖をトレースす
る手段、を具備することを特徴とするシステム。 - 【請求項4】 請求項3に記載のシステムにおいて、前
記デッドロック・ダブルチェック手段が、 独自のプローブ存在番号を有するマーカ・プローブを前
記循環的連鎖のまわりに伝搬させ、そしてマーカ・プロ
ーブ内の前記プローブ存在番号を前記マーカ・プローブ
により訪問された各依存性セット内の各依存性番号と関
連づける手段、及び前記プローブ存在番号を有するチェ
ック・プローブを前記循環的連鎖のまわりに伝搬させ、
そしてチェック・プローブによって訪問された各依存性
セット内の少なくとも1つの依存性番号がそれと関連づ
けられた前記プローブ存在番号と同じ番号を依然として
有するかチェックする手段、を具備することを特徴とす
るシステム。 - 【請求項5】 請求項4に記載のシステムにおいて、前
記チェック・プローブの各々は、また、同じマーキング
・プローブの多数のコピーが受信された場合に生成され
得る多数のチェック・プローブを区別するため、更なる
存在番号を有し、そして前記循環的連鎖のまわりに伝搬
されているチェック・プローブは、与えられたマーキン
グ・プローブについて発せられる限りでは、その更なる
存在番号が最も遅い更なる存在番号ではない場合には無
視される、ことを特徴とするシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9424699.8 | 1994-12-07 | ||
GB9424699A GB9424699D0 (en) | 1994-12-07 | 1994-12-07 | Deadlock detection mechanism |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08263352A true JPH08263352A (ja) | 1996-10-11 |
Family
ID=10765556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7319023A Abandoned JPH08263352A (ja) | 1994-12-07 | 1995-12-07 | デッドロック検出機構 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6173308B1 (ja) |
EP (1) | EP0716377B1 (ja) |
JP (1) | JPH08263352A (ja) |
AU (1) | AU696062B2 (ja) |
DE (1) | DE69529269T2 (ja) |
GB (1) | GB9424699D0 (ja) |
ZA (1) | ZA9510063B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100319763B1 (ko) * | 1999-12-23 | 2002-01-05 | 오길록 | 쓰래드 풀을 기반으로 한 트랜잭션 처리시스템에서 쓰래드복합 교착상태의 검출 및 해결 방법 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE521433C2 (sv) * | 1998-07-22 | 2003-11-04 | Ericsson Telefon Ab L M | En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas |
US6401110B1 (en) * | 1998-11-30 | 2002-06-04 | International Business Machines Corporation | Method for managing concurrent processes using dual locking |
WO2001059568A2 (en) * | 2000-02-11 | 2001-08-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Active cooperation deadlock detection system/method in a distributed database network |
US7406519B2 (en) * | 2001-11-13 | 2008-07-29 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US7028300B2 (en) * | 2001-11-13 | 2006-04-11 | Microsoft Corporation | Method and system for managing resources in a distributed environment that has an associated object |
JP2005122560A (ja) * | 2003-10-17 | 2005-05-12 | Fujitsu Ltd | デッドロック事前検出プログラム |
US7496918B1 (en) * | 2004-06-01 | 2009-02-24 | Sun Microsystems, Inc. | System and methods for deadlock detection |
US7403945B2 (en) * | 2004-11-01 | 2008-07-22 | Sybase, Inc. | Distributed database system providing data and space management methodology |
US7735089B2 (en) * | 2005-03-08 | 2010-06-08 | Oracle International Corporation | Method and system for deadlock detection in a distributed environment |
US20070061805A1 (en) * | 2005-09-15 | 2007-03-15 | Brenner Larry B | Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system |
US7958512B2 (en) * | 2005-10-31 | 2011-06-07 | Microsoft Corporation | Instrumentation to find the thread or process responsible for an application failure |
JP4432087B2 (ja) * | 2006-12-26 | 2010-03-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベース更新管理システム、プログラムおよび方法 |
CN102053861B (zh) * | 2009-10-30 | 2014-03-12 | 国际商业机器公司 | 并行程序中死锁检测的方法和系统 |
US7962615B1 (en) | 2010-01-07 | 2011-06-14 | International Business Machines Corporation | Multi-system deadlock reduction |
CN112527474B (zh) * | 2020-12-10 | 2023-07-25 | 北京百度网讯科技有限公司 | 任务处理方法及装置、设备、可读介质、计算机程序产品 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0595453B1 (en) * | 1992-10-24 | 1998-11-11 | International Computers Limited | Distributed data processing system |
-
1994
- 1994-12-07 GB GB9424699A patent/GB9424699D0/en active Pending
-
1995
- 1995-11-02 EP EP95307829A patent/EP0716377B1/en not_active Expired - Lifetime
- 1995-11-02 DE DE69529269T patent/DE69529269T2/de not_active Expired - Lifetime
- 1995-11-15 US US08/567,354 patent/US6173308B1/en not_active Expired - Lifetime
- 1995-11-27 ZA ZA9510063A patent/ZA9510063B/xx unknown
- 1995-12-05 AU AU40254/95A patent/AU696062B2/en not_active Ceased
- 1995-12-07 JP JP7319023A patent/JPH08263352A/ja not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100319763B1 (ko) * | 1999-12-23 | 2002-01-05 | 오길록 | 쓰래드 풀을 기반으로 한 트랜잭션 처리시스템에서 쓰래드복합 교착상태의 검출 및 해결 방법 |
Also Published As
Publication number | Publication date |
---|---|
DE69529269T2 (de) | 2003-11-20 |
EP0716377A2 (en) | 1996-06-12 |
GB9424699D0 (en) | 1995-02-01 |
EP0716377A3 (en) | 1998-02-04 |
ZA9510063B (en) | 1996-06-05 |
AU4025495A (en) | 1996-06-13 |
AU696062B2 (en) | 1998-08-27 |
EP0716377B1 (en) | 2003-01-02 |
US6173308B1 (en) | 2001-01-09 |
DE69529269D1 (de) | 2003-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH08263352A (ja) | デッドロック検出機構 | |
Davcev et al. | Consistency and Recovery Control for Replicated Files. | |
AU707393B2 (en) | System and method for space efficient object locking | |
Bayer et al. | Parallelism and recovery in database systems | |
US5317739A (en) | Method and apparatus for coupling data processing systems | |
US20060206901A1 (en) | Method and system for deadlock detection in a distributed environment | |
Herlihy et al. | A provably correct scalable concurrent skip list | |
US6625601B1 (en) | Escrow-locking multithreaded process-pair resource manager dictionary | |
US6742135B1 (en) | Fault-tolerant match-and-set locking mechanism for multiprocessor systems | |
JP4620871B2 (ja) | マルチスレッドコンピュータシステムにおけるモニタ変換 | |
US7185339B2 (en) | Victim selection for deadlock detection | |
Koskinen et al. | Dreadlocks: efficient deadlock detection | |
US20100262972A1 (en) | Deadlock avoidance | |
JP2000215070A (ja) | ロバスト且つ回復可能なプロセス間ロック | |
CN111444002A (zh) | 一种任务调度方法及装置 | |
Saad et al. | Transactional forwarding: Supporting highly-concurrent stm in asynchronous distributed systems | |
US7752399B2 (en) | Exclusion control method and information processing apparatus | |
US6304938B1 (en) | Detecting a state change in a lock structure to validate a potential deadlock | |
JP2005509944A (ja) | 大きなデータ構造のエントリロック | |
CN114035970B (zh) | 一种数据并发竞争冲突检测分析方法及系统 | |
US7519967B1 (en) | Facilitating biased synchronization in an object-based system | |
Gupta | Deadlock detection techniques in distributed database system | |
Weikum | Pros and cons of operating system transactions for data base systems | |
CN114327830A (zh) | 一种分布式事务的处理方法 | |
CN117555874B (zh) | 一种分布式数据库的日志存储方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20040519 |