预计阅读本页时间:-
11.3.2 启动Windows Vista
使用操作系统需要运行几个步骤。当电脑打开时,CPU初始化硬件。然后开始执行内存中的一个程序。但是,唯一可用的代码是由计算机制造商初始化的某些非易失性的CMOS内存形式(有时被用户更新,在一个进程中称为闪存)。在大多数PC机中,最初的初始化程序是BIOS(基本输入/输出系统),它知道如何在一台PC机上找到设备的标准类型。BIOS提供了Windows Vista在磁盘驱动器分区开始时首先装载的小引导程序。
引导程序知道如何在根目录的文件系统卷之外阅读足够的信息去发现独立的Windows BootMgr程序。BootMgr确定系统是否已经处于休眠或待机模式(特别省电模式,系统不需要重启就可以重新打开)。如果是,BootMgr加载和执行WinResume.exe。否则加载和执行WinLoad.exe执行新的启动。WinLoad加载系统启动组件到内存中:内核/执行体(通常是Ntoskrnl.exe)、HAL(hal.dll),该文件包含系统储巢,Win32k.sys驱动包含Win32子系统的内核态部分,以及任何其他在系统储巢中作为启动驱动程序列出的驱动程序的镜像,这就意味着在系统启动时,它们是必需的。
一旦Windows启动组件加载到内存中,控制就转移给NTOS中的低级代码,来完成初始化HAL、内核和执行体、链接驱动像、访问/更新系统配置中的数据等操作。所有内核态的组件初始化后,第一个用户态进程被创建,使用运行着的smss.exe程序(如同UNIX系统中的/etc/init)。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
Windows启动程序在遇到系统启动失败时,有专门处理常用问题的逻辑。有时安装一个坏的设备驱动程序,或运行一个像注册表一样的程序(能导致系统储巢损坏),会阻止系统正常启动。系统提供了一种功能来支持忽略最近的变化并启动到最近一次的系统正确配置。其他启动选项包括安全启动,它关闭了许多可选的驱动程序。还有故障恢复控制台,启动cmd.exe命令行窗口,它提供了一个类似UNIX的单用户态。
另一个常见的问题,用户认为,一些Windows系统偶尔看起来很不可思议,经常有系统和应用程序的(看似随机)崩溃。从微软的在线崩溃分析程序得到的数据,提供了许多崩溃是由于物理内存损坏导致的证据。所以Windows Vista启动进程提供了一个运行广义上的内存诊断的选项。也许未来的PC硬件将普遍支持ECC(或者部分)内存,但是今天的大多数台式机和笔记本电脑系统很容易受到攻击,即便是在它们所包含的数十亿比特的内存中的单比特错误。