J
ORRIT N. HERDER, HERBERT BOS,
B
EN GRAS, PHILIP HOMBURG,
AND ANDREW S. TANENBAUM
modular system
programming in
MINIX 3
Jorrit Herder holds a M.Sc. degree in computer sci-
ence from the Vrije Universiteit in Amsterdam and is
currently a Ph.D. student there. His research focuses
on operating system reliability and security, and he
i
s closely involved in the design and implementation
of MINIX 3.
jnherder@cs.vu.nl
H
erbert Bos obtained his M.Sc. from the University
of Twente in the Netherlands and his Ph.D. from the
Cambridge University Computer Laboratory. He is
currently an assistant professor at the Vrije
Universiteit Amsterdam, with a keen research inter-
est in operating systems, high-speed networks, and
security.
herbertb@cs.vu.nl
Ben Gr
as has a M.Sc
. in computer science from the
Vrije Universiteit in Amsterdam and has previously
worked as a sysadmin and a programmer. He is now
employed by the VU in the Computer Systems
Section as a programmer working on the MINIX 3
pr
ojec
t.
bjgras@cs.vu.nl
Phi
lip Homburg r
eceived a Ph.D. from the Vrije
Univ
ersiteit
in the field of wide-area distributed sys-
tems.
Bef
ore joining this project, he experimented
with virtual memory, networking, and X Windows in
Minix-vmd and worked on advanced file systems in
the Logical Disk project.
philip@cs.vu.nl
Andr
ew S. Tanenbaum is a professor of computer
sc
ience at the Vrije Universiteit in Amsterdam. He
has w
ritten 16 books and 125 papers and is a Fellow
of
the ACM and a Fellow of the IEEE. He firmly
belie
ves that we need to radically change the struc-
ture of operating systems to make them more reli-
able and secure and that MINIX 3 is a small step in
this direction.
ast@cs.
v
u.nl
WHEN THE FIRST MODERN OPERAT-
ing systems were being developed in the
early 1960s, the designers were so worried
about performance that these systems
were written in assembly language, even
though high-level languages such as FOR-
TRAN, MAD, and Algol were well estab-
lished. Reliability and security were not
even on the radar. Times have changed and
we now need to reexamine the need for
reliability in operating systems.
If you ask ordinary computer users what they like
least about their current operating system, few
people will mention speed. Instead, it will
probably be a neck-and-neck race among mind-
numbing complexity, lack of reliability, and securi-
ty in a broad sense (viruses, worms, etc.). We
believe that many of these problems can be traced
back to design decisions made 40 or 50 years ago.
In particular, the early designers’ goal of putting
speed above all else led to monolithic designs
with the entire operating system running as a sin-
gle binary program in kernel mode. When the
maximum memory available to the operating
system was only 32K words, as was the case with
MIT’s first timesharing system, CTSS, multi-
million-line operating systems were not possible
and the complexity was manageable.
As memories got larger, so did the operating sys-
tems, until we got to the current situation of
operating systems with hundreds of functions
interacting in such complex patterns that nobody
really understands how they work anymore.
While Windows XP, with 5 million LoC (Lines of
Code) in the kernel, is the worst offender in this
regard, Linux, with 3 million LoC, is rapidly
heading down the same path. We think this path
leads to a dead end.
V
arious studies have shown the number of bugs in
programs to be in the range 1–20 bugs per 1000
LoC [1]. Fur
thermore, operating systems tend to
be trickier than application pr
ograms, and device
drivers have an order of magnitude more bugs per
thousand LoC than the r
est of the operating sys-
tem [2, 3]. Given millions of lines of poorly
understood code interacting in unconstrained
ways within a single address space, it is not
surprising that we have r
eliability and security
problems.
;L
O
GI
N:
APR
I
L 2006
M
ODU
L
AR S
Y
S
T
EM PR
O
GR
AMMING IN MINIX 3
19