Presentation on theme: "1 Interprocess Communication 1. Ways of passing information 2. Guarded critical activities (e.g. updating shared data) 3. Proper sequencing in case of."— Presentation transcript:
1 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.
2 Race Conditions Two processes want to access shared memory at the same time. The final result depends on who runs precisely when.
3 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!)
4 Critical Regions (2) Mutual exclusion using critical regions
5 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. Petersons solution 5. Test-and-set locks (TSL) Priority inversion problem (H loops while L is in critical section)
6 Strict Alternation Proposed solution to critical region problem (a) Process 0. (b) Process 1.
7 Petersons 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 others turn.
8 Test-and-set lock Entering and leaving a critical region using the TSL instruction Atomic instruction, implemented in hardware
9 Sleep and Wakeup Producer-consumer problem with fatal race condition
10 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.
11 Semaphores The producer-consumer problem using semaphores
12 Mutexes Implementation of mutex_lock and mutex_unlock for synchronization of threads in user space
13 Monitors (1) Example of a monitor - only one process inside the monitor at any time
14 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
15 Message Passing The producer-consumer problem with N messages
16 Barriers Use of a barrier –processes approaching a barrier –all processes but one blocked at barrier –last process arrives, all are let through
17 Dining Philosophers Philosophers eat/think Eating needs 2 forks Pick one fork at a time How to prevent deadlock
18 A nonsolution to the dining philosophers problem
19 Deadlock-free code for Dining Philosophers (1)
20 Deadlock-free code for Dining Philosophers (2)