《操作系统》-调度算法

article/2025/9/15 23:23:54

调度算法

在了解调度算法之前我们先了解一下调度算法的评价指标从这几个方面入手:CPU利用率、系统吞吐量、周转时间、等待时间、响应时间


CPU利用率:指CPU“忙碌”的时间占总时间的比例
在这里插入图片描述

由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作
在这里插入图片描述


系统吞吐量:单位时间内完成作业的数量
对于计算机希望尽可能少的时间处理完尽可能多的作业
在这里插入图片描述
在这里插入图片描述


周转时间:是指从作业被提交给系统开始,到作业完成为止的这段时间间隔
对于计算机用户来说,他很关心自己的作业从提交到完成花了多少时间
他包括四个部分:作业在外存后备队伍中等待被调用的时间、进程在就绪队伍上等待进程调度的时间、进程在CPU上执行的时间、进程等待I/O操作完成的时间。后三项在一个作业的整个处理过程中可能多次发生
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
带权周转时间必然>=1
带权周转时间与周转时间都是越小越好
在这里插入图片描述
对于周转时间相同的两个作业,实际运行时间长的作业在相同的时间内被服务的时间更多,带权周期时间更小,用户满意度更高
对于实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高


等待时间:指进程/作业处于等待处理机状态之和,等待时间越长,用户满意度低
计算机用户希望自己的作业尽可能少的等待处理机
对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是被服务的,所以不计入等待时间
对于作业来说,不仅要考虑建立进程后的等待时间、还要加上作业在外存队列中的等待时间。
一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。当然,与前面指标类似,也有“平均等待时间”来评价整体性能


响应时间:指从用户提交请求首次产生响应所用的时间
对于计算机用户来说,会希望自己的提交请求尽早开始被系统服务、回应
在这里插入图片描述
适用于早期的批处理系统的调度算法
在这里插入图片描述


先来先服务(FCSF)
在这里插入图片描述
饥饿:某进程/作业长期得不到服务
在这里插入图片描述


短作业优先
在这里插入图片描述
非抢占式的短进程优先调度算法(SFP)
在这里插入图片描述
抢占式的短进程优先调度算法(SRTN)
在这里插入图片描述
在这里插入图片描述
注意几个小细节:
1、如果题目中未特别说明,所提到的“短作业/进程优先算法”默认非抢占式
2、很多书上都会说“SJF调度算法的平均等待时间、平均周转时间最少”
严格的说,这个表述是错误的,不严谨的,之前的例子表明抢占式的短进程优先算法(SRNT)得到的平均等待时间、平均周转时间更少:
应该加上一个条件“在所有进程同时可运行时”,采用SJF调度的平均等待时间、平均周转时间最少
或者说:“在所有进程都几乎同时到达时”,采用SJF调度算法的平均等待时间、平均周转时间最少
如果不加上上述前提条件,则应该说“抢占式的短作业/进程优先调度算法(最短剩余时间优先,SRNT算法)”的平均等待时间、平均周转时间最少
3、虽然严格意义上来说,SJF算法的等待时间、周转时间不一定是最少的,但相对于其他算法(如:FCFS),SJF依然可以获得较少的平均等待时间、平均周转时间
4、如果选择题中遇到“SJF 算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项
是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项


高响应比优先算法
FCFS算法是每次调度的时候选择一个等待时间比较长的作业(进程)为其服务,但是没有考虑到作业的运行时间,因此导致对短作业不友好的问题
SJF算法是选择一个执行时间最短的作业为其进行服务,但是又完全不考虑各个作业的等待时间,因此导致对长作业不友好的问题,甚至还会导致饥饿问题
因此就提出了高响应比优先算法,即考虑到了各个作业的等待时间,也能兼顾运行时间
在这里插入图片描述

在这里插入图片描述
对于前面三种调度方法的对比
在这里插入图片描述
:这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间这几个评价系统整体性能的这几个指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适用于早期的批处理系统,当然,FCFS算法也常结合其他算法使用,在现在也扮演着很重要的角色。
以上三个算法交互性很糟糕,那我们接下来介绍一下,适用于交互系统的调度算法
在这里插入图片描述


