[TUHS] Paper discussing Unix boot process?
jnc at mercury.lcs.mit.edu
Tue Apr 16 22:52:37 AEST 2019
> From: Charles Anthony
> The Multics System Initialization Program Logic Manual. 139 pages of
> somewhat detailed information.
I was going to mention the Multics init PLM! :-) Needless to say, it's
probably not a good candidate for the original goal - a document describing
how an OS boots - it's simply too complicated for ordinary mortals! (Reading
it makes _my_ head hurt!) There are a couple of reasons it's so complex.
Multics is not a monolitic OS, the way most versions of Unix are (although I
gather this is no longer quite true of Linux); the OS isn't this large blob
of bits you load into memory and start. Its structure makes heavy use of the
segmentation model supported by the hardware. Moreover, although the first
segments loaded aren't paged, many of the later ones are. (This makes sense
in the context of the times; with limited core main memory, you wouldn't want
to devote massive chunks of main memory to have the entire OS always
However, this all makes for a more complex booting process; the standard
Multics boot tape (a Multics System Tape) contains many modules, which get
linked in individually at boot time. (In V6 terms - the version I'm most
familiar with - it's as if a Unix boot tape contained 'lib1' and 'lib2', and
the bootstrap included a linker to build the OS binary in memory.) And in fact
the modules come in in tranches, and some of the earlier one are available for
use in loading later tranches (e.g. paging).
This does have some advantages, though; e.g. the MST is the same for all
Multics machines (including the initial boot of a new machine); the system is
customized to the particular configuration during the bootstrap process. This
is actually not too crazy, there are reasons this makes sense.
For one, the whole 'information utility' concept (where Multics admittedly
went down the wrong path, in terms of the future of computers); a single
giant machine (multi-processor, multi-memory bank, multi-I/O controller). The
thing is that any of these could be switched out if it developed a fault, but
then you have to be able to boot that new configuration. (In particular,
Multics wasn't a master-slave multi-processor system, they're all the same;
but only one CPU runs for most of booting, the others are started and added
once the system is running. But the 'bootstrap CPU' might change if the
original bootstrap CPU develops a fault...)
More information about the TUHS