[comp.os.mach] Bytes in Mach 3.0?

georgeb@fai.UUCP (George Bosworth) (02/12/91)

Considering the Mach 3.0 kernel and the Unix Server, could a 
kind soul tell me about how many bytes are in the respective
load modules?  And about how many device drivers are included
in the figures? Thanks much.


George H. Bosworth                         georgeb@fai.com    or  
Fujitsu America B-2-7                      uunet!fai.com!georgeb
3055 Orchard Drive                         
San Jose CA 95134                          1-408/432-1300 x5033

champlin@decwrl.dec.com (Virgil Champlin) (02/13/91)

  I too would like to see some basic numbers for executable images of
the micro kernel.  I am really jazzed about mach but would like to know
if it would be crazy to try and build a 68000 or i386 (somewhat special
purpose) machine and expect the micro kernel to take 128 or 256K?
Thanks much -virgil
--
    Virgil Champlin			champlin@nsl.dec.com
					Palo Alto, CA
	"I got it, I got it, I ain't got it."

webb@ibmpa.awdpa.ibm.com (Bill Webb) (02/14/91)

In article <CHAMPLIN.91Feb12131759@virgil.pa.dec.com>, champlin@decwrl.dec.com (Virgil Champlin) writes:
|> 
|>   I too would like to see some basic numbers for executable images of
|> the micro kernel.  I am really jazzed about mach but would like to know
|> if it would be crazy to try and build a 68000 or i386 (somewhat special
|> purpose) machine and expect the micro kernel to take 128 or 256K?
|> Thanks much -virgil
|> --
|>     Virgil Champlin			champlin@nsl.dec.com
|> 					Palo Alto, CA
|> 	"I got it, I got it, I ain't got it."


Here's some numbers for a 386 MACH 3.0 kernel (your mileage may vary):

ls -lag STD+WS/mach_kernel
-rwxr-xr-x  3 webb     usr        332478 Feb 13 12:37 STD+WS/mach_kernel
cccp:/space3/obj/ps2/latest/kernel(5) size !$
size STD+WS/mach_kernel
text    data    bss     dec     hex
245728  31572   86728   364028  58dfc

----------------------------------------------------------------
The above views are my own, not necessarily those of my employer.
Bill Webb (IBM AWD Palo Alto, Ca.), (415) 855-4457.
UUCP: ...!uunet!ibmsupt!webb INTERNET: webb@ibminet.awdpa.ibm.com

rcd@ico.isc.com (Dick Dunn) (02/15/91)

webb@ibmpa.awdpa.ibm.com (Bill Webb) writes:
> champlin@decwrl.dec.com (Virgil Champlin) writes:
> |>   I too would like to see some basic numbers for executable images of
> |> the micro kernel...
...
> Here's some numbers for a 386 MACH 3.0 kernel (your mileage may vary):
...
> text    data    bss     dec     hex
> 245728  31572   86728   364028  58dfc

Either there's something here that deceives a typical, UNIXoid, naive under-
standing of "size" output, or there's something very wrong.  Does the text
size somehow include non-kernel code?  Is "size" getting fooled by some-
thing?  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".

Explanation/clarification, please?
-- 
Dick Dunn     rcd@ico.isc.com -or- ico!rcd       Boulder, CO   (303)449-2870
   ...But is it art?

fkittred@bbn.com (Fletcher Kittredge) (02/15/91)

In article <1991Feb14.220240.26795@ico.isc.com> rcd@ico.isc.com (Dick Dunn) writes:
>webb@ibmpa.awdpa.ibm.com (Bill Webb) writes:
>> champlin@decwrl.dec.com (Virgil Champlin) writes:
>> |>   I too would like to see some basic numbers for executable images of
>> |> the micro kernel...
>...
>> Here's some numbers for a 386 MACH 3.0 kernel (your mileage may vary):
>...
>> text    data    bss     dec     hex
>> 245728  31572   86728   364028  58dfc
>
>Either there's something here that deceives a typical, UNIXoid, naive under-
>standing of "size" output, or there's something very wrong.  Does the text
>size somehow include non-kernel code?  Is "size" getting fooled by some-
>thing?  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".
>
>Explanation/clarification, please?

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:

