Book Cover     Preface of
Operating Systems
Design and Implementation, 2/e

Most books on operating systems are strong on theory and weak on practice. This one aims to provide a better balance between the two. It covers all the fundamental principles in great detail, including processes, interprocess communication, semaphores, monitors, message passing, scheduling algorithms, input/output, deadlocks, device drivers, memory management, paging algorithms, file system design, security, and protection mechanisms. But it also discusses one particular system-MINIX, a UNIX -compatible operating system-in detail, and even provides a complete source code listing for study. This arrangement allows the reader not only to learn the principles, but also to see how they are applied in a real operating system.

When the first edition of this book appeared in 1987, it caused something of a small revolution in the way operating systems courses were taught. Until then, most courses just covered theory. With the appearance of MINIX , many schools began to have laboratory courses in which students examined a real operating system to see how it worked inside. We consider this trend highly desirable and hope this second edition strengthens it.

It its first 10 years, MINIX has undergone many changes. The original code was designed for a 256K 8088-based IBM PC with two diskette drives and no hard disk. It was also based on Version 7 of UNIX . As time went on, MINIX evolved in many ways. For example, the current version will now run on anything from the original PC (in 16-bit real mode) to large Pentiums with massive hard disks (in 32-bit protected mode). It also changed from being based on Version 7, to being based on the international POSIX standard (IEEE 1003.1 and ISO 9945-1). Finally, many features were added, perhaps too many in our view, but too few in the view of some other people, which led to the creation of LINUX. In addition, MINIX was ported to many other platforms, including the Macintosh, Amiga, Atari, and SPARC. This book covers only MINIX 2.0, which so far runs only on computers with an 80x86 CPU, on systems which can emulate such a CPU, or on the SPARC.

This second edition of the book has many changes throughout. Nearly all of the material on principles has been revised, and considerable new material has been added. However, the main change is the discussion of the new, POSIX -based MINIX , and the inclusion of the new code in this book. Also new is the inclusion of a CD-ROM in each book containing the full MINIX source code plus instructions for installing MINIX on a PC (see the file README.TXT in the main CD-ROM directory).

Setting up MINIX on an 80x86 PC, whether for individual use or for a laboratory is straightforward. A disk partition of at least 30 MB must be made for it, then it can be installed by just following the instructions in the README.TXT file on the CD-ROM. To print the README.TXT file on a PC, first start MS-DOS, if it is not already running (from WINDOWS, click on the MS-DOS) icon. Then type

copy readme.txt prn

to make the printout. The file can also be examined in edit, wordpad, notepad, or any other text editor that can handle flat ASCII text.

For schools (or individuals) that do not have PCs available, two other options are now available. Two simulators are included on the CD-ROM. One, written by Paul Ashton, runs on SPARCs. It runs MINIX as a user program on top of Solaris. As a consequence, MINIX is compiled into a SPARC binary and runs at full speed. In this mode, MINIX is no longer an operating system, but a user program, so some changes to the low-level code were necessary.

The other simulator was written by Kevin P. Lawton of Bochs Software Company. This simulator interprets the Intel 80386 instruction set and enough I/O gear that MINIX can run on the simulator. Of course running on top of an interpreter costs some performance, but it makes debugging much easier for students. This simulator has the advantage that it will run on any computer that supports the M.I.T. X Window System. For more information about both simulators, please see the CD-ROM.

The development of MINIX is an ongoing proposition. The contents of this book and its CD-ROM are merely a snapshot of the system as of the time of publication. For the current state of affairs, please see the MINIX home page on the World Wide Wide, In addition, MINIX has its own USENET newsgroup: comp.os.minix, to which readers can subscribe to find out what is going on in the MINIX world. For those with e-mail, but without newsgroup access, there is also a mailing list. Write to with psubscribe minix-l " as the first and only line in the body of the message. You will receive more information by return e-mail.

For classroom use, a problem solutions manual is available, to instructors only, from Prentice Hall. PostScript files containing all the figures in the book, suitable for making overhead sheets, can be found by following the link marked "Software and supplementary material" from

We have been extremely fortunate in having the help of many people during the course of this project. First and foremost, we would like to thank Kees Bot for doing the lion's share of the work in making MINIX conform to the POSIX standard and for managing the distribution. Without his enormous help, we would never have made it. He wrote large chunks of code himself (e.g. the POSIX terminal I/O), cleaned up other sections, and repaired numerous bugs that had crept in over the years. Thank you for a job well done.

Bruce Evans, Philip Homburg, Will Rose, and Michael Temari have all contributed to the development of MINIX over the years. Hundreds of other people have contributed to MINIX via the newsgroup. There were so many of them and their contributions have been so varied that we cannot even begin to list them all here, so the best we can do is a generic thank you to all of them.

Several people read parts of the manuscript and made suggestions. We would like to give our special thanks to John Casey, Dale Grit, and Frans Kaashoek.

A number of students at the Vrije Universiteit tested the beta version of the CD-ROM. These were: Ahmed Batou, Goran Dokic, Peter Gijzel, Thomer Gil, Dennis Grimbergen, Roderick Groesbeek, Wouter Haring, Guido Kollerie, Mark Lassche, Raymond Ris, Frans ter Borg, Alex van Ballegooy, Ries van der Velden, Alexander Wels, and Thomas Zeeman. We would like to thank all of them for their careful work and detailed reports.

ASW would also like to thank several of his former students, particularly Peter W. Young of Hampshire College and Maria Isabel Sanchez and William Puddy Vargas of the Universidad Nacional Autonoma de Nicaragua for the part their interest in MINIX played in sustaining his efforts.

Finally, we would like to thank our families. Suzanne has been through this ten times now. Barbara has been through it nine times now. Marvin has been through it eight times now. Even Little Bram has been through it four times. It's kind of getting to be routine, but the love and support is still much appreciated. (ast)

As for Al's Barbara, this is the first time she has been through this. It would not have been possible without her support, patience, and good humor. It has been Gordon's good fortune to have been away at college through most of this. But it is a delight to have a son who understands and cares about the same things that fascinate me. (asw)
Andrew S. Tanenbaum Albert S. Woodhull

Book Authors Supplements Order Book

Questions or Comments about this Web Site? email

© 1997 Prentice Hall
Prentice Hall, Inc.
A Simon & Schuster Company
Upper Saddle River, New Jersey 07458
Legal Notice.