Andrew S. Tanenbaum has an S.B. degree from M.I.T. and a Ph.D. from the University of California at Berkeley. He is currently a Professor of Computer Science at the Vrije Universiteit in Amsterdam, The Netherlands, where he is head of the Computer Systems Department. He is also the Dean of the Advanced School for Computing and Imaging, an interuniversity graduate school doing research on advanced parallel, distributed, and imaging systems. Nevertheless, he is trying very hard to avoid turning into a bureaucrat.
In the past, he has done research on compilers, operating systems, networking, and local-area distributed systems. His current research focuses primarily on the design of wide-area distributed systems that scale to a billion users. This research is being done together with Dr. Maarten van Steen. Together, all his research projects have led to over 90 refereed papers in journals and conference proceedings and five books.
Prof. Tanenbaum has also produced a considerable volume of software. He was the principal architect of the Amsterdam Compiler Kit, a widely-used toolkit for writing portable compilers, as well as of MINIX, a small UNIX clone intended for use in student programming labs. Together with his Ph.D. students and programmers, he helped design the Amoeba distributed operating system, a high-performance microkernel-based distributed operating system. The MINIX and Amoeba systems are now available for free via the Internet.
His Ph.D. students have gone on to greater glory after getting their degrees. He is very proud of them. In this respect he resembles a mother hen.
Prof. Tanenbaum is a Fellow of the ACM, a Fellow of the IEEE, a member of the Royal Netherlands Academy of Arts and Sciences, winner of the 1994 ACM Karl V Karlstrom Outstanding Educator Award, and winner of the 1997 ACM/SIGCSE Award for Outstanding Contributions to Computer Science Education. He is also listed in Who's Who in the World. His home page on the World Wide Web can be found at URL http://www.cs.vu.nl/~ast/ .
Introducation | |
What is an Operating System? | |
The Operating System as an Extended Machine | |
The Operating System as a Resource Manager | |
History of Operating Systems | |
The First Generation | |
The Second Generation | |
The Third Generation | |
The Fourth Generation | |
Computer Hardware Review | |
Processors | |
Memory | |
Disks | |
Tapes | |
I/O Devices | |
Buses | |
Booting the Computer | |
The Operating System Zoo | |
Mainframe Operating Systems | |
Server Operating Systems | |
Multiprocessor Operating Systems | |
Personal Computer Operating Systems | |
Handheld Computer Operating Systems | |
Embedded Operating Systems | |
Sensor Node Operating Systems | |
Real-Time Operating Systems | |
Smart Card Operating Systems | |
Operating System Concepts | |
Processes | |
Address Spaces | |
Files | |
Input/Output | |
Protection | |
The Shell | |
Ontogeny Recapitulates Phylogeny | |
System Calls | |
System Calls for Process Management | |
System Calls for File Management | |
System Calls for Directory Management | |
Miscellaneous System Calls | |
The Windows Win32 API | |
Operating System Structure | |
Monolithic Systems | |
Layered Systems | |
Microkernels | |
Client-Server Model | |
Virtual Machines | |
Exokernels | |
The World According to C | |
The C Language | |
Header Files | |
Large Programming Projects | |
The Model of Run Time | |
Research on Operating Systems | |
Outline of the Rest of This Book | |
Metric Units | |
Summary | |
Processes and Threads | |
Processes | |
The Process Model | |
Process Creation | |
Process Termination | |
Process Hierarchies | |
Process States | |
Implementation of Processes | |
Modeling Multiprogramming | |
Threads | |
Thread Usage | |
The Classical Thread Model | |
Posix Threads | |
Implementing Threads in User Space | |
Implementing Threads in the Kernel | |
Hybrid Implementations | |
Scheduler Activations | |
Pop-Up Threads | |
Making Single-Threaded Code Multithreaded | |
Interprocess Communication | |
Race Conditions | |
Critical Regions | |
Mutual Exclusion with Busy Waiting | |
Sleep and Wakeup | |
Semaphores | |
Mutexes | |
Monitors | |
Message Passing | |
Barriers | |
Scheduling | |
Introduction to Scheduling | |
Scheduling in Batch Systems | |
Scheduling in Interactive Systems | |
Scheduling in Real-Time Systems | |
Policy versus Mechanism | |
Thread Scheduling | |
Classical Ipc Problems | |
The Dining Philosophers Problem | |
The Readers and Writers Problem | |
Research on Processes and Threads | |
Summary | |
Memory Management | |
No Memory Abstraction | |
A Memory Abstraction: Address Spaces | |
The Notion of an Address Space | |
Swapping | |
Managing Free Memory | |
Virtual Memory | |
Paging | |
Page Tables | |
Speeding Up Paging | |
Page Tables for Large Memories | |
Page Lacement Algorithms | |
The Optimal Page Replacement Algorithm | |
The Not Recently Used Page Replacement Algorithm | |
The First-In, First-Out | |
The Second Chance Page Replacement Algorithm | |
The Clock Page Replacement Algorithm | |
The Least Recently Used | |
S | |
Table of Contents provided by Publisher. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.