| 选课类别:计划内与自由选修 | 教学类型:理论实验课 |
| 课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
| 课程层次:专业核心 | 学分:4.0 |
操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。因此本课程的目的是使学生通过本课程的学习,理解操作系统的基本概念和主要功能,通过实例讲解,掌握常用操作系统(如Unix、Linux)中的关键技术,为学生以后的学习、工作和研究打下基础。
今天是lab2的第一次检查。夸夸助教,非常乐意听取学生意见,甚至主动询问学生认为的这次实验的不足,并且逐条记录,助教也主动解释是因为这次实验准备时间不足,考虑到理论课进度,把后面的实验提到这次,所以写的比较仓促,针对同学们提到的问题都会在后续实验中避免。我也相信后续实验会有较大提升!
再更新一下,助教似乎看到了这条评论,撤下了Lecture Companion的相关内容。由于学校gitlab不可访问的原因,延长了hw2的ddl。同时也修改了git拉取有关代码使用origin拉取的问题。目前来看,助教还是愿意听取学生意见的。期待后续实验内容能有更好地呈现。
回复一下评论区的朋友,这个实验文档有一些代码似乎都是未经审查的,存在一些打开并复制到vscode里就会被编译器提示报错的代码。包括助教似乎经常忘记学生拉取代码需要从upstream拉取而非origin拉取,让我对这个实验文档的质量存疑。
诚然,我自己也是纯vibe coding完成的实验,但这与课程实验的初心可能不太相符。过大的作业量和黑话满篇、不说人话的实验文档会让更多的学生“纯”vibe coding完成,而难以理解为什么要这样写代码,也缺失了实操的过程,造成事实上的“劣币驱逐良币”。
学期还没结束,这个实验文档看的我火大,来评课社区喷一下。
助教自认为自己很懂vibe coding, 于是这学期的所有实验产品,包括基础系统代码、实验文档、实验脚本基本都是vibe coding的产物。特别是实验文档,gpt味大的批爆,助教是直接拿codex生成的文档就弄成实验文档了吗😅?我读完我都要被助教的codex“稳稳地接住了”。文档理论上是给学生读的,不是给ai读的(当然如果真的是给ai读的那这一切就太合理了),拿着一个黑话满篇,“稳稳接住”的文档交给学生开始做实验,鄙人不太清楚助教的具体想法,以及助教是否真正尊重学生。
另外,本学期hw2的作业量尤为逆天,不太清楚是不是因为助教没有读过本科就直接读了研究生,不知道这些作业如果手搓需要花多少时间。当然,如果助教默认大家全部vibe coding的话那我无话可说。
关于文档”稳稳接住你“,文档链接在此 http://home.ustc.edu.cn/~pzw2002/ ,以下是一些实例,给大家添添乐趣。也欢迎大家在评论区持续投稿。
不是为了让大家“把实验交给 AI 来做”,而是希望大家尽早建立更稳妥的使用习惯
--摘自Lab简介
本实验的重点不是"重新实现一次模型推理",而是把 HW2 中已经能运行的用户态推理后端,封装成一个更像操作系统服务的接口
--摘自hw2
这份文档不是课件提纲,而是给你课后自己读代码用的“导航图”
--摘自Lecture Companion CH2(我想说,哪个正常人类会说“导航图”这种话?是嫌“地图”两个字太简洁太易懂吗?)
CLI 不是"命令合集",而是"命令调度器"。
--摘自Lecture Companion CH2
这一章的目标不是证明"仓库已经实现了 pthread",而是帮你看清:线程为什么比进程更轻;一个可调度执行流至少需要什么状态;当前代码如果将来要支持线程,最可能从哪里改起。
--摘自Lecture Companion CH4
这份文档是给你课后独立看进程代码用的,不是课堂提纲。
--摘自Lecture Companion CH3
也就是说,syscall 编号、分发和用户态封装基本都已经准备好了。你在必做部分真正要补的是
ai_service.c中的控制逻辑。——Lab2也就是说,用户态看到的同步接口可以保留,但底层不应再绕开异步 service 主线。——Lab2
也就是说,你只需要把系统调用层打通到
fileioctl,不需要在sys_ioctl里直接处理具体 GPU 命令细节。——Lab1所以最贴切的描述是:单内核实现 + 模块化代码组织。——CH2
先建立一个最重要的区分:Program vs Process
--摘自Lecture Companion CH3
先把边界说清:当前仓库还没有完整线程实现
--摘自Lecture Companion CH4
直接先说结论:
--摘自Lecture Companion CH4
从一个真实动作开始:在 shell 里输入
pid建议你先在系统里实际运行一次:
pid
然后按这条路径阅读代码:
--摘自Lecture Companion CH2
从一个真实程序开始:先运行
pingpong建议你先在系统里实际运行一次:
pingpong
然后按这条路径阅读代码:
--摘自Lecture Companion CH5
不谈别的,就Lab2实验文档在仔细听取头一批检查的同学的建议之后,针对痛点逐个改进,大大丰富优化了文档内容和编排而言,确实能为助教的工作打好评。助教也说Lab2留给他们的时间太少,所以没有做好,我认为是情有可原的
好评到此为止。下面我要开始输出一番比较激烈的言论了,可以先跳到最后看比较重磅的东西🤫。大家要反驳的话拜托嘴下留情🥺首先总体概括一下:助教个人对于OS和AI的理解无疑是很强的,但是这样难得的优势不应该用来严苛要求学生、制定高标准,我真心建议可以用来想想如何用初学者更好理解OS里繁杂的概念和难上手的具体实现(指实验)
实验上的问题:1.实验的设计层面依然不那么令人满意。一方面是实验文档。即便后面Lab3和4对于助教而言是时间很充裕的,但是依旧没有做到带领学生上手的目的。我做这4个实验的基本流程和感受就是:从头开始读,仔仔细细看前面的介绍部分,直到自己能根据文本用自己的话讲个大概;好不容易搞清楚了这一堆复杂概念,结果具体的实验内容就给我惊呆了——除了用到前面介绍的概念之外,这跟前面有什么关联吗?😳好在代码和文档里都有具体实现步骤的说明,那只能按照步骤一点点做了😓;做着做着又发现了相当大的困难——这么多函数、宏定义、出现的变量,以及我根本没见过的C语言语法(难不成我程设和数据结构都白学了?),怎么困难就这么大呢😥此时助教给的速查网页开始起作用,诚然确实解决了不少困难,但依然没有覆盖实验内文件的所有函数,也出现了实验内容有但速查里没有的函数;那这会就该请AI大人出马了,毕竟助教的NexOS的搭建以及文档都离不开AI,我用点AI总没问题吧🤓这AI倒是比我更能看懂实验文档在说啥,估计发现这些文字大多出自自己,很有亲切感啊😘给我输出了一堆东西,再加之copilot的神之Tab补全,我也算是完成了;但是还不一定能过自测和最终的OJ,所以还得AI输出一遍我改一遍,一点一点慢慢调慢慢改,好不容易跑通。另外提一嘴bonus部分,Lab2的bonus我还是做了的,感觉任务量和难度都还算合理,但是在测数据的时候就发现测时间的系统调用就没有😆(我甚至返回去Lab1把所有文件有关时间测量函数从里到外复制了一遍,发现最核心的RISC-V部分不支持,果然这就是AI做的OS,每次Lab还不一样的😢)Lab4的bonus跟OS本身关系貌似不算大了,基本就是完成一个B+树,但专门学这些的数据结构都只是点了一下B+树,让我根据不那么完整的框架和随之而来的大量代码和文本阅读来完成这个疑似有些太难了,基本是来考验AI大模型是否够强力🙃,遂放弃。
(其实个人还觉得课堂的理论内容和实验内容关联度真的好低,学会了理论远远达不到能看明白实验OS的框架函数等等,更不用提独立完成实验)
接下来就是第2点了:助教的要求似乎太苛刻了些。前三个Lab我查的还算相对顺利,但Lab4我个人感觉受到了相当大的刁难(据说是发现同学们vibe coding比例太大,完成质量不好?)。首先助教打开了一个Word文档,里面大概是准备的问题,我第一个问题我回答的磕磕绊绊,但是问的问题其实很合理,是因为在查实验前一周写完的,线下查的时候没再复习一下,确实是我的问题;但是第二个问题完全是实验外的内容,我有留意过这个小细节,但是碍于不小的工作量,真的没办法顾及所有,回答的时候就基本不会,好在最后助教还是相对清楚地解释了;后面检查我代码,直言我代码写的有问题,倒是非常认真地给我解释了原因(也离不开我一直在问😂因为在写的时候在那个地方迷惑了很久也改了很久),甚至让我重新跑自测与oj,都是满分,随后助教说这估计是脚本写的有问题,反正我这么写不对😥(后面回去自己看了一眼,确实有道理,改了之后依然也满分)。但是一直强调我写的不对而不说正确的方法是什么用意,我自己都在那一小块反复折腾那么久了,好不容易过了,过了还被说错了,错了还不教我对的咋做的,是因为告诉正确答案泄露天机了吗🤔多少有点无语,但看到每次实验都按照满分登记的,也许是刀子嘴豆腐心吧😔
那作业上的问题就不是用刀子嘴豆腐心能够评价的了,多少达到逆天的水平了,正好今天上习题课能更好评价一手。
首先提一嘴作业的布置,感觉从各方面讲都不算合理——时间上从第10周左右才有正经的作业HW3,HW1和2都是跟实验强相关的预习作业,并且真就是阅读理解,纯纯文科题,甚至还有采分点(后面具体展开);内容上感觉有些太往实验那边靠了,一共5个HW有3个(1,2,5)都与实验深度绑定,相对理论的HW3和4也有相当一部分题目跟实验有关,当然考试题也可能出这种情境类题目就是了。
其次就是作业完成的标准问题。我在上今天习题课之前,是真的想不到原来计科的文科课就是真“文科”啊,连采分点都有啊,着实让我震撼到了。并且计算应用类题目大多也要求给出尽可能详细的解答过程,配上一定的文字说明。或许这些要求有的合理有的过分,但是在布置作业的时候明确提出来,好歹让同学们了解到啊(OS往年题资源也相当匮乏,更不用提解答了,所以根本无处自行找个标准)。没有标准,我就只能按照我自己的标准去写了。对于HW1和2而言,我感觉就是相对开放的那种问答,合理即可,就根据自己阅读的结果和AI的结果缝合出一个相对不错的答案,而HW3和4就写一些必要的式子和推理,有些感觉比较繁琐的过程就省掉了。所以就牵扯到得分的问题。
接下来就是重磅的作业平时分问题了,我本以为这么晚出作业分数是为了统一标准公平批阅,结果完全就是一坨💩,我大言不惭地讲,某些助教应该是在喝醉了的时候批我的作业吧,酒兴大发,想扣多少扣多少;要么就是干脆摆烂,“来,AI,帮我批作业吧”,要不然为啥作业反馈就写个自己能看懂的-10分呢。本身被无端扣大量分数就感觉很恼火,毕竟是自己认认真真写的,也配合AI完成一定的检查,怎么会大量丢分👿今天上习题课,发现这种阅读理解题有采分点还不提前告知,本身就够无语的,然而满分一共10分你扣我15分我是真的看不懂啊😅,还是在我踩到大量得分点的情况下,反馈就写个“-15”是想让我重修吗??(由于线上提交没有分组,我还不知道是哪位助教批的,总不能随便找一位开喷吧)后面计算题也是相当离谱,只要答案不对就全扣掉,替换策略的所有状态都是对的,就是少数了两个命中,喜提-6;地址转换题本身就不好做,好不容易做对了,但是第三问是问答题,给了助教大量的扣分空间😇,喜提-9;再后面的磁盘移动的算法,至少我课上从没听老师讲过SCAN和LOOK只能先往右再往左,我可是先左后右和先右后左都算了一遍,答案不一样,选了一个我认为合理的,但是跟您手上答案不一样,再次喜提-5🤣;最最离谱的是内存分配回收题目,答案跟助教晚上讲的完全一致,甚至思路都对得上,就写的简单了一些,但也保留了必要的过程,不好意思,助教看我不顺眼,-5;反而是某些做的有瑕疵/不那么用心的题目没有扣分,我真的怀疑判作业的也是AI吧;其他还有一些扣分过重的点,但是我秉持不挑刺的原则,暂且接受你扣我相对多的分数。作业给分只给我一个感受:自己认认真真做的东西不如别人用AI秒速生成的作业一根,我还不想让AI代替我,但是我看你想了。
不知道为什么这门课那么缺少往年参考卷,于是做了份今年的回忆版试卷,希望可以帮到之后的同学!
2026.6.20
复习量物没招了来写评课了。
嗯,从前天,也就是6.18的实验检查之后,整个实验大概是完成了,后面是补检查和四次实验之后的实验报告。
报告还没开始写(可恶的量子物理复习怎么这么难),但是看要求不是简单的写个实验报告,而是根据所有实验写自己的感受和操作系统AIOS的思考和理解。
总体来说之前的吐槽是不对的,比如“ 我计时过一个蛮长的实验检查的时间,他被提问拷打了快17分钟(? ”
嗯,原来是助教在等回答,给思考时间,然后助教也会给解释没有答上来的部分。不过问题问的还是蛮多的,还会有些小追问,不过无伤大雅,是给足了思考时间的。
之前吐槽是因为自己被检查的时候就检查了没到1分钟(快问快答来了
然后是作业,hw3和hw4才正常啊,hw2只能说是pre-lab2了,hw3和4都是在实验的知识点上出了些考试典型题型。
终于能看懂实验文档了!切撇,之前看不懂文档,把文档给ai翻译的日子终于过去了。虽然给的图有些还是没怎么看懂,然后ai的感觉还是有,活人味只能说浓了点。
还有如果这些实验能够不vibe coding完成,估计能够很有收获叭,我菜菜的,只能交给gpt然后试图理解它为什么这么写,然后检查完了之后就过了。
--
看了眼hw5,进阶部分还要追问是什么,这个part还有线下检查吗。
--
然后是一些碎碎念,计科的课程中很少有关于git的东西,偶尔遇到也是课上助教要求这样提交作业,我的程序进阶和操作系统课程都是要求git提交的,但是除此之外就没有了,于是只能自学git。偶尔也会想学校如果能够教git也好,因为感觉一节课也能讲清楚,不会占用太多时间。
就是感觉课上学到的东西就是规规矩矩的计科基础,很少能带上很多泛计科的东西。
所以这次操作系统创新了实验,有ai、videcoding、git,其实是真的眼前一亮的。
当然也可能是目前才大二,学的东西还太少,我还没有遇见过。
qaq
2026.4.25
其实我对于 ai 写实验文档这个事情倒是没有太大的抵触。但是就是一点,对于没有接触过的人来说,这份文档太难懂。
可能助教因为已经比较理解操作系统的东西了,所以看了文档觉得没有问题?(总不能没看过吧
但是我个人读这个文档还真是有点痛苦的,首先是作业部分的文档,老师说课后作业都是对实验的一些提前预习(说到这里,老师真是一个很好的老师,会开玩笑,会讲道理,也体谅学生
但是这个作业好像有点难了,lab1的作业还只是看了配套阅读材料,回答一些小问题,文档里都有答案。lab2的作业就开始要一些实操了。但是总感觉这个文档有些说的不清不楚的,我有点不太确定哪些是必做的,比如tokenizer依赖,文档里说的是“如果要使用….完成文本和token id 互转”,对于我这种只想满足最小要求的人,对于这种如果都是当作不需要的,(因为本身也没有想往这方面深入),但是在作业要求文档里面又让我们至少先完成这个tokenizer依赖内容,再做part1….
然后是这些文档,这个文档阅读实在是有点一言难尽,就是有一种自学很困难,但是会了之后再看就理解的那种中国教材的感觉。(?反正我是这么个感觉,刚看这个文档我是真的不知所云,只能让 ai 帮我看看,我需要弄清楚什么然后要完成什么。
还有实验检查?感觉几个助教好像对我们实验理解有不同的要求?在406检查的有时候会遭遇拷打,我计时过一个蛮长的实验检查的时间,他被提问拷打了快17分钟(?
说实话我感觉有点长了,这个助教检查一个人的时间,另一个助教可以检查3个人。不太懂各个助教的内心底线。
总之感觉这个革新的实验还是需要点优化吧,这门课的课后时间已经超过我平时计组实验和CTF加起来的时间了。还真是有点困难。
这次 lab2 虽然给了三周时间,但是由于还有量物期中考,去掉备考时间,感觉也没有多很多。
(另外实验尽量不要快到 ddl 了在写,很危险,一是实验本身有些困难,可能不是那么快写完的,二是 ddl 那天检查会有很多人,而助教检查时间又比较长,时间上并不是太划算。
实验检查现采用QQ群里发所在实验室门牌号+学号的方式,按照发送顺序,助教在教室固定位置依次喊人来检查,检查通过助教会长按你的消息回复一个大拇指或者OK的符号,目前叫人的方式是直接扯嗓子喊。真的不建议清口喊人,坐在406教室的中后段很难听到,尤其是有窸窸窣窣的交谈声的时候,既然已经在QQ群里“接龙”了,或许可以考虑更进一步,直接用临时对话喊人?虽然可能带来其他问题,但是至少可以减少漏听漏号的问题,实验室也安静一点。406还有额外的debuff,因为406的同学特别多,是408的2倍左右,所以在高峰期会配3名助教检查实验,408一般只有一名,但是常常会出现408的消息下面一串大拇指,406只有零星几个大拇指的情况,甚至408空下来开始接收406的同学来检查让人特别捉急啊。至少是刚开始的一两个小时,平均每位同学要检查5到10分钟,期间接收助教的不断拷打,408的情况不太清楚,看上去效率是很高的,再加上406频繁的“跳号”和跳过的号“插队”,情况更是雪上加霜,不过也是神奇,最后基本上每条消息下面都有大拇指,除了可能是因为时间接近9点半了有些忘记或者来不及回复大拇指了。这标准相差的也太多了吧