本系列是查阅无数资料,又不想从头开始读厚厚的计算机操作系统教材,痛定思痛之后脑洞大开的结果。鉴于我有一些基础概念,那就从破坏性实验开逆向思考:用垃圾代码搞坏 Linux,顺便了解各种情况下系统诊断命令的输出。
我的智商下,第一个可能搞坏操作系统的代码就是死循环了。
先上代码。最简单的 Python。
def run():
i = 0
while(True):
i += 1
if __name__ == "__main__":
run()
在 linux 上执行这个 Python 脚本。
使用 top 查看
关键信息:
load avarage 的三个值依次开始升高。因为分别代表 1 、 5、 15 分钟的系统负载
load avarage 第一位一分钟后达到 ~ 1。表示单核 cpu 被占满。
python 进程的 cpu 达到 100%,该进程所在的 cpu 占满。
cpu idle 达到 93.5 ,说明整体看 cpu 还是非常空的。 idle 近似理解成空跑。晶振在不停的发时钟信号,但是没有任务要做。
继续用 htop 看系统状态
可以看到编号是 10 的 CPU 占用率居高不下,其他 cpu 没动静。传说中的:一方有难、八方围观。
关键信息:
死循环执行一段时间后 load avarage 现在都起来了,依次起立。起来吧,极寒交迫的 CPU
系统硬件 CPU 是 8 core 16 thread。Htop 里面 cpu 显示了 16 个。
一个进程会在一个固定逻辑 cpu 中执行,不会调度到其他 cpu 上。
破坏加码
死循环搞不坏系统,假如再起一个死循环呢?
打开两个命令行,执行两个 forever loop 代码
HTOP 里面成功点亮第二个 cpu 。
关键信息:
TOP 中观察 cpu 相关数据
关键信息:
版权声明:本文由「Airy」发表于segmentfault 【https://segmentfault.com/a/1190000041052115】
如有侵权,请联系[[commuinty@eolink.com](mailto:commuinty@eolink.com)](mail to:[commuinty@eolink.com](mailto:commuinty@eolink.com))删除。