电脑如何自行重启?

Set*_*gie 502 reboot acpi

电脑如何自动重启?关闭后,它如何告诉自己重新开启?什么样的软件可以做到这一点?

jcr*_*dor 609

tl; dr:计算机中的电源状态由 ACPI(高级配置和电源接口)的实现控制。在关机过程结束时,您的操作系统会设置一个 ACPI 命令,指示计算机应该重新启动。作为响应,主板使用各自的重置命令或线路重置所有组件,然后遵循引导过程。主板实际上从未关闭,它只会重置各种组件,然后就像刚刚按下电源按钮一样。

冗长而漫无边际但(在我看来)更有趣的答案:

软实力及其运作方式

在过去(好吧,对于像我这样的大学生来说,90 年代是很久以前的事了),我们拥有带AT 电源的AT(高级技术)主板管理。AT 动力系统非常非常简单。您计算机上的电源按钮是一个硬件开关(可能在机箱背面),您的 120vac 输入直接通过它。它以物理方式打开和关闭电源的电源,当此开关处于关闭位置时,计算机中的一切都完全没电了(这使得 CMOS 电池非常重要,因为没有它就没有电源来保持硬件时钟滴答作响)。因为电源开关是一种物理机制,所以没有软件方式来打开和关闭电源。Windows 会显示著名的“现在可以安全关闭您的计算机”消息,因为尽管一切都已停止并准备关闭,但操作系统实际上无法翻转电源开关。这种配置有时被称为硬实力,因为都是硬件。

现在情况有所不同,因为 ATX 主板和ATX 电源的神奇之处(如果您要跟踪,那就是 Advanced Technology eXtended)。随着其他一些进步(迷你 DIN PS/2,有人吗?),ATX 带来了软实力。软电源意味着计算机的电源可以由软件控制。这带来了一些导入更改:

  • 待机电源:您可能已经看到电源引脚中标有“5v SB”或“5v 待机”连接器。该备用电源是连接到主板的 5v 线,即使计算机关闭,它也始终处于开启状态。这就是为什么在维修现代计算机时拔下或关闭 PSU 硬开关(如果有)很重要的原因,因为即使它关闭,您也有可能使 5v SB 短路并损坏主板。这也是为什么 CMOS 电池不再那么重要的原因——当电源有主电源时,5v SB 用于更换 CMOS 电池,因此 CMOS 电池仅在您完全拔掉计算机插头时使用。5v SB 线很重要地允许您的计算机组件(最重要的是 BIOS 和网络适配器)即使在计算机关闭时也能继续运行一些简单的软件。
  • 智能电源控制。如果您查看电源主板 (P1) 连接器的引脚排列,您会注意到两个通常标记为PS_ONPS_RDY 的引脚. 这些代表“电源开启”和“电源准备就绪”。如果你喜欢实验,拿一个不在电脑里的电源,插上电源,小心地将地线(黑线之一)短接到 PS_ON 线(绿线)。电源将明显打开,风扇开始旋转。主板上运行 +5v SB 的组件实际上是通过将电源连接到 PS_ON 引脚来打开和关闭电源。由于电源中的一些电容器和其他组件需要一段时间才能充电,因此在 PSU 开启后,电源主输出的电压可能不会立即稳定。这就是 PS_RDY 引脚的用途,当电源的内部逻辑确定电源“准备好”并将提供稳定的电源时,它就会亮起。

因此,您的电源开关不再“打开”计算机。相反,它连接到主板的基本控制器,该控制器检测到按钮已被按下并执行许多步骤来准备系统,包括点亮 PS_ON 以便电源可用。电源按钮不是触发启动过程的唯一方式,扩展总线上的设备也可以这样做。这很重要,因为当您的计算机关闭时,您的以太网网络适配器实际上保持开启状态,并寻找一个非常具体的数据包,通常称为“魔术数据包”。如果他们检测到此数据包寻址到他们的 MAC 地址,他们将触发启动过程。这就是“局域网唤醒”(WoL) 的工作原理。时钟也可以启动启动(大多数 BIOS 允许您设置计算机每天应该启动的时间),

了解电源控制

好吧,我解释软电源的原因是因为我认为它很有趣(这始终是我解释事物的一个关键原因),并且因为它可以让您了解计算机的电源和运行/关闭状态如何全部由软件控制。在大多数当前的计算机中,该软件系统是高级配置和电源接口或 ACPI 的实现。ACPI 是一个标准化、统一的系统,允许软件控制计算机的电源系统。您可能听说过ACPI 电源状态. 电源控制的基本机制是这些“电源状态”,您的操作系统通过准备切换(在电源实际关闭之前发生的关机/休眠过程)来切换电源模式,然后命令主板切换电源状态. 电源状态如下所示:

  • G0:工作(您的计算机的“开启”状态)
  • G1:睡眠(您计算机的待机状态,分为 S 子状态)
    • S1:CPU 和 RAM 的电源保持开启,但 CPU 没有执行指令。外围设备断电。
    • S2:CPU断电,RAM保持
    • S3:除 RAM 和将触发恢复的设备(键盘)之外的所有组件都关闭。当您告诉操作系统“睡眠”时,它将停止进程,然后进入此模式。
    • S4:休眠。绝对一切都已关闭。当您告诉操作系统进入休眠模式时,它会停止进程,将 RAM 的内容保存到磁盘,然后进入此模式。
  • G2:软关闭。这是您计算机的“关闭”状态。除可触发启动的设备外,所有设备均已关闭电源。
  • G3:机械关闭。

