50
message passing model

Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Embed Size (px)

Citation preview

Page 1: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

message passing model

Page 2: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

buffer

producer consumer

PRODUCER-CONSUMER PROBLEM

Page 3: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Two semaphores

empty (i.v. 1)full (i.v. O)

Page 4: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

{

while (TRUE) {

<generate message to put in the buffer >;

P (empty);

<put new message in the buffer>;

V (full);

}

}

void producer(void)

Page 5: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

{

while (TRUE) {

P (full);

<take one message from the buffer> ;

V(empty);

<consume the message>;

}

}

void consumer(void)

Page 6: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

buffer

producer consumer

Page 7: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Three semaphores

empty (i.v. N)

full (i.v. O)

mutex (i.v. 1)

Page 8: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

{ while (TRUE)

{< generate one message to be put into

the buffer >;

P (empty);

P (mutex);

<put the new message in the buffer>;

V (mutex);

V(full);}

}

void producer (void)

Page 9: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

{while (TRUE)

{P (full);

P(mutex);

<take one message from the buffer>;

V(mutex);

V(empty);

<consume the message>;}

}

void consumer(void)

Page 10: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

MESSAGE PASSING MODEL

Page 11: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

send (destination, message)

The functions of message passing are normally provided in the form of a couple of primitives:

receive (source,message)

Page 12: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

One process sends information in the form of a message to another process designated by a destination

Page 13: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

A process receives information by executing the receive primitive, to obtain the source of the sending process and the message

Page 14: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Design issues of message systems:

AddressingSynchronization

Page 15: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

AddressingDirect addressing

The send primitive includes a specific identifier for the destination process

send (P2, message)

Page 16: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

The receive can be handled in one of the two ways:

The process explicitly design a sending process:

receive (P1, message)

Page 17: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

If it is impossible to specify in advance the source process

Page 18: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

implicit addressing: the source parameter specifies a value yelded when the receive operation has been performed to indicate the sender process.

Page 19: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Indirect addressing

Messages are not directly sent from senders to receivers

Page 20: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Messages are sent to intermedia shared data structures (mailbox) that can temporaly hold messages

Page 21: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

The relationship between senders and receivers can be:

one-to-onemany-to-onemany-to-many

Page 22: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

A one-to-one relationship allows private communication to be set up betweeen a couple of processes.

Page 23: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

A many-to-one relationship is useful for client-server interaction.

The mailbox is often referred to as a port

Page 24: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

client/server model

server

client

port

P1

R

Pn

Page 25: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

A one-to-many relationship allows for one sender and multiple receivers.

Page 26: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

It is useful for applications where messages are to be broadcasted to groups of reveiver processes.

Page 27: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Message

header

body

origine

message type

destination ID

source ID

message length

control information

message contents

Page 28: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

SYNCHRONIZATION

The communication of a message between two processes implies some level of synchronization

Page 29: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

The receiver cannot receive a message until it has been sent by another process

SYNCHRONIZATION

Page 30: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

In addition, we need to specify what happens to a process after a send or receice primitive.

Page 31: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Message passing may be either blocking or nonblocking (synchronous or asynchronous)

Page 32: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Blocking send: the sending process is blocked until the message is received either by the receiving process or by the mailbox.

Page 33: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Nonblocking send: the sending process sends the message and immediately resumes operation.

Page 34: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Blocking receive: the receiver blocks until a message is available.

Page 35: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Nonblocking receive:if there is no waiting message, the process continues executing, abandoning the attempt to receive.

Page 36: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Rendez vous betveen the sender and the receiver: both send and receive are blocked by the operation

Page 37: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Extended rendezvous: the sender is blocked until the receiver completed the implied action.

Page 38: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

KERNEL OF A PROCESS SYSTEM

Page 39: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

A small set of data structures and functions that provide the core support to any concurrent program.

Page 40: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

The role of a kernel is to provide a virtual processor to each process

Page 41: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

PCBs process_in_execution ready-process-queues semaphores and blocked- process-queues

Kernel data structures

Page 42: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Context switch management: save and restore the PCBs of the processes.

Kernel functions

Page 43: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Decision of the ready process to which assign the CPU.

Kernel functions

Page 44: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Interrupt handling

Operations on processes (system calls)

Page 45: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

The kernel starts executing when an interrupt occurs

External interrupts from peripheral devices

Page 46: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Internal interrupts or traps triggered by the executing process

Page 47: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

A stack is associated to any process

Example

Page 48: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

Double set of general registers R1, R2, …, Rn and R’1, R’2, …, R’n and two registers SP and SP’ (user and kernel)

Example

Page 49: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

a1

a n

b

P PCB

kernel stack

R1

Rn

SP

PC

PSz

g

d

SP’

R1’

Rn’

hg PC value of the process that executed the SVC

Process-in- execution

P stack

d PS value of the process that executed the SVCe interrupt handler addressz kernel PSW

Page 50: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM

a1’

a n’

b’

P PCBkernel stack

R1

Rn

SP

PC

PSz

g ’

d ’

SP’

R1’

Rn’

P stack

P’ PCB

P’stack

a1

a nb g

d

a1’

a n’b’ g

’d’

h

h iret address z Kernel PSW

Process- in -execution