message passing model. buffer producerconsumer producer-consumer problem
TRANSCRIPT
![Page 1: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/1.jpg)
message passing model
![Page 2: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/2.jpg)
buffer
producer consumer
PRODUCER-CONSUMER PROBLEM
![Page 3: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/3.jpg)
Two semaphores
empty (i.v. 1)full (i.v. O)
![Page 4: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/4.jpg)
{
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/5.jpg)
{
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/6.jpg)
buffer
producer consumer
![Page 7: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/7.jpg)
Three semaphores
empty (i.v. N)
full (i.v. O)
mutex (i.v. 1)
![Page 8: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/8.jpg)
{ 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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/9.jpg)
{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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/10.jpg)
MESSAGE PASSING MODEL
![Page 11: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/14.jpg)
Design issues of message systems:
AddressingSynchronization
![Page 15: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/17.jpg)
If it is impossible to specify in advance the source process
![Page 18: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/19.jpg)
Indirect addressing
Messages are not directly sent from senders to receivers
![Page 20: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/20.jpg)
Messages are sent to intermedia shared data structures (mailbox) that can temporaly hold messages
![Page 21: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/24.jpg)
client/server model
server
client
port
P1
R
Pn
![Page 25: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/25.jpg)
A one-to-many relationship allows for one sender and multiple receivers.
![Page 26: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/28.jpg)
SYNCHRONIZATION
The communication of a message between two processes implies some level of synchronization
![Page 29: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/31.jpg)
Message passing may be either blocking or nonblocking (synchronous or asynchronous)
![Page 32: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/33.jpg)
Nonblocking send: the sending process sends the message and immediately resumes operation.
![Page 34: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/34.jpg)
Blocking receive: the receiver blocks until a message is available.
![Page 35: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/37.jpg)
Extended rendezvous: the sender is blocked until the receiver completed the implied action.
![Page 38: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/38.jpg)
KERNEL OF A PROCESS SYSTEM
![Page 39: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/40.jpg)
The role of a kernel is to provide a virtual processor to each process
![Page 41: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/42.jpg)
Context switch management: save and restore the PCBs of the processes.
Kernel functions
![Page 43: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/43.jpg)
Decision of the ready process to which assign the CPU.
Kernel functions
![Page 44: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/44.jpg)
Interrupt handling
Operations on processes (system calls)
![Page 45: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/45.jpg)
The kernel starts executing when an interrupt occurs
External interrupts from peripheral devices
![Page 46: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/46.jpg)
Internal interrupts or traps triggered by the executing process
![Page 47: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/47.jpg)
A stack is associated to any process
Example
![Page 48: Message passing model. buffer producerconsumer PRODUCER-CONSUMER PROBLEM](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062421/56649e4c5503460f94b41367/html5/thumbnails/50.jpg)
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