[[license text=""" Copyright © 2007 Free Software Foundation, Inc. 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.txt]]. By contributing to this page, you agree to assign copyright for your contribution to the Free Software Foundation. The Free Software Foundation promises to always use either a verbatim copying license or a free documentation license when publishing your contribution. We grant you back all your rights under copyright, including the rights to copy, modify, and redistribute your contributions. """]] 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 [[extensible]]. [[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]] and to use virtual memory mechanisms to copy data.