调度算法及其性能指标

news2024/9/24 15:16:56

一、调度算法的评价指标

1.CPU利用率

由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作

CPU利用率:指CPU“忙碌”的时间占总时间的比例

利用率=忙碌的时间/总时间

Eg:  

某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒,再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?

CPU利用率 = 5+5/5+5+5 = 66.66%

打印机利用率= 5/15 = 33.33%

2.系统吞吐率

对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业

系统吞吐量:单位时间内完成作业的数量

系统吞吐量 = 总共完成了多少道作业/总共花了多少时间

E8:某计算机系统处理完10道作业,共花费100秒,则系统吞吐量为?

10/100=0.1道/秒

3.周转时间

对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。

周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔

它包括四个部分:

  • 作业在外存后备队列上等待作业调度(高级调度)的时间
  • 进程在就绪队列上等待进程调度(低级调度)的时间
  • 进程在CPU上执行的时间

④ 进程等待I/0操作完成的时间

后三项在一个作业的整个处理过程中,可能发生多次。

  • 周转时间

对于用户来说,更关心自己的单个作业的周转时间:

周转时间=作业完成时间-作业提交时间

  • 平均周转时间

对于操作系统来说,更关心系统的整体表现,因此更关心所有作业周转时间的平均值:

平均周转时间=各个作业周转时间之和/作业数

  • 带权周转时间

带权周转时间必然≥1

带权周转时间与周转时间都是越小越好

对于周转时间相同的两个作业,实际运行时间长的作业在相同时间内被服务的时间更多:

带权周转时间更小,用户满意度更高

对于实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高。

带权周转时间 =作业周转时间/作业实际运行的时间

=作业完成时间-作业提交时间/作业实际运行的时间

  • 平均带权周转时间

平均带权周转时间=各作业带权周转时间之和/作业数

4.等待时间

计算机的用户希望自己的作业尽可能少的等待处理机等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低

对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/0完成的期间其实进程也是在被服务的,所以不计入等待时间。对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。

一个进程到达后要么在等待,要么在运行。如果是又有计算(CPU)、又有I/O操作的进程,其

等待时间 = 周转时间 - 运行时间 - I/O操作的时间

一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。当然,与前面指标类似,也有“平均等待时间”来评价整体性能。

5.响应时间

对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。响应时间,指从用户提交请求到首次产生响应所用的时间

二、调度算法

1.先来先服务

FCFS (First Come, First Served)

算法思想

主要从“公平”的角度考虑(类似于我们生活中排队买东西的例子)

算法规则

按照作业/进程到达的先后顺序进行服务

这种调度算法是用于作业调度还是进程调度?

用于作业调度时,考虑的是哪个作业先到达后备队列;

用于进程调度时,考虑的是哪个进程先到达就绪队列。

抢占式?非抢占式?

非抢占式的算法

优点和缺点

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

缺点:排在长作业(进程)后面的短作业(进程)需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好。即FCFS算法对长作业有利,对短作业不利(Eg:排队买奶茶...)

是否会导致饥饿

不会

先来先服务,不用考虑下一个进程调谁,算法简单,系统内耗小,但是周转时间就不能保证很短,所以不合理。

例题:

2.最短作业优先

SJF(Shortest job First

算法思想

追求最少的平均等待时间,最少的平均周转时间、最少的平均带权周转时间

算法规则

最短的作业/进程优先得到服务(所谓“最短”,是指要求服务时间最短)

这种调度算法是用于作业调度还是进程调度?

即可用于作业调度,

也可用于进程调度。用于进程调度时称为“短进程优先(SPF,Shortest Process First)算法

抢占式?非抢占式?

SJF和SPF是非抢占式的算法。

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

优点和缺点

优点:“最短的”平均等待时间、平均周转时间

缺点:不公平。对短作业有利,对长作业不利。可能产生饥饿现象。另外,作业/进程的运行时间是由用户提供的,并不一定真实,不一定能做到真正的短作业优先

是否会导致饥饿

会。如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饥饿”现象。如果一直得不到服务,则称为“饿死”

注意几个小细节:

1.如果题目中未特别说明,所提到的“短作业/进程优先算法”默认是非抢占式的

2.很多书上都会说“SIF 调度算法的平均等待时间、平均周转时间最少”严格来说,这个表述是错误的,不严谨的。之前的例子表明,最短剩余时间优先算法得到的平均等待时间、平均周转时间还要更少应该加上一个条件“在所有进程同时可运行时,采用SJF调度算法的平均等待时间、平均周转时间最少”

或者说“在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少”

3.如果不加上述前提条件,则应该说“抢占式的短作业/进程优先调度算法(最短剩余时间优先,SRNT算法)的平均等待时间、平均周转时间最少”

4.虽然严格来说,SJF的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如FCFS)SJF依然可以获得较少的平均等待时间、平均周转时间

