|
|
教学公告
各位2022级的同学,大家好!
这里是《操作系统课程设计》的修课须知。这门课的类型是实验课,也即动手编程课,分值虽然仅有1个学分,但是性质为“必修”。
从20级本科生开始,此课经过了较大的内容更新,实验平台从Linux内核变为了更加适用于教学的xv6-riscv(来源于MIT的6.1810课程),实验的中文辅导材料也在持续改进。但是,因为今年学生的人数仍然非常多(我的课表这里显示为272人),希望大家能够多多主动留意年级通知群,不要错过和本课程相关的一些重要的时间点。
此门课将基本遵循之前的线上教学模式。在每次布置实验任务前(今年已经确定为6次,比去年多1次),我会在教学站点(学者网)上发布一个较为详细的实验过程和说明文件(包括基本的实验环境搭建),并会要求各位同学在规定的时间内上传实验报告/作业,以此作为期末的评分依据。
本课程对于提升各位的编程能力和系统水平有直接的正面作用,也对于我们一贯的重文轻武(理论课学分较高、实验课学分较低)的本科教学,是一个较好的补充。毕竟,计算机科学与技术是一门工程学科,而其中的“工程”能力,很大一部分程度依赖于各位同学的coding和系统能力,而不仅仅是一纸论文、赛事奖项和保研加分。再考虑到你们即将在25年春季开始和社会的用人单位慢慢接触,这门课的出现,我个人认为不仅具备教学合理性,也存在较大的现实意义。
根据之前两届同学在这门课的表现情况,在修课前,我给大家一些提示或者建议:
1.请大家重视系统编程。虽然在python里直接调用各种包看起来更加容易和高效(调包侠),但是很难形成自己的技术优势。我理解大家对于算法和数学模型的偏爱,可是,一个不能忽视的事实是:无论算法和数学模型看起来多么完美和优雅,它都需要和一个真实的(操作)系统/硬件相结合才能发挥真正的用处,并且,有可能地,它的所谓正面影响,例如:单体运行效率或者准确度,会被一个系统的其他部分所吸收、融合并稀释,甚至变异为负面影响(例如:降低了系统整体性能;或者增加了不合理的功耗),从而造成令人困惑的局面。通过这门课的学习(只是敲门砖),你会意识到,在实际系统中去设计、实现和部署各类算法或数学模型时,考虑系统软件的运行机制、底层硬件的物理特性是非常有必要的。
2.请“通读”xv6-riscv的源码(C语言加上少许汇编语言),而不是仅限于具体实验任务所涉及的“局部”范围。尽管它的代码效率离工业级的系统还存在一定差距,但是可读性较强,易于理解,非常值得各位反复咀嚼和体会。
3.尽早进入作业/实验状态。大部分同学对待作业/实验的方式都是在临近截止日期前抱佛脚——网上一搜,略加修改就将拼成文档然后提交。虽然这不会导致挂科,但是你会白白浪费一次和身边人一起接触和学习国外优秀系统课程的宝贵机会。
4.通过这门课的学习,希望后续有同学可以报名参加明年2025年度“全国大学生计算机系统能力大赛”中的“操作系统设计赛”。截止到2024年8月份,我已经连续两年以指导教师的身份参加了这项赛事——去年是物理学院的本科生牵头报名,今年则是软件学生的本科生牵头报名,而我院的天命人至今没有正式出现。每次和外面的同行聊天,别人问正儿八经的计算机专业怎么没人报名?我想了半天也不知道怎么回答,难道告诉别人这是华师特色?其实,这种现状也多少意味着,本院学生在系统能力方向上与其他主流院校相比(甚至和二流院校相比),存在较大差距。这不仅包括重视程度,还涉及到相应的技术能力。因此,我迫切希望2022级或者低年级中有兴趣的同学,能够挺身而出,踊跃报名参加此项赛事。
另外的几个修课细节,也请大家注意:
(1)我会在每一次实验前给出详细的中文实验入门和文档,不想自己折腾的同学按照我的操作指引来;
(2)强烈建议对自己有要求的同学按照MIT.6.1810课程的原始进度认真研修,包括我没有要求完成的实验;
(3)网上针对此课程的解题思路和答案不少,鱼龙混杂,建议各位同学自己先动手解题,之后再去参考别人的优秀代码,如此一来,水平才会有所提升;
(4)对课程内容不感兴趣的同学,只要按时提交实验报告,把名字和学号写对,就都会过,而且可能分数还会比较体面。
多谢,祝好!
笔芯~~
----------
参考链接:
- MIT-6.1810的2023年教学计划:https://pdos.csail.mit.edu/6.828/2023/schedule.html
- 学者网课程站点:https://www.scholat.com/course/scnuos (课程密码:os2024,请大家选择对应的班级加入,实验报告以后就在这里提交电子版)
- xv6-riscv源码的视频讲解
- 物理学院2020级本科生梁铭皓写的教程,大家可以参考阅读,但是这里边的实验和本课程的实验并不一定严格对应。