5 Sep 19:22
Forward: some thoughts about map vs. copy vs. membranes
Marcus Brinkmann <marcus.brinkmann <at> ruhr-uni-bochum.de>
2007-09-05 17:22:08 GMT
2007-09-05 17:22:08 GMT
Hi, just filing some random thoughts for the archive. The discussion about mechanisms for capability delegation was framed by contrasing L4's map model and other kernels (Mach, EROS) copy model. Later, on cap-talk, a third idiom came up: membranes, which have mapping semantics plus every capability fetched through a membraned capability is limited by the lifetime of the membrane as well. For example, if you look up a file object in a directory object, with membrane semantics the file capability is revoked also when the directory capability is revoked. It is worth repeating the difficulty in implementing a generic membrane: If a membraned capability is fetched through a membraned capability, the lifetime of that capability is now generally bound by two membranes. Repeating such operations establishes a N-to-M relationship between membranes and capabilities, which raises storage allocation concerns. Only special cases are easy to handle, for example if the two membranes are already related (one dominating the other). Unfortunately, membrane semantics are often desirable. The main point I want to get across in this mail is that the discussion about map and copy was at best misleading. By switching to a different point of view, it can be shown that ***L4 X.2 implements membrane semantics*** rather than map semantics. So, the discussion should not have been about map vs. copy but about membranes vs. copy. It's easy to show that L4 X.2 implements membrane semantics: First, the only delegatable capabilities are frame capabilities, so there is(Continue reading)
But I have interesting
things to tell, so I shall not delay:
While waiting (very passively) for Coyotos to get ready, I decided that
I wanted to try writing a simple kernel myself. It is based mostly on
the discussions I had here, most notably with Jonathan and Marcus. It
was easier than I expected, which means it is running. I also tried
porting glibc, but gave up on that. Instead I wrote some minimal libc
myself (which is very non-optimized, but works mostly). The current
state is such that it can run nethack (in text-mode).
For the impatient, here's how to see that (commands are for a Debian
system, adjust them if you have something else):
# apt-get install build-essential qemu automake1.10 autoconf git-core
# apt-get install rubber texlive-latex-base
$ git clone git://82.93.13.222/kernel
$ cd kernel
$ (mkdir nethack && cd nethack && apt-get source nethack)
$ ./autogen.sh
$ make
$ make qemu
Then when the system says "Waiting for events", type "run nethack" and
have fun.
RSS Feed