summaryrefslogtreecommitdiff
path: root/ipc.mdwn
blob: 0e8d674ab6803e9cf48f048090a9b02aea556bd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[[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
[[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.


# See Also

* [[RPC]]