操作系统的常见调度算法

1.先来先服务调度算法(FCFS)

特性:相对其他调度算法最简单、具有非抢占性、不可剥夺、可用于作业调度和进程调度。

使用特点:用于长作业,不利于短作业(对于SJF(短作业)的高响应比);利于CPU繁忙型作业,不利于I/O繁忙型作业。

运行:(1)在作业调度中,系统按照作业到达的先后次序来进行调度,或者说它会优先考虑在系统中等待时间最长的作业,无需考虑作业执行时间。(2)在进程调度中采用FCFS调度算法时,每次调度都是从就绪的进程队列中选择一个最先进入该队列的进程,并为之分配处理机,使之投入运行。在该进程一直运行到完成或发生某事件而阻塞后,进程调度程序才会将处理机分配给其他进程。

FCFS调度算法会从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,并为它们分配资源和创建进程,最后,把它们放入就绪进程。

总结:先来的先给它服务。

注解:这个算法虽然简单并且公平,但是总体来讲,对长作业或者长进程有利,而且效率比较低,特别是当一个进程需要多次请求I/O的时候,会对后面排队的进程造成很大的影响

例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用FCFS算出各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

进程到达时间运行时间
p107
p224
p341
p454

周转时间 = 完成时间(运行时间+开始时间) - 到达时间                                                           

p1=7-0=7; p2=11(7+4)-2=9; p3=12(7+4+1)-4=8; p4=16(7+4+1+4)-5=11                                         

带权周转时间 = 周转时间 / 运行时间                                                                                                 

p1=7/7=1;  p2=9/4=2.25;  p3=8/1=8;  p4=11/4=2.75                                                                         

等待时间 = 周转时间 - 运行时间                                                                                                         

p1=7-7=0;  p2=9-4=5; p3=8-1=7;  p4=11-4=7   

 

如果是又有计算、又有I/O操作的进程,其等待时间就是周转时间 - 运行时间 - I/O操作的时间。                                                                              

平均周转时间 = (7+9+8+11)/4 = 8.75                                                                                           

平均带权周转时间 = (1+2.25+8+2.75)/4=3.5                                                                               

平均等待时间 = (0+5+7+7)/4 = 4.75

2.短作业优先算法(SJF)

运行:SJF是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。               SPF(短进程优先)是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给               它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。

特点:(1)SJF对长作业不利,会导致作业/进程饥饿。(2)不可保证紧迫作业会被及时处理,                非抢占。 (3)作业长短根据用户的估计执行时间决定,该算法不一定能做到短作业优先                 调度。(4)使用SJF时,无法实现人机交互。

注意:SJF调度算法的平均等待时间、平均周转时间最少。

例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用SJF算出各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

进程到达时间运行时间
p107
p224
p341
p454

短作业/进程优先调度算法:每次调度时选择当前已到达且运行时间最短的作业/进程

调度顺序为:p1 ->  p3  ->  p2  ->  p4

周转时间 = 完成时间(运行时间+开始时间) - 到达时间                                                                       

 p1=7-0=7; p3=8(7+1)-4=4; p2=12(7+1+4)-2=10; p4=16(7+1+4+4)-5=11                                         

带权周转时间 = 周转时间 / 运行时间                                                                                                 

p1=7/7=1;  p3=4/4=1;  p2=10/4=2.5;  p4=11/4=2.75                                                                         

等待时间 = 周转时间 - 运行时间                                                                                                         

p1=7-7=0;  p3=4-1=3; p2=10-4=6;  p4=11-4=7                       

平均周转时间 = (7+4+10+11)/4 = 8                                                                                           

平均带权周转时间 = (1+4+2.5+2.75)/4=2.56                                                                               

平均等待时间 = (0+3+6+7)/4 = 4

3.高响应比优先调度算法(HRRN)

 特点:(1)是对FCFS调度算法和SJF调度算法的综合平衡;(2)当作业的等待时间相同时,要求服务时间越短,其响应比越高,适合短作业; (3)要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,适合先来先服务;(4)对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其相应比便可升到很高,从而也可获得处理机。克服了饥饿状态,兼顾了长作业。

 响应比变化规律:                                                                                                                                       响应比Rp = (等待时间 + 要求服务时间) / 要求服务时间   

         响应比Rp = 响应时间 / 要求服务时间                                                                     

例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用HRRN算出各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

进程到达时间运行时间
p107
p224
p341
p454

0时刻:只有p1到达就绪队列,p1上处理机                                                                                       

7时刻:(p1主动放弃CPU):就绪队列中有p2(响应比=(5+4) /4=2.25)、p3((3+1)/1=4)、                          p4((2+4) /4=1.5)                                                                                                                 

8时刻(p3完成):p2(2.5)、p4(1.75)                                                                                               

12时刻(p2完成):就绪队列中只剩下p4

4.轮转调度算法

特点:分时系统中常用的进程调度算法时基于时间片的轮转(RR)调度算法;抢占式; 

运行:在轮转(RR)法中,系统将所有的就绪进程按FCFS策略排成一个就绪队列。系统可设置每隔一定时间(如30 ms)便产生一次中断,去激活进程调度程序进行调度,把CPU分配给队首进程,并令其执行一个时间片。当它运行完毕后,又把处理机分配给就绪队列中新的队首进程,也让它执行一个时间片。
在RR调度算法中,应在何时进行进程的切换,可分为两种情况:① 若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中队首的进程运行,并启动一个新的时间片。② 在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将把它送往就绪队列的末尾。
 

例题:q = 1和q = 4时进程的周转时间如下

cb579aa3e20a41cf8d13e7dd418240f0.png

 

解析如下:
以q=4为例,当进程A到达时间=0,服务时间=4,正好是一个时间片的时间q。所以完成时间=4,周转时间=完成时间-到达时间=4,带权周转时间=周转时间/提供服务的时间=4/4=1。
为了更好理解,我们看继续进程B:由于进程B在A执行一个时间片之后,所以B进程的等待时间=4,一个新的时间片到来,进行执行进程B,而进程B的服务时间为3,小于一个时间片,因此进程B可以在一个时间片内结束,而且可以提前激活调度程序。B进程的完成时间=等待时间+服务时间=4+3=7,周转时间=完成时间-到达时间=7-1=6,带权周转时间=周转时间/提供服务的时间=6/3=2。

对于时间片的计算:

计算表达式:q=R/Nmax                                       

q:时间片长度      Nmax:就绪队列要求的最大进程数量        R:系统对响应时间的要求  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值