VAX Ultrix 4.1
-rwxr-xr-x  1      root.wheel      848896 Feb  2 10:45 /vmunix*
text	data	bss	dec	hex
655912	107008	817076	1579996	181bdc

DECStation Ultrix 4.1
-rwxr-xr-x  1      root.wheel     2767956 Sep 24 09:42 /nfs/spcds1/root/vmunix*
text	data	bss	dec	hex
1115968	119904	260256	1496128	16d440

Sun 3 O/S 4.1
-rwxr-xr-x  1 root       733407 Feb 14 11:39 /vmunix*
text	data	bss	dec	hex
542064	93072	144488	779624	be568

Sun SPARCStation O/S 4.1
-rwxr-xr-x  1 root      1027466 May 26  1989 /vmunix*
text	data	bss	dec	hex
802816	113952	103744	1020512	f9260

HP 9000s700 HP-UX 8.0 (PreRelease) 
-rwxr-xr-x   1 root     2        2093056 Jan 11 13:50 /hp-ux*
1401920 + 311276 + 335560 = 2048756

>-- 
>Dick Dunn     rcd@ico.isc.com -or- ico!rcd       Boulder, CO   (303)449-2870
>   ...But is it art?


Fletcher Kittredge
Platforms and Tools Group, BBN Software Products
10 Fawcett Street,  Cambridge, MA. 02138
617-873-3465  /  fkittred@bbn.com  /  fkittred@das.harvard.edu

gamiddle@watmath.waterloo.edu (Guy Middleton) (02/16/91)

In article <62753@bbn.BBN.COM> fkittred@spca.bbn.com (Fletcher Kittredge) writes:
> In article <1991Feb14.220240.26795@ico.isc.com> rcd@ico.isc.com (Dick Dunn) writes:
> >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".
> >
> >Explanation/clarification, please?
> 
> 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:
> 
[various huge numbers deleted]

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.

geoff@zoo.toronto.edu (Geoffrey Collyer) (02/16/91)

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

rcd@ico.isc.com (Dick Dunn) (02/18/91)

fkittred@bbn.com (Fletcher Kittredge) writes:
> [excerpts from my article showing incredulity at 240Kb of text in 3.0]

> Sure, how familar are you with modern operating systems?...

To the extent that "modern operating systems" is neither an oxymoron nor an
empty set, I think I'm reasonably familiar with them.  (I'll take "modern"
in the sense of "contemporary" since I think that's what was intended.:-)

>...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:...
[examples showing kernels containing 530-1370Kb of text]

Yet there have been a couple of followups showing systems currently in use
which have conventional (non-"micro") kernels smaller than the size of the
3.0 kernel.

Even though there are huge UNIX kernels to be found, I don't think that a
relative measure against them says much.  It is almost always possible to
find code worse than what you've got; a characterization of "less bad than
XYZ" is much weaker than "good"!  240Kb of code is a lot in an absolute
sense.

BTW, I'm focusing on the text size because that's where the complexity is.
-- 
Dick Dunn     rcd@ico.isc.com -or- ico!rcd       Boulder, CO   (303)449-2870
   ...But is it art?

fkittred@bbn.com (Fletcher Kittredge) (02/18/91)

In article <1991Feb15.214231.21348@watmath.waterloo.edu> gamiddle@watmath.waterloo.edu (Guy Middleton) writes:
>In article <62753@bbn.BBN.COM> fkittred@spca.bbn.com (Fletcher Kittredge) writes:
>> In article <1991Feb14.220240.26795@ico.isc.com> rcd@ico.isc.com (Dick Dunn) writes:
>> >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".
>> >
>> >Explanation/clarification, please?
>> 
>> 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:
>> 
>[various huge numbers deleted]
>
>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.

Sorry for confusing the issue by posting the figures for Sun O/S, Ultrix and
HP-UX, even though they were enlightening.  The point is that those operating
systems are not modern operating systems; neither is 4.3 BSD, or the ninth
Edition of Unix.  All of the above are the last of the previous generation
of operating systems.

Modern operating systems are designed from the ground up to support parallel
processors (NUMA and UMA), distributed systems and object oriented programming.
the above systems are single threaded, and have distributed name services,
shared memory and IPC/RPC tacked on as an afterthought.

A better comparision would be between Chorus, Ameoba and Mach 3.0.

regards,
fletcher




Fletcher Kittredge
Platforms and Tools Group, BBN Software Products
10 Fawcett Street,  Cambridge, MA. 02138
617-873-3465  /  fkittred@bbn.com  /  fkittred@das.harvard.edu

sef@kithrup.COM (Sean Eric Fagan) (02/18/91)

In article <1991Feb17.233812.18908@ico.isc.com> rcd@ico.isc.com (Dick Dunn) writes:
>BTW, I'm focusing on the text size because that's where the complexity is.

How many strings are there in the mach kernel?  Remember that mach is
(apparantly) compiled with gcc, which puts strings into text space, not
data.  That might or might not add something to it, but it should be
considered.

-- 
Sean Eric Fagan  | "I made the universe, but please don't blame me for it;
sef@kithrup.COM  |  I had a bellyache at the time."
-----------------+           -- The Turtle (Stephen King, _It_)
Any opinions expressed are my own, and generally unpopular with others.

ccplumb@rose.uwaterloo.ca (Colin Plumb) (02/18/91)

>> In article <1991Feb14.220240.26795@ico.isc.com> rcd@ico.isc.com (Dick Dunn) writes:
>>> 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".

I must agree.  For all the VM functionality in Mach, I'll allow it 128 K
but wish for less.  Something is seriously wrong with 240K.

gamiddle@watmath.waterloo.edu (Guy Middleton) wrote:
>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.

Another VAX, same site, different configuration::
text	data	bss	dec	hex
220608	82548	66860	370016	5a560

4.3BSD on an HP 9000/236 (68010):
text	data	bss	dec	hex
246752	27392	54152	328296	50268

The larger test size is probably due to debugging code; the system is
a bit flaky...

We need the old utzoo, which was constrained to 64K split I&D.

For comparison, a system V release 4 /unix on a 68030:
text	data	bss	dec	hex
702704	117252	313936	1133892	114d44

Ouch!
-- 
	-Colin

rock@cbnews.att.com (Y. Rock Lee) (02/18/91)

In article <1991Feb16.002946.5711@zoo.toronto.edu> geoff@zoo.toronto.edu (Geoffrey Collyer) writes:
>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.

245K of text is not "micro-kernel" at all in my opinion, especially when 
all the networking and file system code are excluded. Also, it's a little
bit misleading to simply use the output from "size" to prove that UNIX 
is a monster, because it includes all the drivers you have in your system.
One needs to do a little more in order to get some fair numbers.

Y. Rock Lee

Rick.Rashid@cs.cmu.edu (02/19/91)

We have made no attempt here to build or distributed a stripped
down version of the Mach kernel.  The existing distribution 
contains support for a variety of devices and displays, a kernel
debugger and a bootstrap loader as well as the "Mach kernel"
proper.  

For example: in a recent build I looked at the text size of
various parts of the kernel.  Machine dependent i386
code (for ISA architectures) amounted to about 85K bytes
of which approximately 17.5K was machine dependent
debugger support.  The machine independent debugger
code generated an additional 14K of code.  The bootstrap
loader was 13K and machine independent device support
was approximately 22K.   Overall, these components
accounted for 135K of generated code. 

Strictly speaking, much of this code does not need to
be loaded into the kernel image.  We have experimented
with versions of the kernel in which the bootstrap loader,
default pager, and even ethernet and disk drivers reside
outside the kernel.  We have never discussed it, but
in principle the debugger could be done that way as well.
These enhancements will make there way out to the
community as encorporate them into our internal releases
via the anonymous ftp path.

When looking at the rest of the kernel, a few things should
be kept in mind as well. The size of machine
independent code in the Mach kernel is inflated considerably
by machine generated (i.e. MIG) remote procedure call or
message stub code.  About 40K goes into such interfaces
although there is very little human written code involved.
From a space perspective, the MIG generated code is far from
optimal and could be handled by a simple interpreter working
from table data supplied by the stub generator.

Finally, the Mach 3.0 kernel has a number of compatibility
hooks to support code written for older versions of Mach.
This tends to inflate considerably the IPC size numbers
in particular.  A pure 3.0 environment could switch this
code off.

-Rick

PS - One additional point should be made.  One reason we
have not put in the energy to set up "minimized" versions
of the kernel is that so little of the runtime space of a 
real system consists of kernel binary.  In older versions
of Mach kernel stacks for threads easily consumed
more then twice the amount of memory used by the
kernel binary.  While in principle these stacks were
pageable, in practice nearly all were used frequently
enough that they could be considered "real" memory
taken from applications.  The most recent versions
have eliminated this entire cost category by eliminating 
separate kernel stacks for threads and using explicit 
continuations instead.  

lance@motcsd.csd.mot.com (lance.norskog) (02/19/91)

Folks, I think these numbers comprise the micro-kernel with the BSD Unix
'server' bolted on its side in an unholy fashion.  Yes? No?  

tritsche@Informatik.TU-Muenchen.DE (Stefan Tritscher) (02/20/91)

In article <1991Feb16.002946.5711@zoo.toronto.edu| geoff@zoo.toronto.edu (Geoffrey Collyer) writes:
|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
[...]
|-- 
|Geoff Collyer		utzoo!geoff, zoo.toronto.edu!geoff

They don't say what they mean with 'micro'.
Maybe they mean micro-functional not micro-size ;->

Sorry - could not resist, Stefan

Rick.Rashid@cs.cmu.edu (02/21/91)

Good joke.

The fact of the matter is that, in many ways, Mach provides 
substantially more functionality that a 4.3BSD or similar kernel
provides.

Specifically:

	1) VM -
	    Mach's VM is substantially more sophisticated
	    than 4.3BSD.  It provides for large, sparse
	    address spaces, copy-on-write, a well-defined
	    layering of machine independent and dependent
	    memory mapping code, etc.

	    Mach also provides for the allocation of memory
	    objects by user programs and external paging.

	2) IPC -
	    Mach provides a secure, extensible IPC facility
	    with a variety of features designed to simplify
	    or improve the implementation of multithreaded
	    servers.  Moreover, the speed of IPC is critical
	    and much complexity of code in the IPC
	    parts of Mach is due to a need for  fast
	    IPC operations.

	3) Parallelism -
	    Mach provides multiple threads per address space.

	    Mach provides support for multiprocessors and
	     multiprocessor scheduling including the dynamic
	     allocate of processors to threads.  It also supports
	     multiple scheduling classes and provides the
	     mechanism necessary for efficient implementation
 	     of multithreaded programs.

Mach (and systems like it) are best described as 
"system software kernels".  They provide key software abstractions
of hardware functionality (tasks, threads, ports, messages, memory
objects) which allow traditional system services such as file systems,
data bases, window managers, etc. to be efficiently implemented
outside the kernel.  

In fact, Mach is defined in such a way that even its own 
functionality can be implemented outside the kernel.  Memory
objects, ports, and even tasks and threads can be effectively
implemented or simulated by user programs in such a way
that no other Mach program can distinguish these "external"
objects from the internal ones.  The kernel itself is a Mach
task with multiple Mach threads of control operating within it
and it makes use many of the same IPC and VM calls 
used by user programs.

I think the key point here is not "is mine bigger or smaller than yours",
but rather, is my kernel defined and implemented in such a way
as to allow system applications to be efficiently implemented
above it.  If it is, then you can use that kernel as the basis for
many new operating systems and system applications without
having to resort to placing ever larger amounts of code in
supervisor state.

lance@motcsd.csd.mot.com (lance.norskog) (02/21/91)

