[[!meta copyright="Copyright © 2007, 2008 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 interprocess communication.
On [[Unix]], interprocess 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
[[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.
# See Also