Outline for 1/28/98
Last time: Scheduling policies - answering which process to run now and, in multi-computer case, where.
Admin: (reminder) HW2 due Friday
Objective: Process communication rather than synchronization (Message-Passing). How do processes communicate if they don't share any of their memory?
Interprocess Communication - Messages
Assume no explicit sharing of data elements in the address spaces of processes wishing to cooperate/communicate.
Essence of message-passing is
copying
(although implementations may avoid actual copies whenever possible).
Problem-solving with messages - has a feel of more active involvement by participants.
Issues
System calls for sending and receiving messages with the OS(s) acting as courier.
Variations on exact semantics of primitives and in the definition of what comprises a message.
Naming - direct (to/from pids), indirect (to distinct objects - e.g., mailboxes, ports, sockets)
How do unrelated processes "find" each other?
Buffering - capacity and blocking semantics.
Guarantees - in-order delivery? no lost messages?
Remote Procedure Call - RPC
Looks like a nice familiar procedure call, but...

End-to-End Argument
Application-level
correctness requires checking at the endpoints to ensure that the message exchange accomplished its purpose
Application semantics involved
Notification of successful delivery (UPS tracking) is not as good as a direct response (thank you note) from the other end.
Reliability guarantees in the message-passing subsystem provide
performance benefits (short-circuiting corrective measures).
Re-transmitting packet may save re-tranferring whole file.
Tools of the Trade
At-most-once behavior
Both ends can maintain state (e.g., counters) so a re-request (due to lost response msg) can be distinguished from a new request and the operation not repeated.
Happened-before-relation
Synchronized logical clocks (when no global clock)