秒懂算法 | 调度算法

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 介绍典型的调度算法以及算法应用。

640.jpg

01、短作业(进程)优先调度算法

短作业优先调度(Shortest Job First,SJF)算法或短进程调度(Shortest Process First,SPF)算法是指对短作业或短进程优先调度的算法。这里,作业或进程的长短是以作业或进程要求运行时间的长短来衡量的。在把短作业优先调度算法作为作业调度算法时,系统将从外存后备作业队列中选择估计运行时间最短的作业,优先将它调入内存执行。这种算法适合作业调度和进程调度。

例1 采用SJF算法对它们的开始执行时间、运行结束时间、周转时间和带权周转时间进行讨论。对于相同长度的作业,通常按照FCFS算法执行。通过计算,可得如表1所示的结果。

表1 SJF算法示例


640.jpg


其中列出了各进程的开始执行时间、完成时间、周转时间和带权周转时间。表1可以看出,SJF算法给短作业带来明显的改善,同时降低了作业的平均周转时间,提高了整个系统的性能。

SJ(P)F算法也存在一些不容忽视的缺点。
(1) 该算法对长作业不利。若系统不断有短作业进入,将造成长作业无限期延迟而得不到调度。

(2) 该算法未考虑作业的紧迫度,因而不能保证紧迫作业的及时处理。

(3) 由于作业或进程的长短只是由用户估计的,而用户又可能有意无意地缩短作业的估计运行时间,因此不一定保证做到真正意义上的短作业优先调度,因此该调度算法经常作为其他调度算法的比较算法。

02、高响应比优先调度算法

该算法通常用于作业调度。

高响应比优先调度(Highest Response First,HRF),也称为HRN(Highest Response Next)算法。FCFS算法只考虑作业等待时间长短而忽略作业的长度,而SJF算法的主要不足是长作业的运行得不到保证,两者都具有片面性。为了克服这两种算法的缺点,可以采用一种折中的方法,既让短作业优先,又考虑系统内等待时间过长的作业,这就是HRF算法。该调度策略在考虑每个作业等待时间的长短的同时估计所需的执行时间长短,从中选出响应比最高的作业投入运行。响应比R可定义为

640.jpg


所谓响应比R高者优先调度,是指每次挑选一个作业投入执行时,先计算此时后备作业队列中每个作业的响应比R值,选择一个R值最高者投入执行。注意公式中的“已等待时间”为一个动态数据,它随着作业等待时间的增长而增加,因此作业等待时间越长,响应比越大。因此,一个长期未被调度的作业,只要等待足够长的时间,总有机会成为响应比高者,从而得以执行;同样长度的作业,其R值可以从其等待调度的时间长短来区分;同样等待时间的作业,要求执行时间少的作业R值高。因此,该算法既照顾了短作业,又考虑了作业的等待时间。当然,利用该算法时,每次进行调度之前,都要先计算响应比,因此增加了系统的开销。

例2 系统的作业调度采用高响应比优先调度算法,有四个作业先后进入后备状态队列,到达系统时间和所需运行时间如表2所示,说明各作业的运行顺序,计算各作业的周转时间、带权周转时间,及平均周转时间、平均带权周转时间。

表2 HRF算法示例


640.jpg


这四个作业的调度采用 HRF 算法,过程如下:

640.jpg


■ 图2 执行过程图


t=0时,只有作业J1到达,J1执行,直到t=20,作业J1执行结束。

t=20时,作业J1运行结束。作业J2、J3、J4都已到达后备队列,需要计算各作业的响应比。

R2=1+J2已等待时间/J2需运行时间=1+15/15=2。

R3=1+J3已等待时间/J3需运行时间=1+10/5=3。

R4=1+J4已等待时间/J4需运行时间=1+5/10=1.5。

根据高响应比优先作业调度算法,作业J3的响应比R3最大,所以选择J3运行。

t=25时,作业J3运行结束。作业J2、J4的响应比如下:

R2=1+J2已等待时间/J2需运行时间=1+(25-5)/15=2.3。

R4=1+J4已等待时间/J4需运行时间=1+(25-15)/10=2。

根据高响应比优先作业调度算法,作业J2的响应比R3最大,所以选择J2运行。

t=40时,作业J2运行结束。作业J4开始运行,直到t=50作业J4运行结束。

因此,这四个作业的运行顺序为:J1→J3→J2→J4。

周转时间和带权周转时间分别为:

640.jpg


平均周转时间=(T1+T2+T3+T4)/4=(20+35+15+35)ms/4=26.25ms

平均带权周转时间=(W1+W2+W3+W4)/4=(1+2.33+3+3.5)=2.46

目录
相关文章
|
10月前
|
机器学习/深度学习 算法 调度
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
347 3
|
10月前
|
机器学习/深度学习 运维 算法
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
478 0
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
|
10月前
|
机器学习/深度学习 边缘计算 监控
【创新】【微电网多目标优化调度】五种多目标优化算法(MOJS、NSGA3、MOGWO、NSWOA、MOPSO)求解微电网多目标优化调度(Matlab代码实现)
【创新】【微电网多目标优化调度】五种多目标优化算法(MOJS、NSGA3、MOGWO、NSWOA、MOPSO)求解微电网多目标优化调度(Matlab代码实现)
710 0
|
10月前
|
机器学习/深度学习 算法 安全
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
276 0
|
10月前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
384 1
|
10月前
|
机器学习/深度学习 存储 算法
【微电网优化调度】五种多目标优化算法(MOPSO、MOAHA、NSGA2、NSGA3、MOGWO)求解微电网多目标优化调度比较研究【创新未发表】(Matlab代码实现)
【微电网优化调度】五种多目标优化算法(MOPSO、MOAHA、NSGA2、NSGA3、MOGWO)求解微电网多目标优化调度比较研究【创新未发表】(Matlab代码实现)
458 8
|
10月前
|
运维 算法 搜索推荐
基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)
基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)
468 1
|
10月前
|
机器学习/深度学习 边缘计算 分布式计算
基于差分进化算法的微电网调度研究(Matlab代码实现)
基于差分进化算法的微电网调度研究(Matlab代码实现)
316 1
|
10月前
|
存储 机器学习/深度学习 运维
基于改进灰狼算法的并网交流微电网经济优化调度研究(Matlab代码实现)
基于改进灰狼算法的并网交流微电网经济优化调度研究(Matlab代码实现)
162 1
|
10月前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
416 0

热门文章

最新文章