1708411050
操作系统原理与实践 ¶
课程学习内容 ¶
这门课主要包括如下内容:
- 操作系统基本概念
- 进程管理,包括进程调度、进程间通讯、锁和同步等
- 内存管理,包括分页、分段、内存替换、内存映射等
- 文件系统,文件系统的逻辑层次和存储的布局方式等
- 大容量存储,IO 系统等
- 其他还有 QEMU 的使用、交叉编译、内核模块编译、ELF 文件格式、C 代码二进制布局等内容
先修要求 ¶
- 计算机组成
很难说有哪门具体的课可以作为系统的先修课,因为系统涉及的内容在很多课都会涉及,但是都被抽象封装的很好,以至于都能有所体会,但是很难深入吧。
- 了解 C 程序的布局方式有利于理解 OS 如何运行程序
- 了解多线程、多进程编程有利于了解锁和进程调度
- 计算机组成学的 RISC-V 编程和中断异常机制可以用在 OS 编程和 trap_handler 的实现上来
实验要求 ¶
- lab0:配置实验环境,编译与运行内核
- lab1:RV64 内核引导与时钟中断处理
- lab2:RV64 内核线程调度
- lab3:RV64 虚拟内存管理
- lab4:RV64 用户态程序
- lab5:RV64 缺页异常处理
- lab6:实现 fork 机制
- lab7:VFS & FAT32 文件系统(bonus)
lab 迟交一天扣 10% 直到 0 分为止。
同时老师对于查重非常严格,如果有一个 lab 被查重,抄袭者和被抄袭者当次实验计零分。如果有两个及以上被查重,直接挂科。
任课教师 ¶
申老师上课非常仔细生动,而且在一些重要的节点会直接解析 Linux 的源码,只要认真听讲就可以学习的非常深入。申老师很喜欢在课上和同学交流,所以很经常问大家有什么问题想问,很期待得到学生的反馈,此外会时不时介绍一些计算机的常识和笑话。并且作为青年老师并没有什么架子,非常好相处,有任何问题都可以课间或者课后直接问。
课程教材 ¶
《操作系统概念》
PPT 的内容基本是齐全的,不过涉及到 Linux 代码的内容还是要参考 PPT 和课堂讲解。
分数构成 ¶
-
实验(50%)
- 20、21 级 OS 一共 7 个 Lab,分为 Lab0 - Lab6
- Lab0 为实验环境搭建,但是工作量也不小,也需要写实验报告
- 每个 Lab 具体占分比例没有公布
- Lab 的 delay penalty 为每迟一天 -10%。
-
期末考试(50%)
老师不会点名,但在 21 级上课时有小测(提前告知 / 不告知),并据他所说明年会考虑将小测纳入分数构成。
学习建议 ¶
操作系统这门课是大三上比较重要的一门课,还是要认真对待的。课堂上着重讲的内容比如进程调度、缺页异常之类的,同时也是实验的重点内容,所以专心听课可以帮助大家提高做实验的效率,同样好好做实验也可以夯实知识的理解(因为有一点没搞懂基本实验就失败了)。部分内容和别的课程相互重叠,比如平时作业只有六个 lab,迟交一天扣 10%,所以需要及时做,基本来得及。lab 的完成效率主要取决于对课程知识的理解和 gdb 调试的能力,一般来说几个实验做完 gdb 或者 debug 的水平就会比较高了,然后汇编编程可能比 C 更仔细。平时实验务必自己独立完成,不要抱有任何侥幸心理。期末考试可以带 1-2 张 A4 纸,大家普遍会使用 hjh 的 A4 纸,不过个人觉得意义不大。期末考至少 20 级大量采用了题库的题目(即王道上的考研题),大家可以刷其他班的平时作业题(如 jjm 班的作业和小测),会有很多的原题(取决于当年是哪位老师出题)。在给分上面,平时作业助教给分都比较好,要点到了就可以基本满分,期末考因为选择判断为主、计算题也是踩点给分,所以不太能捞。