Date post: | 28-Mar-2015 |
Category: |
Documents |
Upload: | juan-bradshaw |
View: | 212 times |
Download: | 0 times |
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 condition3. Strict alternation using spin locks - violates
condition 34. Peterson’s solution5. 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
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.
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 slotsCondition 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)
21
The Readers and Writers Problem
22
The Sleeping Barber Problem
23
Solution to the Sleeping Barber Problem