Professional Documents
Culture Documents
17 April 2012
References:
Mukesh Singhal, Niranjan Shivaratri. Advanced concepts in
17 April 2012
Introduction
Deadlock: a situation where a process is blocked, waiting on an event that will
never occur.
In Distributed Systems, a process can request and release resources in any order If the sequence of allocation is not controlled, deadlocks can occur Assumptions:
System has only reusable resources Only exclusive access to resources Only one copy of each resource
Introduction
Deadlock can arise if four conditions hold simultaneously. Mutual exclusion: only one process at a time can use a resource. Hold and wait: a process holding resource(s) is waiting to acquire additional
that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, , Pn1 is waiting for a resource that is held by Pn, and Pn is waiting for a resource that is held by P0.
17 April 2012
Types of Deadlocks
Resource Deadlocks
A process needs multiple resources for an activity. Deadlock occurs if each process in a set request resources held by another
process in the same set, and it must receive all the requested resources to move further.
Communication Deadlocks
Processes wait to communicate with other processes in a set. Each process in the set is waiting on another processs message, and no
process in the set initiates a message until it receives a message for which it is waiting.
17 April 2012
Graph Models
Resource allocation graph To represent the state of process-resource interaction in DS Nodes of a graph processes and resources. Edges of a graph pending requests or assignment of resources. A pending request is represented by a request edge directed from the node of a
17 April 2012
Graph Models
System is deadlocked if its resource allocation graph contains a directed cycle or
a knot
A knot in a directed graph is a collection of vertices and edges with the
property that every vertex in the knot has outgoing edges, and all outgoing edges from vertices in the knot terminate at other vertices in the knot. Thus it is impossible to leave the knot while following the directions of the edges.
17 April 2012
Pi requests instance of Rj
Pi Request edge
Rj
Pi is holding an instance of Rj
Pi
Assignment edge
Pi releases an instance of Rj
8
Pi
17 April 2012
Resource-allocation graph
Resource-allocation graph
10
17 April 2012
deadlock.
If graph contains a cycle if only one instance per
resource type, then deadlock. if several instances per resource type, possibility of deadlock.
11
17 April 2012
Graph Models
In DS, the system state can be modeled by a directed graph called a wait-for-
graph(WFG).
Wait-for Graphs (WFG): P1 -> P2 implies P1 is waiting for a resource from P2. WFG in databases Transaction-wait-for Graphs (TWF) Nodes are transactions and T1T2 indicates that T1 is blocked and
12
17 April 2012
Graph Models
Wait-for Graphs (WFG): P1 -> P2 implies P1 is waiting for a resource from P2.
P1
R1
R2
P2
13
17 April 2012
AND, OR Models
AND Model A process/transaction can simultaneously request for multiple resources. Remains blocked until it is granted all of the requested resources. A cycle is sufficient to declare a deadlock with this model OR Model A process/transaction can simultaneously request for multiple resources. Remains blocked till any one of the requested resource is granted. A cycle is a necessary condition A knot is a sufficient condition
14
17 April 2012
AND, OR Models
AND Model Presence of a cycle.
P1 P2 P1
P1
P1
P1
15
17 April 2012
AND, OR Models
OR Model Presence of a knot.
P1 P2 P5
P4
P3
P6
16
17 April 2012
Deadlock Prevention:
Resources are granted to requesting process in such a way that granting a
simultaneously before it begins execution, or by preempting a process that holds the needed resource
17
17 April 2012
Site S1
P1
Site S2
P2
Site S3
R3
Site S4
R4
18
17 April 2012
Deadlock Avoidance:
Before allocation, check for possible deadlocks. A resource is granted to a process if the resulting global system state is safe. A state is safe if there exists at least one sequence of execution for all
requirements The process of checking for a safe global state must be mutually exclusive Due to the large number of processes and resources, it will be computationally expensive to check for a safe state
19
17 April 2012
20
17 April 2012
21
17 April 2012
deadlocked processes
22
17 April 2012
Centralized Control
A control site constructs global wait-for graphs (WFGs) and checks for
directed cycles.
WFG can be maintained continuously (or) built on-demand by requesting
23
17 April 2012
Distributed Control
Responsibility for detecting a global deadlock is shared equally among all
sites WFG is spread over different sites Deadlock detection is initiated only when the waiting process is suspected to be a part of deadlock cycle Any site can initiate the deadlock detection process
Not vulnerable to single point failure Difficult to design due to the lack of globally shared memory
24
17 April 2012
Hierarchical Control
Sites are arranged in a hierarchy A site checks for cycles involving only its descendent sites Exploits access patterns local to a cluster of sites to efficiently detect
deadlocks Tend to get best of both the centralized and distributed control
25
17 April 2012
Centralized Algorithms
The completely centralized algorithm
Control site maintains the WFG of the entire system and checks it for the
existence of the deadlock Request resource and release resource messages sent by each site to the control site Simple and easy to implement
Highly inefficient Large delays in user response, large communication overhead, congestion of
26
17 April 2012
Centralized Algorithms
Solution:
Can be mitigated partially by having each site maintain its WFG locally and
transmitting it periodically Due to inherent communication delays and the lack of synchronized clocks, the designated site may get inconsistent view
Example:
R1 and R2 are stored at sites S1 and S2 Transactions T1 and T2 are started at sites S3 and S4 respectively:
27
17 April 2012
Centralized Algorithms
T1 lock R1 unlock R1 lock R2 unlock R2 Step1: R1<- T1 report status : T2->T1 Step 2: unlock R1 : R1<- T2 Step 3: R2<-T2 report Status : T1->T2 T2 lock R1 unlock R1 lock R2 unlock R2
T2 R1
T1
28
17 April 2012
Centralized Algorithms
Ho-Ramamoorthy 2-phase Algorithm
Each site maintains a status table of all processes initiated at that site: includes
29
17 April 2012
Centralized Algorithms
Otherwise, (cycle exists): Request for state tables again.
30
17 April 2012
Centralized Algorithms
Ho-Ramamoorthy 1-phase Algorithm
Each site maintains 2 status tables: resource status table and process status
table.
Resource table: transactions that have locked or are waiting for resources. Process table: resources locked by or waited on by transactions. Controller periodically collects these tables from each site. Constructs a WFG from transactions common to both the tables. No cycle, no deadlocks. A cycle means a deadlock.
31 17 April 2012
Centralized Algorithms
Does not detect false deadlocks:
E.g. Resource table at S1: R1 is waited upon by P2 (R1 P2) Process table at S2: P2 is waiting for R1 (P2R1) then, the edge P2R1 reflects current system state.
32
17 April 2012
Distributed Algorithms
All sites collectively cooperate to detect a cycle in the state graph that is likely to
waits
4/17/2012
4/17/2012
Edge-Chasing Algorithm
Chandy-Misra-Haass Algorithm:
by the home site of Pj to Pk. This probe message is circulated via the edges of the graph. Probe returning to Pi implies deadlock detection. Terms used:
Pj is dependent on Pk, if a sequence of Pj, Pi1,.., Pim, Pk exists. Pj is locally dependent on Pk, if above condition + Pj,Pk on same site. Each process maintains an array dependenti: dependenti(j) is true if Pi knows that Pj
4/17/2012
Chandy-Misra-Haass Algorithm
Sending the probe: if Pi is locally dependent on itself then deadlock. else for all Pj and Pk such that (a) Pi is locally dependent upon Pj, and (b) Pj is waiting on Pk, and (c ) Pj and Pk are on different sites, send probe(i,j,k) to the home site of Pk. Receiving the probe: if (d) Pk is blocked, and (e) dependentk(i) is false, and (f) Pk has not replied to all requests of Pj, then begin dependentk(i) := true; if k = i then Pi is deadlocked else ...
Distributed Computing@M.Tech I SVNIT 4/17/2012
Chandy-Misra-Haass Algorithm
Receiving the probe: . else for all Pm and Pn such that (a) Pk is locally dependent upon Pm, and (b) Pm is waiting on Pn, and (c) Pm and Pn are on different sites, send probe(i,m,n) to the home site of Pn. end.
4/17/2012
Example
P2
P1
P3
probe(1, 9, 1)
Site S1
probe(1, 3, 4)
P9 P10
P8
Site S3
4/17/2012
4/17/2012
Engaging query:
The first query message received for the deadlock detection initiated by Pi.
waitk(i):
indicates that it has been continuously blocked since it received the last engaging
4/17/2012
query
A blocked process sends reply message in response to engaging query only after
it has received a reply to every query message it sent out for this engaging query.
4/17/2012
Diffusion-based Algorithm
Initiation by a blocked process Pi: send query(i,i,j) to all processes Pj in the dependent set DSi of Pi; num(i) := |DSi|; waiti(i) := true; Blocked process Pk receiving query(i,j,k): if this is engaging query for process Pk /* first query from Pi */ then send query(i,k,m) to all Pm in DSk; numk(i) := |DSk|; waitk(i) := true; else if waitk(i) then send a reply(i,k,j) to Pj.
Distributed Computing@M.Tech I SVNIT 4/17/2012
Diffusion-based Algorithm
Process Pk receiving reply(i,j,k)
if waitk(i) then numk(i) := numk(i) - 1; if numk(i) = 0 then if i = k then declare a deadlock. else send reply(i, k, m) to Pm, which sent the engaging query.
4/17/2012
On receipt of query(i,j,k) by m
if not blocked then discard the query if blocked if this is an engaging query propagate query(i,j,k) else
if not continuously blocked since engagement then discard the query else send reply(i,k,j) to j
On receipt of query(i,j,k) by m
The black dashed arrows indicate the engaging process for each engaged process. This information is needed to route the reply when the number of other processes for which the engaged process is waiting goes to zero.
On receipt of query(i,j,k) by m
Num(A)=2 Num(A)=2 Q(A,C,D)
D
Q(A,C,E)
A
Num(A)=1
F
Q(A,F,A) Num(A)=1
On receipt of reply(i,j,k) by k
if this is not the last reply
then just decrement the awaited reply count if this is the last reply then
if i=k report a deadlock else send reply(i,k,m)
On receipt of reply(i,j,k) by k
On receipt of reply(i,j,k) by k
Knot detected !
51
4/17/2012
Control site
4/17/2012
Implication of persistence:
Resources unavailable for this period: affects utilization Processes wait for this period unproductively: affects response time.
Deadlock resolution:
Aborting at least one process/request involved in the deadlock. Efficient resolution of deadlock requires knowledge of all processes and resources. If every process detects a deadlock and tries to resolve it independently -> highly
4/17/2012
Deadlock Resolution
Priorities for processes/transactions can be useful for resolution.
Highest priority process initiates and detects deadlock (initiations by lower priority
ones are suppressed). When deadlock is detected, lowest priority process(es) can be aborted to resolve the deadlock.
After identifying the processes/requests to be aborted,
All resources held by the victims must be released. State of released resources restored
to previous states. Released resources granted to deadlocked processes. All deadlock detection information concerning the victims must be removed at all the sites.
4/17/2012