From f402a5eb3e3d81cc9fc8a68aa51f1a3ac50c0bed Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Wed, 1 Dec 2021 20:24:32 +0800 Subject: [PATCH] add CS162 & MIT6.S081 --- docs/操作系统/CS162.md | 30 ++++++++++++++++++++++++++++++ docs/操作系统/MIT6.S081.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 docs/操作系统/CS162.md create mode 100644 docs/操作系统/MIT6.S081.md diff --git a/docs/操作系统/CS162.md b/docs/操作系统/CS162.md new file mode 100644 index 00000000..fe54956b --- /dev/null +++ b/docs/操作系统/CS162.md @@ -0,0 +1,30 @@ +# CS162: Operating System +## 课程简介 +- 所属大学:UC Berkeley +- 先修要求:CS61A, CS61B, CS61C +- 编程语言:C,X86汇编 +- 课程难度:🌟🌟🌟🌟🌟🌟 +- 预计学时:200小时+,上不封顶 + +这门课让我记忆犹新的有两个部分: + +首先是教材,这本书用的教材`Operating Systems: Principles and Practice (2nd Edition)`一共四卷,写得 +非常深入浅出,很好地弥补了MIT6.S081在理论知识上些许空白,非常建议大家阅读。相关资源会分享在本书的经典书籍推荐模块。 + +其次是这门课的Project —— Pintos。Pintos是由Ben Pfaff等人基于X86编写的教学用操作系统,Ben Pfaff甚至专门发了篇 +[paper](https://benpfaff.org/papers/pintos.pdf)来阐述Pintos的设计思想。和MIT的xv6小而精的lab设计理念不同, +Pintos更注重系统的Design and Implementation。Pintos本身仅一万行左右,只提供了操作系统最基本的功能。而4个Project,就是让你在这个极为精简的操作系统之上,分别为其增加线程调度机制(Project1),系统调用(Project2),虚拟内存(Project3)以及文件系统(Project4)。所有的Project都给学生留有很大的设计空间,总代码量在5000行以上。根据Stanford学生[自己的反馈](https://www.quora.com/What-is-it-like-to-take-CS-140-Operating-Systems-at-Stanford),在3-4人组队的情况下,后两个Project的人均耗时也在40个小时以上。 + +虽然其难度很大,但Stanford,Berkeley,JHU等多所美国顶尖名校的操统课程均采用了Pintos。因为如果你真的对操作系统很感兴趣,Pintos会极大地提高你编写和debug底层系统代码的能力。在本科阶段,能自己设计、实现并debug一个大型系统,是一段非常珍贵的经历。 + +北大2022年春季学期的操作系统实验班也将会首次引入Pintos作为课程project,我作为这门课的TA,顶着被口水淹没的风险,依旧希望能用这样的尝试,让更多人爱上系统领域,为国内的系统研究添砖加瓦。 + +## 课程资源 +- 课程网站:https://cs162.org/ +- 课程视频:参见课程网站 +- 课程教材:[Operating Systems: Principles and Practice (2nd Edition)](http://ospp.cs.washington.edu/) +- 课程作业:6个homework,4个project,具体要求参见课程网站 + +## 资源汇总 +由于北大的操统实验班采用了该课程的project,为了防止代码抄袭,我的代码实现没有开源。如果你不是北大的学生,并且仅有 +自学需要,可以和我[邮件联系](zhongyinmin@pku.edu.cn)。 \ No newline at end of file diff --git a/docs/操作系统/MIT6.S081.md b/docs/操作系统/MIT6.S081.md new file mode 100644 index 00000000..d89328c5 --- /dev/null +++ b/docs/操作系统/MIT6.S081.md @@ -0,0 +1,28 @@ +# 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“特有的”为了兼容而遗留下来的复杂机制,而 +可以专注于操作系统层面的开发。 + +这几位教授还专门写了一本[教程](https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf),详细讲解了xv6的设计思想和实现细节。 + +这门课的讲授也很有意思,老师会带着学生依照xv6的源代码去理解操作系统的众多机制和设计细节,而不是停留于理论知识。每周都会有一个lab,让你在xv6上增加一些新的机制和特性,非常注重学生动手能力的培养。整个学期一共有11个lab,让你全方位地深刻理解操作系统的每个部分,非常有成就感。而且所有的lab都有着非常完善的测试框架,有的测试代码甚至上千行,让人不得不佩服MIT的几位教授为了教好这门课所付出的心血。 + +这门课的后半程会讲授操作系统领域的多篇经典论文,涉及文件系统、系统安全、网络、虚拟化等等多个主题,让你有机会接触到学界 +最前沿的研究方向。 + +## 课程资源 +- 课程网站:https://pdos.csail.mit.edu/6.828/2020/schedule.html +- 课程视频:详见课程网站 +- 课程教材:https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf +- 课程作业:11个lab,具体要求详见课程网站 + +## 资源汇总 +我在学习这门课中用到的所有资源和作业实现都汇总在[这个Github仓库](https://github.com/PKUFlyingPig/MIT6.S081-2020fall)中。 \ No newline at end of file