The Daemon, the GNU and the Penguin, Ch. 19 - Dr. Peter Salus

by Pamela Jones

October 13 2005

Here is our next installment of The Daemon, the GNU and the Penguin, by Dr. Peter Salus, Chapter 19: "Tanenbaum and Torvalds".

For the observant, I made a mistake in numbering earlier, calling Excursus: The GPL and Other Licenses Chapter 18, and that threw off the numbering. I have now corrected the error. I have also set up a permanent page for Dr. Salus' book, with all the chapters linked, with their titles, so you can find all the chapters easily. Just look for Salus Book [ ] as a permanent link on the left any time you wish to read or check a fact from the book.


The Daemon, the GNU and the Penguin

~ by Dr. Peter H. Salus

Chapter 19. Tanenbaum and Torvalds

Linus posted his queries, his information and his work on comp.os.minix beginning in mid-1991. But on 29 January 1992, Andy Tanenbaum posted a note with the line:

Subject: LINUX is obsolete1

After a few introductory paragraphs, Tanenbaum got to his real criticism of Linux:

As a result of my occupation, I think I know a bit about where operating systems are going in the next decade or so. Two aspects stand out:

Microkernel vs Monolithic System

Most older operating systems are monolithic, that is, the whole operating system is a single a.out file that runs in 'kernel mode.' This binary contains the process management, memory management, file system and the rest. Examples of such systems are UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS, and many more.

The alternative is a microkernel-based system, in which most of the OS runs as separate processes, mostly outside the kernel. They communicate by message passing. The kernel's job is to handle the message passing, interrupt handling, low-level process management, and possibly the I/O. Examples of this design are the RC4000, Amoeba, Chorus, Mach, and the not-yet-released Windows/NT.

While I could go into a long story here about the relative merits of the two designs, suffice it to say that among the people who actually design operating systems, the debate is essentially over. Microkernels have won. The only real argument for monolithic systems was performance, and there is now enough evidence showing that microkernel systems can be just as fast as monolithic systems (e.g., Rick Rashid has published papers comparing Mach 3.0 to monolithic systems) that it is now all over but the shoutin'.

MINIX is a microkernel-based system. The file system and memory management are separate processes, running outside the kernel. The I/O drivers are also separate processes (in the kernel, but only because the brain-dead nature of the Intel CPUs makes that difficult to do otherwise). LINUX is a monolithic style system. This is a giant step back into the 1970s. That is like taking an existing, working C program and rewriting it in BASIC. To me, writing a monolithic system in 1991 is a truly poor idea. . . .

Linus responded the same day with: "Well, with a subject like this, I'm afraid I'll have to reply. Apologies to minix-users who have heard enough about linux anyway. I'd like to be able to just 'ignore the bait', but ... Time for some serious flamefesting!" and a long (somewhat intemperate, but this is a 23-year old student) response.

There was a good deal of going back and forth, and even Brian Kernighan put in a few lines. But the result was that Andy remains to this day a committed microkernel devotee and Linus has continued with a largely monolithic system. (Of course, this generalization is inaccurate, but it serves.)

And, on a certain level, there is no question in my mind but that Andy's position is right: microkernels are "better" than monolithic systems. But, on the other hand, I find both Andy's original posting unnecessarily rebarbative and Linus' "serious flamefesting" inappropriate.

Over a decade later, I find it had to discern any anger or resentment on either side. I asked Andy about the exchange, but he just shrugged me off. "In a straight test," he later remarked, "Linux loses by about 8% in speed." That may well be true. But it's not much of an epitaph.

However, I think the microkernel (as evidenced in Mach [and in the Hurd], in Chorus, in Amoeba) is superior to the monolithic kernel, as long as the message-passing is efficient.

I guess I'll now be subject to a flame war.

1A large collection of the correspondence -- or at least that of the "major" contributors -- can be found here. As I am interested in discussing this, I will refrain from extensive citation. A version of much of the discussion is available as Appendix A [ ] of Open Sources: Voices from the Open Source Revolution (O'Reilly, 1999; ISBN 1565925823).

Dr. Salus is the author of "A Quarter Century of UNIX" (which you can obtain here [ ], here [ ], here [ ] and here [ ] ) and several other books [ ], including "HPL: Little Languages and Tools", "Big Book of Ipv6 Addressing Rfcs", "Handbook of Programming Languages (HPL): Imperative Programming Languages", "Casting the Net: From ARPANET to INTERNET and Beyond", and "The Handbook of Programming Languages (HPL): Functional, Concurrent and Logic Programming Languages". There is an interview with him, audio and video,"codebytes: A History of UNIX and UNIX Licences" [ ] which was done in 2001 at a USENIX conference. Dr. Salus has served as Executive Director of the USENIX Association.

This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

11:59 PM EDT

Copyright 2005 -