MINIX 3 has a bright future but somewhat checkered past. The first version, MINIX 1, was released in 1987 and was the first UNIX clone with all the source code available. It developed rapidly and soon had its own USENET newsgroup (comp.os.minix), with 40,000 subscribers within 3 months, a large number at a time when the Internet was only available to university researchers and students. One of the early MINIX adopters was a Finnish student named Linus Torvalds, who went out and bought a PC just to run MINIX, studied it very carefully, and then decided to write his own operating system, inspired by MINIX. Although Linus knew MINIX very well, he didn't steal any code from it, as some people have alleged. Linus system grew into the modern Linux system. MINIX' author, Andrew Tanenbaum and Torvalds have had some fairly public discussions on operating system design, originally in 1992 and most recently in 2006.Rebirth
Although MINIX was (and still is) widely used used for teaching operating systems courses at universities, it got a new impetus in 2005 when Tanenbaum assembled a new team of people to completely redo it as a highly reliable system. MINIX 3 has some history with MINIX 1 and MINIX 2 (released in 1997 as a POSIX-conformant OS), but it is really a new system (analogous to the relationship between Windows XP and Windows 3.1).
Various studies have shown that software broadly contains something like 6-16 bugs per 1000 lines of code and that device drivers have 3-7 times as many bugs as the rest of the operating system. When combined with the fact that 70% of a typical operating system consists of device drivers, it is clear that device drivers are a big source of trouble. For Windows XP, 85% of the crashes are do to bugs in device drivers. Obviously, to make OSes reliable, something has to be done to deal with buggy device drivers. Building a reliable system despite the inevitable bugs in device drivers was the original driving force behind MINIX 3.Design
The approach that MINIX 3 uses to achieve high reliability is fault isolation. In particular, unlike traditional OSes, where all the code is linked into a single huge binary running in kernel mode, in MINIX 3, only a tiny bit of code runs in kernel mode--about 4000 lines in all. This code handles interrupts, process scheduling, and interprocess communication. The rest of the operating system runs as a collection of user-mode processes, each one encapsulated by the MMU hardware and none of them running as superuser. One of these processes, dubbed the reincarnation server, keeps tabs on all the others and when one of them begins acting sick or crashes, it automatically replaces it by a fresh version. Since many bugs are transient, triggered by unusual timing, in most cases, restarting the faulty component solves the problem and allows the system to repair itself without a reboot and without the user even noticing it. This property is called self healing, and traditional systems do not have it.
The structure of MINIX 3 is shown in Fig. 1. It is constructed as a series of layers. At the bottom, running in kernel mode, is a microkernel, consisting of about 3000 lines of C and 800 lines of assembler. Above that comes a layer of device drivers, with each driver in a separate user-mode process to ease in replacing it should it fail. Then come the servers, which form the core of the operating system. These include the reincarnation server mentioned above, the file server, the process manager, and others, including the X server, the data store, and various others. Finally, on top of that come the user processes. Although internally, MINIX 3 is completely different from other UNIX systems, it supports the standard POSIX interface to applications, so normal UNIX software can be ported fairly easily.
Fig. 1. The MINIX 3 architecture
The components communicate by passing fixed-length messages. For example, a user process requests file I/O send sending a message to the file server, which then checks its cache and if the needed block is not present, sends a message to the disk driver process to go get the block. While sending a message adds a little bit of overhead (about 500 nsec on a 3-GHz Pentium 4), the system is still quite responsive. For example, a complete system build, which requires over 120 compilations, takes well under 10 sec.User View
From the user's point of view, MINIX 3 looks like UNIX, except less bloated.
It comes with the X Window System and over 400 standard UNIX programs, including:
Shells: ash, bash, pdksh, rsh
Editors: emacs, nvi, vim, elvis, elle, mined, sed, ed, ex
Language tools: cc, gcc, g++, bison, flex, perl, python, yacc
Programming tools: cdiff, make, patch, tar, touch
Networking: ssh, telnet, ftp, lynx, mail, rlogin, wget, pine
File utilities: cat, cp, bzip2, compress, mv, dd, uue, GNU utilities
Text utilities: grep, head, paste, prep, sort, spell, tail
Administration: adduser, cron, fdisk, mknod, mount, cvs, rcs
Games: dungeon, nethack
Currently the user interface is just X, but someday a GUI may be added if a suitable lightweight GUI can be found. Here are some screen shots.
MINIX 3 is open source software, under the BSD license. It has its own Website from which the a bootable CD-ROM image containing all the sources and binaries can be downloaded. To install it, just boot the CD-ROM, login as root, and type: setup. Installation takes about 10 minutes. After installation, a large number of packages can be installed from the CD-ROM or the Website by just typing: packman to select the choices. Currently MINIX 3 runs on x86 hardware, but ports to the PowerPC and Xscale are underway. It also runs fine on virtual machines such as VMware and Xen.
Since MINIX 3 went public in late 2005, the Website has had over 300,000 unique visitors and the CD-ROM image has been downloaded some 75,000 times. Currently, the site is getting over 1000 visitors a day. There is an active Google USENET newsgroup, comp.os.minix, where people ask and answer questions, post new software, and discuss MINIX 3. MINIX 3 is a community effort and your help is most welcome. Go get the system, try it out, and join the future.