跳转至

xv6: A Simple, Unix-like Teaching Operating System

项目简介

  • 来源:MIT
  • 先修要求:C 语言、计算机体系结构基础(RISC-V)
  • 编程语言:C
  • 课程难度:🌟🌟🌟
  • 预计学时:40 小时 +

xv6 是 MIT 为操作系统课程(6.S081)开发的教学操作系统。它是一个简化版的 Unix,代码量仅约 1 万行,但包含了现代操作系统的核心概念:进程管理、内存管理、文件系统、中断处理、系统调用。

xv6 的价值在于:你能读懂整个操作系统的源代码。对于一个真正的操作系统内核(Linux 有 3000 万行代码),这是不可能的。但 xv6 让你在短短几万行代码中看到所有核心概念的真实实现。

项目资源

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 版本。