栞忘れてください
FROM THE NOTEBOOK

SJTU 操作系统简介

5 min read

课程简介#

所属大学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

课程教材#

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

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

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

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

难度#

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

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

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

优点#

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

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

缺陷#

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

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

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

课程资源#

课程实验:https://gitee.com/ipads-lab/chcore-lab-v2
课程 Slides:https://ipads.se.sjtu.edu.cn/courses/os/schedule.shtml
课程教材:https://ipads.se.sjtu.edu.cn/ospi/
课程视频:https://space.bilibili.com/1085720801/channel/collectiondetail?sid=373380
CONVERSATION

讨论

想法、补充,或只是打个招呼。

← 返回文章
关系图谱 ↓

全局关系图谱

页面标签
笔记
↑ ↓ 选择↵ 打开Esc 关闭