- Mechanism for processes to communicate and to synchronize their actions
- Message system – processes communicate with each other without resorting to shared variables
- IPC facility provides two operations:
-send(message) – message size fixed or variable
-receive(message) - If P and Q wish to communicate, they need to:
-establish a communication link between them
-exchange messages via send/receive - Implementation of communication link
-physical (e.g., shared memory, hardware bus)
-logical (e.g., logical properties)
Direct Communication
- Processes must name each other explicitly:
-send (P, message) – send a message to process P
-receive(Q, message) – receive a message from process Q - Properties of communication link
-Links are established automatically.
- A link is associated with exactly one pair of communicating
processes.
- Between each pair there exists exactly one link.
- The link may be unidirectional, but is usually bi-directional. - Asymmetric variant
- receive(id, message) – receive a message from any
process, pid stored in id
Indirect Communication
- Messages are directed and received from mailboxes (also referred to as ports).
- Each mailbox has a unique id.
-Processes can communicate only if they share a mailbox. - Properties of communication link
- Link established only if processes share a common mailbox
- A link may be associated with many processes.
- Each pair of processes may share several communication links.
-Link may be unidirectional or bi-directional.
- Operations
-create a new mailbox
- send and receive messages through mailbox
-destroy a mailbox - Primitives are defined as:
send(A, message) – send a message to mailbox A
receive(A, message) – receive a message from mailbox A
- Mailbox sharing
-P1, P2, and P3 share mailbox A.
-P1, sends; P2 and P3 receive.
- Who gets the message?
- Solutions
-Allow a link to be associated with at most two processes.
-Allow only one process at a time to execute a receive operation.
-Allow the system to select arbitrarily the receiver. Sender is notified who the receiver was.
Synchronization
- Message passing may be either blocking or non-blocking.
- Blocking is considered synchronous
- Non-blocking is considered asynchronous
- send and receive primitives may be either blocking or non-blocking.
0 comments:
Post a Comment