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

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

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

但是扩展卡或类似物内的寄存器、VRAM 或易失性存储器会发生什么情况呢?

答案1

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

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

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

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

D3状态定义为:

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

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

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

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

答案2

当计算机执行因睡眠而中断时,所有中央处理器当前执行线程的寄存器保存在系统 RAM 中,就像正常程序一样中断. 因此,这些都与 RAM 一起保存,并且可以在唤醒时无缝重启。

视频 RAM 或显存不会被保存,操作系统在唤醒以刷新显示屏时必须重新生成该数据,而刷新显示屏是自动进行的。因此,可能会导致黑屏持续极短的时间(通常不易察觉)。

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

答案3

他们根据维基百科:S4:休眠或挂起到磁盘。主存储器的所有内容都保存到硬盘等非易失性存储器中,并断电。另外根据这里

具体来说

S3——“暂停至 RAM”

CPU 的所有电源均被切断,其寄存器的内容被刷新到 RAM,RAM 仍保持打开状态。在 Microsoft Windows 中,如果在 BIOS 中启用了“待机”命令,则可以将“待机”命令与此状态关联。由于它需要 CPU、芯片组、设备、操作系统、BIOS 和操作系统设备驱动程序之间的高度协调,因此此系统状态最容易出现错误和不稳定。Pavel Machek 创建了一个小文档,其中包含一些有关如何解决 S3 问题的提示。您可以在内核源代码中找到它,网址为:Documentation/power/tricks.txt。S3 目前不是Linux 2.4.x 内核系列支持该功能。S4 - “挂起到磁盘”

CPU 电源关闭,就像在 S3 中一样,但 RAM 也会写入磁盘并关闭。在 Microsoft Windows 中,“休眠”命令与此状态相关联。一种称为 S4BIOS 的变体最为普遍,其中系统映像由 BIOS 而不是操作系统存储和加载。由于 RAM 的内容被写入磁盘,因此系统上下文得以保留。例如,在 S4 转换后,未保存的文件不会丢失。S4 目前不是Linux 中的 2.4.x 内核系列不支持该功能,但 SWSUSP 可能会更好用。有些机器提供 S4_BIOS,但 Linux/ACPI 中对该功能的支持仍处于试验阶段。

相关内容