Message primitives typically include
- send(destination, &msg)
- receive(source, &msg)
Messages are copied from one process's address space to another's.
Basic Issues
- Direct/Indirect: Do the destination and source direclty specify the process or just a mailbox?
- Buffer Capacity: How many sent messages can be stored before being received.
- Blocking/Nonblocking: If a process sends a message does that process block until the message is received. Does a receive block the caller if no message has been sent?
If the buffer is full, an additional send operation should block in order to avoid losing the message.
If the buffer is empty, a receive operation should block.