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

本文来自微信公众号:编程技术宇宙 (ID:xuanyuancoding),作者:轩辕之风 O

大家好,我是轩辕。

今天花几分钟跟大家分享一个很有意思又能涨知识的问题:电脑死机的时候到底在干什么?

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

尤其是早些年,电脑配置还没现在这么高的时候,多开几个重量级应用程序,死机就能如约而至,就算你把键盘上的 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 的描述(我觉得特别形象):

责任编辑:远生我要纠错

有价值

### 回答1: RocketMQ支持VIP通道是为了提高消息传输的可靠性和稳定性。VIP通道是指在生产者和消费者之间建立一条专用的高速通道,用于传输重要的消息。VIP通道可以避免网络拥堵和故障对消息传输的影响,从而保证消息的可靠性和稳定性。 ### 回答2: RocketMQ支持VIP通道,主要用于解决开源版本RocketMQ在网络环境复杂或者网络连接质量较差的情况下,消息传输过程中可能出现的问题。 VIP通道通过创建一条专用的高速网络通道,可以在保证消息的可靠传输的同时提高传输效率和稳定性。它基于虚拟IP技术,将客户端与Broker之间的网络连接优化,降低网络延迟和丢包率,提高消息的传输质量和可靠性。 具体来说,VIP通道可以解决以下问题: 1. 网络延迟问题:在网络环境复杂或者网络连接质量较差的情况下,消息的传输速度可能受到限制。通过VIP通道,可以通过优化网络连接,减少传输延迟,提高消息传输的效率和速度。 2. 网络丢包问题:在网络传输过程中,由于网络抖动等原因,可能会导致部分消息丢失。VIP通道通过设置较大的读写缓冲区和消息传输控制参数,可以最大限度地减少消息的丢失,并提供可靠的消息传输保障。 3. 高可用性问题:VIP通道可以减少Broker的负载,提高Broker的可用性。在传统的情况下,当一个Broker发生故障或者宕机时,客户端需要重新与其他Broker建立连接,造成服务的中断。而通过VIP通道,可以通过快速切换到备用Broker,减少服务中断时间,提高系统的可用性和稳定性。 总之,VIP通道是RocketMQ针对网络环境复杂或者网络连接质量较差的情况下,为了提供更高效、稳定和可靠的消息传输而提供的一种解决方案。它可以优化网络连接,提高消息传输的效率和质量,同时提供高可用性的服务保障。 ### 回答3: RocketMQ支持VIP通道主要是为了提供更高的消息传输效率和稳定性。VIP通道是指在常规网络通信之外,通过专用的网络通道来传输消息。 首先,VIP通道可以提供更高的消息传输效率。传统的网络通信可能会受到网络拥塞和延迟的影响,而VIP通道则可以优先保障消息的传输速度。当网络出现拥堵或者延迟时,正常的消息传输可以被中断或者延迟,而VIP通道可以绕过这些问题,确保消息的实时传输。 其次,VIP通道可以提高消息传输的稳定性。在常规网络通信中,可能会出现网络丢失、消息丢失等问题,而VIP通道可以通过各种手段来保证消息的可靠性。例如,VIP通道可以采用可靠传输协议,如TCP,来保证消息的完整性和顺序性。此外,VIP通道还可以通过负载均衡和容错机制来确保消息的可用性和高可靠性。 总之,RocketMQ支持VIP通道的主要目的是为了提供更高效、更稳定的消息传输服务。VIP通道通过专用网络通道来传输消息,可以优化传输效率,提高消息传输的稳定性,并具备高可用性和高可靠性。在分布式消息系统中,VIP通道是一个重要的功能,可以为业务系统提供更快速、更可靠的消息传输服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值