唤醒定时器如何工作?

old*_*ud0 6 sleep wake-up

Windows 最常将计算机置于 S3(待机/保存到 RAM)模式,在这种模式下,CPU 的电源被切断,但 RAM 不会被切断。

如果 CPU 断电,那么唤醒定时器如何触发?哪个组件知道何时自动唤醒计算机?

如果在 BIOS 中,Windows 如何通知 BIOS 下次唤醒时间?

Jon*_*art 7

这是通过RTC(实时时钟)中的“警报”寄存器完成的。在最初的 PC-AT 上,该芯片是摩托罗拉 MC146818。

在进入睡眠状态(ACPI S3)之前,内核会将下一个预定的唤醒时间编程到 RTC 上的“警报”寄存器中,该寄存器始终处于开机状态。当这个唤醒时间到来时,RTC 将触发芯片组给系统上电,并从 S3 恢复。(请注意,在大多数现代系统中,RTC 实际上是南桥本身的一部分,因此开机信号发生在内部)。

系统从睡眠状态恢复后,内核将评估其挂起的唤醒事件列表,调度已到达的唤醒事件。

Intel 的这篇论文描述了接口(适用于 x86 系统):

这些寄存器的编程是在 Linux 内核中完成的cmos_set_alarm