Operating Systems, 122 Practical Session 8 Deadlocks 1.

Slides:



Advertisements
Similar presentations
Chapter 7: Deadlocks.
Advertisements

Deadlock Prevention, Avoidance, and Detection
Deadlock and Starvation
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.
Lecture 7: Deadlock     Necessary Conditions for Deadlock     Deadlock Prevention - Havender's Linear Ordering Deadlock Avoidance Deadlock Detection &
MODERN OPERATING SYSTEMS Third Edition ANDREW S
Deadlock CS Introduction to Operating Systems.
Chapter 81 Deadlock is:  A set of blocked processes each holding a resource and waiting to acquire a resource held by another process in the set.  Example.
Ceng Operating Systems Chapter 2.4 : Deadlocks Process concept  Process scheduling  Interprocess communication  Deadlocks Threads.
1 CSC 539: Operating Systems Structure and Design Spring 2005 Process deadlock  deadlock prevention  deadlock avoidance  deadlock detection  recovery.
Chapter 3 Deadlocks TOPICS Resource Deadlocks The ostrich algorithm
MODERN OPERATING SYSTEMS Third Edition ANDREW S. TANENBAUM Chapter 6 Deadlocks Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All.
Avishai Wool lecture Introduction to Systems Programming Lecture 5 Deadlocks.
Deadlock Chapter 3 R1 R2 P2P1 Allocated Requested.
1 Wednesday, June 28, 2006 Command, n.: Statement presented by a human and accepted by a computer in such a manner as to make the human feel that he is.
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.
CS 450 OPERATING SYSTEMS DEADLOCKS Manju Muralidharan Priya.
1 Lecture 8: Deadlocks Operating System Spring 2008.
1 School of Computing Science Simon Fraser University CMPT 300: Operating Systems I Ch 7: Deadlock Dr. Mohamed Hefeeda.
Deadlock Detection with One Resource of Each Type (1)
Chapter 7: Deadlocks. 7.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts Bridge Crossing Example Traffic only in one direction. Each section.
Chapter 6 Deadlocks Resources Introduction Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
1 School of Computing Science Simon Fraser University CMPT 300: Operating Systems I Ch 7: Deadlock Dr. Mohamed Hefeeda.
7: Deadlocks1 DEADLOCKS EXAMPLES: "It takes money to make money". You can't get a job without experience; you can't get experience without a job. BACKGROUND:
Operating Systems Part III: Process Management (Deadlocks)
Operating Systems (OS)
1 MODERN OPERATING SYSTEMS Third Edition ANDREW S. TANENBAUM Chapter 6 Deadlocks Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc.
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 7: Deadlocks.
MODERN OPERATING SYSTEMS Third Edition ANDREW S. TANENBAUM Chapter 6 Deadlocks Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All.
Chapter 8: Deadlocks Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection Recovery from Deadlock.
Operating Systems, 152 Practical Session 8 Deadlocks 1.
Deadlock cs550 Operating Systems David Monismith.
CS 346 – Chapter 7 Deadlock –Properties –Analysis: directed graph Handle –Prevent –Avoid Safe states and the Banker’s algorithm –Detect –Recover.
Deadlocks. Deadlock handling Deadlock prevention Deadlock avoidance Deadlock detection Deadlock recovery.
Styresystemer og Multiprogrammering Block 3, 2005 Deadlocks Robert Glück.
Lecture 12 Handling Deadlock – Prevention, avoidance and detection.
Chapter 8 Deadlocks. Objective System Model Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection.
1 CS.217 Operating System By Ajarn..Sutapart Sappajak,METC,MSIT Chapter 6 Deadlocks Slide 1 Chapter 6 Deadlocks.
Deadlocks Introduction to Operating Systems: Module 7.
Deadlocks 12/02/2015. What is a deadlock ? System has a finite set of resources. Resource can have one or more instances. Processes compete for resources.
Operating Systems Unit 4: – Dining Philosophers – Deadlock – Indefinite postponement Operating Systems.
Silberschatz, Galvin and Gagne ©2009 Edited by Khoury, 2015 Operating System Concepts – 9 th Edition, Chapter 7: Deadlocks.
Deadlock A deadlock is a situation wherein two or more competing actions are waiting for the other to finish, and thus neither ever does. Example : “When.
Deadlock CS Introduction to Operating Systems.
Deadlocks CPE Operating Systems
Deadlocks Lots of resources can only be used by one process at a time. Exclusive access is needed. Suppose process A needs R1 + R2 and B needs R1 + R2.
Chapter 7: Deadlocks.
Operating Systems, Summer Semester 2011
Operating Systems, Winter Semester 2011
MODERN OPERATING SYSTEMS Third Edition ANDREW S
Chapter 6 : Deadlocks What is a Deadlock?
Advanced Operating System Fall 2009
Operating System: DEADLOCKS
Lecture 19: Deadlock: Conditions, Detection and Avoidance
Process Deadlocks.
Practical Session 12 Deadlocks
Chapter 7: Deadlocks System Model Deadlock Characterization
Deadlocks Definition A set of processes is in a Deadlock state when every process in the set is waiting for an event that can only be caused by another.
CSc 552 Advanced Unix Process deadlock deadlock prevention
MODERN OPERATING SYSTEMS Third Edition ANDREW S
Deadlocks Peng Lu In a multiprogramming environment, several processes may compete for a finite number of resources. A process requests resources; if the.
The relation between the process and
Lecture 27 Syed Mansoor Sarwar
Lecture 19: Deadlock: Conditions, Detection and Avoidance
Chapter 7: Deadlocks.
MODERN OPERATING SYSTEMS Third Edition ANDREW S
Presentation transcript:

