操作系统(进程管理三)

十、几种调度算法

0、调度算法的学习思路

①、算法思想

②、算法规则

③、算法应用的范围(应用于调度作业调度还是进程调度)

④、是抢占式算法还是非抢占式算法?

⑤‘、优缺点

⑥、是否会导致饥饿(某进程长期得不到服务)

1、先来先服务(FCFS)算法

FCFS调度算法是一种最简单的调度算法,它既可用于作业调度,又可用于进程调度。在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。

在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到运行完成或因某种原因而阻塞时才释放处理机。

算法思想:先来先服务的“公平思想”

算法规则:按照到达的先后顺序进行服务。

用于作业/进程调度:作业调度

非抢占式的算法

优缺: 公平、算法实现简单

缺点: 排在长作业(进程)后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好。即,FCFS算法对长作业有利,对短作业不利

不会导致饥饿

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

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

算法思想:追求最少的等待时间

算法规则:最短的作业优先得到服务

用于作业/进程调度:作业调度,也可用于进程调度

非抢占式的算法(最短剩余时间优先算法SRTN是抢占式算法)

优点:SJF算法能够可以获得更少的平均等待时间和平均周转时间。

缺点:不公平,对于长作业不利,短作业不利。

注:也有说SJF算法能够获得最少的平均等待时间和周转时间,不完全算错

会导致饥饿

3、高响应比优先(HRRN)算法

高响应比优先调度算法主要用于作业调度,是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑了每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。

响应比公式:

算法思想:优先考虑服务时间较短且等待时间较长的作业

算法规则:

用于作业/进程调度:进程调度

非抢占式的算法

优点:集合了短作业优先算法和先来先服务算法二者的优点。

不会导致饥饿

 4、时间片轮转(RR)算法

时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按FCFS策略排成一个就绪队列,调度程序总是选择就绪队列中的第一个进程执行,但仅能运行一个时间片,如50ms。在使用完一个时间片后,即使进程并未运行完成,它也必须释放出(被剥夺)处理机给下一个就绪进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。

算法思想:公平轮流的服务每一个进程

算法规则:按照进程到达的顺序分配时间片,若在规定时间内未完成任务,则强行剥夺,并放置在就绪队列队尾。()

用于作业/进程调度:进程调度

抢占式的算法

优点:公平;响应快;可应用于分时操作系统 

缺点: 开销可能较大;不区分任务的紧急程度

不会导致饥饿

注:时间片太大容易增大进程的响应时间;太小会导致频繁切换进程增加开销,所以一般认为切换时间片开销占比不得超过1%。

5、优先级调度算法

优先级调度算法既可用于作业调度,又可用于进程调度。该算法中的优先级用于描述作业的紧迫程度。在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最高的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。

算法思想:公平轮流的服务每一个进程

算法规则:根据事先编辑好的算法,对每一个的优先级进行实时排序(优先级信息存储在PCB里),根据优先级高低进行排序,先执行优先级高的程序。

用于作业/进程调度:进程调度

可以是抢占式的、也可以是非抢占式的

优点:可以及时处理一些紧急情况;灵活安排进程和作业的执行顺序

缺点: 可能会导致饥饿

会导致饥饿

6、多级反馈队列调度算法

多级反馈队列调度算法集合了前边几种算法的特点:

1)设置多个就绪队列,并为每个队列赋予不同的优先级。第1级队列的优先级最高,第2级队列的优先级次之,其余队列的优先级逐个降低。

2)赋予各个队列的进程运行时间片的大小各不相同。在优先级越高的队列中,每个进程的时间片就越小。例如,第i+1级队列的时间片要比第i级队列的时间片长1倍。

3)每个队列都采用FCFS算法。当新进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可撤离系统。若它在一个时间片结束时尚未完成,调度程序将其转入第2级队列的末尾等待调度;若它在第2级队列中运行一个时间片后仍未完成,再将它放入第3级队列……,依此类推。当进程最后被降到第n级队列后,在第n级队列中便采用时间片轮转方式运行。

算法思想:对于所有调度算法的一种折中平衡

算法规则:如上

用于作业/进程调度:进程调度

抢占式的算法,当优先级更高的队列中出现进程时,则会发生抢占机制,抢占已经分配的CPU资源

优点:集多家之长:先来的进程在优先级相同时优先得到服务;每个新到达的进程也会很快得到响应;短进程会在经历很少的等待时间后完成操作;不必估计进程的运算时间;

缺点: 可能会导致饥饿

会导致饥饿

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值