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