xv6 学习历程:路线图与总索引
目标:把这本小书读穿。每一章都值得一次源码级的理解,而不是"看过"。
这篇是 xv6 学习历程的总索引:教材是什么、按什么路线读、每篇笔记长什么样,都收在这里。正文随阅读进度逐篇发布,读一章写一篇,篇与篇首尾相接;本篇的历程清单持续更新进度和链接。
教材与代码
| 项目 | 内容 |
|---|---|
| 书 | xv6: a simple, Unix-like teaching operating system(RISC-V 版 · rev3,书架收藏) |
| 作者 | Russ Cox, Frans Kaashoek, Robert Morris(MIT PDOS) |
| 代码 | mit-pdos/xv6-riscv |
| 配套课程 | MIT 6.1810(原 6.S081)Operating System Engineering |
| 运行环境 | QEMU + RISC-V,纯 C + 少量汇编 |
为什么是 xv6
直接啃 Linux 内核,光目录结构就够劝退。xv6 的价值在于 完整而不臃肿:进程、页表、trap、锁、调度、文件系统一个不少,代码量却小到可以逐行读完。
一句话概括:它把"操作系统是什么"压缩成了一本能踏实读完的书。
学习路线
graph LR
A[00 出发与环境] --> B[01 OS 接口]
B --> C[02 组织结构]
C --> D[03 页表]
D --> E[04 Trap 与系统调用]
E --> F[05 中断与驱动]
F --> G[06 锁]
G --> H[07 调度]
H --> I[08 文件系统]
I --> J[09 并发再谈] 历程清单
| # | 对应章节 | 主题 | 状态 |
|---|---|---|---|
| 00 | — | 出发:为什么读 xv6、环境搭建 | 已发布 |
| 01 | Ch.1 Operating system interfaces | shell、进程、fork/exec/pipe 的用户视角 | 已发布 |
| 02 | Ch.2 Operating system organization | 内核组织、系统调用的实现路径 | 已发布 |
| 03 | Ch.3 Page tables | 页表、Sv39、内核地址空间 | 未开始 |
| 04 | Ch.4 Traps and system calls | trap 机制、syscall 全链路 | 未开始 |
| 05 | Ch.5 Interrupts and device drivers | 中断、UART、磁盘驱动 | 未开始 |
| 06 | Ch.6 Locking | 锁、死锁、lock ordering | 未开始 |
| 07 | Ch.7 Scheduling | 调度、上下文切换、sleep/wakeup | 未开始 |
| 08 | Ch.8 File system | inode、日志层、crash safety | 未开始 |
| 09 | Ch.9 Concurrency revisited | 并发陷阱与模式总结 | 未开始 |
系列约定
每篇笔记固定五个板块,保证前后连贯:
- 本章脉络 —— 承接上一篇,说清这一章在操作系统全景里的位置
- 核心概念 —— 书里的关键机制,用自己的话复述
- 源码走读 —— 对照 xv6 源码,看机制怎么落地
- 动手实验 —— 跑代码、改代码、用 gdb 观察
- 疑问清单 —— 没想明白的问题,留给后面的章节或实验回收
更新节奏
跟阅读进度走,读一章写一篇,最新进度以上面的历程清单为准。
最后更新:2026-09-18