5.如果选择题中遇到“SIF算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项

       短作业优先,周转时间短,但是因为短作业优先的原则就保证不了程序的响应时间,依旧是不合理的。

例题:

非抢占式:

抢占式:

3.最高响应比优先

FCFS 算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题

SJF 算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至还会造成饥饿问题

能不能设计一个算法,即考虑到各个作业的等待时间,也能兼顾运行时间呢?

高响应比优先算法。

HRRN(Highest Response Ratio Next)

算法思想

综合考虑作业/进程的等待时间和要求服务的时间

算法规则

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

响应比=等待时间+要求服务时间/要求服务时间

这种调度算法是用于作业调度还是进程调度?

即可用于作业调度,也可用于进程调度

抢占式?非抢占式?

非抢占式的算法。因此只有当前运行的作业/进程主动放弃处理机时,才需要调度,才需要计算响应比

优点和缺点

综合考虑了等待时间和运行时间(要求服务时间)等待时间相同时,要求服务时间短的优先(SJF的优点)要求服务时间相同时,等待时间长的优先(FCFS的优点)对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题

是否会导致饥饿

不会

例题:

注:

这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统,当然,FCFS算法也常结合其他的算法使用,在现在也扮演着很重要的角色。

4.时间片轮转

RR (Round Robin)

算法思想

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

算法规则

按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如100ms)。若进程未在一个时间片内执行完则剥夺处理机,将进程重新放到就绪队列队尾重新排队。

这种调度算法是用于作业调度还是进程调度?

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

抢占式?非抢占式?

若进程未能在时间片内运行完,将被强行剥夺处理机使用权,因此时间片轮转调度算法属于抢占式的算法。由时钟装置发出时钟中断来通知CPU时间片已到

优点和缺点

优点:公平;响应快,适用于分时操作系统:缺点:由于高频率的进程切换,因此有一定开销:不区分任务的紧急程度。

是否会导致饥饿

不会

时间片太大或太小分别有什么影响?

如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。

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

为了缩短程序的响应时间,可以采用时间片轮转的方式,这样就是公平的了,分给每个程序时间片,在时间片结束直接切到下一个进程,但是需要对时间片的大小进行折中。

例题:

 

 

 

5.优先级调度

Poriority scheduling algorithm

算法思想

随着计算机的发展,特别是实时操作系统的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序

算法规则

调度时选择优先级最高的作业/进程

这种调度算法是用于作业调度还是进程调度?

既可用于作业调度,也可用于进程调度。甚至,还会用于在之后会学习的I/0调度中

抢占式?非抢占式?

抢占式、非抢占式都有。做题时的区别在于:非抢占式只需在进程主动放弃处理机时进行调度即可,而抢占式还需在就绪队列变化时,检查是否会发生抢占。

优点和缺点

优点:用优先级区分紧急程度、重要程度,适用于实时操作系统。可灵活地调整对各种作业/进程的偏好程度。缺点:若源源不断地有高优先级进程到来,则可能导致饥饿

是否会导致饥饿

补充:

就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级高的进程排在更靠近队头的位置根据优先级是否可以动态改变,可将优先级分为静态优先级和动态优先级两种:

静态优先级:

创建进程时确定,之后一直不变。

通常:

系统进程优先级高于用户进程

前台进程优先级高于后台进程

操作系统更偏好 IO型进程(或称 IO繁忙型进程)

注:与I/0型进程相对的是计算型进程(或称CPU繁忙型进程)

IO设备和CPU可以并行工作。如果优先让I/O繁忙型进程优先运行的话则越有可能让IO设备尽早地投入工作,则资源利用率、系统吞吐量都会得到提升

动态优先级:

创建进程时有一个初始值,之后会根据情况动态地调整优先级

可以从追求公平、提升资源利用率等角度考虑

如果某进程在就绪队列中等待了很长时间,则可以适当提升其优先级

如果某进程占用处理机运行了很长时间,则可适当降低其优先级

如果某进程频繁进行I/O操作,也可适当提升其优先级。

例题:

 

注:

FCFS算法的优点是公平

SJF算法的优点是能尽快处理完短作业,平均等待/周转时间等参数很优秀

时间片轮转调度算法可以让各个进程得到及时的响应

优先级调度算法可以灵活地调整各种进程被服务的机会

能否对其他算法做个折中权衡?得到一个综合表现优秀平衡的算法呢?

6.多级反馈队列

Multileved queue

算法思想

对其他调度算法的折中权衡

算法规则

