PRECACE
\r\n
\r\n1 INTRODUCTION
\r\n
\r\n1.1. WHAT IS AN OPERATING SYSTEM
\r\n1.2. HISTORY OF OPERATING SYSTEMS
\r\n1.3. THE OPERATING SYSTEM ZOO
\r\n1.4. COMPUTER HARDWARE REVIEW
\r\n1.5. OPERATING SYSTEM CONCEPTS
\r\n1.6. SYSTEM CALLS
\r\n1.7. OPERATING SYSTEM STRUCTURE
\r\n1.8. RESEARCH ON OPERATING SYSTEMS
\r\n1.9. OUTLINE OF THE REST OF THIS BOOK
\r\n1.10. METRIC UNITS
\r\n1.11. SUMMARY
\r\n
\r\n2 PROCESSES AND THREADS
\r\n
\r\n2.1. PROCESSES
\r\n2.2. THREADS
\r\n2.3. INTERPROCESS COMMUNICATION
\r\n2.4. CLASSICAL IPC PROBLEMS
\r\n2.5. SCHEDULING
\r\n2.6. RESEARCH ON PROCESSES AND THREADS
\r\n2.7. SUMMARY
\r\n
\r\n3 DEADLOCKS
\r\n
\r\n3.1. RESOURCES
\r\n3.2. INTRODUCTION TO DEADLOCKS
\r\n3.3. THE OSTRICH ALGORITHM
\r\n3.4. DEADLOCK DETECTION AND RECOVERY
\r\n3.5. DEADLOCK AVOIDANCE
\r\n3.6. DEADLOCK PREVENTION
\r\n3.7. OTHER ISSUES
\r\n3.8. RESEARCH ON DEADLOCKS
\r\n3.9. SUMMARY
\r\n
\r\n4 MEMORY MANAGEMENT
\r\n
\r\n4.1. BASIC MEMORY MANAGEMENT
\r\n4.2. SWAPPINO
\r\n4.3. VIRTUAL MEMORY
\r\n4.4. PAGE REPLACEMENT ALGORITHMS
\r\n4.5. MODELING PAGE REPLACEMENT ALGORITHMS
\r\n4.6. DESIGN ISSUES FOR PAGING SYSTEMS
\r\n4.7. IMPLEMENTATION ISSUES
\r\n4.8. SEGMENTATION
\r\n4.9. RESEARCH ON MEMORY MANAGEMENT
\r\n4.10. SUMMARY
\r\n
\r\n5 INPUTIOUTPUT
\r\n
\r\n5.1. PRINCIPLES OF UO HARDWARE
\r\n5.2. PRINCIPLES OF UO SOFfWARE
\r\n5.3. UO SOFfWARE LAYERS
\r\n5.4. DlSKS
\r\n5.5. CLOCKS
\r\n5.6. CHARACTER-ORIENTED TERMINALS
\r\n5.7. GRAPHICAL USER INTERFACES
\r\n5.8. NETWORK TERMINALS
\r\n5.9. POWER MANAGEMENT
\r\n5.10. RESEARCH ON INPUT/OUTPUT
\r\n5.11. SUMMARY
\r\n
\r\n6 FILE SYSTEMS
\r\n
\r\n6.1. FILES
\r\n6.2. DIRECTORIES
\r\n6.3. FILE SYSTEM IMPLEMENTATION
\r\n6.4. EXAMPLE FILE SYSTEMS
\r\n6.5. RESEARCH ON nLE SYSTEMS
\r\n6.6. SUMMARY
\r\n
\r\n7 MULTIMEDIA OPERATING SYSTEMS
\r\n
\r\n7.1. INTRODUCTION TO MULTIMEDIA
\r\n7.2. MULTIMEDIA FILES
\r\n7.3. VIDEO COMPRESSION
\r\n7.4. MULTIMEDIA PROCESS SCFIEDULING
\r\n7.5. MULTIMEDIA FILE SYSTEM PARADIGMS
\r\n7.6. FILE PLACEMENT
\r\n7.7. CACHING
\r\n7.8. DISK SCHEDULING FOR MULTIMEDIA
\r\n7.9. RESEARCH ON MULTIMEDIA
\r\n7.10. SUMMARY
\r\n
\r\n8 MULTIPLE PROCESSOR SYSTEMS
\r\n
\r\n8.1. MULTIPROCESSORS
\r\n8.2. MULTICOMPUTERS
\r\n8.3. DISTRIBUTED SYSTEMS
\r\n8.4. RESEARCH ON MULTIPLE PROCESSOR SYSTEMS
\r\n8.5. SUMMARY
\r\n
\r\n9 SECURITY
\r\n
\r\n9.1. THE SECURITY ENVIRONMENT
\r\n9.2. BASICS OF CRYPTOGRAPHY
\r\n9.3. USER AUTHENTICATION
\r\n9.4. ATTACKS FROM INSIDE THE SYSTEM
\r\n9.5. ATTACKS FROM OUTSIDE THE SYSTEM
\r\n9.6. PROTECTION MECHANISMS
\r\n9.7. TRUSTED SYSTEMS
\r\n9.8. RESEARCH ON SECURITY
\r\n9.9. SUMMARY
\r\n
\r\n10 CASE STUDY 1: UNIX AND LINUX
\r\n
\r\n10.1. HISTORY OF UNIX
\r\n10.2. OVERVIEW OF UNIX
\r\n10.3. PROCESSES IN UNIX
\r\n10.4. MEMORY MANAGEMENT IN UNIX
\r\n10.5. INPUT/OUTPUT IN UNIX
\r\n10.6. THE UNIX FILE SYSTEM
\r\n10.7. SECURITY IN UNIX
\r\n10.8. SUMMARY
\r\n
\r\n11 CASE STUDY 2: WINDOWS 2000
\r\n
\r\n11.1. HISTORY OF WINDOWS 2000
\r\n11.2. PROGRAMMING WINDOWS 2000
\r\n11.3. SYSTEM STRUCTURE
\r\n11.4. PROCESSES AND THREADS IN WINDOWS 2000
\r\n11.5. MEMORY MANAGEMENT
\r\n11.6. INPUT/OUTPUT IN WINDOWS 2000
\r\n11.7. THE WINDOWS 2000 FILE SYSTEM
\r\n11.8. SECURITY IN WINDOWS 2000
\r\n11.9. CACHING IN WINDOWS 2000
\r\n11.10. SUMMARY
\r\n
\r\n12 OPERATING SYSTEM DESIGN
\r\n
\r\n12.1. THE NATURE OF THE DESIGN PROBLEM
\r\n12.2. INTERFACE DESIGN
\r\n12.3. IMPLEMENTATION
\r\n12.4. PERFORMANCE
\r\n12.5. PROJECT MANAGEMENT
\r\n12.6. TRENDS IN OPERATING SYSTEM DESIGN
\r\n12.7. SUMMARY
\r\n
\r\n13 READING LIST AND BIBLIOGRAPHY
\r\n
\r\n13.1. SUGGESTIONS FOR FURTHER READING
\r\n13.2. ALPHABETICAL BIBLIOGRAPHY
\r\n
\r\nINDEX
The world has changed a great deal since the first edition of this book appeared in 1992. Computer networks and distributed systems of all kinds have become verv common." Small children now roam the Intemet, where previously only compu\er professionals went. As a consequence, this book has changed a great deal. too.
The most obvious change is that the first edition was about half on singlenrocessor onerating systems and half on distributed systems. I chose that format in l991 because few universities then had courses on distributed systems and wbatever students leamed about distributed systems had to be put into the operating systems course, for which this book was intended. Now most universities have a senarate course on distributed systems, so it is not necessary to try to combine the fwo subjects into one course and one book. This book is intended for a first course on operating systems, and as such focuses mostly on traditional sinele-processor systems.
I have coauthored two other books on operating systems. This leads to two possible course sequences.
Practicallv-oriented sequence:
I. Operating Systems Design and Implementation by Tanenbaum and Woodhull
2. Distributed Systems by Tanenbaum and Van Steen
Traditional sequence:
I. Modem Operating Systems by Tanenbaum
2. Distributed Systems by Tanenbaum and Van Steen
The former sequence uses MINIX and the students are expected to experiment with MINIX in an accompanying laboratory supplementing the first course. The latter sequence does not use MINIX. Instead, some small simulators are available that can be used for snldent exercises dnring a Rrst course using this book. These simulators can be found staHing on the author's Web page: www.cs.vu.ml/~ast/by clicking on Software and supplementary nlaterial for ml books .
In addition to the major change ot switching the emphasis to single-processor operating systems in this book, other major changes include the addition of entire chapters on computer security, multimedia operating systems, and Windows 2000,all imponant and timely topics. In addition, a new and unique chapter on operating system design has been added.
Another new feature is that many chapters now have a section on research aboat the topic of the chapter. This is intended to introduce the reader to modern work in processes, memoty management, and so on. These sections havt numerous references to the cument research literature for the interested reader. In addition, Chapter 13 has many introductory and tutorial references.
Finally, numerous topics have been added to this book or heavily revised These topics include: graphical user intefaces, multiprocessor operating systems,power management for laptops. trusted systems, viruses, network terminals, CD-ROM file systems. mutexes, RAID, soft timers, stable storage. fair-share scheduling, and new paging algorithms. Many new problems have been added and old ones updated. The total number of problems now exceeds 450. A solutions manual is available to professors using this book in a course. They can obtain copy from their local Prentice Hall representative. In addition, over 250 new references to the current literature have been added to bring the book up to date.
Despite the removal of more than 400 pages of old material, the book has increased in size due to the large amount of new material added. While the book is still suitable for a one-semester or two-quarter course, it is probably too long for a one-quarter or one-trimester course at most universities. For this reason, the book has been designed in a modular way. Any course on operating systems should cover chapters I through 6. This is basic material that every student show know.
If additional time is available, additional chapters can be covered. Each of them assumes the reader has finished chapters l through 6, but Chaps. 7 through 12 are each self contained, so any desired subset can be used and in any order,depending on the interests of the instnlctor. In the author's opinion, Chaps.7tbrough 12 are much more interesting than the earlier ones. Instructors shoald tell their stadents that they have to eat their broccoli before they can have the doublw chocolate fudge cake dessen.
I would like to thank the following people for their help in reviewing parts of the manuscript: Rida Bazzi, Riccardo Bettati, Felipe Cabrera, Richard Chapman,John Connely, John Dickinson, John Elliott, Deborah Frincke, Chandana Gamage,Robben Geist, David Golds, Jim Griffioen, Gary Harkin, Frans Kaashoek, Mukkai KrishnamooHhy, Monica Lam, Jussi Leiwo, Herb Mayer, Kirk McKusick. Evi Nemeth,Bill Potvin, Prasant Shenoy, Thomas Skinner, Xian-He Sun, William Terry,Robbert Van Renesse, and Maarten van Steen. Jamie Hanrahan, Mark Russinovich, and Dave Solomon were enormously knowledgeable about Windows 2000 and very helpful. Special thanks go to AI Woodhull for valuable reviews and thinking of man>' new end-of-chapter problems.
My students were also helpful with comments and feedback, especially Staas de Jong,Jan de Vos, Niels Drost, David Fokkema. Auke FolkeHs, Peter Groenewegen,Wilco Ibes, Stefan Jansen, Jeroen Ketema. Joeri Mulder, Irwin Oppenhein, Stef Post, Umar Rehman, Daniel Rijkhof, Maanen Sander, Maurits van der Schee, Rik van der Stoel, Mark van Driel, Dennis van Veen, and Thomas Zeeman.
Barbara and Marvin are still wonderful, as usual, each in a unique way.Finally,last but not least, l would like to thank Suzanne for her love and patience,not to mention all the druiven and kersen, which have replaced the sinasappelsap in recenttimes.