5个进程P1、 P2、 P3、 P4、P5几乎同时到达,预期运行时间分别为10、6、2、4、 8个时间单位。各进程的优先级分别为3、5、2、1、4(数值越大,优先级越高)。请按下列调度算法计算任务的平均周转时间(进程切换开销可忽略不计)。(1)先来先服务(按P1、P2、P3、P4、P5顺序)算法。(2)时间片[1]轮转算法,假定时间片大小为2个时间单位。(3) 优先权调度算法。
5个进程P1、 P2、 P3、 P4、P5几乎同时到达,预期运行时间分别为10、6、2、4、 8个时间单位。各进程的优先级分别为3、5、2、1、4(数值越大,优先级越高)。请按下列调度算法计算任务的平均周转时间(进程切换开销可忽略不计)。
(1)先来先服务(按P1、P2、P3、P4、P5顺序)算法。 (2)时间片[1]轮转算法,假定时间片大小为2个时间单位。 (3) 优先权调度算法。
题目解答
答案
(1)先来先服务(FCFS)算法
先来先服务算法按照进程到达的先后顺序进行调度。
周转时间计算:
P1:到达时间假设为 0,预期运行时间为 10 个时间单位,所以周转时间 = 完成时间 - 到达时间 = 10 - 0 = 10。
P2:到达时间为 0,需等待 P1 执行完,P1 执行 10 个时间单位后才轮到 P2,P2 预期运行时间为 6 个时间单位,所以周转时间 = (10 + 6) - 0 = 16。
P3:同理,到达时间为 0,需等待 P1 和 P2 执行完,即等待 10 + 6 = 16 个时间单位后才轮到 P3,P3 预期运行时间为 2 个时间单位,所以周转时间 = (10 + 6 + 2) - 0 = 18。
P4:到达时间为 0,需等待 P1、P2 和 P3 执行完,即等待 10 + 6 + 2 = 18 个时间单位后才轮到 P4,P4 预期运行时间为 4 个时间单位,所以周转时间 = (10 + 6 + 2 + 4) - 0 = 22。
P5:到达时间为 0,需等待 P1、P2、P3 和 P4 执行完,即等待 10 + 6 + 2 + 4 = 22 个时间单位后才轮到 P5,P5 预期运行时间为 8 个时间单位,所以周转时间 = (10 + 6 + 2 + 4 + 8) - 0 = 30。
平均周转时间计算:
平均周转时间 = (各进程周转时间之和)/ 进程个数
= (10 + 16 + 18 + 22 + 30) / 5
= 96 / 5
= 19.2(时间单位)
(2)时间片轮转算法(时间片大小为 2 个时间单位)
时间片轮转算法按照时间片轮流分配给各个进程执行。
调度过程及周转时间计算:
初始时,各进程都已到达,就绪队列中有 P1、P2、P3、P4、P5。
第一个时间片(0 - 2):执行 P1,P1 还剩预期运行时间 8 个时间单位,将 P1 放入就绪队列末尾。
第二个时间片(2 - 4):执行 P2,P2 还剩预期运行时间 4 个时间单位,将 P2 放入就绪队列末尾。
第三个时间片(4 - 6):执行 P3,P3 执行完毕(预期运行时间为 2 个时间单位),从就绪队列中移除。
第四个时间片(6 - 8):执行 P4,P4 还剩预期运行时间 2 个时间单位,将 P4 放入就绪队列末尾。
第五个时间片(8 - 10):执行 P5,P5 还剩预期运行时间 6 个时间单位,将 P5 放入就绪队列末尾。
第六个时间片(10 - 12):执行 P1,P1 还剩预期运行时间 6 个时间单位,将 P1 放入就绪队列末尾。
第七个时间片(12 - 14):执行 P2,P2 还剩预期运行时间 2 个时间单位,将 P2 放入就绪队列末尾。
第八个时间片(14 - 16):执行 P4,P4 执行完毕(预期运行时间为 2 个时间单位),从就绪队列中移除。
第九个时间片(16 - 18):执行 P5,P5 还剩预期运行时间 4 个时间单位,将 P5 放入就绪队列末尾。
第十个时间片(18 - 20):执行 P1,P1 还剩预期运行时间 4 个时间单位,将 P1 放入就绪队列末尾。
第十一个时间片(20 - 22):执行 P2,P2 执行完毕(预期运行时间为 2 个时间单位),从就绪队列中移除。
第十二个时间片(22 - 24):执行 P5,P5 还剩预期运行时间 2 个时间单位,将 P5 放入就绪队列末尾。
第十三个时间片(24 - 26):执行 P1,P1 执行完毕(预期运行时间为 4 个时间单位),从就绪队列中移除。
第十四个时间片(26 - 28):执行 P5,P5 执行完毕(预期运行时间为 2 个时间单位),从就绪队列中移除。
P1:周转时间 = 26 - 0 = 26。
P2:周转时间 = 22 - 0 = 22。
P3:周转时间 = 6 - 0 = 6。
P4:周转时间 = 16 - 0 = 16。
P5:周转时间 = 28 - 0 = 28。
平均周转时间计算:
平均周转时间 = (各进程周转时间之和)/ 进程个数
= (26 + 22 + 6 + 16 + 28) / 5
= 98 / 5
= 19.6(时间单位)
(3)优先权调度算法
优先权调度算法按照进程的优先级进行调度,优先级高的进程先执行。
调度过程及周转时间计算:
初始时,各进程都已到达,根据优先级排序,就绪队列顺序为 P2(优先级 5)、P5(优先级 4)、P1(优先级 3)、P3(优先级 2)、P4(优先级 1)。
先执行 P2,P2 预期运行时间为 6 个时间单位,执行完后从就绪队列中移除。
接着执行 P5,P5 预期运行时间为 8 个时间单位,执行完后从就绪队列中移除。
然后执行 P1,P1 预期运行时间为 10 个时间单位,执行完后从就绪队列中移除。
再执行 P3,P3 预期运行时间为 2 个时间单位,执行完后从就绪队列中移除。
最后执行 P4,P4 预期运行时间为 4 个时间单位,执行完后从就绪队列中移除。
P1:周转时间 = (6 + 8 + 10) - 0 = 24。
P2:周转时间 = 6 - 0 = 6。
P3:周转时间 = (6 + 8 + 10 + 2) - 0 = 26。
P4:周转时间 = (6 + 8 + 10 + 2 + 4) - 0 = 30。
P5:周转时间 = (6 + 8) - 0 = 14。
平均周转时间计算:
平均周转时间 = (各进程周转时间之和)/ 进程个数
= (24 + 6 + 26 + 30 + 14) / 5
= 100 / 5
= 20(时间单位).