Operating Systems, 122 Practical Session 8 Deadlocks 1

The ultimate form of starvation. A set of processes is deadlocked if each process in the set is waiting for an event that only another process in the set can cause.

Conditions for Deadlock 1.Mutual exclusion – resources may be used by only one process 2.Hold and wait – a process can request for a resource while holding one 3.No preemption - only the process holding a resource can release it 4.Circular wait - two or more processes each waiting for a resource held by the other

Solving the Deadlock Problem 1.The Ostrich ‘Algorithm’ – Ignore the problem 2.Deadlock Detection & Recovery – Detect a deadlock by finding a cyclic graph of processes and resources, and recover 3.Deadlock Avoidance – Detect safe and unsafe states; Banker’s algorithm 4.Deadlock Prevention – Ensure that at least one of the four conditions for a deadlock is never satisfied

Question 1 Assume resources are ordered as: R 1, R 2,...R n Prove formally that if processes always request resources by order (i.e. if a process requests R k after R j then k>j) then a deadlock will not occur. For simplicity assume resources are unique. That is, there is a single unit of each resource.

Question 1 – a simple example There are 2 processes P 1,P 2 and resource R 1,R 2. P 1 has R 1 and P 2 has R 2. P 1 requests R 2 and is now waiting for R 2 to release it. For a deadlock to occur P 2 needs to request R 1. However, this is in contrast to the assumption that resources can only be requested in ascending order. That is, condition 4 (Circular wait) is prevented if resources are requested in ascending order.

Question 1 – a more formal proof Let P 1,...,P n denote the processes in the system and R 1,…R k the resources. Falsely assume that a deadlock may occur in this system. Specifically, for a deadlock to occur a subset P i1,...,P im of {P 1,...,P n } which satisfies the following condition must exist: P i1 -> (R j,1 )->P i2 - (R j,2 )->...-> (R j,m-1 )->P im -> (R j,m )->P i1 (*) Where P i -> R k ->P j is used to describe the following relation: P i requests a resource R k held by P j.

Question 1 – a more formal proof Each process P i,s, (s≠1) holds resource R j,s-1 and requests resource R j,s. This means that j,s-1<j,s for any s (since the resources are numbered, and are requested in an ascending order). We receive the following inequality which defines the resource ordering: j,1<j,2<...<j,m. In a deadlock, eq. (*) must hold. Thus we conclude that j,m<j,1 and j,1<j,m. That is, a circular wait is not possible and the system is deadlock- free.

