1.为什么要学习这门课?
我们处于并发处理的时代,进程,线程,协程等编程,逐渐成为基本技能,其中涉及资源的竞争和共享,死锁等问题,都是OS课程所要讲述的;OS对软硬件的资源管理是它的主要功能,通过对资源管理的学习,可以使大家能够在许多其他场合重用这一模式;当系统或者程序出现性能问题,或者当系统出现冲突时,要深入到系统看看如何进行处理,这样,对操作系统原理的掌握就显得弥足珍贵。
设计任何的工程系统,包括软件系统,都是一个权衡的过程。是要侧重于可靠性?性能?消耗还是维护性?因为操作系统是很庞大的、性能至关重要的程序,一般都要维护几十年,所以操作系统是大家学习这类权衡的很好的地方。拥有一双发现合适设计点的锐利眼睛的学生在工业上是很需要的。这些人更像一个艺术家而不是一个科学家,你需要看大量的代码,理解这些问题,和学会自己独立考虑这些问题。
2.这门课的主题是关于什么?
本课程以操作系统的资源管理为主题,涉及进程管理,内存管理,文件管理,设备管理,操作系统接口五大子系统,贯彻机制与策略分离的设计理念,这一理念是计算机科学的基本设计理念,那么什么是机制,什么是策略,机制就是提供什么样的功能,策略就是如何使用或者实现这个功能,比如高考就是一种机制,而你去按高考的规则,参加考试就是一种策略,比如文件系统提供的read()就是一种机制,而你调用read()函数从磁盘读取数据就是一种策略,如此等等。那么,操作系统课程讲授的是机制还是策略呢?以讲机制为主,大家能把这些机制应用起来,就会有较大的收获,如果你能设计出一种机制,那就是较大的创新了。
3.学习这门课可以获得什么?特别是对自己有什么帮助和应用。
1)有助于编写并发程序
不管你在学习Java,Python,还是C++,尤其是go语言,线程的并发控制是难点,而语言本身对并发的讲解限于具体函数的介绍,而并不能深入到原理,其根本的一些概念,比如临界区,临界资源,同步和互斥等实际上是在操作系统这里要学通透的,但求本,不愁末。
2)有助于培养系统性思维
操作系统从资源管理的角度来对计算机的软硬件资源进行管理,软硬件协同和管理是操作系统的设计的主战场,因此必须有系统性的思维,对软硬件都有较为深入的认识,比如CPU管理(也就是进程管理),内存管理都是要在对相关硬件深入了解的基础上,应用系统软件的整体性思维进行设计,使得软硬件真正的协同起来,这是一个非常复杂的系统工程。
3)有助于培养系统性能分析的能力
目前计算机的应用领域非常广泛,人工智能,区块链,云计算以及大数据,底层都是操作系统的支持,尤其大都是开源的操作系统Linux。在实际应用中,会发现有很多性能问题有待解决,而且这些问题的解决,最终都会追溯到操作系统层面,因此,操作系统知识和技能的掌握是系统性能优化的基石。
4.这门课有什么特色和亮点?
1)打破操作系统应试教学的死记硬背局面,激发学生学习操作系统的主动性和热情。
本课程从一开始就强调要打破应试教育,并从每一次作业的创新性设计着手,作业的完成是一环套一环,没有现成的答案,通过大作业的训练,让概念落地有声。
2)通过以点带面,提升学生综合应用知识分析和解决问题的能力。
操作系统的知识点比较零散,如何把这些知识点穿起来,课程在各个实验环节进行了缜密的设计,具体实验参考实验楼操作系统实验,后续实验都是对前一次的迭代,在不断加强中,把前面的知识综合应用起来,使得学生逐渐具备了解决复杂问题的能力。
3) 提高了学生积极主动解决问题的能力,创新意识增强。
在作业和实验的设计上,都给学生留有一定的空间,比如,每次作业每个人必须自己提2个问题,挑战性实验有一定的陡度,必须查阅大量资料才能完成。学生的创新意识得到加强。
4)提升了团队合作和沟通能力。
很多作业和实验都是以小组为单位完成并互相批改作业,每个组都起有自己的名字和口号,组名和口号将伴随本组一学期。每个人在组中都有明确的角色和责任,这使得学生在学习过程中感受企业文化和担当。
目标1:从设计操作系统的角度,掌握计算机操作系统的主要功能原理,包括处理机管理、存储器管理、设备管理、文件管理和操作系统与用户之间的接口,理解各主要功能的基本原理、关键数据结构设计、算法、经典模型。
目标2:要求学生有动手实践能力,熟悉Linux操作系统常用的shell命令,熟悉Linux平台下的C语言编程,熟悉进程和线程的基本系统调用,实现进程和线程的控制,进程通信,多线程同步控制,结合实验,对结果分析和解释,理解处理机管理基本核心概念。
目标3:“以学生为中心”,打破应试教学方式,通过若干个教学活动和实验样例的设计,帮助学生完成知识内化,培养学生自主、合作和探究的学习习惯,并具有分析和解决实际问题的能力。
本课程的学习要与Linux操作系统相结合,要求:
1)Linux基础入门,可参考实验楼的Linux基础入门
2)Linux C 编程
3)数据结构
4)微机原理
为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。
电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。
完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。
认证证书申请注意事项:
1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。
2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。
[1]汤小丹,梁红兵,哲凤屏等.计算机操作系统(第四版).西安:西安电子科技大学出版社,2014.
[2]Tanenbaum A S,Woodhull A S.Operating Systems:Design and Implementation(Second Edition,影印版).北京:清华大学出版社,1997.(中文书名:操作系统设计及实现)
[3]Remzi Arpaci-Dusseau Andrea Arpaci-Dusseau.Operating Systems:Three easy pieces[M].Arpaci-Dusseau Books,2018.
[4]AbrahamSilberschatz.操作系统概念[M].高等教育出版社:北京,2007.
[5]Tanenbaum A S.Modern Operating System(Second Edition,影印版).北京:机械工业出版社,2005.(中文书名:现代操作系统)
[6]陈莉君等.Linux操作系统原理与应用[M].清华大学出版社:北京,2012.
[7]Robert Love.Linux内核设计与实现[M].陈莉君等译机械工业出版社:北京,2011.
[8]Daniel P.Bovet等.深入理解Linux内核[M].陈莉君等译.中国电力出版社:北京,2007.
[9] 赵炯.Linux内核完全剖析(第一版).北京:机械工业出版社,2006.
网络资源,点击链接直达:
[1] 操作系统在线实验 西邮操作系统课程团队
[2] 操作系统原理与实践 哈工大 李志军
[3] Linux内核分析与应用 慕课 西邮操作系统课程团队
[4] Linux编程技术 慕课 西邮操作系统课程团队
[5] Linux内核之旅( www.kerneltravel.net)网站 西邮操作系统课程团队
[6] Linux内核之旅 B站 西邮操作系统课程团队
Q : 学习操作系统课程需要什么前期知识基础?
A : 本课程是面向计算机专业本科的学生,学习操作系统课程之前需要有一定的C语言,数据结构课程基础,如果缺乏这些基础知识的话,很多算法思想不好理解。另外,还需要补充一些基础的汇编语言的知识,这样更容易理解底层逻辑。
Q : 视频中的课间提问如何计分?
A : 目前只用来测试学生对课程内容的掌握程度,暂时不计入总成绩中。
Q : 没有Linux基础,是否影响课程学习?
A : 课程中会涉及一些Linux系统实例,并且实验是在Linux环境下完成,因此,建议提前熟悉Linux的使用。
Q:课程中的实验在哪里做?
A:每章的实验可以在实验楼云平台进行实践,地址为:https://www.lanqiao.cn/courses/2610。不需要安装Linux环境,随时随地实践起来。因技术原因,关于Linux内核的实验请个人安装Linux环境进行实践。