休眠时会保存 VRAM/寄存器吗?

bot*_*t47 9 hibernate

当计算机进入 ACPI S4 状态时,它会将其 RAM 内容保存到磁盘并关闭。

但是扩展卡或类似设备中的寄存器、VRAM 或易失性存储器会发生什么?

har*_*ymc 6

当计算机的执行因休眠而中断时,当前正在执行的线程的所有CPU寄存器都保存在系统 RAM 中,这是具有中断的正常过程。因此,这些将与 RAM 一起保存,并且可以在唤醒时无缝重新启动。

视频 RAM 或VRAM不会保存,并且必须在操作系统唤醒以刷新显示时重新生成,这是它自动执行的。因此,黑屏可能会导致极短(通常不明显)的时间。

如果在睡眠期间取出使用过的扩展卡,则正在使用它的进程将在唤醒后失败,如果取出 CD,则任何 CD 读取软件或使用未完成 Internet 连接的任何进程都会失败。然后会发生什么取决于该过程是如何编程的。


Mok*_*bai 5

TL:DR 对您问题的回答是:不作为硬件/BIOS S4 实现的一部分,尽管没有什么可以阻止操作系统/驱动程序执行此操作。

根据ACPI 规范,操作系统负责在从 S4 休眠状态恢复后将所有系统设备初始化为可用状态。

ACPI 规范第 7-142 页“系统 \ _S4 状态”:

  • 设备状态与当前电源资源状态兼容。也就是说,当系统状态为S4时,所有设备都处于D3状态

D3状态定义为:

D3 - 熄灭:
设备已完全断电。进入此状态后,设备上下文将丢失,因此操作系统软件将在重新启动设备时重新初始化设备。由于设备上下文和电源丢失,因此处于此状态的设备不会解码其地址线。处于此状态的设备具有最长的恢复时间。
所有类别的设备都定义了此状态。

为了让驱动程序在 Windows(或任何操作系统)下运行,它必须分配任何必要的缓冲区并存储一定数量的状态信息。这将存储在操作系统内存空间中,因此将存储在休眠文件中。

操作系统知道要初始化哪些设备,并且可能只是调用注册的驱动程序初始化代码,该代码将检查其内部缓冲区中是否保存了任何状态信息并将卡恢复到可用状态。

这只是重申,卡本身不知道如何使自己脱离休眠状态并进入默认的“开机”状态,直到 Windows(通过驱动程序)告诉它其他情况。不需要将卡寄存器存储在操作系统相关驱动程序之外,这将通过休眠过程节省其内存空间。