Starting a program on another computer is not very hard using programs like telnet or rsh . Exchanging data and synchronizing, however, can be quite difficult and complicated. These problems can distract the programmer from his original project and can be the source of numerous bugs. Linux already has some mechanisms for processes in the same computer to exchange data and synchronize between themselves. When one process writes some information in a shared memory, other processes can immediately use it.
Messages are data structures which can be exchanged between different processes.
Unlike shared memories, sending and receiving messages requires the use of system calls. Semaphores can be used by different processes for synchronization purposes.