CSE 153 Design of Operating Systems Winter 2019

Slides:



Advertisements
Similar presentations
Chapter 7: Deadlocks.
Advertisements

ICS Principles of Operating Systems Lectures 8 and 9 - Deadlocks Prof. Dmitri V. Kalashnikov dvk ics.uci.edu Slides © Prof. Nalini Venkatasubramanian.
Operating Systems Lecture Notes Deadlocks Matthew Dailey Some material © Silberschatz, Galvin, and Gagne, 2002.
Deadlock Prevention, Avoidance, and Detection.  The Deadlock problem The Deadlock problem  Conditions for deadlocks Conditions for deadlocks  Graph-theoretic.
DEADLOCK. Contents  Principles of deadlock  Deadlock prevention  Deadlock detection.
Starvation and Deadlock
Multi-Object Synchronization. Main Points Problems with synchronizing multiple objects Definition of deadlock – Circular waiting for resources Conditions.
Deadlock April 19, 2000 Instructor: Gary Kimura Slides courtesy of Hank Levy.
Deadlocks. 2 System Model There are non-shared computer resources –Maybe more than one instance –Printers, Semaphores, Tape drives, CPU Processes need.
Deadlock CSCI 444/544 Operating Systems Fall 2008.
Silberschatz, Galvin and Gagne  Operating System Concepts Deadlock and Starvation Deadlock – two or more processes are waiting indefinitely for.
Deadlock Characterization
CS 153 Design of Operating Systems Spring 2015 Lecture 11: Scheduling & Deadlock.
1 Deadlock. 2 Concurrency Issues Past lectures:  Problem: Safely coordinate access to shared resource  Solutions:  Use semaphores, monitors, locks,
CS6502 Operating Systems - Dr. J. Garrido Deadlock – Part 2 (Lecture 7a) CS5002 Operating Systems Dr. Jose M. Garrido.
Deadlocks System Model RAG Deadlock Characterization
Styresystemer og Multiprogrammering Block 3, 2005 Deadlocks Robert Glück.
Deadlocks - System Model - Deadlock characterization - Methods for handling deadlocks - Deadlock prevention,avoidance - Deadlock detection and recovery.
Silberschatz, Galvin and Gagne ©2009 Edited by Khoury, 2015 Operating System Concepts – 9 th Edition, Chapter 7: Deadlocks.
Copyright ©: Nahrstedt, Angrave, Abdelzaher1 Deadlock.
Lecture 6 Deadlock 1. Deadlock and Starvation Let S and Q be two semaphores initialized to 1 P 0 P 1 wait (S); wait (Q); wait (Q); wait (S);. signal (S);
Chapter 7: Deadlocks.
OPERATING SYSTEM CONCEPTS AND PRACTISE
Process Management Deadlocks.
Synchronization Deadlocks and prevention
Chapter 7: Deadlocks.
CSE 120 Principles of Operating
ITEC 202 Operating Systems
G.Anuradha Ref:- Galvin
Chapter 7: Deadlocks Source & Copyright: Operating System Concepts, Silberschatz, Galvin and Gagne.
Operating Systems (CS 340 D)
Chapter 7: Deadlocks.
Operating System: DEADLOCKS
Introduction to Operating Systems
OPERATING SYSTEMS DEADLOCKS
Chapter 7 Deadlocks.
Chapter 7: Deadlocks.
CSCI 511 Operating Systems Chapter 7 Deadlock
Process Deadlocks.
Deadlock B.Ramamurthy CSE421 1/11/2019 B.Ramamurthy.
G.Anuradha Ref:- Galvin
Chapter 7: Deadlocks.
Outline Deadlocks, dead lock prevention, avoidance.
CSc 552 Advanced Unix Process deadlock deadlock prevention
DPNM Lab. Dept. of CSE, POSTECH
Chapter 8: Deadlocks.
Deadlock B.Ramamurthy CSE421 2/23/2019 B.Ramamurthy.
Deadlocks Session - 13.
DEADLOCK.
Chapter 7: Deadlocks.
Deadlock Hank Levy 1.
SE350: Operating Systems Lecture 5: Deadlock.
Deadlock B.Ramamurthy CSE421 4/23/2019 B.Ramamurthy.
OPERATING SYSTEMS DEADLOCKS.
IT3002 Computer Architecture
Deadlock B.Ramamurthy CSE421 5/1/2019 B.Ramamurthy.
OPERATING SYSTEMS DEADLOCKS.
DEADLOCKS.
CENG334 Introduction to Operating Systems
Chapter 7: Deadlocks.
Chapter 7: Deadlocks.
CSE 542: Operating Systems
CSE 542: Operating Systems
Chapter 8: Deadlocks Deadlock Characterization
Deadlock B.Ramamurthy CSE421 8/28/2019 B.Ramamurthy.
Deadlock B.Ramamurthy CSE421 9/3/2019 B.Ramamurthy.
Presentation transcript:

