In computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an operating system provides to allow the processes to manage shared 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 doing 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.
Video Inter-process communication
Approaches
Maps Inter-process communication
Synchronization
Depending on the solution, an IPC mechanism may provide synchronization or leave it up to processes and threads to communicate amongst themselves (e.g. via shared memory).
While synchronization will include some information (e.g. whether or not the lock is enabled, a count of processes waiting, etc.) it is not primarily an information-passing communication mechanism per se.
Examples of synchronization primitives are:
- Semaphore
- Spinlock
- Barrier
- Mutual exclusion
Applications
Remote procedure call interfaces
- Java's Remote Method Invocation (RMI)
- ONC RPC
- XML-RPC or SOAP
- JSON-RPC
- Message Bus (Mbus) (specified in RFC 3259)
- .NET Remoting
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:
See also
References
- Stevens, Richard. UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9
- U. Ramachandran, M. Solomon, M. Vernon Hardware support for interprocess communication Proceedings of the 14th annual international symposium on Computer architecture. Pittsburgh, Pennsylvania, United States. Pages: 178 - 188. Year of Publication: 1987 ISBN 0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Using communication-to-computation ratio in parallel program designand performance prediction 1-4 December 1992. pp. 238-245 ISBN 0-8186-3200-3
External links
- Linux ipc(5) man page describing System V IPC
- Windows IPC
- Windows Support Chat
- Unix Network Programming (Vol 2: Interprocess Communications) by W. Richard Stevens
- Interprocess Communication and Pipes in C
- DIPC, Distributed System V IPC
Source of the article : Wikipedia