text:
Inter-process communication
From Wikipedia, the free encyclopedia
Jump to: navigation, search
For other uses, see IPC.
This article includes a list of references, but its sources remain unclear because it has insufficient inline citations. Please help to improve this article by introducing more precise citations. (August 2015) (Learn how and when to remove this template message)
An example showing a grid computing system connecting many personal computers over the Internet using inter-process network communication
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.[1] 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.[1]
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.
Contents
[hide]
1 Approaches
2 Synchronization
3 Applications
3.1 Remote procedure call interfaces
3.2 Platform communication stack
3.3 Operating system communication stack
3.4 Distributed object models
4 See also
5 References
6 External links
Approaches[edit]
Method
Short Description
Provided by (operating systems or other environments)
File A record stored on disk, or a record synthesized on demand by a file server, which can be accessed by multiple processes. Most operating systems
Signal; also Asynchronous System Trap A system message sent from one process to another, not usually used to transfer data but instead used to remotely command the partnered process. Most operating systems
Socket Data sent over a network interface, either to a different process on the same computer or to another computer on the network. Stream-oriented (TCP; data written through a socket requires formatting to preserve message boundaries) or more rarely message-oriented (UDP, SCTP). Most operating systems
Unix domain socket Similar to an internet socket but all communication occurs within the kernel. Domain sockets use the file system as their address space. Processes reference a domain socket as an inode, and multiple processes can communicate with one socket All POSIX operating systems and Windows 10[citation needed]
Message queue A data stream similar to a socket, but which usually preserves message boundaries. Typically implemented by the operating system, they allow multiple processes to read and write to the message queue without being directly connected to each other. Most operating systems
Pipe A unidirectional data channel. Data written to the write end of the pipe is buffered by the operating system until it is read from the read end of the pipe. Two-way data streams between processes can be achieved by creating two pipes utilizing standard input and output. All POSIX systems, Windows
Named pipe A pipe implemented through a file on the file system instead of standard input and output. Multiple processes can read and write to the file as a buffer for IPC data. All POSIX systems, Windows, AmigaOS 2.0+
Shared memory Multiple processes are given access to the same block of memory which creates a shared buffer for the processes to communicate with each other. All POSIX systems, Windows
Message passing Allows multiple programs to communicate using message queues and/or non-OS managed channels, commonly used in concurrency models. Used in RPC, RMI, and MPI paradigms, Java RMI, CORBA, DDS, MSMQ, MailSlots, QNX, others
Memory-mapped file A file mapped to RAM and can be modified by changing memory addresses directly instead of outputting to a stream. This shares the same benefits as a standard file. All POSIX systems, Windows
Synchronization[edit]
Main article: Synchronization (computer science)
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[edit]
This article is in a list format that may be better presented using prose. You can help by converting this article to prose, if appropriate. Editing help is available. (November 2016)
Remote procedure call interfaces[edit]
Main article: remote procedure call
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[edit]
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
MCAPI Multicore Communications API
SIMPL The Synchronous Interprocess Messaging Project for Linux (SIMPL)
9P (Plan 9 Filesystem Protocol)
Distributed Computing Environment (DCE)
Thrift
TIPC
ZeroC's Internet Communications Engine (ICE)
ØMQ
Enduro/X Middleware
YAMI4
Operating system communication stack[edit]
This section does not cite any sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (May 2013) (Learn how and when to remove this template message)
The following are platform or programming language-specific APIs:
Apple Computer's Apple events (previously known as Interapplication Communications (IAC)).
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+), 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 (WCF)
Novell's SPX
POSIX mmap, message queues, semaphores,[2] and shared memory
RISC OS's messages
Solaris Doors
System V's message queues, semaphores, and shared memory
OpenBinder Open binder
QNX's PPS (Persistent Publish/Subscribe) service
Distributed object models[edit]
The following are platform or programming language specific-APIs that use IPC, but do not themselves implement it:
Libt2n for C++ under Linux only, handles complex objects and exceptions
PHP's sessions
Distributed Ruby
Common Object Request Broker Architecture (CORBA)
See also[edit]
Computer programming portal
Information technology portal
Computer network programming
Communicating Sequential Processes (CSP paradigm)
Data Distribution Service
Protected procedure call
References[edit]
^ Jump up to: a b "Interprocess Communications". Microsoft.
Jump up ^ Concurrent programming - communication between processes http://www.tldp.org/pub/Linux/docs/ldp-archived/linuxfocus/English/Archives/lf-2003_01-0281.pdf
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[edit]
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
[show]
v
t
e
Inter-process communication
Data exchange among threads in computer programs
Methods
File
Memory-mapped file
Message passing
Message queue and mailbox
Named pipe
Anonymous pipe
Pipe
Semaphore
Shared memory
Signal
Sockets
Internet
Unix
Protocols
and standards
Apple events
COM+
CORBA
D-Bus
DDS
DCE
ICE
OpenBinder
ONC RPC
POSIX (various methods)
SOAP
REST
Thrift
TIPC
XML-RPC
Software libraries
and frameworks
D-Bus
libevent
SIMPL
LINX
[show]
v
t
e
Web syndication
History
Blogging
Podcasting
Video blogging
Web syndication technology
Types
Art
Bloggernacle
Classical music
Corporate
Dream diary
Edublog
Electronic journal
Fake
Family
Fashion
Food
Health
Law
Lifelog
Litblog
MP3
News
Photoblog
Police
Political
Prayer
Project
Reverse
Travel
Warblog
Technology
General
BitTorrent
Feed URI scheme
Features
Linkback
Permalink
Ping
Pingback
Reblogging
Refback
Rollback
Trackback
Mechanism
Conversation threading
Geotagging
RSS enclosure
Synchronization
Memetics
Atom feed
Data feed
Photofeed
Product feed
RDF feed
Web feed
RSS
GeoRSS
MRSS
RSS TV
Social
Livemark
Mashup
. pooling
Referencing
RSS editor
RSS tracking
Streaming media
Standard
OML
OPML
RSS Advisory Board—Usenet: .net
World Wide Web + (-let)
XBEL
XOXO
Form
Audio podcast
Enhanced podcast
Mobilecast
Narrowcasting
Peercasting
Screencast
Slidecasting
Videocast
Webcomic
Web series
Anonymous blogging
Collaborative blog
Columnist
Instant messaging
Liveblogging
Microblog
Mobile blogging
Roblog
Spam blog
Video blogging
Motovlogging
Media
Alternative media
Carnivals
Fiction
Journalism
Citizen
Database
Online diary
Search engines
Sideblog
Software
Web directory
Micromedia
Aggregation
News
Poll
Review
Search
Video
Atom
AtomPub
Broadcatching
Hashtag
NewsML
1
G2
Social communication
Social software
Web Slice
Related
Blogosphere
Escribitionist
Glossary of blogging
Pay per click
Posting style
Slashdot effect
Spam in blogs
Uses of podcasting
Retrieved from "https://en.wikipedia.org/w/index.php?title=Inter-process_communication&oldid=833805357"
Categories:
Inter-process communication
Hidden categories:
Articles lacking in-text citations from August 2015
All articles lacking in-text citations
All articles with unsourced statements
Articles with unsourced statements from January 2018
Articles needing cleanup from November 2016
All pages needing cleanup
Articles with sections that need to be turned into prose from November 2016
Pages using div col with deprecated parameters
Articles needing additional references from May 2013
All articles needing additional references
Pages using RFC magic links
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Article
Talk
Variants
Views
Read
Edit
View history
More
Search
Navigation
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact page
Tools
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Wikidata item
Cite this page
Print/export
Create a book
Download as PDF
Printable version
Languages
العربية
Azərbaycanca
Català
Čeština
Deutsch
Ελληνικά
Español
فارسی
Français
한국어
Bahasa Indonesia
Italiano
עברית
Nederlands
日本語
Norsk
Polski
Português
Русский
Slovenčina
Српски / srpski
Srpskohrvatski / српскохрватски
Suomi
Svenska
Türkçe
Українська
中文
18 more
Edit links
This page was last edited on 2 April 2018, at 14:33.
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Developers
Cookie statement
Mobile view
Enable previews

