通过程序scheduler.py,我们能够观察到不同进程调度算法执行情况,譬如响应时间、周转时间和总等待时间。
首先,我们要找到需要用到的程序。
1.使用SJF和FIFO调度程序运行长度为200的三个作业时,计算响应时间和周转时间。
SJF
可以看出三个进程的周转时间分别是200,400,600;平均周转时间是400
响应时间分别是0,200,400;平均响应时间是200
FIFO
可以看出和SJF算法的结果一致三个进程的周转时间分别是200,400,600;平均周转时间是400
响应时间分别是0,200,400;平均响应时间是200
2.现在做同样的事情,但有不同长度的作业,即100、200和300。
SJF
他们的响应时间分别是0,100,300。平均响应时间是133.33
周转时间分别是100,300,600.平均周转时间是333.33
FIFO
这里因为三个程序的顺序本来就是递增排列又同时到达,所以和SJF的结果相同
响应时间分别是0,100,300。平均响应时间是133.33
周转时间分别是100,300,600.平均周转时间是333.33
3.现在做同样的事情,但采用RR调度程序,时间片为1。
轮转是将三个进程切片公平地运行
三个进程的响应时间分别是0,1,2。平均响应时间是1
周转时间分别是598,599,600.平均周转时间是599。
可以看出轮转这种算法响应时间很优,但是周转时间却很糟糕。
4.对应什么类型的工作负载,SJF提供与FIFO相同的周转时间?
答:只要到达的进程的执行时间是从小到大排列就可以
5.对应什么类型的工作负载和量子长度,SJF和RR提供相同的响应时间?
答:每个程序的执行时间都等于轮转划分的时间片的长度。
6.随着工作长度的增加,SJF的响应时间会怎么样?你能使用模拟程序来展示趋势吗?
答:会增加;以5,5,5和10,10,10举例
这种趋势是:随着程序执行时间的增加,响应时间会变长。
7.随着量子长度的增加,RR的响应时间会怎么样?你能写一个方程计算给定N个工作时,最坏的响应时间吗?
我想题目中的量子长度指的是划分的时间片的长度。时间片长度增加RR的响应时间一定会增加。
假定时间片长度为t,那么平均的响应时间为:
[0+t+2*t+······(N-1)*t]/N=[(N-1)*t]/2
由于时间片必须是时钟的倍数,又要小于最短的一个进程的执行时间,我们便能找到这个t值。将它带入上面的式子就能得到最坏响应时间。