常见的作业调度算法

写在前面

  1. 评价作业调度算法的优劣,通常看平均周转时间和带权周转时间
  2. 周转时间 = 作业完成时间 - 作业到达时间
  3. 平均周转时间 = (作业完成时间 - 作业到达时间)/ 作业数量
  4. 带权周转时间 = 作业周转时间 / 作业服务时间

先来先服务算法

顾名思义,先来先服务算法就是先来的作业先调度运行,后来的后运行。和队列的先进先出
的意思是一样的。不过先来先服务算法很少单独使用,都是和其他算法一起结合使用。

实例
在这里插入图片描述

我们来计算 A 和 B 的周转时间和带权周转时间(C,D 两个的计算就一样了)。

比如 A 的周转时间就是 T完成 - T到达,也就是 1 (个时间单位)。带权周转时间就是 1 / 1 = 1。

B 的周转时间是 101 - 1 = 100,带权周转时间,100 / 100 = 1。

下面给出全部的周转时间和带权周转时间
在这里插入图片描述

短作业优先算法

短作业调度算法的核心在于,运行时间越短的作业就先执行。
这里有两个需要注意的地方:
	1.首先,第一到达的作业一定先运行,因为经常题目中是给
	出所有的作业,很多初学者以为直接从中选取短作业。
	2.要注意,在后续比较作业长短的时候,要看作业是否到达,就是上图的到达时间,没
	有到达的作业是不能比较的。
	3. 短作业优先具有最短的平均周转时间

实例:这个实例包含了先来先服务算法(两者的比较)
在这里插入图片描述

这里讲 A 和 D 两个作业(因为 D 短作业优先)。
首先,A 作业是先到达的,毋庸置疑,先计算 A 。
A 周转时间是 T完成 - T到达 = 4,带权周转是 4 / 4 = 1

我们观察,当 A 作业完成的时候,已经过去了 4 个时间单位了。而B,C,D,E 的到达时间为 1,2,3,4。所以所有作业均已到达,这个时候可以比较哪个是短作业了。观察服务时间,D 为 2 是最短的。

D 的周转时间 6 - 3 = 3 , 带权周转时间 3 / 2 = 1.5 。其他的作业也是用同样的方式计算。

高响应比优先调度算法

我们分析上面的两个算法,先来先考虑的是作业的等待时间,而短作业考虑的是作业的运
行时间,都有优劣,但是如果把二者结合起来岂不是更好,这就是高响应比优先调度算
法。

注意:该算法的优先级需要每执行一个进程后重新计算一次。

优先级的计算:
在这里插入图片描述

变换上式可以得到:优先权 = 1 + (等待时间 / 要求服务时间)
这个算式在考试分析中更常用。

实例
在这里插入图片描述

同样,我这里演示 A 和 B 的计算方式。(这里没有列出完成时间,需要自己计算)
A 先到达,毋庸置疑必须先计算,周转时间:3 - 0 = 3,带权周转时间 3 / 3 =1

当 A 完成的时候,过去了 3 个单位时间(服务时间),此时只有 B 进程到达(B 的到达时间是 2)。

所以 B 的周转时间 , 9 - 2 =7 。 带权周转时间 7 / 6 = 1.17。

再接着看,当 B 完成时,时间到达了 9 这个时间单位。而 C,D,E 都再 9 之前到达了。所以这个时候要看谁的优先级高。

  • C 的优先级:1+5/4 = 2.25
  • D 的优先级:1+3/5 = 1.6
  • E 的优先级:1+1/2 = 1.5

计算得到 C 的优先级最高,所以先计算 C 周转时间和平均周转时间。计算方式同上。

同理,计算 D 和 E 的优先级,计算得到 E 的优先级更高。

同样的方式计算下面的内容。

在这里插入图片描述

你可以把这个题的 先来先服务算法短作业调度算法 也计算一下,最后可以得出谁的效率更高。

这是三个算法在这道题上的比较
在这里插入图片描述

我们可以看到短作业调度算法的效率更高。但是并不是说这个算法是最好的,每个算法有利有弊,需要看具体情况使用。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值