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 用户那里阅读更多答案吗?在此处查看完整的讨论主题。