快乐的春饼

xv6 学习笔记:开始

从这篇文章开始,让我们跟随 MIT 著名课程 6.1810: Operating System Engineering,系统性学习操作系统的知识。

6.1810 的主要内容,就是在 xv6 这个小巧精致的 Unix v6 操作系统的现代 RISC-V 实现上,完成一系列 lab,从而深入学习、理解并掌握现代操作系统的基本组成部分以及运行机制。

学习方法

我推荐搭配《操作系统导论》这本书一起学习。这本书内容详实,有很多插图,与 xv6 联系密切。

诚然,不能让英语成为我们学习的障碍。之前我在想,学习这些优质英语课程的时候,直接看英文原版材料,这样既能学习课程本身,又能巩固英语。但是我错了,结果是课程本身学起来很吃力,英语水平也没见长进。所以最好有中文版就直接看中文版内容。少量缺乏翻译的英语内容可以试着自己阅读,或者用 AI 翻译。

说到 AI,课程的态度是:“你可以使用 AI 工具来帮你理解操作系统概念、阅读材料以及 xv6 代码。但是不要使用 AI 工具写 lab 代码或调试代码。你只有通过自己的努力去设计、实现和调试你的软件,才能从 lab 中取得收获。”我们在做 lab 的过程中也要贯彻这一原则。

不要熬夜做 lab,把 lab 分在多天完成更高效。操作系统内核中出现 bug 可能令人困惑,可能需要经过大量思考和仔细的调试才能理解和修复。

建议做 lab 的时候把课程网页调成 150% 缩放,保护视力。

安装工具

需要安装 RISC-V 版的 QEMU 7.2+, GDB 8.3+, GCC, Binutils。

我使用 fedora,键入以下命令安装:

sudo dnf install git @development-tools gdb qemu-system-riscv gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

测试安装是否成功:

qemu-system-riscv64 --version
riscv64-linux-gnu-gcc --version

目录

  1. Lab Utilities
  2. Lab System calls
  3. Lab Page tables

参考