l4-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A short note on microkernels


From: Marcus Brinkmann
Subject: A short note on microkernels
Date: Sat, 22 Apr 2006 00:38:16 +0200
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.7 (Sanjō) APEL/10.6 Emacs/21.4 (i486-pc-linux-gnu) MULE/5.0 (SAKAKI)

Hi,

I will not comment on the individual mails in the recent thread about
choice of microkernel.  Instead, I will give my view here quickly.

The situation is confusing, because we are really working on a
complete operating system, and not on any single component in
isolation.  The Hurd is still about writing a multi-server system on
top of a microkernel.  Therefore, the microkernel is mainly a tool for
the actual work we want to do.

However, it's the most important tool, so it must fulfill certain
properties.  A substantial amount of our work goes into trying to
identify what these properties are.  What are the functional
requirements?  What are the performance trade-offs using different
implementation techniques?  Of course, to get a relevant answer to
this question we had to consider not the current implementation of the
Hurd on Mach, but the synthesis of the Hurd philosophy, if you will.

It has proven to be productive to test the various Hurd design
concerns against different microkernels, and different variations of a
single microkernel.  This has not only provided a metric for
evaluating the microkernel, but more importantly a metric for
evaluating the Hurd design.  This in turn allows us to refine our
understanding and expectations of the microkernel itself.

Once these have been thoroughly established, the choice of the
microkernel is mainly a matter of practical and performance
considerations.  Experience has shown that todays microkernels are
flexible enough to support, with reasonable amount of modifications a
wide variety of mechanisms.  For example, look at how EROS changed
from a synchronous call-based IPC model to a synchronous end-point
based IPC model to an asynchronous model.  Similar evolutions can be
seen in the L4 kernel.  There are other examples as well.

There is a natural desire to start with a solid foundation and build
on top of it.  However, a solid foundation also restricts the number
of options that can be seen as reasonable.  To reason about the system
design in a more flexible and general way, it seems useful to have a
more dynamic picture of the underlying base ("what would happen if...").

Thanks,
Marcus





reply via email to

[Prev in Thread] Current Thread [Next in Thread]