|author||GNU Hurd wiki engine <firstname.lastname@example.org>||2007-08-19 13:53:10 +0000|
|committer||GNU Hurd wiki engine <email@example.com>||2007-08-19 13:53:10 +0000|
web commit by NealWalfield: Create.
Diffstat (limited to 'ipc.mdwn')
1 files changed, 19 insertions, 0 deletions
diff --git a/ipc.mdwn b/ipc.mdwn
new file mode 100644
@@ -0,0 +1,19 @@
+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]] and to use virtual memory
+mechanisms to copy data.