计算机操作系统(H)

(张殷乾)CS3342024秋  
2024秋
10.0(2人评价)
  • 课程难度
    中等
  • 作业多少
    中等
  • 给分好坏
    一般
  • 收获大小
    很多
选课类别:专业任务 教学语言:双语
课程类别:专业核心课 开课单位:计算机科学与工程系
课程层次:本科 获得学分:3.0
课程主页:暂无(如果你知道,请点右上角“编辑课程信息”添加!)
课程简介(教工部数据)
本课程为学生们讲解操作系统的设计原理和实现方法。在理论层面,本课程将介绍操作系统的基本概念,分类,和历史发展,重点讲述的操作系统的三个功能:虚拟化、并发性、和持久化,以及操作系如何管理的三种计算机的主要资源:中央处理器、内存、I/O和文件系统。在实践方面,本课程将指导学生从零开始构建操作系统,通过自己动手搭建一个简单的教学操作系统原型,学习中断处理、内存管理、虚拟内存、进程管理、进程调度、文件系统管理等相关知识。完成本课程后,预期学生将掌握以下知识和能力: 操作系统的进程管理:深入理解进程的创建和终止,理解进程的生命周期中的状态转换,理解进程切换的过程,熟悉进程调度的常用算法,掌握进程间通信和同步的原理和方法,了解死锁的防御和检测方法。能够编程在内核中实现简单的进程管理和进程调度算法。操作系统的内存管理:熟悉各种内存管理的方式,理解虚拟内存的概念、分页原则和地址转换的方法。能够在内核中实现简单的页面替换算法。操作系统的I/O管理:了解I/O设备管理、以及I/O处理的的方法。了解储存的管理方法和文件系统的几种实现方法。能够在内核中对文件系统进行改进。


This course willintroduce design principles and implementation methodologies. On the theoryside, this course will present the basic concept of operating systems, theirtaxonomy, and the evolution of classical operating systems. It will focus onthe three important functionalities of an operating system: virtualization,concurrency, and persistence. Students will learn how the operating system managesCPU, memory, and I/O and filesystems. On the practice side, the course willguide the students to build an educational operating system from scratch. Theywill learn how to handle interrupts, manage physical memory and virtual memory,manage processes, and schedule processes and build file systems.On completion ofthis course, the student should be able to master the following knowledge andskills: Process management:understand in depth the creation and termination of a process, understand statetransition in the life cycle of a process, understand context switch, befamiliar with common process scheduling algorithms, master the theory andpractice of inter-process synchronization and communication, be familiar withdeadlock prevention and avoidance algorithms. The students should be able toimplement simple process management and scheduling algorithm in the educationaloperating system kernel. Memory management:be familiar with various memory management methods, understand the concept ofvirtual memory, demand paging, and address translation. The students should beable to implement simple page replacement algorithm in the educationaloperating system kernel. I/O management: befamiliar with I/O device management and I/O operations, understand the managementof storage and common organization of file systems. The students should be ableto improve file system implementation in the educational operating systemkernel.
点评写点评
排序学期
评分评分2条点评
user avatar   GB     2024秋
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:很多

张老师讲课讲的非常好,真正意义上做到了深入浅出地讲明白操作系统。平时上课会有小quiz,基本上来源于课件,所以需要认真听讲,不过也有一些可以顺着常识去推理。作业比较简单,基本是要理解并阐述一个操作系统知识,比如进程切换怎么做的,段页内存管理是怎么翻译地址的。老师给我们有PPT课件,OSTEP 《三个简单片》对应的章节。三个简单片讲的非常非常好,把操作系统的XX需求的起源、solution、challenge讲的很完善,story telling如同奶奶讲的睡前故事,后边的参考文章也非常推荐读。张老师还会推荐一些OS的Paper,看完会让大家上课讲,我也非常喜欢这样,就像故事会(不是),所以上去讲了两次。

 

