MINIX shows even an operating system
can be made to be self-healing.
BY ANDREW S. TANENBAUM
WHILE LINUX IS well known, its direct ancestor, MINIX,
is now 30 and still quite spry for such aged software.
Its story and how it and Linux got started is not well
known, and there are perhaps some lessons to be
learned from MINIX’s development. Some of these
lessons are specific to operating systems, some to
software engineering, and some to other areas (such
as project management). Neither MINIX nor Linux
was developed in a vacuum. There was quite a bit of
relevant history before either got started, so a brief
introduction may put this material in perspective.
In 1960, the Massachusetts Institute of Technology,
where I later studied, had a room-size vacuum-
tube-based scientific computer called the IBM 709.
Although a modern Apple iPad is 70,000x faster and
has 7,300x more RAM, the IBM 709 was the most
powerful computer in the world when introduced.
Users wrote programs, generally in FORTRAN, on
80-column punched cards and brought
them to the human operator, who read
them in. Several hours later the results
appeared, printed on 132-column fanfold paper. A single misplaced comma
in a FORTRAN statement could cause
a compilation failure, resulting in the
programmer wasting hours of time.
To give users better service, MIT developed the Compatible Time-Sharing
System (CTSS), which allowed users to
work at interactive terminals and reduce the turnaround time from hours
to seconds while at the same time using spare cycles to run old-style batch
jobs in the background. In 1964, MIT,
Bell Labs, and GE (then a computer
vendor) partnered to build a successor
that could handle hundreds of users
all over the Boston area. Think of it as
cloud computing V.0.0. It was called
MULTiplexed Information and Computing Service, or MULTICS. To make a
long and complicated story very short,
MULTICS had a troubled youth; the
first version required more RAM than
the GE 645’s entire 288kB memory.
Eventually, its PL/1 compiler was improved, and MULTICS booted and ran.
Nevertheless, Bell Labs soon tired of
the project and pulled out, leaving one
of its programmers on the project, Ken
Thompson, with a burning desire to
reproduce a scaled-down MULTICS on
cheap hardware. MULTICS itself was
released commercially in 1973 and ran
at a number of installations worldwide
until the last one was shut down on
Oct. 30, 2000, a run of 27 years.
Back at Bell Labs, Thompson found a
discarded Digital Equipment Corp. PDP-
7 minicomputer and wrote a stripped
down version of MULTICS in PDP- 7 assembly code. Since it could handle only
one user at a time, Thompson’s col-
from 30 Years
˽ Each device driver should run as
an independent, user-mode process.
˽ Software can last a long time and
should be designed accordingly.
˽ It is very difficult to get people
to accept new and disruptive ideas.