课程简介

所属大学SJTU
先修课程要求良好英语水平 + 计算机系统 + 少量体系结构
编程语言要求C + ARM(aarch64) 汇编
课程网站SJTU SE315 Course Website

国内第一操作系统实验室 IPADS 的作品, IPADS 的所长陈海波老师(Prof. Haibo Chen)曾经在 PDOS 做过一段时间的访问学者,这也是为什么这份课程设计的与 6.S081 相似。

如果你不知道 IPADS ,那么可以简单浏览一下实验室的网站,知乎账号甚至 b 站账号。在 2023 年的 OSDI 上, IPADS 怒砍了 6 篇论文,在 ASPLOS 其中就有 OS 方向的论文,链接如下

https://ipads.se.sjtu.edu.cn/zh/publications/ChenASPLOS23.pdf

Danger

本人并没有上过这门课程,仅仅是把实验部分做完了而已并阅读了教材,因此对课程视频不做任何评价

课程教材

课程使用的教材是陈海波老师与夏虞斌老师写的 《现代操作系统—原理与实现》(也称为银杏书),正如蒋炎岩老师所评价的一样,这本书太过现代,甚至大名鼎鼎的 《OSTEP》(《Operating Systems: Three Easy Pieces》)都无法与之相比(在现代方面)。

课程与 6.S081 一样,在教学上都有一个自己完成的 OS ,不过这里的是一个简化版本。教材方面,我个人的感觉是:

  1. 课程所使用的操作系统是微内核架构的,与传统的类 Unix 不同,反而与 MINIX 一样(据我所知 ECNU DaSE 的操作系统课用的就是这个)
  2. 课程使用的 ISAaarch64 ,可以在树莓派 b3 上跑,甚至可以让学生体验自己写的操作系统跑在真机的感觉
  3. 教材中介绍的算法等,都是目前主流 OS 正在使用的
  4. 教材由浅入深,与实践结合,和之前的老一套结构不同,书的脉络清晰,有一种把 OS 拆开然后娓娓道来的含义

当然,这也可能是因为第一次看见国内教材进步如此之大,所以对其有着主观的看法,但这并不妨碍这是一本好书,强烈建议大家都去读一读。

难度

难度其实集中在其课程实验上,需要去学习 ARM 架构(指阅读文档等),也需要看明白文档的要求(中文的可能不存在看不懂意思的难度),更需要去看明白其框架的代码(非常重要)。课程实验的设计为完形填空式,每一处 TODO 都为你标注出来了。

代码上来说,项目结构十分国产化(至少国内大家都这么做的),和 xv6 不一样, ChCore 的模块化十分到位,第一次阅读起来其实还是有点难度的。代码风格上,我认为命名十分靠近 Linux ,但在一些地方还是能看见 xv6 的影子,如果做完了 xv6 再来做这个相比会轻松不少。

同样的,实验也配置了自动化测试的脚本,可以让你在做实验时知道自己正在稳步推进。

Info

当然如果想直接挑战也是没有问题的,但请确保你有良好的计算机系统基础知识。

优点

教材一流,老师一流,实验用的 os 设计好,中文教学,中文实验文档(bushi,框架代码规范,足够现代的内核……

还有很多很好的地方,但对我来说,这是一份设计良好的 OS 实验,这个理由就足够我继续做下去了。

缺陷

v2 版本有些地方会有 bug ,并且我个人觉得这个版本的文档写的并不尽人意,举例而言,文档中安排了任务,说“具体可以看代码注释”,而注释中可能只有一句话甚至一句话都没有,可能 Hint 不全也是难度的一大来源吧。

其他存在的问题包括但不限于:

  1. Makefile 的编写我觉得存在一些问题,例如 make qemu 之前居然还需要 make build ,感觉应该合并在一起才对
  2. 由于实验是分支递进的,但文档中居然不提需要 git merge 已经完成的分支
  3. CmakeList.txt 中有些变量没有设置,合并之后可能会导致一些 bug 的出现,需要自己手动解决

Note

无论怎样,瑕不掩瑜,如果你想学 OS 但又不想听太多英语听力的话,这门课程是一个不错的选择,你能在做实验中体验到各种诡异的事情;也能在解决 bug 后,看见 grade 上涨时感受到不一样的快乐。

课程资源

Danger

注意, v2 版本的实验文档在其 docs 文件夹中,不要去课程网站上下载实验文档了, v2 已经修改了很多东西,原来的文档完全不适用了。