Top Banner
CHAPTER 6 Concurrency: Deadlock and Starvation
51
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: chapter_6.pdf

C H A P T E R 6

Concurrency: Deadlock and Starvation

Page 2: chapter_6.pdf

Objectives

Describe two categories of resources

List and explain the conditions for deadlock

Define strategies for deadlock problem

Define deadlock prevention and describe deadlock prevention strategies related to each of the conditions for deadlock

Explain the difference between deadlock prevention and deadlock avoidance

Understand two approaches to deadlock avoidance

2

Page 3: chapter_6.pdf

Objectives

Explain the fundamental difference in approach between deadlock detection and deadlock prevention or deadlock avoidance

Understand how an integrated deadlock strategy can be designed

3

Page 4: chapter_6.pdf

Topics

Principles of Deadlock

Resource Categories

Deadlock Strategies

Deadlock Prevention

Deadlock Avoidance

Deadlock Detection

Integrated Deadlock Strategy

4

Page 5: chapter_6.pdf

Principle of Deadlock

The permanent blocking of a set of processes that either compete for system resources or communicate with each other

A set of processes is deadlocked when each process in the set is blocked awaiting an event that can only be triggered by another blocked process in the set

Permanent

No efficient solution

Page 6: chapter_6.pdf

I need quad A and

B

I need quad B and

C

I need quad C and

B

I need quad D and

A

Illustration of Deadlock

Potential Deadlock

Page 7: chapter_6.pdf

HALT until B is

free

HALT until C is

free

HALT until D is

free

HALT until A is

free

Illustration of Deadlock

Actual Deadlock

Page 8: chapter_6.pdf

Resource Categories

Reusable Resources Consumable

Resources

Can be used by one process at a time and not depleted by that use

Processes obtain resources that they later release for reuse by other processes

Example of reusable resourses: Processors, I/O channels, main

and secondary memory, files, databases, and semaphores

Deadlock occurs if each process holds one resource and requests the other

Created (produced) and destroyed (consumed) by a process

May take a rare combination of events to cause deadlock

E.g. - Interrupts, signals, messages, and information in I/O buffers

Page 9: chapter_6.pdf

Reusable Resources Example 1

Page 10: chapter_6.pdf

Reusable Resources Example 1…

Deadlock occurs when the multiprogramming system interleaves the execution of two processes as follows:

P0

P1

Q0

Q1

P2

Q2

Page 11: chapter_6.pdf

Reusable Resources Example 2

Space is available for allocation of 200Kbytes, and the following sequence of events occur:

P1

……

Request 80Kb

……

Request 60 Kb

P2

……

Request 70Kb

……

Request 80 Kb

Deadlock occurs if both processes progress to their second request

Page 12: chapter_6.pdf

Consumable Resources Example

Consider a pair of processes, in which each process attempts to receive a message from the other process and then send a message to the other process:

P1 . . .

. . . Receive(P2);

Send(P2, M1);

P2 . . .

. . . Receive(P1);

Send(P1, M2);

Deadlock occurs if the Receive( ) is blocking

Page 13: chapter_6.pdf

Resource Allocation Graph

Page 14: chapter_6.pdf

Resource Allocation Graph

P1 hold Ra, Request Rb

P2 hold Rb, Request Rc

P3 hold Rc, Request Rd

P4 hold Rd, Request Ra

Page 15: chapter_6.pdf

Conditions for Deadlock

Mutual Exclusion

Hold-and-Wait

No Preemption

Circular Wait

Only one process at a time can use a resource

A process may hold allocated resources

while awaiting assignment of others

No resource can be forcibly removed from a process holding it

A closed chain of processes exists, such that each process holds at least one resource needed by the next process in the chain

Page 16: chapter_6.pdf

Approaches for Deadlock

Three approaches in dealing with deadlock

• adopt a policy that eliminates one of the conditions

Prevent Deadlock

• make the appropriate dynamic choices based on the current state of resource allocation

Avoid Deadlock

