处理机调度的六个基本算法

一.先来先服务(first-come first-served,FCFS)调度算法

{通用公式:
1.周转时间=完成时间-到达时间
2.带权周转时间=周转时间/服务时间}

优先判断:先到的进程先进行响应
在这里插入图片描述

二.短作业服务(short job first, SJF)

优先判断:在CPU空闲的时候,且任务也都到达的情况下,最先响应要求服务时间短的进程
在这里插入图片描述

三.高响应比优先调度算法(Higher Response Ratio Next, HRRN)

1.等待时间=当前时间-到达时间
2.优先权=(等待时间+要求服务时间)/ 要求服务时间

由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比RP。据此,又可表示为:
在这里插入图片描述

案例如下:
解决过程:使用优先权公式计算并对比
在这里插入图片描述
最终结果:
在这里插入图片描述

四.基于时间片的轮转调度算法

按照先到先服务对进程进行队列入队操作,每当队首执行完指定的时间片,则放入安排到队尾等待继续执行,如果进程中一个时间片内完成了,则直接从队列中删除。

案例:
先看结果(一脸懵对吧)下面有过程

在这里插入图片描述
具体操作:
在这里插入图片描述

五.最早截止时间优先即EDF算法

算法描述:该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序;当然,具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。最早截止时间优先算法既可用于抢占式调度,也可用于非抢占式调度方式中。(描述看不懂直接看案例)

注:如果一个任务错过了它的截止时间,那么它已经无法满足实时性要求,因此可以将它放到最后执行,以确保其他任务能够在它们的截止时间之前完成。
案例:
在这里插入图片描述
必看步骤:
解决1:(非抢占式) 看完这个即可看懂下面的
EDF非抢占式调度(图1)
EDF抢占式调度(图2)

按照最早开始截止时间优先调度算法(EDF),每个任务都有一个截止时间,我们需要按照这个截止时间来安排任务的执行顺序。具体来说,我们需要按照以下步骤进行CPU调度:

(1)首先,根据到达时间将任务按照到达时间从小到大排序。

(2)然后,执行第一个任务A,因为它是唯一一个到达时间为10的任务。

(3)在任务A执行期间,任务B到达,将任务B加入就绪队列。

(4)当任务A完成后,我们需要选择下一个要执行的任务。根据最早开始截止时间优先调度算法,我们应该选择截止时间最早的任务。在这种情况下,任务B和任务C的截止时间相同,但是任务B到达时间更早,因此我们应该先执行任务B。

(5)在任务B执行期间,任务C到达并加入就绪队列。

(6)当任务B完成后,我们需要再次选择下一个要执行的任务。现在,我们应该选择截止时间最早的任务,即任务D。(这里需要注意:C已经错过了截止时间,所有优先选择截止时间没错过且最早的,D,E中D的最早)

(7)在任务D执行期间,任务E到达并加入就绪队列。

(8)当任务D完成后,我们需要再次选择下一个要执行的任务。现在,我们应该选择截止时间最早的任务,即任务E。

(9)最后,当任务E完成后,我们应该执行剩余的任务C。

按照上述步骤,EDF调度算法将任务A、B、D、E和C分别安排在时间10、20、40、60和80单位时间内执行。这种调度方法可以确保所有任务都在它们的截止时间之前完成,从而最大程度地满足实时性要求。

图1:
在这里插入图片描述
图2:

在这里插入图片描述

六.最低松弛度优先LLF(Least Laxity First)算法

算法描述:1.该算法是根据任务紧急的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,以使之优先执行。

2.在实现该算法时要求系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行

3.该算法主要用于可抢占调度方式中。
公式:松弛度 = 必须完成时间-其本身的运行时间-当前时间
案例:

在这里插入图片描述

解决方式:
一步一步的进行计算并且对比松弛度,松弛度低的优先
在这里插入图片描述

Over!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值