CSE 153 Design of Operating Systems Winter 2019 Lecture 11: Deadlock

Today: Deadlock—the deadly embrace! Synchronization– we can easily shoot ourselves in the foot Incorrect use of synchronization can block all processes You have likely been intuitively avoiding this situation already Consider: processes that use multiple critical sections/need different resources If one process tries to access a resource that a second process holds, and vice-versa, they can never make progress We call this situation deadlock, and we’ll look at: Definition and conditions necessary for deadlock Representation of deadlock conditions Approaches to dealing with deadlock CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock Definition Deadlock is a problem that can arise: When processes compete for access to limited resources When processes are incorrectly synchronized Definition: Deadlock exists among a set of processes if every process is waiting for an event that can be caused only by another process in the set Process 1 Process 2 lockA->Acquire(); … lockB->Acquire(); lockB->Acquire(); … lockA->Acquire(); CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock Example (2) Whether deadlock occurs or not depends on the order of operations! CSE 153 – Lecture 12 – Deadlock

Conditions for Deadlock Deadlock can exist if and only if the following four conditions hold simultaneously: 1. Mutual exclusion – At least one resource must be held in a non-sharable mode 2. Hold and wait – There must be one process holding one resource and waiting for another resource 3. No preemption – Resources cannot be preempted (critical sections cannot be aborted externally) 4. Circular wait – There must exist a set of processes [P1, P2, P3,…,Pn] such that P1 is waiting for P2, P2 for P3, etc. CSE 153 – Lecture 12 – Deadlock

Dining Lawyers Each lawyer needs two chopsticks to eat. An abstract way of looking at it: dining lawyers Example: Dining philosophers -> lawyers, because it makes philosophers sound stupid. Lawyers really are stupid. Of course, I said this, and then someone in the class came up and asked me for recommendation for law school -- "I know you hate lawyers, but ..." Maybe we should make it: dining politicians! Analogy with real life. Dining lawyers, draw circle with five plates Eating at a really cheap Chinese restaurant, with not enough chopsticks to go around. What if they all grab their chopstick at the same time? Won’t always get deadlock – depends on the precise order of execution. Each lawyer needs two chopsticks to eat. Each grabs chopstick on the right first.

Lets get formal for a minute Deadlock can be described using a resource allocation graph (RAG) The RAG consists of a set of vertices P={P1, P2, …, Pn} of processes and R={R1, R2, …, Rm} of resources A directed edge from a process to a resource, PiRi, means that Pi has requested Rj A directed edge from a resource to a process, RiPi, means that Rj has been allocated to Pi Each resource has a fixed number of units If the graph has no cycles, deadlock cannot exist If the graph has a cycle, deadlock may exist CSE 153 – Lecture 12 – Deadlock

