又一个冷知识,电脑死机的时候,主机依然在运行,那么这个过程,电脑在干什么呢?
“电脑死机”是十分常见的电脑问题,在我们使用电脑的时候,突然屏幕中的画面就卡住不动了,包括鼠标点击了也没有任何的反应。
有的小伙伴想试着调出任务管理器,却差点就把键盘上的【CTRL+ALT+DELETE】按烂。不管怎么操作键盘,电脑都没有一点反应。
(资料图)
最后,只能用粗暴的方法强制按关机键关机重启。
好奇,在死机的时候,电脑到底在干什么?
电脑的大脑是“CPU”,它的主要作用是进行运算和控制,处理着各种信息。
电脑的CPU是一根死脑筋,它是不断地取出指令来一条条执行,直到关机方休!
所以,电脑不会那么容易死机,除非出现这两种情况。
一种是CPU摆烂不干了,不再执行下一条指令。这属于硬件死机,出现这种情况是让用户感到最头疼的。不过出现的概率很低,基本上不会发生。
另外一种就是软件方面的死机。CPU被困在了某个地方出不来,导致无法响应用户的输入,本该执行的程序得不到执行电脑就和死机了一样。
突然有个问题,我们是不是可以创建一个死循环命令让电脑执行,故意把CPU困在里面让它出不去呢?
当然不行,用死循环就想把电脑搞死机是不可能的。
因为操作系统会用“中断”进行干预。
有了中断的加入,CPU指令就多出了一个检查中断的步骤。中断就是可以打断CPU正常的工作,让它去执行别处的指令程序。
我们最常见的是“时间中断”,即便某个线程进入了死循环,在一定的时间后也要把CPU放出来,让别的程序来接手。
另外,现在的cpu大都是多核,如果一个线程进入死循环,也有别的核可以参与系统调度呀,所以不会这么容易就死机。
接着回到连中断都搞不定的死机问题,cpu被困在哪里出不来呢?
首先,中断是有优先级的,低优先级的中断无法打断高优先级的中断。
例如cpu正在执行程序,突然发生了一个中断事件,cpu会保存当前执行的去处理这个中断事件,然而中途又出现了一个新的中断。在处理中断的时候,cpu运作在一个高的优先级上,一般的中断是无法把执行权抢过来的,所以就导致这颗cpu没有响应,电脑就死机了。
另外一种情况,中断抢到了执行权,却发现没有线程可以调动!
比如,两个线程a等待b,b等待a,且互相等待对方让步,局面僵持,最后就成为“死锁”。
“死锁”出现在应用上,就会导致两个应用崩了。而出现在内核中,就会让电脑死机: