hi,小慕
课程

中国大学MOOC,为你提供一流的大学教育

hi,小mooc
操作系统及Linux内核
第6次开课
开课时间: 2023年09月11日 ~ 2024年02月08日
学时安排: 3-5小时每周
当前开课已结束 已有 2221 人参加
立即自学
往期不提供结课证书,想参加下学期课程, 点击这里预约>>
课程详情
课程评价(22)
spContent=操作系统(OS,Operating System)课程是计算机专业的一门专业核心课。课程内容庞杂,概念多、抽象,难以理解。教学团队凭借20多年Linux技术的深厚积累,本着“以学生为中心”的目标,借助于在线教学平台,对本课程的教学内容、实验和教学方式,进行大幅度调整和重构。 首先,课程的教学内容在讲解原理的基础上,结合Linux内核的设计,让原理落地有声。其次,设计出与教学内容配套的相关实验,放在在线实验楼https://www.lanqiao.cn/courses/2610,这些实验可能是Linux的命令的使用,也可能是系统调用的应用,最后深入到Linux内核,从而激发学生学习操作系统的积极性和能动性。最后,教学团队开发了与慕课配套的云教材,提供丰富的多媒体素材,让学生全方位的了解和学习操作系统。通过慕课+实验+云教材课程模式,为学生在操作系统设计,系统性能优化,系统软件开发,系统运维等方面的理论和实战能力提升打下良好的基础。
操作系统(OS,Operating System)课程是计算机专业的一门专业核心课。课程内容庞杂,概念多、抽象,难以理解。教学团队凭借20多年Linux技术的深厚积累,本着“以学生为中心”的目标,借助于在线教学平台,对本课程的教学内容、实验和教学方式,进行大幅度调整和重构。 首先,课程的教学内容在讲解原理的基础上,结合Linux内核的设计,让原理落地有声。其次,设计出与教学内容配套的相关实验,放在在线实验楼https://www.lanqiao.cn/courses/2610,这些实验可能是Linux的命令的使用,也可能是系统调用的应用,最后深入到Linux内核,从而激发学生学习操作系统的积极性和能动性。最后,教学团队开发了与慕课配套的云教材,提供丰富的多媒体素材,让学生全方位的了解和学习操作系统。通过慕课+实验+云教材课程模式,为学生在操作系统设计,系统性能优化,系统软件开发,系统运维等方面的理论和实战能力提升打下良好的基础。
—— 课程团队
课程概述

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:“以学生为中心”,打破应试教学方式,通过若干个教学活动和实验样例的设计,帮助学生完成知识内化,培养学生自主、合作和探究的学习习惯,并具有分析和解决实际问题的能力。


课程大纲
第一章 概述
课时目标:通过本章学习,您可以:(1)理解操作系统的目标、作用和发展过程,能够理解系统软件的设计目标。(2)掌握操作系统的基本特征和主要功能,能够对系统软件的管理功能有深刻的认识。(3)掌握操作系统结构的设计原则和其优缺点,并能对系统软件的设计原则有所认识。(4)熟悉一种操作系统的源代码结构,比如Linux,并能对操作系统的结构有深刻的认识。(5)理解操作系统的运行环境和运行机制,并初步掌握中断、异常和系统调用的基本原理。(6)初步掌握Linux内核模块的编写。重点:操作系统的主要功能。难点:操作系统的结构设计。
1.1 课程概述
1.2 操作系统的定义、功能及特征
1.3 操作系统发展
1.4 操作系统的结构
1.5 操作系统的运行环境
1.6 Linux内核及可加载内核模块编程
1.7 动手实践-内核模块的插入删除
第二章 操作系统接口
课时目标:通过本章学习,您可以:(1)熟悉操作系统与用户的三种接口,并能对每种接口的优缺点进行分析。(2)掌握系统调用的概念,并能对引入系统调用机制的原因给予分析。(3)掌握系统调用的实现机制,并能够对系统调用的执行过程用户态与系统态切换的代价进行分析。(4)掌握Unix/Linux系统调用机制的实现机制,并分析相关源代码。重点:理解系统调用的概念。难点:系统调用的实现过程。
2.1 操作系统接口概述
2.2 Linux系统调用机制
2.3 动手实践-系统调用日志收集系统
第三章 进程管理
课时目标:通过本章学习,您可以:(1)掌握进程的概念及进程控制。(2)掌握进程从创建到死亡的生命过程,能够通过fork()、exec()、kill等系统调用编写相关的代码,并感知进程的生命周期。(3)掌握打印Linux进程控制块字段的程序编写。(4)熟练掌握经典的进程同步问题,能够利用同步机制解决典型的进程同步问题。(5)掌握进程间基本通信机制,并能够通过调用相关的系统调用,编写共享内存,管道和消息机制相关的代码。(6)掌握线程创建到运行的全过程,并编写相关的代码。重点:进程、线程、进程同步。难点:信号量在进程同步上的综合应用。
3.1 进程的概述
3.2 进程控制块及Linux中的task_struct结构
3.3 进程控制
3.4 线程及其模型
3.5 Linux中进程和线程的创建
3.6 进程同步机制
3.7 信号量机制
3.8 生产者--消费者问题
3.9 读者--写者、哲学家进餐问题
3.10 进程间通信
3.11 动手实践-打印Linux进程控制块中的字段
第四章 进程调度与死锁
课时目标:通过本章学习,您可以:(1)掌握进程调度的策略和调度模型。(2)掌握各种调度算法,并能最算法的性能进行评价。(3)掌握死锁的相关概念,并能够应用产生死锁的必要条件对死锁现象进行判断和说明。(4)掌握避免死锁的算法,并能够对银行家算法进行代码级的分析和实现。(5)理解Linux内核的调度算法,并能初步阅读相关源代码。重点:进程调度算法,死锁。难点:各种进程调度算法的优缺点和适用范围,银行家算法。
4.1 调度队列模型和调度准则
4.2 调度算法以及举例
4.3 Linux进程调度概述
4.4 死锁的引入和预防
4.5 死锁的避免
第五章 存储器管理
课时目标:通过本章学习,您可以:(1)熟悉存储器管理的各种方式,并能分析具体操作系统采用了哪种管理方式。(2)掌握分区管理的各种分配和回收算法,并能对算法的性能给予分析。(3)熟练掌握分页存储管理方式,并能对x86的页机制有所认识。(4)理解快表和两级页表的作用和设计思想。(5)掌握分页存储的地址变换过程和硬件支持,并能对给定的地址进行具体的转换,说明软硬件配合的转换过程。(6)掌握分段存储的地址变换过程和硬件支持,并能对硬件的支持有所认识。(7)熟悉虚拟存储器的概念。(8)掌握请求分页存储管理方式以及硬件的支持。(9)掌握页面置换算法,并对各种算法的性能进行评价。(10)通过编程,理解Linux中文件与进程虚拟地址空间的具体体现。重点:请求分页存储管理方式;页面置换算法。难点:地址变换过程;虚拟存储器的实现方法;页面置换算法。
5.1 存储管理概述
5.2 内存连续分配方式
5.3 分页存储管理
5.4 快表和两级页表
5.5 分段储存管理
5.6 虚拟存储管理
5.7 请求分页存储管理
5.8 页面置换算法
5.9 动手实践--可执行文件与进程虚拟地址空间
5.10 企业一线工程师解惑内存管理的八大问题
第六章 设备管理
课时目标:通过本章学习,您可以:(1)掌握I/O系统、I/O设备和设备控制器的基本概念及其结构。(2)掌握设备驱动程序、与设备无关的I/O软件、用户层的I/O软件、设备分配的基本流程。(3)掌握缓冲区管理以及各种方案的优缺点。(4)掌握SPOOLing技术以及在打印机中应用。(5)通过编程,初步了解Linux驱动程序开发的基本知识和基本流程。(6)掌握磁盘结构和编址概念、磁盘读写时间的计算方法、磁盘调度算法及性能评价。重点:与设备无关的I/O软件层;缓冲区管理以及设备驱动程序。难点:设备驱动程序的开发流程;磁盘调度算法。
6.1 IO系统模型和功能
6.2 IO设备和设备控制器
6.3 IO设备驱动程序
6.4 Linux字符设备驱动程序
6.5 IO与设备无关的IO软件
6.6 用户层IO软件
6.7 缓冲区管理
6.8 磁盘存储器的性能和调度
6.9 动手实践--编写字符设备驱动程序
第七章 文件系统
课时目标:通过本章学习,您可以:(1)熟悉文件系统和文件的概念;并能对主流文件系统能够有所认识,并进行简单评价。(2)熟练掌握文件的逻辑结构和外存的分配方式,并能对每种结构的优缺点进行评价。(3)掌握文件目录的管理方式,并能对某种具体的文件系统目录管理进行分析。(4)掌握文件存储空间的一般管理方式,并能对每种结构的优缺点进行评价。(5)掌握文件的共享和文件的保护,并能对符号链接方式进行分析。(6)了解Linux的虚拟文件系统。重点:文件系统、文件的逻辑结构、外存分配方式、文件目录。难点:理解文件的逻辑结构,外存分配方式、目录查询技术。
7.1 文件系统概述
7.2 文件的逻辑结构
7.3 外存的分配方式
7.4 文件的目录管理
7.5 文件存储空间的管理
7.6 文件的共享和保护
7.7 Linux文件系统概述
展开全部
预备知识

本课程的学习要与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环境进行实践。

西安邮电大学
5 位授课老师
陈莉君

陈莉君

教授

梁琛

梁琛

副教授

张丽丽

张丽丽

讲师

推荐课程

【DeepSeek适用】小白玩转AI大模型应用开发

林粒粒

187人参加

小白玩转 Python 数据分析

林粒粒

75人参加
下载
下载

下载App