【LittleXi】第四章 Process Intro exercise

2023-09-21 10:30:53

【LittleXi】第四章 Process Intro exercise

第四章

实验准备

  • 下载实验所需代码

wget http://pages.cs.wisc.edu/~remzi/OSTEP/Homework/HW-CPU-Intro.tgz

  • 解压

tar -zxvf HW-CPU-Intro.tgz

  • 注意一定要用python2

sudo apt-get update && sudo apt-get install python2

问题

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

答:从运行python2 ./process-run.py -l 5:100,5:100的截图来看,CPU的利用率应该是100%,因为运行的过程种进程1并没有运行

请添加图片描述

验证答案,确实正确python2 ./process-run.py -l 5:100,5:100 -c

请添加图片描述

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

答:运行 python2 ./process-run.py -l 4:100,1:0,完成进程0消耗的时间是4个CPU时间,第二个进程完成的时间无法确认,因为从打印的结果来看,进程1仅仅输出了io,并不能完全确定消耗的CPU时间

请添加图片描述

进一步运行python2 ./process-run.py -l 4:100,1:0 -c可以发现,进程0和我们的答案一致,进程2的io占用一次,然后4个CPU时间被阻塞,最后一个CPU时间完成进程

请添加图片描述

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

答:运行python2 ./process-run.py -l 1:0,4:100后发现进程0,1交换了运行顺序,交换顺序重要性暂时看不出来

请添加图片描述

运行python2 ./process-run.py -l 1:0,4:100 -c之后发现交换进程顺序非常重要了,因为在这里可以看到,进程0在阻塞的时间并不会占用CPU的时间,而是把CPU的时间给进程1了,这样大大节省了两个进程完成的总时间

请添加图片描述

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

答:运行python2 ./process-run.py -l 1:0,4:100 -c -S SWITCH_ON_END,将标志设置为SWITCH_ON_END后,进程0就会一直占用CPU时间,让总的运行时间延长了

请添加图片描述

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

答:运行python2 ./process-run.py -l 1:0,4:100 -c -S SWITCH_ON_IO,将标志设置为SWITCH_ON_IO后,进程0阻塞时会释放CPU占用,和默认情况一样

请添加图片描述

6.另一个重要的行为是 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)系统资源是否被有效利用?

答:运行python2 process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_LATER -c -p,可以发现完成IO后,当CPU非空闲时,该进程不会立刻运行

请添加图片描述

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

答:运行python2 process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_IMMEDIATE -c -p,正如我们set的一样,CPU在完成IO流之后会直接占用CPU时间

请添加图片描述

8.现在运行一些随机生成的进程,例如, -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 时会发生什么?

答:运行随机生成的进程,普遍性而言和预测的差不多,SWITCH_ON_IO和 IO_RUN_IMMEDIATE 开启后,整体CPU占用率会明显增加,且IO率也会明显增加(因为花费的总时间变少了)
请添加图片描述

更多推荐

《Linux 内核编码风格》官方手册!

这是一篇官方手册译文,分享给大家这是一个简短的文档,描述了Linux内核的首选编码风格。编码风格非常个人化,这是我必须要维护的代码(指Linux内核代码)的编码风格,对于其他项目代码,我也希望使用它。写内核代码时请至少考虑本文提出的风格。首先,我建议打印出GNU编码标准,然后不要阅读。烧掉它们,这是一个很棒的象征性动作

mariadb

1.[root@localhostsystem]#yuminstall-ymariadb-server已加载插件:fastestmirror,langpacksLoadingmirrorspeedsfromcachedhostfile*base:ftp.sjtu.edu.cn*extras:ftp.sjtu.edu.c

网络安全攻防对抗之隐藏通信隧道技术整理

完成内网信息收集工作后,渗透测试人员需要判断流量是否出得去、进得来。隐藏通信隧道技术常用于在访问受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的数据传输。一、隐藏通信隧道基础知识(一)隐藏通信隧道概述一般的网络通信,先在两台机器之间建立TCP连接,然后进行正常的数据通信。在知道IP地址的情况下,可以直接发送报

Flink中的批和流

批处理的特点是有界、持久、大量,非常适合需要访问全部记录才能完成的计算工作,一般用于离线统计。流处理的特点是无界、实时,无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。而在Flink中,一切都是由流组成的,Flink认为有界数据集是无界数据流的一种特例,离线数据是有界限的流,实时数

MySQL如何高效实现刷脏页,了解原理并学会配置

目录一、什么是刷脏页二、MySQL刷脏页的策略三、MySQL刷脏页的实现原理四、MySQL如何实现刷脏页一、什么是刷脏页在MySQL中,刷脏页是指将内存中已被修改的数据页(也称为脏页)写回到磁盘的过程。当MySQL执行数据更新操作时,会将修改后的数据先写入内存的缓存区(称为脏页),然后通过后台线程将这些脏页定期或根据一

【MySQL】专栏合集,从基础概念到调优

作者简介前言博主之前写过一个MySQL的系列,从基础概念、SQL到底层原理、优化,专栏地址:https://blog.csdn.net/joker_zjn/category_12305262.html?spm=1001.2014.3001.5482本文会是这个系列的清单,拉通来聊一聊Mysql从基础概念一直到优化的相关

爬虫 — Js 逆向案例四网易云音乐评论

目标网站:https://music.163.com/#/song?id=2054300084需求:获取评论内容,用户名案例分析1、分析网站加载方式动态加载,抓包找到目标url:https://music.163.com/weapi/comment/resource/comments/get?csrf_token=2、

VIOOVI干货分享:什么是SOP?它的六要素是什么?

什么是SOP,SOP就是标准化的作业程序。它以文档的形式,详细的描述操作人员在生产操作过程中的操作步骤和应当遵守的事项;是操作人员的操作说明书;也是检查员指导工作的依据。SOP的六要素是:物料名称和数量:生产之前,必须确认本工作岗位所需材料与准备的材料是否一致,数量是否正确,材料是否经过IQC检验。只有在所有确认无误之

Dubbo学习(一)——dubbo学习背景

文章目录前言分布式基础理论什么是分布式系统发展演变ORMMVCRPCSOARPC(远程调用)什么是RPCRPC工作原理为什么RPC要用到DubboDubbo的优势高性能可扩展性高可靠性监控和管理使用示例总结前言分布式基础理论什么是分布式系统分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统分布式系

【每日一题Day333】LC2603收集树中金币 | 拓扑排序

收集树中金币【LC2603】给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,其中coins[i]可能为0也可能为1,1表示节点i处有一个金币。一开始,你需

5.11.Webrtc接口的设计原理

在上节课中呢,我向你介绍了webrtc的接口宏,那有很多同学会产生疑问啊,那觉得webrtc为什么要把接口设计的这么复杂?还非要通过宏来实现一个代理类,再通过代理类来调用到webrtc内部。那为什么要这么设计呢?实际上它的这样一种设计啊,它是有一定理论的,那下面呢,我们就来详细看一下webrtc为什么要这么做?那这张图

热文推荐