chapter4

news/2024/10/22 1:18:33

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

系统资源没有被有效利用,时钟周期1923,2630,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74435.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

如何以最简单的方式传输文件到开发板上-lrzsz-ZModem

在某鱼上闲逛的时候,看到树莓派A+这个型号的板子,很便宜30来块钱,有6ULL的性能。 但是既没有网口、也没有WiFi,只有一个usb,电脑和它传数据岂不是非常麻烦?其实有一个非常好用的协议叫ZModem,它的设计就是主要为了能在串口这种几乎无需配置的连接协议上传输文件。类似的…

东山Pi柒号-3-STM32MP1 引导链概述

进行移植前先看看ST官网的一些资料,了解芯片的工作方式: STM32MP1 引导链概述 https://wiki.stmicroelectronics.cn/stm32mpu/wiki/STM32MP1_boot_chain_overview启动步骤如下BROM(BL1):芯片内部程序,根据BOOT PIN读取对应启动设备里的程序到内部SYSRAM执行,工作在在Secur…

派生类

派生类 1. 派生类2. 派生类对象定义时调用构造函数的顺序 Man man;3. public、protected、private 4. 函数遮蔽

2024年好用的短链接短网址工具推荐

小码短链接,作为一款专业的短链接生成和统计工具,能够帮助您轻松应对各种场景需求,让运营工作变得简单高效。 小码短链接功能介绍 1. 链接缩短 小码短链接不仅可以缩短您的原始链接,还可以提供简洁美观的短链接形式。通过短链接,您可以有效地减少短信或营销内容的字数,从…

Python找不到项目模块解决方法

BiliBili VsCode在使用Python过程中遇到找不到项目模块的问题问题描述 目录及代码如下的项目结构demo ├─ main.py └─ src├─ __init__.py├─ a.py└─ b.py在"src/a.py"文件中有一个方法,代码如下def xxc():print("hello")在"src/b.py"和…

循环结构程序设计

为什么需要循环控制 循环结构或称重复结构 几乎每一种计算机高级语言都提供了循环控制,用来处理需要进行的重复操作 大多数的应用程序都会包含循环结构 循环结构和顺序结构、选择结构是结构化程序设计的3中基本结构,它们是各种复杂程序的基本构成单元。 用 while 语句实现循环…

python 实现课堂练习

module.py中的:import math class Complex:def __init__(self,real=0,imag=0):self.real=realself.imag=imagdef add(self,other):if isinstance(other,Complex):self.real=self.real+other.realself.imag=self.imag+other.imag def output(other):if isinstance(other, Compl…

Portainer - 用于管理容器的 UI-k8s

简介 🔰什么是Portainer? Portainer 是一个开源的轻量级管理 UI,它允许我们在 Docker、Docker Swarm、Kubernetes 和 Azure ACI 中轻松构建和管理容器,例如管理 Swarm 服务的创建和删除、用户身份验证、授权、连接、执行命令运行容器的控制台,并查看容器的日志。 Portainer …