310 likes | 441 Views
§5.5 调度算法. 1. 目标:. 每天运行尽可能多的作业 —— 选择短作业 ( 吞吐量 ). 效率 :. 使处理机保持“ 忙” —— 选择大运输量 (I/O 少 ). 使 I/O 保持“ 忙” —— 选大 I/O. 公平性 —— FCFS 对所有进程公平. 2. 调度算法的衡量. 尽量缩短周转时间. 周转时间 : 作业提交 作业完成之间的时间. (1) 作业平均周转时间:. 其中 n —— 作业流中的作业数. T i —— 第 i 个作业周转时间. T i = t ci - t si.
E N D
§5.5 调度算法 1.目标: • 每天运行尽可能多的作业 —— 选择短作业(吞吐量) 效率: • 使处理机保持“ 忙” ——选择大运输量(I/O少) • 使I/O保持“ 忙” ——选大I/O • 公平性 —— FCFS 对所有进程公平
2.调度算法的衡量 尽量缩短周转时间 周转时间: 作业提交作业完成之间的时间 (1) 作业平均周转时间: 其中 n —— 作业流中的作业数 Ti —— 第i个作业周转时间 Ti= tci- tsi 其中 tsi —— 作业i提交时间 tci —— 作业i完成时间
(2) 平均带权周转时间: 其中: tRi —— 作业i的运行时间 wi —— 作业i的带权周转时间
补充: 一、引起进程调度的原因 (1) 时间片到 (按时间片运行) (2) 进程提出I/O请求––– 阻塞,调新进程 (3) 进程挂起 (4) 执行P操作而信号量不足,而被阻塞 (5) 来了更高优先权 (可被剥夺) (6) 进程运行完了
3.单道批处理作业调度算法及衡量 (1) FCFS 先来先服务 先来先服务算法是最简单的调度方法。其基本原则是按照作业到达系统或进程进入就绪队列的先后次序来选择。FCFS 策略是属于不可抢占策略。
作业 提交时间 运行时间 开始时间 完成时间 周转时间 带权周转时间 ts(时) tR(时) tB(时) tC(时) ti(时) Wi(Z) 1 2 3 4 8.00 8.50 9.00 9.50 2.00 0.50 0.10 0.20 8.00 10.00 10.50 10.60 10.00 10.50 10.60 10.80 2.00 2.00 1.60 1.30 6.90 1.00 4.00 16.00 6.50 27.50 平均周转时间 T=6.90/4=1.725(小时) 平均带权时间 W=27.5/4=6.875
从表面上来说,对于所有进程和作业都是公平的,并且一个作业的等待时间是可以预告估计的。另一方面来说这个方法也不见得公平,当一个大作业先到达系统时就会使许多小作业等待很长时间,提高了平均的作业周转时间,会使许多小作业的用户不满。从表面上来说,对于所有进程和作业都是公平的,并且一个作业的等待时间是可以预告估计的。另一方面来说这个方法也不见得公平,当一个大作业先到达系统时就会使许多小作业等待很长时间,提高了平均的作业周转时间,会使许多小作业的用户不满。 先来先服务算法已很少作主要的调度策略,常被结合在其它的调度策略中使用。例如,在使用优先级作为调度策略的系统中,往往对许多具有相同优先级的进程,使用先来先服务的原则。
(2) 优先级调度算法 按照进程的优先级大小来调度,使高优先级进程得到优先的处理的高度策略称为优先级调度算法。 但在许多采用优先级调度的系统中,通常采用动态优先数策略。进程的优先级不是固定的,往往随许多因素的变化而变化。尤其随作业(进程)的等待时间、已使用的处理机时间或其它资源的使用情况而定。
优先级调度方法又可分为: 非抢占的优先级调度法:即一旦某个高优先级的进程占有了处理机,就一直运行下去,直到由于其自身的原因而主动让出处理机时(任务完成或等待事件)才让另一高优先级进程运行。 可抢占的优先级调度法:任何时刻都严格按照高优先级进程在处理机上运行的原则进行进程的调度。
例:某些I/O繁忙型的进程,它们大部分时间是在等待I/O操作完成,对于这一类进程,当它们要求CPU运行时,应立即给予满足,以便让它们开始下一个I/O操作和其它计算型的进程并行工作。否则,这些I/O繁忙型的进程将长时间占据存储器,降低系统并行度。例:某些I/O繁忙型的进程,它们大部分时间是在等待I/O操作完成,对于这一类进程,当它们要求CPU运行时,应立即给予满足,以便让它们开始下一个I/O操作和其它计算型的进程并行工作。否则,这些I/O繁忙型的进程将长时间占据存储器,降低系统并行度。
一个行之有效的算法是在进程每次获取CPU运行后,重新指定该进程的优先级为 1/f。这里的f表示进程上次在CPU上实际运行时间与时间片之比。例如,若时间片为100毫秒,进程上次在CPU上的实际运行时间为2毫秒,则它的优称级为50;若它上次实际运行时间为50毫秒,则它的优级为2。由于I/O繁忙型的进程每次在CPU上运行的时间很短,依此算法,它们的优先级将较高,从而优先得到服务。
(3) 时间片轮转法 轮转法是最简单又最公平的进程调度算法,因此也是使用得最多的算法之一。 轮转法分配给每一进程在CPU上运行的时间长度,称之为时间片。诸进程以此时间片为限制,轮流使用CPU。如果时间片到期时,进程尚未完成运行,调度程序将剥夺它正在使用的CPU,转让给另一进程使用;如果进程在使用完它的某一时间片之前已经完成运行或已阻塞,CPU也立即转让给另一进程使用。
轮转法在实现上也很容易,调度程序只要维护一个先进先出的队列数据结构,将就绪进程排队,每当一个进程的时间片运行完后,便把它从原来的队头位置移到队尾,然后把现在处于队头位置的进程调度到CPU上运行。时间片的计数则可通过定时中断实现。轮转法在实现上也很容易,调度程序只要维护一个先进先出的队列数据结构,将就绪进程排队,每当一个进程的时间片运行完后,便把它从原来的队头位置移到队尾,然后把现在处于队头位置的进程调度到CPU上运行。时间片的计数则可通过定时中断实现。
轮转法的性能取决于时间片长度的选择,进程间的CPU上的切换需要时间。若一次切换时间为5毫秒,时间片长度选择为20毫秒,则20%的CPU时间花费于进程调度程序。为了改善CPU的利用率,可以增大时间片,比如说为500毫秒,此时CPU利用率达99%之多,但每一进程的响应时间也因之增大。若就绪队列中共有10个进程,则每一进程需要等待5秒钟,才能在CPU上服务一次。轮转法的性能取决于时间片长度的选择,进程间的CPU上的切换需要时间。若一次切换时间为5毫秒,时间片长度选择为20毫秒,则20%的CPU时间花费于进程调度程序。为了改善CPU的利用率,可以增大时间片,比如说为500毫秒,此时CPU利用率达99%之多,但每一进程的响应时间也因之增大。若就绪队列中共有10个进程,则每一进程需要等待5秒钟,才能在CPU上服务一次。 通常来说,选择时间片为100毫秒左右比较适宜。
实际中,优先级算法常和轮转法结合使用,也就是按优先级将进程分组,组间采用优先级调度算法,而组内优先级相同的进程则按轮转法调度。显然,若优先级不动态地进行调整,则优先级低的就绪进程就可能饿死。实际中,优先级算法常和轮转法结合使用,也就是按优先级将进程分组,组间采用优先级调度算法,而组内优先级相同的进程则按轮转法调度。显然,若优先级不动态地进行调整,则优先级低的就绪进程就可能饿死。
时间q T = N ·q 就绪队列 二、轮转法 (Round Robin) 简单轮转法 分配给就绪队列,每一进程一个时间片(每一进程在CPU上运行的时间长度)轮流执行。
q足够大到每一进程执行完,FCFC (先到先服务) q适当 ––– 进程均匀执行 q太小 ––– 开销太大,有切换时间,CPU利用率低。例:切换t = 5ms, q = 20ms, 则CPU利率率80%,有20%花费在进程调度程序。 决定q大小因素:响应时间T (进程等待时间)、队列长度N、轮换时间 (切换时间)、CPU能力 (运算速度)。
例:上例中为改善CPU的利用率,可增大时间片,设q = 500ms,此时CPU利用率为99%之多,但每个P的相应时间也因而增大。若N = 10,则每个P的相应时间需等5秒,才能在CPU上服务一次。 考虑上述条件,选择时间片为100ms左右比较适宜。
固定周期轮转法 q为时间片, T为周期, N为进程数 固定T: 固定T,N q,开销减少
(4) SJF最短作业优先的调度算法 —— 要求运行时间最短的作业作为下一次服务的对象 对于上述作业流, 作业运行结束后, 后备作业表中已有作业2, 3, 4, 因为作业3要求运行时间最短, 故选3, 4, 2。
ts tR tB tc Ti Wi 1 2 3 4 8.00 8.50 9.00 9.50 2.00 0.50 0.10 0.20 8.00 10.30 10.00 10.10 10.00 10.80 10.10 10.30 2.00 2.30 1.10 0.80 6.20 1.00 4.60 11.00 4.00 20.60 T = 1.55 W=5.15 优: 比FCFS, T W 缺: 有的作业始终得不到运行
(5) 最短剩余时间优先调度算法 最短剩余时间优先调度算法是把最短作业优称算法使用于分时环境中的变型。其基本思想是让运行到作业完成时所需的运行时间最短的进程优先得到处理,其中包括新进入系统的进程。在最短作业优先策略中,一个作业一旦得到处理机就一直运行到完成(或等待事件)而不能被抢占(除非主动让出处理机)。而最短剩余时间优先策略是可以被一个新进入系统的,并且其运行时间少于当前运行进程的剩余运行时间的进程所抢占。
本策略的优点是可以用于分时系统,保证及时响应用户要求。缺点是系统开销增加,首先要保存进程的运行情况记录,以比较其剩余时间大小。其次,抢占本身也要消耗处理机时间。这个策略使短作业一进入系统就能立即得到服务,从而降低作业的平均等待时间。本策略的优点是可以用于分时系统,保证及时响应用户要求。缺点是系统开销增加,首先要保存进程的运行情况记录,以比较其剩余时间大小。其次,抢占本身也要消耗处理机时间。这个策略使短作业一进入系统就能立即得到服务,从而降低作业的平均等待时间。
(6) 响应比高者优先(HRN)算法 响应比 上题: 顺序1-3-2-4 1 2 3 4 8.00 8.50 9.00 9.50 2.00 0.50 0.10 0.20 8.00 10.10 10.10 10.60 10.00 10.60 10.10 10.80 2.00 2.10 1.10 1.30 6.50 1.00 4.20 11.00 6.50 22.7 T= 1.625 W= 5.675
响应比的计算: 第一步: 第二步:
(7) 多级队列调度 把进程按优先级分组,优先级最高的进程组中的进程每次在CPU上运行一个时间片t长度;优先级次之的进程组的进程每次运行二个时间片2t长度;优先级再次之的进程组的进程每次运行4个时间片4t长度,以此类推,进程每次运行完它的时间片后便降低一个优先级别,移至另一优先级的进程组中。
例如,若一个进程总共需运行100个时间片,初始时指定它在优先级最高的进程组中。因此,它很快就会在CPU上运行一个时间片,之后它从内存换出至辅存,优先级也降低一个级别,当它第二次有机会在CPU上运行时,它将运行2t,以后它将在CPU上运行的时间长度依次是4,8,16,32和64个t,最后一次运行时,只须64个t中的37个 t 就可完成。总共需在内存和辅存交换7次。比较单纯的轮转法,节省了93次交换时间;它获取CPU 的机会也越少(优先级越低),从而让出CPU 为那些运行时间短的交互式进程服务。
有些进程在启动运行时,需要较长的运行时间,但之后就变成了交互式进程,为了改善此类进程的响应时间,一些系统采用下列的策略。有些进程在启动运行时,需要较长的运行时间,但之后就变成了交互式进程,为了改善此类进程的响应时间,一些系统采用下列的策略。 每当系统从一个终端接收到一个回车键,便认为此终端的进程开始成为交互式进程,因此把属于此终端的进程送至优先级最高的进程组中。但随之带来的问题是一旦用户知道这一事实,就可能以假乱真都在自己的终端上频繁地击回车键 (使自己优先级最高)。
时间片到(就绪队列) 作业停下来 请求外设(阻塞队列) 4. 多道程序中的作业调度 前题: 采取轮转法进程调度, 各作业均分到一个时间片。
运行 请求I/O 时间片___ 其次选择 500ms 首要选择 低优先就绪 因等待I/O而阻塞 100ms I/O完成 高优先就绪 优先照顾了I/O量大的进程, 而对计算量大的进程也适当的照顾了。 总的来说可提高系统的资源利用率。
(i) 多道程序环境的影响 • 几个作业同时运行 (环境) • CPU等待时间少 (要求) • CPU进度(在给定时间间隔内CPU为作业做了多少工作量)