有关Win8快速启动机制探讨
Win8个性化:一个花费两三年时间,数千人开发,参与测试人数达到数百万的产品,其中必然有不少值得我们去探讨分享的新技术和新功能,Win8正是这样一款产品。作为世界上最流行的操作系统的最新版本,Win8有着不少改进和更新,虽然我们对其毁誉不一,但不可否认的是,这款产品正试着给我们带来许多新的技术,尝试着让我们生活的更加轻松。 所以,我接下来会以一个系列的文章,来跟大家分享探讨一下Win8里面那些我们感兴趣的,或是关键的一些新名词、新技术。今天,我们就来看一下Win8最闻名的改进——快速启动。 Win8新技术深入探讨 – 快速启动机制(Hybrid Boot): 从WDP开始,相信大家都注意到了一点,在大多数配置下 Win8 的启动速度比起之前的版本都有了很明显的提升。这个优势就是来源于Win8经过改进的启动机制,微软官方表示之为“快速启动”。对这一部分,微软在“Building Windows 8 ”博客里面已经介绍过了,当然下面我要说的并不只是那个文章里面的内容,但是就让我从快速启动的机制开始说起吧。 这来自微软在开发 Win8 的早期技术文档,里面说的是新的系统重启过程跟 Windows 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 里面写的就是每一步对应的开始和结束时间点,六位数字就是分秒毫秒单位计时。timing bootDoneViaExplorer 值是windows启动至桌面出现所需时间;bootDoneViaPostBoot值是windows完全启动至所有用户程序都启动完达到10秒空闲所需要的时间。 这就是整个启动过程图,xml上面名表示可以对应相应部分,在前面的启动流程步骤有具体介绍,不再赘述。 从这里我们可以想到,既然每次系统关闭需要将服务和驱动的数据临时保存,下次又重新取出接着运行,那么为什么不将整个这个系统的基础部分利用休眠的方式从内存复制下来,下次重新取出放入内存就可以一步完成几步的操作,而且完成的速度相当快。因此,Win8引入了混合启动。 正如上图所示,混合启动的关键就在于将系统关闭开启的时候频繁的写入读取系统基础服务和驱动的步骤用休眠替代,每一次关闭的时候,数据不需要转换,直接写入休眠文件,下次启动读取后,只要做额外的一些非BOOT_START标记的驱动的初始化,就可以启动Winlogon.exe来启动用户登陆界面,中间的系统会话、服务不需要广播等待关闭开启,大幅度的提升启动速度。这就是Win8快速启动的奥秘所在。 在Win 8下,运行这个命令: dir /s /a hiberfil.sys 这时候我们可以在系统分区下发现一个相当大的文件,默认大小为内存大小的75%,但是一般情况下只是内存大小的10~15%,区别在于系统的驱动、服务等各种因素。这个文件就是系统用于存放休眠数据的文件。在以前的Windows版本实际上已经存在这个文件,充当着相同的功能。 这个新的启动模式能让所有配置的电脑启动加快,而且如果配合新的UEFI(统一的可扩展固件接口)主板,通过更快的完成启动系统之前的自检以及配置硬件操作(POST/Pre-boot),系统启动将进一步加快。当然,有的时候我们希望系统进行一次彻底的重启,来完成我们的硬件改动。这时候我们就需要通过命令行来实现: shutdown /s /full / t 0 另外,Win8有着全新的系统选择界面。大家可能从WCP开始就发现,Win 8的系统切换需要先启动完系统,才出现选择菜单,选择别的系统则需要第二次启动。为什么会这样呢?我们来回顾一下刚才的启动流程。 旧式的启动流程,需要通过MBR找到Bootmgr.exe来启动Winload.exe进行各种驱动和基础的服务的启动。但是在新的快速启动流程里面,这一步被休眠恢复所取代。恢复所需的时间不长,恢复完已经可以提供基本的完整系统功能,各种服务、驱动更加齐全。 如果我们选择以旧式的思路,将选择放在恢复之前,那么就必须在这里面再插入一步来显示选择菜单,而且对于没有键鼠的平板,在这种菜单下根本无法操作——缺乏触摸屏的驱动。为了整个系统各版本的风格统一,也为了提供更高级的操作菜单,将选择放在恢复之后就是明智的选择。从这里我们可以更加看出微软在Win8上为平板所放的心思。 |
查看原文: http://shouji.neq3.com/archives/1043
有关Win8快速启动机制探讨相关推荐
- linux系统如何选择内核启动,Linux系统的快速启动机制(内核切换)
快速启动机制:允许通过已经运行的Linux内核的上下文启动另一个Linux内核,不需要经过BIOS.BIOS可能会消耗很多时间,特别是带有众多数量的外设的大型服务器.这种办法可以为经常启动机器的开发者 ...
- 关闭Win8快速启动,解决网卡识别错误/网卡驱动安装不正确的问题
阴魂不散的问题 笔者安装的Windows 8是64位专业版,主板內建Intel 82597V千兆网络芯片.Windows 8系统的识别错误经常出现,尤其是当笔者上不了网时,一查看网络适配器,发现它被识 ...
- 计算机没有快速启动,Win10关机设置里没有启用快速启动选项的解决方法
Win10关机设置里没有"启用快速启动"选项怎么办?最近有Win10用户反馈问题,因为电脑启动速度较慢,于是就想去关机设置里打开快速启动选项,结果进入电源选项的关机设置后,发现&q ...
- 记一次windows蓝屏的解决方法——快速启动惹的祸
现象 公司电脑,Windows10 系统,我一般周一到周四不关机只休眠,一切正常,周五下班关机,可是到下周一过来开机必蓝屏(100%蓝屏),强制关机重启后又一切正常了. 后面反复测试了几次,发现只要是 ...
- windows睡眠(休眠)唤醒助手_Windows快速启动背后的功臣:休眠
在PC的世界里,微软还是这里的君主,这个总部坐落在美国北方西雅图的北境统治者感受到越来越强的寒意.Winter is coming,Linux的不死士兵们不断是从各个角落钻出来,撬动着微软王座的基石: ...
- linux 低功耗运行,关于Linux的快速启动(fastboot)和低功耗(low power)的学习记录...
我今天想查一下Intel工程师放在CSDN的一个视频,名字倒是查出来叫:Moblin系统的快速启动核心技术剖析,但是怎么找也找不找了.这是一个 好的技术介绍.难道给删除了.不知道CSDN是否上次查图片 ...
- 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究
嵌入式Linux系统主要特点在于使用Bootloader替代了桌面系统的BIOS,同时对系统进行了规模上的裁剪,但硬件上的劣势往往导致系统启动速度较慢,而嵌入式产品使用者又对系统的开机速度比较敏感,样 ...
- 计算机休眠快还是关机快,电脑关机、休眠、睡眠、快速启动模式的区别介绍
大家的电脑在关机的时候,一般都可以看到有好几个选项,包括睡眠.休眠.待机.关机.重启等等,不同的场景使用不同的模式,合理使用会使得工作效率事半功倍. 电脑电源模式你都了解吗? 那么,电脑睡眠和休眠有什 ...
- 大型银行敏捷DevOps转型之快速启动
中国银行业敏捷转型之大幕已经拉开,"5+12"银行都在大力推进.敏捷与DevOps(研发运营一体化)被理解为相互独立又相互融合的两个概念,在银行业已成燎原之势.在主导和参与了多家大 ...
最新文章
- Python day10 global关键字、函数递归、匿名函数、map函数的用法详解
- scala学习笔记-Array、ArrayBuffer以及遍历数组(7)
- 性能测试总结(三)--工具选型篇
- thinking-in-java(20)注解
- 【python】Python的基本数据类型之数字类型与字符串类型
- 分段式多级离心泵_分段式多级离心泵工作原理
- python版本的快速排序
- linux驱动基础开发0——linux 设备驱动概述-转
- Vmware之锁定文件失败
- 龙珠直播php,斗鱼、全民TV、龙珠等直播平台排行榜 看视频直播发展趋势
- android barchart设置标题,android - 如何设置MPAndroidChart BarChart的高度和宽度? - 堆栈内存溢出...
- java 国际象棋_java – 自我项目:使用GUI创建国际象棋游戏
- [原创]佰志达SBO网上商城系统业务框架介绍
- 华为云--欧拉操作系统
- java中数组拼接成字符串中间用逗号隔开
- Word控件Spire.Doc 【文本】教程(1) ;C#/VB.NET:从 Word 文档中删除文本或图像水印
- VNA测量时如何制作一个TRL校准夹具
- 真肝,整理了一周的Spring面试大全【含答案】,吊打Java面试官
- 从18路诸侯讨董卓,谈如何对抗51%攻击
- 运算放大器中的正负反馈判断和电压电流反馈判断