Newsgroups: comp.os.mach
Path: utzoo!geoff
From: geoff@zoo.toronto.edu (Geoffrey Collyer)
Subject: Re: Bytes in Mach 3.0? (mine is smaller than yours, revisited)
Message-ID: <1991Feb16.002946.5711@zoo.toronto.edu>
Organization: U of Toronto Zoology
References: <1991Feb14.220240.26795@ico.isc.com> <62753@bbn.BBN.COM>
	<1991Feb15.214231.21348@watmath.waterloo.edu>
Date: Sat, 16 Feb 1991 00:29:46 GMT

Dick Dunn:
>> >My confusion stems from the understanding that the Mach 3.0 kernel
>> >is supposed to be the "micro-kernel" version, and the belief that a 240 Kb
>> >kernel cannot reasonably be labeled "micro".

Fletcher Kittredge:
>> Sure, how familar are you with modern operating systems?  245K of text
>> with 31k of data is *VERY* small for a UNIXoid kernel.  For example,
>> here is the size of the Unix kernel on Sun, DEC and HP systems:

Guy Middleton:
>I don't think it is all that small.  4.3bsd on a VAX has text of similar size:
>
>text	data	bss	dec	hex
>229784	166320	90048	486152	76b08
>
>Note that it is probably more fair to compare 386 with VAX binaries than with
>SPARC, MIPS or HP-PA, since RISC code tends to occupy more space.

Here are some more `macro' kernel sizes, from a Sun 3 running a hybrid
Ninth Edition system (dak's 9vr1, for those who know what that means):

text	data	bss	dec	hex
200540	41084	311848	553472	87200	/unix

This kernel is configured for 8 users and includes a very generous
allotment of streams buffers, a couple on-disk file systems (bitmapped
and non-bitmapped free lists), /proc, the client side of a network file
system (netb), TCP/IP, and various goo left over from the Sun system
(e.g. keyboard mapping line discipline).

Please note that the Mach ``micro-kernel'', at least as recently
distributed, is claimed to exclude networking and file system code,
among other things, if memory serves.  So one is left to wonder why a
micro-kernel which one would expect to be stripped-down and tight, is
somewhat larger and much less functional than a macro kernel.  One can
argue that the Bell Labs Research people are brilliant and thus produce
smaller kernels and that Memory Is Cheap So Who Cares (if one is
willing to ignore the increased complexity that usually accompanies
increased size) but none of that really explains this large
discrepancy.  Certainly breaking up tightly-integrated code into
separate modules produces some increase in code size, but this is
incredible.

And ignoring object size, a "wc -l" on the newly-available Mach 3.0
micro-kernel produced 102,821.  A quick inspection reveals copyright
notices, RCS revision history logs and 40-character identifiers all
over, but surely that only accounts for a quarter of this size at
most.  Even the above-named more-functional macro kernel is only 78,420
lines, much of it inherited from SunOS.
-- 
Geoff Collyer		utzoo!geoff, zoo.toronto.edu!geoff
