Linux---进程的调度算法

系统中的cpu资源是有限的,当同时有多个进程处于就绪状态,要竞争cpu资源时,操作系统就要负责完成分配资源的任务。在操作系统中,由调度程序来完成这一选择分配的工作,调度程序所使用的算法即是调度算法。
调度算法一般有以下几种:
一、 先来先服务算法(FCFS:First Come,First Served)
1> 算法原理: 依据进程进入就绪队列的先后顺序排列,谁先排队,就先执行谁,谁就先抢占CPU资源。
2> FCFS算法周转时间
示例:有3个进程,任务到达时间为12,3,3
这里写图片描述
从上述例子的对比可以看出:周转时间跟任务到达顺序有关。
3> 优点:易于理解且实现简单,只需要一个队列(FIFO),且相当公平
4>缺点:平均等待时间波动较大,(例如上述例子,短进程排在长进程后面,等待时间长),排的位置对算法的影响很大;IO资源和CPU资源的利用率较低(比如,有一个CPU密集型进程一直算,会导致IO闲置)。
二、 短作业优先算法(SJF:Shortest Job First)
1> 算法原理:短作业优先又称为“短进程优先”SPN(Shortest Process Next),它是选择就绪队列中执行时间最短的进程占用CPU进入运行状态。
2> 算法优点:相比FCFS 算法,该算法可改善平均周转时间和平均带权周转时间,缩短进程的等待时间,提高系统的吞吐量。
3> 缺点:连续的短进程会使长进程饥饿,无法获得CPU资源
三、 最高响应比优先算法(HRRN,Highest Response Ratio Next)
最高响应比优先法是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。而HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。这样,即使是长作业,随着它等待时间的增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。
1> 算法原理:选择就绪队列中响应比R值最高的进程进入运行状态,关注进程的等待时间
R = (W + S) / S,W:等待时间,S:执行时间
2> 优点:等待时间长的进程也会获得CPU资源,能够避免饥饿现象,兼顾了长短作业。
3> 缺点:每次都要计算响应比,开销大,适用于批处理系统。
四、 时间片轮转算法(RR,Round-Robin )
1> 算法原理:让就绪进程按照FCFS原则排成一个队列,将CPU资源分配给队首进程,让其执行一个时间片。在一个时间片结束时,发生时钟中断,调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程,进程可以未使用完一个时间片,就出让CPU(如阻塞)。 时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。
2> 优点:简单易行、平均响应时间短。
3>缺点:算法开销大,额外的上下文切换较费时,等待时间较长,适用于分时系统。
五、 多级反馈队列算法(Multilevel Feedback Queue)
1>算法描述:在系统中设置多个就绪队列,并为每个队列赋予不同的优先级 ,第一个队列优先级最高,其余队列优先级逐个降低。该算法为不同队列的进程所赋予的执行时间片的小也不同,优先级愈高,时间片愈小。采用FCFS原则。按队列优先级进行调度。
2>优点:兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
在多级反馈队列调度算法中,如果规定第一个队列的时间片略大于多数人机交互所需之处理时间时,便能够较好的满足各种类型用户的需要。
六、 公平共享调度算法(FSS:Fair Share Scheduling)
分配给每个进程相同的处理机时间,显然,这对诸进程而言,是体现了一定程度的公平,但各个用户所拥有的进程数不同,就会发生对用户的不公平问题。在该调度算法中,调度的公平性主要是针对用户而言,是所有用户能获得相同的处理机时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值