课程作业-第四章:
4.1用以下标志运行程序:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用时间的百分比)应该是多少?说明理由。然后利用 -c 和-p 标志查看你的答案是否正确。
答:
Process1和Process0两个进程都只使用CPU。其中,-l 指使用 process_list 模式,A表示进程的指令数量, B表示进程使用CPU利用率。在题目中,运行两个进程,每个进程有5条指令,因为CPU每一时刻都被使用到,所以CPU利用率为100%。
我们输入-c 查看,发现符合预期。
4.2现在用这些标志运行:./process-run.py -l 4:100,1:0。这些标志指定了两个进程:一个进程包含 4 条指令(都使用 CPU),另一个进程只是简单地发出 I/O 并等待它完成。完成这两个进程需要多长时间?利用-c 和-p 检查你的答案是否正确。
答:
先运行第一个命令的4个指令,然后在 Time=5时运行第二个命令的io指令,发起io(每
次 io 的默认占用 5 个单位时间)。经过5个单位时间的 WAITING 状态后,PID1的状态变为DONE。总共时间为9。
4.3现在交换进程的顺序运行:./process-run.py -l 1:0,4:100。现在发生了什么?交换顺序是否重要?为什么?同样,用-c 和-p 看看你的答案是否正确。
答:
- 执行时间Time从9变为了5。这是因为,PID0进程在开始时发起I/O请求,它会被阻塞。在被阻塞的时候执行进程PID1,所以时间变短了。
- 交换进程执行顺序很重要,有时候可以提高CPU的利用率。
4.4现在探索另一些标志。一个重要的标志是-S,它决定了当进程发出 I/O 时系统如何反应。将标志设置为 SWITCH_ON_END,在进程进行 I/O 操作时,系统将不会切换到另一个进程,而是等待进程完成。当你运行以下两个进程时,会发生什么情况?一个执行 I/O,另一个执行 CPU 工作。(-l 1:0,4:100 -c -S SWITCH_ON_END)
答:
这种方法为使用标记阻止切换。在这种情况下,系统将停止并等待I/O操作结束,再进行下一个进程。这种方式消耗的时间与第二题的时间相同,CPU利用率非常低。
4.5现在,运行上述相同的进程,只是把切换行为设置为当一个进程在等待 I/O 时切换到另一个进程(-l 1:0,4:100 -c -S SWITCH_ON_IO)。现在会发生什么?利用-c 和-p 来确认你的答案是否正确。
答:
执行时间从9变为了5。原因如下,PID0进程发起I/O请求,它会被阻塞。在被阻塞的时候执行进程 PID1,所以时间变短了。