操作系统及Linux内核
操作系统及Linux内核
1万+ 人选课
更新日期:2026/06/12
开课时间2025/08/25 - 2026/01/31
课程周期23 周
开课状态已结课
每周学时-
课程简介

1.为什么要学习这门课?

       我们处于并发处理的时代,进程,线程,协程等编程,逐渐成为基本技能,其中涉及资源的竞争和共享,死锁等问题,都是OS课程所要讲述的;OS对软硬件的资源管理是它的主要功能,通过对资源管理的学习,可以使大家能够在许多其他场合重用这一模式;当系统或者程序出现性能问题,或者当系统出现冲突时,要深入到系统看看如何进行处理,这样,对操作系统原理的掌握就显得弥足珍贵。

       设计任何的工程系统,包括软件系统,都是一个权衡的过程。是要侧重于可靠性?性能?消耗还是维护性?因为操作系统是很庞大的、性能至关重要的程序,一般都要维护几十年,所以操作系统是大家学习这类权衡的很好的地方。拥有一双发现合适设计点的锐利眼睛的学生在工业上是很需要的。这些人更像一个艺术家而不是一个科学家,你需要看大量的代码,理解这些问题,和学会自己独立考虑这些问题。

2.这门课的主题是关于什么?

      本课程以操作系统的资源管理为主题,涉及进程管理,内存管理,文件管理,设备管理,操作系统接口五大子系统,贯彻机制与策略分离的设计理念,这一理念是计算机科学的基本设计理念,那么什么是机制,什么是策略,机制就是提供什么样的功能,策略就是如何使用或者实现这个功能,比如高考就是一种机制,而你去按高考的规则,参加考试就是一种策略,比如文件系统提供的read()就是一种机制,而你调用read()函数从磁盘读取数据就是一种策略,如此等等。那么,操作系统课程讲授的是机制还是策略呢?以讲机制为主,大家能把这些机制应用起来,就会有较大的收获,如果你能设计出一种机制,那就是较大的创新了。

3.学习这门课可以获得什么?特别是对自己有什么帮助和应用。

1)有助于编写并发程序

       不管你在学习Java,Python,还是C++,尤其是go语言,线程的并发控制是难点,而语言本身对并发的讲解限于具体函数的介绍,而并不能深入到原理,其根本的一些概念,比如临界区,临界资源,同步和互斥等实际上是在操作系统这里要学通透的,但求本,不愁末。

 2)有助于培养系统性思维

       操作系统从资源管理的角度来对计算机的软硬件资源进行管理,软硬件协同和管理是操作系统的设计的主战场,因此必须有系统性的思维,对软硬件都有较为深入的认识,比如CPU管理(也就是进程管理),内存管理都是要在对相关硬件深入了解的基础上,应用系统软件的整体性思维进行设计,使得软硬件真正的协同起来,这是一个非常复杂的系统工程。

3)有助于培养系统性能分析的能力

       目前计算机的应用领域非常广泛,人工智能,区块链,云计算以及大数据,底层都是操作系统的支持,尤其大都是开源的操作系统Linux。在实际应用中,会发现有很多性能问题有待解决,而且这些问题的解决,最终都会追溯到操作系统层面,因此,操作系统知识和技能的掌握是系统性能优化的基石。

4.这门课有什么特色和亮点?

1)打破操作系统应试教学的死记硬背局面,激发学生学习操作系统的主动性和热情。

       本课程从一开始就强调要打破应试教育,并从每一次作业的创新性设计着手,作业的完成是一环套一环,没有现成的答案,通过大作业的训练,让概念落地有声。

2)通过以点带面,提升学生综合应用知识分析和解决问题的能力。

        操作系统的知识点比较零散,如何把这些知识点穿起来,课程在各个实验环节进行了缜密的设计,具体实验参考实验楼操作系统实验,后续实验都是对前一次的迭代,在不断加强中,把前面的知识综合应用起来,使得学生逐渐具备了解决复杂问题的能力。 

3) 提高了学生积极主动解决问题的能力,创新意识增强。

        在作业和实验的设计上,都给学生留有一定的空间,比如,每次作业每个人必须自己提2个问题,挑战性实验有一定的陡度,必须查阅大量资料才能完成。学生的创新意识得到加强。

4)提升了团队合作和沟通能力。

       很多作业和实验都是以小组为单位完成并互相批改作业,每个组都起有自己的名字和口号,组名和口号将伴随本组一学期。每个人在组中都有明确的角色和责任,这使得学生在学习过程中感受企业文化和担当。


课程大纲
第一章 概述
1.1 课程概述
1.2 操作系统的定义、功能及特征
1.3 操作系统发展
1.4 操作系统的结构
1.5 操作系统的运行环境
1.6 Linux内核及可加载内核模块编程
1.7 动手实践-内核模块的插入删除
第二章 操作系统接口
2.1 操作系统接口概述
2.2 Linux系统调用机制
2.3 动手实践-系统调用日志收集系统
第三章 进程管理
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进程控制块中的字段
第四章 进程调度与死锁
4.1 调度队列模型和调度准则
4.2 调度算法以及举例
4.3 Linux进程调度概述
4.4 死锁的引入和预防
4.5 死锁的避免
第五章 存储器管理
5.1 存储管理概述
5.2 内存连续分配方式
5.3 分页存储管理
5.4 快表和两级页表
5.5 分段储存管理
5.6 虚拟存储管理
5.7 请求分页存储管理
5.8 页面置换算法
5.9 动手实践--可执行文件与进程虚拟地址空间
5.10 企业一线工程师解惑内存管理的八大问题
第六章 设备管理
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 动手实践--编写字符设备驱动程序
第七章 文件系统
7.1 文件系统概述
7.2 文件的逻辑结构
7.3 外存的分配方式
7.4 文件的目录管理
7.5 文件存储空间的管理
7.6 文件的共享和保护
7.7 Linux文件系统概述
App 下载
关注我们