Daily Archives: 10/16/2002

Rumors of my death have been greatly exaggerated.

Slashdot is currently running a thread under the rather sensationalistic title

The End of Minix
. It declares that since the XFree86 project has decided to drop support
for the Minix operating system, that it is dead.

Andy Tanenbaum wrote Minix to educate students on the construction of modern operating systems.
It is a microkernel system, where many operating system tasks are performed by user tasks, such as file system access and memory management. It is written in a clear, straightforward style, and is small enough that it can be reasonably understood by sufficiently motivated individuals.

If it has a flaw it is probably that modern PCs have all moved beyond the initial 8088/80286 level that Minix was originally written for. It would be good to have included real memory management and stronger networking support from the very beginning.

Ten years ago, Andy Tanenbaum declared that
Linux is obsolete
, because Linux reverted to a monolithic kernel design instead of the microkernel design, and that Linux wasn’t designed with portability in mind. I think that both of these points are correct, and both are wrong. Tanenbaum viewed the debate over monolithic versus microkernels as completely over, but the fact is that microkernel operating systems are still uncommon, nearly a decade after he first made his comments. There must be some reason why monolithic kernels continue to be the norm, beyond simple inertia. In discussions with Tom Duff on the matter, we basically arrived at a similar point: that regardless of where the code for the filesystem is, it needs to be written. It doesn’t matter that much whether that code lives in the kernel or in user space. If it does live in user space, there will by necessity be overhead of calling remote procedures that is absent in the monolithic kernel case. This limits performance, and operating systems to date have been entirely about delivering performance.

Anyway, is Minix dead? Of course not. If you want to learn about how to construct a nearly practical example of a microkernel operating system, Minix is without a doubt a good place to begin. it doesn’t need to support Xfree, or even be popular to achieve that goal. I keep a copy of the Minix 2.0 source code checked into a CVS repository just for same keeping, and have pondered the idea of constructing an operating system around similar ideas. Every software project doesn’t need
to achive dominance or even acceptance to be worthy of preserving. Tanenbaum puts it this way:

As most of you know, for me MINIX is a hobby, something I do in the evening when I get bored writing books and there are no major wars, revolutions, or senate hearings being televised live on CNN.

It’s a creative way to murder time. And nothing has changed about that.