Rahul Sharma (Editor)

Inter process communication

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Inter-process communication

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.

Contents

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.

Synchronization

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:

  • Semaphore
  • Spinlock
  • Barrier
  • Mutual exclusion
  • 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:

    References

    Inter-process communication Wikipedia