重置实际上是如何发生的

您会注意到重新启动不是这些状态之一。那么当您的计算机重新启动时实际上会发生什么?答案可能令人惊讶,因为从电源管理的角度来看,它几乎什么都不是。有一个 ACPI 重置命令. 当您告诉操作系统重新启动时,它会遵循正常的关机过程(停止所有进程,执行一些维护,卸载文件系统等),然后作为最后一步,而不是将机器发送到电源状态G2(就像您只是告诉它关闭一样)它会设置重置命令。这通常被称为“重置寄存器”,因为与大多数 ACPI 接口一样,它只是一个地址,应写入特定值以请求重置。我将引用 2.0 规范来说明它的作用:

可选的 ACPI 重置机制指定了提供完整系统重置的标准机制。实施后,此机制必须重置整个系统。这包括处理器、核心逻辑、所有总线和所有外围设备。从 OSPM 的角度来看,断言重置机制在逻辑上等同于重启机器。在重置后获得控制权后,OSPM 将执行类似于冷启动的操作。

所以,当复位寄存器被设置时,一些事情会依次发生。

  • 所有逻辑都复位。这意味着将相应的复位命令发送到硬件的各个位,包括 CPU、内存控制器、外围控制器等。在大多数情况下,这只是意味着点亮物理 RS​​T 线,如上面 AndrejaKo 所示。
  • 然后计算机被引导。这是“以类似于冷启动的方式执行操作”部分。主板执行的步骤与按下电源按钮后电源刚刚准备好时相同。

这两个步骤(实际上分解为更多步骤)的最终效果是,它看起来就像刚刚启动的计算机一样,但实际上一直在通电。这意味着关闭和启动所需的时间更少(因为您不必等待电源准备就绪),并且重要的是允许在操作系统关闭时启动启动。这意味着不需要使用另一个启动触发器(WoL 等),并允许您在无法触发启动时使用重新启动作为远程重置系统的有效方法。


那是一个很长的答案。但是,嘿,希望您现在对计算机电源管理有更多了解。我当然学到了一些研究这个的东西。

  • +1。非常有用和有用的答案。只有一点 - PS_ON 是低电平有效,即切换到 0V 而不是 +5VSB 以打开主输出。 (3认同)
  • 对于触发启动的 USB 设备,某些 BIOS 具有通过双击或按键唤醒计算机的选项。此外,一些 Mac 键盘有电源按钮(一种可以追溯到原始的传统)。 (2认同)

And*_*aKo 82

这是一个起点:

芯片通常不会关闭然后再打开。取而代之的是,当通常所有内存都被清除并且处理器看起来像是刚刚通电时,有一条复位线会使处理器进入所谓的复位状态。当该引脚保持高电平(或低电平,取决于处理器)时,处理器处于复位状态。一旦引脚被释放,它将继续正常启动,就像第一次打开一样。关键是它本身没有断电。

那么这如何扩展到像现代 PC 这样的大型系统?好吧,现代计算机是由计算机制成的,而计算机有时也是由计算机本身制成的。因此,当您将计算机设置为重置时,使计算机开始保存其状态的“计算机”将开始保存其状态(如果重置受到控制),或者只是拉动其重置引脚。

一些处理器和微控制器(微型独立计算机,通常比现代台式计算机晚 20 年)可以使用内部开关进行自我重置。正如我所说,一旦产生复位的信号消失,计算机就会启动。所以问题中的前提并不完全正确。电脑不知道什么时候开机。知道什么时候需要“关闭”或重置,以及当保持它的信号消失时,它将打开。

这种行为在现代计算机上可能看起来很奇怪,现代计算机可以设置为在特定时间或通过网络等打开。正如我所说,计算机是由计算机组成的。因此,虽然主处理器可能关闭,但内部可能有许多其他芯片和微控制器处于开启状态。最明显的例子是通常由电池供电的实时时钟。然后它可以打开其他芯片,这将打开其他芯片,连锁反应一直持续到整个计算机启动。在当今的计算机上,有一条称为 +5 VDC 待机电压的 PSU 线。它为计算机“关闭”时打开的各种设备提供大约 50 mW 的功率。

一点小知识:英特尔 386 EX 处理器上的复位引脚是引脚编号 110。

386EX 数据表图 2

在英特尔 i7-900 上,它的土地编号为 AL39。

