JPH05134886A - デツドロツク検出方式 - Google Patents

デツドロツク検出方式

Info

Publication number
JPH05134886A
JPH05134886A JP3357374A JP35737491A JPH05134886A JP H05134886 A JPH05134886 A JP H05134886A JP 3357374 A JP3357374 A JP 3357374A JP 35737491 A JP35737491 A JP 35737491A JP H05134886 A JPH05134886 A JP H05134886A
Authority
JP
Japan
Prior art keywords
lock
list
resource request
deadlock
request source
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.)
Withdrawn
Application number
JP3357374A
Other languages
English (en)
Inventor
Haruo Yokota
治夫 横田
Hajime Kitagami
始 北上
Yasuo Noguchi
泰生 野口
Naoteru Akaboshi
直輝 赤星
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPH05134886A publication Critical patent/JPH05134886A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • 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/524Deadlock 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)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 複数の資源を複数の資源要求元から共有する
場合の、デッドロック検出方式およびロック管理装置に
関し、処理を細分化し平行動作を行う場合のデッドロッ
クの検出方式を提供するとともに、デッドロック検出後
のロールバック処理の簡単化を図る。 【構成】 資源に対応するエントリーをもつロック管理
テーブル部100と、そのテーブルにつながれ、資源要
求元をリストで表す資源管理要求識別子リスト部110
と、それらロック管理テーブル部と資源要求元識別子リ
スト部001,002を用いて排他制御を管理し、競合
する資源要求間でリストの資源要求元識別子の順番の逆
転を調べることによりデッドロックを検出するロック管
理部120とで構成する。共有ロックと排他ロックを区
別して扱う場合には、両ロックを資源要求元識別子リス
トの要素で識別し、共有ロックの内容で分解したロック
リスト転送しあい、資源要求元識別子の順番の逆転を調
べてデッドロックを検出する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の資源を複数の資
源要求元から共有する場合に、資源に対応するエントリ
ーを持つロック管理テーブルと、そのテーブルにつなが
れる資源要求元識別子のリストを用いて書き込み読み出
しを制御する排他制御を管理し、競合する資源要求元間
でリストの資源要求元識別子の順番の逆転を調べること
によりデッドロックを検出するデッドロック検出方式に
関する。
【0002】
【従来の技術】情報処理装置、例えば電子計算機におい
ては、例えばトランザクション処理のように複数の資源
を複数の資源要求元から共有する場合がある。このよう
な場合には、トランザクションの同時実行制御の方法が
システムの性能に大きく影響を与える。計算機における
トランザクション処理の同時実行制御を効率よく行う方
法を先に提案した(「トランザクション処理システム」
(特願平1−18790号)。
【0003】上記提案の方式では、同時実行制御を柔軟
に効率よく行うため、トランザクションをレコードのロ
ック、読み出し、内容変更、書き込みなどの基本処理単
位に分解し、効率的な並列(平行)処理のため、その基
本処理単位間のデータ及び制御の依存関係をグラフに
し、グラフに従って基本処理をサスペンド(中断)/レ
ジューム(再開)させ、複数のトランザクション処理を
同時に進めている。
【0004】この方式では、基本処理単位間で動的に最
適の実行順位が定まるので、ロック待ちの必要でない処
理を、処理のネックとなっているロックが解除されるま
で待つことなく、先行させることができ、ロックの依存
関係を考慮したスケジューリングをプログラムに盛り込
む必要がなくなる。また、アプリケーションごとにグラ
フを作成することができるため、汎用性も高くなる。
【0005】
【発明が解決しようとする課題】図25、及び図26は
計算機におけるトランザクション処理の説明図である。
図25に示すように、基本処理単位に分離する手段がト
ランザクションを、lockA、readA、upda
teA、write A、unlockA及びlock
B、readB、updateB、write B、
unlockBに分離する。そして、基本処理間のデー
タの処理及び依存関係に従って、基本処理を並列もしく
は、平行に更新するために、同期をとる手段syncを
介して、例えば、writeAとwriteBがそろっ
た時点でunlockに対する発火を行う。このように
して、トランザクション間での依存関係を並行もしくは
平行に実行する。
【0006】図26に示すように、トランザクション0
01はレコードAに対してlockA、readA、u
pdateA、write Aを行っている間に、レコ
ードBに対してlock B、readB、updat
eB、writeBを行うことができる。レコードAと
レコードBのwrite動作がそろった段階で、両者と
も、unlockされる(unlockA,unloc
kB)。
【0007】また、トランザクション002において
は、レコードAはトランザクション001において、ロ
ックAされているのでwait状態に接続されるが、レ
コードCについてはトランザクション001はロックし
ていないので、トランザクション001がレコードA、
レコードBに対する処理を行っていることと並行してレ
コードCに対する処理、すなわちlockC、read
C、updateC、write Cを実行する。この
レコードCに対するトランザクション002の処理はレ
コードAに対してトランザクション002がwaitに
保持されている間に実行される。次にトランザクション
001がレコードAに対する処理を終了し、レコードA
をunlockAすると、トランザクション002はこ
のレコードAに対してreadA、updateA、w
rite Aを行い、トランザクション002はレコー
ドA及びレコードCに対して同様にこれらの解放(un
lockA,unlockC)を行う。
【0008】上述のように、1つのトランザクションの
処理単位をlockA、readA、updateA、
unlockAのように分割すれば、トランザクション
001がレコードAに対する処理を実行している時間
に、ロックされていないレコードB及びレコードCに対
して、それぞれトランザクション001及びトランザク
ション002が処理の実行を並行して行うことができ
る。
【0009】しかし、このような平行動作を行うとする
と両方のトランザクションが待ち状態となるデッドロッ
クとなることがあり、これを回避することが問題となっ
ている。
【0010】すなわち、処理を細分化することにより、
デッドロックが発生する可能性があるにもかかわらず、
デッドロックが発生した場合にそれを検出する方法が明
確でなかった点、またデッドロックが検出された場合に
トランザクション単位でロールバックする方式も明確で
ない点が問題となっていた。
【0011】デッドロックの検出方法については、トラ
ンザクション処理だけでなく、OSなど一般の資源管理
においても問題となっていた。また、ロックには、ライ
トを含む排他ロックの他に、共有が可能なリードに対す
るロックすなわち共有ロックもある。共有ロックを許す
ことにより、競合資源要求元の同時に実行できる処理を
増やすことが可能になるはずである。ところが、従来提
案されている分散データベース・システムにおいては、
トランザクション毎の共有ロックについてのデッドロッ
クは検出していなかった。これによって、処理効率が向
上しないという問題がある。
【0012】本発明は、処理を細分化し平行動作を行う
場合のデッドロックの検出方式を提供するとともに、デ
ッドロック検出後のロールバック処理の簡単化を図るこ
とを目的とする。
【0013】
【課題を解決するための手段】図1及び図2は本発明の
原理説明図である。本発明は、複数の資源を複数の資源
要求元から共有する場合のロック管理装置を前提とす
る。
【0014】そして、まず、ロック管理装置内に、資源
に対応するエントリーをもつロック管理テーブル100
を有する。次に、このテーブルのエントリーにつながる
ロックリスト110を有する。このロックリスト110
は、前記ロック管理テーブル100のエントリーに対応
する資源の要求元を示す識別子001,002のリスト
である。
【0015】そして、さらに、このロック管理テーブル
100とリスト110を管理し、デッドロックを検出
し、デッドロックに伴うロールバック処理を実行するロ
ック管理部120を有する。デッドロックは、競合する
資源要求元間で、リストの資源要求元識別子の順番の逆
転を調べることにより検出する。
【0016】以上の本発明の構成において、ロックリス
ト110は、ある識別子がリストの先頭に来た場合に、
その識別子に対応する資源要求元の処理を開始させるた
め、その処理を指すポインタを持つ。また、ロック管理
部120は、ロック管理テーブルのエントリーを資源の
識別子からハッシュを使って求める。
【0017】一方、前記資源要求元をトランザクション
とした場合、本発明の構成において、該トランザクショ
ンを、例えばロック、ファインド、アップデイト、ウェ
イト、リプレース、アンロック等の基本処理単位に分解
し、その基本処理間のデータおよび制御の依存関係に従
って該基本処理を並列もしくは並行に行う。このとき、
基本処理単位を資源要求元とし、リストに要求元識別子
としてつながれたトランザクション識別子(トランザク
ションID:TID)をトランザクション内の基本処理
単位間で転送しあい、それぞれの基本処理単位でデッド
ロックを検出する。また、デッドロックに伴うロールバ
ック処理は、デッドロックに関係している基本処理単位
のグループのみすなわち、デッドロックの原因となるレ
コードに関係する部分のみでロールバックする。
【0018】また、本発明では、以上の構成に加えて、
あるトランザクション内の全てのロックが獲得できるま
で資源の変更を行わずに、デッドロックが生じた場合に
ロールバックできるように、同期を取るための同期機構
部を有する。ロック管理部は、同期機構部から同期獲得
の制御が来る前にロールバックの指示が来た場合には、
持っていたデータを捨てて新たなデータを持つロールバ
ック処理を行う。
【0019】さらに、本発明の構成において、資源要求
元はプロセスであっても、以上に示した処理と同様の処
理を実行することが可能である。一方、本発明の構成に
おける排他制御を管理するロック管理装置において、同
一のロック管理テーブルにより共有ロックと排他ロック
を区別して管理する場合には、前記リストの要素として
共有ロックと排他ロックを識別する要素を設け、ロック
管理部は、共有ロックの内容で分解したリストを転送し
あい、競合する資源要求元間で独立にリストの資源要求
元識別子の順番の逆転を調べることにより、デッドロッ
クを検出する。共有ロックと排他ロックを区別するリス
トの要素としては、識別用のidをリストに付ける方
法、タグで識別する方法が考えられる。
【0020】ロック管理テーブル100はレコードA、
レコードBへのポインタと、各レコードA、Bに資源要
求を行うトランザクションのリストであるロックリスト
あるいはTIDリスト110へのポインタとの対応関係
を与える。ロックリスト110は、当該レコードにつな
がれるトランザクションIDと、その次のトランザクシ
ョンIDへのポインタからなる要素がつながったもので
ある。図1に示すように、例えば、トランザクション0
01とトランザクション002があり、レコードAとレ
コードBとがデッドロックを起こす場合とは、レコード
Aに対応するトランザクションID(TID)のロック
リスト110では001が002により前にあり、レコ
ードBに対応するTIDのロックリスト110では00
2が001より前にある場合である。このような場合、
お互いどちらかのレコードを解放しない限り処理が前に
進まないことになり、デッドロックとなる。
【0021】このとき、各トランザクションのなかで複
数のレコードをロックする場合には、それぞれのロック
処理の間で通信を行いTID番号を転送しあうことによ
ってデッドロックを検出することができる。
【0022】また、トランザクション処理を基本処理単
位に分解してレコードの依存関係に従って並行に実行さ
せ、ロック処理を複数にすると、デッドロック検出処理
を並行に実行することができる。また、デッドロックが
検出された後のロールバック処理を、トランザクション
全体でなくデッドロックに関係する部分だけに限ること
が可能になる。すなわち、1回読み出したデッドロック
は、デッドロックに関係した場合には再度読み出す必要
があるが、デッドロックに関係ない部分はそのまま利用
することができ、ロールバック処理を軽くすることがで
きる。デッドロックに関係する部分と関係しない部分
は、基本処理間のグラフから導くことができる。
【0023】
【作用】図1に示した原理図において、トランザクショ
ン001がレコードAを使用し、002がレコードBを
使用し、次に001がレコードBを要求しているとき
に、さらに002がレコードAを要求すれば、001は
レコードBが002でunlockされるまでレコード
Aをunlockしないし、002はレコードAが00
1でunlockされるまで、レコードBをunloc
kしない。従って、001はレコードBの002による
unlock待ち、一方、002はレコードAの001
によるunlock待ちとなる。
【0024】デッドロック状態はロック管理テーブル1
00において、レコードAについてはセル001があ
り、レコードBについてはセル002の次にセル001
が接続されている。そこでレコードAを002が行おう
とするとき、レコードAのロックリスト110におい
て、001の後にセル002が処理されるので、トラン
ザクション002においてレコードAに関するロックリ
スト110のセル002より前にあるセル001がレコ
ードBのロックリスト110の中ではセル002の後に
あるときに、デッドロックになっていると判断する。も
し、デッドロックのときには、図2に示すように、セル
002によるレコードBについて002の処理をキャン
セルしてロールバックし、001をレコードA、レコー
ドBについて平行して処理を行うことにする。
【0025】本発明によれば、ロック管理テーブルと資
源要求元識別子のリストによってロックを管理すること
により、リスト順位のチェックによりデッドロックを検
出することが可能になる。デッドロックを発見するため
には最大でも、自分が要求している資源に対応してつな
がれたエントリー数にリストの長さをかけた回数だけ、
TIDのサーチを行えばよい。リストの長さは、高々資
源要求元の個数である。このことにより、要求に対する
アクノリッッジが返ってくるまでの時間間隔でデッドロ
ックを検出する従来の方法に比べ、高速で確実にデッド
ロックを発見することが可能になる。
【0026】特に、トランザクション処理において、基
本処理間のデータフローと制御フローに従って基本処理
を並列(並行)に動作させる方法に、本発明のデッドロ
ック検出方法を利用することにより、デッドロック検出
のための処理を負荷分散することができ、プロセッサを
複数用意することにより処理速度を向上させることがで
きる。トランザクションを基本処理に分解しておくこと
により、デッドロック検出後のロールバック処理におい
ても、トランザクション全体の処理をやり直す必要がな
く、デッドロックに関係する部分のみをやり直せばよ
い。このため、ロールバックのための処理を軽くするこ
とができ、処理性能を向上することが可能である。
【0027】また、ロック管理テーブルのエントリーを
デッドロック検出にそのまま使うことができるので、実
際のロック状態とデッドロック検出用のリストの食い違
いから生じる幻デッドロック(ファントムロック)を防
ぐことが可能になる。
【0028】また、共有ロックと排他ロックを区別し
て、デッドロックの検出を含めたロック管理をするため
に、ロック管理テーブルに接続されるリストの要素を共
有ロックと排他ロックに区別し、共有ロックに対して共
有できる資源要求元のリストをつなげ、共有ロックの共
有資源によってリストを分解してデッドロックを検出す
れば、共有ロックを許す、すなわち、1つの資源を複数
の資源要求元から同時にリード可能とすることができる
うえ、デッドロックの検出を並列化することができ、効
率よくデッドロックを検出することが可能になる。
【0029】
【実施例】以下、図面を参照しながら本発明の好適実施
例につき説明する。図3は、本発明の好適実施例のシス
テム構成図である。
【0030】本発明の好適実施例のシステムは、一般的
な電子計算機で実現することが可能である。ユーザ、イ
ンタフェース部300は、処理するトランザクション等
310を計算機内に取り込んだり、ユーザに処理結果を
提示する処理を行う。基本処理単位依存関係グラフ部3
20は、トランザクション処理を基本的な処理単位に分
割し、グラフとして表現したものを格納する部分であ
る。予め基本処理単位依存関係グラフを用意しておいて
もよいし、トランザクションが入力された時点にグラフ
を生成してもよい。
【0031】ユーザインタフェース部300を介して入
ってきたトランザクション310は、基本処理単位依存
関係グラフ部320内にあるグラフ中の対応するノード
を発火する。
【0032】サスペンド/レジューム機構330は、グ
ラフのノードが発火しているか否かをチェックし、発火
しているグラフ・ノードをグラフ実行部340に知らせ
る。グラフ実行部340は、サスペンド/レジューム機
構部330の指示によりグラフのノードにあるトランザ
クションを実行する。グラフ中のデータベース・アクセ
ス・ノードにあるトランザクションを実行する場合に
は、データベース検索/更新部350にアクセス要求を
出す。また、排他制御でロックが必要な場合には、ロッ
ク機構部360にロック要求を出す。ロック機構部36
0は、ロック要求に従って、ロック管理テーブルおよび
TIDリスト部370を操作する。
【0033】図4は、ロック機構部360が実行するロ
ック処理の動作フローチャートである。まず対象のレコ
ードから適当なハッシュ関数を用いてロック管理テーブ
ルのエントリーを求める(S410)。そのエントリー
にまだ1つもTIDがつながれていない場合には(S4
20のyes)、自分のTIDを先頭につなげて(S4
21)、そのレコードのロックが獲得できたとして(S
422)処理を終了する。既にエントリーに別のトラン
ザクションのTIDリストがつながれている場合(S4
20のno)には、その一番最後に自分のTIDをつな
げる(S430)。自分より前にあるTIDが同じトラ
ンザクション内の別のロック処理のTIDリストにおい
て自分より後ろにないことを確認するため、自分より前
にあるTIDのリストをそのトランザクション内の別の
ロック処理に転送する(S440)。転送されたロック
処理では、前述の自分の前にあるTIDと転送先のロッ
ク処理(たとえばlockB)のTIDリストの要素を
順に比較して、該当するTIDの順番が逆転しているか
チェックする(S450)。逆転している場合(S46
0のyes)にはロールバック処理を行う(S47
0)。ロールバック処理については、後述する。逆転し
ていなかった場合は(S460のno)、転送先のリス
トの前後関係を元のエントリーのリストに反映し、転送
先のリストの前後関係において逆転がなかったことをも
とのロック処理(lockA)に知らせる。なお、ロッ
ク管理テーブルのエントリーを操作する場合には、最低
限エントリー単位にロックをかける必要が有る。
【0034】図5は、アンロック処理の動作フローチャ
ートである。まず、レコードに対応するエントリーをハ
ッシュで探す(S510)。次に、エントリーの最初に
つながれているはずの自分のTIDを取り除き(S52
0)、もし次にTIDがつながっている場合には(S5
30のyes)、そのTIDで示されるトランザクショ
ンがロックを解除されるのを待っているはずであるか
ら、先頭のトランザクションを実行可能とする(S54
0)。このため、TIDのリストには、そのTIDが先
頭になった場合に実行可能となる処理(トサンザクショ
ン)へのポインタを持つ。リストが残っていない場合
(S530のno)にはアンロック処理を終了する。
【0035】前述のロールバック処理(S470)は、
トランザクション全体を対象とするのではなく、デッド
ロックの原因となったレコードに関する部分のみロール
バックする。このため、実際にレコードの書き換えは、
トランザクション内のすべてのロックが獲得できてから
するものとし、全体のロックが獲得できるまで待たせる
ための同期機構(sync)を入れ、その同期機構から
制御が来る前にキャンセルが来た場合には、データを捨
てる機能に対しても同期が成立するのを待つ待ち機能
(wait)を利用する。
【0036】次に例を用いてデッドロック検出と、それ
にともなうロールバック処理の説明を行う。TIDが0
01と002というトランザクションが、レコードAと
Bをそれぞれ更新する場合を考える。このときの初期状
態(状態(1))を図6に示す。それぞれのサークルは
処理を表し、その間の破線の矢印は、データや制御が流
れる方向を示している(実際にはまだ流れていない)。
【0037】状態(1)では、トランザクション001
と002があって、それぞれがレコードAとBに対して
処理を行う場合、各処理を処理単位毎に分けたフローを
示している。レコードAとBは、記憶装置内に入ってい
る。まず、レコードAをトランザクション内に取り込
み、ロックし、処理(+30)を行ってから、wait
状態に入る。そして処理した結果をレコードAと置き換
えた(replace)後にロックを外す(unloc
k)。トランザクション内のsyncは同期を取るため
の同期制御部であり、ロックをかけたときに図示しない
同期回路に同期の要求を実行させる。この同期制御部s
yncは、レコードAとレコードBに対するlock処
理(lockA,lockB)が同期の要求を行ったと
き、データがそろった段階でwaitを外すことができ
るデータ駆動形の同期回路を制御する。ロックを外す場
合すなわち、unlockA,unlockBの処理の
同期も同様である。図6は初期状態であるから、資源に
対応するデータとTIDリストへのポインタからなるロ
ック管理テーブル100の内容は空の状態である。レコ
ードA及びレコードBも記憶装置に格納される。
【0038】次に、初期状態から図7の状態(2)に移
る。レコードAに対して、トランザクション001がた
またま処理を行う状態で、TID001のトランザクシ
ョンがレコードAにロックをかけているところである。
【0039】ハッシュに従ってロック管理テーブル10
0のエントリーを探すが、状態(2)の場合、そのエン
トリーがないためエントリーを作る。すなわち、まずT
IDリスト110の先頭に001を置く。ロック管理テ
ーブル100のdata領域には、記憶装置内のレコー
ドAのポインタが入り、リスト領域には、TID001
が入っているセル(以下、セル001という)へのポイ
ンタが入る。セル001の中は3つの部分があり、TI
D001と処理へのポインタおよび次のセルへのポイン
タが入る。次のセルがなければNIL(/印)となる。
【0040】これにより、たまたま001がレコードA
をアクセスしたとすると、セル001がロック管理テー
ブル100に書き込まれることにより、トランザクショ
ン001において、まず、レコードAが他のトランザク
ションからアクセスされないように排他制御すなわちロ
ックをかける動作に入る。また、レコードAにロックを
かけるとsyncに同期要求を出す。しかし、lock
Bの処理制御回路のsyncに対する同期要求がなけれ
ば、syncは発生しない。
【0041】次に図8の状態(3)に移る。図7の状態
(2)の続きで、トランザクション001が同期回路に
同期要求した後レコードAの内容300を見つけるため
に記憶回路にアクセスしてレコードAを見つけ、読み込
む(findA)。そして、今の処理が、例えば、この
300に30を加えるという動作だとすると、その処理
を行うために、Aというレコード内の300を処理プロ
セッサ(図示せず)にわたす。
【0042】このような動作をしている途中で、たまた
ま、今度は、トランザクション002がレコードBに対
して処理を行う要求が行われたとする。TID002の
トランザクションも同時に実行可能であるからり、レコ
ードBのロックを獲得に行く。レコードBは他からロッ
クがかかっていないので、TID002のトランザクシ
ョンはレコードBのロックを獲得できる。すなわち、ロ
ック管理テーブル100のレコードBのエントリーにお
いて、データ領域にはレコードB(200)の入ってい
る領域をアクセスするポインタが格納され、リスト領域
の先頭には、トランザクション002が行うレコードB
の処理をアクセスするためのポインタが格納してあるセ
ル002が格納される。すると、トランザクション00
2では、このセルをつくった後、Bに対して排他制御を
行うため、ロックBを行って同期制御部syncに対し
て同期の要求を行う。この場合、TID001と002
のそれぞれのトランザクションは、処理を同時に実行す
る。
【0043】次に、図9の状態(4)に移る。図8の状
態(3)から、図9の状態(4)に移った段階で、00
2はレコードBの処理を続行しており、レコードBを見
つけて(findB)、これに+20を足す処理を行
い、その結果(220)が出た段階で、wait状態に
入るものとする。
【0044】一方TID001では、レコードAが+3
0されて330になりwait状態になっている。これ
らの更新値は、トランザクション内のすべてのロックが
獲得されるまで、記憶装置に書き込まれない。これらの
処理と平行して、たまたまTID001のトランザクシ
ョンでは、レコードBに対してアクセス要求を行ったと
する。これによってレコードBのロックを獲得する処理
を開始する。
【0045】図9に示すようにロック管理テーブル10
0のレコードBに対応するリストの先頭セル、すわなち
TID002のトランザクションに対応するセル002
の3番目のフィールドはnilから次に要求したTID
001のトランザクションに対応するセル001へのポ
インタに変更される。このことは、レコードBに対して
は、現在、TID002のトランザクションが処理して
おり、このレコードBに対してトランザクション002
がロックを行っているため、このロックに対して、un
lockBが実行されない限り、トランザクション00
1はレコードBに対して要求したにもかかわらず実行さ
れないで待ち状態となることを示している。すなわち、
トランザクション001の中のレコードBに対する処理
が待ち状態となる。
【0046】それと同時に、デッドロックを検出するた
め、TIDリストに入っているTID番号が同じトラン
ザクションが他のTIDリストで自分より後ろにないか
どうか確認する。状態(4)の場合には、同じトランザ
クションの中でレコードAのロックをしているだけで、
しかもこの時点では、そのTIDリストはセル001だ
けであるため、デッドロックは発生しない。
【0047】図10の状態(5)は、さらにTID00
2のトランザクションのレコードAに対するロック獲得
処理がたまたま始まった状態である。すると、ロック管
理テーブル100のレコードAに関するリストは001
がAのレコードに対して処理をしており、まだunlo
ckしていない状態であるから、この001に関するセ
ルの3番目のフィールドがnil状態から002のセル
へのポインタが入る状態に変化し、002のセルが00
1のセルの後に接続されることになる。このとき、レコ
ードAのリストではセル001がセル002の前にあ
り、レコードBのリストではセル002がセル001の
前にあるため、順番の逆転が起こっており、デッドロッ
クとなる。
【0048】すなわち、トランザクション001がレコ
ードAを使用し、002がレコードBを使用し、次に0
01がレコードBを要求しているときに、さらに002
がレコードAを要求すれば、001はレコードBが00
2でunlockされるまでレコードAをunlock
しないし、002はレコードAが001でunlock
されるまで、レコードBをunlockしない。従っ
て、001はレコードBの002によるunlock待
ち、一方、002はレコードBのunlock待ちとな
る。
【0049】このデッドロックを機械が認識するために
は、ロック管理テーブル100のセルのつながり、すな
わちレコードAに対してはTID001のセルの後にT
ID002のセルが接続され、一方レコードBに関する
リストでは、TID002のセルの後、TID001の
セルが接続された状態、すなわち逆転の状態を見つけれ
ばよいことになる
【0050】そのためには、図9の状態(4)から図1
0の状態(5)に移る段階、レコードAに対するリスト
において、すなわちTID002のセルがTID001
のセルの後にポインタで接続された場合に、TID00
2K トランザクションの左側のAが右側のB、すなわ
ちロック管理テーブル100上では、レコードBに接続
された先頭のTID002のセルが指し示す処理フロー
の制御手段(lockB)に対して、レコードAに関す
るリストのTID002の前のセルのTID001と同
じ001のセルがロック管理テーブルの他の領域中のセ
ル002のうしろ側に接続されているかどうか、すなわ
ちセル002の後にポインタでセル001が接続されて
いるかどうかを確認する。これがOK?矢印であり、O
Kかどうかの確認を意味する。この場合、ロック管理テ
ーブル100の中をハッシュ関数を介して調べると、セ
ル002の後にセル001が接続されているので、デッ
ドロックであるということを示すNG(Not goo
d)信号をロックBの制御回路からロックAの制御回路
に応答として示す。これがOK?に対するNGである。
【0051】このようにして、デッドロックが確認され
ると図10の状態(5)から図11の状態(6)に移
る。すなわち、ロールバック処理に入る。ロールバック
処理は図10の状態(5)において、NG信号を出した
トランザクション002のBの処理の実行をキャンセル
することになる。
【0052】まず、waitの入力である220という
データをキャンセルし、レコードBのTIDリストから
セル002を取り除く。これにより、セル001が先頭
にきて、図11の状態(6)となる。そうするとまたこ
の段階でデッドロックがあるかどうかを確認することに
なる。
【0053】すなわち、TID001のトランザクショ
ンが行っているレコードBの処理のロック制御が同じT
ID001のトランザクションのレコードAの処理を行
う制御回路に対してレコードBに関する領域の001の
セルの前にあるセル(この場合,なにもない)が、他の
領域たとえばレコードAの領域の001のセルの後に接
続されているかどうかの確認を行うが、この場合、その
様なTIDはないので、同図に示すように、OK?に対
してOKという応答がロックA側からロックB側に渡さ
れている。したがって、デッドロックがない状態である
から、処理の実行が更に行われる。すなわち、レコード
Bの内容200(220ではない)に50が加えられ
る。
【0054】次に図12の状態(7)では、TID00
1のトランザクションでレコードAとレコードBの両方
のロックが獲得できたので、同期のためのsyncが発
火し、その出力により待たされていた330のデータと
250のデータが書き換え処理に渡される。すなわち、
レコードAもレコードBもwait状態をはずすことが
可能になる。
【0055】また、TID002のトランザクションで
は、ロールバックしたレコードBのロック獲得処理を再
開する。この場合も、既にTIDリストに別のTID
(セル001)がすでに入っているため、待ちにはいる
が同時にデッドロックの検出処理を開始する。すわな
ち、セル002の前にセル001があるか否か、その0
01が同じトランザクション002のAに対して、セル
002の後にセル001があるか否かの確認を行う。こ
の場合にはセル001が接続されていず、順番の逆転が
起きていないので、デッドロックが生じない。そこでO
K?に対してロックA制御はロックB制御に対してOK
信号を出す。
【0056】図13の状態(8)では、TID001の
トランザクションでレコードAの書き換えとレコードB
の書き換えを行い、両方の処理の終了の同期を取る(s
ync)。これは、書き換え処理中に異常があった場合
に、リカバーするためである。両方の書き換えが無事終
了する。この結果、レコードAとレコードBの演算結果
の330と250が記憶装置に書き込まれることにな
る。
【0057】次の図14の状態(9)では、レコードA
とレコードBがunlockされる。管理テーブル上の
先頭セルが消えて、TID002のトランザクションの
動作がレコードAに対してもBに対しても実行されるこ
ととなる。すなわち、A(330)+10=340とB
(250)+20=270の動作が実行される。そし
て、それぞれ340と270になった状態でwait状
態に入るが、お互いにデータがそろっているため、それ
ぞれの結果はreplaceされ、unlockされる
ことになる。
【0058】以上の処理によって、トランザクション0
01および002についてレコードA、レコードBに対
する処理が実行可能になる。次に3つ以上のトランザク
ションがデッドロックを起こす場合について説明する。
このとき、TIDのリストに直接レコードを要求してい
るトランザクションのセルのみをつなげ、1つのトラン
ザクションに関係するレコードのリスト内の順序関係の
逆転を調べただけではデッドロックが発見できない場合
がある。
【0059】図15はデッドロックが発見できない3す
くみの場合の説明図である。TID003のリストをロ
ック管理テーブルのレコードAのエントリーにつなげる
とデッドロックになるのだが、それぞれのトランザクシ
ョンが利用しているレコードのリストを調べただけでは
そのデッドロックは検出できない。
【0060】しかし、このような場合、各トランザクシ
ョンがTIDを転送し、転送先で逆転が発見されなかっ
た後、転送先TIDリストの前後関係を、そのレコード
のエントリーのTIDリストに反映させることにより、
3つ以上のトランザクションによるデッドロックも検出
することができる。
【0061】例えば、図15の場合、TID002のト
ランザクションがレコードCのロックを要求して、レコ
ードBのロック処理にTID003を転送し、逆転して
いないことを確認した後、TID002とTID001
の順序関係をレコードCのエントリーに反映させるた
め、図16のようにセル002の後ろにセル001をつ
なげる。こうしておくことにより、次にTID003の
トランザクションがデッドロックを検出することができ
る。このときつなげたセルが先頭にきた時実行すべき処
理のポインタ(セルの第2領域)をnilにしておく。
【0062】たまたまセル001がレコードBのエント
リーにつながっていなかった場合には、TID002の
デッドロック検出処理のときにはなにも行われないが、
TID001がレコードBを要求した後、レコードAの
エントリーにTID001の前にTID002を入れる
ため、TID003がレコードAを要求したところでデ
ッドロックが検出される。
【0063】図17には3つ巴の場合の変形例を示す。
トランザクション001はレコードAをアクセスし、0
02はレコードBをアクセスし、003はCをアクセス
しており、そのあとで、たまたま、レコードBに対して
は001が要求し、レコードCに対しては002が要求
したとする。すると、Bに対しては、002の処理に対
して、unlockした後でないと、001はレコード
Bに対する処理を行うことができない。同様に、002
はレコードCに対して003のCに対する処理が終わら
なければ、実行するとができない状態にある。すなわ
ち、この段階では、001はレコードBのunlock
を待ち、002はレコードCのunlockを待ってい
ることになる。
【0064】このような状態で、更にレコードAに対し
て、たまたま、トランザクション003が要求したとす
ると、003は001のレコードAのunlock待ち
となる。すると、001は、002のレコードBに対す
るunlock待ちとなり、その002は003のレコ
ードCに対する処理を待ち、さらにその003は、00
1のレコードAの処理待ちとなる。すなわち、これが3
つの場合のデッドロックである。
【0065】このような場合に、2つの場合と違ってT
IDのセルの逆転の関係を調べただけでは、デッドロッ
クの検出を行うことができない。そのため、図に示すよ
うに、仮想的なセルを挿入する。すなわち、レコードA
に関する管理テーブルのリストの先頭に、002のセル
を図に示すようなポインタでつなげ、レコードBのリス
トの先頭には、003のセルを図に示すようなポインタ
でつなげておく。このようにすると、例えば、レコード
Aのリストに関してセル003がつながれた段階で、同
じトランザクションすなわち003に関して例えば、レ
コードAに関する003よりも前にあるセル接続すなわ
ち002と001の接続関係が003よりも後ろにある
かどうかのチェックを行う。この場合、レコードBに関
して003の後に002と001の接続があるので、デ
ッドロックの検出を行うことが可能となる。
【0066】本発明のデッドロック検出方式は、トラン
ザクションによる資源利用だけではなく、例えば、OS
におけるプロセスの資源利用等にも適用できる。図18
はOSの資源管理に適用した場合の好適実施例である。
【0067】資源としてはメモリ(ページアドレス)、
プロセッサ、I/Oなどをロック管理テーブルのエント
リーとして設け、プロセスID(PID)を資源要求元
識別子としてリスト状につなげる。リストには、前述の
トランザクションについての実施例と同様にそのPID
が先頭になった場合に実行可能となるプロセスを差すポ
インタを持つ。ロック、アンロックの手順は、上述のレ
コードを資源に、TIDをPIDに変えたものと同じと
なる。
【0068】以上に説明したロック管理手法で取り扱え
るロックの種類は排他ロックだけである。ロックには排
他ロックの他に共有ロックもある。共有ロックとは、r
eadのように資源を共有できるロックである。共有ロ
ックを許すことにより、競合資源要求元の同時に実行で
きる処理数を増やすことが可能になる。
【0069】排他ロックと共有ロックの両方を扱う場
合、一般的に考えられる方法として、共有ロックと排他
ロックをそれぞれ別に管理する方法を採る。つまり、そ
れぞれ別のロック管理テーブルとそれにつながるリスト
を持つようにする。その場合、デッドロック検出は、そ
れぞれのロックの内容をトランザクション毎にまとめて
から行う。
【0070】図19は、このような手法、つまり、共有
ロックと排他ロックを別に管理する場合のロック管理装
置のシステム構成図である。ロック管理装置1900内
には、共有ロック管理機構So1910と排他ロック管
理機構Eo1920があり、それぞれ共有ロック管理用
ロック管理テーブルTs1915と排他ロック管理用ロ
ック管理テーブルTe1925を持つ。それらの管理テ
ーブルには、共有ロック用のリストLs1916と排他
ロック用のリストLe1926がつながっている。リス
トの接続/解放機能Fo1940は共有ロック管理機構
So1910と排他ロック管理機構Eo1920の各々
が持つ。デッドロック検出機構Do1930はそれらの
管理機構とは独立になっており、共有ロック管理用ロッ
ク管理テーブルTs1915と排他ロック管理用ロック
管理テーブルTe1925の2つのテーブルを見てデッ
ドロックを検出する。
【0071】このシステムでは、デッドロック検出にお
いてロック管理テーブルのエントリーを直接使わないこ
とになるので、図3、図18で示したデッドロック検出
手法で防げる幻デッドロック(ファントムロック)が防
げなくなる。
【0072】そこで、排他ロックと共有ロックを1つの
管理テーブルで管理することを考える。その場合、1つ
のエントリーに接続されるリストの中には、排他ロック
と共有ロックが混在することになる。それらをなんらか
の形で区別する(例えば、タグを用いる)。この場合、
共有ロックは、排他ロックが外れている場合には複数の
資源要求元に資源を供給できるので、1つのエントリー
につながれた1本のリストの中に、共有ロックは高々1
個現われることになる。共有ロックの後で排他ロックの
要求がきて、さらに再度共有ロックの要求がきた場合に
は、共有ロックの中に更にリストを待ち、そのリストに
後できた要求を加えるようにする。
【0073】例えば、idxの資源要求元から共有ロッ
クがきた場合をr(x),idyの資源要求元から排他
ロックがきた場合をw(y)と表現すると、ある資源A
に r(1)→w(2)→r(3)→w(4)→r(5) のような順番で要求がきた場合には、その資源Aに対す
るロック管理テーブルのエントリーにつながれるリスト
は、 A:〔r{1,3,5},w{2},w{4}〕 となる。あるいは、資源Bに w(1)→r(2)→r(3)→r(4)→w(5) のような順番で要求がきた場合には B:〔w{1},r{2,3,4},w{5}〕 となる。資源Aに対するw(2)の排他ロックの要求
は、id1,3,5の処理が終わって共有ロックが解除
されたところでid2に獲得されることになる。
【0074】ここで、ロック要求毎にエントリーにつな
がれたリストの要素の順位逆転からデッドロックの検出
をする。ただし、共有ロックの場合には、リストの中に
リストが存在するので、その扱いを検討する必要があ
る。ここでは、共有ロックのリストを分解したものをそ
れぞれ別のリストとしてデッドロックを検出する。
【0075】つまり、 A:〔r{1,3,5},w{2},w{4}〕 というリストは、デッドロック検出時に
【0076】
【数1】
【0077】という3つのリストに分解する。同様に、 B:〔w{1},r{2,3,4},w{5}〕 についても
【0078】
【数2】
【0079】に分解する。ただし、この分解はデッドロ
ック検出時にローカルに行われるものであり、ロック管
理テーブルのエントリーに接続されたリストについては
そのままである。すなわち、デッドロック検出時に行わ
れる上記分解は、たとえば、CPUで行われ、ロック管
理テーブルのリストの構造は変化させない。
【0080】デッドロックの検出時には、この分解され
たリスト間で、順位の逆転を検出する。この例の場合に
は、 外1 のr(5),w(4)と 外2 のr
(4),w(5)
【0081】
【外1】
【0082】
【外2】
【0083】の間で順位の逆転が起こっていることから
デッドロックが発生していることが分かる。このような
デッドロックの検出は資源要求毎にロック管理装置を用
意して、並列に検出することができる。共有ロックに対
しても排他ロックに対しても同じロック管理装置を資源
要求毎に用意し、1つのロック管理テーブルにつながれ
たリストを共有ロックのリスト要素に対応して分解して
相互に通信しあいながらデッドロックを検出する。
【0084】図20は、共有ロックと排他ロックを扱う
場合の好適実施例のシステム構成図である。ロック管理
装置M2000は、共有/排他ロック管理機構SE20
10(2010ー1,2010−2,2010−3,・
・・)と共有/排他ロック管理用ロック管理テーブルT
se2020およびそのテーブルに接続された共有/排
他ロックリストLse2030からなる。共有/排他ロ
ック管理機構SE2010は、資源要求元に対応して、
ロック管理装置内に複数存在することになる。リスト接
続/解放機能F2015は、これまでの装置(図19)
と同様にそれぞれの共有/排他ロック管理機構SE20
10内にある。デッドロック検出機能D2016も、そ
れぞれの共有/排他ロック管理機構SE2010内に置
かれる。このようにすることにより、デッドロックは並
列に検出することができる上、幻デッドロックの発生を
抑えることが可能となる。
【0085】図21は、共有/排他ロック管理用ロック
管理テーブルTse2020と共有/排他ロックリスト
Lse2030の好適実施例である。 A:〔r{1,3,5},w{2},w{4}〕と、 B:〔w{1},r{2,3,4},w{5}〕の状態
を示している。
【0086】共有ロックのためのリストを実現するた
め、2種類のリスト要素を用意している。共有/排他ロ
ック管理用ロック管理テーブルに直接つながるロックリ
スト要素LLx(xは識別コード)は、タグ、idリス
トの先頭へのポインタ、次のロックリストへのポインタ
の3フィールドからなる。タグは、共有ロックか排他ロ
ックかを区別するためのもので、同図では共有ロックを
rで、排他ロックをwで表している。また、ロックリス
ト要素の2番目のフィールドから指されるidリストi
lxは、id番号、次のidリストへのポインタの2フ
ィールドからなる。共有ロックの場合には、共有するi
dがこのリストとしてつながれる。ロック管理テーブル
につながれる第1段目のリストである部分ロックリスト
はリストの要素ll,ll,ll,ll,ll
,llからなり、共有ロックの場合は、第2段目の
リストであるidリストであるil,il,i
,ilil,ilが部分ロックリストの第2
フィールドからポイントされるので、結果として、前述
したようにリストの中にリストが形成されることとな
る。排他ロックの場合には、idリストの要素数は必ず
1であり、その要素の次のidリストを指すポインタに
は、nilが入る(図では、斜線でnilを表してい
る)。排他ロックの場合には、idリストをつなげず、
直接2番目のフィールドにidを入れる方法も考えられ
る。
【0087】図22は、このようなロック管理テーブル
2020とロックリスト2030を使用した場合の、リ
スト接続/解放機能F2015におけるリスト接続処理
の動作フローチャートである。
【0088】まず、要求レコードに対応するレコードの
エントリーをハッシュで探す、すなわちレコードAをポ
イントしているロック管理テーブルのエントリーのアド
レスをハッシュ関数を用いて探す(S2200)。次
に、そのレコードへのロック要求が共有ロックと排他ロ
ックのどちらかを判定する(S2210)。共有ロック
の場合には(共有)、エントリーにつながれたリストの
中から共有ロックを探す(S2220)。共有ロックが
存在する場合(S2221のあり)には、共有ロックの
idリスト(第2段目のリスト)の最後に要素をつな
げ、資源要求元idをフィールドに入れる(S223
0)。例えば、共有ロックのidリストil,i
,ilの最後に1つの要素(資源要求元idと次
の要素へのポインタからなる)をつなげる。一方、共有
ロックが存在しない場合(S2221のなし)には、ロ
ック管理テーブルのエントリーにつながれた部分ロック
リスト(第1段目のリスト)の最後に要素をつなげ(S
2240)、タグのフィールドに共有を示すタグを入れ
(S2241)、idリストをつなげて資源要求元id
をそのフィールドに入れ(S2242)、処理を終了す
る。例えば、リストの要素llが存在しない時、リス
トの要素llのnilを外し、llに次のリストの
要素をポインタでつなげている。
【0089】一方、排他ロックの場合(S2210の排
他)には、エントリーに繋がれたロックリストの最後に
リストをつなげ(S2250)、その中のタグのフィー
ルドに排他を示すタグを入れ(S2251)、idリス
トをつなげて資源要求元idを入れ(S2252)、処
理を終了する。
【0090】以上の処理により、図21に示したような
ロック管理用のリストが生成される。図23は、リスト
解放処理の動作フローチャートである。
【0091】リストを解放する場合には、まず、レコー
ドに対応するエントリーをハッシュで探す(S230
0)。例えば、レコードAをポイントしているロック管
理テーブルのエントリのアドレスをハッシュ関数を用い
て探す。そして、リストの先頭の要素を見て(S231
0)、共有か排他かを判定する(S2311)。共有の
場合(共有)には、先頭要素llにつながれたidリ
ストil,il,ilの中の先頭の要素il
外し(S2320)、結果としてidリストが空になっ
たか否かを判定する(S2321)。空でない場合(N
o)には処理を終了し、idリストの要素il,il
を要素llのidフィールドにつなげる。空の場合
(Yes)には、該エントリーにつながれたロックリス
トの先頭の要素llを外し(S2322)、要素ll
をロック管理テーブルのエントリーにつなげて処理を
終了する。
【0092】一方、排他ロックの場合(S2311の排
他)には、エントリーにつながれたロックリストの先頭
の要素を外して(S2330)、処理を終了する。例え
ば、要素llを指すポインタを要素llを指すよう
に変更する。
【0093】以上の処理によって、ロックを解放するこ
とができる。図24は、デッドロック検出処理の動作フ
ローチャートである。デッドロックを検出する場合に
は、対応する資源要求元のエントリーのリストを取って
きて(S2400)、そのリストに共有ロックを含むか
否かを判定する(S2410)。たとえば、第2図にお
いて、レコードAのエントリにつながれたロックリスト
ll,ll;IDリストil,il,il
ililしを全てとってきて、そのリスト中に共有ロ
ックを含むかを判断する。含む場合には(Yes)、共
有ロックのidリストに対応してロックリストをたとえ
ば前述の分解式に示すように分解する(S2420)。
その後ロックリストを転送し(S2430)または共有
ロックを含まない場合(S2410のNo)には、ただ
ちにロックリストを転送する(S2430)。そして、
他から転送されたロックリストとのidの順位と自分の
idの順位を比較し(S2440)、順位の逆転がある
か否かを判定する(S2450)。逆転がある場合(Y
es)にはデッドロックと判断し、逆転がない場合(N
o)にはS2400の処理に戻る。
【0094】以上の処理により、共有ロックと排他ロッ
クの両方を扱う場合のデッドロック検出が可能になる。
【0095】
【発明の効果】本発明によれば複数の資源を複数の資源
要求から共有する場合、ロック管理テーブルと資源要求
元識別子リストとを用いて、資源要求元識別子リストの
順位の逆転をチェックすることにより、デッドロックを
高速にかつ、確実にかつリアルタイムに検出することが
できる。
【0096】特にトランザクション処理において基本処
理間のデータ処理と制御フローに従って、基本処理を並
列に動作させる方法に、本発明とのデッドロック検出手
段を用いることによって、デッドロック検出のための処
理を負荷分散するとができる。
【0097】また、トランザクションを 基本処理単位
に分解しておくことにより、デッドロック検出後のロー
ルバック処理においてもトランザクション全体の処理を
やり直す必要がなくデッドロックに関係する部分のみや
り直せばよい。このため、ロールバックのための処理を
軽くすることができ処理性能を向上させることができ
る。
【0098】さらに、同一のロック管理テーブルによ
り、共有ロックを排他ロックと区別して管理することが
可能になり、共有ロックと排他ロックが混在する処理に
おけるデッドロックを容易に検出することができる。こ
れによって、全体としての処理効率は向上する。
【図面の簡単な説明】
【図1】本発明の原理説明図(その1)である。
【図2】本発明の原理説明図(その2)である。
【図3】本発明の公的実施例のシステム構成図である。
【図4】ロック処理の動作フローチャートである。
【図5】アンロック処理の動作フローチャートである。
【図6】初期状態(1)の説明図である。
【図7】状態(2)の説明図である。
【図8】状態(3)の説明図である。
【図9】状態(4)の説明図である。
【図10】状態(5)の説明図である。
【図11】状態(6)の説明図である。
【図12】状態(7)の説明図である。
【図13】状態(8)の説明図である。
【図14】状態(9)の説明図である。
【図15】3すくみの場合の説明図である。
【図16】3すくみの場合のデッドロック検出の説明図
である。
【図17】3すくみの場合の変形例の説明図である。
【図18】OSの資源管理の公的実施例の説明図であ
る。
【図19】共有ロックと排他ロックを別に管理する場合
のロック管理装置のシステム構成図である。
【図20】共有ロックと排他ロックを扱う好適実施例の
システム構成図である。
【図21】好適実施例の共有/排他ロック管理用ロック
管理テーブルとリストの説明図である。
【図22】リスト接続処理の動作フローチャートであ
る。
【図23】リスト解放処理の動作フローチャートであ
る。
【図24】デッドロック検出処理の動作フローチャート
である。
【図25】計算機におけるトランザクション処理を示す
図(その1)である。
【図26】計算機におけるトランザクション処理を示す
図(その2)である。
【符号の説明】
100 ロック管理テーブル 110 TIDリスト 120 ロック管理手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 赤星 直輝 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 複数の資源を複数の資源要求元から共有
    する場合に、資源に対応するエントリーを持つロック管
    理テーブル(100)と、 前記ロック管理テーブルのテーブルにつながれる資源要
    求元識別子リスト(110)と、 前記ロック管理テーブルと前記資源要求元識別子リスト
    を用いて排他制御を管理し、競合する資源要求元間でリ
    ストの資源要求元識別子の順番の逆転を調べることによ
    りデッドロックを検出するロック管理手段(120)を
    含む、 ことを特徴とするデッドロック検出方式。
  2. 【請求項2】 前記資源要求元識別子リストに、ある識
    別子がリストの先頭にきた場合に、その識別子に対応す
    る資源要求元の処理を開始させるためのポインタを、更
    に含む、 ことを特徴とする請求項1記載のデッドロック検出方
    式。
  3. 【請求項3】 前記ロック管理テーブルのエントリーを
    資源の識別子からハッシュを用いて求める、 ことを特徴とする請求項1記載のデッドロック検出方
    式。
  4. 【請求項4】 前記資源要求元をトランザクションと
    し、該トランザクションを基本処理単位に分解し、その
    基本処理間のデータおよび制御の依存関係に従って基本
    処理を並列もしくは並行に実行することを特徴とする請
    求項1記載のデッドロック検出方式。
  5. 【請求項5】 トランザクション内の基本処理単位を資
    源要求元として、トランザクション内の基本処理単位間
    でリストに要求元識別子としてつながれたトランザクシ
    ョン識別子を転送しあい、それぞれの基本処理単位でデ
    ッドロックを検出することを特徴とする請求項4記載の
    デッドロック検出方式。
  6. 【請求項6】 デッドロックに伴うロールバック処理
    を、デッドロックの原因となったレコードに関係する部
    分のみでロールバックすることを特徴とする請求項4記
    載のデッドロック検出方式。
  7. 【請求項7】 あるトランザクション内のすべてのロッ
    クが獲得できるまで資源の変更を行わずに、デッドロッ
    クが生じた場合にロールバックができるように同期を取
    るための同期機構を、さらに含む、 ことを特徴とする請求項4記載のデッドロック検出方
    式。
  8. 【請求項8】 前記同期機構から制御がくる前にロール
    バックの指示がきた場合に持っていたデータを捨てて資
    源に対する更新を行わないwait機構を、さらに含
    む、 ことを特徴とする請求項7記載のデッドロック検出方
    式。
  9. 【請求項9】 前記基本処理単位は、ロック、ファイン
    ド、アップデイト、ウェイト、リプレース、アンロック
    からなることを特徴とする請求項4記載のデッドロック
    検出方式。
  10. 【請求項10】 前記資源要求元がプロセスであること
    を特徴とする請求項1記載のデッドロック検出方式。
  11. 【請求項11】 3個のトランザクションが並行して動
    作する場合、特定のレコードのリストに関して資源要求
    元リストの要素iがつながれる前に、要素jがつながれ
    る場合には、i,j以外の要素kが仮想的にロック管理
    テーブルからポイントされるように接続してできる仮想
    的なリスト構成を作成し、資源要求元識別子の要素の逆
    転を検出することを特徴とする請求項1記載のデッドロ
    ック検出方式。
  12. 【請求項12】 共有ロックと排他ロックを前記資源要
    求元識別子リストの要素で識別し、共有ロックの内容で
    分解される資源要求元識別子リストを転送しあい、競合
    する資源要求元間で独立にリストの資源要求元識別子の
    順番の逆転を調べることによりデッドロックを検出する
    ことを特徴とする請求項1記載のデッドロック検出方
    式。
  13. 【請求項13】 前記資源要求元識別子リストの要素
    に、さらにidリストを付け、共有ロックを実現するこ
    とを特徴とする請求項12記載のデッドロック検出方
    式。
  14. 【請求項14】 共有ロックと排他ロックの要素をタグ
    で識別することを特徴とする請求項12記載のデッドロ
    ック検出方式。
  15. 【請求項15】 排他ロックと共有ロックの要素のid
    リストへのポインタを前記資源要求識別子リストに入れ
    ることを特徴とする請求項12記載のデッドロック検出
    方式。
  16. 【請求項16】 識別子xの資源要求元から共有ロック
    が来た場合をr(x)、識別子yの資源要求元から排他
    ロックが来た場合をw(y)と表現すると、ある資源A
    に所定の順番で要求が来た場合にはその資源Aに対応す
    るロック管理テーブルのエントリーにつながれるリスト
    を要求された順番i,i,・・・iに共有ロック
    に対してr(i,i,・・・i)の表現でまとめ
    て1つのリストとして、排他ロックに対して要求された
    順番j,j,・・・jに対して独立なリスト要素
    w(j),w(j),・・・w(j)とすること
    を特徴とする請求項1記載のデッドロック検出方式。
  17. 【請求項17】 デッドロック検出時には、 Ai1;〔r(i),w(j)w(j),・・・w(j)〕 Ai2;〔r(i),w(j)w(j),・・・w(j)〕 : : : : Aim;〔r(i),w(j)w(j),・・・w(j)〕 と分解したリスト間で資源要求元識別子間の順番の逆転
    を検出してデッドロックの検出を行うことを特徴とする
    請求項16記載のデッドロック検出方式。
  18. 【請求項18】 前記資源要求元識別子のリストの要素
    は、共有ロックか排他ロックを示すタグと、資源要求元
    識別子リストの先頭へのポインタ、及び次のロックリス
    トへのポインタからなることを特徴とする請求項17記
    載のデッドロック検出方式。
  19. 【請求項19】 前記r(i,i,・・・i)、
    w(j),w(j),・・・w(j)に対するリ
    スト構造においてロック管理テーブルのエントリーにつ
    ながれるロックリスト要素の内容は、タグフィールド、
    共有ロックに対する資源要求元リストへのポインタある
    いは排他ロックに対する資源要求元リストへのポインタ
    を格納フィールド及び次のロックリスト要素へのポイン
    タを格納するフィールドからなり、前記共有ロックに対
    する資源要求元リストは、共有ロックに対する資源要求
    元のIDと次のリスト要素へのポインタからなる要素
    が、資源要求元の順番i,i,・・・iに並んだ
    構造になり、前記排他ロックに対する資源要求元リスト
    の要素は排他ロックに対する資源要求元のIDと次の要
    素へのポインタからなる1つの要素からなることを特徴
    とする請求項15記載のデッドロック検出方式。
  20. 【請求項20】 複数の資源を複数の資源要求元から共
    有する場合、トランザクション内の基本処理単位を資源
    要求元として、トランザクション内の基本処理単位間で
    リストに要求識別子としてつながれたトランザクション
    識別子を転送しあう手段と、 資源に対応するエントリーを持つロック管理テーブル
    (100)と、 前記ロック管理テーブルのテーブルにつながれる資源要
    求元識別子リスト(110)と、 前記ロック管理テーブルと前記資源要求元識別子リスト
    を用いて排他制御を管理するロック管理手段(120)
    を含むことを特徴とするトランザクション制御方式。
JP3357374A 1990-11-30 1991-11-30 デツドロツク検出方式 Withdrawn JPH05134886A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2-329658 1990-11-30
JP32965890 1990-11-30

Publications (1)

Publication Number Publication Date
JPH05134886A true JPH05134886A (ja) 1993-06-01

Family

ID=18223813

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3357374A Withdrawn JPH05134886A (ja) 1990-11-30 1991-11-30 デツドロツク検出方式

Country Status (2)

Country Link
US (1) US5440743A (ja)
JP (1) JPH05134886A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016106329A (ja) * 2007-07-26 2016-06-16 アビニシオ テクノロジー エルエルシー エラーハンドリングをもつトランザクションのグラフ型計算
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10901702B2 (en) 2013-12-05 2021-01-26 Ab Initio Technology Llc Managing interfaces for sub-graphs

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69422743T2 (de) * 1993-03-30 2000-06-08 Fujitsu Ltd Endlosschleife-Erkennungsgerät
US5764976A (en) * 1995-02-06 1998-06-09 International Business Machines Corporation Method and system of deadlock detection in a data processing system having transactions with multiple processes capable of resource locking
US6101525A (en) * 1995-05-19 2000-08-08 Emc Corporation Method and apparatus for shared memory cleanup
JP3745800B2 (ja) * 1995-09-29 2006-02-15 富士通株式会社 共有資源の排他制御方式
JPH103416A (ja) * 1996-06-14 1998-01-06 Canon Inc 情報処理装置およびその方法
US6574654B1 (en) 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
US5933824A (en) * 1996-12-23 1999-08-03 Lsi Logic Corporation Methods and apparatus for locking files within a clustered storage environment
US6108684A (en) * 1996-12-23 2000-08-22 Lsi Logic Corporation Methods and apparatus for balancing loads on a storage subsystem among a plurality of controllers
US6073218A (en) * 1996-12-23 2000-06-06 Lsi Logic Corp. Methods and apparatus for coordinating shared multiple raid controller access to common storage devices
US6009269A (en) * 1997-03-10 1999-12-28 Digital Equipment Corporation Detecting concurrency errors in multi-threaded programs
US5944838A (en) * 1997-03-31 1999-08-31 Lsi Logic Corporation Method for fast queue restart after redundant I/O path failover
US6041384A (en) * 1997-05-30 2000-03-21 Oracle Corporation Method for managing shared resources in a multiprocessing computer system
US6247025B1 (en) 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
US6026401A (en) * 1997-10-14 2000-02-15 International Business Machines Corporation Locking tool data objects in a framework environment
US6182186B1 (en) * 1998-06-30 2001-01-30 Sun Microsystems, Inc. Method and apparatus that utilizes lock states to lock resources
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
US6253274B1 (en) * 1998-08-28 2001-06-26 International Business Machines Corporation Apparatus for a high performance locking facility
US6185650B1 (en) 1998-08-28 2001-02-06 International Business Machines Corporation High performance locking facility
US6189007B1 (en) 1998-08-28 2001-02-13 International Business Machines Corporation Method and apparatus for conducting a high performance locking facility in a loosely coupled environment
US6721775B1 (en) 1999-08-12 2004-04-13 International Business Machines Corporation Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue
US6681241B1 (en) 1999-08-12 2004-01-20 International Business Machines Corporation Resource contention monitoring employing time-ordered entries in a blocking queue and waiting queue
US6681242B1 (en) * 2000-01-10 2004-01-20 Sun Microsystems, Inc. Method and apparatus for detecting dependency cycles between resources in a computer system
GB0118294D0 (en) * 2001-07-27 2001-09-19 Ibm Method and system for deadlock detection and avoidance
US6965899B1 (en) * 2001-09-28 2005-11-15 Oracle International Corporation Online reorganization and redefinition of relational database tables
US8495131B2 (en) * 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7152157B2 (en) * 2003-03-05 2006-12-19 Sun Microsystems, Inc. System and method for dynamic resource configuration using a dependency graph
US7337290B2 (en) * 2003-04-03 2008-02-26 Oracle International Corporation Deadlock resolution through lock requeing
US7289992B2 (en) * 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7496574B2 (en) 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7447786B2 (en) * 2003-05-09 2008-11-04 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US7278057B2 (en) * 2003-07-31 2007-10-02 International Business Machines Corporation Automated hang detection in Java thread dumps
US7549150B2 (en) * 2004-03-24 2009-06-16 Microsoft Corporation Method and system for detecting potential races in multithreaded programs
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7735089B2 (en) * 2005-03-08 2010-06-08 Oracle International Corporation Method and system for deadlock detection in a distributed environment
DE602005018440D1 (de) * 2005-03-23 2010-02-04 Alcatel Lucent Blockierungserkennung in einem Telekommunikationsnetz
US7209990B2 (en) * 2005-04-05 2007-04-24 Oracle International Corporation Maintain fairness of resource allocation in a multi-node environment
US20060236071A1 (en) * 2005-04-15 2006-10-19 Barszczak Tomasz M Method and system for optimizing operations on memory device
US8935294B2 (en) * 2005-08-10 2015-01-13 Oracle International Corporation Minimizing computer resource usage when converting data types of a table column
US7991798B2 (en) * 2006-05-31 2011-08-02 Oracle International Corporation In place migration when changing datatype of column
US8521706B2 (en) 2006-10-20 2013-08-27 Oracle International Corporation Low-downtime and zero-downtime upgrades of database-centric applications
CA2677131C (en) * 2007-02-06 2014-10-14 Mba Sciences, Inc. A resource tracking method and apparatus
US9569482B2 (en) * 2007-05-09 2017-02-14 Oracle International Corporation Transforming default values dynamically
JP4888272B2 (ja) * 2007-07-30 2012-02-29 富士通セミコンダクター株式会社 ソフトウェアのシミュレーション方法、ソフトウェアのシミュレーションのためのプログラム、及びソフトウェアのシミュレーション装置
US11281654B2 (en) * 2007-10-23 2022-03-22 International Business Machines Corporation Customized roll back strategy for databases in mixed workload environments
US20100057965A1 (en) * 2008-08-29 2010-03-04 International Business Machines Corporation Extension of Lock Discipline Violation Detection for Lock Wait Patterns
US9411661B2 (en) * 2009-04-08 2016-08-09 International Business Machines Corporation Deadlock avoidance
CN102103523A (zh) * 2009-12-22 2011-06-22 国际商业机器公司 锁分配控制的方法和装置
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
JP2013097623A (ja) * 2011-11-01 2013-05-20 Fujitsu Ltd 排他制御プログラム、排他制御装置および排他制御方法
US9336208B2 (en) 2012-09-28 2016-05-10 Oracle International Corporation Synchronization of configuration changes between applications and their platforms
US9104502B2 (en) 2012-12-15 2015-08-11 International Business Machines Corporation Managing resource pools for deadlock avoidance
US10459810B2 (en) 2017-07-06 2019-10-29 Oracle International Corporation Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery
US11036563B2 (en) * 2019-03-19 2021-06-15 International Business Machines Corporation Deadlock resolution between distributed processes using process and group information

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318182A (en) * 1974-04-19 1982-03-02 Honeywell Information Systems Inc. Deadlock detection and prevention mechanism for a computer system
US4189771A (en) * 1977-10-11 1980-02-19 International Business Machines Corporation Method and means for the detection of deadlock among waiting tasks in a multiprocessing, multiprogramming CPU environment
US4480304A (en) * 1980-10-06 1984-10-30 International Business Machines Corporation Method and means for the retention of locks across system, subsystem, and communication failures in a multiprocessing, multiprogramming, shared data environment
JPS61233849A (ja) * 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US5095421A (en) * 1989-08-17 1992-03-10 International Business Machines Corporation Transaction processing facility within an operating system environment

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016106329A (ja) * 2007-07-26 2016-06-16 アビニシオ テクノロジー エルエルシー エラーハンドリングをもつトランザクションのグラフ型計算
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US10901702B2 (en) 2013-12-05 2021-01-26 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data

Also Published As

Publication number Publication date
US5440743A (en) 1995-08-08

Similar Documents

Publication Publication Date Title
JPH05134886A (ja) デツドロツク検出方式
US6665814B2 (en) Method and apparatus for providing serialization support for a computer system
JP3206914B2 (ja) 多重プロセッサ・システム
US7403945B2 (en) Distributed database system providing data and space management methodology
US7783601B2 (en) Replicating and sharing data between heterogeneous data systems
US5659682A (en) Scheme to determine completion of directory operations for server recovery
JP2820752B2 (ja) 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法
US5887171A (en) Document management system integrating an environment for executing an agent and having means for changing an agent into an object
US7962693B1 (en) Cache management system providing improved page latching methodology
JP4771378B2 (ja) ファイル・システム逐次化再初期設定の装置、システム、および方法
US7783758B1 (en) Method and apparatus for increasing the efficiency of transactions and connection sharing in an enterprise environment
US20060117072A1 (en) Cluster-wide read-copy update system and method
US20020038313A1 (en) System and method for performing database operations on a continuous stream of tuples
US20080086480A1 (en) System and Methods For Temporary Data Management in Shared Disk Cluster
US6862595B1 (en) Method and apparatus for implementing a shared message queue using a list structure
JPH07191944A (ja) 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
US6895408B1 (en) Method and apparatus to facilitate interaction management between loosely coupled applications
Taylor et al. A parallel implementation of Flat Concurrent Prolog
Dias et al. Integrated concurrency-coherency controls for multisystem data sharing
JPH11506552A (ja) pipes及びfifosを用いてマルチプロセッサ・コンピュータ・システムのファイルをアクセスする方法
US6330686B1 (en) Handling protected conversation messages across IMS restart in shared queues environment
JP3681415B2 (ja) デッドロック検出装置
JPH0461379B2 (ja)
Panagos et al. Client-based logging for high performance distributed architectures
Son Scheduling real-time transactions

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990204