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.
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.
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:
The following are messaging and information systems that utilize IPC mechanisms, but don't implement IPC themselves:
The following are platform or programming language-specific APIs:
The following are platform or programming language specific-APIs that use IPC, but do not themselves implement it: