Message Passing

Message passing is commonly used in real time systems, and is also familiar to object oriented programmers, although it is sometimes hidden behind the method invokation mechanism. Usually, message passing is provided by some built in system primitives as in figure #fnmsg#398>.

#figure399#
Figure: Messaging Primitives

Message passing is often non-blocking. This means that one process may continue execution immediately after it has sent a message to another. It is also sometimes synchronous. Synchronous message passing involves no buffering, but it does require strong synchronisation between the sender and receiver. Message passing may or may not be reliable. If it is reliable, it is a requirement for the underlying communications system to make sure of this. Message passing is appropriate to applications that are highly sensitive to latency. One important example of this is in distributed graphics systems, or window systems