操作系统 - 蒋炎岩¶
基本信息¶
- 课程号:
22020230
- 任课教师: 蒋炎岩
- 上课专业: 信计,匡计,计拔,计科,计金
评价 1¶
评价者信息¶
Tag:保研;Rank 5%;2024 Spring修课
Score:90
关于老师¶
由蒋炎岩老师设计并授课(此前的 ICS PA 也是 jyy 深度参与设计的)。jyy 每年都在迭代 OS 的课程和实验内容,会在课程中加入一些比较前沿的技术和研究内容。上课非常有激情,他本人也在知乎有号,经常在群里和知乎上发表一些暴论。
前置知识¶
对 x86 体系的大概了解、计算机系统基础(ICS)
课程内容¶
教材为 OSTEP(Operating System: Three Easy Pieces),主要包含:
- OS 是什么
- 并发(并发原语、条件变量、信号量、并发 bug)
- 虚拟化(进程、shell、标准库、链接、ELF)
- 持久化(驱动、文件系统、简单数据库)
- 内核的浅显理解(2025 Spring 已删除)
作业、考试与得分¶
如上所述,每年 Lab 的变动较大,仅供参考。主要变动体现在:OSlab 越来越少、Minilab 越来越多。
2024 Spring 的 Lab 包括 6 个 Minilab(操作系统编程)和 3 个 OSlab(编写操作系统):
- M1:基于 procfs 实现进程树打印
- M2:基于 setjmp/longjmp 实现用户态协程
- M3:给定一个 gpt2.c 程序,分析热点区域并进行并行优化
- M4:实现一个 C 语言的交互式 shell
- M5:基于 strace 实现一个分析系统调用的程序
- M6:恢复被快速格式化的 FAT32 文件系统
- L0:实现一些基础库函数,包括 printf、string 等
- L1:实现多 cpu 的并行高效 malloc/free
- L2:实现内核态多线程,包括:线程定义和销毁、线程调度、自旋锁、信号量
期末题目很有 jyy 特色,以考察课上/实验中涉及到的 Linux 特性为主;额外有一些开放式的题目,例如:
- 若你获得了一个断电不丢数据的 DRAM,如何设计高效的文件系统?
- 你如何实现 gdb 的断点功能?操作系统需要提供哪些支持?
- 你如何设计 lspid?可能会遇到哪些问题?(一致性等)
得分为实验和考试的综合,在实验基本做满的情况下,得分在 90 左右。
工作量¶
实验:约 9 次实验,每个实验根据任务不同耗时约 3~20 小时。可参考笔者的博客:L系列实验报告、M系列实验感想。
考试:平时上课样例代码跟着看、概念跟着记、OSTEP跟着读、实验全做完,则花 2~3 小时看一下样例代码、概念和往年卷即可。
学习指南¶
2025 年课程网站:jyyOS 2025
jyy 上课会进行 B 站同步直播+录播,可以不到场。
先看 OSTEP 对应章节,把 jyy 的课当做书本的延伸和扩展;不懂的部分下课自己在机器上折腾一遍,可以看 jyy 录播,实在不懂可以群里提问。
实验的设计在文档中已经讲的比较明确了,除了 pmm 和 fsrecov 以外几乎没有设计难度。多写多练。
其他¶
据 jyy 称(笔者回忆版):这门课的意图是把同学们从一个只会写 OJ 题的计算机学生,培养成一个有系统思维的、能 handle 现实工作的程序员。根据笔者自己的理解和体验,通过这门课程可以掌握包括但不限于:查找系统工具、使用系统工具、编写系统工具、设计系统工具的能力,对日后在真实的世界中、真实的生产环境中、真实的需求下编程大有帮助。
如何贡献¶
请查看评价指南了解如何评价课程!