260 likes | 461 Views
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. Race Conditions. Two processes want to access shared memory at the same time.
E N D
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.
Race Conditions Two processes want to access shared memory at the same time. The final result depends on who runs precisely when.
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!)
Critical Regions (2) Mutual exclusion using critical regions
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)
Strict Alternation Proposed solution to critical region problem (a) Process 0. (b) Process 1.
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.
Test-and-set lock Entering and leaving a critical region using the TSL instruction Atomic instruction, implemented in hardware
Sleep and Wakeup Producer-consumer problem with fatal race condition
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.
Semaphores The producer-consumer problem using semaphores
Mutexes Implementation of mutex_lock and mutex_unlock for synchronization of threads in user space
Monitors (1) Example of a monitor - only one process inside the monitor at any time
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
Message Passing The producer-consumer problem with N messages
Barriers • Use of a barrier • processes approaching a barrier • all processes but one blocked at barrier • last process arrives, all are let through
Dining Philosophers • Philosophers eat/think • Eating needs 2 forks • Pick one fork at a time • How to prevent deadlock