Same cycle…but no deadlock. Why? CSE 153 – Lecture 12 – Deadlock RAG Example P1 P1 R3 R1 R1 R3 P2 P2 P3 P4 P3 R2 R2 A cycle…and deadlock! Same cycle…but no deadlock. Why? CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock A Simpler Case If all resources are single unit and all processes make single requests, then we can represent the resource state with a simpler waits-for graph (WFG) The WFG consists of a set of vertices P={P1, P2, …, Pn} of processes A directed edge PiPj means that Pi has requested a resource that Pj currently holds If the graph has no cycles, deadlock cannot exist If the graph has a cycle, deadlock exists CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Dealing With Deadlock There are four approaches for dealing with deadlock: Ignore it – how lucky do you feel? Prevention – make it impossible for deadlock to happen Avoidance – control allocation of resources Detection and Recovery – look for a cycle in dependencies CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock Prevention Prevention – Ensure that at least one of the necessary conditions cannot happen Mutual exclusion Make resources sharable (not generally practical) Hold and wait Process cannot hold one resource when requesting another Preemption OS can preempt resource (costly) Circular wait Impose an ordering (numbering) on the resources and request them in order (popular implementation technique) CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock prevention One shot allocation: ask for all your resources in one shot; no more resources can be requested What ingredient does this prevent? Comments? Preemption Nice: Give up a resource if what you want is not available Aggressive: steal a resource if what you want is not available Hierarchical allocation: Assign resources to classes Can only ask for resources from a higher number class than what you hold now CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock Avoidance Prevention can be too conservative – can we do better? Avoidance Provide information in advance about what resources will be needed by processes System only grants resource requests if it knows that deadlock cannot happen Avoids circular dependencies Tough Hard to determine all resources needed in advance Good theoretical problem, not as practical to use CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Banker’s Algorithm The Banker’s Algorithm is the classic approach to deadlock avoidance for resources with multiple units 1. Assign a credit limit to each customer (process) Maximum credit claim must be stated in advance 2. Reject any request that leads to a dangerous state A dangerous state is one where a sudden request by any customer for the full credit limit could lead to deadlock A recursive reduction procedure recognizes dangerous states 3. In practice, the system must keep resource usage well below capacity to maintain a resource surplus Rarely used in practice due to low resource utilization CSE 153 – Lecture 12 – Deadlock

Possible System States CSE 153 – Lecture 12 – Deadlock

Banker’s Algorithm Simplified OK OK OK UNSAFE 3 3 3 3 3 3 3 3 P1 P2 P1 P2 P1 P2 P1 P2 CSE 153 – Lecture 12 – Deadlock

Detection and Recovery If we don’t have deadlock prevention or avoidance, then deadlock may occur In this case, we need to detect deadlock and recover from it To do this, we need two algorithms One to determine whether a deadlock has occurred Another to recover from the deadlock Possible, but expensive (time consuming) Implemented in VMS Run detection algorithm when resource request times out CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock Detection Detection Traverse the resource graph looking for cycles If a cycle is found, preempt resource (force a process to release) Expensive Many processes and resources to traverse Only invoke detection algorithm depending on How often or likely deadlock is How many processes are likely to be affected when it occurs CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock Recovery Once a deadlock is detected, we have two options… 1. Abort processes Abort all deadlocked processes Processes need to start over again Abort one process at a time until cycle is eliminated System needs to rerun detection after each abort 2. Preempt resources (force their release) Need to select process and resource to preempt Need to rollback process to previous state Need to prevent starvation CSE 153 – Lecture 12 – Deadlock

CSE 153 – Lecture 12 – Deadlock Deadlock Summary Deadlock occurs when processes are waiting on each other and cannot make progress Cycles in Resource Allocation Graph (RAG) Deadlock requires four conditions Mutual exclusion, hold and wait, no resource preemption, circular wait Four approaches to dealing with deadlock: Ignore it – Living life on the edge Prevention – Make one of the four conditions impossible Avoidance – Banker’s Algorithm (control allocation) Detection and Recovery – Look for a cycle, preempt or abort CSE 153 – Lecture 12 – Deadlock

Other problems with synchronization Performance problems Lock contention Only for spinlocks? No; consider blocking locks Lock convoying: several processes need locks in the same order. Slow process gets in first CSE 153 – Lecture 12 – Deadlock

Advanced Synchronization Lock free data structures Can we avoid using locks? Transactional memory (e.g., Intel TSX) System support for lock free operation CSE 153 – Lecture 12 – Deadlock

Lock-Free Data Structures Assume compare and swap atomic instruction Limitation: swap a single memory location Only supported on some processor architectures Rewrite critical section Create copy of data structure Modify copy Swap in pointer to copy iff no one else has Restart if pointer has changed (aka source code control) CSE 153 – Lecture 12 – Deadlock

Lock-Free Bounded Buffer consume_item() { //consumer code do { mine = ConsistentCopy(p); update_copy(); } while ((compare&swap(mine, p) != p); return item. } No locks! What’s the trick? CSE 153 – Lecture 12 – Deadlock