0% found this document useful (0 votes)
5 views24 pages

Understanding Deadlock in Systems

The document discusses deadlock in concurrent processes, highlighting its causes and implications in systems like operating systems and databases. It outlines the conditions necessary for deadlock to occur, methods for handling it, and algorithms such as the Banker's Algorithm for deadlock avoidance and detection. Additionally, it explains resource allocation graphs and the importance of maintaining a safe state to prevent deadlocks.

Uploaded by

nonhack9178
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views24 pages

Understanding Deadlock in Systems

The document discusses deadlock in concurrent processes, highlighting its causes and implications in systems like operating systems and databases. It outlines the conditions necessary for deadlock to occur, methods for handling it, and algorithms such as the Banker's Algorithm for deadlock avoidance and detection. Additionally, it explains resource allocation graphs and the importance of maintaining a safe state to prevent deadlocks.

Uploaded by

nonhack9178
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Deadlock

[Link]

CSE421

11/07/25 [Link] 1
Introduction
Parallel operation among many devices driven
by concurrent processes contribute
significantly to high performance. But
concurrency also results in contention for
resources and possibility of deadlock among
the vying processes.
Deadlock is a situation where a group of
processes are permanently blocked waiting for
the resources held by each other in the group.
Typical application where deadlock is a serious
problem: Operating system, data base
accesses, and distributed processing.

11/07/25 [Link] 2
System Model
Resource types R1, R2, . . ., Rm
CPU cycles, memory space, I/O devices
Each resource type Ri has Wi
instances.
Each process utilizes a resource as
follows:
 request
 use
 release
11/07/25 [Link] 3
Deadlock Characterization
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 at least one
resource is waiting to acquire additional resources
held by other processes.
No preemption: a resource can be released only
voluntarily by the process holding it, after that
process has completed its task.
Circular wait: there exists a set {P0, P1, …, P0} of
waiting processes such that P0 is waiting for a
resource that is held by P1, P1 is waiting for a
resource that is held by
P2, …, Pn–1 is waiting for a resource that is held by
Pn, and P0 is waiting for a resource that is held by P0.

11/07/25 [Link] 4
Resource-Allocation Graph
A set of vertices V and a set of edges E.

V is partitioned into two types:


 P = {P , P , …, P }, the set consisting of all
1 2 n
the processes in the system.

 R = {R1, R2, …, Rm}, the set consisting of all


resource types in the system.
request edge – directed edge P1  Rj
assignment edge – directed edge Rj  Pi

11/07/25 [Link] 5
Resource-Allocation Graph
(Cont.)
Process

Resource Type with 4 instances

Pi requests instance of Rj
Pi
Rj

Pi
Pi is holding an instance of Rj
Rj

11/07/25 [Link] 6
Resource Allocation Graph
With A Deadlock

11/07/25 [Link] 7
Resource Allocation Graph With A
Cycle But No Deadlock

11/07/25 [Link] 8
Methods for Handling
Deadlocks
Ensure that the system will never enter a
deadlock state.

Allow the system to enter a deadlock state


and then recover.

Ignore the problem and pretend that


deadlocks never occur in the system; used
by most operating systems, including
UNIX.
11/07/25 [Link] 9
Deadlock Prevention
Restrain the ways request can be made.
Mutual Exclusion – not required for sharable
resources; must hold for nonsharable resources.

Hold and Wait – must guarantee that whenever


a process requests a resource, it does not hold
any other resources.
 Require process to request and be allocated

all its resources before it begins execution, or


allow process to request resources only when
the process has none.
 Low resource utilization; starvation possible.

11/07/25 [Link] 10
Deadlock Prevention
(Cont.)
No Preemption –
 If a process that is holding some resources requests

another resource that cannot be immediately


allocated to it, then all resources currently being held
are released.
 Preempted resources are added to the list of

resources for which the process is waiting.


 Process will be restarted only when it can regain its

old resources, as well as the new ones that it is


requesting.

Circular Wait – impose a total ordering of all resource


types, and require that each process requests resources
in an increasing order of enumeration.

11/07/25 [Link] 11
Deadlock Avoidance
Requires that the system has some additional a priori information
available.
Simplest and most useful model requires that
each process declare the maximum number
of resources of each type that it may need.

The deadlock-avoidance algorithm


dynamically examines the resource-allocation
state to ensure that there can never be a
circular-wait condition.

Resource-allocation state is defined by the


number of available and allocated resources,
and the [Link]
11/07/25
demands of the processes. 12
Safe State
When a process requests an available resource, system must
decide if immediate allocation leaves the system in a safe
state.

