Dynamic Deadlock Detection under the OR
Requirement Model
Alvaro E. Campos,Christian F. Orellana
,and Mara PaSoto
Departamentode Cienciade la Computacion
Ponticia Universidad Catolica de Chile
Casilla 306 - Santiago 22- CHILE
ABSTRACT
Deadlock detection is oneof the most discussed
problems in theliterature. Although several
al-gorithmshavebeenproposed,theproblemisstill
open. Ingeneral,thecorrect operationof an
al-gorithmdependsontherequirementmodelbeing
considered. This article introduces a
deadlock-detection algorithm for the OR model. The
al-gorithmiscomplete, becauseitdetectsall
dead-locks, and it is correct, because it does not
de-tect false deadlocks. In addition, the algorithm
supports dynamic changes in the wait-for graph
onwhichitworks. Oncenalized thealgorithm,
atleasteachprocessthatcausesdeadlockknows
that it is deadlocked. Using this property,
pos-sibleextensions aresuggestedin orderto resolve
deadlocks.
Keywords:Distributedsystems,deadlock
detec-tion,deadlockresolution, self-stabilization,
wait-forgraph,knot.
1. INTRODUCTION
Oneofthemainmotivationsto builddistributed
systems is the possibility of sharing resources
amongseveralprocessors. A processcanacquire
and release resources in a sequence that is
un-known beforehand. Inthis setting, thedeadlock
problemarises; beingabletodetect deadlocksis
therststepto takeactionsandresolvethem.
A setofprocessesis saidto bedeadlockedwhen
eachprocessinthesetis blocked,waitingfor
re-sources that are assigned to other processes in
the same set [14]. This situation may occur if
four conditions related to resource competition
holdsimultaneouslyinthesystem:resources
can-notbeshared,there isnopreemption, processes
waiting forresourceskeepthosealreadyassigned
tothem, andthereiscircularwait.
In general, there are three strategies to deal
with deadlocks: prevention, avoidance, and
de-tection[14]. Thersttwostrategiesfreethe
sys-
Correspondingauthor
temfromthepossibilityofbecomingdeadlocked,
but areineÆcient. Therstoneimposes
restric-tionsinthewayaprocesscanexecute,tonegate
oneofthefourconditionsmentionedabove. The
secondoneiscomputationallyexpensive,because
thesystemmustcheckthesafetyofthenewstate
everytimearesourceisabouttobeassigned. The
third one, onthe other hand, letsdeadlocks
oc-cur,but thenitdetectsand resolvesthem.
2. THEORETICALMODELS
Knapp classiedthedeadlock-detectionproblem
in six models, according to the type of
require-mentsthataprocesscanmake[10]. Thesix
mod-elsarethefollowing:
Single-outstanding-requestmodel: Under
this model, processes request only one
re-source at atime. It isthe simplest
require-mentmodel. FlateboandDatta,among
oth-ers, have proposed an algorithm to detect
deadlocksunderthis model[4].
AND model: Under this model, processes
re-quest multiple resources simultaneously. A
requirement is satised when all the
re-quested resourcesare assigned. Some
algo-rithms to detect deadlocks [4, 9]and to
re-solve them [6] under this model have been
proposed.
OR model: Under this model, processes also
request multiple resources simultaneously,
but a requirement is satised when any of
therequestedresourcesisassigned. Chandy,
Misra, and Haas [2], and Natarajan [11],
among others, have proposed algorithms to
detectdeadlocksunderthismodel.
AND/OR model: Thismodelisa
generaliza-tionof theprevioustwo. Under this model,
processesrequestanynumberofresourcesin
anarbitrarycombinationofANDandOR
re-quirements. Herman andChandy have
pro-posedadistributedalgorithmtodetect
1
3
2
4
Figure1: Deadlockunder theANDmodel
( n
k
) model: Under this model, a requirement
for n resources is satised when k of them
are assigned to the requesting process. It
is a generalized model too, because when
n = k = 1 the requirement corresponds to
therstmodeldescribed. Ifn=k6=1,itis
anANDrequirement,andifk=16=n,itis
anORrequirement. BrachaandToueghave
proposed analgorithm todetectandresolve
deadlocksunderthismodel[1].
Unrestrictedmodel: Underthismodel,no
as-sumption is made about the way in which
processescanmaketheirrequirements.
This article presents a deadlock-detection
algo-rithm for the OR requirement model. A
pro-cess can make an OR request, for example, in
a replicated distributed databasesystem, where
a read request for a replicated element is
satis-edwhenanycopyisread[10]. Inasimilarway,
in amessage-routing systembased onwormhole
routing,aroutercanforwardareceivedmessage
toaneighborrouterthroughoneofseveral
chan-nels[13]; arequirementforanoutput channel is
satisedwhenanyofthembecomesavailable.
Ausefulwaytorepresentresourcerequirementsis
bymeansofadirectedgraph,knownasWait-For
Graph(WFG).InaWFG,eachnoderepresentsa
processinthesystem. Nodeswithoutgoingedges
representblockedprocesses,waitingforresources.
On the contrary, nodes without outgoing edges
representactiveprocesses. An edge from node i
to node j means that process i is waiting for a
resource assigned to process j. The
deadlock-detectionproblem canbereducedto that of
de-tectingcyclicstructuresonthisgraph. For
exam-ple,thepresenceof adirected cycleintheWFG
isanecessaryandsuÆcientconditionforthe
ex-istenceofdeadlockundertheANDmodel[10]. In
Figure1,processes1,2,and3form acycle, and
are deadlocked. Although theresource assigned
to process 4 will be released once that process
terminates, process1alsoneeds theresource
as-signed to process 2, to be able to continue
exe-cuting.
1
3
2
4
5
Figure2: Deadlockunder theORmodel
Under the OR requirement model, the presence
of acyclein theWFGis anecessary| but not
suÆcient |conditionforadeadlockto exist. If
theedgesrepresentORrequirements,thereisno
deadlockin Figure 1, despite thecycle, because
process1 is waiting for the resourceassigned to
process 2 orthe resourceassigned to process 4.
Sinceprocess4canterminate,itsresourcecanbe
assigned to process 1, which can then continue
executing.
Under the OR requirement model, a process is
blocked ifithasapendingORrequirement. The
set ofprocessesfor which ablockedprocessP is
waitingiscalleditsdependentset;thedependent
set contains thedirect successors,the neighbors,
of P in the WFG [2]. Therefore, ablocked
pro-cesscancontinueexecutingifsomeprocessinits
dependent set releasesa resource,which is then
assignedto theblockedprocess.
UndertheORrequirementmodel,asetSof
pro-cesses is in a deadlock state if and only if the
followingconditionshold[2]:
everyprocessinS isblocked,
the dependent set of each process in S is a
subsetofS,and
therearenomessagesintransitbetween
pro-cessesinS.
Detectingadeadlockisequivalenttodetectinga
knot in the WFG [8]. Bydenition, anode v is
in aknotif,
8nodew;v reachesw!wreachesv;
that is,ifthereisadirectedpathto vfrom each
oneofitssuccessors. Nodesthat arein theknot
are said to cause the deadlock. There may be
other nodes, which are not in a knot, that are
deadlockedonlybecauseallnodesintheir
depen-dentsetsaredeadlocked.
InFigure2,processes1,2,3,and4areinaknot,
theyaredeadlocked,andtheyallcausedeadlock.
Althoughprocess5isnotin theknot,itis
dead-lockednonetheless,becauseallprocessesinits
Fornodei:
(1:1) if (j;i)2=Succ^j2Neighbors
then Succ:=Succ[f(j;i)g
(1:2) if (j;i)2Succ^j2=Neighbors
then Succ:=Succ f(j;i)g
(1:3) if Neighbors=;^(Succ6=;_Paths6=;)
then Succ:=;;
Paths:=;
(1:4) if (j; )2Succ
n
^(j; )2=Succ
then Succ:=Succ[f(j;n)g
(1:5) if (j;n)2Succ^(j; )2=Succ
n
then Succ:=Succ f(j;n)g
Figure 3: Theproposedalgorithm,rstphase
Chandy,Misra,andHaashaveproposedan
algo-rithm to detect deadlocks under the ORmodel,
basedonthetechniqueknownasdiusing
compu-tations [2]. Intheirproposal,aprocessstartsthe
algorithm when a request is not granted. Upon
termination,aprocessisguaranteedtoknowthat
itisdeadlockedonlyifitwasdeadlockedwhenthe
algorithmstarted. Nonetheless,in aset of
dead-locked processes, at least oneof them is able to
report thedeadlock. Thealgorithmproposedby
Natarajan [11] isbasedonthe sameprincipleas
the one by Chandy, Misra, and Haas, but uses
aperiodicprotocolthat allowsto chooseexactly
oneprocessfromasetofdeadlockedprocessesto
reportit.
In the algorithm proposed in this paper, a
pro-cess that is not part of a knot when the
algo-rithm starts, but later becomes part of one, is
able to report the deadlock. If all processes in
the dependent set of aprocess v are awarethat
they are deadlocked, process v is able to report
that itis deadlocked. Additionally, each process
could decide if it is part of a knot. Thus, all
processesthatare awareofthedeadlock,in
par-ticular,those processes that causethe deadlock,
maystartaresolutionaction.
3. DEADLOCKDETECTION UNDER
THEOR MODEL
The proposed algorithm is shown in Figures 3,
4,and 5. Detectionis made in three phases. In
therstphase,eachnodecomputesthesetofits
successors. Inthesecondphase,eachnodebuilds
apartialviewoftheWFG,bythepropagationof
existing paths. Finally, in thethird phase, each
node decides locally whether it is deadlocked or
not.
The algorithm starts at a node, when a request
for resources is not granted. The requesting
process blocks, and control is transferred to a
thread thatruns thedetection algorithm. These
threads maintain exact, up-to-date information
about which are the processes for whom they
wait, that is, their neighbors in the WFG. The
set of neighbors of a node v changes when one
of themreleasesaresource,whichisthen
reallo-cated to some waiting node. If it is reallocated
to v, v is no longer blocked; otherwise, v has a
dierent set of neighbors. The resource
alloca-tor caninformthedetection-algorithm threadof
these changes in the WFG, through atomic
up-dates of the local variable Neighbors. No other
event canchange the set of neighbors,sincethe
processis blocked.
Variables
Eachprocess mantainsfour local variableswhen
executing thealgorithm:Neighbors,Succ, Paths,
anddeadlock,whichitcanreadandwrite. In
ad-dition, it isassumed thateachprocess has
read-onlyaccesstothelocalvariablesoftheprocesses
for whom it waits; actually, read access to
vari-ablesSucc,Paths, anddeadlock oftheneighbors
isenough.
Variable Succ represents theset of successorsof
the node that is executing the algorithm. Each
elementofthe setis anorderedpairof theform
(a;b), where a is the identier of the successor
process, and b is the identier of the process
fromwheretheinformationwaslearned.Variable
Paths represents the partial view of the WFG
that the node has. Each element of this set is
an ordered trio of the form (a;b;c), and
indi-cates that there is adirected path from node a
to nodeb,and that theinformation waslearned
from node c. Variable deadlock indicates if the
processis deadlocked.
Initially, variable deadlock takes thevalue false.
Variables Succ and Paths must be initialized as
Fornodei:
(2:1) if (a; )2Succ^(i;a;i)2=Paths
then Paths:=Paths[f(i;a;i)g
(2:2) if (a; )2=Succ^(i;a;i)2Paths
then Paths:=Paths f(i;a;i)g
(2:3) if (a;b; )2Paths
n
^(a;b; )2=Paths
then Paths:=Paths[f(a;b;n)g
(2:4) if (a;b;n)2Paths^(a;b; )2=Paths
n
then Paths:=Paths f(a;b;n)g
Figure4: Theproposedalgorithm,secondphase
Notation
Each step of the algorithm is of the following
form:
(p:s)ifhguardithenhmovei
In the number (p:s), p indicates the phase to
which the step belongs, and s enumerates the
steps within that phase. The predicate hguardi
isabooleanpredicateoverthevariablesthatthe
processcanread:itsown localvariables andthe
ones of its neighbors. If the predicate is true,
thenitispossibletoexecutetheactiondenedin
hmovei. Itisassumedtheexistenceofa
coordina-tor |centralized or distributed | that chooses
the next move to execute when there is one or
moretrue predicates. Movesare chosen
accord-ing to thephase to which they belong; theones
thatbelongtoanearlierphasehavepriorityover
actionsoflaterphases.
In Figures 3, 4, and 5, variable i representsthe
identierof theprocess that is executingthe
al-gorithm,andnrepresentstheidentierof oneof
its neighbors. The local variables of neighbor n
arerepresentedasSucc
n ,Paths n ,anddeadlock n .
Tuples of the form (a; ) represent any ordered
pair whose rst element is a. In the same way,
those of the form (a;b; ) represent any ordered
triowhosersttwoelementsareaandb.
The algorithm
Phase1,inFigure3,beginswithstep(1:1),which
isexecutedbyprocessi,whenitssetofneighbors
changes. Thesetrst changeswheni blocks
be-causeitmakesarequestthatisnotgrantedand,
therefore,itacquiresasetofneighbors. The
pro-cesscomputesitsinitialsetofsuccessors,withthe
identiersofthoseneighbors. Instep(1:2),later
changes in the set of neighbors update the set
ofsuccessorsaccordingly. Instep(1:4),thesetof
successorspropagatestopredecessorsnodes. The
goal of this propagation is to determine all
suc-cessorsof anode, both direct and indirect. The
node completes the pairs of its indirect
succes-sorswiththeidentieroftheneighbornodefrom
where the informationwaslearned. Inthis way,
in step(1:5),thenodeisabletoeliminateall
tu-ples that, because of achange in the WFG, are
nolongervalid. Step(1:3)endsthealgorithm,in
case oneof therequested resourceforwhich the
processwaswaitingfor,isassigned. Inthiscase,
processi is nolongerblockedand hasno
neigh-bors. Uponterminationofthis phase,eachnode
knowsexactlyallitssuccessors.
Phase2,inFigure4,beginswithstep(2:1),where
the set ofpaths fromnodei to allitssuccessors
iscompleted. Instep(2:3),pathsarepropagated
to predecessors nodes in a way similar to the
propagation ofsuccessorsinphase1. Steps(2:2)
and (2:4)propagate changes in theWFG. Upon
termination of this phase, each node knows the
set ofpaths in theWFG thatstarton itselfand
oneveryoneofitssuccessors,that is,eachnode
has apartial viewof the WFG that allowsit to
decidewhetheritisornotin aknot.
Phase3,inFigure5,beginswithstep(3:1),which
determines theexistence ofa knotin the WFG.
Ifthereisone,theprocessknowsthatitis
dead-locked. Step(3:2)isfornodesthat,withoutbeing
partofaknot,arewaitingonlyforprocessesthat
alreadyknowthataredeadlocked;theycaninfer
that theyarealsodeadlocked.
4. PROPERTIES OF THE
ALGORITHM
This section shows some properties of the
pro-posedalgorithm.
Lemma1. If j is asuccessor of i in the WFG,
then (j; )2Succ
i
upon terminationof the
algo-rithm.
Proof. By induction on d(i;j), the distance
be-tweennodeiandnodej in theWFG.
Basecase:d(i;j)=1. Inthiscase,jisaneighbor
ofiintheWFG,and(j;i)2Succ
i
bystep(1:1).
Inductive hypothesis: 8i, if d(i;j) = n then
(j; )2Succ
i .
Inductivestep: If d(i;j)=n+1then there is a
Fornodei:
(3:1) if deadlock=false^Paths6=;^8j;(i;j; )2Paths!(j;i; )2Paths
then deadlock:=true
(3:2) if deadlock=false^8j2Neighbors;deadlock
j =true
then deadlock:=true
Figure5: Theproposedalgorithm,third phase
theneighborofiin thatpath. Then, d(k;j)=n
and,becauseoftheinductivehypothesis, (j; )2
Succ
k
. Since k is a neighbor of i, then (j;k) 2
Succ i bystep(1:4). 2 Lemma2. If (j; )2Succ i upon terminationof
the algorithm, thenthereis apathfrom itoj in
the WFG.
Proof. If there is a tuple (j;i) in Succ
i
, then it
wasadded bystep(1:1)and j isaneighbor of i
intheWFG.
Ifthereisatuple(j;n)inSucc
i
,withn6=i,then
it was added by step (1:4) and there is a tuple
(j; ) in Succ
n
. Since nis aneighbor ofi, there
isapathfromitonintheWFG.Inductivelyfor
n, it can befound a path from n to j. If there
isnosuchpath,then(j; )wouldbedeletedfrom
Succ
i
bystep(1:5). Thus, thereisapathfrom i
toj in theWFG. 2
Lemma3. Upon termination of the algorithm,
each node knows allpaths of the WFGthat start
onitself.
Proof.ByLemmas1and2,nodeiknowsexactly
all its successors upon termination of the
algo-rithm. Bystep(2:1),apathfromitoeverynode
inSucc
i
isaddedtovariablePaths. Bystep(2:2),
pathsto nodesthat arenolongerreachablefrom
iaredeleted. 2
Lemma4. Upon termination of the algorithm,
eachnodeknowsallpathsthatstartonevery
suc-cessor.
Proof.ByLemma3,eachnodeknowallthepaths
that starton itself. Those pathsare propagated
topredecessornodesinstep(2:3),untilevery
pre-decessorknowsall thepathsthat startonevery
successor.IftheWFGchanges,bysteps(2:2)and
(2:4) the invalid paths are deleted, and changes
arepropagated. 2
Lemma5. Upon termination of the algorithm,
atleasteachnodethatcausesdeadlockknowsthat
itisdeadlocked.
Proof.ByLemmas3and4,nodeiknowsallpaths
oftheWFGthatstartonitselfandonevery
suc-cessor. If theguard of step(3:1) istrue, node i
knowsthatitispartofaknot. Bythedenition
ofdeadlockundertheORmodel,aknotisa
nec-essary and suÆcient condition for the existence
ofadeadlock. Thus,anodethatknowsthatitis
partofaknotknowsthatitcausesdeadlock.
By step(3:2), a node such that everyone ofits
neighborsknowsthatisdeadlocked,alsoupdates
itsvariabledeadlock totrue.
Thus,whenthealgorithmterminates,atleast
ev-eryprocess thatcauses deadlockhasitsvariable
deadlock setontrue. 2
It hasbeenshownthat thealgorithmdetects all
deadlocks. Now, itwill be shown that the
algo-rithmdoesnotdetectfalsedeadlocks.
Lemma6. The algorithm does not detect false
deadlocks.
Proof. If a process has its variable deadlock set
ontrue,ithasexecutedthestep(3:1)orthestep
(3:2). For the guardof step (3:2) to be true at
a node, anotherprocess must haveexecuted the
step(3:1). IfthereisnotaknotintheWFG,the
guard of step (3:1) would never be true at any
node, by Lemmas 3 and 4. Then, if a process
executes step(3:1), it isbecause there is aknot
in theWFG.
No processcanhaveits variabledeadlock set on
true if there is no knot in the WFG; thus, the
algorithmdoesnotdetectfalsedeadlocks. 2
Lemma7. The algorithm terminates.
Proof.Ifthenodethat runsthealgorithmis not
deadlocked, then it will eventually receive a
re-sourceforwhichitwaswaiting. Then,theguard
at step(1:3) will betrue, andthe actionwill be
executed. AsthesetsinvariablesSuccandPaths
will be emptied, no other guard will be true at
thenode,andthealgorithmterminates.
Ifthenodethatrunsthealgorithmisdeadlocked,
all its successors are deadlocked. Therefore, no
newoutgoingedgescanbeaddedorremoved;the
part of the WFG that the node can reach does
not change. After anite number of executions
will not become trueagain. Thesame situation
occurswith theguardsofphases2and3. Then,
there will be no more moves to make, and the
algorithmterminates. 2
The next theorem follows from Lemmas 5, 6,
and7.
Theorem1. Theproposedalgorithmiscomplete
andcorrect.
5. DEADLOCK RESOLUTION
In order to resolvea deadlock, oneof the
dead-lockedprocessesmustbeterminated. Therefore,
onceadeadlockisdetected,itbecomesnecessary
tochooseavictimtoterminate. Terminatingjust
any process doesnot necessarilysolve the
dead-lock. In Figure 2, if process 5 were terminated,
therestoftheprocesseswouldstillbedeadlocked,
becausetheknotin theWFGremains. Itis
nec-essarytoterminateoneprocessfromeachknotin
theWFG.
Uponterminationof thealgorithm,each process
thatcausesdeadlockknowsthatitisdeadlocked.
The algorithm canbe modied slightly, so that
theycanalsoknowthat arepartofaknot. This
eect can beaccomplished by adding aboolean
variable,sayknot,initializedtofalse. Iftheguard
ofstep(3:1)istrue,thenthevariableisupdated
to true, because it is in this step that a process
knowsthatitispartofaknot. Also,instep(1:3),
thevariablemustberesettofalse.
Oncethealgorithmisnished,theprocessesthat
arepartofaknotcanstartanalgorithmtochoose
a victim such that, when terminated, the
dead-lock is solved. For example, a leader-election
algorithm as the one described by Ghosh and
Guptaisenough[5].
After a process is terminated, variable deadlock
should be reset to false at each node; also, all
variables knot should bereset to false. The
im-mediatepredecessorsoftheterminatedprocesses
would see a change in their variable Neighbors,
andthedetectionalgorithmwouldrecomputefor
thenewWFG.
6. CONCLUDING REMARKS
This article presents a deadlock-detection
algo-rithm for the OR requirement model. The
al-gorithmis dynamic since itsupportschanges to
theWFG whileit is executing,such asaddition
and removalof nodes andedges. The algorithm
is complete since it detects all deadlocks. The
algorithmiscorrectsinceitdetectsnofalse
dead-locks. Additionally, slight modications to the
algorithmthatallowtoresolvedeadlocksonce
ev-erycausingnodeisidentiedhavebeendiscussed.
Since Dijkstra introduced the concept of
self-stabilizationin1974[3],severalself-stabilizing
al-gorithms to solve many problems in distributed
systems have been proposed. Mutual exclusion
andleader electionareamongtheclassical
prob-lems solved with this approach. Schneider has
written acompletesurveyonthesubject[12].
In general,asystem issaid to be self-stabilizing
if,regardlessofitsinitialglobalstate,itcanreach
alegalglobalstateinanitenumberofsteps[3].
The global state is the cartesianproduct of the
localstatesofeveryprocessorinthesystem. The
denitionoflegalandillegalglobalstatesdepends
onthecontextoftheproblembeingsolved.
The ability to regain a legal global state that
those systemspresent, makes them ableto
sup-porttransientfaults. Atransientfaultisonethat
occurs onceandceasestoexist.
Some self-stabilizing algorithms to solve the
deadlock-detection problem under the AND
model have been proposed [4, 9]. Nevertheless,
the classic denitions of some concepts used in
self-stabilizing algorithms are not clearly
appli-cable in the context of deadlock detection. The
diÆculty is in the denition of legal and illegal
globalstates,andtransientfaults. Thus,thenext
stepistodenethoseconceptssuitably,inorder
to present an algorithm that supports transient
faults, andthatisself-stabilizing.
ACKNOWLEDGEMENTS
Christian F. Orellana and MaraPa Soto
dedi-catethisworktothememoryoftheiradvisorand
belovedfriendAlvaroE.Campos,who
unexpect-edlypassedawayonJuly25,2003.
Alvarowasanexcellentteacher,aremarkable
re-searcher, and a wonderful person, who always
worked with dedication, enthusiasm, and
opti-mism. Meetinghim wasanenlightening
experi-ence andagenuine privilege. His manystudents
will miss him much, and will continue with his
legacy.
7. REFERENCES
[1] Gabriel Bracha and Sam Toueg. A
dis-tributed algorithm for generalized deadlock
detection. In Symposium on Principles of
DistributedComputing,pages285{301,
Van-couver, British Columbia, Canada, August
1984.
[2] K. Mani Chandy, Jayadev Misra, and
LauraM.Haas. Distributeddeadlock
detec-tion. ACMTransactions on Computer
[3] EdsgerDijkstra. Self-stabilizing systemsin
spite of distributed control.
Communica-tions of the ACM, 17(11):643{644,
Novem-ber1974.
[4] Mitchell Flatebo and Ajoy Kumar Datta.
Self-stabilizing deadlock detection
algo-rithms.InProceedingsofthe1992ACM
An-nualConference on Communications, pages
117{122,KansasCity,Missouri,April1992.
[5] Sukumar Ghosh and Arobinda Gupta. An
exerciseinfault-containment: self-stabilizing
leaderelection. Information Processing
Let-ters,59(5):281{288,September1996.
[6] Jose R. Gonzalez de Mendvil, Federico
Fari~na, Jose R. Garitagoitia, C. F.
Alas-truey, and J. M. Bernabeu-Auban. A
dis-tributed deadlock resolution algorithm for
theANDmodel.IEEETransactionson
Par-allelandDistributedSystems,10(5):433{447,
May1999.
[7] T. Herman and K. Chandy. A distributed
procedure to detect AND/OR deadlock.
TechnicalReportTRLCS-8301,Department
of Computer Science, University of Texas,
Austin,Texas,1983.
[8] Richard C. Holt. Some deadlock properties
oncomputersystems.ACMComputing
Sur-veys,4(3):179{196,September1972.
[9] Mehmet H. Karaata and Jeery C. Line.
Self-stabilizing algorithms for deadlock
de-tectionandidenticationin distributed
sys-tems. In Proceedings of the ISCA
Thir-teenth International Conference on Parallel
and Distributed Computing, pages 320{325,
LasVegas,Nevada,August2000.
[10] Edgar Knapp. Deadlock detection in
dis-tributed databases. ACM Computing
Sur-veys,19(4):303{328,December1987.
[11] N. Natarajan. A distributed scheme for
detecting communication deadlocks. IEEE
Transactions on Software Engineering,
SE-12(4):531{537,April1986.
[12] Marco Schneider. Self-stabilization. ACM
Computing Surveys, 25(1):45{67, March
1993.
[13] Loren Schwiebert. Deadlock-free
oblivi-ous wormhole routing with cyclic
depen-dencies. IEEE Transactions on Computers,
50(9):865{876,September2001.
[14] Abraham Silberschatz, Peter Galvin, and
GregGagne.AppliedOperatingSystem
Con-cepts. JohnWiley & Sons, NewYork, NY,