收藏 分享(赏)

操作系统0589934.ppt

上传人:dzzj200808 文档编号:3334612 上传时间:2018-10-14 格式:PPT 页数:37 大小:300KB
下载 相关 举报
操作系统0589934.ppt_第1页
第1页 / 共37页
操作系统0589934.ppt_第2页
第2页 / 共37页
操作系统0589934.ppt_第3页
第3页 / 共37页
操作系统0589934.ppt_第4页
第4页 / 共37页
操作系统0589934.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、第五章 CPU调度,2018/10/14,2,内容,基本概念 调度准则 调度算法,2018/10/14,3,基本概念,多道程序设计的目标:任何时候都有进程在运行,以使CPU利用率最高。 CPUI/O区间周期:进程执行由CPU执行和I/O等待周期组成。 进程执行从CPU周期开始,两个状态相互切换。,2018/10/14,4,CPU区间和I/O区间的交替序列,2018/10/14,5,CPU区间时间直方图,2018/10/14,6,CPU调度程序,调度程序从内存中就绪可执行的进程里选择一个,并为之分配CPU。 CPU调度在如下环境下发生: 1. 从运行状态切换到等待状态; 2. 从运行状态切换到就

2、绪状态; 3. 从等待状态切换到就绪状态; 4. 进程终止。 发生在1和4环境下的调度称为非抢占式调度。 其他环境下,称为抢占式调度。,2018/10/14,7,分派程序,分派程序用来将CPU的控制交给由短期调度程序所选择的进程。其功能包括: 切换上下文; 切换到用户模式; 跳转到用户程序的合适位置以重新启动这个程序。 分派延时 分派程序停止一个进程而启动另一个进程执行所要花费的时间。,2018/10/14,8,调度准则,CPU使用率:使得CPU尽可能忙。 吞吐量:一个时间单元内所完成进程的数量。 周转时间:从进程提交到进程完成的时间间隔。 等待时间:进程在就绪队列中等待所花时间之和。 响应时

3、间:进程从提交请求到产生第一响应的时间。是开始响应所需时间,而不是输出响应所需时间。,2018/10/14,9,最优化准则,CPU使用率最大化 吞吐量最大化 周转时间最小化 等待时间最小化 响应时间最小化,2018/10/14,10,先到先服务调度(FCFS),Process Burst TimeP1 24P2 3P3 3 假设进程按P1 , P2 , P3的顺序到达,得到如下Gantt图: 等待时间: P1 = 0; P2 = 24; P3 = 27 平均等待时间: (0 + 24 + 27)/3 = 17,2018/10/14,11,FCFS调度(续),假设进程按P2 , P3 , P1的

4、顺序到达,得到如下Gantt图:等待时间:P1 = 6; P2 = 0; P3 = 3 平均等待时间:(6 + 0 + 3)/3 = 3 比前例好得多。 如果短进程晚于长进程到达,就会产生护航效果(Convoy effect)。,2018/10/14,12,最短作业优先调度(SJF),每个进程与其下一个CPU区间段相关联。当CPU可用时,赋给具有最短后续CPU区间的进程。 两种策略: 非抢占式 一旦进程拥有CPU,它的使用权只能在该CPU区间结束后才让出。 抢占式 当一个新进程到达,它的CPU区间比当前正在执行的进程剩余的CPU区间要短,则新进程抢占CPU。这种策略又称为最短剩余时间优先调度(

5、SRTF)。 SJF是最优的 对于给定的一组进程,SJF算法的平均等待时间最小。,2018/10/14,13,非抢占式SJF调度例子,Process Arrival Time Burst TimeP1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4 SJF(非抢占式)平均等待时间 = (0 + 6 + 3 + 7) /4 = 4,2018/10/14,14,抢占式SJF调度例子,Process Arrival Time Burst TimeP1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4 SJF(抢占式)平均等待时间 = (9 + 1 + 0 +2) /4 = 3,

6、2018/10/14,15,下一个CPU区间的长度,只能预测其长度。 可以通过以前CPU区间长度的指数平均来预测。,2018/10/14,16,下一个CPU区间长度的预测,2018/10/14,17,指数平均的例子, =0 n+1 = n Recent history does not count. =1n+1 = tn Only the actual last CPU burst counts. If we expand the formula, we get: n+1 = tn+(1 - ) tn -1 + +(1 - )j tn -1 + +(1 - )n=1 tn 0 Since bo

7、th and (1 - ) are less than or equal to 1, each successive term has less weight than its predecessor.,2018/10/14,18,优先权调度,每个进程都有一个优先权(整数)与其相关联。 CPU被分派给优先权最高的进程(数值最小 优先权最高)。 抢占式 非抢占式 SJF调度是以下一个CPU区间为优先权的优先权调度。 问题:饥饿 低优先权的进程可能永远得不到执行。 解决方案:老化 视进程等待时间的延长而增加进程的优先权。,2018/10/14,19,优先权调度例子,Process Priorty