values: mw-page-base noprint

values: mw-head-base noprint

values: firstHeading firstHeading en

values: siteSub noprint

values: jump-to-nav mw-jump

values:
/wiki/IPC_(disambiguation)
mw-redirect mw-disambig
IPC (disambiguation)

attrs: role class

values:
note
hatnote navigation-not-searchable

attrs: alt src width height srcset data-file-width data-file-height

value: b

values: Wikipedia:WikiProject Fact and Reference Check

value: span

value: i

value: small

values: plainlinks metadata ambox ambox-style ambox-More_footnotes

values:
/wiki/Client-server_model
mw-redirect
Client-server model

values:
/wiki/Signal_(computing)
mw-redirect
Signal (computing)

values: No mention of Windows 10 at Unix domain socket (January 2018)

values:
noprint Inline-Template Template-Fact
white-space:nowrap;

values: Shared memory (interprocess communication)

values:
/wiki/Memory_(computing)
mw-redirect
Memory (computing)

values:
/wiki/Remote_method_invocation
mw-redirect
Remote method invocation

values:
/wiki/File_(computing)
mw-redirect
File (computing)

values:
/wiki/Wikipedia:Embedded_list
mw-redirect
Wikipedia:Embedded list

values: plainlinks metadata ambox ambox-style ambox-Prose

