重温-Window(NT)启动过程

来源:互联网 发布:京东美工 编辑:程序博客网 时间:2024/05/21 14:59

一.Windows系统构架


1.先加载内核模式的各种管理服务和子系统,然后再加载用户模式的各种服务。

2.用户模式的程序、服务通过NTDLL.DLL调用内核模式的各种系统功能

3.硬件抽象层(HAL.DLL)提供了Windows系统对底层硬件统一、透明的访问

 

二。重要术语和注意事项

1.系统卷(System Volume):

包含了如下重要文件的磁盘分区:

  • Master Boot Record(MBR)
  • Boot sector
  • NTLDR
  • Boot.ini
  • SCSI driver-Ntbootdd.sys

2.启动卷(Boot Volume)

包含系统文件的分区(%systemRoot%),包含Ntoskrnl.exe,Hal.dll等重要文件

三。Windows启动过程

1.开机,系统加电

2.BIOS自检

表象:显示器上依次显示显卡信息(如果为非内置),主板Logo,主机详细硬件配置信息(IDE设备、中断资源分配信息等)

3.BIOS读取MBR(固定地址)

MBR中包含分区表

4.在MBR中寻找第一个被标识为活动的分区(系统卷)

注:BISO中的引导信息和MBR中的内容都是在安装操作系统时进行的。

5.MBR通过磁盘读取方式加载NTLDR(NT Loder)

6.BIOS将控制权交给NTLDR

表象:显示器显示黑屏

7.NTLDR进行了如下操作:

  • 将系统从16位模式切换到32位模式
  • 开启(内存)分页管理
  • 如果启动卷为SCSI磁盘,从系统卷上读取Ntbootdd.sys对SCSI磁盘进行I/O操作、检测
  • 查找启动卷中是否包含有效的Hiberfil.sys文件,如果有效,跳过如下步骤,直接读取Hiberfil.sys中的信息到内存中,是系统恢复到休眠前的状态

表象:显示器显示系统(从休眠状态)重新启动状态条

  • 读取并且分析boot.ini文件,如果boot.ini中存在多个条目(并且在windwos中设置了开机显示启动列表),则显示启动列表。表象:显示器上显示多启动选择列表

8.如果选择了启动DOS:加载BOOTSECT.DOS文件供DOS引导

如果选择启动64为操作系统,NTLDR将CUP周期切换到64位

9.如果用户在此时按了F8键,将出现高级启动选项列表。

表象:显示器上显示高级启动选项列表(安全模式、命令行模式、最后一次正确配置等等)

10.NTLDR调用Ntdetect.com进行硬件和BIOS信息的检测(将结果保存到HKLM/Hardware/Description)

11.NTLDR加载注册表System hive文件,根据HKML/System指定的驱动程序(*.sys)拷贝到内存中

12.NTLDR加载Ntoskrnl.exe文件

13.NTLDR加载Hal.dll文件

14.NTLDR将其从boot.ini中读取的各种参数(包含用户按F8后进行的选择),传递给Ntoskrnl.exe,将控制权转给Ntoskrnl.exe的入口函数

表象:显示器上显示Windows启动Logo及加载滚动条

15.Ntoskrnl.exe通过两个阶段完成内核子系统的初始化

第一阶段完成对象定义(process,thread,driver等)和核心数据初始化

第二阶段完成对象初始化和子系统的启动

16.Ntoskrnl.exe调用I/O Manager按顺序加载"boot-start"驱动程序和"system-start"驱动程序

17.Ntskrnl.exe创建会话管理器(Session Manager)

(/Windows/System32/Smss.exe)(这是windows创建的第一个进程,处于用户态)

P.S.驱动程序的加载顺序

1.所有驱动程序的信息都被保存到了注册表(HKLM/System/CurrentControlSet/Services)中

2.加载类型(Type键值标识)有:1 for driver, 2 for file system driver, others are Win32 services

3.启动方式(Start键值标识)有:0=boot, 1=system, 2=auto, 3=manual, 4=disabled

注:可以使用driverquery命令查看驱动的加载信息

18.Smss.exe进行如下操作:

  • 运行BootExecute中指定的程序,如autuchk,chkdsk等
  • 处理"Delaved move/rename"命令(安装补丁重启后根据记录移动或重命名相应的文件)
  • 初始化分页文件和其余注册表项
  • 加载并且初始化内核模式中的Win32子系统(Win32k.sys)
  • 启动Csrss.exe(Win32子系统在用户模式下的部分)
  • 启动Winlogon.exe(准备登录)

表象:显示器上显示登录窗口

19.Winlogon.exe进行如下操作:

  • 启动LSASS(安全管理)
  • 启动GINA并等待用户登录(登录框):默认的GINA是Msgina.dll,可自行开发GINA来实现基于生物信息的用户登录(指纹识别等)
  • 启动Services.exe(后台服务管理器)

20.Services.exe启动所有标识为自动启动的Win32服务程序

启动完成!

原创粉丝点击