Essay2026 / 09 / 21

xv6_第0章_资源导航

自学一些公开课固然是有趣的。但是对于资源的使用与掌握好像也是一件难事 所以这里我便打算写点东西来补充些 Lab之外的东西 xv6的官网就是在这 MIT6181

基本课程的note,boards,视频都能找到,很容易的。这里推荐2020的版本也是因为能够找到的视频资源也是这个版本的。当然个人想要学更新的也没问题 这里主要补充一些课程之外可能需要适当拓展训练的地方

0-工具

我个人使用的是WSL,版本为Ubuntu22.04. 此外还需要方便写代码的工具,这里我就直接推荐一首VScode配合WSL吧,用起来很舒服。 其中VScode为了支持写C/CPP,这里我使用的是clangd这个插件,很好用。

那么除了代码,你还需要以下这些东西

  • git,用来拉去项目代码,以及自己提交存档
  • gdb-multiarch,用来进行riscv上的汇编调试

1-前置技能

如果要顺利地学习XV6,你将必不可少的要拥有一些技能

1.1-C的编写

这里有很多书籍,视频去推荐,我个人就不赘述了。

如K&R,C Primer Plus等等

其中算是真正帮助我对C的理解的书籍是 CSAPP,即Computer System: A Programer's Perspective。学习这本书基本只需要两个语言,C与汇编,所以也是比较硬核。 非常棒的一本书,可以看作是CS的广阔世界的一张地图,树的根部。从它往后就可以去学习如数据库,操作系统等等

个人也是在有阅读其相关的基础之后学习的xv6

1.2-工具的熟练

在xv6当中不可避免会碰到一件事情,即找函数,结构体与跳转。 简单的复制粘贴肯定人人都会,但是重要的是我个人学到了几个VS code的快捷键。

  • Ctrl + T 在项目内查找工作区符号
  • Ctrl + P 在项目内查找文件
  • 善用引用,来帮助自己查找依赖关系

可以说使用他们还是极大地加速我个人的工作效率

除此之外,对于DEBUG的技巧也是需要熟练的。除去qemu启动操作系统,gdb连接调试之外。 我想应该还没用人教过怎么真的,高效地去调试,DEBUG这件事情。 毕竟学校的课程总是有标准答案的,而写出标准答案便可,至于如何DEBUG,找到错误并分析的这些都不重要。 但是越是大型的项目光靠printf,干瞪源码靠脑子模拟想象,打断点然后一步步next显然是低效的。这里十分十分推荐各位在学习xv6的时候学会怎么使用gdb去找bug,去调试。 以xv6项目作为debug的训练是非常好的

这里如果要一次性补全,推荐 MIT的这门课程。课程主页还贴心地给了中文版。并且目前2026的版本已经更新,可以直接看2026的,非常不错,补充了Agent相关的内容。 可以很大程度上帮助你着手XV6的学习 The Missing Semester of Your CS Education

1.3-参考补充材料

为了完成xv6,阅读一下这些材料是很有帮助的

其中课程官网已经给出了一些参考 references

其中课程的关于RISCV指令手册的链接已经失效了,这里贴出github.io的链接

The RISC-V Instruction Set Manual

其中由于这门课程的前置课程MIT6.004,但是这门基本能够流程使用的版本已经是2017的版本,有点久远,基本上不太行。 这里我是推荐可以去学习UC Berkley的 CS 61C作为平替

2-我的书籍

关于这门课程我个人感觉学习操作系统不是那么顺利。因为这门课程的核心就是聚焦在xv6上。 如果想要全面学习现代操作系统,还有国内应试相关的东西,那么这门课程覆盖可能没用这么全面。如xv6就没有实现可以换页到磁盘的虚拟内存,自然也不会学到换页算法。

这里我自己用的书籍有两本,第一本是CSAPP,这个基本通读过,对于学习XV6,写C,看汇编有很大的帮助。 第二本是Modern Operating System,这个建议当手册查。因为作者写这本书基本就是尽善尽美地写了很多 “概念知识”的来龙去脉。 如Memory Manage作者专门花了一点点篇幅讲直接使用物理地址空间怎么样,还举了例子,画了图。基本可以算是本科阶段操作系统的百科全书了

3-致谢

最后感谢北大学长的开源项目 csdiy.可以说是计算机学生学习的宝库了.让我能够认识到这样好的课程 贴个官网 csdiy-MIT6.1810

alt text