MIT 6.S081 | 0x00 Introduction
最近想复习一下操作系统的知识,同时久闻 6.828 大名,于是就想跟一跟这个实验
MIT 6.S081 的全名为“Operating System Engineering”,它的前身是大名鼎鼎的 6.828。这门课程通过十多个实验让我们逐步了解操作系统的组成与原理,而且 MIT 的教授还专门为这们课实现了一个迷你的操作系统 xv6,麻雀虽小,五脏俱全,虽然对真正的操作系统做了很多简化,但操作系统的精髓还是得到了完整的体现。最近想复习一下操作系统的知识,同时久闻 6.828 大名,于是就想跟一跟这个实验
6.S081 这门课程每年的实验任务可能都不太一样。读者请注意,我做的是 2021 年的版本
课程资料
- 课程主页:https://pdos.csail.mit.edu/6.S081/2021/index.html
- 参考书籍:xv6: a simple, Unix-like teaching operating system
难度划分
- (easy):用时不超过一个小时。通常用来热身
- (medium):需要 1~2 个小时
- (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
部分包名可能会有区别,可以搜索一个最相似的包进行安装
实验列表
实验名称 | 难度 |
---|---|
0x01 Utilities | |
0x02 System calls | |
0x03 Page tables | |
0x04 Traps | |
0x05 Copy on-write | |
0x06 Multithreading | |
0x07 Networking | |
0x08 Locks | |
0x09 File system | |
0x0a Mmap |
实验总结
从 2023/11/24 做到 2024/07/05,历时 8 个月,终于完成了 MIT 6.S081 的全部实验。我只能说自己的拖延也太厉害了 ,老是做着做着就忘了,一忘就是几个月。前几天实在受不了,正好课上完了,组会讲完了,就一口气把后面的都做了。
老实说,我其实做的并不细致,最后两个实验还借鉴了其他人的代码,但并不妨碍我学到很多操作系统的知识。这门课 实验难度还算不错,提示也很完整。十个实验做完,感觉操作系统的实现是真的精致,虽然 xv6 是一个简化的系统,但是它在各部分的抽象,设计,实现都很精妙。就是单拿出来一小部分代码,感觉也不算很难,也没有用什么高深算法,但将各种部分组合在一起,真的需要极大的创造性和工作量。
虽然全部都做完了,但是战线拉得太长,有的内容掌握的不太好。后面有时间可能会针对 xv6
的一些模块出几篇总结,顺道复习复习。