多数电脑死机的时候,线程正在等待那个注定不会到来的解锁。早些年电脑性能不够强,多开几个程序就可能卡死电脑,组合键按烂也调不出任务管理器,只能含泪长按电源按钮。
那么这种死机发生时,电脑在干啥呢?
作为计算机的核心,CPU的工作就是不断取出一条条指令执行。如果CPU被困在某个地方出不来,导致无法继续执行其他操作就是我們说的软件导致死机。
当然随便写个死循环代码是困不住CPU的,因为操作系统会用“中断”让CPU停下来,运行其他的线程。而且多核CPU可以同时运行多个线程,一个死循环也没法让其他核心陷入死机。
真实的死机一般有两种原因。一是出问题的是高优先级的全局性中断,Windows 操作系统内核中,有大量的高优先级全局性的锁,如果它们出问题一般的中断是无法把执行权抢回去的,这就会表现为死机。二是中断能抢到 CPU,但发现没有线程可以调度。一般这时候能调度的两个线程正在互相等对方让步(也就是释放锁),这种死锁最为常见。