Question 1 – Simple Explanation Lets assume we have a deadlock. A circular wait must therefore exist: P i1 - (R j,1 )->P i2 - (R j,2 )->P i3 - (R j,3 )->...- (R j,m-1 )->P im - (R j,m )->P i1 (*) One of these resources’ index is the largest of all resources indices listed. It doesn’t matter which one. Lets assume its R j,2 (since we deal with a circle it doesn’t matter which one we pick). P i2 -> (R j,2 )->P i3 -> (R j,3 )->… (*) This resource is held by process P i3, process P i2 is asking for it, and P i3 requires R j3 at the same time. Lets look at R j3 : If j3 > j2 : this contradicts R j2 being the largest index resource. If j3 = j2 : it makes no sense P i3 is asking for a resource it already has? It breaks the waiting circle. If j3 < j2 : this contradicts the fact that processes ask for resources only in ascending order. Contradictions in every scenario means that our initial assumption of deadlock is false!

Dining Philosophers: Monitor-based implementation monitordiningPhilosophers monitor diningPhilosophers condition self[N]; integer state[N]; pick_sticks procedure pick_sticks(i) state[i] := HUNGRY; test(i); if state[i] <> EATING then wait(self[i]); put_sticks procedure put_sticks(i) state[i] := THINKING; test(LEFT); test(RIGHT); test procedure test(i) if (state[LEFT] <> EATING && state[RIGHT] <> EATING && state[i] = HUNGRY) then { state[i] := EATING; signal(self[i]); } end monitor 10

Question 2 (from exam 2003 moed b, q.1) נוסיף למימוש של 5 פילוסופים בעזרת monitor, צלחת מרכזית אשר מתמלאת ע " י מלצר. צלחת זו מכילה 5 מנות לכל היותר. כל פילוסוף, לאחר שלקח שני מקלות, לוקח מהצלחת המרכזית בדיוק 3 מנות ( אחת אחרי השנייה ). לאחר לקיחת המנות ואכילתן הוא מניח את המקלות ומסיים. א ) כתוב את הקוד החדש עבור הפילוסופים ועבור המלצר ( על בסיס המימוש הקיים ). כתוב את כל הקוד הנדרש גם בתוך המוניטור וגם מחוצה לו (2 פונקציות פילוסוף ומלצר ).

Question 2.a condition variables fullemptyinPlate  We add 2 condition variables : full, empty and an integer :inPlate = 0  We add 2 procedures to the monitor: fillPlate procedure fillPlate if (inPlate<5){ inPlate++ empty.signal() } else full.wait() takeFromPlate procedure takeFromPlate if(inPlate = = 0) empty.wait() inPlate-- full.signal()

Question 2.a update the philosopher’s function: philosopher procedure philosopher(int i) while(TRUE){ think(); pick_sticks(i); for(j = 1 to 3) takeFromPlate() eat() put_sticks(i); } and add the waiter’s function: waiter Procedure waiter() while(TRUE) fillPlate()

Question 2.b ב ) בסעיפים הבאים הנח כי בתחילה הצלחת המרכזית מלאה וכי המלצר זריז ( מביא 3 מנות בבת אחת ). נוסיף עוד תנאי כי המלצר ממלא את הצלחת רק אחרי שפילוסוף כלשהו סיים לאכול ( הניח את המקלות ). שנו את הפתרון לסעיף א ' בהתאם.

Question 2.b still_eating We add another condition varaiable: still_eating finished_eating and integer: finished_eating = 0. inPlate = 5 Since we want the waiter to fill the plate only when a philosopher has finished eating we have to assume that the plate is full in the beginning, i.e inPlate = 5 (we don’t need the full condition variable anymore).

