操作系统----调度算法

引言

算法概念

本文介绍的是调度算法,跟算法还是有关联的,我们平时可能觉得算法这个东西很难,可能也会很抵制或这个概念,其实他并不是很难,算法只是我们处理事情的思维逻辑而已。
就像你做一件事,你的规划就可以称之为一种算法。算法只是一个思考的过程,它可以间接的去生成结果,但无法直接得到结果。
那它在调度里有什么用呢,下面我们来介绍调度

调度概念

调度按照字面意思来讲就是把一些资源通过某种规则从一个地方放到另一个地方,这就称之为调度。这里的资源的概念很广泛,你想让它是什么就是什么。而这里提到了通过某种规则,而这种规则就称之为算法,进而产生了我们的调度算法。例如:先来先服务(FCFS)、短作业优先、优先级调度、高响应比优先、时间片轮转(RR)和多级反馈队列。下边我们来依次介绍各个算法

计算机中的调度是外存–>内存–>CPU的任务调度。其分为高级调度(外存–>内存)、中级调度(外存–>内存)和低级调度(内存–>CPU)
复习任务不在,这里后续在介绍

调度算法的评价指标

调度算法的评价指标有:CPU利用率,系统吞吐量,周转时间(平均周转,带权周转,平均带权周转),等待时间和响应时间。下边依次介绍

CPU利用率

CPU利用率:CPU忙碌时间占总工作时间的比例
利用率=忙碌时间/工作总时间

系统吞吐量

系统吞吐量:单位时间内完成作业的数量
系统吞吐量=完成作业数总和/总共花费时间

周转时间

周转时间:从作业被提交给系统开始,到作业完成为止的这段时间间隔。
周转时间=作业完成时间-作业提交时间
平均周转时间=(各作业的周转时间之和)/作业数
带权周转时间=作业周转时间/作业实际运行时间
平均带权周转时间=各作业周转时间之和/作业数

等待时间

等待时间:作业等待处理机状态时间的总和

响应时间

响应时间:指用户提出请求到首次响应时间所用的时间

算法介绍

先来先服务(FCFS,First Come First Serve)

关键知识点概念
算法思想先到先接受服务,类似于我们超市购物
算法规则按照作业/进程的先后到达顺序进行服务
是否可抢占非抢占式算法
优点比较公平
缺点对长作业有利,短作业不利(短作业排在长作业后边的话会消耗掉大量时间)
是否会产生饥饿现象不会

短作业优先算法(SJF,Shortest Job First)

关键知识点概念
算法思想追求最少的平均等待时间、最少的平均周转时间、最少的平均平均带权周转时间
算法规则最短的作业/进程优先得到服务
是否可抢占非抢占式算法
优点对短作业有利,缩短了平均等待时间、平均周转时间
缺点不公平,对长作业不利,可能产生饥饿现象
是否会产生饥饿现象会 ,在源源不断短作业/进程到达的时候,会导致长进程得不到服务,进而发生饿死现象

高响应比优先算法(HRRN,Highest Response Ratio Next)

响应比计算公式=(等待时间+要求服务时间)/要求服务时间 响应比>=1

关键知识点概念
算法思想综合考虑作业/进程的等待时间和要求服务时间
算法规则在每次调度时,先计算各个作业/进程的响应比,选择响应比比较高的作业/进程为其服务
是否可抢占非抢占式算法
优点上述两种算法的权衡折中,综合考虑的等待时间和运行时间
缺点无吧
是否会产生饥饿现象不会

时间片轮转算法(RR,Round-Robin)

关键知识点概念
算法思想公平的轮流的为各个进程服务,让每一个进程在一定时间间隔内都可以响应
算法规则按照进程到达就队列的顺序,轮流让各个进程执行一个时间片。若没有执行完就下处理机在排到就就绪队列队尾
是否可抢占抢占时算法
优点公平,响应快,适用于分时操作系统
缺点由于高频率的进程切换,因此有一定的开销;不区分任务的紧急情况
是否会产生饥饿现象不会

