synchronization methods in message passing model

13
Synchronization Methods in Message Passing Model

Upload: berenice-crawford

Post on 05-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Synchronization Methods in Message Passing Model

Synchronization Methodsin Message Passing Model

Page 2: Synchronization Methods in Message Passing Model

Message Passing Model

Channel SpecificationSpecify how to communicate

Synchronization MechanismsThe synchronization mechanism between sender and

receiverBlock/nonblock send, block/nonblock receiveGuarded communication

Page 3: Synchronization Methods in Message Passing Model

Channel Specification

Direct namingSimple but less powerfulNot suitable for specification of server-client systems

Port namingServer use a single port to receive client requestSimple, suitable for single server, multiple client systems

Global naming (mailbox)Suitable for multiple server, multiple client systemsHard to implement for multiple processor systemsWhen a message is received or removed, all servers should

be notified

Page 4: Synchronization Methods in Message Passing Model

Synchronization

Blocked send, blocked receive (BSBR)Easy to implement but less powerfulExample: Ada Rendezvous

Nonblocked send, blocked receive (NSBR)Most message passing systems use this modelneed unbounded message queue to assure correctness

Nonblocked send, nonblocked receive (NSNR)More powerful than NSBR and BSBRBut difficult to reason the correctness of the system

The state of the system can be very different at the time the message is received

Page 5: Synchronization Methods in Message Passing Model

Producers-Consumer Problem

Consider multiple producers and multiple consumersAny producer’s output can be processed by any consumer

Use port namingEach process has a portWon’t work since each producer needs to decide which

consumer the produced item should be sent to Not conform to the spec

Use a buffer managerAssume only port naming is availableThe manager manage a shared bufferSimilar to mailbox, but user implements shared box

Page 6: Synchronization Methods in Message Passing Model

Producers-Consumer Problem

Solution based on buffer manager and port namingHow to synchronize the producers and consumers with the

bounded buffer Buffer full Stop receiving messages from producers Buffer empty Stop receiving messages from consumers Need blocked send to achieve the control

Manager needs two ports, one for consumers, one for producers Otherwise, cannot block only consumers or only producers Still have problem: How to read from two ports

Solution 1: Use blocked receive and two threads Manager cannot do blocked receive on both ports

Solution 2: Use nonblocked receive Poll two ports using BSNR

Page 7: Synchronization Methods in Message Passing Model

Producer-Consumer Problem

Manager process (Pmamnager) reqport: manager receives requests from consumersdataport: manager receives data items from producersBSNR

Receive returns immediately, it returns true if a message is ready in the port, otherwise, false

Send only returns after the message is received count: # data items in Pmamnager’s buffer

Page 8: Synchronization Methods in Message Passing Model

Producer-Consumer Problem

Producer Process: repeat

produce item;send (dataport, item);

until false;

Consumer Process: repeat

send (reqport, localport);while not receive (localport, item) do nothing;consume item;

until false;

Page 9: Synchronization Methods in Message Passing Model

Producer-Consumer Problem

Manager Process: repeat forever

if count = 0 then{ while not receive (dataport, item) do nothing; put item in the queue; count := count + 1;}else if count = N then{ while notreceive (reqport, port) do nothing; take item from queue; count := count - 1; send (port, item);}else { if receive (dataport, item) then

{ put item in the queue; count := count + 1; } if receive (reqport, port) then { take item from queue; count := count - 1; send (port, item); }}

Page 10: Synchronization Methods in Message Passing Model

Guarded Command

Guarded commandGuarded statement: G S

When the guard G is true, execute statement S

Guarded command in CSPif G1 S1 || G2 S2 || . . . || Gn Sn fi

When Gi is true, execute Si

If more than one guard is true, then choose one of them arbitrarily and execute the corresponding statement

If none of the guards are true, then terminate the statement without doing anything

Page 11: Synchronization Methods in Message Passing Model

Guarded Communication

Guarded communication: Statements in a guarded command contain message passing

operationsMessage passing is based on BSBRA guarded communication statement is ready when

The guard is true For receive statement: The message to be received is ready For send statement: The receiver of the message is ready

If none of the guards are true, then terminate the statement If some guards are true and no message is ready then

blocked

Page 12: Synchronization Methods in Message Passing Model

Producer-Consumer Problem

Manager Process: repeat select

when count < N { receive (dataport, item); -- from producer put item in the queue; count := count + 1;}when count > 0{ receive (reqport, port); -- from consumer take item from queue; send (port, item); count := count - 1;}

until false;

Page 13: Synchronization Methods in Message Passing Model

Guarded Communication

Guarded communication in Ada: select when G1 => accept P1 do .... end; when G2 => accept P2 do .... end; ….. else ....;end select

Now guarded communication is adopted in socketGradually being adopted for server implementationBetter performance than thread based implementation