values: Edit section: Remote procedure call interfaces

values:
/wiki/SOAP_(protocol)
mw-redirect
SOAP (protocol)

values:
external mw-magiclink-rfc
nofollow
https://tools.ietf.org/html/rfc3259

values: Edit section: Platform communication stack

values:
/wiki/Thrift_(protocol)
mw-redirect
Thrift (protocol)

values:
nofollow
external text
http://www.inspirel.com/yami4

values: -moz-column-width: 30em; -webkit-column-width: 30em; column-width: 30em;

values: Edit section: Operating system communication stack

values: Help:Introduction to referencing with Wiki Markup/1

values: plainlinks metadata ambox ambox-content ambox-Unreferenced

values:
/wiki/Apple_Computer
mw-redirect
Apple Computer

values:
/wiki/Apple_events
mw-redirect
Apple events

values:
/wiki/Mach_kernel
mw-redirect
Mach kernel

values: Common Object Request Broker Architecture

values: display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle

values: margin:0.5em 0 0.5em 1em;border:solid #aaa 1px

values:
reflist mw-references-wrap
list-style-type: decimal;

values:
nofollow
external text
http://linux.die.net/man/5/ipc

values:
nofollow
external text
http://microsoftofficesupport.org

values:
nofollow
http://dipc-2.sourceforge.net/
external text

values:
/wiki/Unix_signal
mw-redirect
Unix signal

values:
/wiki/Internet_socket
mw-redirect
Internet socket

values:
/wiki/Communications_protocol
mw-redirect
Communications protocol

values: Open Network Computing Remote Procedure Call

values:
/wiki/Representational_State_Transfer
mw-redirect
Representational State Transfer

values: nowraplinks collapsible autocollapse navbox-inner

values:
/wiki/Political_blog
mw-redirect
Political blog

values:
/wiki/Travel_blog
mw-redirect
Travel blog

values:
/wiki/Atom_(standard)
mw-redirect
Atom (standard)

values:
/wiki/Enhanced_podcast
mw-redirect
Enhanced podcast

values:
/wiki/Collaborative_blog
mw-redirect
Collaborative blog

values:
/wiki/Blog_carnival
mw-redirect
Blog carnival

values:
/wiki/Blog_software
mw-redirect
Blog software

values:
/wiki/Social_communication
mw-redirect
Social communication

values:
/wiki/Pay_per_click
mw-redirect
Pay per click

values: nowraplinks hlist collapsible collapsed navbox-inner

values: Category:Articles lacking in-text citations from August 2015

values: Category:All articles lacking in-text citations

values: Category:All articles with unsourced statements

values: Category:Articles with unsourced statements from January 2018

