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

Re: Hurd and Mach syscalls



Michael Bacarella wrote:
> I'll try to field this.
> 
> On Sun, 9 May 1999, Ashutosh S. Rajekar wrote:
> 
> > 	Could anyone tell me if Hurd has its own syscalls (POSIX type), or
> > does it use the syscalls provided by the Mach4 microkernel.
> 
> It uses the "syscalls" provided by GNUMach, a derivative of Mach X (I
> don't remember off the top of my head if it was 3 or 4).
> 
> > Also tell me if Hurd will continue to run on top of Mach4, or will it
> > run independantly, like Linux. Since it is running on Mach4 (and
> > presumably in the future also), I presume all of the Hurd maintainers
> > write essentially Mach4 code using Mach4 syscalls, to run what is known
> > as the Hurd OS which is really only a set of Mach4 programs.
> 
> An effort is being made to make the Hurd microkernel neutral by
> abstracting common microkernelisms into a library (libmom) which the Hurd
> will run on top of (or which it already does, I'm going by data that's a
> year or so old).
> 
> I'm open to corrections or clarifications.

Adding a bit to this, the only other microkernel that I'm aware of that
there seems to have been thought of adopting is L4 or its "successor,"
Fiasco.

... And based on the things L4 has brought to the collective understanding
of microkernels, I'm not sure at all that it's real wise to pretend to
abstract things that may just *kill* efficiency.  The conclusion coming
out of Dresden from the L4 work is that building a "generic" microkernel
results in not-so-good performance.  They found it much better to take
some group of higher-level abstractions (that might still be fairly low
level, from some perspective), and then build microkernels that are tuned
to provide those abstractions efficiently on the given architecture.

Thus, when L4 gets ported to another architecture, they basically rewrite
the microkernel from scratch, with fair bits of assembler.

Fiasco is essentially L4 in C++, which provides a common base that hopefully
compiles reasonably well on many architectures; I get the impression that 
it is considered a "stop gap" to allow quick ports, whilst efficiency would
require rewriting the microkernel to be real efficient.

What I don't know about L4 is to what degree it is supportive of SMP.  Mach
certainly *intended* to provide efficient SMP; if that should be an abstraction
that L4 *doesn't* provide, then this means Yet Another Feature To Emulate,
probably at library level.

Upshot of all of this is that I think it may be tough to do make Hurd 
Mk-independent without adding quite a lot of code, adding an extra layer
between Hurd daemons and the microkernel, and lowering efficiency...
--
Christopher B. Browne, cbbrowne@hex.net, chris_browne@sabre.com
Web: http://www.ntlug.org/~cbbrowne  SAP Basis Consultant, UNIX Guy
Windows NT - How to make a 100 MIPS Linux workstation perform like an 8 MHz 286


Reply to: