当有人说计算机 'Hangs' 或死机时会发生什么?

what happens when one says a computer 'Hangs' or freezes?

我们知道在计算机上运行的都是一个由多人协作的庞大程序。
那么,当计算机挂起而我们无法做任何事情时,会发生什么?另外,这种一切都冻结的场景是否也在程序中实现了?还是程序计数器卡住了,无法递增,处理器出现问题了吗?

计算机在不同情况下可能会死机。这些是我现在能想到的:

  • x86 CLI and HLT 指令。 CLI 禁用中断,因此没有异步事件(如定时器中断或按键)可以将 CS:EIP 指令指针移动到另一条指令,并且 HLT 从字面上停止处理器。
    该指令很少使用,只有在引导代码中的某些初始化例程失败时才允许内核使用。虽然在这里重启是更好的选择。
    请注意 HLT 仅停止核心 运行并非全部 核心。

  • A window 没有响应(常见于 Windows)。这因应用程序而异。更多信息 .

  • 试图获取资源,但被锁保护,已被获取。该进程等待(实际上是忙循环或产生另一个进程)直到它最终可以获取资源。这只是一个临时状态,但是,相对于...

  • 死锁。它可能发生的多种情况,但一个常见的情况是两个进程试图同时获取它们提供给彼此的资源。 None 可以处理获取请求,因为两者都在等待其他进程,所以两个进程最终都是 不可中断的 。这就是 Linux 上不间断进程的原因,尽管将信号发送到

  • ,但无法终止进程
  • 在慢速处理器或线程很少的处理器上进行多任务处理。糟糕的调度算法会使情况变得更糟。
    由于一个进程至少占用一个线程,因此有效并发 运行ning 的进程数非常低。不过,这可以通过非常快的处理器来稳定。
    这会导致对鼠标点击等事件的响应时间过长。

对于x86系统,HLT是唯一真正阻碍指令指针前进的指令。
所有其他情况只是(可能是无限的)循环或 program/operating 系统错误。