通常将作业或进程归入各种就绪或阻塞队列。有的算法适用于作业调度,有的算法适用于进程调度,有的两者都适应。
1.先来先服务(FCFS, First Come First Serve)
先来先服务(FCFS, First Come First Serve)是最简单的调度算法,按先后顺序进行调度。
1. FCFS算法
按照作业提交或进程变为就绪状态的先后次序,分派CPU;
当前作业或进程占用CPU,直到执行完或阻塞,才出让CPU(非抢占方式)。
在作业或进程唤醒后(如I/O完成),并不立即恢复执行,通常等到当前作业或进程出让CPU。最简单的算法。
2. FCFS的特点
比较有利于长作业,而不利于短作业。
有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
2. 轮转法(Round Robin)
轮转法(Round Robin)是让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。
1. 轮转法
Ø 将系统中所有的就绪进程按照FCFS原则,排成一个队列。
Ø 每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。
Ø 在一个时间片结束时,发生时钟中断。
Ø 调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。
Ø 进程可以未使用完一个时间片,就出让CPU(如阻塞)。
Ø
2. 时间片长度的确定
Ø 时间片长度变化的影响
² 过长->退化为FCFS算法,进程在一个时间片内都执行完,响应时间长。
² 过短->用户的一次请求需要多个时间片才能处理完,上下文切换次数增加,响应时间长。
Ø 对响应时间的要求:T(响应时间)=N(进程数目)*q(时间片)
Ø 就绪进程的数目:数目越多,时间片越小
Ø 系统的处理能力:应当使用户输入通常在一个时间片内能处理完,否则使响应时间,平均周转时间和平均带权周转时间延长。
3. 多级反馈队列算法(Round Robin with Multiple Feedback)
多级反馈队列算法时间片轮转算法和优先级算法的综合和发展。
优点:
² 为提高系统吞吐量和缩短平均周转时间而照顾短进程。
² 为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程。
² 不必估计进程的执行时间,动态调节。
1. 多级反馈队列算法
² 设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。
² 新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则按“时间片轮转”算法调度直到完成。
² 仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。
²
2. 几点说明
² I/O型进程:让其进入最高优先级队列,以及时响应I/O交互。通常执行一个小时间片,要求可处理完一次I/O请求的数据,然后转入到阻塞队列。
² 计算型进程:每次都执行完时间片,进入更低级队列。最终采用最大时间片来执行,减少调度次数。
² I/O次数不多,而主要是CPU处理的进程。在I/O完成后,放回优先I/O请求时离开的队列,以免每次都回到最高优先级队列后再逐次下降。
² 为适应一个进程在不同时间段的运行特点,I/O完成时,提高优先级;时间片用完时,降低优先级。
4. 优先级法(Priority Scheduling)
优先级算法(Priority Scheduling)是多级队列算法的改进,平衡各进程对响应时间的要求。适用于作业调度和进程调度,可分成抢先式和非抢先式。
1. 静态优先级
作业调度中的静态优先级大多按以下原则确定:
由用户自己根据作业的紧急程度输入一个适当的优先级。
由系统或操作员根据作业类型指定优先级。
系统根据作业要求资源情况确定优先级。
进程的静态优先级的确定原则:
按进程的类型给予不同的优先级。
将作业的情态优先级作为它所属进程的优先级。
2. 动态优先级
进程的动态优先级一般根据以下原则确定:
根据进程占用有CPU时间的长短来决定。
根据就绪进程等待CPU的时间长短来决定。
5.最短作业优先法(SJF, Shortest Job First)
短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);这是对FCFS算法的改进,其目标是减少平均周转时间。
1. SJF算法
对预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。
2. SJF的特点
(1) 优点:
²比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间;
² 提高系统的吞吐量;
(2) 缺点:
²对长作业非常不利,可能长时间得不到执行;
² 未能依据作业的紧迫程度来划分执行的优先级;
²难以准确估计作业(进程)的执行时间,从而影响调度性能。
3. SJF的变型
² “最短剩余时间优先”SRT(Shortest Remaining Time)(允许比当前进程剩余时间更短的进程来抢占)
² “最高响应比优先”HRRN(Highest Response Ratio Next)(响应比R = (等待时间 + 要求执行时间) / 要求执行时间,是FCFS和SJF的折衷)
6. 最高响应比优先法(HRN,Highest Response_ratio Next)
最高响应比优先法(HRN)是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。
响应比R定义如下: R =(W+T)/T = 1+W/T
其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随着它等待时间的增加,W / T也就随着增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRN方式时其吞吐量将小于采用SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。
5.5 算法评价
上一节中,我们介绍了几种常用的作业和进程调度算法以及响应的调度性能衡量标准。本节主要利用解析技术从数学上分析几种主要调度方法的性能。
5.5.1 FCFS方式的调度性能分析
设处理机或系统资源为服务器,一个进程或一个作业为享受该服务器服务的顾客。当这些顾客按FCFS方式排队享受服务的系统模型:
这里,我们假定该系统模型中只有一个服务器S。设新顾客到达等待队列的时间与系统的当前状态、以前的顾客到达时间都无关.也就是新顾客到达系统的时间是服从泊松分布的。
则在稳态条件下,系统内不存在顾客的概率为 ,而系统内存在顾客的概率为 。系统内顾客的算术平均值是:
我们把上述按FCFS方式排列和调度,并只有一个服务器的系统称为M/M/1系统。第一个字母M表示顾客到达时间间隔是指数分布,具有马尔可夫性质,第二个字母M表示从服务器离开的顾客的时间间隔服从指数分布,具有马尔可夫性质,第三个字母1表示只有一个服务器。
设响应时间R为从顾客到达等待队列后开始到离开服务器的时间,利用Little结果,可以求出M/M/1系统的平均响应时间 : 。平均响应时间和 的关系图如图 (5.9)
由图5.9可以看出,M/M/1系统的服务性能是由 决定的。如果它趋近1,则响应时间急剧增大,系统性能变差。而当它小于1/2时,等待队列中为空的可能性较大.因为平均响应时间小于平均服务时间的2倍。
下面我们来看看M/M/1系统对短作业或短进程的影响。
设短作业的到达率和服务率分别为 ,长作业的到达率和服务率为 ,且二者都服从泊松分布。
则FCFS调度策略时有响应时间R为:
其中: 。
由于 中包含了 ,所有作业的平均响应时间相同,从而,短作业在系统中的驻留平均时间与长作业的驻留时间相同,
这对短作业是不利的。
5.5.2 轮转法的调度性能分析
设时间片为q,服务时间平均值为1/ ,每个顾客平均需要k个时间片。
这看上去好像在平均响应时间方面,轮转法和FCFS调度方式上变化不大。但事实上,在等待队列中享受过k次时间片服务的顾客的响应时间是:
也就是说,响应时间与服务时间成正比。从而,所需服务时间短的顾客的响应时间将会小于所需服务时间长的顾客的响应时间。因此,轮转法在响应时间上要优于FCFS调度方式。
5.5.3 线性优先级法的调度性能分析
线性优先级调度策略(SRR)是介于FCFS方式和轮转法之间的一种调度策略。SRR方式把新到达的顾客首先送入等待室休息一段时间后,再送到等待服务队列。
SRR方式时,则响应时间是:
如果 ,即顾客的服务时间由其平均服务时间相等的话,则FCFS方式,SRR方式,轮转法方式的平均响应时间的关系是:
Rfc(k)=Rrr(k)=Rsr(k).
当然,对需要服务时间短的顾客来说,有 ,而对于需要服务时间长的顾客来说,则有 。从而,对服务时间短的顾客其响应时间:
Rrr <Rsr <Rfc
而对于服务时间长的顾客来说,其响应时间则为:
Rrr >Rsr >Rfc
上面只是从响应时间的角度对几种常见的调度策略进行了评价分析,除了响应时间之外,CPU利用率也是评价调度性能的另一个标准。