Minix 3
Minix 3
Minix 3
Minix 3 running X11 with TWM as Window Manager. Company / Andrew S. Tanenbaum developer OS family Unix-like Working state Current Source model Free and open source software 3.2.0 / June 8, 2011; 33 days Latest stable release ago Supported i386 architecture platforms Kernel type Microkernel Default user ash interface License BSD License Official website http://www.MINIX3.org MINIX 3 is a project to create a small, highly reliable and functional Unix-like operating system. It is published under the BSD license. The main goal of the project is for the system to be fault-tolerant by detecting and repairing its own faults on the fly, without user intervention. The main uses of the operating system are envisaged to be embedded systems as well as the education sector, such as universities or the XO-1 laptop.[1] MINIX 3 currently supports IA-32 architecture PC compatible systems. It is also possible to run MINIX under emulators or virtual machines, such as Bochs,[2][3] VMware Workstation,[4] Microsoft Virtual PC,[5] and QEMU. Ports to the PowerPC[6] and ARM architectures (Intel XScale)[7] are in development. The distribution comes on a Live CD and also can be downloaded as a USB stick image.[8]
Contents
[hide]
2.1 Reduce kernel size 2.2 Cage the bugs 2.3 Limit drivers' memory access 2.4 Survive bad pointers 2.5 Tame infinite loops 2.6 Limit damage from buffer overruns 2.7 Restrict access to kernel functions 2.8 Restrict access to I/O ports 2.9 Restrict communication with OS components 2.10 Reincarnate dead or sick drivers 2.11 Integrate interrupts and messages
3 Architecture 4 Differences between MINIX 3 and prior versions 5 Books and Articles 6 See also 7 References and notes 8 External links
Reliability in MINIX 3
One of the main goals of MINIX 3 is reliability. Below, some of the more important principles that enhance MINIX 3's reliability are discussed.
Monolithic operating systems such as Linux and FreeBSD and Hybrids like Windows have millions of lines of kernel code. In contrast, MINIX 3 has about 6,000 lines of executable kernel code, which can make problems easier to find in the code.
The kernel also maintains a table telling which I/O ports each driver may access. As a result, a driver can only touch its own I/O ports. In monolithic systems, a buggy driver can access I/O ports belonging to another device.
Architecture
The Architecture of MINIX 3 As can be seen, at the bottom level is the microkernel, which is about 4,000 lines of code (mostly in C, plus a small amount of assembly language). It handles interrupts, scheduling, and message passing. In addition it supports an API of about 30 kernel calls that authorized servers and drivers can make. User programs cannot make these calls. Instead, they can issue POSIX system calls which send messages to the servers. The kernel calls perform functions such as setting interrupts and copying data between address spaces. At the next level up, we find the device drivers, each one running as a separate user-mode process. Each one controls some I/O device, such as a disk or printer. The drivers do not have access to the I/O port space and cannot issue I/O instructions directly. Instead, they must make kernel calls giving a list of I/O ports to write to and the values to be written. While there is a small amount of overhead in doing this (typically 500 nsec), this scheme makes it possible for the kernel to check authorization, so that, for example, the audio driver cannot write on the disk.
At the next level we find the servers. This is where nearly all the operating system functionality is located. User processes obtain file service, for example, by sending messages to the file server to open, close, read, and write files. In turn, the file server gets disk I/O performed by sending messages to the disk driver, which actually controls the disk. One of the key servers is the reincarnation server. Its job is to poll all the other servers and drivers to check on their health periodically. If a component fails to respond correctly, or exits or gets into an infinite loop, the reincarnation server (which is the parent process of the drivers and servers) kills the faulty component and replaces it with a fresh copy. In this way the system is automatically made self-healing without interfering with running programs. Currently the reincarnation server, the file server, the process server, and the microkernel are part of the trusted computing base. If any of them fail, the system crashes. Nevertheless, reducing the trusted computing base from 3-5 million lines of code found in Linux and Windows systems to about 20,000 lines greatly enhances system reliability.
Diagram of the relationships between several Unix-like systems MINIX 1, 1.5, and 2 were developed as tools to help people learn about the design of operating systems. MINIX 1.0, released in 1987, was 12,000 lines of C and some x86 assembly language. Source code of the kernel, memory manager, and file system of MINIX 1.0 are printed in the book. Tanenbaum originally developed MINIX for compatibility with the IBM PC and IBM PC/AT microcomputers available at the time. MINIX 1.5, released in 1991, included support for MicroChannel IBM PS/2 systems and was also ported to the Motorola 68000 and SPARC architectures, supporting the Atari ST, Commodore Amiga, Apple Macintosh and Sun Microsystems SPARCstation computer platforms. A version of MINIX running as a user process under SunOS was also available.
MINIX 2.0, released in 1997, was only available for the x86 and Solaris-hosted SPARC architectures. Minix-vmd was created by two Vrije Universiteit researchers, and added virtual memory and support for the X Window System. MINIX 3 does the same, and provides a modern operating system with many newer tools and many UNIX applications.[13] Prof. Tanenbaum once said:
There have also been many improvements in the structure of the kernel since MINIX 2 was released, making the operating system more reliable.[14] MINIX version 3.1.5 was released 5 Nov 2009. It contains X11, emacs, vi, cc, gcc, perl, python, ash, bash, zsh, ftp, ssh, telnet, pine, and over 400 other common UNIX utility programs. With the addition of X11, this version marks the transition away from a text-only system. Another feature of this version, which will be improved in future ones, is the ability of the system to withstand device driver crashes, and in many cases having them automatically replaced without affecting running processes. In this way, MINIX is self-healing and can be used in applications demanding high reliability.
Tanenbaum, Andrew S; Albert S. Woodhull (14 January 2006). Operating Systems: Design and Implementation (3rd ed.). Prentice Hall. ISBN 0131429388. Building a dependable operating system: fault tolerance in MINIX 3 by Jorrit N. Herder Reorganizing UNIX for Reliability by Jorrit N. Herder, Herbert Bos, Ben Gras, Philip Homburg, and Andrew S. Tanenbaum. Modular system programming in MINIX 3 by Jorrit N. Herder, Herbert Bos, Ben Gras, Philip Homburg, and Andrew S Tanenbaum J.N. Herder et al., Modular System Programming in MINIX 3, ;Login, April 2006 [11] Pablo A Pessolani. MINIX4RT: A Real-Time Operating System Based on MINIX [12] Building Performance Measurement Tools for the MINIX 3 Operating System, by Rogier Meurs [13] Design and implementation of the MINIX Virtual File system [14] Reference manual for MINIX 3 Kernel API [15] Towards a true microkernel operating system [16] Construction of a Highly Dependable Operating System [17] Minix 3 and the microkernel experience: Smart Kernel by Rdiger Weis
See also
Free software portal
2006 [2].
3. ^ Senn, Will. "OSNews.com." Virtually Minix: A Tutorial & Intro to Minix on XP via
2006. [5]
7. ^ MINIX 3 Operating System official website 8. ^ Download 9. ^ Tanenbaum, Andy (2006-09-25). "Introduction to MINIX 3". OSnew. OSnews.
Retrieved 2008-07-04. "From Rebirth section: "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 due 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.""
10. ^ Tanenbaum, Andrew. CSAIL Event Calendar. 25 Aug 2006 [6]. 11. ^ a b Tanenbaum, Andrew. "Tanenbaum-Torvalds debate, Part II:." 12 May 2006. Vrije
External links
Wikibooks has a book on the topic of Minix 3
Wiki
MINIX 3: a Modular, Self-Healing POSIX-compatible Operating System on YouTube http://www.minix3.ru - official russian site comp.os.minix - official forum(since 1987) A very good description of Minix 3 by Andy Tanenbaum MINIX: what is it, and why is it still relevant? An interview with Andy Tanenbaum Minix Network Service Documentation Can We Make Operating Systems Reliable and Secure? Minix Tips for running the Operating System Version Minix3 installation on YouTube [hide]v d eUnix and Unix-like operating systems
AIX BSD DragonFly BSD FreeBSD GNU HP-UX IRIX Linux LynxOS Mac OS X MINIX NetBSD OpenBSD Plan 9 QNX Research Unix SCO OpenServer Solaris UNIX System V Tru64 UNIX UnixWare VxWorks Xenix more Categories: Computing platforms | Unix variants | Free software operating systems | Microkernels | Operating system distributions bootable from read-only media | Educational operating systems
Log in / create account Article Discussion Read View source View history
Top of Form
Bottom of Form
Main page Contents Featured content Current events Random article Donate to Wikipedia Help About Wikipedia Community portal Recent changes
Interaction
Toolbox
Contact Wikipedia
Print/export Languages
This page was last modified on 1 July 2011 at 09:05. Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. See Terms of use for details. Wikipedia is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization. Contact us Privacy policy About Wikipedia Disclaimers