lance@motcsd.csd.mot.com (lance.norskog) writes:

>Folks, I think these numbers comprise the micro-kernel with the BSD Unix
>'server' bolted on its side in an unholy fashion.  Yes? No?  

So it's just the micro-kernel?

All right, all right, here's another theory: the micro-kernel contains a lot
of functionality which allows you to easily add on protocols, file systems,
device drivers, regular programs, AND bolts a number of processors together
in a clean, extensible way without forcing all the inefficiencies of
normal symmetric spin-lock style UNIX machines.  All this functionality
controls the size of the architecture; even if you don't have the features
linked in the core is still big because you CAN link in the features.

Enough whistling in the dark: time to download the freed sources.

Lance

webb@ibmpa.awdpa.ibm.com (Bill Webb) (02/22/91)

In article <2931@motcsd.csd.mot.com>, lance@motcsd.csd.mot.com (lance.norskog) writes:
|> lance@motcsd.csd.mot.com (lance.norskog) writes:
|> 
|> >Folks, I think these numbers comprise the micro-kernel with the BSD Unix
|> >'server' bolted on its side in an unholy fashion.  Yes? No?  
|> 
|> So it's just the micro-kernel?
|> 
|> All right, all right, here's another theory: ...
|> ...
|> Enough whistling in the dark: time to download the freed sources.
|> 
|> Lance

Ok, If I'd known I'd start such a lot of thrashing around I'd have either
held back from answering the original question (how big was the microkernel?)
or posted more information. 

Here's a summary of the output of the size command for each major 
component, followed by the details:

14348   880     256     15484   3c7c    Sub-Total ddb
45340   32      0       45372   b13c    Sub-Total ipc
39828   2728    0       42556   a63c    Sub-Total kern
16768   1732    0       18500   4844    Sub-Total mach
1760    260     0       2020    7e4     Sub-Total mach_debug
39792   200     4       39996   9c3c    Sub-Total vm
21528   624     18      22170   569a    Sub-Total device
13132   340     0       13472   34a0    Sub-Total boot_ufs
5044    28      0       5072    13d0    Sub-Total intel
19944   15628   0       35572   8af4    Sub-Total i386
53404   6000    27      59431   e827    Sub-Total i386at

270888  28452   305     299645  4927d   Total

For this particular mach_kernel (MK42), the size command gives:

text    data    bss     dec     hex
278496  29796   26844   335136  51d20	mach_kernel.MK42.STD+WS

So the above accounts for almost all of the text+data (bss is
harder to handle as the size command doesn't give most of it since
it's in "common").

Here's all of the component information (exercise: find out what's
missing!)

text	data	bss	dec	hex
128	16	0	144	90	db_access.o
1024	0	0	1024	400	db_aout.o
1176	16	0	1192	4a8	db_break.o
1496	568	0	2064	810	db_command.o
1760	124	0	1884	75c	db_examine.o
928	0	0	928	3a0	db_expr.o
1112	0	0	1112	458	db_input.o
1408	12	0	1420	58c	db_lex.o
404	16	0	420	1a4	db_output.o
824	0	0	824	338	db_print.o
1052	0	0	1052	41c	db_run.o
1076	60	256	1392	570	db_sym.o
260	0	0	260	104	db_trap.o
512	52	0	564	234	db_variables.o
940	16	0	956	3bc	db_watch.o
248	0	0	248	f8	db_write_cmd.o

14348   880     256     15484   3c7c   	Sub-Total ddb
 
text	data	bss	dec	hex
2096	0	0	2096	830	ipc_entry.o
1116	0	0	1116	45c	ipc_hash.o
356	20	0	376	178	ipc_init.o
8364	0	0	8364	20ac	ipc_kmsg.o
1148	4	0	1152	480	ipc_marequest.o
1372	0	0	1372	55c	ipc_mqueue.o
2260	0	0	2260	8d4	ipc_notify.o
2372	0	0	2372	944	ipc_object.o
2940	0	0	2940	b7c	ipc_port.o
612	0	0	612	264	ipc_pset.o
6264	0	0	6264	1878	ipc_right.o
616	0	0	616	268	ipc_space.o
2224	0	0	2224	8b0	ipc_splay.o
372	8	0	380	17c	ipc_table.o
148	0	0	148	94	ipc_thread.o
1640	0	0	1640	668	mach_debug.o
6472	0	0	6472	1948	mach_msg.o
4968	0	0	4968	1368	mach_port.o

