news 2026/9/13 23:58:04

计算机死机的时候,它在干什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机死机的时候,它在干什么?

今日, 花费些许分钟, 跟诸位分享一个极具趣味, 且能够增长知识的问题, 那便是: 当电脑出现死机状况的时候, 究竟正在做些什么?

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

尤其是在早些年, 那时电脑配置不像现在这般高, 要是多开启几个重量级的应用程序, 死机便会如同约定好一般到来, 哪怕你把键盘上的CTRL + ALT键按到损坏, 任务管理器也无法弹出, 最终只能默默含泪长久按住关机按钮, 实现强制关机。

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

公众普遍知道, 计算机的关键核心部位乃是中央处理器CPU。那些修完计算机基础课程的学习者都遭受过这样的教诲: CPU是个一根筋的死板家伙, 仅仅晓得不间断地取出指令逐一去执行, 一直到关机才会停止。

故而从理论层面来讲, 死机存在着两种类型, 其一乃是CPU停止工作, 不再去执行后续的指令, 这归属于硬件方面的死机情形, 但话说回来, 这种状况基本上是不会出现的。

出现较多的是软件方面的死机情况, 这意味着, 中央处理器被卡在了某个位置而无法脱离, 从而致使原本应该执行的程序不能够得到执行, 如此一来呈现出的状态就如同死机了一样。

聪慧如同你的人, 或许立刻就会想到, 要是去编写一个死循环, 致使CPU于其中深陷而无法脱出, 如此一来是不是就会导致死机呢? 就如同这般:

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

尝试一下, 你会发觉, 用于为CPU降温的风扇, 有可能会转动起来, 然而, 计算机仍旧能够正常运行, 并没有处于死机状态。

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

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

中断

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

中断, 从名称含义来讲, 是用来使CPU正常工作出现中断, 转而让其执行在别处的指令与程序的。

操作系统之所以可以掌控全局, 是因为它在启动时给CPU安插了一系列中断处理函数, 像我们最常见的时钟中断, 通过这些中断处理函数, 操作系统就能周期性的收回CPU的执行权, 进而调度别的线程来执行。

因此, 就算你有某个线程陷入了死循环, 当你那时间段的使用权力耗尽之后, 也得顺从地交出货处理器, 让别的程序得以去执行。

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

实则细想一下也是如此, 要是能这般轻易就致使你所使用的电脑陷入死机状态, 那么这一款操作系统可就实在是过于差劲了呀, 倘若有新手才刚刚开始学习编程, 那岂不是每天都得强制性地重启电脑十几次之多?

从最极端的情况来讲, 哪怕不去考量中断所产生的影响, 现今的CPU大多是具备多个核心的, 当其中一个线程陷入到永远不会停止的无休止循环状态时, 然而却还有其他的核心能够参与到系统进程的调度工作当中, 如此一来也依旧不会出现系统死机的状况。

如此这般返回起始之问题, 究竟那CPU困于何处而无法脱出, 就连中断亦对其无计可施呢?

其实有两种情况:

1、中断确实拿它没办法

不少人晓得中断的概念, 然而不少人并不清楚, 中断同样是存有优先级的。

情况是这样的, 易于明白这一点, 举例而言, 当CPU正在开展程序的执行工作之时, 突然之间出现了一个中断事件。此时的CPU, 实施对当下执行的上下文进行妥善保存的操作, 而后转向去着手处理这个中断事件, 然而, 刚处理到一半的时候, 就在这个时刻, 又有一个全新的中断事件出现了, 那么在这种情形下CPU该如何应对? 到底要不要予以响应?

之所以中断存在优先级的区分, 是因为低优先级的中断, 没有实现打断高优先级中断的这种情况。

在有了这个前提的状况下, 来开展试想, 情况如此这般, 要是在处理某个中断之际, 因为操作系统内核代码编写得不妥当, 从而陷入了死循环, 举例而言, 像是自旋锁这种情况, 那么会发生什么呢?

每当处理中断之际, CPU乃运行于极高优先级之上, 寻常中断根本无法抢夺执行权令其让贤,如此事态致使该CPU核心仿若陷入死寂之境, 无论如何呼喊也是毫无反应。

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

针对程序员而言, 死锁这一概念想必并不陌生, 存在两个线程, 其中线程A在等待线程B, 而线程B又在等候线程A, 这两个线程彼此相互等待对方做出让步, 也就是释放锁, 最终由此致使形成僵持的状况, 进而演变成死锁。

倘若死锁出现于应用层面, 那么问题并非严重, 至多也就是两个程序走向停滞状态。然而設若发生于内核呢?

比方说, 在操作系统内核里面, 存在着数量众多的全局性的锁, 一旦稍有不慎导致死锁出现, 那么其他有需求的线程都不得不进入等待队列, 如此一来可就糟糕了。

援引一段别的大神Tim Chen的表述, (我认为极其形象):

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 23:56:28

智能指针的使用及其原理

目录: 1. 智能指针的使用2. RAII和智能指针3. C标准库智能指针的使用 3.1 auto_ptr3.2 unique_ptr3.3 shared_ptr3.4 weak_ptr3.5 make_shared3.6 explicit 修饰构造函数 4. 删除器 4.1 数组的特化版本4.2 自定义删除器 1. 智能指针的使用 只要是堆上 new 出来的…

作者头像 李华
网站建设 2026/9/13 23:52:26

PyCharm高效开发:Yi-Coder-1.5B Python环境配置指南

开展高效开发, 关于Yi - Coder - 1.5B环境配置指南之一, 包含为何会选择Yi - Coder - 1.5B来进行配合。在平常的开发里面, 我们时常会需要迅速地生成代码片段, 去理解繁杂的逻辑, 补全函数调用, 甚至于依据注释自动生成实现。 Yi-Coder-1.5B身为一款专门为编程而优化的开源模型…

作者头像 李华
网站建设 2026/9/13 23:52:24

普通人学python有什么用 ?学好了能干什么

这种语言对普通人而言是很适宜去学习的, 在学习完毕以后, 能够从事的数据挖掘以及分析工作, 还有游戏开发工作, 自动化测试工作, 网站开发爬虫工作等等等。1普通人学习的好处运用学习, 能够提升工作效率, 借助几十行代码去进行一个简单爬虫工具的撰写, 几分钟即可自动抓取特定网…

作者头像 李华