values: Category:Articles needing cleanup from November 2016

values: Category:Articles with sections that need to be turned into prose from November 2016

values: Category:Pages using div col with deprecated parameters

values: Category:Articles needing additional references from May 2013

values: Category:All articles needing additional references

values: Discussion about edits from this IP address [ctrl-alt-n]

values: A list of edits made from this IP address [ctrl-alt-y]

values: You are encouraged to create an account and log in; however, it is not mandatory

values: You're encouraged to log in; however, it's not mandatory. [ctrl-alt-o]

values:
/wiki/Inter-process_communication
View the content page [ctrl-alt-c]
c

values: Discussion about the content page [ctrl-alt-t]

values: p-namespaces navigation vectorTabs p-namespaces-label

values:
p-variants
navigation
vectorMenu emptyPortlet
p-variants-label

values: Past revisions of this page [ctrl-alt-h]

values: p-views navigation vectorTabs p-views-label

values:
p-cactions
navigation
vectorMenu emptyPortlet
p-cactions-label

values:
mw-wiki-logo
/wiki/Main_Page
Visit the main page

values:
/wiki/Main_Page
Visit the main page [ctrl-alt-z]
z

values: Featured content – the best of Wikipedia

values: Find background information on current events

values:
/wiki/Special:Random
Load a random article [ctrl-alt-x]
x

values: portal navigation p-navigation p-navigation-label

values: Guidance on how to use and edit Wikipedia

values: About the project, what you can do, where to find things

values: A list of recent changes in the wiki [ctrl-alt-r]

values: portal navigation p-interaction p-interaction-label

values: List of all English Wikipedia pages containing links to this page [ctrl-alt-j]

values: Recent changes in pages linked from this page [ctrl-alt-k]

values:
/wiki/Wikipedia:File_Upload_Wizard
Upload files [ctrl-alt-u]
u

values: A list of all special pages [ctrl-alt-q]

values: Permanent link to this revision of the page

values: Link to connected data repository item [ctrl-alt-g]

values: Printable version of this page [ctrl-alt-p]

values: التواصل الداخلي بين العمليات – Arabic

values:
interlanguage-link interwiki-az
display: none;

values:
interlanguage-link interwiki-ca
display: none;

values:
interlanguage-link interwiki-cs
display: none;

values: Διαδιεργασιακή επικοινωνία – Greek

values:
interlanguage-link interwiki-el
display: none;

values: ارتباط بین پردازشی – Persian

values:
interlanguage-link interwiki-fa
display: none;

values: 프로세스 간 통신 – Korean

values:
interlanguage-link interwiki-ko
display: none;

values:
interlanguage-link interwiki-it
display: none;

values: תקשורת בין תהליכים – Hebrew

values:
interlanguage-link interwiki-he
display: none;

values:
interlanguage-link interwiki-nl
display: none;

values: プロセス間通信 – Japanese

values:
interlanguage-link interwiki-no
display: none;

values:
interlanguage-link interwiki-pl
display: none;

values: Comunicação entre processos – Portuguese

values: Межпроцессное взаимодействие – Russian

values:
interlanguage-link interwiki-sk
display: none;

values: Међупроцесна комуникација – Serbian

values:
interlanguage-link interwiki-sr
display: none;

values: Međuprocesna komunikacija – Serbo-Croatian

values:
interlanguage-link interwiki-sh
display: none;

values: Prosessien välinen kommunikaatio – Finnish

values:
interlanguage-link interwiki-fi
display: none;

values:
interlanguage-link interwiki-sv
display: none;

values: Взаємодія між процесами – Ukrainian

values:
interlanguage-link interwiki-uk
display: none;

values: /static/images/wikimedia-button-1.5x.png 1.5x, /static/images/wikimedia-button-2x.png 2x

values: /static/images/poweredby_mediawiki_132x47.png 1.5x, /static/images/poweredby_mediawiki_176x62.png 2x

values:
suggestions
display: none; font-size: 13px;

values: mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Inter-process_communication rootpage-Inter-process_communication skin-vector action-view