summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ipc.mdwn19
1 files changed, 19 insertions, 0 deletions
diff --git a/ipc.mdwn b/ipc.mdwn
new file mode 100644
index 00000000..8c05276c
--- /dev/null
+++ b/ipc.mdwn
@@ -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
+[[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.