op sy 03 ch 23

25
1 C eng 334 -O perating System s 2.3-1 Chapter 2.3 : Interprocess Communication • Processconcept • Processscheduling • Interprocesscom m unication • D eadlocks • Threads Chapter 2.3: Interprocess Communication

Upload: google

Post on 31-Oct-2014

278 views

Category:

Education


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Op Sy 03 Ch 23

1

Ceng 334 - Operating Systems 2.3-1

Chapter 2.3 : InterprocessCommunication

• Process concept • Process scheduling • Interprocess communication

• Deadlocks

• Threads

Chapter 2.3: Interprocess Communication

Page 2: Op Sy 03 Ch 23

2

Ceng 334 - Operating Systems 2.3-2

Producer - Consumer Problem

• Buffer is shared (ie., it is a shared variable)

Producer Process Consumer Process

Produce

Put in buffer Consume

Get from buffer

BUFFER

Producer Consomer Problem

Page 3: Op Sy 03 Ch 23

3

Ceng 334 - Operating Systems 2.3-3

Progress in time…..

• Both processes are started at the same time and consumer uses some old value initially

3 instead of 2!

Producer

Consumer1 2 c2

p1 p4p3p2 4321

t

Buffer

c1

Progressing time

Page 4: Op Sy 03 Ch 23

4

Ceng 334 - Operating Systems 2.3-4

A Race Condition

• Because of the timing and which process starts first

• There is a chance that different executions may end up with different results

A Race Condition

Page 5: Op Sy 03 Ch 23

5

Ceng 334 - Operating Systems 2.3-5

Critical Sections

• Critical Section– A section of code in which the process accesses

and modifies shared variables

• Mutual Exclusion– A method of preventing for ensuring that one

(or a specified number) of processes are in a critical section

Critical Section

Page 6: Op Sy 03 Ch 23

6

Ceng 334 - Operating Systems 2.3-6

Why Processes Need to Communicate?

• To synchronize their executions

• To exchange data and information

Why Interprocess Communication?

Page 7: Op Sy 03 Ch 23

7

Ceng 334 - Operating Systems 2.3-7

Rules to Form Critical Sections

1. No two processes may be simultaneously inside their CS (mutual exclusion)

2. No assumptions are made about relative process speeds or number of CPUs

3. A process outside a CS should not block other processes

4. No process should wait forever before entering its CS

Rules to Interprocess Comm.

Page 8: Op Sy 03 Ch 23

8

Ceng 334 - Operating Systems 2.3-8

Mutual Exclusion Problem : Starvation

• Also known as Indefinite Postponement• Definition

– Indefinitely delaying the scheduling of a process in favour of other processes

• Cause – Usually a bias in a systems scheduling policies (a bad

scheduling algorithm)

• Solution – Implement some form of aging

Starvation

Page 9: Op Sy 03 Ch 23

9

Ceng 334 - Operating Systems 2.3-9

Another Problem : Deadlocks

– Two (or more) processes are blocked waiting for an event that will never occur

– Generally, A waits for B to do something and B is waiting for A

– Both are not doing anything so both events never occur

Deadlocks

Page 10: Op Sy 03 Ch 23

10

Ceng 334 - Operating Systems 2.3-10

How to Implement Mutual Exclusion• Three possibilities

– Application: programmer builds some method into the program

– Hardware: special h/w instructions provided to implement ME

– OS: provides some services that can be used by the programmer

• All schemes rely on some code for– enter_critical_section, and– exit_critical_section

• These "functions" enclose the critical section

Implementig Mutual Exclusion

Page 11: Op Sy 03 Ch 23

11

Application Mutual Exclusion

Ceng 334 - Operating Systems 2.3-11

Application Mutual Exclusion

• Application Mutual Exclusion is

– implemented by the programmer

– hard to get correct, and

– very inefficient

• All rely on some form of busy waiting

(process tests a condition, say a flag, and

loops while the condition remains the same)

Page 12: Op Sy 03 Ch 23

12

Ceng 334 - Operating Systems 2.3-13

Hardware ME : Test and Set Instruction

• Perform an indivisible x:=r and r:=1

• x is a local variable

• r is a global register set to 0 initially

• repeat (test&set(x)) until x = 0;

< critical section >

r:= 0;

Test and Set

Page 13: Op Sy 03 Ch 23

