The term Inter-Process Communication (IPC) refers to a predefined library or set of interfaces that allow processes to communicate with each other. IPC gives the appearance of programs that run concurrently in an operating system’s background and allows computer users to conduct multiple tasks at once on a computer. IPCs can share memory, run in synchrony with other processes, pass messages, and conduct remote procedure calls. The specific IPC method varies based on the Operating System (OS), latency of communication between program threads, and the type of information being exchanged between the processes.
Inter-Process Communication Methods
There are several ways to support Inter-Process Communications on an OS. These include:
- Message queuing – one or more message queues sends messages between running processes and the OS kernel manages them.
Pipes – information can only be sent in one direction and is buffered until received.
Named pipes – a pipe has a certain name and can be used among processes that do not share a common origin.
- Shared memory – permits information exchange through a predefined area of memory and has to be allocated before data can gain access to the memory location.
Semaphores – solves problems when synchronization or race conditions arise between processes.
Socket – processes use these to communicate over a network via a client/server relationship.
Inter-Processes that Block Instead of Waste Operating System Time
A common Inter-Process Communications problem is that when one or more resources cannot be shared, they are mutually exclusive and may result in a waste of system resources or processor time. Basic inter-processes that help prevent this from blocking Inter-Process Communication include: 1) sleep and wake up conditions that require a caller to wake a process up when it has enough resources to work or is asleep otherwise, 2) the producer-consumer issue that may result if a process attempts to remove resources from a buffer before another produces them, 3) an events counter that counts the amount of resources that a process produces that are placed into a buffer and the number that is removed, and 4) an inter-process monitor that is a collection of data structures, variables, and procedures that work together to prevent mutual exclusion by using “WAIT” and “SIGNAL” instructions based on when a calling process has sufficient resources to work.
What are the Implementations of Inter-Process Communication?
There are many Inter-Process Communication implementations that are both platform dependent and independent. Some of the platform independent implementations include:
COBRA (Common Object Request Broker Architecture), Distributed Computing Environment (DCE), Message Bus (MBUS), ONC RPC, Lightweight Communications and Marshalling (LCM), Unix domain sockets, and XML RPC. Some platform specific implementations include: the Java Remote Method Invocation (RMI), Apple Computer’s Apple Events, KDE’s Desktop Communications Protocol (DCOP), Libt2n for C++ on Linux, Microsoft ActiveX, DCOM, and COM, and Solaris Doors.