Table of Contents
- Contents
- Foreword and acknowledgements
- 0: Operating system interfaces
- Code: Processes and memory
- Code: File descriptors
- Code: Pipes
- Code: File system
- Real world
- 1: The first process
- Paging hardware
- Address space overview
- Code: entry page table
- Address space details
- Code: creating an address space
- Physical memory allocation
- Code: Physical memory allocator
- Code: Process creation
- Code: Running a process
- Exec
- Code: exec
- Real world
- Exercises
- 2: Traps, interrupts, and drivers
- Systems calls, exceptions, and interrupts
- X86 protection
- Code: The first system call
- Code: Assembly trap handlers
- Code: C trap handler
- Code: System calls
- Code: Interrupts
- Drivers
- Code: Disk driver
- Real world
- Exercises
- 3: Locking
- Race conditions
- Code: Locks
- Modularity and recursive locks
- Code: Using locks
- Lock ordering
- Interrupt handlers
- Memory ordering
- Real world
- Exercises
- 4: Scheduling
- Multiplexing
- Code: Context switching
- Code: Scheduling
- Sleep and wakeup
- Code: Sleep and wakeup
- Code: Pipes
- Code: Wait and exit
- Real world
- Exercises
- 5: File system
- Overview
- Buffer cache Layer
- Code: Buffer cache
- Logging layer
- Log design
- Code: logging
- Inodes
- Code: Block allocator
- Code: Inodes
- Code: Inode contents
- Code: directory layer
- Code: Path names
- File descriptor layer
- Code: System calls
- Real world
- Exercises
- A: PC hardware
- B: The boot loader
- Code: Assembly bootstrap
- Code: C bootstrap
- Real world
- Exercises
- Index