第一章 1.4操作系统作业调度和进程调度

1.操作系统两级调度

前言

包括长期调度和短期调度。长期调度是作业调度,以小时为单位,短期调度是进程调度,以毫秒为单位。现代操作系统不产生长期不被调度和经常被调度的进程。进程调度是操作系统对进程就绪队列的调度。高性能计算机中的任务调度是任务怎样划分,哪一个任务安排到哪一个处理机上执行。它们是不同的概念。 应注意的是进程调度与程序按顺序执行没有关联,所以进程调度看似无序,实际上每个程序都在按语句顺序执行,而且进程调度的效率和公平原则也始终起作用。
进程调度产生的原因是多进程或多线程竞争CPU。在就绪队列中,根据调度算法完成选择最佳进程工作的程序称为调度程序(scheduler)。适合进程调度的方法也适合线程调度。现在计算机速度很快,远超过从前的计算机,因此调度程序在PC机上并不重要。但是转向网络服务器,多个客户机请求进程经常竞争CPU,因此操作系统的调度功能再次变得至关重要。在这一节我们主要学习FIFO,短作业优先,优先级调度,分时系统轮转法,多级队列等调度算法。


1.4.1操作系统进程调度和作业调度的基本概念 

一、周转时间Turnaround Time

对一个程序而言,从提交开始到完成为止的这段时间间隔称为周转时间。周转时间是批处理系统中衡量调度性能的一个重要指标。对批处理系统中的一个作业而言,它包括:(1)作业在外存后备队列上等待进入内存的时间,外存包括磁盘;(2)在就绪队列上等待获得处理机的时间,或者在PC机上是等待CPU的时间,可能多次等待;(3)在CPU上的执行时间;(4)等待I/O操作完成的时间。
对一个分时系统的进程而言,它的周转时间是从第一次进入就绪队列开始,到进程运行完毕所经历的时间,期间可能多次被调度。然而通常情况是进程在一次调度中执行完毕。
周转时间的计算公式见下。
1.平均周转时间
如果作业i提交给系统的时刻是ts,完成时刻是tf,则该作业的周转时间ti为:
ti = tf - ts
实际上,它是作业在系统里的等待时间与运行时间之和。
为了提高系统的性能,要让若干个用户(n个)的平均作业周转时间最小。平均作业周转时间 :
T = (Σti) / n
    2.平均带权周转时间
如果作业i的周转时间为ti,所需运行时间为tk,则该作业的带权周转时间
wi=ti /tk=1+( ti - tk)/tk
ti是等待时间与运行时间之和,可称为作业响应时间,( ti - tk)是等待时间,所以带权周转时间总大于1。带权周转时间又称为响应比,在最高响应比优先算法中介绍。
平均作业带权周转时间
W = (Σwi) / n    

二、响应时间Response Time

分时系统衡量调度性能的一个重要指标。所谓响应时间,是指从提交一个请求开始到首次产生相应为止(显示出结果)的一段时间间隔。提交请求包括:用户输入命令,运行程序。响应时间包括:(1)把请求信号从键盘传输到计算机的时间;(2)计算机对请求进行处理的时间;(3)再将响应送回终端的时间。
响应时间应注意均衡性,发传真和简单请求的响应时间不同,因此用户的接受程度不同。操作系统应及时响应用户的简单请求,而对发传真等复杂请求可用较多时间响应。
响应时间是网络系统软件要求较高的一个指标,例如:商业银行城市综合业务网络系统中,银行网点的客户机要求在规定的时间内办理一笔银行业务,例如:5秒钟,否则客户久等将造成对银行信誉的不良影响。响应时间在网络报文中用超时表示,超时则规定重发。因此超时必须避免,否则造成网络传输效率过低的现象,丧失客户参与,则没有经济效益。    

三、剥夺方式Preemptive Mode


    当一个进程正在运行时,操作系统根据某种规定,在时钟中断发生时或者有进程的优先级更高时,将执行进程获得的处理机,分配给新的最佳进程。所根据的规定有:(1)优先级算法。优先级高的进程比优先级低的执行进程更有资格分配处理机而运行;(2)短进程优先。短进程到达后比在执行的长进程更有效率而获得处理机;(3)时间片到。分时系统的一个时间片用完后,进程调度程序重新调度。    

