【Linux】几种常见的进程调度

进程的调度算法

1.先来先服务调度算法(FCFS:firstcome first service)

先来先服务(FCFS)调度算法即可适用于作业调度,也可以适用于进程调度。当此算法在作业调度中时,它每次选取一个或多个最先进入该队列的作业,将它们调入内存,分配资源,创建进程,然后放入就绪队列。在进程调度中,就是每次选取就绪队列中最先进入该队列的进程,为之分配处理机,使它投入运行。只有该进程运行到结束或者被阻塞无法运行后才放弃处理机,调度算法选取下一个进程。FCFS算法简单易行,是一种非抢占式策略,但性能却不大好,因为在调用短进程并且对I/O资源调用平凡的进程时,按顺序进行会浪费处理机的资源。

2.短进程优先算法(SJF:Shortest Job First或SPN:ShortestProcess Next)

对预计“CPU执行期”最短的进程优先分配处理机,通常后来的短进程不抢先正在执行的进程。
该算法的优点在于:相比FCFS算法改善了CPU的平均周转时间,和进程的平均等待时间,提高系统的吞吐量。
该算法的缺点在于:长作业可能长时间都得不到处理机的使用权;未能依据进程的紧迫程度来划分进程的优先级;难以准确估计进程的执行时间。

3.时间片轮转算法(RR:Round Robin)

该算法的特性是让所有进程等待的时间和享受服务的时间都公平公正。具体过程是:

  • 按FCFS的排列方式将所有需要处理机资源的进程排序
  • 规定一个时间片长度,可以是几个ms到几百个ms
  • 选取队列中队首的进程,让它执行一个时间片长度的时间
  • 执行完毕之后将此程序放到队列的队尾,再次取新的队首进行上述操作
  • 注意:在执行时间片的过程中,进程可以随时因为某种原因(阻塞)退出

4.多级反馈队列算法(Round Robin with Multiple Feedback)

此算法可分为三步进行讲解:

  • 先创建N个队列,用来存储进程信息。每个队列都有自己的优先级,第一个队列优先级最高,下来是第二个队列,以此类推,第N个队列优先级最低。
  • 优先级不同的队列中的进程,运行的时间片长度也不同,第一个队列最短比如是i,第二个队列的时间片长度就是2i,以此类推。当一个进程需要执行时,先放到第一个队列的末尾,然后从第一个队列的队首开始提取进程分配处理机资源。提取到此进程时,运行本层时间片长度的时间,如果该进程没有运行完就把该进程放到第二个优先级队列的末尾等待被提取。
  • 只有当优先级高的队列空闲了,才会去下一个队列的队首提取进程。
  • 如果处理机正在运行后面第i个队列的进程,前面第一个队列插入了一个进程,这时会直接放弃正在运行的进程,将它插入到第i个队列的末尾,去运行新插入的优先级高的进程。

5.优先级算法(Priority Scheduling)

为了照顾紧迫进程,使之在进入系统后便获得优先处理,引入了优先级算法。可进一步把该算法分成如下两种:

  • 非抢占式优先权算法 :这种方式下,系统一旦把处理机分配给某进程后,一直要等到该进程运行完毕,或者阻塞。才能将处理机分配给下一个进程。
  • 抢占式优先权调度算法 :这种方式下,只要有进程比正在运行中进程的优先级高,就可以直接打断运行中的进程,系统给优先级高的进程分配处理机。

6.最高响应比优先法(HRN,Highest Response_ratio Next)

该算法是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。响应比R定义如下:
R =(W+T)/T = 1+W/T
其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随着它等待时间的增加,W / T也就随着增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRN方式时其吞吐量将小于采用SJF法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值