1.作业包:scheduler.py
2.作业说明:
通过程序 s c h e d u l e r . p y scheduler.py scheduler.py,我们能够观察到不同进程调度算法执行情况,譬如响应时间、周转时间和总等待时间。
命令行参数解释如下:
- − h -h −h: 查看帮助信息以及推出
- − s -s −s: 随机数生成器的种子
- − j -j −j: 系统中的进程数量
- − l -l −l: 使用进程列表,进程间用逗号隔开,不使用随机生成的进程
- − m -m −m:进程执行时间的最大长度
- − p -p −p:进程调度算法,包括 S J F SJF SJF, F I F O FIFO FIFO, R R RR RR
- − q -q −q:RR调度算法的时间片长度
- − c -c −c:计算进程调度执行情况
3.作业要求:
(1)使用 S J F SJF SJF 和 F I F O FIFO FIFO 调度算法运行3个执行时间为200的进程,计算响应时间和周转时间
答:该题目下
S
J
F
SJF
SJF 和
F
I
F
O
FIFO
FIFO 调度算法执行情况一致,下面仅显示
F
I
F
O
FIFO
FIFO 的执行结果。
计算执行情况:
作业 | 响应时间 | 周转时间 | 等待时间 |
---|---|---|---|
1 | 0 | 200 | 0 |
2 | 200 | 400 | 200 |
3 | 400 | 600 | 400 |
平均 | 200 | 400 | 200 |
运行验证:
(2)修改 3 个进程的执行时间为100、200 和 300
答:该题目下 S J F SJF SJF 和 F I F O FIFO FIFO 调度算法执行情况一致,下面仅显示 F I F O FIFO FIFO 的执行结果。
计算执行情况:
作业 | 响应时间 | 周转时间 | 等待时间 |
---|---|---|---|
1 | 0 | 100 | 0 |
2 | 100 | 300 | 100 |
3 | 300 | 600 | 300 |
平均 | 133.33 | 500 | 133.33 |
运行验证:
(3)修改 (1) 调度算法为
R
R
RR
RR 且 时间片为 1
计算执行情况:
作业 | 响应时间 | 周转时间 | 等待时间 |
---|---|---|---|
1 | 0 | 598 | 398 |
2 | 1 | 599 | 399 |
3 | 2 | 600 | 400 |
平均 | 1 | 599 | 399 |
运行验证:
(4)使用什么样的工作负载,
S
J
F
SJF
SJF 和
F
I
F
O
FIFO
FIFO 调度算法产生的周转时间相同?
答:归纳前两问可知,只要前面的进程的执行时间小于等于后面的进程执行时间即可。
(5)使用什么样的工作负载和时间片, S J F SJF SJF 和 R R RR RR 调度算法产生的响应时间相同?
答:进程的执行时间和时间片长度相同时。
(6)随着进程执行时间增长, S J F SJF SJF 调度算法的响应时间如何? 使用模拟器表示这一趋势
答:进程执行时间同步增长,则 S J F SJF SJF 调度算法的响应时间同步增长。
3个进程执行时间:1,1,1
3个进程执行时间:2,2,2
(6)随着时间片增长,
R
R
RR
RR 调度算法的响应时间如何? 给出
N
N
N 个进程下最坏响应时间的公式
答:时间片 q q q 增长,则 R R RR RR 调度算法的响应时间增长。