过去经常为了优化家里的Windows 系统启动时间所苦恼为此我还特地买了块固态硬盘和可以做Smart Cache的主板进行优化此后就经常用安全卫士的启动时间优化作为评测看到经过优化的电脑可以用秒时间启动系统并且在安全卫士中显示击败了全国%的电脑不禁飘飘然起来然而最近工作用的笔记本电脑因为工作原因升级了Windows RTM版却惊讶的发现在我的大黑Thinkpad W上竟然启动时间是秒没看错真的是歎为观止的秒!!! 比较一下同样用SSD启动的家中的Mac Air竟然还要胜上一筹那么究竟Windows 中暗藏了什么玄机呢?让我们一探究竟! 想想大家是不是都曾经为了优化启动时间苦恼过?聪明的你也许会采用过去我常用的方式休眠方式但是这种方式显然由于要保持通电状态维持内存状态而或者不利于笔记本电池的寿命或者对台式机还是费电Windows 的出现就是为了满足我们可以高效快速的冷启动其实在Windows 中已经对启动过程做了适当的优化和改进例如并行加载设备驱动和服务启动但是Windows 显然更进了一步确切的说Windows 创新性的结合了冷启动和休眠方式来加速启动过程 那么Windows 中的启动和关机过程涉及了哪些环节呢? 一个完整的关机过程包括了 选择开始菜单中的关闭按钮或按下电源按钮或者应用程序通过调用 API ExitWindowsEx() 或 InitiateShutdown() 等启动关机 Windows 系统将关机信息广播给所运行应用程序让他们有机会来保存活跃数据和设置状态;应用程序还可以请求一点额外的时间 Windows 系统将关闭每个登陆的用户会话 Windows 系统将系统关闭信息发送给所有服务并告知关机过程已经开始随后有序的将其关闭关闭过程是并行的停止服务对于具有依赖关系的服务串行关闭如果服务没有响应系统将强制关闭 系统也会告知所有设备将其关闭 Windows关闭自身系统会话(会话) Windows系统将所有挂起的数据刷新到硬盘并确保完全保存 Windows系统通过ACPI电源接口通知底层电源模块关机 对于系统的启动过程呢?(我还将在未来的无盘SAN Boot引导Windows Server 的博客里面展开论述) 按下电源按钮后 PC 的固件启动开机自检过程(大家熟知的POST)并加载固件设置这个预引导过程结束时会检测到一个有效的系统磁盘才继续(当然我们需要在BIOS中设置检测到硬件后的引导顺序) Firmware 的嵌入式启动程序读取主引导记录 (MBR)随后启动 BootmgrexeBootmgrexe 在 Windows 启动分区上查找并启动 Windows 加载程序 (Winloadexe) 加载启动 Windows 内核所需的基本驱动程序然后Windows的内核程序开始运行在此过程加载系统注册表配置单元和附加标记为 BOOT_START 的驱动程序到内存中 Windows内核将控制传递给会话管理器进程 (Smssexe) 初始化系统会话然后加载和启动未标记为 BOOT_START的设备和驱动程序 Winlogonexe 启动显示用户登录屏幕服务控制管理器启动服务相应的组策略脚本运行当用户登录时Windows 将创建该用户的会话 Explorerexe 启动系统将创建初始化桌面并显示它的桌面窗口管理器 (DWM)进程 从上面的关机过程中可以发现系统需要关闭所有的用户会话和内核会话关闭服务和设备然后才会彻底关机 而 Windows 可以快速启动的关键改变在于 在 Windows 中会关闭用户会话但不再关闭内核会话而是以柔性的休眠方式处理相比充分休眠方式由于应用程序使用的内存页很多相对的如果只保留系统会话 的休眠状态数据实际是会小很多的这样会大大减少休眠所用到的内存回写到磁盘的时间休眠状态就是指写到磁盘 (hiberfilsys) 上的文件有效保存系统状态和内存的内容信息然后恢复和还原的时候在将内容读取回内存Windows 的冷启动使用了这种技术读取休眠文件和重新初始化驱动程序的时间会快很多对于大多数主机上会有%在的显着提升这一点也比较容易看出来聪明的各位看官你懂得 从休眠方式恢复的速度显然比重新初始化恢复快很多(这不就是投机的我们之前会可以选择休眠的原因吗)另外Windows 还增加了多阶段恢复的功能类似单机系统的分布式作业拆解例如如果你是i或i四核的主机将充分利用所有内核并发读取和解压缩休眠Hibernate文件要知道解压缩还是比较消耗CPU的;这个功能对于我们从休眠状态恢复系统同样有了很大的提升! 另外值得一提的如何对待休眠文件在Windows 系统中用 dir /s /ah hiberfilesys 也许你会发现这是相当大的一个默认是以物理内存的 %作为休眠文件的大小基本上是作为系统为了进入休眠状态时写出的状态数据所保留的大小实际上作为快速启动它通常只是是物理内存的 ~% (根据驱动程序 服务和其他因素而异) 另一个重要 Windows 的快速启动特点是尽管这种方式不会完全枚举所有"即插即用"的设备驱动程序但快速驱动模式仍然会初始化驱动程序因此在快速启动方式下的冷启动仍然可以和从前一样从容应对硬件环境的改变当然大家如果有条件用SSD快速启动的效果会更加明显你也懂得即便是读少量的休眠文件固态盘也比机械硬盘给力 还有一个值得介绍的其实也多余一说的是如果你的PC机不算老那么当然对比用老的BIOS启动新的UEFI(统一可扩展固件接口)BIOS的启动速度还是快很多的UEFI在通电后会首先初始化CPU和内存与BIOS不同接下来其他设备的加载和初始化则将有可能被并行处理这将大大提高系统的启动速度当然现在绝大多数主机的主板都支持UEFI模式) 最后检查一下你的Windows 是不是启动了这个功能吧当然默认应该是打开的 在命令行运行powercfg /a 可以看到我的系统已经启用了快速启动功能 通过控制面板也可以设置和查看 最后说明一下大家可能知道可以通过运行 powercfg /hibernate off命令禁用休眠和回收磁盘空间不过看了前面介绍的快速启动部分也许你该明白这样做不仅仅将禁用休眠连快速启动功能也损失了如果你想直接回到Windows 的启动状态可以运行shutdown /s /full / t 关机或者选择从图形界面重新启动都会触发一个旧的冷启动过程但是为什么要退回去呢? |