编程语言
首页 > 编程语言> > 作业调度算法

作业调度算法

作者:互联网


目录


问题:

单道批处理系统中,有四个作业,到达时间和所需运行时间如下表所示,按照先来先服务(FCFS),短作业优先(SJF),最高响应比优先(HRN)算法计算各个进程的开始运行时间,完成时间,周转时间,带权周转时间和所有作业的平均周转时间,平均带权周转时间。

作业到达时间/h运行时间/h开始时间完成时间周转时间带权周转时间平均周转时间平均带权周转时间
18.02.0





28.60.6





38.80.2





49.00.5






这里先贴出几个式子:

名称式子
响应比(等待时间 + 运行时间) / 运行时间
周转时间完成时间 - 到达时间
带权周转时间周转时间 / 运行时间
完成时间开始时间 + 运行时间

1.先来先服务(FCFS)

先来先服务按照作业到达时间的先后来调度作业运行,最先到达的作业会先投入运行,因为作业1到达时间最早所以最先运行作业1

  1. 开始时间为:8.0
  2. 完成时间为: 8.0+2.0=10.0
  3. 周转时间为:10.0-8.0=2.0
  4. 带权周转时间为:2.0/2.0=1.0

运行完作业1之后运行作业2

  1. 开始时间为作业1的完成时间:10.0
  2. 完成时间为:10.6
  3. 周转时间为:2.0
  4. 带权周转时间为:2.0 / 0.6

其他作业也是相同的原理,就不一一都写出来了,所有作业计算如下:

作业到达时间/h运行时间/h开始时间完成时间周转时间带权周转时间平均周转时间平均带权周转时间
18.02.08.010.02.01.02.0754.73
28.60.610.010.62.02.0/0.6
38.80.210.610.82.02.0/0.2
49.00.510.811.32.32.3/0.5

平均周转时间为:所有作业的周转时间之和/作业数量

(2.0 + 2.0 + 2.0 + 2.3) / 4 = 2.075

平均带权周转时间为:所有作业的带权周转时间之和/作业数量

(1.0 + 2.0/0.6 + 2.0/0.2 + 2.3/0.5) / 4 = 4.73



2.短作业优先(SJF)

短作业优先会先运行运行时间短的作业,比如上面的作业中,运行时间最短的是作业3,有人会问那是不是先运行作业3呢?答案是不对的,因为作业3的到达时间比较晚,在作业3到达之前作业1是第一个到达的,所以还是先运行作业1,作业1的完成时间是10.0,这时所有的作业都已经到达了,按照短作业优先算法,接下来运行作业3,然后是作业4,最后是作业2

运行作业1:

  1. 开始时间为:8.0
  2. 完成时间为: 8.0+2.0=10.0
  3. 周转时间为:10.0-8.0=2.0
  4. 带权周转时间为:2.0/2.0=1.0

运行作业3:

  1. 开始时间为:10.0
  2. 完成时间为: 10.0+0.2=10.2
  3. 周转时间为:10.2-8.8=1.4
  4. 带权周转时间为:1.4/0.2=7

其他作业也是相同的原理,就不一一都写出来了,所有作业计算如下:

作业到达时间/h运行时间/h开始时间完成时间周转时间带权周转时间平均周转时间平均带权周转时间
18.02.08.010.02.01.01.953.975
28.60.610.711.32.72.7/0.6
38.80.210.010.21.41.4/0.2
49.00.510.210.71.71.7/0.5

平均周转时间为:(2.0 + 2.7 + 1.4 + 1.7) / 4 = 1.95

平均带权周转时间为:(1 + 2.7/0.6 + 1.4/0.2 + 1.7/0.5) / 4 = 3.975



3.最高响应比优先(HRN)

最高响应比优先会先运行响应比高的的算法,这里要注意两个地方:1.算法到达的时间,第一个运行的依然是最先到达的算法。2.运行完一个算法之后,其他算法的响应比要重新计算

这里还是先运行算法1,算法1的完成时间为10.0,运行完算法1之后接下来运行响应比最大的算法,计算响应比:

等待时间为:上一个算法的完成时间 - 当前算法的到达时间

算法2响应比:(10 - 8.6 + 0.6) / 0.6 = 10/3
算法3响应比:(10 - 8.8 + 0.2) / 0.2 = 7
算法4相应比:(10 - 9.0 + 0.5) / 0.5 = 3

因为算法3的响应比最大,所以先运行算法3

  1. 开始时间为:10.0
  2. 完成时间为: 10.0+0.2=10.2
  3. 周转时间为:10.2-8.8=1.4
  4. 带权周转时间为:1.4/0.2=7

运行完算法3之后,算法2和算法4的响应比要重新计算,算法3的完成时间为10.2

算法2响应比:(10.2 - 8.6 + 0.6) / 0.6 = 22/6
算法4响应比:(10.2 - 9.0 + 0.5) / 0.5 = 17/5

因为算法2的响应比大于算法4,所以接下来运行算法2,最后运行算法4

其他作业也是相同的原理,就不一一都写出来了,所有作业计算如下:

作业到达时间/h运行时间/h开始时间完成时间周转时间带权周转时间平均周转时间平均带权周转时间
18.02.08.010.02.01.01.9754.067
28.60.610.210.82.22.2/0.6
38.80.210.010.21.41.4/0.2
49.00.510.811.32.32.3/0.5

平均周转时间为:(2.0 + 2.2 + 1.4 + 2.3) / 4 = 1.975

平均带权周转时间为:(1 + 2.2/0.6 + 1.4/0.2 + 2.3/0.5) / 4 = 4.067



说的不对的地方还请指出,不胜感激 [嘻嘻]

标签:作业,调度,算法,带权,时间,周转,2.0
来源: https://blog.51cto.com/u_15166912/2706855