How often have you rebooted your TV set in the past year? Probably a lot less than you have rebooted your computer. Of course there are many “reasons” for this, but increasingly, nontechnical users don’t want to hear them. They just want their computer to work perfectly all the time and never crash. MINIX 3 is a project to develop an operating system as reliable as a TV set, for embedded systems and mission critical applications, but also for future $50 single-chip laptops and general desktop use. The focus is being small, simple, and reliable. Note: This is the last entry for the Alternative OS Contest.History

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.

Availability

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.