45340   32      0       45372   b13c   	Sub-Total ipc
 
text	data	bss	dec	hex
316	0	0	316	13c	ast.o
820	8	0	828	33c	bootstrap.o
304	0	0	304	130	debug.o
2088	16	0	2104	838	exception.o
680	0	0	680	2a8	host.o
1352	0	0	1352	548	ipc_host.o
448	0	0	448	1c0	ipc_kobject.o
2404	0	0	2404	964	ipc_mig.o
544	8	0	552	228	ipc_sched.o
2544	0	0	2544	9f0	ipc_tt.o
644	136	0	780	30c	kalloc.o
1176	4	0	1180	49c	lock.o
1084	32	0	1116	45c	mach_clock.o
408	36	0	444	1bc	mach_factor.o
436	0	0	436	1b4	machine.o
2048	40	0	2088	828	printf.o
592	0	0	592	250	priority.o
2724	0	0	2724	aa4	processor.o
216	0	0	216	d8	queue.o
4044	268	0	4312	10d8	sched_prim.o
572	0	0	572	23c	startup.o
364	4	0	368	170	syscall_emulation.o
700	0	0	700	2bc	syscall_subr.o
104	2088	0	2192	890	syscall_sw.o
2524	12	0	2536	9e8	task.o
5452	24	0	5476	1564	thread.o
596	0	0	596	254	thread_swap.o
72	0	0	72	48	time_stamp.o
424	0	0	424	1a8	timer.o
440	12	0	452	1c4	xpr.o
3708	40	0	3748	ea4	zalloc.o

39828   2728    0       42556   a63c   	Sub-Total kern
 
text	data	bss	dec	hex
4788	376	0	5164	142c	mach_host_server.o
2536	240	0	2776	ad8	mach_port_server.o
8444	976	0	9420	24cc	mach_server.o
252	40	0	292	124	memory_object_default_user.o
748	100	0	848	350	memory_object_user.o

16768   1732    0       18500   4844   	Sub-Total mach
 
text	data	bss	dec	hex
1760	260	0	2020	7e4	mach_debug_server.o

1760    260     0       2020    7e4    	Sub-Total mach_debug
 
text	data	bss	dec	hex
3488	8	0	3496	da8	memory_object.o
1320	0	0	1320	528	vm_debug.o
5036	20	0	5056	13c0	vm_fault.o
104	0	0	104	68	vm_init.o
1988	0	0	1988	7c4	vm_kern.o
12244	24	0	12268	2fec	vm_map.o
7844	48	0	7892	1ed4	vm_object.o
1816	28	0	1844	734	vm_pageout.o
4868	52	4	4924	133c	vm_resident.o
1084	20	0	1104	450	vm_user.o

39792   200     4       39996   9c3c   	Sub-Total vm
 
text	data	bss	dec	hex
364	0	0	364	16c	blkio.o
2632	92	0	2724	aa4	chario.o
840	0	0	840	348	cirbuf.o
820	0	0	820	334	dev_lookup.o
608	0	0	608	260	dev_name.o
4064	84	0	4148	1034	dev_pager.o
532	48	0	580	244	device_reply_user.o
1972	160	0	2132	854	device_server.o
3152	184	0	3336	d08	device_user.o
132	0	0	132	84	device_init.o
3368	0	0	3368	d28	ds_routines.o
2436	32	0	2468	9a4	net_io.o
608	24	18	650	28a	subrs.o

21528   624     18      22170   569a   	Sub-Total device
 
text	data	bss	dec	hex
600	4	0	604	25c	boot_printf.o
7404	204	0	7608	1db8	default_pager.o
432	128	0	560	230	def_pager_setup.o
3028	0	0	3028	bd4	file_io.o
1668	4	0	1672	688	load.o

