操作系统-作业与作业调度(四)

一、先来先服务(FCFS)调度算法

二、短作业优先(SJF)调度算法

三、优先级(PSA)调度算法

四、高响应比优先调度算法

五、举例说明


一、先来先服务(FCFS)调度算法

先来先服务(first-come first-served,FCFS)是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程。然后把它放入就绪队列。

当在进程中调度中采用FCFS算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后,进程调度程序才将处理机分配给其它进程。

顺便说明,FCFS算法在单处理机系统中已很少作为主调度算法,但经常把它与其它调度算法相结合使用,形成一种更为有效的调度算法。例如,可以在系统中按进程的优先级设置多个队列,每个优先级一个队列,其中每一个队列的调度都基于FCFS算法。

二、短作业优先(SJF)调度算法

短作业优先(short job first,SJF)调度算法是以作业的长短来计算优先级,作业越短,其优先级越高作业的长短是以作业要求的运行时间来衡量的。SJF算法可以分别用于作业调度和进程调度。在把短作业优先调度算法用于作业调度时,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行。

短作业优先算法的缺点:

(1)必须预知作业的运行时间。在采用这种算法时,要先知道每个作业的运行时间。即使是程序员也很难准确估计作业的运行时间,如果估计过低,系统就可能按估计的时间终止作业的运行,但此时作业并未完成,故一般都会偏长估计。

(2)对长作业非常不利,长作业的周转时间会明显地增长。更严重的是,该算法完全忽视作业的运行,可能使作业等待时间过长,出现饥饿现象。

(3)在采用SJF算法时,人——机无法实现交互

(4)该调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能得到及时处理。

三、优先级(PSA)调度算法

对于先来先服务调度算法,作业的等待时间就是作业的优先级,等待时间越长,优先级越高。对于短作业优先调度算法,作业的长短就是作业的优先级,作业所需运行的时间越短,其优先级越高。但上述两种优先级都不能反映作业的紧迫程度。

在优先级调度算法(priority-scheduling algorithm,PSA)中,则是基于作业的紧迫程度的,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。这样就可以保证紧迫性作业优先运行。优先级调度算法可作为作业调度算法,也可作为进程调度算法。当把该算法用于作业调度时,系统是从后备队列中选择若干个优先级最高的作业装入内存。

四、高响应比优先调度算法

在批处理系统中,FCFS算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而SJF算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。

高响应比优先算法是如何实现的呢?如果我们能为每个作业引入一个动态优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可描述为:

由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比Rp。据此,优先又可以表示为:

由上式可以看出:①如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而类似于SJF算法,有利于短作业。②当要求服务的时间相同时,作业的优先权又决定于其等待时间,因而该算法又类似于FCFS算法。③对于长作业的优先级,可以随等待时间的增加而提高,当其等待时间足够长时,也可获得处理机。因而该算法实现了较好的折中。当然在利用该算法时,每次要进行调度之前,都需要先做响应比的计算,显然会增加系统开销。

五、举例说明

周转时间:指从作业被提交给系统开始,到作业完成为止的这段时间间隔(作业周转时间)。

服务时间=估计运行时间

完成时间=开始执行时间+服务时间

周转时间=完成时间-到达时间

带权周转时间=周转时间/服务时间

平均周转时间=周转时间/进程数

平均带权周转时间=带权周转时间/进程数

1.请给出下表作业利用HRRN(高响应比优先调度算法)的调度顺序(以十进制进行计算)计算各作业的周转时间,给出计算分析过程。

作业号提交时间估计运行时间(小时)
18.02.0
29.01.2
39.50.5
410.20.3

分析过程:

(1)  8.0作业1到,作业1运行,10.0完成。

(2)10.0作业2、作业3均已到达,计算响应比分别为:R2=(1.0+1.2)/1.2=1.83,R3=(0.5+0.5)/0.5=2,R2<R3,因此作业3先运行,10.5作业3运行完毕。

(3)10.5作业2、作业4均已到达,重新计算作业响应比:R2=(1.5+1.2)/1.2=2.25,R4=(0.3+0.3)/0.3=2,R2>R4,因此作业2先运行,11.7作业2运行完毕。

(4)作业4是最后一个要运行的作业,11.7作业4到,12.0调度作业4执行完毕。

周转时间:

作业1周转时间=10.0-8.0=2.0
作业2周转时间=11.7-9.0=2.7
作业3周转时间=10.5-9.5=1.0
作业4周转时间=12-10.2=1.8

2.填表计算采用FCFS、SJF的平均周转时间和平均带权周转时间(以十进制进行计算),并在下面给出计算分析过程。

作业号提交时间估计运行时间(小时)开始运行时刻完成时刻周转时间带权周转时间平均周转时间平均带权周转时间
FCFSSJFFCFSSJFFCFSSJFFCFSSJFFCFSSJFFCFSSJF
18.02.08.08.010.010.02.02.01.01.02.051.653.31.875
29.01.210.010.811.212.02.23.01.832.5
39.50.511.210.011.710.52.21.04.42
410.20.311.710.512.010.81.80.662

图片显示(手机端观看最佳):

分析过程:

对于先来先服务(FCFS)调度算法:

①作业1先提交先运行,从8.0开始,10.0结束;

②10.0作业2、作业3均已到达,作业2先来先运行,从10.0开始,11.2结束;

③11.2作业3、作业4均已到达,作业3先来先运行,从11.2开始,11.7结束;

④作业4是最后一个要运行的作业,从11.7开始,12.0结束。

对于短作业优先(SJF)调度算法:

①作业1先提交先运行,从8.0开始,10.0结束;

②10.0作业2、作业3均已到达,作业3比作业2时间短,作业3先运行,从10.0开始,10.5结束;

③10.5作业2、作业4均已到达,作业4比作业2运行时间短,作业4先运行,从10.5开始,10.8结束;

④作业2是最后一个要运行的作业,从10.8开始,12.0结束。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值