游戏可以在操作系统内安全休眠(不会崩溃)吗?

游戏可以在操作系统内安全休眠(不会崩溃)吗?

是否可以使用休眠保存游戏的当前状态,而不会在从休眠文件启动后崩溃?还是这取决于游戏和/或 DRM?还有模拟器/虚拟机呢?我尝试过欧洲卡车模拟2刚才最大化后它就崩溃了。

答案1

休眠(S4)断电后,GPU 及其 RAM 也会关闭。此页面上未提及视频 RAM。

休眠状态(S4)

Windows 使用休眠功能来提供快速启动体验。如果可用,移动设备也会使用休眠功能来延长系统的可用电池寿命,方法是提供一种在关闭系统之前保存所有用户状态的机制。在休眠转换过程中,内存的所有内容都会写入主系统驱动器上的文件(即休眠文件)。这样可以保留操作系统、应用程序和设备的状态。在组合内存占用占用所有物理内存的情况下,休眠文件必须足够大,以确保有空间保存物理内存的所有内容。由于数据写入非易失性存储,DRAM 无需保持自我刷新并且可以关闭电源,这意味着休眠的功耗非常低,几乎与关机相同。

进入冬眠

当发出休眠请求时,系统进入休眠状态时会发生以下步骤:

  1. 应用和服务会收到通知
  2. 司机收到通知
  3. 用户和系统状态以压缩格式保存到磁盘
  4. 固件已收到通知

从休眠状态恢复

当系统通电时,系统从休眠状态恢复时会发生以下步骤。

  1. 系统 POST
  2. 系统内存从休眠文件解压并恢复
  3. 设备初始化
  4. 驱动程序恢复到休眠前的状态
  5. 服务恢复到休眠之前的状态
  6. 系统可供登录

鉴于(据我所知)Windows 不会转储/恢复视频 RAM,如果系统恢复时游戏崩溃,我一点也不会感到惊讶。

如果 Windows 确实不处理视频 RAM,那么 GPU 可能会被驱动程序以与全新启动相同的方式重新初始化 - 即:在 GPU 上运行的所有纹理和游戏引擎代码都将显示为“突然“不存在(从休眠之前到恢复之后)。

这将使游戏引擎/应用程序在 CPU 上运行(恢复)与“交谈”没有什么“——或者至少是不再存在的东西。

游戏应用程序必须非常小心地处理这个问题,但也没有充分的理由这样做。

让问题更加复杂的是可能的PCIe 设备将枚举并分配不同的地址空间,这意味着 A)GPU 没有按照我们想象的那样做,并且 B)GPU 不再位于我们想象的位置,这给了我们一个总线错误或更糟(即与非 GPU 的东西交谈)。

可能视频驱动程序可以处理这个问题...但我不认为他们会这么做。

请参阅此问题以了解更多讨论:“休眠时 VRAM/寄存器会被保存吗?

相关内容