Question 2.b Cont’ fillPlate procedure fillPlate if (finished_eating==0) still_eating.wait() inPlate+=3 finished_eating-- empty.signal() takeFromPlate procedure takeFromPlate if(inPlate = = 0){ empty.wait() } inPlate -- /* the only change is that we don’t use full anymore */

Question 2.b Cont’ We also add two lines to the put_sticks function : put_sticks(i) procedure put_sticks(i) state[i] := THINKING; test(LEFT); test(RIGHT); finished_eating ++ still_eating.signal()

Question 2.c האם יתכן deadlock? הנח כי המלצר זריז.

Question 2.c In the case of 5 philosophers this cannot happen: as shown in class, at any given moment there may be 2 philosophers that eat - at most. Each one asks for 3 dishes and there are 5 available dishes. At least one of the philosophers will manage 3 dishes on her plate and will eventually wake up the waiter.

Question 2.d אם יש 6 פילוסופים במקום 5, האם עתה יתכן deadlock?

Question 2.d In the case of 6 philosophers, 3 philosophers may eat at the same time. In this case, one possible scenario is that the first takes 2 dishes to her plate, the second takes 2 as well, and the third grabs the last one. As a result, no one will reach the put_sticks phase and the waiter will not be woken.

Question 3 Six philosophers sit around a table, with a large plate of food in the middle. Forks (represented as ‘F’) and knives (represented as ‘K’) are arranged as shown below. Each philosopher obeys the following algorithm: 1) Grab the closest knife. 2) Grab the closest fork. 3) Carve and devour a piece of broccoli [yummy]. 4) Put down the knife and fork back to where they were. Can a deadlock occur? Indicate why this algorithm satisfies our deadlock conditions, or which one(s) it avoids. If you said that the system could deadlock, describe a reasonable deadlock avoidance scheme. If you said otherwise, specify which scheme is used in this solution.

Answer 3 A deadlock will not occur since the algorithm defines a partial ordering, removing the ability to have circular requests. The easiest way to see the partial order is to label knives 1,2, 3 and forks 4,5,6. Clearly we only acquire in ascending order, and as shown in the previous questions this prevents circular waiting

Banker’s Algorithm Safe – a state is said to be safe if a.It is not deadlocked. b.There is some scheduling order in which every process can run to completion even if all of them suddenly request their maximum number of resources immediately.

Banker’s Algorithm Resources: A.Vectors: 1.E 1.E - Number of Existing resources of each type. 2.P 2.P – Number of resources of each type in Possession by the processes. 3.A 3.A – Number of Available resources of each type. B.Matrices: (rows are processes and columns are resources) 1.C 1.C – Current allocation matrix 2.R 2.R – Request matrix

Banker’s Algorithm R A 1.Look for a row in matrix R whose unmet resource needs are all smaller than or equal to A. If no such row exists, the system may eventually deadlock. A 2.Assume the process of the row chosen finishes (which is possible). Mark that process as terminated and add all its resources to the A vector safe unsafe 3.Repeat steps 1 and 2 until either all processes are marked terminated, which means safe, or until a deadlock occurs, which means unsafe.

Question 4 current allocationmax demandstill needs Process r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 p1p p2p p3p p4p p5p r1r1 r2r2 r3r3 r4r Consider the following snapshot of a system with five processes (p 1,... p 5 ) and four resources (r 1,... r 4 ). currently Available resources

Question 4 a. Compute what each process still might request and fill in the “still needs” columns. support b. Is this system currently deadlocked, or will any process become deadlocked? Use the baker’s algorithm to support your answer

Question 4 a) current allocation max demandstill needs Process r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 p1p p2p p3p p4p p5p

Question 4 a) Not deadlocked and will not become deadlocked. Using the Banker’s algorithm, we determine the process execution order: p 1, p 4, p 5, p 2, p 3. r1r1 r2r2 r3r3 r4r b) currently available resources current allocation max demandstill needs Process r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 p1p p2p p3p p4p p5p

Question 4 c. If a request from p 3 arrives for (0, 1, 0, 0), can that request be safely granted immediately? In what state (deadlocked, safe, unsafe) would immediately granting the request leave the system? Which processes, if any, are or may become deadlocked if this whole request is granted immediately?

