xv6
Chapter 0 Operating system interfaces
Processes and memory
I/O and File descriptors
Pipes
File system
Real world
Chapter 1 The first process
Process overview
Code: the first address space
Code: creating the first process
Code: Running the first process
The first system call: exec
Real world
Exercises
Chapter 2 Page tables
Paging hardware
Process address space
Code: creating an address space
Physical memory allocation
Code: Physical memory allocator
User part of an address space
Code: exec
Real world
Exercises
Chapter 3 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
Chapter 4 Locking
Race conditions
Code: Locks
Modularity and recursive locks
Code: Using locks
Lock ordering
Interrupt handlers
Memory ordering
Real world
Exercises
Chapter 5 Scheduling
Multiplexing
Code: Context switching
Code: Scheduling
Sleep and wakeup
Code: Sleep and wakeup
Code: Pipes
Code: Wait, exit, and kill
Real world
Exercises
Chapter 6 File system
Overview
Buffer cache Layer
Code: Buffer cache
Logging layer
Log design
Code: logging
Code: Block allocator
Inodes
Code: Inodes
Code: Inode content
Code: directory layer
Code: Path names
File descriptor layer
Code: System calls
Real world
Exercises
xv6
Docs
»
Index