chapter4

img

通过python process.run.py -h命令了解了process.run.py的可用的选项

题外话(关于/home目录的):

/home 目录是 Linux 系统中用于存储用户个人文件的地方。每个用户在 /home 下都有一个以其用户名命名的子目录,用于存放该用户的个人数据和设置。以下是一些 /home 目录的特点:

  • 用户目录:每个用户的主目录通常是 /home/username,其中 username 是用户的登录名。

  • 个人文件:用户可以在其主目录中创建文件夹和文件,保存文档、图片、下载的内容等。

  • 配置文件:用户的个性化配置文件(如 .bashrc.profile)通常以点(.)开头,存放在用户的主目录中。

  • 权限:用户只能访问和修改自己的主目录,其他用户无法直接访问,除非他们有适当的权限。

第一题

问题:用以下标志运行程序:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用时间的百分比)应该是多少?为什么你知道这一点?利用 -c 标记查看你的答案是否正确。

运行./process-run.py -l 5:100,5:100

img

运行./process-run.py -l 5:100,5:100 -c./process-run.py -l 5:100,5:100 -c -p

img

CPU利用率为100%,程序没有进行IO操作。

第二题

问题:现在用这些标志运行:./process-run.py -l 4:100,1:0。这些标志指定了一个包含 4 条指令的进程(都要使用 CPU),并且只是简单地发出 I/O 并等待它完成。完成这两个进程需要多长时间?利用-c 检查你的答案是否正确。

运行./process-run.py -l 4:100,1:0

img

运行./process-run.py -l 4:100,1:0 -c

img

运行./process-run.py -l 4:100,1:0 -c -p

img

需要11个时间周期(Time)

第三题

题目:现在交换进程的顺序:./process-run.py -l 1:0,4:100。现在发生了什么?交换顺序是否重要?为什么?同样,用-c 看看你的答案是否正确。

运行./process-run.py -l 1:0,4:100

img

运行./process-run.py -l 1:0,4:100 -c

img

运行./process-run.py -l 1:0,4:100 -c -p

img

进程0(PID:0)执行IO操作,进程1(PID:1)使用CPU,运行时间从11个时间周期变为7个时间周期

第四题

问题:现在探索另一些标志。一个重要的标志是-S,它决定了当进程发出 I/O 时系统如何反应。将标志设置为 SWITCH_ON_END,在进程进行 I/O 操作时,系统将不会切换到另一个进程,而是等待进程完成。当你运行以下两个进程时,会发生什么情况?一个执行 I/O,另一个执行 CPU 工作。(-l 1:0,4:100 -c -S SWITCH_ON_END

运行./process-run.py -l 1:0,4:100 -c -S SWITCH_ON_END

img

进程0(PID:0)执行IO操作时,进程1(PID:1)等待。

第五题

问题:现在,运行相同的进程,但切换行为设置,在等待 I/O 时切换到另一个进程(-l 1:0,4:100 -c -S SWITCH_ON_IO)。现在会发生什么?利用-c 来确认你的答案是否正确。

运行./process-run.py -l 1:0,4:100 -c -S SWITCH_ON_IO

img

进程0(PID:0)执行IO操作时,进程1(PID:1)使用CPU,执行CPU操作,充分利用CPU资源。

第六题

问题:另一个重要的行为是 I/O 完成时要做什么。利用-I IO_RUN_LATER,当 I/O 完成时,发出它的进程不一定马上运行。相反,当时运行的进程一直运行。当你运行这个进程组合时会发生什么?(./process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_ LATER -c -p)系统资源是否被有效利用?

运行./process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_ LATER -c -p

img

系统资源没有被有效利用,时钟周期19 ~ 23,26 ~ 30,CPU空闲

第七题

问题:现在运行相同的进程,但使用 -I IO_RUN_IMMEDIATE 设置,该设置立即运行发出I/O 的进程。这种行为有何不同?为什么运行一个刚刚完成 I/O 的进程会是一个好主意?

运行./process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_IMMEDIATE -c -p

img

系统资源被有效利用,当IO密集进程IO完毕时,立即切换到该进程发出IO操作请求,再让出CPU,使得系统资源被充分利用。(有过IO操作的进程很有可能后面也会进行IO操作,为了使CPU有效利用,应该在IO结束不久后运行该进程,使其得到继续阻塞IO的机会。)

第八题

问题:现在运行一些随机生成的进程,例如-s 1 -l 3:50,3:50, -s 2 -l 3:50,3:50, -s 3 -l 3:50,3:50。看看你是否能预测追踪记录会如何变化?当你使用-I IO_RUN_IMMEDIATE-I IO_RUN_ LATER 时会发生什么?当你使用-S SWITCH_ON_IO-S SWITCH_ON_END 时会发生什么?

以随机种子=1为例:

运行./process-run.py -s 1 -l 3:50,3:50 -c -p

img

使用-I IO_RUN_IMMEDIATE-I IO_RUN_ LATER

运行./process-run.py -s 1 -l 3:50,3:50 -c -p -I IO_RUN_IMMEDIATE

img

运行./process-run.py -s 1 -l 3:50,3:50 -c -p -I IO_RUN_LATER

img

两者没区别,因为在IO完成前所有CPU任务都已经完成

使用-S SWITCH_ON_IO-S SWITCH_ON_END

运行./process-run.py -s 1 -l 3:50,3:50 -c -p -S SWITCH_ON_IO

img

运行./process-run.py -s 1 -l 3:50,3:50 -c -p -S SWITCH_ON_END

img

posted @ 2024-10-22 01:11  hisun9  阅读(2)  评论(0编辑  收藏  举报