读书笔记_Windows的启动过程
2011-10-07 21:59
232 查看
Windows的启动过程:
1. 系统固件(firmware)首先启动,即BIOS(Basic Input/Output System, 基本输入输出系统)或EFI(Entex Firmware Interface),BIOS或EFI在完成基本的硬件检测和平台初始化后,会将控制权移交给硬盘上的引导程序。
2. 引导程序再执行操作系统的加载程序(OS Loader),在Vista之前是NTLDR, Vista之后是WinLoad.exe
3. 加载程序首先会对CPU做必要的初始化工作,包括从16位的实模式切换到32位的保护模式,启动分页机制等,然后通过启动配置信息(Boot.INI或BCD)得到windows系统的系统目录并加载系统的内核文件,即NTOSKRNL.EXE。当加载这个文件时,会检查它的PE文件头导入节中所依赖的其他文件,并加载这些依赖文件,包括用于内核调试通信的硬件扩展DLL(KDCOM.DLL,KD1394.DLL或KDUSB.DLL)。加载程序会根据启动设置加载这些DLL中的一个,并将其模块名统一称为KDCOM。
4. 而后系统加载程序会读取注册表的System Hive,加载其定义的启动(boot)类型(SERVICE_BOOT_START(0))的驱动程序,包括磁盘驱动程序。
5. 之后,系统加载程序会从内核文件的PE文件头中找到它的入口函数KiSystemStartup函数,然后调用这个函数,调用时将启动选项以一个名为LOADER_PARAMETER_BLOCK的数据结构传递给KiSystemStartup函数,于是NT内核文件得到控制权并开始执行。
6. KiSystemStartup函数的执行过程
A 调用HalInitializeProcessor()初始化CPU
B 调用KdInitSystem初始化内核调试引擎
C 调用KiInitializeKernel开始内核初始化
在KiInitializeKernel函数返回后,KiSystemStartup函数将当前CPU的中断请求级别(IRQL)降低到DISPATCH_LEVEL,然后跳转到kiIdleLoop(),退化为Idle进程中的第一个Idle线程。
相关文章推荐
- 读书笔记_windows内核调试_part2_ 多核启动过程
- 【读书笔记】Android 应用程序进程的启动过程
- u盘启动安装ubuntu与windows双系统过程记录以及可能出现的问题提示
- Windows启动过程详解
- Windows 2003标准版光盘启动安装过程详细图解
- 浅谈Windows 7系统启动过程
- Windows XP Professional计算机启动过程概述
- Windows启动过程详解
- 安装解压版本的MySQL,安装过程中的常见命令,检查windows系统错误日志的方式来检查MySQL启动错误,关于Fatal error: Can't open and lock privilege
- Windows启动过程(MBR引导过程分析)
- Windows启动过程详解
- WINDOWS系统启动过程中是如何调用硬盘数据的?
- Windows应用程序的启动过程
- Windows启动过程概述
- 安装解压版本的MySQL,安装过程中的常见命令,检查windows系统错误日志的方式来检查MySQL启动错误,关于Fatal error: Can't open and lock privilege
- Windows XP \Windows 2003启动过程的学习及故障分析处理(六B)
- Grub 命令行启动Windows全过程
- Windows XP \Windows 2003启动过程的学习及故障分析处理(七)
- windows启动过程
- Windows启动过程详解