时间片轮转(RR)
在这里插入图片描述
时间片大小为2时
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时间片为5时
在这里插入图片描述
当时间片为5时,在这种情况下就和先来先服务调度算法执行的结果相同了,所以如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小


优先级调度算法
在这里插入图片描述
非抢占式的优先级调度算法
在这里插入图片描述
抢占式优先级调度算法
在这里插入图片描述
补充:
就绪队列未必只有一个,可以按照不同优先级来组织。另外也可以把优先级高的进程放在更靠近队头的位置
根据优先级是否可以动态改变,可将优先级分为静态优先级动态优先级
静态优先级:创建进程时确定,之后一直不变
动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级

1、如何合理地设置各类进程的优先级?
答:通常,系统进程优先级高于用户进程
前台程序进程优先级高于后台进程
操作系统更偏好I/O型进程(或称I/O繁忙型进程)
注:与I/O型进程相对的是计算机进程(或称CPU繁忙型进程)

2、如果采用是动态优先级,什么时候应该调整?
答:可以从追求公平、提高资源利用率等角度考虑
如果某进程在就绪队列中等待了很长时间,则可以适当的提高其优先率
如果某进程占用处理机时间很长,则可以适当降低其优先率
如果发现一个进程频繁地进行I/O操作,则可适当提升其优先级


多级反馈调度队列算法
FCFS算法的优点是公平,SJF算法的优点是尽快处理完短作业,平均等待/周转时间等参数都很优秀,时间片轮转调度算法可以让各个进程得到及时的响应,优先级调度算法可以灵活地调整各个进程被服务的机会为了将这些算法折中权衡,得到一个综合表现优秀平衡的算法,多级反馈队列调度算法诞生了
在这里插入图片描述
在这里插入图片描述

对于前面三种调度方法的对比
在这里插入图片描述
注:比起早期的批处理操作系统来说,由于计算机造假大幅度降低,因此之后出现的交互性操作系统(包括分时操作系统、实时操作系统)更注重系统的响应时间、公平性、平衡性等指标。而这几种算法恰好也能较好的满足交互系统的需求,因此这三种算法适用于交互式系统。(比如UNIX使用的就是多级反馈队列调度算法)


http://chatgpt.dhexx.cn/article/HcAeNldm.shtml

相关文章

【操作系统】-- 时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法

一、时间片轮转调度算法 1、算法思想 公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。 2、算法规则 按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片,若进程未在一个时间片内执行完,则…

调度算法解析

一、常见的批处理作业调度算法 1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意&…

进程和线程调度算法

调度算法是指:根据系统的资源分配策略所规定的资源分配算法,如任务A在执行完后,选择哪个任务来执行,使得某个因素(如进程总执行时间,或者磁盘寻道时间等)最小。对于不同的系统目标,通…

进程的调度算法

什么时候调度进程 在进程的生命周期中,当进程从一个运行状态到另外一状态变化的时候,其实会触发一次调度。 比如,以下状态的变化都会触发操作系统的调度: 从就绪态->运行态:当进程被创建时,会进入到就…

调度算法的介绍及优缺点

调度算法是根据系统的资源分配策略所规定的资源分配算法。有的调度算法适用于作业调度,有的适用于进程调度,有的两者都适用。先了解几个术语 到达时间、服务时间、开始时间 完成时间、等待时间 周转时间:完成时间-到达时间 带权周转时间&…

操作系统五种调度算法总结(含源码)

今天操作系统实验课我们做了作业调度算法的模拟。网上的调度算法参差不齐,零散杂乱。我在这里进行一个总结,并且分享给大家操作系统的五种常用算法(FCFS,SJF,HRRF,HPF,RR)并且附上代码和结果图 作业调度 作业调度又称高级调度&am…

磁盘调度算法

