电脑死机的时候,CPU到底在做什么?

前几天,读者群里有人聊起了一个问题:计算机为什么死机,死机的时候CPU在干什么?

我想起之前写过这方面的文章,想着估计有不少新粉没有看过,就挖个坟给大家看看,这个有趣又能涨知识的问题。

电脑死机,应该每个接触计算机的小伙伴都经历过吧。

尤其是早些年,电脑配置还没现在这么高的时候,多开几个重量级应用程序,死机就能如约而至,就算你把键盘上的CTRL+ALT+DELETE按烂了,任务管理器也出不来,最后只能默默含泪长按关机按钮,强制关机。

那么,你有没有想过,电脑在死机的时候,它到底在干嘛呢?

众所周知,计算机的核心中枢是中央处理器CPU。上过计算机基础课程的同学都被教导过:CPU是一根筋死脑筋,只知道不断的取出指令来一条条执行,直到关机方休。

所以理论上,死机分为两种,一种是CPU罢工不干了,不再执行下一条指令了,这属于硬件死机,不过这种情况基本不会发生。

更多的是软件层面的死机,也就是CPU被困在了某个地方出不来了,导致本该执行的程序得不到执行,看起来就是死机了一般。

聪明的你可能马上想到,如果写一个死循环,把CPU陷在里面出不去,是不是就能死机了?比如这样:

void dead_loop() {
  while (1) {
    ...
  }
}

你可以试一下,会发现为CPU降温的风扇可能会转起来,但计算机依旧能正常工作,并没有死机。

死循环,CPU不是应该一直在这里转圈吗?难道不会死机?

这就不得不提到一个概念:中断

中断

中断这个概念,绝对是计算机史上最伟大的发明之一。

中断,顾名思义,用于打断CPU正常的工作,让它去执行别处的指令程序。

操作系统之所以能够掌控全局,就得益于它启动时给CPU安插的一系列的中断处理函数(比如我们最常见的时钟中断),好让操作系统能周期性的收回CPU的执行权,调度别的线程来执行。

所以,即便你某个线程进入了死循环,在你的时间片用完之后,也得乖乖交出CPU,让别的程序来执行。

想用一个死循环就把电脑搞死机,那自然是不可能的。

其实想来也是,如果这么容易就给你搞死机了,那这操作系统也太菜了吧,新手如果刚学编程,还不得一天强制重起电脑十几回?

退一万步讲,就算不考虑中断的影响,现在的CPU大都是多核,一个线程进入死循环,但还有别的核可以参与系统调度,也依然不会死机。

那么回到开始的问题,那到底CPU被困在了哪里出不来,连中断都拿它没办法呢?

其实有两种情况:

1、中断确实拿它没办法

很多人都知道中断的概念,但很多人不知道,中断也是有优先级的。

这很容易理解,比如CPU正在执行程序,突然发生了一个中断事件。CPU保存好当前执行的上下文,转头去处理这个中断事件,但刚处理到一半儿,这时又有一个新的中断事件来了,那CPU怎么办?要不要响应?

所以中断也有优先级之分,低优先级的中断无法打断高优先级的中断。

有了这个前提来试想一下,如果由于操作系统内核代码写的不当,在处理某个中断的时候陷入了死循环,比如自旋锁,会发生什么?

因为在处理中断的时候,CPU运行在一个很高的优先级上,一般的中断是无法把执行权抢过去的,这就导致这颗CPU核心成为了“植物人”,怎么叫它都没反应了。

2、中断能抢到CPU,但发现没有线程可以调度

程序员们对死锁这个概念应该不陌生,两个线程A等待B,B等待A,两个线程互相等待对方让步(释放锁),形成僵持局面,最后成为死锁。

如果死锁发生在应用层面,那问题不大,最多就是两个程序死了。但如果发生在内核呢?

比如在Windows操作系统内核中,就有大量的全局性的锁,一个不小心造成死锁,其他想要的线程都得进入等待队列,那就凉凉了。