1.设置多级就绪队列,各级队列优先级从高到低,时间片从小到大

2.新进程到达时先进入第1级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经是在最下级的队列,则重新放回该队列队尾

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

这种调度算法是用于作业调度还是进程调度?

用于进程调度

抢占式?非抢占式?

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

优点和缺点

对各类型进程相对公平(FCFS的优点);每个新到达的进程都可以很快就得到响应(RR的优点);短进程只用较少的时间就可完成(SPF的优点);不必实现估计进程的运行时间(避免用户作假)可灵活地调整对各类进程的偏好程度,比如CPU密集型进程、I/0密集型进程(拓展:可以将因1/0而阻塞的进程重新放回原队列,这样I/O型进程就可以保持较高优先级)

是否会导致饥饿

多级队列调度算法,不同的优先级配上不同的就绪队列,不同优先级的就绪队列装有不同的进程,不同类进程就绪队列采用不同的单一的调度算法。这样就能弥补以下具体情况与单一调度算法不合适的问题。

例题:

设置多级就绪队列,各级队列优先级从高到底,时间片从小到大。

新进程到达时先进入第1级队列,按FCFS原则排队等待被分配时间片。若用完时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经在最下级的队列,则重新放回最下级队列队尾:

0-1时

 

 

 

 

1-5时发生抢占

 

 

6时

 

 

13时

 

甘特图:

P3

do

P2

do

do

do

do

P1

do

do

do

do

do

do

do

do

    0     1     2    3     4     5     6    7     8     9    10   11   12 13

7.多级队列调度

系统中按进程类型设置多个队列,进程创建成功后插入某个队列

队列之间可采取固定优先级,或时间片划分固定优先级:

固定优先级:

高优先级空时低优先级进程才能被调度,可能饥饿

时间片划分:

如三个队列分配时间50%、40%、10%

各队列可采用不同的调度策略,

如:系统进程队列采用优先级调度

交互式队列采用RR

批处理队列采用FCFS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python画图|极坐标中画散点图

python极坐标画图时,不仅可以画实线图,也可以画散点图。 实线图画法如下述链接。 python画图|极坐标画图基础教程-CSDN博客 今天我们一起学习一下散点图画法。 【1】官网教程 首先依然是导航到官网,乖乖学习官网教程: Scatt…

产品3D交互展示是什么?3D可视化有什么优势?

产品3D交互展示是一种通过互联网平台,利用3D技术对产品进行全方位、多角度展示的方式。它允许用户通过旋转、缩放、移动等操作,以更直观、更互动的方式了解产品的外观、结构和细节。这种展示方式不仅提升了用户的参与感和体验感,还增强了产品…

【触想智能】工业一体机在物流领域上的四大应用分析

随着物流业的快速发展,工业一体机在物流领域上的应用越来越普遍。工业一体机是一种高级智能设备,是多种技术的综合应用,包括机械、电子、计算机、通讯等。 在物流行业中,工业一体机可以发挥其先进的技术和功能,提高物流…

重磅资源来袭。快看看有没有你要的那一款!

Java 相关的技能主要包括以下几个方面‌: 资源在末尾 ‌Java编程语言基础‌:这是Java开发的基础,包括熟悉Java的语法、数据类型、控制结构、异常处理、面向对象编程(OOP)等基本概念。‌Java EE和Spring框架‌&#x…

【算法】模拟退火

一、引言 模拟退火算法(Simulated Annealing, SA)是一种启发式搜索算法,它通过模拟物理中的退火过程来解决优化问题。这种算法能够跳出局部最优解,寻找全局最优解,特别适用于解决复杂的优化问题。 二、算法原理 模拟退…

NS4263 3.0Wx2 双声道 AB/D 类双模音频功率放大器附加耳机模式

1 特性 ● 工作电压范围:3.0V-5.25V ● AB 类和 D类工作模式切换 ● 一线脉冲控制工作模式与关断模式 ● 内置立体声耳机输出功能 ● 输出功率 3WClass D/Load4ohm ● THDN0.1%VDD5V/Po1W ● 优异的全带宽 EMI抑制能力 ● 优异的“上电和掉电”噪声抑制 ● 内置过流保护、欠压保…

PMP证书可不可以挂靠?看看考过的人怎么说

或许我们经常听到人们说可以把律师证、注册会计师证等挂靠在单位,从而每年获得额外收入。但是需要说明的是,PMP证书并不适用于挂靠这种情况。因为PMP并不属于我国体制内的职业资格证书,企业升级资质也不需要使用PMP证书,所以PMP是…

unity导入半透明webm + AE合成半透明视频

