xv6: A Simple, Unix-like Teaching Operating System
项目简介
- 来源:MIT
- 先修要求:C 语言、计算机体系结构基础(RISC-V)
- 编程语言:C
- 课程难度:🌟🌟🌟
- 预计学时:40 小时 +
xv6 是 MIT 为操作系统课程(6.S081)开发的教学操作系统。它是一个简化版的 Unix,代码量仅约 1 万行,但包含了现代操作系统的核心概念:进程管理、内存管理、文件系统、中断处理、系统调用。
xv6 的价值在于:你能读懂整个操作系统的源代码。对于一个真正的操作系统内核(Linux 有 3000 万行代码),这是不可能的。但 xv6 让你在短短几万行代码中看到所有核心概念的真实实现。
项目资源
- GitHub:mit-pdos/xv6-riscv(RISC-V 版本,推荐)
- 文档:xv6 Book(免费 PDF,介绍 xv6 的每个子系统)
- MIT 6.S081 课程:xv6 是 6.S081 的实验平台
xv6 的架构
启动流程
- 从 RISC-V 复位向量开始
- 设置页表、中断向量
- 初始化第一个进程
核心子系统
- 进程管理:进程创建、调度、退出
- 内存管理:页表、虚拟内存映射
- 文件系统:inode、目录、文件读写
- 中断和系统调用:trap 处理、用户态/内核态切换
- 锁:自旋锁、睡眠锁
自学建议
先读 xv6 Book。 这本书按子系统介绍 xv6 的实现,是阅读代码的最佳指南。
从启动代码开始读。 理解 xv6 如何从硬件复位到运行第一个进程,是理解整个系统的关键。
配合 MIT 6.S081 实验。 每个实验都要求你修改 xv6 的某个子系统,是学习 xv6 的最佳方式。
用 GDB 调试。 在 QEMU 中运行 xv6,用 GDB 单步调试内核代码,观察每个函数的实际行为。
备注
xv6 是学习操作系统实现的"最小可行系统"。读完 xv6 的代码,你会对操作系统有从内到外的理解。
2023 年后 xv6 从 x86 迁移到 RISC-V 架构,代码更简洁,推荐学习 RISC-V 版本。