引用一段另一位大神Tim Chen的描述(我觉得特别形象):

电脑死机的时候,CPU到底在做什么?

原创文章,作者:AIRF,如若转载,请注明出处:http://www.ai-rf.com/index.php/2023/11/20/%e7%94%b5%e8%84%91%e6%ad%bb%e6%9c%ba%e7%9a%84%e6%97%b6%e5%80%99%ef%bc%8ccpu%e5%88%b0%e5%ba%95%e5%9c%a8%e5%81%9a%e4%bb%80%e4%b9%88%ef%bc%9f/

(0)
AIRFAIRF
上一篇 2023年11月20日
下一篇 2023年11月20日

相关推荐

  • GPU虚拟化技术详解(附讲解视频)

    GPU虚拟化技术: 1 GPU 和软件架构 GPU可以用于图形渲染,GPU 作为加速图形绘制的芯片时,它主要面向的产品主要是会集中在 PC 和游戏两个市场。也能够用于高性能计算领域…

    硬件天地 2023年5月29日
  • StorCLI工具日志收集分析

    工具名称​​:storcli(LSI/Broadcom RAID 卡管理工具) ​​用途​​:收集服务器 RAID 控制器的详细硬件配置与运行状态,用于存储系统故障排查或健康检查。…

    硬件天地 2025年7月24日
  • 信创服务器和现有商业芯片服务器的故障率对比

    @Yufu338 信息技术经理: 故障率相当,但因为信创服务器较少,所以数据仅供参考;信创服务器最大的问题不是故障率,而是出现故障后的故障修复能力比较弱,很多故障都无法做根因分析,…

    硬件天地 2023年8月3日
  • GPU卡虚拟化技术的优劣势对比

    号 方案类型 代表产品 方案概述 优势 劣势 1 Mdev框架 vGPU 属于时分的共享产品。它通过vfio-mdev提供了一个隔离性非常高的的硬件环境,主要面向的是虚拟机产品。其…

    硬件天地 2023年8月3日
  • 服务器图形正常显示后变为NO SIGNAL

    前景描述 20台服务器安装操作系统时,有一台总提示无法正常安装,在BIOS自检界面异常的卡   排查 由于自检非常卡且无异常报错,于是更换主板后自检可以快速过了 但是安装…

    硬件天地 2023年9月5日
  • 操作系统分配存储时网络无法正常连接

    一.问题描述 生产环境中某操作系统并插网线后在系统下网口状态为DOWN,HBA卡网卡口状态显示正常,但无法与光纤交换机进行互信 二.排查问题 查看服务器网卡灯是否正常闪烁查看网线与…

    硬件天地 2021年11月21日
  • Storcli工具使用方法(附管理工具)

    使用storcli64工具进行查看RAID状态:# ./storcli64 /c0 show 使用storcli64工具进行删除RAID: # ./storcli64 /c0 /v…

    硬件天地 2021年12月29日
  • Smartctl搭配Storcli工具定位硬盘

    前言 工作中想拔掉系统下的/dev/sdd硬盘,但是使用smartctl -i /dev/sdx查看的SN是有问题的,后来发现因为硬盘是SATA盘,所以下面介绍各种盘的查看SN的方…

    2024年6月17日
  • uefi和legacy的区别有哪些

    我也是因为这两天安装Windows系统时,硬盘大于4T且默认安装使用的MBR模式,导致RAID的4T空间只能分出2T的空间,最后把服务器模式更改为UEFI,并且需要把U盘的格式从N…

    2023年3月7日
  • RAID卡一致性检查 概念解读

    相关原理解释 PR(Patrol Read):硬盘巡读功能,针对阵列卡下组建RAID 的HDD 盘(SSD 默认是关闭的)。RAID 卡下发verify 指令给硬盘,硬盘FW 对物…

    硬件天地 2025年2月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注