1
引言
操作系统是计算机科学与技术专业的专业核
心课,该课程对其他专业课程起着承上启下的作
用.课程主要内容 涵盖进 程管理、进程调度与死锁、
存储器管理、设备管理、文件管理、操作系统接口
等
[1]
.由于操作系统课 程理论性强,知识点庞杂从而
导致学生对本门课程的学习热情明显不高. 基于
此,笔者尝试通过剖析 Linux 内核源码去阐述进程
调度的运行机制
[2]
,采用探索启发式教学方法,让学
生充分感知真实操作系统软件的设计思路,真正让
理论落地于实际,从而提高学生对操作系统课程的
学习热情.
在 Linux 内核版本的选 择 上, 最新稳 定版
(4.15.15)由于代码量太过庞大(1400 万行)
[3]
,学生
很难梳理其架构与脉络,对代码剖析更是无从下
手,由此产生了畏惧和排斥.0.11 版发行于 20 世纪
90 年代,虽年代久远但具备了现代 操作系 统的基
本功能,如多用户多任务、中断并发、同步互斥等,
而代码量也只有一万四千行(不包含注释).为 了深
入理解进程调度算法以及增强学生对内核源码解
读的代入感,笔者最终选择 0.11 版 Linux 内核作为
操作系统课程的教学资源.
针对课程设置,笔者结合多年的操作系统教学
经验,将进程调度教学环节规划为四大部分:一、进
程调度概述,让学生对进程调度概念有一个大致的
了解;二、进程调度步骤宏观解读,通过引入 Linux
实例展示其进程调度的基本步骤;三、进程调度机
制微观探索,通过分析 schedule 函数源代码,让同
学了解真实操作系统中进程调度算法的核心内容;
四、调度算法优化实践,通过改进源代码,提升操作
系统内核多进程调度质量,使学生对进程调度算法
的解读得到升华.
2
进程调度概述
进程调度的基本内容,包括进程调度的基本概
念、进程调度的目标、进程调度算法以及各种算法
的应用
场景.进程调度的主要算法有:先来先服务
算法、短作业优先算法、静 / 动 态优先 级算法、时间
片轮转法等. 评估算法的指标有 CPU 的运行效率、
进程运行公平性、响应及时性、内存吞吐量等几方
面因素.
上述提及的这些目标不可兼备,在讲授这些指
标性能取舍问题时,笔者利用各种真实操作系统进
行列举,如 UNIX 采用动态优先数调 度、BSD 采用
多级反馈队列调度、Windows 采用抢先式多任务调
度等
[4]
.通过举例,让学生对调度算法不同的应用场
景有一个感性的认识.
3
进程调度步骤宏观解读
为了让同学了解 0.11 版 Linux 内核进程调度
的运行机理,在宏观上笔者基于主要源文件对进程
调度的步骤进行解读,如图 1 所示:
Vol.35 No.1
Jan.2019
赤 峰 学 院 学 报( 自 然 科 学 版 )
JournalofChifengUniversity(NaturalScienceEdition)
第 35 卷第 1 期
2019 年 1 月
基于 Linux 内核的操作系统进程调度教学方法研究
邱煜炎
!蚌埠医学院 图文信息中心" 安徽 蚌埠
233000
#
摘要$进程管理是操作系统课程的核心"而进程调度是进程管理理论的教学重点
.
如果不能将理论与
真实操作系统相结合"学生很难掌握各种调度算法的应用背景和运行原理
.
笔者通过剖析
Linux
内核源码"
采用探索启发式教学方法"引入进程调度应用于
Linux
操作系统的真实案例"使学生真切感知实际操作系
统中进程调度的运行机理
.
并且通过修改内核源代码改进调度算法" 使学生加强对调度算法理论的深入理
解"从而提高学生对操作系统课程学习的积极性及分析解决问题的能力
.
关键词$操作系统%进程调度%
Linux
内核%教学方法
中图分类号
:G642.0
文献标识码
:A
文章编号
:16 73-260X(2019)01-0063-03
收稿日期$
2018-10-17
基金项目$蚌埠医学院自然科学基金面上项目&
BYKY1762
#
63- -
ChaoXing