Newsgroups: comp.sys.3b1 Path: utzoo!utgpu!news-server.csri.toronto.edu!torsqnt!hybrid!chance!john From: john@chance.UUCP (John R. MacMillan) Subject: Re: FYI: "FSF work on a GNU OS" posted to comp.ar Message-ID: <1991May13.014449.15581@chance.UUCP> Organization: Haphazard References: <108@fbits.ttank.com> <75230@brunix.UUCP> <112@fbits.ttank.com> Date: Mon, 13 May 1991 01:44:49 GMT |> 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.