FYI: "FSF work on a GNU OS" posted to

John R. MacMillan john at chance.UUCP
Mon May 13 11:44:49 AEST 1991

|> Kernel source alone is about 100,000 lines of code.  This does not include
|> any of the machine-specific sections, which can be quite large; for example,
|> the i386 machine-specific code is 40,000 lines.
|I wonder... are we talking about the same thing?!  Mach MICROkernel, not
|kernel.  Big difference (though, admitedly, I had no idea of the actual
|size of the kernel) in fuctionality.  Mach kernel includes most of the
|kernel of the *nix OS as we know it, microkernel isn't much more then
|task/context switcher, and a process cop, with "everything" else modula-
|rised over it.

Actually all the references to the Mach kernel I have _don't_ include
the UNIX emulation stuff, which can be run at the user level, outside
the kernel.  Most commercial OSes based on Mach put it into the kernel
for performance reasons.

As for what really is in the Mach kernel, it's a little more than
you've mentioned.  It includes a rather neat virtual memory management
system designed to be readily portable to a wide range of different
architectures, including huge multiprocessors, task/thread management,
again on multiprocessors, inter-task communication that's transparent
over a network, and resource management (memory, processors), again on
mulitprocessors.  Considering these design goals, it's not so
surprising that it's more than a few K big.

I remember hearing Rob Pike at Usenix picking on billing Mach as a
microkernel, and telling how much of Plan 9 you could get for the same
number of lines of source.  It included the entire OS, the compiler
and related tools, the window system, I think the UNIX compatibility
library, and I forget what else.

More information about the Comp.sys.3b1 mailing list