文章

MIT 6.S081 | 0x00 Introduction

最近想复习一下操作系统的知识,同时久闻 6.828 大名,于是就想跟一跟这个实验

MIT 6.S081 | 0x00 Introduction

MIT 6.S081 的全名为“Operating System Engineering”,它的前身是大名鼎鼎的 6.828。这门课程通过十多个实验让我们逐步了解操作系统的组成与原理,而且 MIT 的教授还专门为这们课实现了一个迷你的操作系统 xv6,麻雀虽小,五脏俱全,虽然对真正的操作系统做了很多简化,但操作系统的精髓还是得到了完整的体现。最近想复习一下操作系统的知识,同时久闻 6.828 大名,于是就想跟一跟这个实验

6.S081 这门课程每年的实验任务可能都不太一样。读者请注意,我做的是 2021 年的版本

课程资料

难度划分

  • :green_square:(easy):用时不超过一个小时。通常用来热身
  • :blue_square:(medium):需要 1~2 个小时
  • :red_square:(hard):2 个小时以上。通常代码量不多,但是需要理解原理或者思路

环境准备

本实验的全部内容均在 linux 操作系统上进行,虚拟机,WSL2 以及实体机都可以。xv6 是一个在 qemu 上跑的 riscv 架构的系统,要提前安装一些必要的组件,如果你使用的是 Debian/Ubuntu,可以按照如下方式下载:

1
2
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc \
  gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

如果你用的是 Arch,可以安装下面的包:

1
2
sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc \
  riscv64-linux-gnu-gdb qemu-arch-extra

部分包名可能会有区别,可以搜索一个最相似的包进行安装

实验列表

实验总结

从 2023/11/24 做到 2024/07/05,历时 8 个月,终于完成了 MIT 6.S081 的全部实验。我只能说自己的拖延也太厉害了 :joy:,老是做着做着就忘了,一忘就是几个月。前几天实在受不了,正好课上完了,组会讲完了,就一口气把后面的都做了。

老实说,我其实做的并不细致,最后两个实验还借鉴了其他人的代码,但并不妨碍我学到很多操作系统的知识。这门课 实验难度还算不错,提示也很完整。十个实验做完,感觉操作系统的实现是真的精致,虽然 xv6 是一个简化的系统,但是它在各部分的抽象,设计,实现都很精妙。就是单拿出来一小部分代码,感觉也不算很难,也没有用什么高深算法,但将各种部分组合在一起,真的需要极大的创造性和工作量。

虽然全部都做完了,但是战线拉得太长,有的内容掌握的不太好。后面有时间可能会针对 xv6 的一些模块出几篇总结,顺道复习复习。

本文由作者按照 CC BY 4.0 进行授权