首页 > 系统相关 >【操作系统】进程管理——调度算法(个人笔记)

【操作系统】进程管理——调度算法(个人笔记)

时间:2024-07-07 18:28:43浏览次数:25  
标签:优先级 操作系统 队列 作业 调度 算法 进程

学习日期:2024.7.4

内容摘要:各种调度算法的思想、规则、优缺点介绍


为什么要有调度算法?

调度算法就好比一群人在银行办理业务,准备办理业务的人就是进程/作业,银行窗口的工作人员就是CPU,进程往往是比CPU数目多的。调度算法就是决定,哪些人可以先被服务,哪些人要排队等待。

适用于批处理系统的调度算法

先来先服务(FCFS)

先来先服务算法(FCFS,First Come First Serve),最简单的做法就是先来后到,先到银行的人先办业务。但是,有可能先到的“人”是来办理贷款的,谈了好几个小时都没谈完,后面一群人都只需要几分钟就能办完业务,但是都得被迫堵在后面排队,显然很不方便。

算法思想:主要按“公平”的角度考虑。(类似生活中排队办业务)

算法规则:按照作业/进程到达的先后顺序服务。

是否抢占:非抢占式算法。

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

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

是否会导致饥饿:不会,只要进程一直等待一定能得到服务。(饥饿:进程一直得不到服务)

短作业优先(SJF)

短作业优先算法(SJF,Shortest Job First),工作人员先服务任务简单,耗时少的客户,快速搞定,不让他们一直等。但是,如果源源不断的一直有任务简单耗时少的客户,想办大业务的客户等到银行下班也不能办理业务。

SPF就是Shortest Process First,短进程优先算法,除调度对象外没有区别。

