Cover
Preface
Introduction
What is an operating system?
Evaluation Criteria
A brief history of operating systems
I Kernels and Processes
The Kernel Abstraction
The process concept
Dual-mode operation
Safe control transfer
Case Study: Booting an operating system kernel
Case Study: Virtual machines
Conclusion and future directions
The Programming Interface
Process management
Input/output
Case Study: Implementing a shell
Case Study: Interprocess communication
Operating system structure
Conclusion and future directions
II Concurrency
Concurrency and Threads
Threads: Abstraction and interface
Simple API and example
Thread internals
Implementation details
Asynchronous I/O and event-driven programming
Conclusion and future directions
Synchronizing Access to Shared Objects
Challenges
Shared objects and synchronization variables
Lock: Mutual Exclusion
Condition variables: Waiting for a change
Implementing synchronization objects
Designing and implementing shared objects
Conclusions
Advanced Synchronization
Multi-object synchronization
Deadlock
Alternative approaches to synchronization
Conclusion
Scheduling
Uniprocessor scheduling
Multiprocessor scheduling
Energy-aware scheduling
Real-time scheduling
Queuing theory
Case Study: data center servers
III Memory Management
Address Translation
Address translation concept
Segmentation and Paging
Efficient address translation
Software address translation
Conclusions and future directions
Caching and Virtual Memory
Cache concept: when it works and when it doesn't
Hardware cache management
Memory mapped files and virtual memory
Conclusions and future directions
Applications of Memory Management
Zero copy input/output
Copy on write
Process checkpointing
Recoverable memory
Information flow control
External pagers
Virtual machine address translation
Conclusions and future directions
IV Persistent Storage
File Systems: Introduction and Overview
The file system abstraction
API
Software layers
Conclusions and future directions
Storage Devices
Magnetic disk
Flash storage
Conclusions and future directions
Files and Directories
Accessing files: API and caching
Files: Placing and finding data
Directories: Naming data
Putting it all together: File access in FFS
Alternatives to file systems
Reliable Storage
Transactions: Atomic updates
Error detection and correction
Conclusion and future directions
V Index
Index