LWN.net Logo

The return of Minix

Back in the early days, when an entirely free, Unix-like system was still a dream, a young student named Linus Torvalds got his hands on a system called Minix. This system had been put together by Andrew Tanenbaum as part of a book on operating systems design; it was intended mainly as a teaching aid. Linus, like many others, found that Minix was also fun to hack on. Also like others, he quickly discovered that the Minix license was not particularly friendly to third-party hacking. While the code was available, it was not possible to distribute enhancements, and there was no mechanism for accepting patches into the official version. So Linus went off and developed his own kernel, and Minix never did become much more than a teaching tool. Minix was put under the BSD license in 2000, but that was far too late. Had Minix carried a free license from the beginning, subsequent events may have taken an entirely different course.
Advertisement

Minix has largely faded from view in recent years, but it is certainly not gone. Last June, Andrew Tanenbaum announced that a new version of Minix, to be called Minix 3, was in the works, along with an updated version of the book. Like its predecessors, Minix 3 will be aimed at education, but Mr. Tanenbaum is going for a wider market this time. In particular, Minix 3 is aimed at "real world" use in low-end systems and embedded systems. This release also targets "Companies who want a small (real-time) modular, open source operating system free of the GPL."

The result of this work is now available from minix3.org. Happily, this release has [Minix logo] passed on Mr. Tanenbaum's suggestion to use a cockroach as its logo ("they are tough as nails and have survived 300 million years"), going, instead, with the critter seen on the right. This release includes some design information, bits of documentation, and a live CD with the operating system itself. Version 3.1.1 includes two compilers (the internal "ACK" compiler is faster than gcc, but with lower-quality code production), TCP/IP networking, and about 300 programs. This release only works on i386 processors, and does not yet support a window system.

Interestingly, the site offers no option to download the source code. As of this writing, the only way to get at the source appears to be to grab the live CD and boot it. For those who would like to browse, a good part of the source will be included as an appendix in the book, and has been posted in one very large page.

Minix 3 is very much a microkernel system; the core kernel is said to be less than 4,000 lines of code. Everything else runs in user space. From the web site:

The parts that run in user mode are divided into small modules, well insulated from one another. For example, each device driver runs as a separate user-mode process so a bug in a driver (by far the biggest source of bugs in any operating system), cannot bring down the entire OS. In fact, most of the time when a driver crashes it is automatically replaced without requiring any user intervention, without requiring rebooting, and without affecting running programs.

As others have pointed out, this claim reaches a bit far: no amount of isolation can protect the system against a driver which, for example, wedges the bus. If Minix 3 ever grows to the point that it supports DMA transfers, driver bugs will also be able to hose down any other part of the system. And, in any case, quietly restarting buggy drivers also may not be the best way to get those drivers fixed.

There is plenty of room to criticize the Minix 3 approach, but there is not much use in that exercise. Minix 3 is free software. Anybody can play with it and see for themselves how well it works. Interested parties can improve it, and share their work with others. The Linux kernel has grown complicated, to the point that it can be hard for beginning hackers to approach. The much simpler nature of Minix 3 may well appeal to developers who find the Linux learning curve to be unpleasantly steep. So there may well be a wider role for this version of Minix. It is a welcome contribution to the free software community.


(Log in to post comments)

Minix code is fun to play with

Posted Oct 27, 2005 11:07 UTC (Thu) by davidw (subscriber, #947) [Link]

A couple of years ago, I wrote an article on the eCos operating system, and as part of the demo project, I needed a floppy driver to grab data from the floppy. I looked at Linux and then some BSD code first, but found it to be very wrapped up in the rest of the system, and a bit thick in any case, as it tried to handle any sort of floppyish device that anyone might throw at it. At that point I though... hrm, I'll check out the Minix book. And sure enough, it was cleaner and easier to integrate - I had a working (well, read only, which is all I needed) floppy driver in a day or two. The project that I ended up creating was "Scivoli":

http://www.dedasys.com/freesoftware/ecos.html

The return of Minix

Posted Oct 29, 2005 0:03 UTC (Sat) by giraffedata (subscriber, #1954) [Link]

who find the Linux learning curve to be unpleasantly steep

The steep learning curves are the pleasant ones. The learning curve is the graph of productivity on the vertical axis versus time on the horizontal access. Something which is easy to learn (or there isn't much to learn) has a learning curve that quickly gets up to its highest value: maximum productivity. Something obtuse and complicated has a learning curve that hangs around at the low altitudes, rising gradually, for a maddeningly long time.

learning curves

Posted Nov 3, 2005 20:35 UTC (Thu) by roelofs (subscriber, #2599) [Link]

The steep learning curves are the pleasant ones. The learning curve is the graph of productivity on the vertical axis versus time on the horizontal access.

Interesting definition, but not really consistent with common usage--namely, that steep learning curves are the unpleasant ones. The implied graph as used by most people does put time on the horizontal axis, but "cumulative stuff learned (before being able to accomplish anything useful)" is what goes on the vertical one. Productivity would be kind of a thresholded thing--zero (or negative) until the level of learning reaches some relatively high value, then increasing.

Not to be pedantic or anything... :-)

Greg

learning curves

Posted Nov 3, 2005 22:29 UTC (Thu) by eli (subscriber, #11265) [Link]

The implied graph as used by most people does put time on the horizontal axis, but "cumulative stuff learned (before being able to accomplish anything useful)" is what goes on the vertical one.
Better:
y = "total knowledge"
x = "things you can do"

Time required to learn how to do the next thing is a function of the change in y, depending on how long it takes you to learn.

A "user friendly" system in the usual meaning would have a shallow slope starting at the origin. The problems usually occur later: either the slope gets worse later, or the line just stops too soon, when you just can't do what you need to do. It might look like y=.25x^2

An "expert friendly" system, if you will, starts out steep or even y>0, but after the initial investment of effort requires little additional effort to increase what you are able to accomplish. An example of that would be vim. It would have a graph like y=sqrt(x)+5.

learning curves

Posted Nov 4, 2005 3:55 UTC (Fri) by giraffedata (subscriber, #1954) [Link]

It's not only an interesting definition, but the original one, and the only one that makes semantic sense. The learning curve was invented by industrial engineers to describe mathematically the effect of making a change to a process (new worker, new machine, new rules, etc.).

But I agree that most non-IEs use "steep learning curve" to refer to a shallow one. We'll have to file it with all those other things where the majority uses a term incorrectly. E.g. "IDE" as an alternative to SCSI; "LUN" as a thing you put files on; "mortgage" as a loan.

I don't think they actually envision any graph, though. I think they envision climbing a hill.

Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.