Introduction to MINIX 3

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 Logo 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.

MINIX 3 architecture
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.

45 Comments

  1. 2006-09-25 6:29 am
    • 2006-09-25 10:41 pm
  2. 2006-09-25 6:32 am
  3. 2006-09-25 7:31 am
    • 2006-09-25 3:26 pm
  4. 2006-09-25 8:17 am
  5. 2006-09-25 8:21 am
    • 2006-09-25 9:26 am
    • 2006-09-25 9:55 am
  6. 2006-09-25 8:30 am
    • 2006-09-25 8:40 am
      • 2006-09-26 8:38 am
  7. 2006-09-25 9:21 am
  8. 2006-09-25 9:24 am
    • 2006-09-25 9:51 am
      • 2006-09-25 10:11 am
        • 2006-09-25 10:31 am
      • 2006-09-25 12:06 pm
  9. 2006-09-25 9:42 am
  10. 2006-09-25 9:59 am
    • 2006-09-25 1:27 pm
  11. 2006-09-25 10:08 am
    • 2006-09-26 9:58 pm
  12. 2006-09-25 11:58 am
  13. 2006-09-25 12:13 pm
  14. 2006-09-25 12:21 pm
  15. 2006-09-25 12:25 pm
  16. 2006-09-25 12:53 pm
  17. 2006-09-25 12:59 pm
  18. 2006-09-25 1:30 pm
    • 2006-09-25 4:22 pm
  19. 2006-09-25 1:30 pm
  20. 2006-09-25 2:24 pm
  21. 2006-09-25 2:36 pm
    • 2006-09-25 2:59 pm
      • 2006-09-25 3:42 pm
      • 2006-09-25 3:46 pm
  22. 2006-09-25 3:00 pm
    • 2006-09-25 5:19 pm
      • 2006-09-26 3:09 am
  23. 2006-09-25 7:51 pm
  24. 2006-09-26 3:47 am
  25. 2006-09-26 6:12 am
  26. 2006-09-26 6:17 am
  27. 2006-09-26 10:08 am