Presentation is loading. Please wait.

Presentation is loading. Please wait.

Deadlocks (part II) Deadlock avoidance – (not reasonable)

Similar presentations


Presentation on theme: "Deadlocks (part II) Deadlock avoidance – (not reasonable)"— Presentation transcript:

1 Deadlocks (part II) Deadlock avoidance – (not reasonable)
Deadlock detection Resource Allocation Graphs Resource Pool and Counting Semaphores

2 Resource Tables

3 Deadlock Definition A deadlock is a situation in which two or more competing actions are each waiting for the other to finish, and thus neither ever does. P P2 P(R1) P(R2) P(R2) P(R1) CS CS V(R2) V(R1) V(R1) V(R2)

4 Deadlock 4 necessary conditions
Mutual Exclusion – Processes claim exclusive control of the resources they require Wait For – processes hold resources already allocated to them while waiting for additional resources No Pre-emption – resources cannot be removed from the process using them until it is used to completion Circular Wait – A circular chain of processes exist in which each process holds one or more resources that are requested by the next process in the chain.

5 Deadlock Avoidance (reasonable?)
Designing an Operating System (Linux, Windows, iOS, Android etc.) that avoids deadlocks would require removing at least 1 of the 4 necessary conditions of deadlock. Many systems programmers would argue that the removal of any one of these 4 would limit the system too much and the gain of having a deadlock-free system would not be worth it. Just like driving a car, which can on (hopefully rare) occasions get a flat tire, it is popular to design systems that may on rare occasions go into deadlock and the system detects and deals with the problem at that time.

6 Deadlock Detection We need a way to detect that 2 or more processes are in a deadlock. Allow the system to run normally and occasionally have the Operating System check for deadlocks. If a deadlock is detected, the Operation System should attempt to fix the situation as best as it can which includes asking the users of a deadlocked process to volunteer it killing their process which will return resources to the system, which will then end the deadlock.

7 Asking the user to end Deadlock

8 Review of Data Structures and Algorithms
Graphs can be recorded in memory Algorithms can be run on graphs that answer questions: What is the shortest path from point A to point B? Is a graph fully connected (yes or no)? Does a graph contain a cycle (yes or no)? If an existing graph which doesn’t currently have a cycle, was to have an edge added to it, would the graph now have a cycle?

9 Representing Graphs in Memory
Adjacency matrix

10 Representing Graphs in Memory
Adjacency lists

11 Deadlock (DAG with a cycle)
A deadlock is a situation in which two or more competing actions are each waiting for the other to finish, and thus neither ever does. P P2 P(R1) P(R2) P(R2) P(R1) CS CS V(R2) V(R1) V(R1) V(R2)

12 Resource Pool A collection of identical resources Ex)
A room full of printers Computer Storage (on the stack or heap)

13 Counting Semaphores When a system has multiple identical copies of a resource, a Counting Semaphore can be used to allow mutual access to that pool of identical resources. S=8 P(S) { if (S > 0) { S = S - 1; } else OS moves the process to the queue waiting for S Update resource tables and the Resource Allocation Graph

14 Counting Semaphores And the V function for counting semaphores is V(S)
{ if (a process is waiting for an S) OS moves the process to the ready queue } else S = S + 1; Update the resource tables and the RAG )

15 RAG – Resource Allocation Graph (with counting Semaphores)

16 Dijkstra’s Banker’s Algorithm – Safe State
Total common resources is 8

17 Bankers Algorithm - 2 Resource Pools (not in a Safe State)

18 P(S) using Banker’s Algorithm
{ if (System would stay in a Safe State) { S = S - 1; } else OS moves the process to the queue waiting for S Update resource tables and the Resource Allocation Graph


Download ppt "Deadlocks (part II) Deadlock avoidance – (not reasonable)"

Similar presentations


Ads by Google