例题:
计算在单CPU环境下,采用FCFS调度算法、SJF优先调度算法时的平均周转时间和平均带权周转时间,并指出它们的调度顺序。
进程号 |
到达时刻 |
服务时间(小时) |
A |
9:00 |
2 |
B |
9:30 |
1 |
C |
9:40 |
0.5 |
D |
10:30 |
0.4 |
公式:
周转时间 = 完成时间 - 到达时间
带权周转时间 = 周转时间 / 服务时间
平均周转时间 = 周转时间 / 进程数量
平均带权周转时间 = 带权周转时间 / 进程数量
完成时间的计算方法不同,分别如下:
先来先服务(FCFS)调度算法:
FCFS调度顺序:A、B、C、D(先来先服务)
FCFS完成时间:A(完成时间)=A(到达时间)+A(服务时间)=9+2=11
B(完成时间)=A(完成时间)+B(服务时间)=11+1=12
C(完成时间)=B(完成时间)+C(服务时间)
D(完成时间)=C(完成时间)+D(服务时间)
(该进程完成时间 =上一进程的完成时间 + 这个进程的服务时间)
单位要转化
进程号 | 到达时刻 | 服务时间(小时) | 开始时间 | 完成时间 | 周转时间(小时) | 带权周转时间 |
A | 9:00 | 2 | 9 | 11 | 2 | 1 |
B | 9:30 | 1 | 11 | 12 | 2.5 | 2.5 |
C | 9:40 | 0.5 | 12 | 12:30 | 2.83 | 5.66 |
D | 10:30 | 0.4 | 12:30 | 12:54 | 2.4 | 6 |
平均周转时间:(2+2.5+2.38+2.4)/4=2.32
平均带权周转时间:(1+2.5+5.66+6)/4=3.79
短作业优先(SJF)调度算法:
SJF调度顺序:A、D、C、B
SJF完成时间: A(完成时间)=A(到达时间)+A(服务时间)
D(完成时间)=A(到达时间)+D(服务时间)
C(完成时间)=D(到达时间)+C(服务时间)
B(完成时间)=C(到达时间)+B(服务时间)
进程号 | 到达时刻 | 服务时间(小时) | 开始时间 | 完成时间 | 周转时间(小时) | 带权周转时间 |
A | 9:00 | 2 | 9 | 11 | 2 | 1 |
B | 9:30 | 1 | 11:54 | 12:54 | 3.4 | 3.4 |
C | 9:40 | 0.5 | 11:24 | 11:54 | 2.4 | 4.8 |
D | 10:30 | 0.4 | 11 | 11:24 | 0.9 | 2.25 |
平均周转时间: (2+3.4+2.45+0.9)/4=2.6875
平均带权周转时间: (1+3.4+4.8+2.25)/4=2.8625