MIT 6.S081: Operating System Engineering
课程简介
- 所属大学:麻省理工学院
- 先修要求:体系结构 + 扎实的 C 语言功底 + RISC-V 汇编语言
- 编程语言:C, RISC-V
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时:150 小时
麻省理工学院大名鼎鼎的 PDOS 实验室开设的面向MIT本科生的操作系统课程。开设这门课的教授之一 —— Robert Morris 教授曾是一位顶尖黑客,世界上第一个蠕虫病毒 Morris 就是出自他之手。
这门课的前身是 MIT 著名的课程 6.828,MIT 的几位教授为了这门课曾专门开发了一个基于 x86 的教学用操作系统 JOS,被众多名校作为自己的操统课程实验。但随着 RISC-V 的横空出世,这几位教授又基于 RISC-V 开发了一个新的教学用操作系统 xv6,并开设了 MIT6.S081 这门课。由于 RISC-V 轻便易学的特点,学生不需要像此前 JOS 一样纠结于众多 x86 “特有的”为了兼容而遗留下来的复杂机制,而可以专注于操作系统层面的开发。
这几位教授还专门写了一本教程,详细讲解了 xv6 的设计思想和实现细节。
这门课的讲授也很有意思,老师会带着学生依照 xv6 的源代码去理解操作系统的众多机制和设计细节,而不是停留于理论知识。每周都会有一个 lab,让你在 xv6 上增加一些新的机制和特性,非常注重学生动手能力的培养。整个学期一共有 11 个 lab,让你全方位地深刻理解操作系统的每个部分,非常有成就感。而且所有的lab都有着非常完善的测试框架,有的测试代码甚至上千行,让人不得不佩服 MIT 的几位教授为了教好这门课所付出的心血。
这门课的后半程会讲授操作系统领域的多篇经典论文,涉及文件系统、系统安全、网络、虚拟化等等多个主题,让你有机会接触到学界最前沿的研究方向。
课程资源
- 课程网站:https://pdos.csail.mit.edu/6.828/2021/schedule.html
- 课程视频:https://www.youtube.com/watch?v=L6YqHxYHa7A,每节课的链接详见课程网站
- 课程视频翻译文档:https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/
- 课程教材:https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf
- 课程作业:https://pdos.csail.mit.edu/6.828/2021/schedule.html,11个lab,具体要求详见课程网站
xv6 补充资源
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/MIT6.S081-2020fall - GitHub 中。
@KuangjuX 编写了 MIT 6.S081 的 lab 的题解,里面有详细的解法和补充知识。另外,@KuangjuX 还使用 Rust 语言重新实现了 xv6-riscv 操作系统:xv6-rust,里面对于 xv6-riscv 有更为详细的思考和讨论,感兴趣的同学可以看一下哦。
一些可以参考的博客
MIT 6.S081: Operating System Engineering
Descriptions
- Offered by: MIT
- Prerequisites: Computer Architecture + Solid C Programming Skills + RISC-V Assembly
- Programming Languages: C, RISC-V
- Difficulty:🌟🌟🌟🌟🌟
- Class Hour:150 hours
This is the undergraduate operating system course at MIT, offered by the well-known PDOS Group. One of the instructors, Robert Morris, was once a famous hacker who created 'Morris', the first worm virus in the world.
The predecessor of this course was the famous MIT6.828. The same instructors at MIT created an educational operating system called JOS based on x86, which has been adopted by many other famous universities. While after the birth of RISC-V, they implemented it based on RISC-V, and offered MIT 6.S081. RISC-V is lightweight and user-friendly, so students don't have to struggle with the confusing legacy features in x86 as in JOS, but focus on the operating system design and implementation.
The instructors have also written a tutorial, elaborately explaining the ideas of design and details of the implementation of xv6 operating system.
The teaching style of this course is also interesting, the instructors guided the students to understand the numerous technical challenges and design principles in the operating systems by going through the xv6 source code, instead of merely teaching theoretical knowledge. Weekly Labs will let you add new features to xv6, which focus on enhancing students' practical skills. There are 11 labs in total during the whole semester which give you the chance to understand every aspect of the operating systems, bringing a great sense of achievement. Each lab has a complete framework for testing, some tests are more than a thousand lines of code, which shows how much effort the instructors have made to teach this course well.
In the second half of the course, the instructors will discuss a couple of classic papers in the operating system field, covering file systems, system security, networking, virtualization, and so on, giving you a chance to have a taste of the cutting edge research directions in the academic field.
Course Resources
- Course Website: https://pdos.csail.mit.edu/6.828/2021/schedule.html
- Lecture Videos:https://www.youtube.com/watch?v=L6YqHxYHa7A, videos for each lecture can be found on the course website.
- Translated documentation(Chinese) of Lecture videos: https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/
- Text Book: https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf
- Assignments: https://pdos.csail.mit.edu/6.828/2021/schedule.html, 11 labs, can be found on the course website.
xv6 Resources
Complementary Resources
All resources used and assignments implemented by @PKUFlyingPig when learning this course are in PKUFlyingPig/MIT6.S081-2020fall - GitHub.
@KuangjuX documented his solutions with detailed explanations and complementary knowledge. Moreover, @KuangjuX has reimplemented the xv6 operating system in Rust which contains more detailed reviews and discussions about xv6.