| 选课类别:专业任务 | 教学语言:英文 |
| 课程类别:专业核心课 | 开课单位:计算机科学与工程系 |
| 课程层次:本科 | 获得学分:3.0 |
客观评价,如果说前几年唐博DSAA是实践部分比较难(写代码比较难debug),理论部分可以说是相对简单(期末考试难纯粹是唐博想要故意刁难);那我觉得操作系统则是一门理论部分和实践部分都非常复杂的课。先说分数安排:
理论课Quiz 5分:总共大约十多次Quiz,总体来说难度较高,但是对答案老师也不管,所以都可以找别人对答案),Quiz的内容大致是当堂课的内容,绝大多数题目是不定项选择,如果没听课200%靠自己写不出来,而且AI不能100%解决这门课上的Quiz,最好找满分的同学对一下答案。以及,期中期末考前一定,一定,一定要仔细看Quiz!会出原题!
Lab 签到 14 分:和寄系大部分课程不同的是,这门课并不是要完成一段代码什么的然后找老师检查,而是每堂Lab课都会发一个练习(纸质),总共10分,写了名字就有6分,剩下四道题一题一分,然后一学期总共有12次左右的练习,拿满100分就可以了,这个还算比较轻松
作业16分:作业每次4分,总共5次,选取4次最高分,不是算总分。前三次作业难度呈递增趋势,前两次都需要6-8小时不等才能完成(个人情况,而且还是问了沈姐姐怎么做的,超级感谢沈姐姐,真的超有耐心!无论我提出了多么愚蠢的问题她都会超级耐心地解答!!大家要是有分都去冲沈姐姐的Lab课!),第三次作业爆难直接放弃,个人估计没有12小时写不出来。4和5基本送分,20分钟到半个小时足矣。所以这一部分的分数也并不算太难拿。
project 20分:初看上去挺难的,实际上手写就会发现一点也不简单。操作系统是非常难以debug的,因为操作系统的代码牵一发而动全身而且细节非常非常多,如果程序不正常运行,那么它大概率不会死在第一现场,而是不知道在哪里就崩溃了,而且很难推测是哪里出现了问题,只能不停print然后慢慢找。project全部依赖AI大概是比较困难的,所以如果出现bug最好还是自己仔细看看哪里出问题了,真的是非常烧脑。但是好在project的代码量并不大,大概一千行以内就可以搞定,这部分的分数也不会太难拿,而且不会的都可以问沈姐姐!
期中考试20分:总的来说并不算太困难,只要认真看了课件都不会觉得很难。120分满分,超过100分的算溢出并且不加到任何地方。印象最深的题目是考了一个简述OpenSBI的启动流程,这个是一个很Lab的内容,毕竟理论课上好像都没有讲过什么是OpenSBI,所以Lab课件有空的话还是过一下比较好。笨人喜提109.5,还算是非常满意。
期末考试25分:期末也是120满分,平均分是53.7,笨人喜提65.5。我本以为判断和和填空也跟期中一样看了课件背一下重要的东西就行,结果重要的东西一个不考,净考一些很偏门的东西,尤其是操作系统安全,最后一节课的内容考了很多很多,我感觉我填空空了一半都不会写在那儿干瞪眼。然而事实证明干瞪眼是错误的,因为根本没有时间干瞪眼,大题的题量巨大,一道期中大约占12分左右的计算题,到期末考只占5-6分,我根本数不清有多少道大题,最后两道大题题目都没仔细看就打铃交卷了。说实话最后半个小时整个人都不好了,心态极差,因为根本没有料到会有这么多的题目,而且每道题都挺难的。。。要么是一些很偏门的知识点,考文科题,要么是计算量比较大的计算题,要么是代码题(手写C代码),所以这张卷子考下来感觉确实非常难……
笨人总评92,只有期末考试扣了分。或许也可以说这门课是平时任务不太难的期末杀手,但是这门课程还是很有收获的(虽然现在也已经全部忘光光辣),覆盖的内容很广,并且还是比较深入的。并且理论和Lab的脱节现象并不严重,甚至可以说是紧密结合的,这一点在寄系的课程中实属难得。
这门课还有一个槽点……就是张老师说英语的速度真的很快,而且这个学期是在一教107上的课,然后张老师又要拿话筒,所以声音真的比较糊,基本上听不清他在讲什么。所以最终还是看课件自学(
这门课上完了给人一种有点心虚的感觉,感觉自己对于OS的认识还是相当肤浅。
理论知识:
理论知识内容相当繁杂,个人感觉concurrency和deadlock部分是最难理解的(我到现在其实也没完全理解),其他部分相对来说没那么困难;我不懂某个知识点的时候就让Gemini用暴躁老哥的语气讲给我听,跟听单口相声一样,很好玩儿,学没学会另说。
代码量:
这方面是最让人感到心虚的。隔壁计组多少是让你手搓一个CPU的,但是OS就只是要你盯着xv6写好的代码修修补补,以通过checkpoint为目的。我并不觉得“修修补补”就没有难度或者没有意义,但是它有一些缺点:
学习曲线比较陡峭。
你需要在没有自己写过OS,只知道一点理论知识的情况下去尝试理解xv6的代码和逻辑。
相对来说没那么有成就感。
毕竟代码不是自己从头一点点写出来的。
当然,如果真的能抽出课余时间把xv6每一行代码都看懂,那自然是最好的;但是我太懒了,没有这么做。
另外,助教学长准备的lab课相当用心,内容很丰富,涉及很多理论课不会讲的细节;但是我太懒了,很多时候课件都没有认真看。
考试:
期末考试题量超大,对于理论知识考得非常细,是我考过的最难的考试。我考完觉得自己就能得一半分左右,没想到结果出来莫名其妙地好,最后得了A+,感觉运气成分很大。
感觉这学期作业和项目难度都比较低(只看拿分的话),单纯从知识点上看,理论课内容有趣清晰简单,Lab文档比较繁杂,用心看还比较有意思,但是琐碎的内容比较多。
作业需要自己写的代码最多几十上百行,项目是在给定的框架上(AI)填充,唯一难一点的是上板时的电压问题,有一些小坑。
期中期末都是20分Bonus溢出不算。期中很简单,我是109折合100,期末巨难,有的题思维难,并且有很多安全、硬件存储相关的冷门的死记硬背的知识点,我期末78.5最终总评95绩点3.94,所以期末难但是容错度高。(沈姐姐说期末均分53.7,可怕)
推荐选沈姐姐,lab内容都可以问她嘿嘿
作业是5选4,佩服选择了第三次作业的大佬,感觉第三次作业拿满耗时可能以十来个小时计,第四/五次作业则一刻钟可以搞定。
期末考了很多缩写呀名词之类的杂七杂八的主要是后面讲义的东西,还有锁的伪代码相关的解答题,需要认真背诵课件,并理解思路。我应该是填空题没有背课件空了很多哐哐扣分))
很多同学说这门课有难度,这话不假。不过我觉得不得不提的一点是,难度基本集中在理解记忆内容(也就是考试内容),代码部分相比可以说是少且简单。(当然本学期没有project是一大原因)
对于考试,最好是学期内就跟上进度,把理解性内容都消化个八九不离十,考试前过一遍,再复习复习记忆性内容即可。这方面强烈建议好好听沈老师的lab课,lab课更像通过代码解读OS,而非教你写OS代码,所以对课程内容的理解大有帮助。考试满分120最高记100,我基本没听过大课,靠lab和自学期中期末都90+,最后总评为A。
另外不得不吐槽的就是这门课的quiz,相比于其他课quiz得分低很多,印象里最终我是只拿了6-7成。由于有点难度,别的评论里也提到会有同学py,这种情况对独行侠也很不友好。当然我不听大课靠自学,quiz低也有我自己的原因,但相对于别的课体验真的很差。
我是傻逼。
期末考试让我感受到了张教授深深的恶意,卷子满满当当全是题,一题写半天可能只能拿到一分,最后手写得要冒烟了。
还有能不能不要盯着最后一章 security 考啊,这玩意儿纯靠背,我一傻逼脑容量也不够啊。
课程内容相当难,我这学期在摆,没有状态,拿了一个相当平均的分。
期中考试和期末考试都是120分,满分100不溢出,签到是多选有bonus,要拿到100分(可以找同学py)
然后作业的话,github基本都是有答案的,可以参考一下。
平时没好好学,期末真的会崩溃,OS不是啥水课,真的很困难。
这个课分数占比比较均匀,期中期末都有20bonus虽然代码和填空感觉有点难导致加了bonus分数也只能还凑合..大课全英讲PPT有点无聊大多数时候听不进去,lab任务量比较大,但是两位老师还是比较负责的,quiz也给了bonus分数。总体来说应该是四件套里最简单的一门了,最终得分不高也不低。
可以参考之前 H 班的评教情况,但值得留意的是本学期没有 project ,感觉难度相比 H 班一下降了好几个档次。
本人本学期同时选的计算机组成原理和操作系统,没有遇到很大的前置知识上的问题。
Slides 质量高,Lab 的 pdf 质量也很高,上课讲得好。前几周的 quiz 有点难,来听课了和没来听课好像结果上也没多大差别(捂脸
Lab 纸质 report 是我在各门课中首次见到,不过感觉确实手写一遍能加深印象。
作业的话有理论和编程部分,一开始用 gitlab OJ ,但后面似乎 OJ 锅了,就改成了交代码和本地运行的截图,不知道会不会有同学直接改输出 AC (笑
考试有 bonus 真好!