• attempt to detect the presence of deadlock and take action to recover

Detect Deadlock

Page 17: chapter_6.pdf

Deadlock Prevention

To design a system in such a way that the possibility of deadlock is excluded.

Method falling into two classes:

1. Indirect method

– prevent the occurrence of one of the three necessary conditions

2. Direct method

– to prevent the occurrence of circular wait.

Page 18: chapter_6.pdf

Preventing the Conditions

Mutual Exclusion

MUST BE ALLOWED!!

If access to resources require ME, then ME must be supported by the OS.

Hold-and-Wait

require that a process request all of its required resources at one time and blocking the process until all requests can be granted simultaneously

Page 19: chapter_6.pdf

Preventing the Conditions…

No Preemption

if a process holding certain resources is denied a further request, that process must release its original resources and request them again

OS may preempt a lower priority process and require it to release its resources

Circular Wait

define a linear ordering of resource types

Page 20: chapter_6.pdf

Deadlock Avoidance

A decision is made dynamically whether the current resource allocation request will, if granted, potentially lead to a deadlock

Requires knowledge of future process requests

Two approaches:

1. Resource Allocation Denial

2. Process Initiation Denial

Page 21: chapter_6.pdf

Deadlock Avoidance Approaches

• do not grant an incremental resource request to a process if this allocation might lead to deadlock

Resource Allocation Denial

• do not start a process if its demands might lead to deadlock

Process Initiation Denial

Page 22: chapter_6.pdf

Deadlock Avoidance Approaches…

Consider a system of n processes and m different types of resources.

Definition of the vectors and matrices:

Resource Vector= R = (R1, R2,…, Rm)

Total amount of each resource in the system

Available Vector = V = (V1, V2,…, Vm)

Total amount of each resource not allocated to any process.

Page 23: chapter_6.pdf

Deadlock Avoidance Approaches…

Claim Matrix =C =

Cij = requirement of process i for resource j

one row dedicated to each process

Gives the maximum requirement of each process.

C11, C12,…, C1m

C21, C22,…, C2m

Cn1, Cn2,…, Cnm

. .

. . . .

. .

.

Page 24: chapter_6.pdf

Deadlock Avoidance Approaches…

Allocation Matrix =A =

Aij = current allocation to process i of resource j

Shows current allocation of resources for each process.

A11, A12,…, A1m

A21, A22,…, A2m

An1, An2,…, Anm

. .

. . . .

. .

.

Page 25: chapter_6.pdf

Resource Allocation Denial

The strategy refer to as the banker’s algorithm

State of the system reflects the current allocation of resources to processes

consists of two vectors, Resource and Available and two matrices, Claim and Allocation

Safe state is where there is at least one sequence that does not result in deadlock

i.e. all the process can be run to completion

Unsafe state a state this is not safe.

Page 26: chapter_6.pdf

Example 1

Figure 6.7a shows the state of a system consisting of four processes and three resources.

Total amount of resources R1, R2 and R3 are 9, 3 and 6 units. (Resource Vector)

In the current state, allocations have been made to the four processes and leaving only 1 unit of R2 and 1 unit of R3 available (Available Vector).

Is this a safe state?

Page 27: chapter_6.pdf

R1 R2 R3

P1 3 2 2

P2 6 1 3

P3 3 1 4

P4 4 2 2

R1 R2 R3

P1 1 0 0

P2 6 1 2

P3 2 1 1

P4 0 0 2

R1 R2 R3

9 3 6

Claim Matrix Allocation Matrix

Resource Vector

R1 R2 R3

0 1 1

Available Vector

Initial State

Example 1…

Page 28: chapter_6.pdf

Example 1…

Steps needed to check either it is a safe state or not:

1. Construct the Need Matrix

Need Matrix = Claim Matrix – Allocation Matrix

o it shows how many resources needed by each program in order for the process to complete execution.

R1 R2 R3

P1 2 2 2

P2 0 0 1

P3 1 0 3