13132   340     0       13472   34a0   	Sub-Total boot_ufs
 
 
text	data	bss	dec	hex
5044	28	0	5072	13d0	pmap.o

5044    28      0       5072    13d0   	Sub-Total intel
 
text	data	bss	dec	hex
460	0	0	460	1cc	exec.o
260	4	0	264	108	fpu.o
0	96	0	96	60	gdt.o
56	0	0	56	38	hardclock.o
308	24	0	332	14c	i386_init.o
420	4	0	424	1a8	init.o
440	0	0	440	1b8	io_emulate.o
132	0	0	132	84	io_map.o
4456	8332	0	12788	31f4	db_disasm.o
812	8	0	820	334	db_interface.o
1092	208	0	1300	514	db_trace.o
0	232	0	232	e8	ktss.o
0	32	0	32	20	ldt.o
104	4	0	108	6c	loose_ends.o
616	92	0	708	2c4	pic.o
516	28	0	544	220	pit.o
1348	0	0	1348	544	pcb.o
172	0	0	172	ac	phys.o
524	0	0	524	20c	read_fault.o
44	4	0	48	30	setroot.o
3108	100	0	3208	c88	trap.o
80	0	0	80	50	bcopy.o
32	0	0	32	20	bzero.o
24	0	0	24	18	gcc.o
2664	2048	0	4712	1268	idt.o
140	0	0	140	8c	interrupt.o
28	0	0	28	1c	ntoh.o
232	52	0	284	11c	spl.o
60	0	0	60	3c	_setjmp.o
68	0	0	68	44	kdasm.o
1748	4360	0	6108	17dc	locore.o

19944   15628   0       35572   8af4   	Sub-Total i386
 
text	data	bss	dec	hex
616	1160	0	1776	6f0	autoconf.o
2564	96	0	2660	a64	blit.o
228	2080	0	2308	904	c765.o
2412	88	0	2500	9c4	com.o
60	644	0	704	2c0	conf.o
7532	64	0	7596	1dac	hd.o
2960	36	0	2996	bb4	if_3c501.o
7128	56	0	7184	1c10	if_pc586.o
6632	120	0	6752	1a60	if_ns8390.o
76	4	0	80	50	iopl.o
9200	1448	0	10648	2998	kd.o
1184	20	0	1204	4b4	kd_event.o
1292	16	13	1321	529	kd_mouse.o
276	0	0	276	114	kd_queue.o
2692	0	0	2692	a84	m765drv.o
7472	36	0	7508	1d54	m765knl.o
0	80	0	80	50	pic_isa.o
1080	52	14	1146	47a	rtc.o

53404   6000    27      59431   e827   	Sub-Total i386at

----------------------------------------------------------------
The above views are my own, not necessarily those of my employer.
Bill Webb (IBM AWD Palo Alto, Ca.), (415) 855-4457.
UUCP: ...!uunet!ibmsupt!webb INTERNET: webb@ibminet.awdpa.ibm.com

jclark@sdcc6.ucsd.edu (John Clark) (02/22/91)

In article <1991Feb18.145707.26230@cbnews.att.com> rock@cbnews.att.com (Y. Rock Lee) writes:
>In article <1991Feb16.002946.5711@zoo.toronto.edu> geoff@zoo.toronto.edu (Geoffrey Collyer) writes:
>>Please note that the Mach ``micro-kernel'', at least as recently
>>distributed, is claimed to exclude networking and file system code,
+
+245K of text is not "micro-kernel" at all in my opinion, especially when 
+all the networking and file system code are excluded. Also, it's a little
+bit misleading to simply use the output from "size" to prove that UNIX 

I presumed that 'micro' meant 1) freee of un*x-ism and hence free of
AT* license 2) included only task management and memory management.
High level file system and other usual 'macro' kernel features where
not included. As for 250k so what! Buy a 2 MegaBit ROM.
-- 

John Clark
jclark@ucsd.edu