
In
computer science
Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, interprocess communication (IPC) is the sharing of data between running
processes in a computer system. Mechanisms for IPC may be provided by an
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
. Applications which use IPC are often 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
Distributed computing is a field of computer science that studies distributed systems, defined as computer systems whose inter-communicating components are located on different networked computers.
The components of a distributed system commu ...
.
IPC is very important to the design process for
microkernel
In computer science, a microkernel (often abbreviated as μ-kernel) is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, ...
s and
nanokernels, which reduce the number of functionalities provided by the kernel. Those functionalities are then obtained by communicating with servers via IPC, leading to a large increase in communication when compared to a regular monolithic kernel. IPC interfaces generally encompass variable analytic framework structures. These processes ensure compatibility between the multi-vector protocols upon which IPC models rely.
An IPC mechanism is either
synchronous or asynchronous.
Synchronization primitives may be used to have synchronous behavior with an asynchronous IPC mechanism.
Disadvantages
Merging data from two processes can often incur significantly higher costs compared to processing the same data on a single thread, potentially by two or more orders of magnitude due to overheads such as inter-process communication and synchronization.
Approaches
Different approaches to IPC have been tailored to different
software requirements
Software requirements for a system are the description of what the system should do, the service or services that it provides and the constraints on its operation. The IEEE Standard Glossary of Software Engineering Terminology defines a requiremen ...
, such as
performance
A performance is an act or process of staging or presenting a play, concert, or other form of entertainment. It is also defined as the action or process of carrying out or accomplishing an action, task, or function.
Performance has evolved glo ...
,
modularity
Modularity is the degree to which a system's components may be separated and recombined, often with the benefit of flexibility and variety in use. The concept of modularity is used primarily to reduce complexity by breaking a system into varying ...
, and system circumstances such as
network bandwidth and
latency.
Applications
Remote procedure call interfaces
*
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
's
Remote Method Invocation (RMI)
*
ONC RPC
*
XML-RPC
XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode its calls and HTTP as a transport mechanism.Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) ''Programming Web Services with XML-RPC.'' O'Reilly. First Edition. ...
or
SOAP
Soap is a salt (chemistry), salt of a fatty acid (sometimes other carboxylic acids) used for cleaning and lubricating products as well as other applications. In a domestic setting, soaps, specifically "toilet soaps", are surfactants usually u ...
*
JSON-RPC
JSON-RPC (JavaScript Object Notation-Remote Procedure Call) is a JSON-based wire protocol for remote procedure calls (RPC). It is similar to the XML-RPC protocol, defining only a few data types and commands. JSON-RPC allows for notifications (data ...
* Message Bus (Mbus) (specified in RFC 3259) (not to be confused with
M-Bus)
*
.NET Remoting
*
gRPC
gRPC (acronym for gRPC Remote Procedure Calls) is a cross-platform high-performance remote procedure call (RPC) framework. gRPC was initially created by Google, but is open source and is used in many organizations. Use cases range from microservi ...
Platform communication stack
The following are messaging, and information systems that utilize IPC mechanisms but don't implement IPC themselves:
*
KDE
KDE is an international free software community that develops free and open-source software. As a central development hub, it provides tools and resources that enable collaborative work on its projects. Its products include the KDE Plasma gra ...
's
Desktop Communications Protocol (DCOP) deprecated by D-Bus
*
D-Bus
*
OpenWrt
OpenWrt (from ''open wireless router'') is an open-source project for embedded operating systems based on Linux kernel, Linux, primarily used on Embedded system, embedded devices to Router (computing), route network traffic. The main components ...
use
ubusmicro bus architecture
*
MCAPI Multicore Communications API
*
SIMPL The Synchronous Interprocess Messaging Project for
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
(SIMPL)
*
9P (Plan 9 Filesystem Protocol)
*
Distributed Computing Environment (DCE)
*
Thrift
*
ZeroC's
Internet Communications Engine (ICE)
*
ØMQ
*
Enduro/X Middleware
YAMI4*
Enlightenment_(software) E16 uses eesh as an IPC
Operating system communication stack
The following are platform or programming language-specific APIs:
*
Apple Computer
Apple Inc. is an American multinational corporation and technology company headquartered in Cupertino, California, in Silicon Valley. It is best known for its consumer electronics, software, and services. Founded in 1976 as Apple Computer Co ...
's
Apple events, previously known as Interapplication Communications (IAC)
*
ARexx
ARexx is a Rexx interpreter for Amiga, written in 1987 by William S. Hawes, with a number of Amiga-specific features beyond standard Rexx. An ARexx script can communicate with software that implements an ''ARexx port''. An Amiga application can ...
ports
*
Enea's LINX for Linux (open source) and various DSP and general-purpose processors under
OSE
* The
Mach kernel's Mach Ports
*
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
's
ActiveX
ActiveX is a deprecated software framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies for content downloaded from a network, particularly from the World Wide W ...
,
Component Object Model
Component Object Model (COM) is a binary-interface technology for software components from Microsoft that enables using objects in a language-neutral way between different programming languages, programming contexts, processes and machines ...
(COM),
Microsoft Transaction Server (
COM+),
Distributed Component Object Model (DCOM),
Dynamic Data Exchange (DDE),
Object Linking and Embedding (OLE),
anonymous pipes,
named pipes,
Local Procedure Call,
MailSlots,
Message loop,
MSRPC,
.NET Remoting, and
Windows Communication Foundation
The Windows Communication Foundation (WCF), previously known as Indigo, is a free and open-source runtime and a set of APIs in the .NET Framework for building connected, service-oriented applications.
.NET Core 1.0, released 2016, did not s ...
(WCF)
*
Novell
Novell, Inc. () was an American software and services company headquartered in Provo, Utah, that existed from 1980 until 2014. Its most significant product was the multi-platform network operating system known as NetWare. Novell technolog ...
's
SPX
*
POSIX
The Portable Operating System Interface (POSIX; ) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with comm ...
mmap,
message queue
In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter- thread communication within the same process. They use a queue for messaging – the ...
s,
semaphores, and
shared memory
*
RISC OS
RISC OS () is an operating system designed to run on ARM architecture, ARM computers. Originally designed in 1987 by Acorn Computers of England, it was made for use in its new line of ARM-based Acorn Archimedes, Archimedes personal computers an ...
's messages
*
Solaris Doors
*
System V's message queues, semaphores, and shared memory
*
Linux Transparent Inter Process Communication (TIPC)
*
OpenBinder Open binder
*
QNX's PPS (Persistent Publish/Subscribe) service
Distributed object models
The following are platform or programming language specific-APIs that use IPC, but do not themselves implement it:
*
PHP's sessions
* Distributed Ruby
*
Common Object Request Broker Architecture (CORBA)
*
Electron
The electron (, or in nuclear reactions) is a subatomic particle with a negative one elementary charge, elementary electric charge. It is a fundamental particle that comprises the ordinary matter that makes up the universe, along with up qua ...
's asynchronous IPC, shares
JSON
JSON (JavaScript Object Notation, pronounced or ) is an open standard file format and electronic data interchange, data interchange format that uses Human-readable medium and data, human-readable text to store and transmit data objects consi ...
objects between a main and a renderer process
See also
*
Berkeley sockets
A Berkeley ( BSD) socket is an application programming interface (API) for Internet domain sockets and Unix domain sockets, used for inter-process communication (IPC). It is commonly implemented as a library of linkable modules. It originated wi ...
*
Computer network programming
Computer network programming involves writing computer programs that enable processes to communicate with each other across a computer network.
Connection-oriented and connectionless communications
Very generally, most of communications c ...
*
Communicating Sequential Processes
In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or p ...
(CSP paradigm)
*
Data Distribution Service
*
Database-as-IPC
In computer programming, Database-as-Inter-process communication, IPC may be considered an anti-pattern where a disk persisted table in a database is used as the message queue store for routine inter-process communication (IPC) or subscribed data ...
*
Protected procedure call
References
*
Stevens, Richard. ''UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications.'' Prentice Hall, 1999.
* 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
* 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
External links
Linux ipc(5) man pagedescribing System V IPC
Windows IPCby W. Richard Stevens
Interprocess Communication and Pipes in CDIPC, Distributed System V IPC
{{Web syndication