操作系统原理及项目设计-k8凯发旗舰
|
|
|
教学公告
各位2020级的同学,大家好!你们开学辛苦了!
我是本学期《操作系统课程项目》的授课教师李丁丁。
很高兴这门课和大家见面了,它的类型是实验课,也即动手编程课。虽然这门课的分值仅为1个学分,但是和去年的选修性质相比,变成了2020级几乎全方向的必修课。因此,激增的人数会给对应的教学活动带来了一定的困难和挑战(目前选课系统里的人数是285人),希望大家能够多多留意年级通知群,不要错过和本课程相关的一些重要的时间点。
按照现有的教学计划,此门课将基本遵循之前的线上教学方式。在每次布置实验任务前(大约4-5次实验),我会在教学站点(学者网)上发布一个较为详细的实验过程和说明(包括基本的实验环境搭建),并会要求各位同学在规定的时间内上传实验报告,以此作为期末的评分依据。
往年的实验内容以linux内核为基础实验平台,内容几乎皆由本人自创,包含:“linux内核编译”、“linux模块编程”、“进程通信”和“进程/线程互斥锁”等内容,不失开放性和趣味性,总体难度偏低,并且高分覆盖率较高。但是,从2022年秋季开始,实验内容将被历史进程所推动,发生较大的变革。一言以蔽之,其内容将以mit(麻省理工学院)著名的6.828课程为蓝本,经过一系列本地化(华师化)改良之后,再呈现给大家。
简单来说,本课程将主要发生以下两个具体变化:
1) 不再以linux这样复杂的通用os内核为实验平台,而是用xv6这样简洁的教学型内核取代之,从而降低大家对于os代码学习和开发的恐惧心理;
2) 编程量增加,将大家的主要精力从“熟悉linux系统”,转移至,“实现os所必须的基础模块和应用层工具”上,尽可能地让各位在上学期学到的os理论能够平稳落地,并淬炼大家的coding能力。
可能和大部分同学的内心一样,本人也一样懒散爱玩,向往自由的天空并喜欢在元宇宙里追逐征服银河系的美梦,为什么还要做出如此大幅度地足以改变安逸现状的变化呢?
首先,现实。由于“hw智能基座”项目的进入,使得一部分其他计算机课程的实验内容与本课程的实验内容发生了较大的碰撞和重叠,而本人的弱鸡肉身和性格又无法抵挡住菊花厂的钢铁洪流,为了保持课程的开放性和独立性,只好寻求替代方案。
其次,情怀。mit的6.828课程自身非常优秀,大部分传统985高校早就在本科生和研究生的专业课程中开设了以它为蓝本的os课程。我在10年前刚刚进入scnu工作时,也有仿效该课程的想法,可惜一直忙于申请项目、撰写论文等现实事宜才一直延误。现阶段,内外环境较为稳定,再加上遇到了一些可以在各方面分担压力和提供实际帮助的小伙伴,我才下定决心做出此改变。另外,mit6.828课程的一大亮点之一就是会不断地在教学过程中加入系统界的当前热点或噱头,比如xv6操作系统近期加入了对开放性指令集risc-v的支持;还有一次实验甚至会要求大家自己动手去执行一次著名的meltdown(熔断)系统攻击(我们不一定安排,看之后的具体情况而定)。
再者,效果。mit的6.828课程对于提升各位的编程能力和系统水平有直接的正面作用,也对于我们一贯的重文轻武(理论课学分较高、实验课学分较低)的本科教学,是一个较好的补充。毕竟,计算机科学与技术是一门工程学科,而其中的“工程”能力,很大一部分程度依赖于各位同学的coding和系统能力,而不是冷冰的绩点、虚无的论文和世俗的奖项。再考虑到20级的同学即将在23年春季开始和社会的用人单位慢慢接触,这门课的出现,我个人认为不仅具备教学合理性,也存在较大的现实意义。
无论如何,本人都非常习惯本校计算机学院的同学对于底层系统编程的厌恶或者不感兴趣。根据我多年对此类课程的学生表现之观察分析,一个年级对(底层)系统感兴趣并且愿意毕业后从事此行业的同学一般不会超过3个人。就算超过,那就是4、5个人。我理解大家对于算法和各类数学模型的偏爱,可是,不能排除的一个事实是:无论一个算法和数学模型看起来多么完美和优雅,它都需要和一个真实的(操作)系统/硬件相结合才能发挥真正的用处,并且,有可能地,它的所谓正面影响,例如:单体运行效率或者准确度,会被一个系统的其他部分所吸收、融合并稀释,甚至变异为负面影响(例如:降低了系统整体性能;或者增加了不合适的功耗),造成令人困惑的最终局面。通过这门课的学习(只是敲门砖),你可能会意识到,在实际系统中去设计、部署各类算法或数学模型时,还是非常有必要去考虑系统软件和硬件的运行和物理特性。日积月累,这种能力和素质的提升所带来的成就感是巨大的!
最后,给出几个注意事项:
1.我会在每一次实验前给出详细的实验入门和文档,不想自己折腾的同学按照我的指引来;
2.强烈建议对自己有要求的同学按照mit6.828课程的原始进度认真研修,包括我没有要求完成的实验;
3.网上针对此课程的解题思路和答案不少,鱼龙混杂,建议各位同学自己先动手解题,之后再去参考别人的优秀代码,如此一来,水平才会有所提升;
4.不吃我这套的、对系统编程不感兴趣的同学也请放心,大家只要按时提交实验报告,就都会过,而且分数还会比较体面。
5.很多计算机专业毕业生在进入技术类的工作单位后,都想抽时间去自学这门课,但是苦于忙于工作,没有时间补习,并十分后悔当初没考个好学校——因为没有合适的老师开这门课。现在一个赤裸裸的机会摆在你们面前——有还算专业、不断自省的老师带头授课;有热情洋溢、英俊美丽的助教答疑;还有推心置腹、肝胆相照的身边同学一起学习,所以,各位的选择是“奉令承教”还是“置若罔闻”呢?
我拭目以待!
部分链接:
(1)mit6.828的2021年教学计划(把这个站点称为计算机专业的宝藏网页毫不为过):
(2)学者网课程站点:https://www.scholat.com/course/scnuos (课程密码:os2022,请大家选择对应的班级加入,实验报告以后就在这里提交;
千里之行,始于足下