[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] *IPC* stands for *inter-process communication*. Inter-process communication refers to the mechanisms, provided by the operating system, that allow allow processes to manage shared data. On [[Unix]], inter-process communication can be achieved using pipes. This is inefficient for large amounts of data as the data must be copied. This is generally not a problem as most services are provided by the Unix kernel and Unix is not designed to be [[extensible|extensibility]]. [[Microkernel]] systems, on the other hand, are generally composed of many components. As components are separated by their respective [[address_space]] boundaries, unlike the kernel, they cannot arbitrarily examine and modify the caller's state. The advantage is that if the protocol is carefully designed, the callee cannot cause the caller any [[destructive_interference]] thereby removing the need for the caller to [[trust]] the callee thus reducing the former's [[TCB]]. When done systematically, this can increase the system's [[robustness]]. To this end, microkernels provide richer IPC semantics that include the ability to transfer [[capabilities|capability]] and to use [[virtual_memory]] [[mechanism]]s to copy data. Continue reading about [[Mach's IPC system|microkernel/mach/IPC]]. # Performance * {{$performance_irrelevance}} # See Also * [[RPC]] # Externel * Wikipedia artile on [[!wikipedia Inter-process_communication]] [[!ymlfront data=""" performance_irrelevance: "Brian N. Bershad, 1992: [The Increasing Irrelevance of IPC Performance for Microkernel-Based Operating Systems](http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/abstracts/IPCperf.html) ([doc](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/published/IPCperf.doc), [ps](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/published/IPCperf.ps), [CiteSeerX](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.51.16))" """]]