四、吞吐量Throughout


    操作系统每小时完成的作业数量。把所有因素都考虑进去以后,吞吐量是50的操作系统优于值为40的操作系统。操作系统吞吐量大,但是平均周转时间不一定最小。例如:有许多短作业和长作业的一个作业组,若总是先运行短作业而不运行长作业,则吞吐量出色。但是长作业的周转时间将很差,因此平均周转时间也许很长,这并不是一个好的选择。    

五、CPU利用率


批处理系统的一个度量标准。但是并不是一个好的度量参数。吞吐量是操作系统每个小时可完成多少作业,周转时间是完成作业需要多少时间,这两个性能指标更有价值。
CPU利用率=CPU有效工作时间/CPU总的运行时间,
CPU总的运行时间=CPU有效工作时间+CPU空闲等待时间。
现在的多核系统CPU利用率不足,原因是线程数量少。可应用操作系统的解决方法,例如:区分进程性质是CPU忙还是I/O忙等等。    

六、作业和进程


作业是操作系统的任务实体,进程是完成任务的执行实体;没有作业任务,进程无事可干,没有进程,作业任务没法完成。批处理操作系统应用作业概念,大量作业在后援存储器中等待到内存,再以建立进程的方式执行,操作系统管理作业的运行过程而用户不能干涉;多道程序设计创建进程概念,包括分时,实时,交互等系统中采用进程为基本单位,用户能用命令等方式管理进程。
作业由“作业注册”程序负责为作业建立作业控制块JCB,称为作业进入系统,保存在后援存储器上,并把它加入后备作业队列中,等候作业调度进程调度。而作业被作业调度程序选中,分配内存等必要资源后,才建立一组相应进程,称为作业进入了运行状态。当作业正常完成后,“终止作业”程序收回JBC和资源。

1.4.2 调度算法


进程调度算法服务操作系统的功能目标。作业调度算法和进程调度算法考虑的阶段和情况都不同,然而有些算法类似,因此放到一起。    

一、先进先出FIFO算法

按照进程到达就绪队列的时间顺序分配CPU。调度时根据队列的特征,选就绪队列队第一个进程投入执行。FIFO调度算法是非剥夺的,只有进程运行到不能运行下去而阻塞或者完成,才释还处理机。
在批处理系统,作业的先来先服务调度算法FCFS的平均作业周转时间与作业提交的顺序有关。
例题1:三个作业同时到达系统并立即进入调度。
作业名/所需CPU时间:作业1/28,作业2/9,作业3/3。FCFS算法的平均作业周转时间为:
T=(28+(9+28)+(3+(28+9)))/3=35。
第一个作业最先执行,第2个作业的等待时间是28,运行时间是9,第三个作业也如此。注意不能忽略等待时间。
应知道作业等待时间是等待从外存调入内存的时间,而不是等待在CPU上运行的时间。这是作业调度和进程调度的不同,作业调度选择作业调度到内存,进程调度在内存中选择CPU上执行的进程。
例题2:有三个进程P1,P2和P3,它们先后(但几乎同时)进入就绪队列。CPU执行期分别是21,6和3个时间单位。按FIFO调度算法,平均周转时间为:
T=(21+27+30)/3=26。
FCFS调度算法对短作业不利,例如作业3,但是易于实现,表面公平,却服务质量不佳。作业3等了很久,三个作业可视为同时达到,因此先执行作业3能提高进程调度效率。         

二、短作业优先

SJF调度算法属于作业调度算法,将作业从外存后备队列调入到内存,以进入系统的作业所要求的CPU时间为衡量标准,每次选取预计CPU时间最短的作业投入运行。主要弱点是可能出现长作业久等过期,和估计CPU时间没有考虑等待CPU时间。
例题3:四个作业同时到达系统并进入调度。作业名/所需CPU时间:作业1/9,作业2/4,作业3/10,作业4/8。
因此根据所需CPU时间,SJF作业调度顺序为作业2、4、1、3,则:(1)平均作业周转时间T =(4+12+21+31)/4= 17,
(2)平均带权作业周转时间W= (1+1+4/8+1+12/9+1+21/10)/4=1.98。
若采用FCFS调度算法,则:
(1)平均作业周转时间T =(9+13+23+31)/4=19,
(2)平均带权作业周转时间W = 2.51。
SJF的平均带权作业周转时间比FCFS要小而且吞吐量更高,因此效率更高;SJF平均作业周转时间表示的整体性能比FCFS略有优势,所以更公平。然而对长作业,例如作业3,却存在让权等待现象,似乎有欠考虑。
应注意的是,SJF调度算法要求每一个调度阶段包括的多个进程应该在同一时期内到达。
例题4:进程的最短CPU运行期优先调度算法SCBF,在就绪队列中有四个进程P1,P2,P3和P4,它们的下一个执行期分别是16,12,4和3个单位时间。在SCBF算法进行调度时,进程调度顺序是P4,P3,P2和P1,平均周转时间是16个单位时间。但是若用FIFO算法调度,平均周转时间近似为28。从效率上看,在4个进程中下一个最佳选择是P4,所有其它进程等待时间最少,因此SCBF效率优于FIFO;然而SCBF对要求执行时间长的进程P1,尽管最先到达却最后一个调度。但是整体公平度,不能仅仅看等待在CPU上执行的时间,还要看是否某一类进程长时间不被选择调度。
在此基础上,计算机操作系统界的研究人员推出了最高响应比优先调度算法。    

