Toggle navigation sidebar
Toggle in-page Table of Contents
Introduction to Operating Systems
Preface
Getting started
1. Introduction
2. Purpose of operating systems
3. Operating System Structure & Unix/Linux
4. Operating System Abstractions
5. What you should know
5.1. The C Programming Language
5.2. Shell
5.3. Editors
5.4. Make
5.5. Testing
5.6. Git Basics
5.7. GDB
Virtual Processor
6. Introduction
7. The Process: A virtual Computer
8. Virtualizing the CPU
9. The Thread: A Virtual CPU
10. Scheduling
10.1. Scheduling Goals
10.2. Simple Examples of Scheduling Policies
10.3. Scheduling with Priorities
10.4. Scheduling in the real world
11. Review Questions
Virtual Memory
12. Introduction
13. Memory management before paged virtual memory
14. Paging
15. Page Tables
16. Memory reclaiming algorithms.
17. Page Sizes
18. Other topics
19. Buffer Cache
20. Memory Management Page Faults
21. Memory management in the real world
22. Conclusion
23. Review
File Systems
24. Introduction
25. File System Abstraction
26. A bit about Disks
27. Implementation
27.1. File System Layout
27.2. Disk Layout:Tracking Used Space
27.3. Disk Layout:Tracking Free Space
27.4. Disk Layout:Implementing Name Space
27.5. Disk Layout:Dealing with Failures
27.6. Disk Layout:Examples of Real World File Systems
27.7. Kernel implementation
28. Review
Concurrency
29. Introduction to Concurrency, Synchronization and Deadlock
30. Cooperating Processes and Inter-process Communication
31. The Critical Section Problem
32. Implementing Locks
33. Ordering Thread Events
34. Common Concurrency Bugs
35. Read-Dominated Workloads
36. Challenges of Modern Hardware
37. Locking in the Linux Kernel
38. Review
Other Topics
39. Input and Output
40. More on Disks
41. Virtualization
42. Security
Appendices
43. How to read this book
44. Contributing
44.1. Examples
44.2. Contributors
44.3. Contributing
44.6. Resources to look at
44.7. Out of date
45. Bibliography
JupyterHub
repository
open issue
suggest edit
.ipynb
.pdf
Other topics
18.
Other topics
#