Table of Contents
1. Introduction
1.1 Introduction
1.2 What operating systems do
1.3 Computer-system organization
1.4 Computer-system architecture
1.5 Operating-system operations
1.6 Resource management
1.7 Security and protection
1.8 Virtualization
1.9 Distributed systems
1.10 Kernel data structures
1.11 Computing environments
1.12 Free and open-source operating systems
1.13 Summary
1.14 Practice exercises
1.15 Exercises
1.16 Further reading
1.17 Bibliography
2. Operating-System Structures
2.1 Introduction
2.2 Operating-system services
2.3 User and operating-system interface
2.4 System calls
2.5 System services
2.6 Linkers and loaders
2.7 Why applications are operating-system specific
2.8 Operating-system design and implementation
2.9 Operating-system structure
2.10 Building and booting an operating system
2.11 Operating-system debugging
2.12 Summary
2.13 Practice exercises
2.14 Exercises
2.15 Programming problems
2.16 Programming projects
2.17 Further reading
2.18 Bibliography
3. Processes
3.1 Introduction
3.2 Process concept
3.3 Process scheduling
3.4 Operations on processes
3.5 Interprocess communication
3.6 IPC in shared-memory systems
3.7 IPC in message-passing systems
3.8 Examples of IPC systems
3.9 Communication in client-server systems
3.10 Summary
3.11 Practice exercises
3.12 Exercises
3.13 Programming problems
3.14 Programming projects
3.15 Further reading
3.16 Bibliography
4. Threads and Concurrency
4.1 Introduction
4.2 Overview
4.3 Multicore programming
4.4 Multithreading models
4.5 Thread libraries
4.6 Implicit threading
4.7 Threading issues
4.8 Operating-system examples
4.9 Summary
4.10 Practice exercises
4.11 Exercises
4.12 Programming problems
4.13 Programming projects
4.14 Further reading
4.15 Bibliography
5. CPU Scheduling
5.1 Introduction
5.2 Basic concepts
5.3 Scheduling criteria
5.4 Scheduling algorithms
5.5 Thread scheduling
5.6 Multi-processor scheduling
5.7 Real-time CPU scheduling
5.8 Operating-system examples
5.9 Algorithm evaluation
5.10 Summary
5.11 Practice exercises
5.12 Exercises
5.13 Programming projects
5.14 Further reading
5.15 Bibliography
6. Synchronization Tools
6.1 Introduction
6.2 Background
6.3 The critical-section problem
6.4 Peterson’s solution
6.5 Hardware support for synchronization
6.6 Mutex locks
6.7 Semaphores
6.8 Monitors
6.9 Liveness
6.10 Evaluation
6.11 Summary
6.12 Practice exercises
6.13 Exercises
6.14 Programming problems
6.15 Further reading
6.16 Bibliography
7. Synchronization Examples
7.1 Introduction
7.2 Classic problems of synchronization
7.3 Synchronization within the kernel
7.4 POSIX synchronization
7.5 Synchronization in java
7.6 Alternative approaches
7.7 Summary
7.8 Practice exercises
7.9 Exercises
7.10 Programming problems
7.11 Programming projects
7.12 Further reading
7.13 Bibliography
8. Deadlocks
8.1 Introduction
8.2 System model
8.3 Deadlock in multithreaded applications
8.4 Deadlock characterization
8.5 Methods for handling deadlocks
8.6 Deadlock prevention
8.7 Deadlock avoidance
8.8 Deadlock detection
8.9 Recovery from deadlock
8.10 Summary
8.11 Practice exercises
8.12 Exercises
8.13 Programming problems
8.14 Programming projects
8.15 Further reading
8.16 Bibliography
9. Main Memory
9.1 Introduction
9.2 Background
9.3 Contiguous memory allocation
9.4 Paging
9.5 Structure of the page table
9.6 Swapping
9.7 Example: intel 32- and 64-bit architectures
9.8 Example: ARMv8 architecture
9.9 Summary
9.10 Practice exercises
9.11 Exercises
9.12 Programming problems
9.13 Programming projects
9.14 Further reading
9.15 Bibliography
10. Virtual Memory
10.1 Introduction
10.2 Background
10.3 Demand paging
10.4 Copy-on-write
10.5 Page replacement
10.6 Allocation of frames
10.7 Thrashing
10.8 Memory compression
10.9 Allocating kernel memory
10.10 Other considerations
10.11 Operating-system examples
10.12 Summary
10.13 Practice exercises
10.14 Exercises
10.15 Programming problems
10.16 Programming projects
10.17 Further reading
10.18 Bibliography
11. Mass-Storage Structure
11.1 Introduction
11.2 Overview of mass-storage structure
11.3 HDD scheduling
11.4 NVM scheduling
11.5 Error detection and correction
11.6 Storage device management
11.7 Swap-space management
11.8 Storage attachment
11.9 RAID structure
11.10 Summary
11.11 Practice exercises
11.12 Exercises
11.13 Programming problems
11.14 Further reading
11.15 Bibliography
12. I/O Systems
12.1 Introduction
12.2 Overview
12.3 I/O hardware
12.4 Application I/O interface
12.5 Kernel I/O subsystem
12.6 Transforming I/O requests to hardware operations
12.7 Streams
12.8 Performance
12.9 Summary
12.10 Practice exercises
12.11 Exercises
12.12 Further reading
12.13 Bibliography
13. File-System Interface
13.1 Introduction
13.2 File concept
13.3 Access methods
13.4 Directory structure
13.5 Protection
13.6 Memory-mapped files
13.7 Summary
13.8 Practice exercises
13.9 Exercises
13.10 Further reading
13.11 Bibliography
14. File-System Implementation
14.1 Introduction
14.2 File-system structure
14.3 File-system operations
14.4 Directory implementation
14.5 Allocation methods
14.6 Free-space management
14.7 Efficiency and performance
14.8 Recovery
14.9 Example: the WAFL file system
14.10 Summary
14.11 Practice exercises
14.12 Exercises
14.13 Programming problems
14.14 Further reading
14.15 Bibliography
15. File-System Internals
15.1 Introduction
15.2 File systems
15.3 File-system mounting
15.4 Partitions and mounting
15.5 File sharing
15.6 Virtual file systems
15.7 Remote file systems
15.8 Consistency semantics
15.9 NFS
15.10 Summary
15.11 Practice exercises
15.12 Exercises
15.13 Further reading
15.14 Bibliography
16. Security
16.1 Introduction
16.2 The security problem
16.3 Program threats
16.4 System and network threats
16.5 Cryptography as a security tool
16.6 User authentication
16.7 Implementing security defenses
16.8 An Example: Windows 10
16.9 Summary
16.10 Exercises
16.11 Further reading
16.12 Bibliography
17. Protection
17.1 Introduction
17.2 Goals of protection
17.3 Principles of protection
17.4 Protection rings
17.5 Domain of protection
17.6 Access matrix
17.7 Implementation of the access matrix
17.8 Revocation of access rights
17.9 Role-based access control
17.10 Mandatory access control (MAC)
17.11 Capability-based systems
17.12 Other protection improvement methods
17.13 Language-based protection
17.14 Summary
17.15 Practice exercises
17.16 Exercises
17.17 Further reading
17.18 Bibliography
18. Virtual Machines
18.1 Introduction
18.2 Overview
18.3 History
18.4 Benefits and features
18.5 Building blocks
18.6 Types of VMs and their implementations
18.7 Virtualization and operating-system components
18.8 Examples
18.9 Virtualization research
18.10 Summary
18.11 Exercises
18.12 Further reading
18.13 Bibliography
19. Networks and Distributed Systems
19.1 Introduction
19.2 Advantages of distributed systems
19.3 Network structure
19.4 Communication structure
19.5 Network and distributed operating systems
19.6 Design issues in distributed systems
19.7 Distributed file systems
19.8 DFS naming and transparency
19.9 Remote file access
19.10 Final thoughts on distributed file systems
19.11 Summary
19.12 Practice exercises
19.13 Exercises
19.14 Further reading
19.15 Bibliography
20. The Linux System
20.1 Introduction
20.2 Linux history
20.3 Design principles
20.4 Kernel modules
20.5 Process management
20.6 Scheduling
20.7 Memory management
20.8 File systems
20.9 Input and output
20.10 Interprocess communication
20.11 Network structure
20.12 Security
20.13 Summary
20.14 Practice exercises
20.15 Exercises
20.16 Further reading
20.17 Bibliography
21. Windows 10
21.1 Introduction
21.2 History
21.3 Design principles
21.4 System components
21.5 Terminal services and fast user switching
21.6 File system
21.7 Networking
21.8 Programmer interface
21.9 Summary
21.10 Practice exercises
21.11 Exercises
21.12 Further reading
21.13 Bibliography
22. Appendix A: Influential Operating Systems
22.1 Introduction
22.2 Feature migration
22.3 Early systems
22.4 Atlas
22.5 XDS-940
22.6 THE
22.7 RC 4000
22.8 CTSS
22.9 MULTICS
22.10 IBM OS/360
22.11 TOPS-20
22.12 CP/M and MS/DOS
22.13 Macintosh operating system and windows
22.14 Mach
22.15 Capability-based systems—hydra and CAP
22.16 Other systems
22.17 Exercises
   22.18 Further reading
   22.19 Bibliography
