biGpython

生亦何欢,死亦何苦? 予我長袖,我必善舞!

导航

windows的启动过程

所指为XP系统,分为四个阶段,所需要用到的文件包括ntldr.exe(NTloader)、NTDetect.com、boot.ini、ntoskrnl.exe(NTosKernel.exe)、NTbootDD.exe、Bootsect.exe
  1. 引导阶段
    1. 初始化引导载入程序——首先运行的是ntldr.exe,将处理器的实模式(RealMode:内存钱640k留给MSDOS,剩余的当做扩展内存)改为 32位平坦处理模式(flat memory mode:可以使用计算机上安装的所有内存)。载入“微型文件系统驱动”,该驱动能使XP读取NTFS和FAT/FAT32上的文件。
    2. 选择操作系统——根据boot.ini文件,列出已安装的操作系统列表。
    3. 硬件检测——主要用到的程序是NTDETECT.COM和NTLDR,NTDETECT.COM将计算机上的硬件信息收集起来列成一个表,并将该表交给NTLDR。
    4. 配置文件选择——(非必须)多用于笔记本。
  2. 载入内核  
    1. 首先载入的是内核文件——NTOSKRNL.exe,但仅仅载入不初始化,接着硬件抽象层(hal.dll)被载入——是联系内核和操作系统跟应用程序的桥梁,使后两者可间接与硬件打交道。
    2. 载入注册表HKEY_LOCAL_MACHINE的System下的Console Set注册表键,来决定系统载入的是那些驱动和服务,进入初始化内核阶段,ntldr将系统控制权交给操作系统内核。
  3. 初始化内核
    1. 创建Hardware键——根据之前的硬件检测阶段检测到的文件信息来创建该键。(是动态更新的)
    2. 对console set键复制——如果上一步成功,会对HKEY_LOCAL_MACHINE的System下的Console Set注册表键进行复制,创建一个备份,这个备份就是在开机F8下的最后一次正确配置,比如安装驱动中途失败,在此重启就会提示。
    3. 载入和初始化设备——
      1. 首先会初始化 在载入内核阶段时载入的底层设备驱动
      2. 然后根据注册表HKEY_LOCAL_MACHINE的System下的CurrentConsoleSetServices注册表键下查找键值为“1”的设备驱动。
    4. 启动服务——会话管理器,开始启动高层系统和服务,然后启动win32子系统,win32子系统的作用是:控制所有输入和输出设备以及所有访问显示设备。所有这些做完之后,windows的图形界面就出来了,键盘鼠标也可以使用了。接下来会话管理器会启动winlogon.exe程序。
  4. 登陆阶段——winlogon.exe进程会启动本地安全授权子系统,此时会显示登陆界面和欢迎界面,注意此时系统还没完全启动完成,回去注册表currentConsoleSetServices下寻找所有的start键是2的服务——即非关键服务。

posted on 2012-01-10 23:55  biGpython  阅读(545)  评论(0编辑  收藏  举报