Re: some newbie questions
Robert de Forest wrote:
> > At the time that Hurd was envisioned, Mach was expected to be ported *everywhere,*
> > and it was expected that it would be made extremely efficient, and there would be
> > a substantial population of grad students familiar with it. Unfortunately
> > (arguably), the IBM Workplace OS project failed, and Mach development efforts
> > became something of a "hot potato" that finally was laid to rest at University of
> > Utah. They now really care about FluxOS (which, encouragingly, just recently had
> > a new release), and it is likely only Hurd development that is both modern and
> > dependent on Mach.
> What about the NextStep/MacOS thing (MacOS X?)? Isn't it supposed to be based
> on some version of Mach? Isn't BeOS also based on a multiserver/microkernel?
> Are these projects not Mach or not modern?
MacOS-X and NeXTStep are both monolithic kernels using Mach as a substrate in a fairly
similar fashion to the way MkLinux runs atop Mach. NeXTStep was based on an older
version of Mach, and may really be quite tightly integrated with Mach.
Definitely not a multiserver situation.
The Be architecture is a little less clear, but I don't think Mach is in their picture,
and I don't think microkernels are involved.
> > There have been thoughts of moving Hurd to use L4 or its successor (whose name
> > escapes me). It seems more sensible to actually get Hurd working and useful
> > first.
> What are L4 and its successor (whose name escaped you :)? What do they add?
> Where are their home pages?
See: <http://os.inf.tu-dresden.de/L4/LinuxOnL4/> for information on L4, and
<http://os.inf.tu-dresden.de/fiasco/> for information on Fiasco, which is a successor
project to L4.
L4 was of great interest a couple years ago as it is a microkernel that is indeed
actually small (rather unlike Mach). The research results indicated that the way to
make microkernels efficient was to choose some abstractions that would be published to
the "server(s)" on top, but then code the microkernel very specifiically to the
hardware. L4 was written in IA-32 assembler.
Unfortunately, the licensing problem reared its ugly head. The researchers wanted to
widely disseminate understanding of L4, and wanted it released under something similar
to the GPL. The university thought otherwise, wanting to be able to make millions off
of licensing anything that turned out useful. In the end, there is a MIPS version of
the L4 microkernel that is available under the GPL, but other versions are either not
generally available or not generally usable.
Fiasco is a followup project, with the following interesting properties:
- It's GPLed from day 1.
- It's largely written in C++. (Those that hate C++ will of course be appalled.)
- Not quite as fast as L4, but certainly more portable, which is useful if you want to
port it to a bunch of architectures.
- Version 0.5.1 was released about 2 weeks ago, which means that those working on it are
being successful at getting releases out.
It might, in the long run, be a "cool" substrate for Hurd to run on. Almost certainly
preferable to Mach.
Unfortunately, there are some nice dilemnas.
You can have:
a) A small, fast microkernel, which requires rearchitecting Hurd, and requires managing
device driver code for any devices that are to be supported.
b) Mach, which will limit the availability of device drivers, as hacking Mach is
probably as hard as hacking either Hurd or Linux.
c) Run Hurd atop Linux, which is probably more efficient than running Hurd atop Mach,
and buys you lots of device drivers, but again requires rearchitecting Hurd.
Option a) is a "cool" option; option c) tries to maximize hardware support. Both are
substantial efforts that nobody is working on just now...