Don Porter Portions courtesy Emmett Witchel

Slides:



Advertisements
Similar presentations
Operating Systems Part III: Process Management (Process Synchronization)
Advertisements

Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Process Synchronization A set of concurrent/parallel processes/tasks can be disjoint or cooperating (or competing) With cooperating and competing processes.
Process Synchronization Continued 7.2 The Critical-Section Problem.
Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Chapter 6 (a): Synchronization.
Previously… Processes –Process States –Context Switching –Process Queues Threads –Thread Mappings Scheduling –FCFS –SJF –Priority scheduling –Round Robin.
Chapter 6 Process Synchronization Bernard Chen Spring 2007.
Chapter 6: Process Synchronization
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 5: Process Synchronization.
5.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts with Java – 8 th Edition Chapter 5: CPU Scheduling.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Chapter 6: Process Synchronization.
Process Synchronization. Module 6: Process Synchronization Background The Critical-Section Problem Peterson’s Solution Synchronization Hardware Semaphores.
Operating System Concepts and Techniques Lecture 12 Interprocess communication-1 M. Naghibzadeh Reference M. Naghibzadeh, Operating System Concepts and.
CH7 discussion-review Mahmoud Alhabbash. Q1 What is a Race Condition? How could we prevent that? – Race condition is the situation where several processes.
China’s Software Industry August 2006 Instructor: Hengming Zou, Ph.D.
1 Mutual Exclusion: Primitives and Implementation Considerations.
© 2004, D. J. Foreman 1 The Dining Philosophers Problem.
Concurrency.
Race Conditions Critical Sections Deker’s Algorithm.
Semaphores. Announcements No CS 415 Section this Friday Tom Roeder will hold office hours Homework 2 is due today.
Race Conditions CS550 Operating Systems. Review So far, we have discussed Processes and Threads and talked about multithreading and MPI processes by example.
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Emery Berger University of Massachusetts, Amherst Operating Systems CMPSCI 377 Lecture.
Synchronization CSCI 444/544 Operating Systems Fall 2008.
Operating Systems CSE 411 CPU Management Oct Lecture 13 Instructor: Bhuvan Urgaonkar.
Synchronization Andy Wang Operating Systems COP 4610 / CGS 5765.
Concurrency Recitation – 2/24 Nisarg Raval Slides by Prof. Landon Cox.
9/8/2015cse synchronization-p1 © Perkins DW Johnson and University of Washington1 Synchronization Part 1 CSE 410, Spring 2008 Computer Systems.
1 Lecture 9: Synchronization  concurrency examples and the need for synchronization  definition of mutual exclusion (MX)  programming solutions for.
1 Thread Synchronization: Too Much Milk. 2 Implementing Critical Sections in Software Hard The following example will demonstrate the difficulty of providing.
The Critical Section Problem
Concurrency, Mutual Exclusion and Synchronization.
28/10/1999POS-A1 The Synchronization Problem Synchronization problems occur because –multiple processes or threads want to share data; –the executions.
Process Synchronization Continued 7.2 Critical-Section Problem 7.3 Synchronization Hardware 7.4 Semaphores.
COMP 111 Threads and concurrency Sept 28, Tufts University Computer Science2 Who is this guy? I am not Prof. Couch Obvious? Sam Guyer New assistant.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Mutual Exclusion.
11/18/20151 Operating Systems Design (CS 423) Elsa L Gunter 2112 SC, UIUC Based on slides by Roy Campbell, Sam.
1 Concurrent Processes. 2 Cooperating Processes  Operating systems allow for the creation and concurrent execution of multiple processes  concurrency.
Background Concurrent access to shared data may result in data inconsistency Maintaining data consistency requires mechanisms to ensure the orderly execution.
CS399 New Beginnings Jonathan Walpole. 2 Concurrent Programming & Synchronization Primitives.
CSCI-375 Operating Systems Lecture Note: Many slides and/or pictures in the following are adapted from: slides ©2005 Silberschatz, Galvin, and Gagne Some.
1 Lecture 8: Concurrency: Mutual Exclusion and Synchronization Advanced Operating System Fall 2012.
Computer Architecture and Operating Systems CS 3230: Operating System Section Lecture OS-5 Process Synchronization Department of Computer Science and Software.
Operating Systems CSE 411 CPU Management Dec Lecture Instructor: Bhuvan Urgaonkar.
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles Synchronization Emery Berger and Mark Corner University.
CPS110: Thread cooperation Landon Cox. Constraining concurrency  Synchronization  Controlling thread interleavings  Some events are independent  No.
1 Critical Section Problem CIS 450 Winter 2003 Professor Jinhua Guo.
Concurrency: Locks and synchronization Slides by Prof. Cox.
Synchronization Questions answered in this lecture: Why is synchronization necessary? What are race conditions, critical sections, and atomic operations?
Chapter 6 Synchronization Dr. Yingwu Zhu. The Problem with Concurrent Execution Concurrent processes (& threads) often access shared data and resources.
Synchronization Mutual Exclusion Solutions using shared variables + problems such as deadlocks, starvation, progressiveness, busy wait Prof. R K Joshi.
CS703 – Advanced Operating Systems
Background on the need for Synchronization
COMPSCI210 Recitation 12 Oct 2012 Vamsi Thummala
CSCI 511 Operating Systems Chapter 5 (Part A) Process Synchronization
143a discussion session week 3
CSCI 511 Operating Systems Chapter 5 (Part A) Process Synchronization
Andy Wang Operating Systems COP 4610 / CGS 5765
Module 7a: Classic Synchronization
Lecture 2 Part 2 Process Synchronization
Background and Motivation
Grades.
CSE 451: Operating Systems Autumn 2003 Lecture 7 Synchronization
CSE 153 Design of Operating Systems Winter 19
CSE 153 Design of Operating Systems Winter 2019
CS333 Intro to Operating Systems
Chapter 6: Synchronization Tools
Lecture 20: Synchronization
Process/Thread Synchronization (Part 2)
CPS110: Thread cooperation
Presentation transcript:

