本帖最后由 拿铁不加糖 于 2012-8-27 21:39 编辑
一个花费两三年时间,数千人开发,参与测试人数达到数百万的产品,其中必然有不少值得我们去探讨分享的新技术和新功能,Windows 8正是这样一款产品。作为世界上最流行的操作系统的最新版本,Win 8有着不少改进和更新,虽然我们对其毁誉不一,但不可否认的是,这款产品正试着给我们带来许多新的技术,尝试着让我们生活的更加轻松。所以,我接下来会以一个系列的文章,来跟大家分享探讨一下Win 8里面那些我们感兴趣的,或是关键的一些新名词、新技术。今天,我们就来看一下Win 8最闻名的改进——快速启动。 从WDP开始,相信大家都注意到了一点,在大多数配置下Win 8的启动速度比起之前的版本都有了很明显的提升。这个优势就是来源于Win 8经过改进的启动机制,微软官方称之为“快速启动”。对这一部分,微软在“Building Windows 8”博客里面已经介绍过了,当然下面我要说的并不只是那个文章里面的内容,但是就让我从快速启动的机制开始说起吧。 较旧的系统,比如Win 7,我们在对其进行重启的时候,我们就可以看到一个完整的“关机+开机”流程。如下图所示:
这个图来自微软在开发Win 8的早期技术文档,里面说的是新的系统重启过程跟Win 7的看起来一模一样,但是实际上过程有着比较大的区别。旧式重启的流程是这样的: 关机流程: 1、由用户通过按下开始菜单的“关机”按钮,或者按下主机上的电源键引发一个关机的操作;或者应用程序调用系统接口函数ExitWindowsEx()或者InitiateShutdown()来触发一个关机操作。
2、Windows系统向整个系统里面的所有正在运行的程序发出一个广播信息,让程序可以有一个保存程序数据的机会,程序当然也可以向系统请求一小段时间来完成保存工作。这也就是我们关机的时候遇到半透明灰色界面,询问是否继续关机的时候所进行到的一步。
3、Windows关闭每一个已登陆帐户的用户会话。
4、Windows向系统的服务发出信息,提示它们一个关机操作已经开始,因此它们应该自行关闭。这个过程将会根据服务的依存性来依次从上而下关闭,其余的平行关闭。如果有服务出错不能关闭,则会被强制关闭。
5、Windows向硬件设备发出信号,提示设备关闭。
6、Windows关闭系统会话(也就是“session0”)。
7、Windows清理所有挂起的数据,将它们送至对应的系统驱动,以保证这些数据被完整的保存。
8、Windows通过ACPI(高级配置与电源接口)向电脑的硬件发出断电的信号,最后关机断电。当然如果是重启,则不会断电。 补充知识:ACPI相关指令 G0(S0): 工作状态 这个就是正常情况下的状态,“离开模式”也属于这个模式,只是显示屏被断电。 G1(S1~S4):睡眠状态 睡眠状态根据睡眠断电的程度分成四级:S1~S4 G2(S5), Soft Off: (软关闭) 这个模式电脑的供电系统保持供电,其余硬件都只带电而不带数据。这个模式用于重启或者是可通过外设唤醒的休眠状态,整机处于一个最低的耗电状态,而又可以接受外设的数据。 G3,Mechanical Off:(硬关闭) 这种状态就是一般开机时直接按下电源键后得到的状态,整机彻底不带电,可以拆装。 下面是开机流程: 1、在按下电源键之后,电脑的硬件启动一个通电自检程序(POST, Power-On Self Test)。这个程序是记录在BIOS里面的一小段程序,检查通过之后就会加载BIOS里面的硬件设置。当一个系统磁盘被检测到之后,自检就会结束。 2、硬件读取主启动记录(MBR, masterboot record),然后启动Bootmgr.exe程序。这个程序在系统盘上搜索Windows的启动程序Winload.exe。 3、当Winload.exe启动之后,Windows内核所需的基础的驱动就会被加载,然后系统内核被启动,并加载所有标记为BOOT_START的注册表记录和更多的驱动到内存中。 4、系统内核将控制权传递给会话管理进程(Smss.exe),它将启动系统会话,加载并启动没有被标记为BOOT_START的系统设备和驱动。 5、Winlogon.exe被启动,这时候我们所熟悉的用户界面就会出现。服务管理器启动系统的服务,所有的组策略都在这时候被运行。当用户通过选择用户名称(可能自动跳过,也有的情况需要键入密码)登陆后,Windows就会为用户创建一个用户会话。 6、Explorer.exe启动,系统创建桌面窗口管理器进程(DWM.exe),这个进程初始化桌面,并最终显示。启动完毕。 这整个过程中每一步所花费的时间都是可以监控的。下面是自己动手环节,自己监控自己的系统启动情况~如果只是想看看技术简介,可以跳过这一部分。
在Windows SDK里内含了一个工具:Windows Preformance Tools Kit。前者可以在下面的链接下载到: http://www.microsoft.com/en-us/download/details.aspx?id=8279 安装好之后,以管理员权限打开“命令提示符”,键入下面的命令:(用之前保存一个还原点) - xbootmgr -trace boot -traceFlagsBASE+CSWITCH+DRIVERS+POWER -resultPath C:\TEMP
复制代码
部分机子可能这样之后重启会遇到蓝屏= =。这在有的情况下跟踪的参数加上DRIVERS可能会出现,这时候就返回前面保存的还原点,去掉那一个参数,少监控一部分,但是就不会有问题出现: - xbootmgr -trace boot -traceFlagsBASE+CSWITCH +POWER -resultPath C:\TEMP
复制代码
当然,这是跟踪启动过程的命令,如果想跟踪关机过程,将上面的boot换成shutdown,休眠过程则换成hibernate。C:\TEMP是记录文件的存放地址,可以自行修改。 当完成一次跟踪之后,相应地址就会有文件生成,下面用这个命令将里面的etl文件编译成xml文件来进行分析:(文件名根据相应情况修改) - xperf /tti -i
- boot_BASE+CSWITCH+DRIVERS+POWER_1.etl -o summary_boot.xml -a boot
复制代码
打开生成的xml文件,会看到这样的内容: 里面写的就是每一步对应的开始和结束时间点,六位数字就是分秒毫秒单位计时。timing bootDoneViaExplorer 值是windows启动至桌面出现所需时间;bootDoneViaPostBoot值是windows完全启动至所有用户程序都启动完达到10秒空闲所需要的时间。
这就是整个启动过程图,xml上面名称可以对应相应部分,在前面的启动流程步骤有具体介绍,不再赘述。
从这里我们可以想到,既然每次系统关闭需要将服务和驱动的数据临时保存,下次又重新取出接着运行,那么为什么不将整个这个系统的基础部分利用休眠的方式从内存复制下来,下次重新取出放入内存就可以一步完成几步的操作,而且完成的速度相当快。因此,Win 8引入了混合启动。
正如上图所示,混合启动的关键就在于将系统关闭开启的时候频繁的写入读取系统基础服务和驱动的步骤用休眠替代,每一次关闭的时候,数据不需要转换,直接写入休眠文件,下次启动读取后,只要做额外的一些非BOOT_START标记的驱动的初始化,就可以启动Winlogon.exe来启动用户登陆界面,中间的系统会话、服务不需要广播等待关闭开启,大幅度的提升启动速度。这就是Win 8快速启动的奥秘所在。 在Win 8下,运行这个命令:
这时候我们可以在系统分区下发现一个相当大的文件,默认大小为内存大小的75%,但是一般情况下只是内存大小的10~15%,区别在于系统的驱动、服务等各种因素。这个文件就是系统用于存放休眠数据的文件。在以前的Windows版本实际上已经存在这个文件,充当着相同的功能。 这个新的启动模式能让所有配置的电脑启动加快,而且如果配合新的UEFI(统一的可扩展固件接口)主板,通过更快的完成启动系统之前的自检以及配置硬件操作(POST/Pre-boot),系统启动将进一步加快。当然,有的时候我们希望系统进行一次彻底的重启,来完成我们的硬件改动。这时候我们就需要通过命令行来实现:
另外,Win 8有着全新的系统选择界面。大家可能从WCP开始就发现,Win 8的系统切换需要先启动完系统,才出现选择菜单,选择别的系统则需要第二次启动。为什么会这样呢?我们来回顾一下刚才的启动流程。 旧式的启动流程,需要通过MBR找到Bootmgr.exe来启动Winload.exe进行各种驱动和基础的服务的启动。但是在新的快速启动流程里面,这一步被休眠恢复所取代。恢复所需的时间不长,恢复完已经可以提供基本的完整系统功能,各种服务、驱动更加齐全。如果我们选择以旧式的思路,将选择放在恢复之前,那么就必须在这里面再插入一步来显示选择菜单,而且对于没有键鼠的平板,在这种菜单下根本无法操作——缺乏触摸屏的驱动。为了整个系统各版本的风格统一,也为了提供更高级的操作菜单,将选择放在恢复之后就是明智的选择。从这里我们可以更加看出微软在Win 8上为平板所放的心思。
但是快速启动有一个致命的原理漏洞,到目前尚未被解决。这个漏洞涉及的是有多个硬盘多个系统启动的用户,如果在休眠之后启动的时候选择其他系统而不是win 8,会导致上一次进入win 8进行的所有硬盘操作均被消除。具体情况请看这里:
https://bbs.pcbeta.com/viewthread-1051143-1-1.html
总结一下:
快速启动的优点:
启动步骤少,快捷;新菜单功能更加强大,能用键鼠操作,方便新手使用;对平板能够有更好的启动多系统选择支持。
缺点:
每次选择非win 8系统必须二次启动;设备需要彻底重启必须用命令行关机,或者关闭快速启动;快速启动有原理漏洞,可能导致资料丢失。
下面我们作为对比,简单介绍一下OS X和Linux的启动流程。由于内容比较长,只推荐对此感兴趣的坛友仔细阅读。谢谢各位的关注~
版权归楼主所有,转载请注明出处。
|