8、Burst TimeP1 3 10P2 1 1P3 3 2P4 4 1P5 2 5平均等待时间 = (6 + 0 + 16 + 18 + 1) / 4 = 10,2018/10/14,20,轮转法调度(RR),每个进程得到一小段CPU时间(时间片),通常为10-100ms。当时间片用完,进程被抢占并插入到就绪队列的末尾。 如果就绪队列有n个进程且时间片为q,那么每个进程会得到1/n的CPU时间,每个长度不超过q时间单元。每个进程必须等待CPU的时间不会超过(n 1)q个时间单元。 性能 q非常大 FIFO q相对于上下文切换的时间而言必须足够长,否则将导致系统开销过大。,2018/10/14,

9、21,RR调度例子 时间片=20,Process Burst TimeP1 53P2 17P3 68P4 24得到如下Gantt图:通常,RR调度的平均等待时间比SJF长,但有较好的响应性能。,2018/10/14,22,小的时间片增加了上下文切换开销,2018/10/14,23,周转时间随着时间片大小而改变,2018/10/14,24,多级队列调度,将就绪队列分成多个独立队列: 前台(交互式) 后台(批处理) 每个队列有自己的调度算法: 前台 RR 后台 FCFS 队列之间必须有调度。 固定优先权调度(例如,前台队列比后台队列具有绝对的优先权)。可能产生饥饿。 时间片 每个队列都有一定的CP

10、U时间,用于调度队列内的不同进程。例如,前台队列可以有80%的CPU时间用于在进程之间进行RR调度,而后台队列可以有20%的CPU时间以采用FCFS算法调度其进程。,2018/10/14,25,多级队列调度,2018/10/14,26,多级反馈队列调度,允许进程在队列之间移动,这种形式的老化可阻止饥饿的产生。 多级反馈队列调度程序可由下列参数来定义: 队列数量 每个队列的调度算法 用以确定进程何时升级到较高优先权队列的方法 用以确定进程何时降级到较低优先权队列的方法 用以确定进程在需要服务时应进入哪个队列的方法,2018/10/14,27,多级反馈队列调度例子,三个队列: Q0 时间片8ms

11、Q1 时间片16ms Q2 FCFS 调度 新作业进入FCFS的队列Q0,当它获得CPU,可以运行8ms。如果它在8ms内不能完成,将进入队列Q1。 在Q1内作业仍然作为FCFS调度,并且可以获得16ms的执行时间。如果它仍然不能完成,它将被抢占并移入队列Q2。,2018/10/14,28,多级反馈队列,2018/10/14,29,多处理器调度,如果有多个CPU,那么调度问题就相应的更为复杂。 主要讨论处理器功能相同(或同构)的系统。 负载分配。 非对称多处理器 只有一个处理器访问系统数据结构,减轻了数据共享的需要。,2018/10/14,30,实时调度,硬实时系统 需要在保证的时间内完成关键

12、任务。 软实时计算 要求关键进程比其他较弱进程拥有更高的优先权。,2018/10/14,31,分派延时,2018/10/14,32,算法评估,确定性建模法 采用特定预先确定的负荷,定义在给定负荷下每个算法的性能。 排队模型。 模拟。 实现。,2018/10/14,33,通过模拟来评估CPU调度算法,2018/10/14,34,Solaris 2调度,2018/10/14,35,Windows 2000优先级,2018/10/14,36,作业,1. 假设下列进程按下表的arrival time到达,每个进程需要执行的时间如burst time所示。请画出下列三种调度算法的Gantt图。a) 使用

13、FCFS调度 b) 使用非抢占式SJF调度 c) 使用抢占式SJF调度 d) 使用RR调度(q = 2),2018/10/14,37,作业(续),2. 假设下列进程在所指定的时刻到达等待执行。每个进程将运行所列出的时间量长度。在回答问题时,假设使用非抢占式调度算法,基于选择时你所拥有的信息做出决定。a. 当使用FCFS调度算法时,这些进程的平均周转时间是多少?b. 当使用SJF调度算法时,这些进程的平均周转时间是多少?c. SJF调度算法被认为能提高性能,但是注意在时刻0选择运行进程P1因为无法知道两个更短的进程很快会到来。计算一下如果在第一个时间单元CPU被置为空闲,然后使用SJF调度算法,计算这时的平均周转时间是多少?注意在空闲时,进程P1和P2在等待,所以它们的等待时间可能会增加。这个算法可以被认为是预知(future-knowledge)调度。3. P163 5.4,5.9,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报