Question 4 r1r1 r2r2 r3r3 r4r currently available resources current allocation max demandstill needs Process r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 r1r1 r2r2 r3r3 r4r4 p1p p2p p3p p4p p5p

Question 4 c) Change available to (2, 0, 0, 0) and p3’s row of “still needs” to (6, 5, 2, 2). Now p1, p4, and p5 can finish. Available will now be (4, 6, 9, 8) meaning that neither p2 nor p3’s “still needs” can be satisfied. So, it is not safe to grant p3’s request. Correct answer NO. Processes p2 and p3 may deadlock.

Question 5 (7.6 from Silberschats) If deadlocks are controlled (avoided) by applying the banker‘s algorithm, which of the following changes can be made safely and under what circumstances: 1.Increase Available (add new resources) 2.Decrease Available (remove resources) 3.Increase Max for one process 4.Increase the number of processes

Question 5 1.Increasing the number of resources available can't create a deadlock since it can only decrease the number of processes that have to wait for resources. 2.Decreasing the number of resources can cause a deadlock.

Question 5 3.Error condition could be created for two possible reasons: A.From Banker's algorithm point of view, process exceeds its maximum claim; B.Condition that was thought to be safe ceases to be safe 4.If the number of processes is increased, the state remains safe, since we can first run the “old” processes, until they terminate, and release all their resources. Now, when all the system’s resources are free, we can choose a “new” process and give it all its demands. It will finish and again all the system’s resources will be free. Again, we choose a new process and give it all its demands, etc.

Question 6 (7.9 from Silberschats) Consider a system consisting of m resources of the same type, being shared by n processes. Resources can be requested and released by processes only one at a time. Show that the system is deadlock free if the following two conditions hold: 1. Each process needs between 1 and m resources. 2. The sum of maximum needs is less than m+n.

Question 6 circular wait By contradiction, assume that the 4 conditions for deadlock exist in the system and thus there is a group of processes involved in a circular wait. P 1,...,P k, k≤nD 1,...,D k H 1,...,H k Let these processes be P 1,...,P k, k≤n, their current demands be D 1,...,D k and the number of resources each of them holds be H 1,...,H k. P 1 ->P 2 ->...->P k ->P 1 The circular wait condition should look like: P 1 ->P 2 ->...->P k ->P 1, but in fact it is simpler: M 1,...,M n P 1,...,P n Let M 1,...,M n be total (maximum) demands of processes P 1,...,P n. Then a circular wait can occur only if all resources are in use and every process hasn't acquired all its resources: H H k =m D i >=1 H H k =m and D i >=1 for 1≤ i≤k.

Question 6 M i =H i +D i M M k ≥m+k Since M i =H i +D i, the sum of maximum demands of the processes involved in a circular wait is: M M k ≥m+k. P k+1,...,P n Note that the remaining processes’ P k+1,...,P n maximum demands are at least 1: M i ≥ 1, M k M n ≥ n-k M i ≥ 1, k+1 ≤ i ≤ n and thus M k M n ≥ n-k. The total sum of maximum demands is thus: M M n = M M k +M k M n ≥ m+k+(n-k)=m+n M M n = M M k +M k M n ≥ m+k+(n-k)=m+n. m+n It is defined that sum of all maximal needs is strictly less than m+n, thus we have a contradiction.

Question 6 – Intuitive Explanation If we have a deadlock all resources are held by the various processes, otherwise some process can take a resource and “advance” and we are not in a deadlock. Therefore: Every process needs at least 1 resource more, or else we don’t have a deadlock (it is free to “advance”). Therefore: Total sum of maximum demands is: This contradicts the assumption total sum of maximum demands is less than m+n.

Question 7 True or False Monitors prevent deadlocks from ever occurring.

Question 7 If monitor code has a circular dependency, it can deadlock. Assume there are two monitors a,b and two processes A,B. A holds a and waits for b. B holds b and waits for a.