13 Jun 2009
(updated 15 Jun 2009 at 19:04 UTC) »
Have recently finished the practical part of "Advanced
Operating Systems" in ETH. More a hobby - like activity,
lots of time have passed since I have been a student the
last time. Step by step, over half a year each student have
implemented a tiny working system on the top of L4
microkernel for NSLU2. It even has its own ELF loader. At
times I started to think that it may be interesting to put a
java virtual machine on the top of L4 as the first (root)
task. In L4, the root task can do many things that the
ordinary program cannot do. Most interesting it can map and
remap pages, so we can have chunks of memory appearing from
nowhere in virtual space. Or extrafast moving by remapping
(while it may be difficult to see as these pages are 4 kb at
least and must be aligned). If some other task (normal L4
executable) wants to do such things it can only do via
requesting root task to do this. Context switches and so on.
L4 also has quite pretty threads, and each thread can have
individual mappings. For instance, they can have each its
own stack exactly in the same place of the address space.
But in general it is a very tiny kernel; apart maps, threads
and interprocess pipes there is almost nothing more there.
This is not because of incompleteness, it is more a kind of
However drivers seems being a
biggest problem, even if we restrict interface to the
network alone. It was a not so bad network driver for the
NSLU2 chipset in the provided package, but the problem is
that this hacker-loved slug seems no longer in production.
Some German groups try to run existing Linux drivers under
L4 in some emulation mode.