The goal of this book is to bring together and explain current practice in operating systems.
This includes much of what is traditionally covered in operating-system textbooks: concurrency,
scheduling, linking and loading, storage management (both real and virtual), fi le systems,
and security. However, I also cover issues that come up every day in operating-systems design
and implementation but are not often taught in undergraduate courses. For example, I cover:
Deferred work, which includes deferred and asynchronous procedure calls in Windows,
tasklets in Linux, and interrupt threads in Solaris.
The intricacies of thread switching, on both uniprocessor and multiprocessor systems.
Modern fi le systems, such as ZFS and WAFL.
Distributed fi le systems, including CIFS and NFS version 4.
Programmers don’t want to just read about the core concepts of operating systems. They want to learn how to apply the material by actually building applications. This new book motivates them by presenting numerous programming exercises at the code level. They are not only introduced to the OS concepts and abstractions, but also the implementation. Two design projects are integrated throughout the book that they’ll be able to follow to get them into the code. Self-assessment and review material is presented at the end of each chapter to reinforce concepts. These features help to make this an excellent resource for programmers to gain invaluable experience.