1. "INTRODUCTION"
1.1 WHAT IS AN OPERATING SYSTEM?
1.2 HISTORY OF OPERATING SYSTEMS
1.3 COMPUTER HARDWARE REVIEW
1.4 THE OPERATING SYSTEM ZOO
1.5 OPERATING SYSTEM CONCEPTS
1.6 SYSTEM CALLS
1.7 OPERATING SYSTEM STRUCTURE
1.8 THE WORLD ACCORDING TO C
1.9 RESEARCH ON OPERATING SYSTEMS
1.10 OUTLINE OF THE REST OF THIS BOOK
1.11 METRIC UNITS
1.12 SUMMARY
2. "PROCESSES AND THREADS"
2.1 PROCESSES
2.2 THREADS
2.3 INTERPROCESS COMMUNICATION
2.4 SCHEDULING
2.5 CLASSICAL IPC PROBLEMS
2.6 RESEARCH ON PROCESSES AND THREADS
2.7 SUMMARY
3. "MEMORY MANAGEMENT"
3.1 NO MEMORY ABSTRACTION
3.2 A MEMORY ABSTRACTION: ADDRESS SPACES
3.3 VIRTUAL MEMORY
3.4 PAGE REPLACEMENT ALGORITHMS
3.5 DESIGN ISSUES FOR PAGING SYSTEMS
3.6 IMPLEMENTATION ISSUES
3.7 SEGMENTATION
3.8 RESEARCH ON MEMORY MANAGEMENT
3.9 SUMMARY
4. "FILE SYSTEMS"
4.1 FILES
4.2 DIRECTORIES
4.3 FILE SYSTEM IMPLEMENTATION
4.4 FILE-SYSTEM MANAGEMENT AND OPTIMIZATION
4.5 EXAMPLE FILE SYSTEMS
4.6 RESEARCH ON FILE SYSTEMS
4.7 SUMMARY
5. "INPUT/OUTPUT"
5.1 PRINCIPLES OF I/O HARDWARE
5.2 PRINCIPLES OF I/O SOFTWARE
5.3 I/O SOFTWARE LAYERS
5.4 DISKS
5.5 CLOCKS
5.6 USER INTERFACES: KEYBOARD, MOUSE, MONITOR
5.7 THIN CLIENTS
5.8 POWER MANAGEMENT
5.9 RESEARCH ON INPUT/OUTPUT
5.10 SUMMARY
6. "DEADLOCKS"
6.1 RESOURCES
6.2 INTRODUCTION TO DEADLOCKS
6.3 THE OSTRICH ALGORITHM
6.4 DEADLOCK DETECTION AND RECOVERY
6.5 DEADLOCK AVOIDANCE
6.6 DEADLOCK PREVENTION
6.7 OTHER ISSUES
6.8 RESEARCH ON DEADLOCKS
6.9 SUMMARY
7. "VIRTUALIZATION AND THE CLOUD"
7.1 HISTORY
7.2 REQUIREMENTS FOR VIRTUALIZATION
7.3 TYPE 1 AND TYPE 2 HYPERVISORS
7.4 TECHNIQUES FOR EFFICIENT VIRTUALIZATION
7.5 ARE HYPERVISORS MICROKERNELS DONE RIGHT?
7.6 MEMORY VIRTUALIZATION
7.7 I/O VIRTUALIZATION
7.8 VIRTUAL APPLIANCES
7.9 VIRTUAL MACHINES ON MULTICORE CPUS
7.10 LICENSING ISSUES
7.11 CLOUDS
7.12 CASE STUDY: VMWARE
7.13 RESEARCH ON VIRTUALIZATION AND THE CLOUD
8. "MULTIPLE PROCESSOR SYSTEMS"
8.1 MULTIPROCESSORS
8.2 MULTICOMPUTERS
8.3 DISTRIBUTED SYSTEMS
8.4 RESEARCH ON MULTIPLE PROCESSOR SYSTEMS
8.5 SUMMARY
9. "SECURITY"
9.1 THE SECURITY ENVIRONMENT
9.2 OPERATING SYSTEMS SECURITY
9.3 CONTROLLING ACCESS TO RESOURCES
9.4 FORMAL MODELS OF SECURE SYSTEMS
9.5 BASICS OF CRYPTOGRAPHY
9.6 AUTHENTICATION
9.7 EXPLOITING SOFTWARE
9.8 INSIDER ATTACKS
9.9 MALWARE
9.10 DEFENSES
9.11 RESEARCH ON SECURITY
9.12 SUMMARY
10. "CASE STUDY 1: UNIX, LINUX, AND ANDROID"
10.1 HISTORY OF UNIX AND LINUX
10.2 OVERVIEW OF LINUX
10.3 PROCESSES IN LINUX
10.4 MEMORY MANAGEMENT IN LINUX
10.5 INPUT/OUTPUT IN LINUX
10.6 THE LINUX FILE SYSTEM
10.7 SECURITY IN LINUX
10.8 ANDROID
10.9 SUMMARY
11. "CASE STUDY 2: WINDOWS 8"
11.1 HISTORY OF WINDOWS THROUGH WINDOWS 8.1
11.2 PROGRAMMING WINDOWS
11.3 SYSTEM STRUCTURE
11.4 PROCESSES AND THREADS IN WINDOWS
11.5 MEMORY MANAGEMENT
11.6 CACHING IN WINDOWS
11.7 INPUT/OUTPUT IN WINDOWS
11.8 THE WINDOWS NT FILE SYSTEM
11.9 WINDOWS POWER MANAGEMENT
11.10 SECURITY IN WINDOWS 8
11.11 SUMMARY
13. "OPERATING SYSTEM DESIGN"
13.1 THE NATURE OF THE DESIGN PROBLEM
13.2 INTERFACE DESIGN
13.3 IMPLEMENTATION
13.4 PERFORMANCE
13.5 PROJECT MANAGEMENT
13.6 TRENDS IN OPERATING SYSTEM DESIGN
13.7 SUMMARY
14. "READING LIST AND BIBLIOGRAPHY"
14.1 SUGGESTIONS FOR FURTHER READIN
14.2 ALPHABETICAL BIBLIOGRAPHY