答案1
有很多停机期间发生的事情。以下只是几个例子:
- 检查是否有任何用户应用程序尚未关闭(如未保存的文档),并在必要时提示用户
- 停止后台服务
- 等待打开正在运行的服务和应用程序的终止信号
- 将缓存刷新到磁盘
- 写入日志文件
- 所有用户均已注销
- 结束 shell
- 如有必要,开始安装 Windows 更新,并告知操作系统在启动时完成更新
- 发送 ACPI 关机信号(这将关闭机器)
编辑:如果您能想到其他项目,请随意在评论中添加更多内容。
答案2
系统注册表(可能?)已写入磁盘。回到 XP,我注意到如果您对注册表进行了任何更改,然后关闭电源,则更改不会保存。我对此不太确定,只是指出这一点。
以下是微软发布的一份文件的摘录。
• 系统会话关闭。此阶段包括关闭前通知和关闭通知子阶段:
• 预关闭通知。Windows 按顺序关闭所有已注册接收预关闭通知的服务。有序服务(已设置依赖服务关闭顺序的服务)在无序服务之前关闭。
• 关机通知。所有注册接收关机通知的服务将同时关闭。如果所有服务在 20 秒(Windows Vista 中)或 12 秒(Windows 7 客户端操作系统中)后仍未退出,系统将继续关机。未及时关闭的进程和服务将在系统关机时继续运行。
• 内核关闭。系统的其余部分(如所有设备和驱动程序)在内核关闭阶段关闭。
基本上,您要等待的是每个服务清理并退出。每个服务在被终止前有 12 秒的时间退出。
关机时间的一半用于关闭系统服务。如果您真的想知道关机期间哪些时间用于什么,Windows 包含一个用于跟踪关机时间的工具。
xbootmgr -trace shutdown -numRuns 3 -resultPath %systemdrive%\traces -postBootDelay 180 -traceFlags base
并理解生成的文件(确保在 %systemdrive%\traces 中运行)
xperf -i trace.etl -o summary.xml -a 关闭
资料来源:更新:来自微软服务器的链接不再有效
download.microsoft.com/download/3/C/A/3CA9058B-7EE5-4191-99E2-DB5917877522/OnOffTransPerf.docx
https://s3-us-west-1.amazonaws.com/omarpersonal/OnOffTransPerf.docx
download.microsoft.com/download/7/E/7/7E7662CF-CBEA-470B-A97E-CE7CE0D98DC2/OnOffTrans.docx
https://s3-us-west-1.amazonaws.com/omarpersonal/onofftrans.docx