Operating Systems: Three Easy Pieces: CPU虚拟化作业

≡放荡痞女 提交于 2020-03-06 01:25:40

模拟进程状态转换

1.作业包:process-run.py

2.作业说明:在这里插入图片描述

3.作业要求:

(1)Run process-run.py with the following flags:-l5:100,5:100.
参数 -l PROCESS_LIST:逗号分隔的进程列表,形式是X1:Y1,X2:Y2,...,其中X代表进程指令数,Y(0~100)代表运行指令还是声明I/O请求
在这里插入图片描述在这里插入图片描述
该命令运行进程0,运行5条指令,且每条指令的CPU占用率为100%,此时进程1处于就绪状态,进程0运行完毕,CPU运行进程1,执行同样操作,总用时10单位时间。

(2) Now run with these flags: ./process-run.py -l 4:100,1:0.
在这里插入图片描述
该命令运行进程0,运行4条指令,且每条指令的CPU占用率为100%,之后进程1发出I/O请求,CPU阻塞该进程,I/O执行3单位时间,CPU解除进程1的阻塞状态,进程1执行完成操作,总用时10单位时间。

(3) Switch the order of the processes: -l 1:0,4:100.
在这里插入图片描述
该命令运行进程0发出I/O请求,CPU阻塞该进程,并执行I/O操作,同时CPU运行进程1,运行4条指令,且每条指令的CPU占用率为100%,4个单位时间后I/O操作和进程1均运行完成,进程0执行完成操作,总用时6个单位时间。

(4) SWITCH_ON_END参数会使得CPU等待I/O操作的完成。
在这里插入图片描述
SWITCH_ON_END参数会使得CPU等待I/O操作的完成。
该命令运行进程0发出I/O请求,CPU阻塞该进程,并执行I/O操作4个单位时间,然后进程0执行完成操作,同时CPU运行进程1的指令,运行4个单位时间,总用时9个单位时间。

(5) SWITCH_ON_IO参数会使得CPU在I/O操作时同时运行进程,为该模拟器的默认操作,结果与(3)一致

(6)(7) IO_RUN_IMMEDIATE参数 VS IO_RUN_LATER参数
为增强对比,减少I/O请求为2条,CPU进程为1个。
在这里插入图片描述
两者的区别在于I/O操作执行完是CPU先接受下一个I/O请求,还是运行进程指令。由于采用默认模式SWITCH_ON_IO,CPU执行指令与I/O操作同时进行,因而 IO_RUN_IMMEDIATE快一个单位时间。

(8)题为上述命令综合运用,提高不大,不做。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!