操作系统中的几种算法

操作系统中的几种算法

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

该算法会先调度优先级高的进程,处理完当前进程后,会计算队列中的进程的优先级,先调度优先级高的进程。

优先权=(等待时间+要求服务时间)/要求服务时间

由于等待服务时间与服务时间之和就是系统对改作业的影响时间,故该优先级又相当于响应比Rp

Rp=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间


轮转调度算法(RR)

**基本原理:**在时间片轮转调度算法中,系统根据先来先服务的原则,将所有的就绪进程排成一个就绪队列,并且每隔一段时间产生一次中断,激活系统中的进程调度程序,完成一次处理机调度,把处理机分配给就绪队列队首进程,让其执行指令。当时间片结束或进程执行结束,系统再次将cpu分配给队首进程。

**切换时机:**若时间片尚未结束,进程已经执行结束,立即激活调度程序,将其从就绪队列中删除,然后调度就绪队列的队首进程执行,此时开启新的时间片,将计数器重置归零;若时间片已经结束,进程尚未结束,立即激活进程调度程序,将未执行完的进程放到就绪队列的队尾。

进程名ABCDE
到达时间01234
服务时间43424
时间片q=1完成时间151216917
周转时间151114613
带权周转时间3.753.673.533.33

多级反馈队列调度算法

调度机制:

(1)系统中设置多个就绪队列并赋予不同的优先级,第一个队列最高,依次降低,同时优先级越高的队列,时间片就越小。比如第i+1队列的时间片长度比第 i 个的时间片长一倍。

(2)每个队列都采用FCFS算法。

多级反馈队列调度算法描述:

1、进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。

2、首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。

3、对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。

4、在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。

我们来看一下该算法是如何运作的:

假设系统中有3个反馈队列Q1,Q2,Q3,时间片分别为2,4,8。

现在有3个作业J1,J2,J3分别在时间 0 ,1,3时刻到达。而它们所需要的CPU时间分别是3,2,1个时间片。

1、时刻0 J1到达。于是进入到队列1 , 运行1个时间片 , 时间片还未到,此时J2到达。

2、时刻1 J2到达。 由于时间片仍然由J1掌控,于是等待。 J1在运行了1个时间片后,已经完成了在Q1中的2个时间片的限制,于是J1置于Q2等待被调度。现在处理机分配给J2。

3、时刻2 J1进入Q2等待调度,J2获得CPU开始运行。

4、时刻3 J3到达,由于J2的时间片未到,故J3在Q1等待调度,J1也在Q2等待调度。

5、时刻4 J2处理完成,由于J3,J1都在等待调度,但是J3所在的队列比J1所在的队列的优先级要高,于是J3被调度,J1继续在Q2等待。

6、时刻5 J3经过1个时间片,完成。

7、时刻6 由于Q1已经空闲,于是开始调度Q2中的作业,则J1得到处理器开始运行。

8、时刻7 J1再经过一个时间片,完成了任务。于是整个调度过程结束。

从上面的例子看,在多级反馈队列中,后进的作业不一定慢完成。
————————————————
此处借鉴文章
原文链接:https://blog.csdn.net/yangquanhui1991/article/details/47446151


最早截止时间优先算法(EDF)

该算法是根据任务的截止时间来确定任务的优先级,任务的截止时间越早,其优先级越高,具有最高优先级的任务排在队列的队首。该算法既可应用于抢占式调度方式中,也可用于非抢占式调度方式中。

非抢占式调度方式用于非周期实时任务

任务1最先到达最先开始执行
任务1执行过程中任务2、任务3到达,由于任务3截止时间更早,其优先级愈高,所以执行完任务1后执行任务3
任务3执行过程中任务4到达,由于任务4截止时间更早优先级愈高,任务3执行完后执行任务4,
最后执行任务2
抢占式调度方式用于周期实时任务

周期任务A,周期时间20ms,处理时间10ms
周期任务B,周期时间50ms,处理时间25ms

为了说明通常的优先级调度不能适用于实时系统,该图增加了固定优先级调度的第二行和第三行
**第二行中:**固定A,B优先级,且优先级A>B;
先执行A1,A1执行完后执行B1;
B1执行了10ms后被A2抢占;
A2执行完后继续执行B2;
B2执行10ms后被A3抢占;
A3执行完后已经到达B2的截止时间了,但B2总共执行了20ms,很明显低于所需处理时间25ms。
**第三行中:**固定A,B优先级,且优先级B>A;
先执行B1,B1执行完后已经过了A1的截止时间,可知A1根本就没能执行到。
第四行中:使用最早截止时间优先算法
A1截止时间早于B1截止时间,先执行A1;
A1执行完执行B1,B1执行10ms后A2到达;
A2截止时间早于B1截止时间,先执行A2;
A2执行完执行B1,B1执行10ms后A3到达;
B1截止时间早于A3截止时间,继续执行B3;

在此例中,利用最早截止时间优先算法可以满足系统的要求。

————————————————
此处借鉴文章
原文链接:https://blog.csdn.net/Cap220590/article/details/102762190


最低松弛度优先算法(LLF)

该算法根据任务的紧急程度来确定任务的优先级,越紧急,越优先。

任务的松弛度=必须完成时间-该任务的运行时间-当前时间

在实现该算法时,系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在前面

  • 周期性任务A,要求每20ms执行一次,执行时间为10ms;
  • 周期性任务B,要求每50ms执行一次,执行时间为25ms;

松弛度:

​ t=20,A2=40-10-20=10,B1=50-15-20=15

​ t=30,A2=40-10-30=0,B1=50-5-30=15,此时A的松弛度优先,切换到A运行

​ t=50,A3=60-10-50=0,B2=100-25-50=25

​ t=60,A4=80-10-60=10,B2=100-20-60=20

​ t=70,A4=0,B2=20,此时A4松弛度为零,抢占B2的处理机,调度A4执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn-唯一

谢谢爸爸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值