Introduction
These articles explain xv6—the teaching OS used in MIT’s OS course—at code level. xv6 is a reimplementation of UNIX v6 in ANSI C that runs on x86.
- Features of xv6
- What will / won’t be covered
- How to read these posts
- How to run and debug xv6
Main series
- Page tables 1
- Building address spaces
- Kernel paging setup
- Page tables 2
- Memory allocator
- sbrk()
- exec()
- Traps, interrupts, and drivers 1
- IDT
- System calls
- Traps, interrupts, and drivers 2 (coming soon)
- Interrupts
- Disk driver
- Locking (coming soon)
- Concurrency
- Scheduling 1
- Context switch
- Scheduling
- Scheduling 2 (coming soon)
- sleep and wakeup
- Pipes
- wait, exit, kill
- File system 1 (coming soon)
- File-system overview
- Buffer cache layer
- Logging layer
- Journaling
- Block allocator
- File system 2 (coming soon)
- Inode layer
- File system 3 (coming soon)
- Directory layer
- Path name
- File system 4 (coming soon)
- Descriptor layer
If you have comments or corrections, please contact me on Twitter or open an Issue.