Accessibility

6.033--Computer System Engineering

Suggestions for classroom discussion of:

Per Brinch Hansen. The nucleus of a multiprogramming system. Communications of the ACM 13, 4 (April, 1970) pages 238-241.

by J. H. Saltzer, February 14, 1996


(Note:  when searching for this author's stuff, it is helpful to
realize that his last name starts with the letter "B".  It is also
helpful to realize that not all cataloguers have figured that out.)

The RC-4000 was the first, and may still be the best explained, system
to use messages as the primary task coordination mechanism.  It is also
the earliest example of a published microkernel design.  (A student in
one of Corby's classes remarked "The only thing that has changed is the
buzzwords.")

- written in Europe.  Does that matter?  (European academics tend to be
VERY academic, and less tolerant of practical and real-world things.)

Is this a description of

-  a speculative plan for a system

-  an experimental system designed and built to see if it would work

-  a real system put into active use with a bunch of applications to
validate that it is useful?

(Answer:  experimental toy.)  How can you tell?  Note that by modern
refereeing standards, this paper is deficient in that it doesn't
explicitly tell us, you have to infer it from clues.

Citations: only half a dozen, quite narrow.  Worrisome.

When was this paper written?  (1970).

What is the speed and scale of the RC-4000 computer compared with
present-day machines? (128 Kbytes of memory, 250 KIPS processor.) Both
are about three orders of magnitude smaller than 1996 numbers for a
network server.

Among other things, this paper gives us a point on the technology curve
and allows us to estimate the average rate of change over 25 years. Ask
what rate of change is involved.  (About 35%/year, compounded
annually.)

How big is the Operating System? (kernel is 19 Kilobytes, -- 6200 words
of three bytes each.)

The Windows kernel is only 4 Mbytes, so maybe system size is growing
only 30%/year, but it isn't far behind.

Where is the overlap with Simon's paper?  (Process hierarchy.  When a
process creates another process, the child process receives a share of
the parent's resources.  Control of a process can be exercised only by
its parent.)

What is the definition of process used by Brinch Hansen?  (A thread of
execution together with an address space.)  Note carefully; every paper
will use a different definition.  (Note also that many students do not
come out of 6.004 with a clear idea of what a thread of execution is
and how it differs from a program.)

Notation problem:  can't tell which arguments of
send/wait/message/answer are input and which are output.  Exercise:
figure it out.

send message (rcvr, msg, buff) in    in   out

wait message (sndr, msg, buff) out  out   out

send answer  (rslt, ans, buff) in    in   in

wait answer  (rslt, ans, buff) out  out   out?

Insight: the buffers are being passed around, by address.  Second
insight:  the language being used must not be C, because it is using
call-by-reference.  This observation is good for a discussion of
assumptions that the author is making about what the reader knows.

What exactly is the distinction between internal and external
processes? (internal processes are kernel simulations intended to give
I/O operations the same interface as an external process.)

Why did we read this paper?  (kernel, client/server, message system,
hard modularity)

Why did Brinch Hansen write it?  (extensible supervisor, process
hierarchy, uniform treatment of I/O)


Comments and suggestions: Saltzer@mit.edu