![]() | ||
In computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an operating system provides to allow processes it manages to share data. Typically, applications can use IPC, categorized as clients and servers, where the client requests data and the server responds to client requests. Many applications are both clients and servers, as commonly seen in distributed computing. Methods for achieving IPC are divided into categories which vary based on software requirements, such as performance and modularity requirements, and system circumstances, such as network bandwidth and latency.
Contents
- Synchronization
- Remote procedure call interfaces
- Platform communication stack
- Operating system communication stack
- Distributed object models
- References
IPC is very important to the design process for microkernels and nanokernels. Microkernels reduce the number of functionalities provided by the kernel. Those functionalities are then obtained by communicating with servers via IPC, increasing drastically the number of IPC compared to a regular monolithic kernel.
Synchronization
Depending on solution IPC mechanism may provide synchronization or leave it up to processes and threads communicating (such as shared memory).
While synchronization includes some information (is lock enabled or not, counter of waiters etc.) it is not primarily information passing communication mechanism per se.
Examples of synchronization primitives are:
Remote procedure call interfaces
Platform communication stack
The following are messaging and information systems that utilize IPC mechanisms, but don't implement IPC themselves:
Operating system communication stack
The following are platform or programming language-specific APIs:
Distributed object models
The following are platform or programming language specific-APIs that use IPC, but do not themselves implement it: