设有四道作业,它们的到提交时间和执行时间如下:作业号 提交时间 运行时间 A 9.0 2.0 B 9.2 1.0 C 9.4 0.5 D 9.5 0.3 试计算在单道程序设计环境下,采用 (1)先来先服务调度算法 (2)非抢占式短作业优先调度算法 (3)抢占式短作业优先调度算法(此题的数据不太合理,可以不做,但是请看课件掌握) (4)最高响应比优先调度算法 时它们的调度序列及平均周转时间和平均带权周转时间。
时间: 2024-04-28 09:26:50 浏览: 17
好的,根据您提供的作业提交时间和执行时间,我帮您计算以下几种调度算法的调度序列、平均周转时间和平均带权周转时间。
首先,我们需要计算每个作业的完成时间、周转时间和带权周转时间,公式如下:
完成时间 = 开始时间 + 运行时间
周转时间 = 完成时间 - 提交时间
带权周转时间 = 周转时间 / 运行时间
下面分别是四种调度算法的计算过程和结果:
1. 先来先服务调度算法(FCFS)
按照作业提交的先后顺序进行调度。
调度序列:A -> B -> C -> D
| 作业 | 提交时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
|------|----------|----------|----------|----------|----------|----------------|
| A | 9.0 | 2.0 | 9.0 | 11.0 | 2.0 | 1.0 |
| B | 9.2 | 1.0 | 11.0 | 12.0 | 2.8 | 2.8 |
| C | 9.4 | 0.5 | 12.0 | 12.5 | 3.1 | 6.2 |
| D | 9.5 | 0.3 | 12.5 | 12.8 | 3.3 | 11.0 |
平均周转时间 = (2.0 + 2.8 + 3.1 + 3.3) / 4 = 2.8
平均带权周转时间 = (1.0 + 2.8 + 6.2 + 11.0) / 4 = 5.0
2. 非抢占式短作业优先调度算法(SJF)
按照作业需要的运行时间进行排序,运行时间短的作业先执行。
调度序列:D -> C -> B -> A
| 作业 | 提交时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
|------|----------|----------|----------|----------|----------|----------------|
| D | 9.5 | 0.3 | 9.5 | 9.8 | 0.3 | 1.0 |
| C | 9.4 | 0.5 | 9.8 | 10.3 | 0.9 | 1.8 |
| B | 9.2 | 1.0 | 10.3 | 11.3 | 2.1 | 2.1 |
| A | 9.0 | 2.0 | 11.3 | 13.3 | 4.3 | 2.15 |
平均周转时间 = (0.3 + 0.9 + 2.1 + 4.3) / 4 = 1.65
平均带权周转时间 = (1.0 + 1.8 + 2.1 + 2.15) / 4 = 1.76
3. 抢占式短作业优先调度算法(Preemptive SJF)
按照作业需要的运行时间进行排序,运行时间短的作业先执行。如果有新的作业到达,并且它的运行时间比当前正在执行的作业还要短,则暂停当前作业,执行新的作业。
这里的数据不太合理,因为作业D的运行时间只有0.3,很难出现抢占的情况。所以我们暂不考虑这种调度算法。
4. 最高响应比优先调度算法(HRRN)
按照作业相应比进行排序,响应比高的作业先执行。
响应比 = (等待时间 + 运行时间) / 运行时间
调度序列:A -> B -> C -> D
| 作业 | 提交时间 | 运行时间 | 等待时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 | 响应比 |
|------|----------|----------|----------|----------|----------|----------|----------------|--------|
| A | 9.0 | 2.0 | 0.0 | 9.0 | 11.0 | 2.0 | 1.0 | 1.0 |
| B | 9.2 | 1.0 | 1.8 | 11.0 | 12.0 | 2.8 | 2.8 | 2.8 |
| C | 9.4 | 0.5 | 2.6 | 12.0 | 12.5 | 3.1 | 6.2 | 6.2 |
| D | 9.5 | 0.3 | 3.3 | 12.5 | 12.8 | 3.3 | 11.0 | 11.0 |
平均周转时间 = (2.0 + 2.8 + 3.1 + 3.3) / 4 = 2.8
平均带权周转时间 = (1.0 + 2.8 + 6.2 + 11.0) / 4 = 5.0