Interprocess Communication 1. Ways of passing information 2. Guarded critical activities (e.g. updating shared data) 3. Proper sequencing in case of dependencies 2 and 3 apply to threads as well. 1 Race Conditions Two processes want to access shared memory at the same time. The final result depends on who runs precisely when. 2 Critical Regions (1) Part of the program where shared memory is accessed. Four conditions to provide correct and efficient communication: 1. Mutual exclusion: No two processes simultaneously in critical region 2. No assumptions made about speeds or numbers of CPUs 3. Progress: No process running outside its critical region may block another process 4. Fairness: No process must wait forever to enter its critical region (assuming fair scheduling!) 3 Critical Regions (2) Mutual exclusion using critical regions 4 Attempts for Mutual Exclusion Using Busy Waiting 1. Disabling all interrupts (only by kernel!) 2. Lock variables => fatal race condition 3. Strict alternation using spin locks - violates condition 3 4. Peterson’s solution 5. Test-and-set locks (TSL) Priority inversion problem (H loops while L is in critical section) 5 Strict Alternation Proposed solution to critical region problem (a) Process 0. (b) Process 1. 6 Peterson’s Solution Interested(process)=False => process is not in and does not want to enter critical section If both are interested, a process can enter only if it is the other’s turn. 7 Test-and-set lock Entering and leaving a critical region using the TSL instruction Atomic instruction, implemented in hardware 8 Sleep and Wakeup Producer-consumer problem with fatal race condition9 Semaphores Integer variable with two atomic operations • down: if 0, then go to sleep; if >0, then decrement value • up: increment value and let a sleeping process to perform a down Implementation by disabling all interrupts by the kernel. 10 Semaphores The producer-consumer problem using semaphores 11 Mutexes Implementation of mutex_lock and mutex_unlock for synchronization of threads in user space 12 Monitors (1) Example of a monitor - only one process inside the monitor at any time 13 Monitors (2) • Outline of producer-consumer problem with monitors – only one monitor procedure active at one time – buffer has N slots Condition variables with wait and signal 14 Message Passing The producer-consumer problem with N messages 15 Barriers • Use of a barrier – processes approaching a barrier – all processes but one blocked at barrier – last process arrives, all are let through 16 Dining Philosophers • • • • Philosophers eat/think Eating needs 2 forks Pick one fork at a time How to prevent deadlock 17 A nonsolution to the dining philosophers problem 18 Deadlock-free code for Dining Philosophers (1) 19 Deadlock-free code for Dining Philosophers (2) 20 The Readers and Writers Problem 21 The Sleeping Barber Problem 22 Solution to the Sleeping Barber Problem 23