P4 4 2 0

Page 29: chapter_6.pdf

Example 1…

2. To check either the current state is save or not safe,

o Compare the content of available vector with the need matrix.

o Is there any process can be allocated with the available resources and the process can run to completion.

o For this example the system has 1 unit of R2 and 1 unit of R3. Based from the claim matrix P2 can runs to completion.

Page 30: chapter_6.pdf

Example 1…

3. After a process runs to completion, it will release all the resources to system. Construct new available vector.

o New AV = Current Av + Allocation Matrix of the chosen process

= 0 1 1 + 6 1 2

= 6 2 3

Page 31: chapter_6.pdf

R1 R2 R3

P1 3 2 2

P2 0 0 0

P3 3 1 4

P4 4 2 2

R1 R2 R3

P1 1 0 0

P2 0 0 0

P3 2 1 1

P4 0 0 2

R1 R2 R3

6 2 3

Claim Matrix Allocation Matrix

Available Vector

P2 Runs to Completion

Example 1…

Page 32: chapter_6.pdf

R1 R2 R3

P1 0 0 0

P2 0 0 0

P3 3 1 4

P4 4 2 2

R1 R2 R3

P1 0 0 0

P2 0 0 0

P3 2 1 1

P4 0 0 2

R1 R2 R3

7 2 3

Claim Matrix Allocation Matrix

Available Vector

P1 Runs to Completion

Example 1…

Page 33: chapter_6.pdf

R1 R2 R3

P1 0 0 0

P2 0 0 0

P3 0 0 0

P4 4 2 2

R1 R2 R3

P1 0 0 0

P2 0 0 0

P3 0 0 0

P4 0 0 2

R1 R2 R3

9 3 4

Claim Matrix Allocation Matrix

Available Vector

P3 Runs to Completion

Example 1…

Page 34: chapter_6.pdf

R1 R2 R3

P1 0 0 0

P2 0 0 0

P3 0 0 0

P4 0 0 0

R1 R2 R3

P1 0 0 0

P2 0 0 0

P3 0 0 0

P4 0 0 0

R1 R2 R3

9 3 6

Claim Matrix Allocation Matrix

Available Vector

When all processes run to completion, the value for available vector is equal to resource vector

P4 Runs to Completion

Example 1…

Page 35: chapter_6.pdf

Example 2

Figure 6.8a shows the state of a system consisting of four processes and three resources.

Total amount of resources R1, R2 and R3 are 9, 3 and 6 units. (Resource Vector)

In the current state, allocations have been made to the four processes and leaving only 1 unit of R1, 1 unit of R2 and 2 unit of R3 available (Available Vector).

Suppose P1 make a request for 1 unit of R1 and 1 unit of R3.

Is this a safe state?

Page 36: chapter_6.pdf

Initial State

R1 R2 R3

P1 3 2 2

P2 6 1 3

P3 3 1 4

P4 4 2 2

R1 R2 R3

P1 1 0 0

P2 5 1 1

P3 2 1 1

P4 0 0 2

R1 R2 R3

9 3 6

Claim Matrix Allocation Matrix

Resource Vector

R1 R2 R3

1 1 2

Available Vector

Example 2…

Page 37: chapter_6.pdf

R1 R2 R3

P1 2 0 1

P2 5 1 1

P3 2 1 1

P4 0 0 2

R1 R2 R3

0 1 1

Claim Matrix Allocation Matrix

Available Vector

R1 R2 R3

P1 3 2 2

P2 6 1 3

P3 3 1 4

P4 4 2 2

State after P1 request for 1 unit of R1 and R3

It is unsafe to grant additional request from P1 because it will lead to unsafe state DEADLOCK!!!

Example 2…

Page 38: chapter_6.pdf

Deadlock Avoidance Approaches

Advantage: Does not necessarily preempt and rollback processes

compared to deadlock detection.

But has a number of restrictions: Maximum resource requirement must be stated in

advance

