windows系统的启动过程

下面来说说windows系统是怎么启动的

1. 预引导阶段,就是从引导设备中读取MBR主引导记录

2. 引导阶段

a) 初始化引导载入程序,程序ntldr会寻找系统自带的一个微型文件系统驱动,用于读取文件系统驱动并找到硬盘的相应分区

b) 操作系统选择,程序ntldr会读取boot.ini(不陌生吧)来进行操作系统的选择,然后从boot.ini来读取操作系统的系统文件位置,这个文件记录了硬件适配卡的序号和硬盘的序号以及分区的序号,读取完成之后对系统进行引导

c) 硬件检测,当选择完成操作系统之后,会首先调用程序将所有的硬件设备列成一个表,然后把这个表交给ntldr,表的信息稍后又会用来创建注册表中有关硬件的键值

d) 配置文件的选择,这一步不是必须的,只有在计算机(常用于笔记本)中创建了多个不同的硬件配置文件的时候才会有用

3. 载入内核,还是那个程序ntldr将windows的内核文件neoskrnl.exe载入,这里仅仅是载入,并没有进行初始化,随后被载入的是硬件抽象层,这个时候内核载入的是HKEY_LOCAL_MACHINE/System注册表键,然后选择载入那个ControlSet键,这些键决定了随后操作系统将会载入哪些服务和驱动程序

4. 初始化内核,初始化内核阶段,程序ntldr会将系统的控制器交给操作系统内核

a) 这一阶段会用在硬件检测阶段的硬件表来创建Hardware键,这个键会根据系统当前的硬件配置情况动态更新

b) 对ControlSet注册表键进行复制,如果Hardware键创建成功的话,那么复制出来的这一个作为一个备份,这个备份会被用在“最后一次正确的配置”之中。比如,如果你因为安装了显卡驱动,重启的时候,Hardware注册表键还没有被创建成功,系统就已经崩溃了,那么你就可以使用最后一次正确配置,系统会还原上一次的ControlSet信息,然后重新生成Hardware,这样就可以撤销更改

c) 载入和初始化设备驱动程序

d) 启动服务,这个时候ntoskrnl就会启动smss会话管理器,smss启动其他高层子系统和服务,加载初始化内核模式中的Win32子系统,启动csrss.exe(Win32子系统在用户模式中的部分),进而进入Win32子系统。当这些操作完成后,windows的图形化界面也就出来了,用户也就可以使用键盘鼠标了

e) Smss启动winlogon,winlogon会启动本地安全性授权lsass.exe子系统,加载图形化标识和认证,并等待用户登录,然后启动后台服务管理器services,通过services来启动所有标识为自启动的win32服务程序

至此,windows启动完成

首发于我的个人网站: 点击打开链接

你可能感兴趣的:(windows系统的启动过程)