1 interprocess communication 1. ways of passing information 2. guarded critical activities (e.g....

Post on 28-Mar-2015

212 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 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

top related