网站搜索

Windows 计算机关闭时实际发生了什么?


虽然我们大多数人可能很少考虑每次关闭计算机时发生的所有事情,但在关闭过程中“幕后”到底发生了什么?今天的 SuperUser Q&A 帖子对一位好奇的读者提出的问题进行了解答。

今天的问答环节由 SuperUser 提供 - Stack Exchange 的一个分支,一个由社区驱动的问答网站分组。

问题

超级用户 RACING121 想知道 Windows 计算机关闭时实际发生了什么:

当我单击 Windows 系统上的关机按钮时,它会显示另一个屏幕,显示正在关机

这个阶段实际上发生了什么?

如果我没记错的话,在 Windows XP 中它会在关机前显示类似正在保存设置 的内容。但是,这里实际保存了哪些设置?例如,如果您应用了一个主题或完成了一些其他操作,当您单击应用确定 时,它已经被“保存”。

如果是卸载硬盘,那肯定和拔插头强制关机一样吧?

Windows 计算机执行关机过程时实际发生了什么?

答案

超级用户贡献者 Keltari 和 zzarzzur 为我们提供了答案。首先,Keltari:

关机过程中发生了很多事情。这里只是几个例子:

  • 检查是否有任何用户应用程序尚未关闭(如未保存的文档)并在必要时提示用户
  • 停止后台服务
  • 等待来自打开或正在运行的服务和应用程序的终止信号
  • 刷新缓存到磁盘
  • 编写日志文件
  • 所有用户均已注销
  • 结束shell
  • 开始安装 Windows 更新,并在必要时告诉系统在下次系统启动时完成更新过程
  • 发送 ACPI 关机信号(这是关闭机器的信号)

接下来是zzarzzur的回答:

系统注册表(也许?)写入磁盘。当我使用 Windows XP 时,我注意到如果您对注册表进行了任何更改然后关闭电源,这些更改将不会被保存。我不太确定这个,只是指出来。

以下是 Microsoft 发布的文档的摘录:

  • 系统会话关闭。此阶段包括关机前通知和关机通知子阶段。
  • 预关机通知。 Windows 连续关闭所有注册接收预关闭通知的服务。有序服务(已设置依赖服务关闭顺序的服务)在非有序服务之前关闭。
  • 关机通知。注册接收关闭通知的所有服务并行关闭。如果所有服务在 20 秒(在 Windows Vista 中)或 12 秒(在 Windows 7 客户端操作系统中)后仍未退出,系统将继续关闭。未及时关闭的进程和服务在系统关闭时继续运行。
  • 内核关闭。系统的其余部分(例如所有设备和驱动程序)在内核关闭阶段关闭。

基本上,您等待的是清理和退出的每个单独服务。每个服务在被杀死之前有 12 秒的退出时间。

一半的关机时间专门用于关闭系统服务。如果您真的很想知道在关机期间什么时间专门用于任何事情,Windows 包含一个用于跟踪关机时间的工具。

  • xbootmgr -trace shutdown -numRuns 3 -resultPath %systemdrive% races -postBootDelay 180 -traceFlags base

并理解生成的文件(确保在 %systemdrive% races 中运行)

  • xperf -i trace.etl -o summary.xml -a shutdown

来源

Windows On/Off 过渡性能分析文档 [Microsoft]

Windows 开/关转换解决方案指南文档 [Microsoft]

有什么要补充的吗?在评论中关闭。想从其他精通技术的 Stack Exchange 用户那里阅读更多答案吗?在此处查看完整的讨论主题。