lab 老师和助教都非常非常好,很耐心地来回答我那些非常胡闹的问题,比如:操作系统为什么可以重启电脑,进程切换时TLB里的内容会怎么样,为什么perf可以看到程序的性能情况,如果我用gdb观察gdb会发生什么。我记得有一次作业是做进程切换,我们知道在进程切换里我们需要把寄存器的值存进Process Table中,但是我发现OSTEP里,进程切换还会将寄存器存储在Kernel stack中。我当时对此很不解。后来助教学长帮我找了x86的资料,在微信上给了我很长很长的解答,我当时特别特别感动,于是帮他也查了几百页的ARM手册,最后我们在lab上跟老师简单的分享我们的结果。

 

Project是做驱动开发,这个工作很好玩,需要我们去查手册并实现。我们做的是GPU驱动,位于Asterinas OS与Qemu两层之间。但是Qemu之前对接的都是Linux DRM框架,这个框架为了应对多样化的显示屏,规模非常大并且很复杂,因此我们做了一个更直接并且较简易的实现。很不幸的是,我们在测试阶段只在WSL成功了,在Linux Docker上都没有成功(具体原因可能是Docker对xhost的支持不是很好,网上也没有文档描述该现象)

 

最后可能是关于上这门课中碰到的一些资料:

中大的实验,他们也是用Rust教OS 中山大学 YatSenOS v2 操作系统实验教程 - YatSenOS v2 Tutorial

南大蒋岩炎老师的操作系统。讲得很好,适合有一定系统基础的朋友听。【[南京大学2024操作系统]】 https://www.bilibili.com/video/BV1Xm411f7CM/?share_source=copy_web&vd_source=72eac555730ba7e7a64f9fa1d7f2b2d4

Operating Systems: Three Easy Pieces 三片的中文版,如果你想速通这本书的话  Index of /~remzi/OSTEP/Chinese

⁠我的进程切换作业答案:OS Assignment: Process - Haibin's blog

 

作为一门必修课程,我能给的建议就是这些了。如果还有什么,那就请我以《三个简单片》作结:

user avatar   Cindy_Hartman     2024秋
  • 难度:困难
  • 作业:中等
  • 给分:一般
  • 收获:很多

占个坑,写评教的时候今年OS总评还没出,因此稍微客观陈述一下除了成绩之外的部分。

今年的课程形式应该算是彻底的大改了,因为今年的课程是在计算机组成原理之后上的,所以首先我们也没有提及很多跟计算机组成原理重复的地方。其次,今年增加了一个Pre的环节,就是每个星期老师会选一篇Paper(都是很经典的操作系统的论文),然后班上同学报名来下周讲这篇Paper提及的主要内容,通过这种方式大概过了10几篇经典论文(但是遗憾的事情是其实本人完全没有来得及读完,然后每次别的同学Pre的时候中间一不注意就跟不上了所以其实到最后也没有听进很多也真的很私密马赛,但是如果自己选了一篇来讲的话,收获确实会不小)最重量级的事情在于,今年的实验课完全转换为了Rust来教(张老师有言:"If you cannot learn Rust in two weeks, you are doomed…",但是好处是现在本人Rust有点写上头了,这个学期另外一门课的Project也用Rust来写了、、、),实验课主要内容就变成了介绍Asterinas里面各种函数和方法的内容和特性(他们都是做什么的),以及使用了一个Asterinas简化版的操作系统来进行一些实验(不过今年不检查),同时我们的Project也是基于Asterinas来实现VirtIO的接口(提供了四个设备选择:Sound、GPU、Crypto、Filesystem,但是由于助教们没有完全测试过,所以这四个设备的难度和实现可能也都完全不同,坑啊T T)

张老师讲课真的很好(声音真的很好听T T),有些同学的Presentation真的做得很用心,让我也学到不少东西,也顺便借这门课入了Rust的门,感觉这是一门很有趣的语言,之后还想再多研究研究。之后这门课应该也会在我们的基础上有不少改进,在这里期待一下未来这门课的走向!

(看在我评分这么好的份上张老师求求您给我高点分吧QAQ)


teacher avatar

张殷乾

计算机科学与工程系

暂无教师主页

其他老师的「计算机操作系统(H)」课

张殷乾老师的其他课