我希望有人能够提供一个答案,从高层次的角度解释事情是如何运作的,因为它是一个非常复杂的系统。

  • @Seth Carnegie 没那么好。我只是触及了大多数计算机的低级东西,从冰箱中的计算机到 PC。我什至没有提到 ACPI、APM 和其他现代电源系统,也没有提到旧 PC 上的 Intel 8042 微控制器如何通过控制器键盘重置处理器、POST 如何工作、重置向量和许多其他事情。 (13认同)
  • 谈到内存,一些新的 HDD 和 CPU 的缓存现在比我使用的第一台计算机的 RAM 还要大。我们现在可以完全在 L2 缓存中运行 [Windows 95](http://support.microsoft.com/kb/138349) 并将整个系统分区保留在驱动器缓存中! (4认同)

小智 28

这篇博文描述了 Linux 如何触发重启。

摘抄:

Linux 有很多不同的方法来重置 x86。其中一些只有 32 位,所以我将忽略它们,因为老实说,这就是你的生活。而且,它们很可怕。所以,这给我们留下了五个。

  • kbd - 通过键盘控制器重启。最初的 IBM PC 将 CPU 复位线连接到键盘控制器。写入适当的魔法值会使线路产生脉冲,机器会复位。这一切都非常简单,只是现代机器没有键盘控制器(它们实际上是嵌入式控制器的一部分),甚至更现代的机器甚至没有假装有键盘控制器。现在,嵌入式控制器运行软件。而且,众所周知,软件是可怕的。但更糟糕的是,嵌入式控制器上的软件是由 BIOS 作者编写的。很明显,任何认为这有效的借口都是某种精心制作的小说。有些机器非常挑剔硬件是否处于 Windows 可以编程的确切状态。有些机器 10 次工作 9 次,然后由于一些奇怪的时间问题而锁定。而其他人根本不起作用。欢呼!

  • 三重 - 尝试生成三重故障。这是通过加载一个空的中断描述符表然后调用 int(3) 来完成的。中断失败(没有 IDT),故障处理程序失败(没有 IDT),CPU 进入一个条件,理论上应该触发复位。除了似乎没有发生这种情况的要求,它只是在一堆机器上不起作用。

  • pci - 实际上不是 pci。传统的 PCI 配置空间访问是通过向 io 端口 0xcf8 写入一个 32 位值来识别总线、设备、功能和配置寄存器来实现的。然后端口 0xcfc 包含有问题的寄存器。但是,如果您将适当的魔法值对写入 0xcf9,机器将重新启动。壮观!并且没有以任何方式标准化(当然不是 PCI 规范的一部分),因此不同的芯片组可能有不同的要求。嘘。

  • efi - EFI 运行时服务提供了重新启动机器的入口点。它通常甚至有效!只要 EFI 运行时服务在工作,这可能是一个延伸。

  • acpi - 最新版本的 ACPI 规范允许您提供地址(通常是内存或系统 IO 空间)和要在那里写入的值。这个想法是将值写入地址会重置系统。事实证明,这样做经常失败。也不可能通过 ACPI 来表示 PCI 重启方法,因为 PCI 重启方法需要一对值,而 ACPI 只给你一个。

  • 这是相关的,但如果您将其他页面信息的摘录放在这里,答案会更有用。 (15认同)

Ign*_*ams 10

它触发一个 I/O 位置,将数据线拉低,告诉 CPU 它应该停止正在执行的任何操作,并从 BIOS 中的某个位置开始运行代码。


kru*_*ubo 10

回到电源管理之前的旧时代,当然,计算机仍然可以自行重启。(有人记得冻结程序意味着您必须使用 Ctrl+Alt+Delete 重新启动计算机吗?)

在我的旧 486 上,汇编语言命令JMP FFFF:0000(即,将 CPU 的指令指针设置为所述地址)会导致整个计算机重新启动。换句话说,FFFF:0000 寻址 BIOS 中的一个位置,该位置具有有关计算机首次启动时应执行的操作的说明。我怀疑 AndrejaKo 的回答所描述的重置引脚,或电源管理前时代的重置按钮,也会强制指令指针指向相同的地址。

一个谷歌搜索JMP FFFF:0000揭示了这许多有趣的网页。

  • 您还需要将特定值写入 0040:0072 以确定它是冷启动 (0x0000) 还是热启动 (0x1234)。 (3认同)

小智 9

还有一种叫做看门狗的东西。该设备用作死人的开关。计算机必须每分钟向看门狗发出信号,表明它仍然活着。当计算机崩溃时,例如进入无限循环,它将无法向看门狗发出信号,看门狗仍在按预期运行,在这种情况下,看门狗将执行硬件重置。这在受欢迎的终结者电视连续剧中得到了证明,其中一个机器人被高压电涌击倒。它会在 2 分钟内自行重置。

  • @AndrejaKo:我曾经在一家制造通信服务器的公司工作(主要是带有调制解调器的刀片服务器)。他们有一个看门狗定时器,它连接到主板上的复位引脚。主板上运行的后台实用程序会定期触发计时器,因此如果处理器挂起,看门狗最终会按下重置按钮。它与一个电路相连,当主板重新启动时,该电路使电话线忙碌。 (5认同)
  • 是否有实际上会重新启动整个计算机的看门狗?我知道它们有时用于计算机内部的各种微控制器,但是在整个计算机级别上有一个吗?我的个人经历让我拒绝,但欢迎提供支持或反对的证据。 (4认同)
  • 这是正确的,但并没有真正回答问题。 (2认同)