This is a bit late, but I thought I'd mention a few things about it anyway. Andy Tanenbaum (of Minix fame) came to give a talk here the other day.
He motivated his discussion of Minix by saying that consumers want PCs that work like TVs; you buy one and plug it in and it works for 10 years. No patching, installing virus scanners, updating virus scanners, re-installing Windows, etc. The goal should be "it just works" for 10 years. Keep that in mind.
He then began to discuss Minix, and in so doing essentially described the OS everyone who takes trains implements. A couple things really stood out, though:
- no virtual memory
- no paging
- number of processes fixed at compile time
- complicated-sounding configuration files to specify which process can access which hardware
Numbers 1, 2 and 3 mean that Minix is completely unusable as a general-purpose consumer OS.
No virtual memory and no paging means you force users to have enough physical memory to fit all the applications they're going to want to use in RAM. Using a lot of memory and want to open another tab in Firefox? Close that terminal first!
A compile-time fixed-size process table means you say at compile time that users will never use more than n processes. Tanenbaum must really like Bill Gates and his "640k" philosophy. This one is funny, too, because his reasoning was mainly that he didn't want to do dynamic memory allocation in the kernel. Well in about 5 minutes I came up with a way to have the process tables managed in a user-space program with a fixed-size cache in the kernel (and I'm pretty stupid), so that's really a non-argument.
The last item, number 4, is more interesting. Specifying what hardware drivers can access is not a bad idea, but the implementation sounds really bad; he didn't get too detailed describing it, but essentially said that there are a bunch of config files that "the administrator" will have to set up. If you need "the administrator" to do anything, your OS will never be a general-purpose consumer OS.
Note that I am only holding Minix up to the "general-purpose consumer OS" ruler because Tanenbaum himself did, by motivating Minix in the way he did. For embedded or real-time applications, these design decisions make a lot more sense, of course.
He also spent a fair amount of time bashing Linux, which is to be expected I suppose. He definitely had some faulty reasoning, though: he claims that number of bugs is roughly proportional to lines of code. Ok, sure, could well be. He then claimed that because Linux keeps adding so many drivers, they're adding bugs faster than they can fix them (and even worse, these bugs can affect the entire system since drivers in Linux essentially get free reign). Well maybe, but you don't use every driver in existence on your system! You only use a few. When a new driver enters the kernel, it may well be buggy. But after some shake-down, it's fine, and then other new drivers that get added won't affect you, since you'll never even load them!