补充:时间片过大或过小的影响
时间片过小,会因为高频率的进程切换,导致大量开销,从而影响系统的效率
时间过大,进而就变成了先来先服务算法

优先级调度算法

上提到了不区分任务的紧急情况,而优先级调度解决了这一情况

关键知识点概念
算法思想根据任务的应用场景,给任务新增优先级标签,以优先级的程度来决定处理顺序
算法规则调度时优先选择优先级最高的作业/进程
是否可抢占抢占式、非抢占式都有
优点可以区分任务的紧急程度,重要程度,适用与实时操作系统
缺点会导致饥饿状态
是否会产生饥饿现象

多级反馈队列算法

关键知识点概念
算法思想对其他调度算法的折中权衡
算法规则详情请看表格下方
是否可抢占抢占式
优点
缺点
是否会产生饥饿现象

算法规则
1.设置多级就绪队列,各级队列优先级从高到低,时间片从小到大
2.新进程首先进入1级队列,按照FCFS+RR的方式进行执行,不过与RR不同的是,在进程执行一个时间片后,若是还没有完成,则下沉到第二队列,在次没有在一个时间片时间执行完毕就继续下沉,直至到地K的序列。这里的K代表的是最后的队列
3.只有当上一级队列的所有任务都执行过一个时间片后,才会执行下边一级队列。

例题

作业到达时间运行时间
j18:00120
j28:5050
j39:0010
j49:5020

用先来先服务算法、最短作业优先算法、高响应比优先算法分别计算出作业的平均周转时间和带权的平均周转时间

先来先服务计算

首先我们要先计算周转时间,上边提到了周转时间是程序运行结束-程序到达时间,然后在计算带权周转时间,带权周转时间=周转时间/程序实际运行时间,然后我们的表格就要变为

作业到达时间运行时间开始时间结束时间周转时间带权周转时间
j18:001208:0010:001201
j28:505010:0010:501202.4
j39:001010:5011:0012012
j49:502011:0011:20904.5

平均周转时间就是各作业周转时间总和/作业数
即(120+120+120+90)/4=112.5
平均带权周转时间=各作业平均周转时间总和/作业数
即(1+2.4+12+4.5)/4=4.795

最短作业优先

由于最先到的程序是j1,在j1执行期间j2,j3,j4到达,所以j2,j3,j4是谁短谁先运行

作业到达时间运行时间开始时间结束时间周转时间带权周转时间
j18:001208:0010:001201
j28:505010:3011:201503
j39:001010:0010:10707
j49:502010:1010:30402

平均周转时间=(120+150+70+40)/4=95
平均带权周转时间=(1+3+7+2)/4=3.25

高响应比优先算法题解

首先我们还是先运行j1,因为他先到。当j1运行结束之后再去计算j2,j3,j4的响应比时间。决定谁先运行,每运行结束一个我们都要计算一次响应比。之至最后。

作业到达时间运行时间
j18:00120
j28:5050
j39:0010
j49:5020

首先先执行j1,j1执行结束,我们来到10:00时刻
响应比计算公式=(等待时间+要求服务时间)/要求服务时间

作业到达时间运行时间等待时间响应比
j28:5050702.4
j39:0010607
j49:5020101.5

这里我们不用画表的,直接用公式计算,如下图:(画表只是为了更直观展示)
在这里插入图片描述
R是高响应比的计算符号(平时考试可以忽略,但考研别大意)
高响应比,所以我们要执行响应比高的。及执行j3,j3执行完毕,我们来到10:10时刻

作业到达时间运行时间等待时间响应比
j28:5050802.6
j49:5020202

所以我们接下来执行j2,最后执行j4.这样我们就得出了程序执行的顺序。然后通过表格来计算各个程序的运行时间

作业到达时间运行时间开始时间结束时间周转时间带权周转时间
j18:001208:0010:001201
j28:505010:1011:001302.6
j39:001010:0010:10707
j49:502011:0011:20804

平均周转时间=(120+130+80+70)/4=97.5
平均带权周转时间=(1+2.6+7+4)/4=3.625

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值