![游戏可以在操作系统内安全休眠(不会崩溃)吗?](https://linux22.com/image/1572381/%E6%B8%B8%E6%88%8F%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%86%85%E5%AE%89%E5%85%A8%E4%BC%91%E7%9C%A0%EF%BC%88%E4%B8%8D%E4%BC%9A%E5%B4%A9%E6%BA%83%EF%BC%89%E5%90%97%EF%BC%9F.png)
是否可以使用休眠保存游戏的当前状态,而不会在从休眠文件启动后崩溃?还是这取决于游戏和/或 DRM?还有模拟器/虚拟机呢?我尝试过欧洲卡车模拟2刚才最大化后它就崩溃了。
答案1
休眠(S4)断电后,GPU 及其 RAM 也会关闭。此页面上未提及视频 RAM。
休眠状态(S4)
Windows 使用休眠功能来提供快速启动体验。如果可用,移动设备也会使用休眠功能来延长系统的可用电池寿命,方法是提供一种在关闭系统之前保存所有用户状态的机制。在休眠转换过程中,内存的所有内容都会写入主系统驱动器上的文件(即休眠文件)。这样可以保留操作系统、应用程序和设备的状态。在组合内存占用占用所有物理内存的情况下,休眠文件必须足够大,以确保有空间保存物理内存的所有内容。由于数据写入非易失性存储,DRAM 无需保持自我刷新并且可以关闭电源,这意味着休眠的功耗非常低,几乎与关机相同。
进入冬眠
当发出休眠请求时,系统进入休眠状态时会发生以下步骤:
- 应用和服务会收到通知
- 司机收到通知
- 用户和系统状态以压缩格式保存到磁盘
- 固件已收到通知
从休眠状态恢复
当系统通电时,系统从休眠状态恢复时会发生以下步骤。
- 系统 POST
- 系统内存从休眠文件解压并恢复
- 设备初始化
- 驱动程序恢复到休眠前的状态
- 服务恢复到休眠之前的状态
- 系统可供登录
鉴于(据我所知)Windows 不会转储/恢复视频 RAM,如果系统恢复时游戏崩溃,我一点也不会感到惊讶。
如果 Windows 确实不处理视频 RAM,那么 GPU 可能会被驱动程序以与全新启动相同的方式重新初始化 - 即:在 GPU 上运行的所有纹理和游戏引擎代码都将显示为“突然“不存在(从休眠之前到恢复之后)。
这将使游戏引擎/应用程序在 CPU 上运行(是恢复)与“交谈”没有什么“——或者至少是不再存在的东西。
游戏应用程序必须非常小心地处理这个问题,但也没有充分的理由这样做。
让问题更加复杂的是可能的PCIe 设备将枚举并分配不同的地址空间,这意味着 A)GPU 没有按照我们想象的那样做,并且 B)GPU 不再位于我们想象的位置,这给了我们一个总线错误或更糟(即与非 GPU 的东西交谈)。
它可能视频驱动程序可以处理这个问题...但我不认为他们会这么做。
请参阅此问题以了解更多讨论:“休眠时 VRAM/寄存器会被保存吗?“