Win8极速启动的秘密

08-12

对于Win7系统,传统的按下电源按钮开机流程是这样的:

第一步:查找硬盘上的主引导记录(MBR),接着MBR读取硬盘分区表(DPT)。

第二步:找到活动主分区,读取活动主分区的分区引导记录,记者根据引导记录查找该分区个目录下的BOOTMGR。

第三步:BOOTMGR读取bootbcd文件并根据bcd记录列出操作系统启动菜单,接着加载winload.exe,然后通过加载Win7内核。

第四步:加载必需的硬件和服务,进入Win7桌面。

从上面的启动流程我们可以知道,第一步和第二步是操作系统启动之前的硬件读取,这和操作系统版本没有关系,对于第三步,Win8启动内核和Win7大致相同。因此Win8急速开机的秘密就在于启动的第四步(这也是整个开机过程中最费时间步骤),这就是Win8新增的混合启动技术(HybridBoot)。

Win8引入的混合启动技术,是通过睡眠技术的扩展而实现。传统的休眠是指系统自动将内存中的数据全部转存为休眠文件(即C:hiberfil.sys)。接着会切断所有设备的供电进入休眠状态。恢复操作时系统读取上次转存到C:hiberfil.sys文件中的数据,读取完毕即恢复原来的操作状态。

Win8的睡眠则做了进一步的改进,但我们在Win8选择睡眠关机时(单机关机菜单电源按钮即可),Win8会将系统大部分的核心系统,如驱动、系统服务等压缩写入内存,然后通过处理用户数据写入休眠文件hiberfil.sys中(也就是用户目前工作状态,如开着的Word文档),将Metro程序写入交换文件中(即Win8新增的C:swapfile.sys,以为Metro程序会自动挂起到后台运行)。当数据全部写入完成后,Windows通知固件进行关机。这样当我们下次按下电源键时(前提是查找电源没有断开,电脑仍然在通电状态下),系统会直接通过唤醒系统内存来启动上次写入的数据,再读取休眠文件和交换文件,然后将上次关机的状态呈现,这就是Win8的混合启动技术。如下图所示:

Win8极速启动的秘密

很显然,Win8混合启动的极速是依赖上一次的睡眠关机而存在的,这种新技术从上一次的关机开始就为下次开机做了准备(省去了系统内核、硬件以及各项服务初始化所需要的时间)。由于内存的读写速度很快,而其中保存的是上次已经进入系统后的成功加载的数据(比如自动启动的服务、加载项的硬件设备)、所以Win8的混合技术启动所花的时间实际上是“读取内存数据+读取休眠文件和交换时间文件的时间”。对于开机时间的定义大多是指按下电源键到出现桌面的时间(不包括启动程序所花的时间),Win8混合启动时间主要是指读取内存数据所花的时间。由于内存的读写速度较快,因此对于配置较高的电脑,这个内存读取时间(8秒)是很有可能的,这也是Win8发布会上台式机8秒开机的秘密所在!

如下图所示是Win7和Win8开机速度的对比图:

Win8极速启动的秘密