用户会经常抱怨自从安装自己的应用后,电脑开机变慢,到底是系统的原因还是应用的原因,为了了解这里的问题,探秘了下windows的开机过程和测试方法。
一、开机过程是怎样的
查看MSDN,微软将开机过程分为四个阶段:
1.BIOS初始化阶段
按上电源后,BIOS先进行硬件自检(POST),当检测到合法的操作系统分区,则完成硬件自检。读取MBR(主引导记录 Master boot record),启动Bootmgr.exe(Windows Bootmgr),并调用WinLoad.exe(Windows operating system loader),进入到osloader阶段。
其中Bootmgr.exe winload.exe是win7之后操作系统定义系统启动过程的组件。
2.OSLoader阶段
WinLoad.exe加载必要的系统驱动,当windows内核可执行时,则完成系统驱动的加载。这个阶段的驱动都是BOOT_START类型的(驱动的starttype是0)
3.MainPathBoot阶段
系统启动大部分工作集中在这个阶段。又将其细分为PreSMSS SMSSInit WinLogonInit Explorerinit 四个子阶段。
1)PreSMSS
WinLoad.exe调用内核,初始化内核,启动 PnP 管理器检查设备,加载并初始化设备驱动程序
2)SMSSInit
这个阶段是控制权从内核阶段移交给Smss.exe(session manager 进程),主要初始化视频驱动并启动子系统的Smss.exe, Csrss.exe, Wininit.exe, Winlogon.exe。
3)WinLogonInit
SCM启动自启动服务的工作在此阶段,登录界面出现,WinlogonInit结束后,桌面进程(Explorer)启动。
4)Explorerinit
创建桌面窗口管理器,初始化桌面,桌面首次出现,服务和应用程序都在这个阶段启动,是 CPU密集型阶段。
4.PostBoot阶段
用户可以与桌面进行交互,但系统仍然可能在启动服务,如托盘图标或应用程序在后台的代码等。这个阶段终止于系统合理的idle时间。其中Xbootmg