Windows 7 如何从驱动程序崩溃中恢复?

Windows 7 如何从驱动程序崩溃中恢复?

我注意到我兄弟的运行 Windows 7 的游戏电脑的 nvidia 690 显卡驱动程序崩溃了,但操作系统本身并没有崩溃,而是声称已经恢复。我很好奇这是怎么可能的?我的印象是,由于内核没有内存保护,驱动程序崩溃会导致整个操作系统崩溃,这是我根据对 Linux 内核的了解得出的结论。Windows 7 如何避免整个操作系统崩溃?

答案1

从 Windows Vista 和 WDDM 驱动程序模型开始,GPU 驱动程序被分为内核和用户模式部分。因此用户模式部分的问题不再会导致 Windows 崩溃。

您看到的功能称为GPU 超时检测与恢复 (TDR). 微软解释这篇文章

  1. Windows Vista 图形堆栈的视频调度程序组件检测到 GPU 执行特定任务所花费的时间超过允许的量子时间,并尝试抢占此特定任务。抢占操作有一个“等待”超时 - 实际的“TDR 超时”。因此,此步骤是该过程的“超时检测”阶段。Windows Vista 中的默认超时期限为 2 秒。如果 GPU 无法在 TDR 超时内完成或抢占当前任务,则 GPU 被诊断为挂起。

  2. 操作系统通知 WDDM 驱动程序已检测到超时,必须重置 GPU。驱动程序被告知停止访问内存,并且在此时间之后不应访问硬件。操作系统和 WDDM 驱动程序收集硬件和其他状态信息,这些信息可能对事后诊断有用。

  3. 操作系统重置图形堆栈的相应状态。图形堆栈的视频内存管理器组件清除视频内存中的所有分配。WDDM 驱动程序重置 GPU 硬件状态。图形堆栈采取最终操作并将桌面恢复到响应状态。如前所述,一些较旧的 DirectX 应用程序现在可能只呈现黑色,用户可能需要重新启动这些应用程序。编写良好的 DirectX 9Ex 和 DirectX 10 应用程序处理“设备移除”,可继续正常工作。应用程序必须释放并重新创建其 Microsoft Direct3D 设备及其所有对象。

    在 GPU 挂起检测和恢复的整个过程中,桌面没有响应,因此用户无法使用。在恢复的最后阶段,会出现短暂的屏幕闪烁,类似于屏幕分辨率更改时的闪烁。成功恢复桌面后,用户将看到以下信息消息。 在此处输入图片描述

如果您经常看到此消息,请查看此知识库文章:

Windows 7 或 Windows Vista 中的“显示驱动程序停止响应并已恢复”错误

http://support.microsoft.com/kb/2665946/en-us

如果您使用 AMD GPU,请查看 AMD 的这篇文章:

如何解决“显示驱动程序停止响应并已恢复”,ATIKMDAG.sys 类型错误

http://support.amd.com/en-us/kb-articles/Pages/737-27116RadeonSeries-ATIKMDAGhasstoppedrespondingerrormessages.aspx

答案2

“崩溃” 是一个非常宽泛的术语。你可能指的是这个气球消息:

显示驱动程序停止响应并已恢复。

它也不是很详细,你应该这样阅读:

您的 GPU 发生了意外情况,但驱动程序已施展魔法将其恢复。不要惊慌,现在情况已得到控制。

所以基本上不是驱动程序崩溃了,而是硬件崩溃了。驱动程序已经尽了最大努力并成功了。当 GPU 崩溃时,引擎盖下发生了什么取决于实现,但通常驱动程序会重置它以确保它没有处于某种异常状态。

我相信 Windows 自 Vista 以来就支持这种形式的 GPU 崩溃恢复,但我记得在大约 8 年前,即 Vista 发布之前,在 XP 上使用 ATI GPU 的华硕卡上看到过类似的自动恢复功能。

答案3

驱动程序没有崩溃,GPU 崩溃了。PC 通过重置 GPU 恢复。

答案4

在 Win7 上我不能肯定,但在其他系统上,驱动程序有顶部和底部。底部很可能会使整个系统崩溃,因为它在公共内存中运行。顶部运行在更高的级别,可以保护它免受损坏其他东西,因此可以通过越界内存请求检测到崩溃,从而在它们破坏其他东西之前捕获它们。

相关内容