13

Ceng 334 - Operating Systems 2.3-14

Hardware ME : Exchange Instruction• Exchange: swap the values of x and r• x is a local variable• r is a global register set to 1 initially

• x:= 0;repeat exchange(r, x) until x = 1;< critical section >exchange(r, x);

Note: r:= 0 and x:= 1 when the process is in CS

Harware Mutal Exculison

Page 14: Op Sy 03 Ch 23

14

Ceng 334 - Operating Systems 2.3-15

Hardware ME Characteristics

• Advantages– can be used by a single or multiple processes

(with shared memory)– simple and therefore easy to verify– can support multiple critical sections

• Disadvantages– busy waiting is used– starvation is possible– deadlock is possible (especially with priorities)

Characteristics

Page 15: Op Sy 03 Ch 23

15

Ceng 334 - Operating Systems 2.3-16

Another Hardware ME : Disabling Interrupts

• On a single CPU only one process is executed

• Concurrency is achieved by interleaving execution (usually done using interrupts)

• If you disable interrupts then you can be sure only one process will ever execute

• One process can lock a system or degrade performance greatly

Disabling Interrups

Page 16: Op Sy 03 Ch 23

16

Ceng 334 - Operating Systems 2.3-17

Mutual Exclusion Through OS

• Semaphores

• Message passing

Mutual Exculusion Trough OS.

Page 17: Op Sy 03 Ch 23

17

Ceng 334 - Operating Systems 2.3-18

Semaphores

• Major advance incorporated into many modern operating systems (Unix, OS/2)

• A semaphore is

– a non-negative integer

– that has two indivisible, valid operations

Semaphores

Page 18: Op Sy 03 Ch 23

18

Ceng 334 - Operating Systems 2.3-19

Semaphore Operations

• Wait(s)

If s > 0 then s:= s - 1

else block this process• Signal(s)

If there is a blocked process on this semaphore then wake it up

else s:= s + 1

Semaphore Oparations

Page 19: Op Sy 03 Ch 23

19

Ceng 334 - Operating Systems 2.3-20

More on Semaphores

• The other valid operation is initialisation

• Two types of semaphores– binary semaphores can only be 0 or 1

– counting semaphores can be any non-negative integer

• Semaphores are an OS service implemented using one of the methods shown already– usually by disabling interrupts for a very short

time

More on Semaphores

Page 20: Op Sy 03 Ch 23

20

Ceng 334 - Operating Systems 2.3-21

Producer - Consumer Problem: Solution by Semaphores

• Initially semaphore mutex is 1

Produce

Wait(mutex)Put in bufferSignal(mutex)

Wait(mutex)Get from bufferSignal(mutex)

Consume

CS

P-C Problem;Solution by Semephore

Page 21: Op Sy 03 Ch 23

21

Ceng 334 - Operating Systems 2.3-22

Another Example• Three processes all share a resource on which

– one draws an A

– one draws a B

– one draws a C

• Implement a form of synchronization so that the output appears ABC

think();

draw_A();

think();

draw_B();

think();

draw_C();

Process A Process B Process C

More Examples

Page 22: Op Sy 03 Ch 23

22

Ceng 334 - Operating Systems 2.3-23

• Semaphore b = 0, c = 0;

think();

draw_A();

signal(b);

wait(b);

think();

draw_B();

signal(c);

wait(c);

think();

draw_C();

Process A Process B Process C

Page 23: Op Sy 03 Ch 23

23

Ceng 334 - Operating Systems 2.3-24

Message Passing

• Provides synchronization and information

exchange

• Message Operations:

– send(destination, &message)

– receive (source, &message)

Message Passing

Page 24: Op Sy 03 Ch 23

24

Ceng 334 - Operating Systems 2.3-25

Producer - Consumer Problem Using Messages#define N 100 /*number of message slots*/

producer( ){int item; message m;

while (TRUE) {produce_item(&item);receive(consumer,&m);build_message(&m, item);send(consumer,&m);

}}

P-C Problem: Using Messages

Page 25: Op Sy 03 Ch 23

25

Ceng 334 - Operating Systems 2.3-26

Consumer( ){int item; message m;for (i=0; i<N; i++) send(producer,&m);while (TRUE) {

receive(producer,&m);extract_item(&m,&item);send(producer,&m);consume_item(item);

}}