课程作业-第八章:
8.1只用两个作业和两个队列运行几个随机生成的问题。针对每个作业计算 MLFQ 的执行记录。为了简化计算,限制每项作业的长度并关闭 I/O。
答:

终端输入./mlfq.py -n 2 -j 2 -m 100 -M 0 -s 9 -c
指令中,-n为队列个数,-j为工作个数,-m为每项作业长度上限,-M为I/O频率,因为关闭I/O,其频率为0
这里,队列个数为2,工作个数为2,每项作业上限为100,I/O频率为0,随机种子为9,显示查看每个单位时间的运行情况。如下图所示:

假设Job0为事件A,Job1为事件B,分析如下表所示:
|
时刻 |
队列0 |
队列1 |
CPU |
|
0-10 |
AB |
A | |
|
10-20 |
A |
B |
B |
|
20-30 |
AB |
A | |
|
31-35 |
BA |
B | |
|
35-60 |
A |
A |
在34时间时,B(Job1)完成工作;在60时间时,A(Job0)完成工作。
每个Job的周转时间和响应时间如下图所示:

从图中可以看出,平均响应时间为5.00,平均周转时间为47.00。其他情况分析方法同上。
8.3将如何配置调度程序参数,使得调度程序像轮转调度程序那样工作?
答:
将队列数设置为1,即可使得调度程序像轮转调度程序那样工作。具体过程如下图所示:

这里,给出一个队列,三个Job,时间片长度为4,可以看到,三个工作以4为单位循环使用CPU。
8.5给定一个系统,其最高队列中的时间片长度为 10ms,你需要如何频繁地将工作推回到最高优先级级别(带有-B 标志),以保证一个长时间运行(并可能饥饿)的作业得到至少5%的CPU?
答:
10ms/5%=200ms,所以boost的周期设置为200ms,才能使该工作至少得到5%的CPU。或者,设置成200的整数倍数ms也可以,但不如直接设置为200ms优。并且,任务数量需要少于20个。
本文详细描述了MLFQ调度算法在特定条件下的应用,包括计算执行记录、分析周转时间和响应时间。还探讨了如何配置参数以实现轮转调度以及如何确保长运行作业获得足够CPU资源。
1533

被折叠的 条评论
为什么被折叠?