System is in safe state if there exists a safe sequence of all


processes.

Sequence <P1, P2, …, Pn> is safe if for each Pi, the resources
that Pi can still request can be satisfied by currently available
resources + resources held by all the Pj, with j<I.

If Pi resource needs are not immediately available, then Pi
can wait until all Pj have finished.

When Pj is finished, Pi can obtain needed resources,
execute, return allocated resources, and terminate.

When Pi terminates, Pi+1 can obtain its needed resources,
and so on.

11/07/25 [Link] 13
Safe, Unsafe , Deadlock
State

11/07/25 [Link] 14
Resource-Allocation Graph
Algorithm
Claim edge Pi  Rj indicated that process Pj may
request resource Rj; represented by a dashed line.

Claim edge converts to request edge when a


process requests a resource.

When a resource is released by a process,


assignment edge reconverts to a claim edge.

Resources must be claimed a priori in the system.

11/07/25 [Link] 15
Banker’s Algorithm
Multiple instances.

Each process must a priori claim maximum


use.

When a process requests a resource it may


have to wait.

When a process gets all its resources it


must return them in a finite amount of time.

11/07/25 [Link] 16
Data Structures for the
Banker’s Algorithm

Let n = number of processes, and m = number of resources types.

Available: Vector of length m. If available [j] = k,


there are k instances of resource type Rj available.
Max: n x m matrix. If Max [i,j] = k, then process Pi
may request at most k instances of resource type Rj.
Allocation: n x m matrix. If Allocation[i,j] = k then
Pi is currently allocated k instances of Rj.
Need: n x m matrix. If Need[i,j] = k, then Pi may
need k more instances of Rj to complete its task.

Need [i,j] = Max[i,j] – Allocation [i,j].

11/07/25 [Link] 17
Safety Algorithm
1. Let Work and Finish be vectors of length m and n,
respectively. Initialize:
Work = Available
Finish [i] = false for i - 1,3, …, n.
2. Find and i such that both:
(a) Finish [i] = false
(b) Needi  Work
If no such i exists, go to step 4.
3. Work = Work + Allocationi
Finish[i] = true
go to step 2.
4. If Finish [i] == true for all i, then the system is in a
safe state.

11/07/25 [Link] 18
Resource-Request Algorithm
for Process Pi
Request = request vector for process Pi. If Requesti [j] = k
then process Pi wants k instances of resource type Rj.
1. If Requesti  Needi go to step 2. Otherwise, raise error
condition, since process has exceeded its maximum claim.
2. If Requesti  Available, go to step 3. Otherwise Pi must
wait, since resources are not available.
3. Pretend to allocate requested resources to Pi by modifying
the state as follows:
Available = Available = Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;;
• If safe  the resources are allocated to P i.
• If unsafe  Pi must wait, and the old resource-allocation
state is restored

11/07/25 [Link] 19
Example of Banker’s
Algorithm
5 processes P0 through P4; 3 resource types A
(10 instances),
B (5instances, and C (7 instances).
Snapshot at time T0:
Allocation Max Available
ABC ABCABC
P0 0 1 07 5 3 3 3 2
P1 200322
P2 302902
P3 211222
P4 0 0 24 3 3

11/07/25 [Link] 20
Example (Cont.)
The content of the matrix. Need is defined to be
Max – Allocation.
Need
ABC
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
The system is in a safe state since the sequence
< P1, P3, P4, P2, P0> satisfies safety criteria.

11/07/25 [Link] 21
Example P1 Request (1,0,2)
(Cont.)
Check that Request  Available (that is, (1,0,2)  (3,3,2) 
true.
Allocation Need Available
A B CA B C A B C
P0 0 1 0 743 230
P1 3 0 2 020
P2 3 0 1 600
P3 2 1 1 011
P4 0 0 2 431
Executing safety algorithm shows that sequence <P1, P3, P4,
P0, P2> satisfies safety requirement.
Can request for (3,3,0) by P4 be granted?
Can request for (0,2,0) by P0 be granted?

11/07/25 [Link] 22
Deadlock Detection
Allow system to enter deadlock
state

Detection algorithm

Recovery scheme

11/07/25 [Link] 23
Single Instance of Each
Resource Type
Maintain wait-for graph
 Nodes are processes.

 P  P if P is waiting for P .
i j i j

Periodically invoke an algorithm that searches


for a cycle in the graph.

An algorithm to detect a cycle in a graph


requires an order of n2 operations, where n is
the number of vertices in the graph.

11/07/25 [Link] 24

You might also like