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

Microkernel portability (was: Re: Confusion about where to go in Hurd)



Hi,

On Fri, Aug 03, 2007 at 02:20:53PM +0200, Anders Breindahl wrote:
> On 200708011732, olafBuddenhagen@gmx.net wrote:
> > On Thu, Jul 26, 2007 at 03:43:57AM +0200, Anders Breindahl wrote:

> > > I can't tell, but if I am not mistaken, it has been (is?) a design
> > > goal of the Hurd to be microkernel-independent.
> > 
> > This is not really possible. The lower-level system parts are very
> > closely related to the microkernel; it doesn't make any sense to be
> > portable at this level. If the higher-level design is kept intact,
> > most translators should work without much change however.
> 
> I don't know whether it wouldn't be feasible.
> 
> Clean interfaces at this level could be hard to do, especially if one
> considers oneself with performance. But the value gained would be to
> decouple microkernel development from Hurd development, so that
> IPC-speedups (e.g.) could be research in some possible nextgen
> microkernel, and hardware support could be added to Mach in the
> meantime, by others.

IPC is a rather good example, why it is *not* possible to be
microkernel-independant. L4 (and most other second generation
microkernels) have very fast IPC thanks to implementing a very simple,
synchronous IPC model. (In contrast to Mach's async IPC.) Switching to
sync IPC requires a total redesign of the low-level parts of the system.

The same is true for memory management, sheduling, drivers... In short,
everything that a microkernel might provide. Writing an abstraction
layer for L4 to be usable the same way as Mach not only would require
more work than writing a native L4-based system core, but also would
result in the same complexity as we see in Mach, and even more slowness
due to additional translation overhead.

Really, it's not feasible to abstract at this level. This is not a
matter of opinion, but hard facts. Anyone familiar with microkernel
designs will confirm this.

Further down I explained that microkernels are so hard to create because
of all the fundamental design decisions it involves. These decisions are
so hard precisely *because* they fundamentally affect the design of the
whole system.

-antrik-



Reply to: