(一)课程导入(5分钟)
1. 问题引导:展示计算机系统中多个进程并发运行的场景图片或动画,提问学生“计算机如何合理地分配CPU资源给这些进程,以确保系统高效稳定运行?”引发学生思考,引出进程调度的概念。
2. 知识回顾:简要回顾进程的概念、状态及状态转换等相关知识,强调进程调度在进程管理中的重要作用,为后续讲解做好铺垫。
(二)知识讲解(30分钟)
1. 进程调度的基本概念(5分钟)
进程调度的定义和任务:讲解进程调度即处理机调度,其任务是控制、协调进程对CPU的竞争,按照一定算法使就绪进程获得CPU控制权。强调进程调度程序是操作系统的核心,直接负责CPU分配,可类比为交通警察指挥车辆(进程)使用道路(CPU)资源。
进程调度的主要功能:详细介绍保存现场、挑选进程和恢复现场这三个主要功能。保存现场如同记录运动员比赛暂停时的状态,以便后续恢复;挑选进程是根据调度算法从就绪队列中选择合适进程;恢复现场则是让被选中进程能接着之前的状态继续运行。
进程调度的时机:讲解在创建进程、任务完成、等待资源、中断发生、运行到时等情况下会进行进程调度。以餐厅服务员为顾客服务为例,创建进程类似新顾客到来,任务完成如同顾客用餐结束离开,等待资源好比顾客等待上菜,中断发生就像突然有紧急情况需要服务员处理,运行到时如同顾客用餐时间到了需离开餐桌,这些情况都可能导致服务员(调度程序)重新安排服务顺序(调度进程)。
两级和三级调度模型:展示两级和三级调度模型的示意图,讲解两级调度模型包含作业调度和进程调度,作业调度从后备作业队列选择作业进入内存,进程调度从就绪队列选择进程执行;三级调度模型在此基础上增加中级调度,用于将暂时不能运行的进程调至外存,腾出内存空间给更需要的进程。通过比喻,两级调度模型如同学校招生(作业调度)和班级分配座位(进程调度),三级调度模型则类似学校因教室紧张将部分班级暂时安排到备用教室(中级调度)。
2. 进程调度算法的设计思路(5分钟)
调度策略的选择:讲解调度策略选择需考虑设计目标、公平性、均衡性、统筹兼顾、优先级和开销等因素。以分配奖学金为例,设计目标可能是鼓励优秀学生(提高系统性能),公平性要求依据成绩等合理标准分配(按进程需求分配资源),均衡性类似要兼顾不同专业学生(平衡不同类型进程的需求),统筹兼顾即综合考虑各种因素(综合权衡调度算法的各项指标),优先级好比对有特殊贡献学生优先考虑(对重要进程优先调度),开销则类似奖学金评选过程的成本(调度算法执行的时间和资源消耗)。
性能评价标准:介绍CPU利用率、吞吐量、周转时间、就绪等待时间和响应时间等性能评价标准。以工厂生产线为例,CPU利用率如同生产线设备的使用时长占总时长的比例,吞吐量类似生产线在一定时间内生产的产品数量,周转时间好比产品从进入生产线到完成生产的总时长,就绪等待时间就像产品在生产前等待原材料或设备的时间,响应时间类似生产线对紧急生产任务的响应速度。
3. 经典进程调度算法(10分钟)
先来先服务法(FCFS):讲解FCFS算法在作业调度和进程调度中的工作方式,即按照作业或进程到达的先后顺序进行调度。通过实例计算作业的周转时间和带权周转时间,分析该算法对长作业有利、对短作业不利,对CPU繁忙型作业有利、对I/O繁忙型作业不利,且效率较低的特点。以银行排队办理业务为例,先来的顾客先办理,长业务顾客(长作业)等待时间相对较短,而短业务顾客(短作业)可能等待很久,对于需要频繁使用CPU(长时间计算)的业务(CPU繁忙型作业)较友好,对于需要频繁与外界交互(I/O繁忙型作业)的业务不太友好。
时间片轮转法(RR):介绍RR法主要用于分时系统,进程按时间片轮流使用CPU,时间片用完后进入就绪队列末尾。通过实例展示不同时间片大小对调度性能的影响,讲解时间片大小的确定因素。以课堂轮流发言为例,每个学生有固定的发言时间(时间片),发言时间过长(时间片太长)会导致后面的学生等待过久,发言时间过短(时间片太短)则会频繁切换学生发言,浪费时间在切换上。确定时间片大小需要考虑学生人数(就绪队列进程数目)、问题复杂程度(进程的转换时间)、老师的反应速度(CPU运行指令速度)以及整体课堂节奏(系统的响应时间)等因素。
优先级法:讲解优先级法根据进程优先级进行调度,分为非抢占式和抢占式,以及内部和外部确定优先级的方式,还有静态和动态优先级的概念。以医院急诊为例,病情严重的患者(高优先级进程)优先得到治疗,这是抢占式优先级法;若病情严重程度在治疗过程中不会改变(静态优先级),或根据治疗情况动态调整(动态优先级)。内部确定优先级可依据患者的生命体征等(可度量的量),外部确定优先级可能根据患者身份等(操作系统以外的标准)。
短作业优先法和最短剩余时间优先法:讲解短作业优先法从后备队列挑选运行时间最短的作业,能降低平均等待时间和提高吞吐量,但对长作业不利且无法保证紧迫作业及时处理;最短剩余时间优先法是其抢占式变形。以快递公司处理包裹为例,先处理重量轻、体积小(运行时间短)的包裹(作业),可以加快整体处理速度,但会让大包裹(长作业)等待时间过长;如果在处理过程中,有新的更轻更小的包裹(剩余时间更短的作业)到来,就优先处理它(抢占式),这就是最短剩余时间优先法。
多级队列法和多级反馈队列法:介绍多级队列法根据作业特性将作业放入不同队列,每个队列有自己的调度算法,队列间采用固定优先级抢占式调度;多级反馈队列法在其基础上加“反馈”措施,新进程先入高优先级队列,未完成则降入下一级队列。以学校分年级管理为例,多级队列法如同不同年级(队列)有不同的管理方式(调度算法),且高年级(高优先级队列)有优先活动权;多级反馈队列法类似如果低年级学生(低优先级队列进程)表现优秀可升入高年级(高优先级队列),若高年级学生(高优先级队列进程)表现不佳则降入低年级(低优先级队列)。
4. 其他进程调度算法(5分钟)
公平共享调度:讲解公平共享调度基于进程组或用户组进行调度,根据用户权值分配系统资源,目标是保证公平共享。以宿舍分配水电费为例,公平共享调度类似根据每个宿舍成员的使用量(用户权值)来分摊费用,保证每个成员的付出和使用成正比,确保公平性。
保证调度:介绍保证调度的目标是保证每个进程享用CPU的时间为1/n(n为进程总数),与轮转调度不同,它不依赖固定时间片分配。以分配家务任务为例,保证调度类似平均分配家务任务给每个家庭成员,不一定要按照固定顺序(轮转)来分配,只要保证每个成员承担相同比例的任务量即可。
彩票调度:讲解彩票调度算法是概率调度,给进程分发彩票,随机抽取决定获得CPU的进程,可通过多发彩票让特定进程获得更多CPU时间,且能防止进程饥饿。以抽奖活动为例,每个进程如同参与者,持有不同数量的彩票(分配的彩票数),抽奖(调度)时持有彩票的进程有机会获得奖品(CPU资源),持有彩票越多中奖(获得CPU时间)概率越大,且每个进程都有彩票(至少一张)就都有机会中奖,避免一直不中奖(饥饿)。
5. 操作系统调度算法实例(5分钟)
BSD多级反馈队列法:介绍BSD UNIX系统采用多级反馈队列法,在每个优先级队列中采用轮转方法,每秒重新计算进程优先级并进行调度决策。以公司员工绩效评估为例,公司将员工(进程)按不同绩效等级(优先级队列)分组,每个组内员工(进程)轮流接受任务(轮转),定期(每秒)重新评估员工绩效(计算进程优先级),根据评估结果调整员工分组(调度决策),以确保高效员工(高优先级进程)能得到更多机会,同时低绩效员工(低优先级进程)也有机会提升。
UNIX SVR4调度:讲解UNIX SVR4使用的调度算法为实时进程、内核模式进程和分时进程设置不同优先级,增加可抢占的静态优先级调度器和可抢占点。以机场航班调度为例,实时进程如同紧急救援航班(最高优先级),内核模式进程类似重要的公务航班(次高优先级),分时进程好比普通民航航班(最低优先级)。可抢占点如同机场跑道的特定区域,在这些区域可以安全地调整航班起降顺序(调度进程),以保证紧急航班优先起降,同时合理安排其他航班。
Linux抢占式调度:介绍Linux系统采用“抢占式优先级”调度方式,针对不同类别进程提供三种调度策略,讲解调度时机和调度算法。以交通
路口的交通调度为例,Linux的调度方式如同交警根据车辆类型(不同类别进程)和紧急程度(优先级)指挥交通。调度时机类似当车辆(进
程)主动停车(调用系统调用进入睡眠状态)、离开路口(进程终止)、长时间占用路口(连续运行时间过长)、有更紧急车辆到来(唤醒更有资格运行的进程)、车辆改变行驶优先级(进程改变调度策略或降低自身优先级)时,交警(调度程序)会重新安排车辆通行顺序(调度进程)。调度算法则像交警选择最需要通过路口的车辆(优先级最高且在内存的进程),如果有紧急消防车(实时进程),则优先让其通过。
Windows调度:讲解Windows实现可抢占式调度器,具有灵活的优先级系统,优先级分为实时和可变两段,每级包含轮转调度方法,部分优先级可动态变化。以游戏大厅中不同游戏房间(进程)的调度为例,实时优先级类的游戏房间(进程)如同热门竞技游戏房间,有固定的优先级且永远不会改变,玩家(线程)在里面按顺序(轮转队列)进行游戏;可变优先级类的游戏房间(进程)类似普通休闲游戏房间,开始时玩家(线程)有初始优先级,在游戏过程中(线程生命周期中),根据玩家表现(线程活动)优先级可能上升或下降。
(三)课堂讨论(5分钟)
1. 提出问题:提出具有启发性和讨论价值的问题,如“在实际的多任务操作系统中,如何综合运用多种调度算法来提高系统性能?”“对比不同操作系统的调度算法,分析它们在公平性和效率方面的差异。”“在实时调度中,如何避免优先级逆转问题对系统的影响?”等。
2. 组织讨论:将学生分成小组进行讨论,鼓励学生积极发表观点,分享自己的理解和想法。教师在各小组间巡视,参与讨论,适时给予引导和启发,帮助学生拓展思路,深入分析问题。
3. 总结点评:各小组代表发言,分享小组讨论结果。教师对各小组的讨论情况进行总结和点评,肯定学生的正确观点,纠正错误认识,补充完善知识点,进一步加深学生对进程调度算法的理解和应用能力。例如,在讨论多种调度算法综合运用时,引导学生思考如何根据系统中进程的特点和需求,在不同阶段选择合适的调度算法,如在系统启动初期使用先来先服务法初始化部分进程,在系统稳定运行时采用时间片轮转法保证交互性,对于关键任务采用优先级法确保其及时执行。
(四)课堂总结(3分钟)
1. 知识回顾:结合PPT或板书,与学生一起回顾本节课所学的重点知识,包括进程调度的基本概念、调度算法的设计思路、经典和其他进程调度算法、操作系统调度算法实例等。以思维导图的形式呈现知识框架,帮助学生梳理知识点之间的联系,加深记忆。
2. 强调重点:强调本节课的重点和难点内容,如经典调度算法的特点和性能分析、操作系统调度算法的具体实现方式、实时调度算法中的关键问题等,提醒学生在课后复习时重点关注。对学生在课堂上的表现进行总结和鼓励,激发学生继续学习操作系统相关知识的积极性。
(五)课后作业(2分钟)
1. 书面作业:布置书面作业,要求学生完成PPT中的复习题,通过书面作业巩固本节课所学的知识点,加深对进程调度算法的理解和应用。例如,让学生计算不同调度算法下进程的周转时间、带权周转时间等性能指标,分析特定场景下选择某种调度算法的原因,对比不同调度算法的优缺点等。
2. 拓展作业:让学生查阅资料,了解当前操作系统调度算法的最新发展趋势,如在大数据处理、云计算等场景下的调度算法创新,并撰写一篇简短的报告。培养学生自主学习和信息收集、分析的能力,拓宽学生的知识面,使学生能够关注学科前沿动态。