MIT6.s081,记得切换分支,即可看到相应的 lab
各 lab 主要围绕 xv6 的系统调用链路、进程机制、页表、陷入与中断、并发控制、文件系统与持久化展开。难点不在于“把功能写出来”,而在于真正理解内核中的状态流转、资源边界与抽象层之间的配合。
- util:偏工具链与 Unix 基础,重点是熟悉进程、管道、文件描述符继承等基本语义。
- syscall:难点在于从用户态到内核态的完整调用路径,包括参数传递、trap 入口与返回过程。
- pgtbl:页表相关 lab 抽象层次高,核心是建立虚拟地址空间、PTE 映射关系与权限控制的整体理解。
- traps:需要把异常、系统调用、中断统一到 trap 机制下理解,真正看清 CPU 与内核的控制流切换。
- cow:经典但容易出错,关键在于引用计数、缺页异常处理和复制时机的正确性,稍有疏忽就会引入隐蔽 bug。
- thread / lock:重点不是会加锁,而是理解竞态出现的根因,以及不同粒度同步原语对正确性与性能的影响。
- fs:文件系统 lab 细节密集,涉及 inode、block、log 等多层结构,难点在于保持数据结构一致性。
- net / mmap(若课程版本包含):更强调接口抽象与内核对象管理,需要兼顾语义正确性和实现边界。