三、最高响应比优先算法HRRF.

HRRF是介乎FIFO和SJB之间的调和算法,是作业调度的一种。既考虑作业在后备队列的等待时间,又考虑它们的运行时间;既考虑短作业的调度效率,又照顾长作业的等待时间不能过长。在性能上,对多个进程整体的调度得到了完善提高。
作业进入系统后的等待时间与估计运行时间之比称为响应比,有定义:
响应比 =1+已等待时间/估计运行时间
公式有两项,第二项的(估计)运行时间使短作业容易得到较高响应比,而已等待时间让长作业在等待时间足够长后,也能获得足够高的响应比。响应比实际是带权周转时间。
前面的例题都是作业或者进程同时到达,从例题5开始,一组作业或进程的到达不再要求同时。
例题5.四个作业的作业号-到达系统时间/所需CPU时间:作业1-0/20,作业2-5/15,作业3-10 /5,作业4- 15/ 10。
1* FCFS调度算法
调度顺序为作业1、2、3、4。平均作业周转时间和平均带权周转时间的表格方法见下,在熟练掌握后可不再使用表格,提高思考能力。
表1-2-1  FCFS调度算法(在不同时间到达的条件下)
作业 到达时间 运行时间 开始时间 完成时间 等待时间 周转时间
1 (1) 0 20 0 20 0 20
2 (2) 5 15 20 35 15 30
3 (3) 10 5 35 40 25 30(短作业)
4 (4) 15 10 40 50 25 35(短作业)
平均周转时间 T=(20+30+30+35)/4=28.75
平均带权周转时间 W=(1+1+1+1+5+1+2.5)/4=3.125
2* SJF调度算法
当第一个作业到达时,没有其它作业到达,因此先执行。在执行结束后,作业2,3,4都到达了,SJF调度顺序为作业1、3、4、2。
表1-2-2  SJB调度算法(在不同时间到达的条件下)
作业 到达时间 运行时间 开始时间 完成时间 等待时间 周转时间
1 (1) 0 20 0 20 0 20
2 (4) 5 15 35 50 30 45(长作业)
3 (2) 10 5 20 25 10 15
4 (3) 15 10 25 35 10 20
平均周转时间 T=(20+15+20+45)/4=25
平均带权周转时间 W=(1+1+2+1+1+1+2)/4=2.25
3* HRRF调度
调度顺序为作业1、3、4、2,平均作业周转时间T=26.25, 平均带权作业周转时间W=2.46。
表1-2-2  HRRF调度算法(在不同时间到达的条件下)
作业 到达时刻 运行时间 开始 完成 等待时刻 周转时间 响应比
1(1) 0  20 0 20 0 20 1
2(3)  5  15 25 40 20 35 1+4/3
3(2)  10  5 20 25 10 15 1+2
4(4) 15 10 40 50 25 35 1+2.5
平均周转时间            T=(20+35+15+35)/4=26.25
平均带权周转时间         W=(1+1+4/3+3+3.5)/4=2.46
三个算法比较可知,平均带权周转时间FIFO最长,HRRF次之,而SJF最低;带权周转时间也是如此。因此总体性能FIFO最低,完成一组进程的调度所需时间最长,而SJF效率最高;整体公平性HRRF最周到。
作业调度从此后结束。进程调度考虑的指标不再是周转时间,而是平均等待时间,即所有进程等待处理机执行的时间总和。

发布了42 篇原创文章 · 获赞 24 · 访问量 13万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章