base-hw's future

Neal H. Walfield neal at ...8...
Tue Nov 5 14:48:38 CET 2013


Hi, Norman,

Thank you for the information!

At Wed, 30 Oct 2013 18:10:07 +0100,
Norman Feske wrote:
> Base-hw was born out of the observation that classical L4-based systems
> carry quite significant redundancies between the microkernel and
> roottask as both kernel and roottask have to keep track of how resources
> are assigned to processes. I.e., the kernel contains a mapping data base
> and page tables, but roottask also keeps records of how memory pages are
> used by user-level processes. The same story can be told of other kernel
> objects such as threads and protection domains.

This is similar to my experience with Viengoos.  I initially started
designing Viengoos as an L4 root task.  The double accounting was
annoying, but the real killer for me was the tacit policy imposed by
L4's API: L4's abstractions were getting in the way!  In particular,
because I wanted mappings to survive after a task's destruction, I had
to route all mapping operations via the root task.  This complicated
the design of interfaces and effectively doubled the number of
required IPCs for some tasks.  It turned out that rewriting Viengoos
to run on bare hardware was easier than working around the API
mismatch and resulted in more elegant low-level interfaces.

> In this design, the "kernel" is not a
> self-sustaining piece of software but a mere library that provides
> back-end functionality for roottask. I.e., it performs no allocations
> and becomes active only when called by the roottask code (via one of the
> roottask-local system calls) or by IPC operations. All the dynamic (and
> complicated) stuff like memory management is handled by roottask code
> using Genode's user-level abstractions.

Is the library running in kernel space and the "kernel" running in
user space?  Do they directly share data structures?

> As of now, we don't recommend the use of base-hw in serious settings
> because it is still in flux. That said, Genode hides the peculiarities
> of the particular kernels. Because hopping between kernels (such as
> base-hw and Fiasco.OC) is almost seamless, there is no need to pick a
> kernel upfront when starting the development of a Genode-based system.
> Just pick the most convenient kernel to start with. At the API level,
> Genode is capability-based. So developers using the API effectively
> develop components for a capability-based system. Once kernel-protected
> capabilities become available in base-hw, this change will be
> transparent to users of the API.

Great!

Thanks,

:) Neal




More information about the users mailing list