跳转至

1708411050

操作系统原理与实践

CS 专业基础 AI 专业基础

课程学习内容

这门课主要包括如下内容:

  • 操作系统基本概念
  • 进程管理,包括进程调度、进程间通讯、锁和同步等
  • 内存管理,包括分页、分段、内存替换、内存映射等
  • 文件系统,文件系统的逻辑层次和存储的布局方式等
  • 大容量存储,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 班的作业和小测),会有很多的原题(取决于当年是哪位老师出题)。在给分上面,平时作业助教给分都比较好,要点到了就可以基本满分,期末考因为选择判断为主、计算题也是踩点给分,所以不太能捞。