HOME

TheInfoList



OR:

In
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
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 A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
. IPC is very important to the design process for microkernels and
nanokernel 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, 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 In computing, bandwidth is the maximum rate of data transfer across a given path. Bandwidth may be characterized as network bandwidth, data bandwidth, or digital bandwidth. This definition of ''bandwidth'' is in contrast to the field of signal p ...
and latency.


Applications


Remote procedure call interfaces

*
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
'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 of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are us ...
* JSON-RPC * Message Bus (Mbus) (specified in RFC 3259) (not to be confused with M-Bus) * .NET Remoting * 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 In computing, D-Bus (short for "Desktop Bus") is a message-oriented middleware mechanism that allows communication between multiple processes running concurrently on the same machine. D-Bus was developed as part of the freedesktop.org project ...
* OpenWrt use
ubus
micro 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 chi ...
Multicore Communications API * SIMPL The Synchronous Interprocess Messaging Project for
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
(SIMPL) * 9P (Plan 9 Filesystem Protocol) * Distributed Computing Environment (DCE) * Thrift * 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 c ...
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 ...
'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 Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washi ...
's ActiveX, Component Object Model (COM),
Microsoft Transaction Server Microsoft Transaction Server (MTS) was software that provided services to Component Object Model (COM) software components, to make it easier to create large distributed applications. The major services provided by MTS were automated transaction ...
( COM+), 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 ...
,
Local Procedure Call The Local Inter-Process Communication (LPC, often also referred to as Local Procedure Call or Lightweight Procedure Call) is an internal, undocumented inter-process communication facility provided by the Microsoft Windows NT kernel for lightweigh ...
, 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 supp ...
(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 le ...
'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 both the system- and user-level application programming in ...
mmap, message queues, semaphores, and shared memory * RISC OS's messages * Solaris 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 ...
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 an ...
for C++ under Linux only, handles complex objects and exceptions * PHP's sessions *
Distributed Ruby Distributed Ruby or DRb allows Ruby programs to communicate with each other on the same machine or over a network. DRb uses remote method invocation (RMI) to pass commands and data between processes. See also * Java remote method invocation * ...
*
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 s ...
(CORBA) *
Electron The electron ( or ) is a subatomic particle with a negative one elementary electric charge. Electrons belong to the first generation of the lepton particle family, and are generally thought to be elementary particles because they have n ...
'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 se ...
objects between a main and a renderer process


See also

*
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 ca ...
* 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 page
describing System V IPC
Windows IPC




by W. Richard Stevens
Interprocess Communication and Pipes in C

DIPC, Distributed System V IPC
{{Web syndication