算法思想:追求最少的平均等待时间、平均(带权)周转时间(详见《调度算法的评价指标

注意前提!当所有进程几乎同时到达时,采用SJF调度算法的平均等待时间和平均周转时间最少。 

算法规则最短的作业/进程优先得到服务(“最短”指的是要求服务时间最短)

                  每次调度时,选择当前已经到达的作业中运行时间最短的作业。

是否抢占:非抢占式算法,但也有抢占式的版本SRTN(Shortest Remaining Time Next,最短剩余时间优先算法)

        SRTN在就绪队列改变时(有新进程加入,当前进程完成)就需要调度,如果新进程的剩余时间比当前正在运行的进程的剩余时间更短,则由新进程抢占处理机,当前运行的进程重新回到就绪队列

        SRTN调度算法的平均等待时间和平均周转时间最少。

优点:平均等待时间和平均周转时间较小

缺点:不公平,对短作业有利,对长作业不利,且作业的运行时间是由用户提供的估计值,并不是精确值,不一定能做到真正的短作业优先。

是否会导致饥饿:会,如果源源不断的有短作业到来,长作业就会一直得不到服务。

思考:FCFS算法只考虑了进程的等待时间而不考虑运行时间,导致了对短作业不友好,而SJF算法又只考虑了运行时间不考虑等待时间,对长作业不友好,甚至会造成长作业饥饿,这两种算法都有点太极端了,那么能不能设计一个同时考虑到等待时间和运行时间的算法呢?于是,高响应比优先(HRRN)算法应运而生。

高响应比优先(HRRN)

高响应比优先算法(HRRN,Highest Response Ratio Next),引入了响应比这一概念来衡量作业的优先级,先为响应比高的作业提供服务。

响应比=(等待时间+要求服务时间)/要求服务时间,即1+(等待时间/要求服务时间)

当等待时间很长时,分子较大,响应比高。当要求服务时间较小时,分母较小,响应比高。这样,等待时间长的和任务简单耗时少的进程都会有较高的优先级,综合了以上两种方法的优点。

算法思想:综合考虑进程的等待时间和要求服务的时间

算法规则:在每次调度时先计算各个作业/进程的响应比,选择响应比最高的服务

是否抢占:非抢占式算法,当前运行的作业主动放弃处理机时,计算所有就绪队列的进程的响应比,选择响应比最高的进程上处理机。

优点:综合考虑了等待时间和运行时间,综合了SJF和FCFS的优点。

缺点:无明显缺点,但作业的运行时间在实际运行前是估计值,不是精确值,可能会有影响。

是否会导致饥饿:不会,对于长作业来说,随着等待时间越来越久,其响应比也会越来越大。

以上三种算法都同时适用于作业调度和进程调度,主要关心对用户的公平性,平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也不区分任务的紧急程度,对于用户来说交互性很差,因此以上三种算法一般适用于早期的批处理操作系统。因为此时计算机非常昂贵,个人计算机较少,通常使用公用计算机,人们更追求系统的整体性能,而不是很在乎个人的使用体验如何。


适用于交互式系统的调度算法

时间片轮转(RR)

时间片轮转调度算法(RR,Round-Robin),时间片:操作系统规定的一定量的时间。

如果时间片太大,每个进程都能在一个时间片内完成,则RR算法会退化为先来先服务算法,失去了RR算法的意义。

另一方面,进程的调度、切换是有时间代价的(保存和恢复运行环境),如果时间片太小,会导致进程切换过于频繁,系统会花大量时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。

算法思想:公平、轮流地为各个进程服务,让每个进程在一定的时间间隔内都可以得到响应

算法规则:按照各个进程到达就绪队列的顺序,轮流人各个进程执行一个时间片(如100ms),若在时间片内进程没有执行完,则剥夺处理机,将进程放到就绪队列尾重新排队,进行调度;若执行完,则主动下处理机,进行调度。每次调度时,选择就绪队列头的进程执行一个时间片。

如果在某一时刻当前进程的时间片用完,且刚好有新进程到达,则默认新到达的进程先进入就绪队列,轮转下来的进程后进入。

是否抢占:是,若进程未在时间片内运行完,会被剥夺处理机。

适用场景:仅用于进程调度,只有作业放入了内存建立了相应的进程后,才能被分配处理机时间片

优点:公平,响应快,适用于分时操作系统。

缺点:高频率的进程切换会导致一定的时间开销,不区分任务的紧急程度,只按时间片轮转。

是否会导致饥饿:不会,随着时间片轮转一定能轮转到每个等待的进程。

优先级调度

优先级调度算法

算法思想:随着实时操作系统的出现,一些应用场景需要根据任务的紧急程度来决定处理顺序。

算法规则:每个进程/作业都有各自的优先级,调度时选择优先级最高的进程/作业,如果是考试做题,题目中会给出进程/作业对应的优先数,优先数越大越优先。当优先级相同时,选择更早进入就绪队列的进程。

补充:

①就绪队列未必只能有一个,可以按照不同优先级组织。

②根据优先级是否可以改变,可以分为静态优先级和动态优先级两种,静态优先级的优先数在创建进程时确定,之后不会改变,而动态优先级的进程在创建时有一个优先数的初始值,但之后会根据情况调整。

当使用动态优先级进程时,进程等待了很长时间,或频繁的进行I/O操作,就可以提升其优先级。当进程长时间占用处理机时,可以降低其优先级。

高响应比优先(HRRN)算法,在某种意义上来说,就是一种动态优先级调度算法。

③系统进程优先级高于用户进程,前台进程优先级高于后天进程,操作系统更偏好I/O繁忙型进程(与I/O繁忙型进程相对的是CPU繁忙型进程),因为I/O设备和CPU可以并行工作,如果优先让其运行,则越有可能让I/O设备尽早投入工作。

是否抢占:有抢占式和非抢占式两种版本,非抢占式只需要在进程主动放弃处理机时调度即可,而抢占式需要在每次就绪队列变化时检查是否会发生抢占。

适用场景:进程调度和作业调度,甚至包括I/O调度。

优点:可用优先级灵活区分紧急程度和重要程度,适用于实时操作系统,调度灵活。

缺点:可能会导致低优先级进程饥饿。

是否会导致饥饿:会,如果源源不断的有高优先级作业进入,会导致低优先级的进程饥饿。

 

思考:FCFS算法的有点是公平,SJF算法的优点是平均等待和周转时间小,RR算法能让各个进程得到及时的响应,优先级调度算法可以灵活的调度各种进程,那么能否对上面的算法做一个折中权衡,得到一个综合表现优秀的算法呢?

好消息:算法很优秀    坏消息:全缝了,超级缝合怪

多级反馈队列

多级反馈队列调度算法

算法思想:对其它调度算法的折中权衡

算法规则:1.设置多级就绪队列,各级队列优先级从高到低,时间片从小到大。(SJF

                  2.新进程到达时先进入第一级队列,按FCFS原则排队等待被分配时间片,若用完时间                        片以后进程还未结束,则进程进入下一级队列队尾,若已经在最下级队列,则放回队                       尾。(RR

                  3.只有k级队列为空时,才会为k+1级队头的进程分配时间片。(优先级

是否抢占:抢占式,在k级队列的进程运行过程中,若更上级的队列(1~k-1级)进入了新进程,由于新进程的优先级更高,会抢占处理机,原来运行的放回k级队列的队尾。

适用场景:仅用于进程调度

优点:相对公平(FCFS的优点);每个新到达的进程都可以很快得到响应(RR的优点);短进程只需要较少的时间就能完成(SJF的优点);不必估计进程的运行时间,可灵活调整对各类进程的偏好程度。(拓展:可以将因I/O而阻塞的进程放回原队列,而非降级队列,这样可以保证I/O进程的高优先级)

缺点:可能会导致低优先级的进程饥饿。

是否会导致饥饿:会,同SJF,如果源源不断的有短进程到达,高优先的前几级队列一直有进程,较低优先级的进程就会饥饿。

比起早期的批处理操作系统,由于计算机造价大幅降低,交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标,而这几种算法能较好的满足交互式系统的需求,比如UNIX使用的就是多级反馈队列调度算法。


 内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

标签:优先级,操作系统,队列,作业,调度,算法,进程
From: https://blog.csdn.net/weixin_62679382/article/details/140187947

相关文章

  • Python算法模版:图论中的最小生成树算法
        最小生成树具有什么特性,相信学过相关知识的同学知道(没学过的可以自己了解一下),就是说最小生成树的边权值之和最小,相对应的其最大边权也是最小的,适合解决n个城市,m条边,然后叫你求最小划分路径是什么样的。Kruskal算法模版    首先,肯定要对题目所给的数据进......
  • Windows 电源管理中的 "快速启动(推荐)" 是一种功能选项,它允许电脑在关机后以一种较快的
    Windows电源管理中的"快速启动(推荐)"是一种功能选项,它允许电脑在关机后以一种较快的方式启动。这个功能通过将系统的部分内容保存到硬盘上的一个文件中,而不是完全关闭电脑,从而实现更快的启动速度。具体来说,当你选择启用快速启动时,Windows会将当前的系统状态保存到一个名为hibe......
  • Linux进程(1)(结构-操作系统-进程)
    目录1.体系结构 2.操作系统(OperatorSystem)1)概念:2)结构示意图(不完整)3)尝试理解操作系统4)系统调用和库函数概念3.认识进程1.启动2.进程创建的代码方式---重操作,轻原理1)创进程2)我们为什么要创建子进程呢? 1.体系结构输入设备:键盘、鼠标、摄像头、话筒、磁盘、......
  • LFU算法实现
    LFU(LeastFrequentlyUsed)是一种用于缓存管理的算法。它通过跟踪每个缓存项被访问的频率来决定哪些项应该被移除。LFU算法倾向于保留那些使用频率较高的项,而移除那些使用频率较低的项。以下是LFU算法的详细介绍:工作原理计数器:每个缓存项都有一个计数器,用于记录该项被访问的......
  • MATLAB算法实战应用案例精讲-【数模应用】偏最小二乘回归分析(PLS)(附MATLAB和python代码
    目录前言知识储备回归的方法回归的检验算法原理数学模型偏最小二乘回归建模原理:PLS的准则函数偏最小二乘基本算法​编辑 ​编辑PLS回归模型算法思想PLS回归与MLS、PCR、MRA比较SPSSAU案例应用其他说明SPSS示例(PLS命令) 变量列表(PLS命令) MODEL......
  • 目标检测算法简介
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • [Leetcode]经典算法
    检测环快慢指针法是一种用于检测链表中是否存在环的有效方法,同时也可以找到环的起点。该方法的原理基于两个指针在链表上同时移动,其中一个移动得更快,而另一个移动得更慢。检测环的存在:使用两个指针,一个称为快指针(fast),一个称为慢指针(slow)。在每一步中,快指针向前移动两步,而慢......
  • DAY 1 数据结构与算法 (选择排序,冒泡排序,插入排序)
    1.选择排序        选择排序(SelectionSort)是一种简单直观的排序算法。其基本思想是每一次从待排序的数据元素中选择最小(或最大)的一个元素,放在已排好序的元素序列的末尾,直到全部待排序的数据元素排好序为止。即每一次设定一个数为最大或者最小值,然后与其他的数进行交......
  • 操作系统笔记分享(第二章 进程的描述与控制)
    文章目录介绍二、进程的描述与控制2.1前驱图和程序执行前驱图程序并发执行2.2进程的描述进程控制块PCB进程特征进程状态PCB的作用PCB的信息1.进程标识符2.处理机状态3.进程调度信息4.进程控制信息PCB的组织方式1.线性方式2.链接方式3.索引方式2.3进程控制......
  • 操作系统笔记分享(第三章 处理机的调度与死锁)
    文章目录介绍三、处理机的调度与死锁3.1处理机调度概述处理机调度层次高级调度中级调度低级调度进程调度的任务和方式处理机调度算法的目标3.2调度算法先来先服务(FCFS)短作业优先(SJF)抢占式非抢占式优先级(PR)高相应比优先调度算法(HRRN)时间片轮转(RR)多级队列多级反馈队......