经典的进程调度算法有哪些

发布时间:2021-10-18 17:09:47 作者:iii
来源:亿速云 阅读:129

这篇文章主要介绍“经典的进程调度算法有哪些”,在日常操作中,相信很多人在经典的进程调度算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”经典的进程调度算法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

文中的很多图片来源我考研时看的网课,B  站上应该还能找到,王道考研出品的操作系统系列,各位可以去看看,适用于考试,不太适用于春招秋招,因为知识点讲的太细,边边角角都会讲到,各位可以挑几个章节去看。全文脉络思维导图如下:

经典的进程调度算法有哪些

1. 调度的概念

当 CPU 有一堆任务要处理时,由于其资源有限,这些事情就没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是 “调度”  研究的问题。除了接下来将要说的进程调度,还有作业调度、内存调度等。

回顾一下进程的三态模型:

经典的进程调度算法有哪些

所谓进程调度,就是「从进程的就绪队列(阻塞)中按照一定的算法选择一个进程并将 CPU  分配给它运行」,以实现进程的并发执行。这是操作系统中最基本(最低级)的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

2. 非抢占式进程调度算法

所谓非抢占式的意思就是,当进程正在运行时,它就会一直运行,直到该进程完成或发生某个事件发生而被阻塞时,才会把 CPU 让给其他进程。

对应的,抢占式的意思就是,当进程正在运行的时,可以被打断,把 CPU 让给其他进程。

① 先到先服务 FCFS

先来先服务调度算法(First Come First  Serve,FCFS):按照进程到达的先后顺序进行调度,「先到的进程就先被调度」,也就是说,等待时间越久的越优先得到服务。

经典的进程调度算法有哪些

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

缺点:对短进程不利。排在长进程后面的短进程需要等待很长时间,短进程的响应时间太长了,用户交互体验会变差。

② 最短作业优先 SJF

最短作业/进程优先调度算法(Shortest Job First,SJF):「每次调度时选择当前已到达的、且运行时间最短的进程」。

经典的进程调度算法有哪些

最短作业优先算法和先到先服务恰好相反,先到先服务对短进程不利,而最短作业优先算法对长程不利。因为如果一直有短进程到来,那么长进程永远得不到调度,长进程有可能会饿死,处于一直等待短作业执行完毕的状态。

③ 高响应比优先 HRRN

高响应比优先算法(Highest Response Ratio Next,HRRN):只有当前运行的进程主动放弃 CPU  时(正常/异常完成,或主动阻塞),才需要进行调度,「调度时计算所有就绪进程的响应比,为响应比最高的进程分配 CPU」。响应比 = (进程的等待时间 +  进程需要的运行时间) / 进程需要的运行时间

经典的进程调度算法有哪些

3. 抢占式进程调度算法

抢占就是指当进程正在运行的时,可以被打断,把 CPU 让给其他进程。抢占的原则一般有三种,分别是时间片原则、优先权原则、短作业优先原则。

① 最短剩余时间优先 SRTN

最短剩余时间优先(Shortest Remaining Time Next,SRTN)算法是「最短作业优先的抢占式版本」。

「当一个新的进程到达时,把它所需要的整个运行时间与当前进程的剩余运行时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程,否则新的进程等待。」

经典的进程调度算法有哪些

② 轮转调度算法 RR

轮转调度算法(Round Robin,RR)也称时间片调度算法:调度程序每次把 CPU 分配给就绪队列首进程使用规定的时间间隔,称为时间片,通常为  10ms ~ 200ms,「就绪队列中的每个进程轮流地运行一个时间片,当时间片耗尽时就强迫当前运行进程让出 CPU  资源,转而排到就绪队列尾部,等待下一轮调度」。所以,一个进程一般都需要多次轮转才能完成。

轮转调度算法对每个进程都一视同仁,就好比大家都排好队,一个一个来,每个人都运行一会儿再接着重新排队等待运行。

经典的进程调度算法有哪些

需要注意的是:时间片的长度是一个很关键的因素:

4. 最高优先级调度算法 HPF

RR  调度算法对所有的进程都是相同的策略,如果用户进程太多,可能会导致内核的服务进程响应跟不上。而在操作系统中,内核进程是比用户进程重要的多的,毕竟它关乎整个系统的稳定性。

最高优先级调度算法(Highest Priority  First,HPF)就是「从就绪队列中选择最高优先级的进程进行运行」。进程的优先级是怎么规定的呢?分为静态优先级或动态优先级:

另外,需要注意的是,最高优先级算法并非是固定的抢占式策略或非抢占式,「系统可预先规定使用哪种策略」:

到此,关于“经典的进程调度算法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. java开发的经典游戏有哪些?
  2. Linux经典书籍有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

javascript php

上一篇:如何使用分布式链路追踪

下一篇:PHP编码转换函数应用技巧是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》