23. Appendix B: Windows 7
23.1 Introduction
23.2 History
23.3 Design principles
23.4 System components
23.5 Terminal services and fast user switching
23.6 File system
23.7 Networking
23.8 Programmer interface
23.9 Summary
23.10 Practice exercises
23.11 Exercises
23.12 Further reading
23.13 Bibliography
24. Appendix C: BSD UNIX
24.1 Introduction
24.2 UNIX history
24.3 Design principles
24.4 Programmer interface
24.5 User interface
24.6 Process management
24.7 Memory management
24.8 File system
24.9 I/O system
24.10 Interprocess communication
24.11 Summary
24.12 Exercises
24.13 Further reading
24.14 Bibliography
25. Appendix D: The Mach System
25.1 Introduction
25.2 History of the mach system
25.3 Design principles
25.4 System components
25.5 Process management
25.6 Interprocess communication
25.7 Memory management
25.8 Programmer interface
25.9 Summary
25.10 Exercises
25.11 Further reading
25.12 Bibliography
Interactive version of the foremost textbook for teaching operating systems
The Operating System Concepts zyVersion offers the complete text of the 10th edition of this seminal book, plus new interactive learning activities to help students absorb the material faster and more efficiently.
- Presents fundamental concepts and algorithms based on both open-source and commercial operating systems, including Linux, Windows, and macOS, as well as Android and iOS
- Latest updates include mobile OS, security, memory management, virtual machines, and other key topics
- Interactive version includes some three dozen animations to illustrate concepts, plus over 300 learning questions embedded into the text
- Adopters have access to a test bank with over 500 questions
Co-author Dr. Greg Gagne on the benefits of teaching with this zyVersion in his own classroom
What is a zyVersion?
zyVersions are leading print titles converted and adapted to zyBooks’ interactive learning platform, allowing for a quick and easy transition to an engaging digital experience for instructors and students.
zyBooks’ web-native content helps students visualize concepts to learn faster and more effectively than with a traditional textbook. (Check out our research.)
This zyVersion of Operating System Concepts benefits both students and instructors:
- Instructor benefits
- Customize your course by reorganizing existing content or adding your own
- Robust reporting gives you insight into students’ progress, reading and participation
- Animations and other interactive content can be shown in presentation mode and used during a lecture
- Student benefits
- Learning questions and other content serve as an interactive form of reading
- Concepts come to life through extensive animations embedded into the interactive content
- Save chapters as PDFs to reference the material at any time
Animations embedded into the Operating System Concepts zyVersion
Authors
Abraham Silberschatz, PhD
Yale University
Peter B. Galvin, PhD
Starfish Storage
Greg Gagne, PhD
Westminster College