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

课程资料

难度划分

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

环境准备

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

BASH
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc \
  gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
点击展开查看更多

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

BASH
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 的一些模块出几篇总结,顺道复习复习。

版权声明

作者: MiaoHN

链接: https://404notfixed.cn/posts/mit-6-s-081-0x00/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键