Processes under consideration must be independent; no synchronization requirements

There must be a fixed number of resources to allocate

No process may exit while holding resources

Page 39: chapter_6.pdf

Deadlock Detection

Does not limit resource access or restrict process actions.

Resource access are granted to process whenever possible.

OS will periodically performs

an algorithm to check if deadlock present

an algorithm to recover from deadlock

Page 40: chapter_6.pdf

Deadlock Detection…

The deadlock check can be performed at every resource request.

Checking at each resource request has two advantages: i. Leads to early detection

ii. Algorithm is simple

because it is based on incremental changes to the state of the system.

Disadv: such frequent checks will consume CPU time.

Page 41: chapter_6.pdf

Deadlock Detection Algorithm

The Allocation matrix and Available vector will be used.

Request matrix Q is define such that Qij represent

the amount of resources of type j requested by process i.

Page 42: chapter_6.pdf

Deadlock Detection Algorithm…

Then the following steps are performed:

1. Mark each process that has a row in the Allocation matrix of all zeros.

i.e. no resources are allocated to the process.

2. Initialize a temporary vector W to equal to Available vector.

3. Find an index i such that process i is currently unmarked and ith row of Q <= W. If no such row found terminate the algorithm.

4. If exist, mark process i and add the corresponding row of the Allocation matrix to W. Then return to step 3.

Page 43: chapter_6.pdf

Deadlock exist if and only if there are unmarked processes at the end of algorithm

Strategy in this algorithm is to find a process whose resource requests can be satisfied with the available resources and the assume that those resources are granted and the process runs to completion and release its resources.

Then the algorithm will look for another process.

Deadlock Detection Algorithm…

Page 44: chapter_6.pdf

Deadlock Detection Algorithm…

This algorithm will not guarantee to prevent deadlock, it will depend on the order in which requested are granted.

It is only to determine either deadlock is currently exist or not.

Page 45: chapter_6.pdf

Example

Page 46: chapter_6.pdf

Example…

The algorithm proceeds as follows: 1. Mark P4, because P4 has no allocated resources.

2. Set W = ( 0 0 0 0 1 )

3. The request of P3 is less than equal to W, so mark P3 and set W = W + ( 0 0 0 1 0)

= ( 0 0 0 1 1 )

4. No other unmarked process has a row in Q is less than or equal to W. Terminate the algorithm.

The algorithm concludes with P1 and P2 unmarked. This processes are deadlocked.

Page 47: chapter_6.pdf

Deadlock Detection Recovery

Needed when deadlock is detected.

The following approaches are possible:

1. Abort all deadlocked processes (one of the most common solution adopted in OS)

2. Back up each deadlocked process to some previously defined checkpoint, and restart all process.

Page 48: chapter_6.pdf

Deadlock Detection Recovery…

3. Successively abort deadlock processes until deadlock no longer exists

After each abortion, need to reinvoke the deadlock detection algorithm to see either deadlock still exists or not.

4. Successively preempt some resources from processes and give them to other processes until deadlock no longer exists

a process that has a resource preempted must be rolled back prior to its acquisition of that resource.

Page 49: chapter_6.pdf

Deadlock Detection Recovery…

For approaches 3 and 4: a victim process needs to be selected according to:

Least amount of processor time consumed so far

Least number of lines of output produced so far

Most estimated time remaining

Least total resources allocated so far

Lowest priority

Page 50: chapter_6.pdf

Integrated Deadlock Strategy

Combine the previous approaches into the following way:

Group resources into a number of different resource classes

Use the linear ordering strategy (prevention of circular wait) to prevent deadlock between resource classes

Within a resource class, use the algorithm that is most appropriate for that class.

Page 51: chapter_6.pdf

Integrated Deadlock Strategy…

Example of resource classes:

Swappable space

Blocks of memory on secondary storage for use in swapping processes.

Process resources

Assignable devices, such as tape drives and files

Main memory

Assignable to processes in pages and segments

Internal resources

Such as I/O channels