Don Porter Portions courtesy Emmett Witchel Too Much Milk Don Porter Portions courtesy Emmett Witchel

Critical Sections are Hard, Part 2 The following example will demonstrate the difficulty of providing mutual exclusion with memory reads and writes Hardware support is needed The code must work all of the time Most concurrency bugs generate correct results for some interleavings Designing mutual exclusion in software shows you how to think about concurrent updates Always look for what you are checking and what you are updating A meddlesome thread can execute between the check and the update, the dreaded race condition

Fridge and Milk are Shared Data Structures Thread Coordination Too much milk! Jack Look in the fridge; out of milk Go to store Buy milk Arrive home; put milk away Jill Look in fridge; out of milk Go to store Buy milk Arrive home; put milk away Oh, no! Fridge and Milk are Shared Data Structures

Formalizing “Too Much Milk” Shared variables “Look in the fridge for milk” – check a variable “Put milk away” – update a variable Safety property At most one person buys milk Liveness Someone buys milk when needed How can we solve this problem?

How to think about synchronization code Every thread has the same pattern Entry section: code to attempt entry to critical section Critical section: code that requires isolation (e.g., with mutual exclusion) Exit section: cleanup code after execution of critical region Non-critical section: everything else There can be multiple critical regions in a program Only critical regions that access the same resource (e.g., data structure) need to synchronize with each other while(1) { Entry section Critical section Exit section Non-critical section }

The Correctness Conditions Safety Only one thread in the critical region Liveness Some thread that enters the entry section eventually enters the critical region Even if some thread takes forever in non-critical region Bounded waiting A thread that enters the entry section enters the critical section within some bounded number of operations. Failure atomicity It is OK for a thread to die in the critical region Many techniques do not provide failure atomicity while(1) { Entry section Critical section Exit section Non-critical section }

Solution #0 Is this solution while(1) { if (noMilk) { // check milk (Entry section) if (noNote) { // check if roommate is getting milk leave Note; //Critical section buy milk; remove Note; // Exit section } // Non-critical region Is this solution 1. Correct 2. Not safe 3. Not live 4. No bounded wait 5. Not safe and not live It works sometime and doesn’t some other times Threads can be context switched between checking and leaving note Live, note left will be removed Bounded wait (‘buy milk’ takes a finite number of steps) Not safe, Threads can get context switched after checking whether there is a note, but before leaving a note Is live, a note left will be removed. What if we switch the order of checks?

Solution #1 Is this solution turn := Jill // Initialization while(1) { while(turn ≠ Jack) ; //spin while (Milk) ; //spin buy milk; // Critical section turn := Jill // Exit section // Non-critical section } while(1) { while(turn ≠ Jill) ; //spin while (Milk) ; //spin buy milk; turn := Jack // Non-critical section } Is this solution 1. Correct 2. Not safe 3. Not live 4. No bounded wait 5. Not safe and not live At least it is safe Issue: if Jill is out of town, Jack blocks forever. Either participant should be able to show up (if alone) and enter the critical section. Safe, must have turn to buy milk. Sure, and the bound is 1!

Solution #2: Peterson’s Algorithm Variables: ini: thread Ti is executing , or attempting to execute, in CS turn: id of thread allowed to enter CS if multiple want to Claim: We can achieve mutual exclusion if the following invariant holds before thread i enters the critical section: Intuitively: j doesn’t want to execute or it is i’s turn to execute ((¬in0  (in0  turn = 1))  in1)  ((¬in1  (in1  turn = 0))  in0)  ((turn = 0)  (turn = 1)) = false {(¬inj  (inj  turn = i ))  ini}

Save, live, and bounded waiting; but only 2 threads Peterson’s Algorithm in0 = in1 = false; Jack while (1) { in0:= true; turn := Jill; while (turn == Jill && in1) ;//wait Critical section in0 := false; Non-critical section } Jill while (1) { in1:= true; turn := Jack; while (turn == Jack && in0);//wait Critical section in1 := false; Non-critical section } Spin! Explain straight-line code: Jack, then Jill without animation turn=Jack, in0 = true, in1:= true turn=Jack, in0 = false, in1:= true turn=Jill, in0 = true Save, live, and bounded waiting; but only 2 threads

Too Much Milk: Lessons Peterson’s works, but it is really unsatisfactory Limited to two threads Solution is complicated; proving correctness is tricky even for the simple example While thread is waiting, it is consuming CPU time How can we do better? Use hardware to make synchronization faster Define higher-level programming abstractions to simplify concurrent programming