1 一次磁盘读/写操作需要的时间 **寻找时间(寻道时间)**Ts:在读/写数据前,需要将磁头移动到指定磁道所花费的时间。 寻道时间分两步: (1) 启动磁头臂消耗的时间:s。 (2) 移动磁头消耗的时间:假…

经典进程调度算法

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

实时调度算法

必要的名词解释 开始截止时间:某个任务必须在某个时间之前开始执行 实时调度算法的分类 根据实时任务性质分类 硬实时调度算法:即任务必须在确定的时间内完成软实时调度算法:即大部分任务必须在确定的时间内完成 根据调度方式分类 关于…

操作系统的常见调度算法

1.先来先服务调度算法(FCFS) 特性:相对其他调度算法最简单、具有非抢占性、不可剥夺、可用于作业调度和进程调度。 使用特点:用于长作业,不利于短作业(对于SJF(短作业)的高响应比&…

常见的作业调度算法

目录 写在前面先来先服务算法短作业优先算法高响应比优先调度算法 写在前面 评价作业调度算法的优劣,通常看平均周转时间和带权周转时间周转时间 作业完成时间 - 作业到达时间平均周转时间 (作业完成时间 - 作业到达时间)/ 作业数量带权周…

进程(作业)调度算法

3.2 调度算法(重点!!!) 一、先来先服务和短作业(进程)优先调度算法二、高优先权优先调度算法三、基于时间片的轮转调度算法 一、先来先服务和短作业(进程)优先调度算法…

优先级调度算法

算法介绍 优先调度算法的类型(用于作业调度) 1)非抢占式优先权调度算法 系统一旦把处理机分配给优先权最高的进程后,便一直执行下去,至完成。 2)抢占式优先权调度算法 只要系统中出现一个新的就绪进程…

进程调度算法;先来先服务调度算法、短作业优先调度算法、时间片轮转调度算法

一、 实验目的和要求 1. 了解进程调度算法的特点 2. 掌握进程调度算法,如先来先服务调度算法(first come first served,FCFS)、短作业优先调度算法(shotjob first,SJF)、时间片轮转调度算法。 二、 实验内容 …

操作系统调度算法--高响应比优先调度算法解析

高响应比优先调度算法(Highest Response Radio Next,HRRN)是一种对CPU中央控制器响应比的分配的算法。HRRN是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之间的折中算法。FCFS算法所考虑的只…

进程调度算法

操作系统常见的进程调度算法 调度算法是指:根据系统的资源分配策略所规定的资源分配算法。常见的进程调度算法有: 1.先来先去服务 2.时间片轮转法 3.多级反馈队列算法 4.最短进程优先 5.最短剩余时间优先 6.最高响应比优先 7.多级反馈队列调度算法 一、…

【操作系统】调度算法

目录 🏫基本概念 🏥先来先服务(FCFS, First Come First Serve) 🏩短作业优先(SJF, Shortest Job First) 🍆细节 ⛪️高响应比优先(HRRN,Highest Response Ratio Next) &#x…

调度算法

1.先来先服务调度算法(FCFS): 按照到达的先后顺序进行调度。 周转时间完成时间 - 到达时间 带权周转时间周转时间 / 运行时间 等待时间周转时间 - 运行时间 特殊情况:当有I/O操作(输入/输出)的进程的时候…

操作系统——调度算法

文章目录 前言一、先来先服务(FCFS)二、最短时间优先(SJF)三、最高响应比优先(HRRN)四、时间片轮转(RR)五、优先级调度六、多级反馈队列总结 前言 本文的主要内容是调度算法的介绍,包括先来先服务(FCFS)、最短时间优先(SJF)、最高响应比优先(HRRN)、时间片轮转(RR)…

调度算法-优先级调度算法+例题详解

1. 优先级调度算法的类型 优先级进程调度算法,是把处理机分配给就绪队列中优先级最高的进程。这时,又可进一步把该算法分成如下两种。 非抢占式优先级调度算法。抢占式优先级调度算法。 2. 优先级的类型 静态优先级 静态优先级是在创建进程时确定的&…