当一个人说电脑"挂起"或冻结时会发生什么?

Anu*_*rag 5 operating-system hang computer-architecture

我们知道在计算机上运行的所有内容都是由许多人合作的庞大程序.
因此,当计算机挂起而我们无法做任何事情时,会发生什么呢?此外,这个场景中的所有内容都冻结了程序中实现的内容吗?或者它是否像程序计数器卡住并且不能增加,因此处理器中存在一些问题?

cad*_*luk 3

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

  • x86CLIHLT指令。CLI禁用中断,因此任何异步事件(例如定时器中断或按下按键)都可以将CS:EIP指令指针移动到另一条指令并HLT从字面上停止处理器。
    该指令很少使用,仅当引导代码中的某些初始化例程失败时,内核才允许使用该指令。尽管在这里重新启动是更好的选择。
    请注意,仅停止运行HLT它的核心,而不是所有核心。

  • 窗口没有响应(常见于 Windows)。这因应用程序而异。更多信息请参见此处

  • 尝试获取资源但受锁保护并且已被获取。该进程等待(实际上是忙循环或产生另一个进程),直到它最终可以获得资源。但这只是暂时的状态,而不是......

  • 陷入僵局。发生这种情况的情况有多种,但常见的情况是两个进程试图同时获取彼此提供的资源。没有一个进程可以处理获取请求,因为两个进程都在等待其他进程,因此两个进程最终都是不可中断的。这就是 Linux 上进程不可中断的原因,尽管向其发送了信号,但仍无法终止进程。

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

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