这是widnows启动过程系列文章第二篇,看第一篇,请点击
6. Ntoskrnl.exe 的KiSystemStartup,执行阶段0初始化
-
初始化主处理器
-
初始化各个组件,包括
-
-
Hal初始化(HalInitSystem)
-
执行体初始化(ExInitSystem)
-
内存初始化(MmInitSystem)
-
对象管理器初始化(ObInitSystem)
-
安全子系统初始化(SeInitSystem)
-
进程/线程管理器初始化(PsInitSystem)(创建系统进程和零号进程,创建执行阶段1的线程)
-
即插即用管理器初始化(PpInitSystem)
-
调试子系统初始化(DbgkInitalize)
该阶段初始化比较简单,以初始化组件内部状态为主,经过该初始化后,各个组件仅提供最基本的服务。
-
-
初始化完各个组件,该线程蜕变成该处理器上的空闲线程。线程iD=0。
7. Ntoskrnl.exe 的Phase1Initialization,执行阶段1初始化
上一步我们看到线程已经蜕变成空闲线程了,那Phase1Initialization函数又有谁调用呢?
在初始化进程/线程管理器的时候会启动一个系统线程,线程起始地址就是Phase1Initialization。
- HAL阶段1初始化
- 初始化图形引导驱动程序,显示windows启动屏幕,并设置进度范围
- 执行电源管理阶段0初始化(PoInitSystem)
- 初始化系统时间
- 启动并初始化其他处理器