前言
这是自学线上计算机课程系列经验分享的第三篇。
课程介绍
MIT 6.1810: Operating System Engineering 是一门经典的操作系统课程。我主要的学习方式就是完成 xv6 项目的9个实验。首先我分享一些学习资源:
- 课程网站:课程的公开资源,想要学习旧的版本可以在网站上找到前一年的资源。
- 课程录播: Fall 25 的课程不对外开放,可以参考 2020 年的版本来补充一些知识。
- 线上教材:课程本身附带的讲义和笔记就很详细。除此之外,主要的参考材料有 xv6 的参考手册, K & R 的 C 语言教材和RISC-V 的一些指令手册。此外一个经典的操作系统教材是 Operating Systems: Three Easy Pieces,从虚拟化、并行、持久性和安全性等方面来介绍操作系统。
- 项目代码:这是课程的 xv6 项目框架,注意这个仓库和官方托管在 GitHub 上的xv6 仓库略有不同,官方仓库提供了只是一个 xv6 的 RISC-V 架构的实现,而课程项目实验的各个分支是在 MIT 自己的 Git 仓库里保持的。
- 我的代码实现公开在此,和原本的仓库相比提供了 nix flake 方式搭建的开发环境和 devcontainer 配置的开发环境。此外,项目已经提供了完善的测试框架和丰富的测试用例。可以根据每个实验分支里的 Makefile 查看具体的用法。
学习内容总结
操作系统各方面内容都有涉及,知识庞杂,对自学和阅读拓展资料的能力有一定要求。我印象比较深的主要是内存管理相关的分页设计,包括写时复制(Copy On Write), 大页复制和多处理器的内存分配。每个实验都需要考虑好设计再动手,尤其是应当先阅读一下xv6里相关的设计。在写这些实验的同时,每一课推荐的论文也是值得阅读的。每一篇都可以当作操作系统领域的设计和发展史的一部分。即使现在很多相关内容已经纯粹变成教学用例或者历史案例,这些设计的演变也能给后续的研究和学习提供思路。
其他相关内容
南京大学蒋炎岩老师开设的操作系统课程讲的很好,这两年以来一直在推广人工智能大模型辅助学习和科研的价值。他的课程网站和整个相关教学资源也试图做到尽量用人工智能来开源。我也很认同他从操作系统 API 的层面来介绍整个课程,和其他操作系统课程有很大的不同。
评论系统尚未配置。请在 .env 中填写 giscus 所需的环境变量。