Download presentation
Presentation is loading. Please wait.
Published byHilary Cook Modified over 6 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.