
In
computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an
operating system provides to allow the
processes
A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic.
Things called a process include:
Business and management
*Business process, activities that produce a specific se ...
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.
IPC is very important to the design process for
microkernels 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.
Approaches
Different approaches to IPC have been tailored to different
software requirements, such as
performance
A performance is an act 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.
Management science
In the work place ...
,
modularity
Broadly speaking, 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 sy ...
, and system circumstances such as
network bandwidth and
latency.
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) (not to be confused with
M-Bus)
*
.NET Remoting
.NET Remoting is a Microsoft application programming interface (API) for interprocess communication released in 2002 with the 1.0 version of .NET Framework. It is one in a series of Microsoft technologies that began in 1990 with the first version ...
*
gRPC
Platform communication stack
The following are messaging, and information systems that utilize IPC mechanisms but don't implement IPC themselves:
*
KDE's
Desktop Communications Protocol (DCOP) deprecated by D-Bus
*
D-Bus
*
OpenWrt use
ubusmicro bus architecture
*
MCAPI The Multicore Communications API (MCAPI) is the first specification to be produced by the Multicore Association. MCAPI provides a standardized API for communication and synchronization between closely distributed (multiple cores on a chip and/or ch ...
Multicore Communications API
*
SIMPL The Synchronous Interprocess Messaging Project for
Linux (SIMPL)
*
9P (Plan 9 Filesystem Protocol)
*
Distributed Computing Environment (DCE)
*
Thrift
Thrift may refer to:
* Frugality
* A savings and loan association in the United States
* Apache Thrift, a remote procedure call (RPC) framework
* Thrift (plant), a plant in the genus ''Armeria''
* Syd Thrift (1929–2006), American baseball exec ...
*
ZeroC's
Internet Communications Engine (ICE)
*
ØMQ
*
Enduro/X
Enduro/X is an open-source middleware platform for distributed transaction processing. It is built on proven APIs such as X/Open group's XATMI and XA. The platform is designed for building real-time microservices based applications with a cl ...
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 technology company headquartered in Cupertino, California, United States. Apple is the largest technology company by revenue (totaling in 2021) and, as of June 2022, is the world's biggest company b ...
's
Apple events, previously known as Interapplication Communications (IAC)
*
ARexx ports
*
Enea's LINX for Linux (open source) and various DSP and general-purpose processors under
OSE
* The
Mach kernel's Mach Ports
*
Microsoft's
ActiveX,
Component Object Model (COM),
Microsoft Transaction Server (
COM+
Com or COM may refer to:
Computing
* COM (hardware interface), a serial port interface on IBM PC-compatible computers
* COM file, or .com file, short for "command", a file extension for an executable file in MS-DOS
* .com, an Internet top-level d ...
),
Distributed Component Object Model (DCOM),
Dynamic Data Exchange (DDE),
Object Linking and Embedding (OLE),
anonymous pipes,
named pipes
In computing, a named pipe (also known as a FIFO for its behavior) is an extension to the traditional pipe concept on Unix and Unix-like systems, and is one of the methods of inter-process communication (IPC). The concept is also found in OS/2 an ...
,
Local Procedure Call,
MailSlot
A Mailslot is a one-way interprocess communication mechanism, available on the Microsoft Windows operating system, that allows communication between processes both locally and over a network. The use of Mailslots is generally simpler than named pi ...
s,
Message loop,
MSRPC,
.NET Remoting
.NET Remoting is a Microsoft application programming interface (API) for interprocess communication released in 2002 with the 1.0 version of .NET Framework. It is one in a series of Microsoft technologies that began in 1990 with the first version ...
, and
Windows Communication Foundation (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 Novell NetWare.
Under the lead ...
's
SPX
*
POSIX mmap,
message queues,
semaphores, and
shared memory
*
RISC OS's messages
*
Solaris
Solaris may refer to:
Arts and entertainment Literature, television and film
* ''Solaris'' (novel), a 1961 science fiction novel by Stanisław Lem
** ''Solaris'' (1968 film), directed by Boris Nirenburg
** ''Solaris'' (1972 film), directed by ...
Doors
*
System V's message queues, semaphores, and shared memory
*
Linux Transparent Inter Process Communication (TIPC)
*
OpenBinder
OpenBinder is a system for inter-process communication. It was developed at Be Inc. and then Palm, Inc. and was the basis for the Binder framework now used in the Android operating system developed by Google.
OpenBinder allows processes to p ...
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:
*
Libt2n
libt2n is a free Inter-process communication (IPC) library which offers a simple way for C++ applications to communicate with one another.
Introduction
libt2n is an inter-process communication (IPC) system which is focused on ease of use and a ...
for
C++ under Linux only, handles complex objects and exceptions
*
PHP's sessions
*
Distributed Ruby
*
Common Object Request Broker Architecture
The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms. CORBA enables collaboration between sys ...
(CORBA)
*
Electron's asynchronous IPC, shares
JSON
JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other ser ...
objects between a main and a renderer process
See also
*
Computer network programming
*
Communicating Sequential Processes (CSP paradigm)
*
Data Distribution Service
*
Protected procedure call
A Protected Procedure Call (PPC) is a messaging facility wherein messages are sent and received using procedure call interfaces. They are a core component of the K42 operating system.
Inter-process communication
Subroutines
{{Comp-sci-s ...
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