有些webm的文件导入unity后无法正常播报,踩坑好久才知道需要webm中的:VP8 标准 现在手上有几条mp4双通道的视频,当然unity中有插件是可以支持这种视频的,为了省事和代码洁癖,毅然决然要webm走到黑。 mp4导入AE合成半透…

如何使用dcmtk将dcm数据集中信息输出到可读文件

1. 缘起 在生成RDSR报告时候&#xff0c;代码中已经将患者的一些信息写入到dcm数据集中&#xff0c;但是最后保存的文件中没有这些值&#xff0c;因此需要将过程中的数据集信息打印出来&#xff0c;看是在什么地方出现问题了。 2. 将数据值保存到文件 std::unique_ptr<Dc…

“月薪3w,被人工智能玩弄。“

自从有了萝卜快跑无人驾驶车&#xff0c;一天天的都要被这些梗笑死&#xff1a; 萝卜快跑的萝卜&#xff0c;是指的乘客我吧&#xff1f;&#xff1f;&#xff1f; 15公里的路程&#xff0c;乘客自己追了14公里&#xff0c;还停在路中央让乘客上车哈哈哈哈&#xff01; 好消…

MATLAB求解微分方程和微分方程组的详细分析

目录 引言 微分方程的定义 MATLAB求解常微分方程 参数分析&#xff1a; MATLAB求解偏微分方程 刚性和非刚性问题 总结 引言 微分方程在物理、工程、经济和生物等多个领域有着广泛的应用。它们用于描述系统中变量与其导数之间的关系&#xff0c;通过这些方程可以解释和预…

如何通过可视化大屏,打通智慧城市建设的“最后一公里”?

在智慧城市的宏伟蓝图中&#xff0c;技术的融合与创新是推动城市发展的关键力量。然而&#xff0c;真正的挑战在于如何将这些技术成果转化为市民的实际体验&#xff0c;实现智慧城市建设的“最后一公里”。可视化大屏&#xff0c;作为连接技术与市民的桥梁&#xff0c;正以其独…

【吉利汽车安全应急响应中心-登录/注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

ssl证书过期怎么解决

SSL证书过期的解决方案主要是及时续费或更换新的SSL证书重新部署。rak小编为您整理发布具体解决方法。 当SSL证书即将过期时&#xff0c;最有效的方法是提前进行续费。 在证书到期前办理续费可以确保服务的连续性&#xff0c;并避免因证书失效而引发的网站访问问题。一旦续费完…

如何在HTML中实现m3u8视频播放:多种解决方案大比拼

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 HTML & M3U8 📒📝 HTML 播放 m3u8 的方式1. Video.js2. hls.js3. DPlayer📝 优缺点对比📝 使用建议📝 常见问题及解决方案⚓ 相关链接 ⚓📖 介绍 📖 在网页上播放 m3u8 格式的视频已经成为主流,尤其是在直播…

AI制药领域的中英文对照表

AI制药&#xff08;AIDD&#xff09;是指利用AI技术在药物研发、药物设计、药物筛选、临床试验和药物生产等各个环节中应用的制 药领域。AI在药物研发中可以通过数据挖掘、机器学习和深度学习等技术&#xff0c;加速药物发现和设计过程&#xff0c;提高研发 效率和成功率。AI还…

常见分组加密算法的整体结构

常见分组加密算法的整体结构 0x1 两分支平衡Feistel结构(典型) S(i)为Feistel结构密码的第i1轮中间输入状态&#xff0c;S(i1)为第i1轮中间输出状态。则其轮函数为 0x2 四分支非平衡Feistel结构(非典型) S(i)为四分支非平衡Feistel结构密码的第i1轮中间输入状态&#xff0c;…

【linux005】目录操作命令篇 - pstree 命令

文章目录 1、基本用法2、常见选项3、举例4、注意事项 pstree 命令在 Linux 中用于以树状结构显示进程及其子进程的层次结构。它提供了一种直观的方式来查看进程的父子关系&#xff0c;与 ps 命令的线性输出相比&#xff0c; pstree 更容易理解进程的继承关系 1、基本用法 ps…

【Python机器学习】循环神经网络(RNN)——审察模型内部情况

Keras附带了一些工具&#xff0c;比如model.summary()&#xff0c;用于审察模型内部情况。随着模型变得越来越复杂&#xff0c;我们需要经常使用model.summary()&#xff0c;否则在调整超参数时跟踪模型内部的内容的变化情况会变得非常费力。如果我们将模型的摘要以及验证的测试…

【无线通信发展史⑩】奥斯特的发现揭开了物理学史上的一个新纪元,奠定了电生磁的基础

前言&#xff1a;用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注&#xff0c;你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢&#xff1f; 首先肯定是因为我本身就是一名从业通信者&#xff0c;想着更加了解自…