1.内核理论基础
1.1 权限级别
CPU设计者将CPU运行的级别从内向外分为4个级别,分别为R0
,R1
,R2
,R3
。运行权限从R0~R3依次降低。即Ring0拥有最高权限,Ring3拥有最低权限。R0~R3级别的用途如下:
- R0:运行系统内核
- R1:运行设备驱动
- R2:运行设备驱动
- R3:运行应用程序
如图所示:
但是操作系统厂商为了方便并未使用R1,R2这两个级别,直接把内核
以及驱动
都运行在了R0中,把应用程序
运行在了R3。即当前主流操作系统中R0~R3级别的用途如下:
- R0:运行系统内核及设备驱动
- R1:未使用
- R2:未使用
- R3:运行应用程序
以windows XP为例,系统的架构如下图所示:
根据上图所示,一个普通用户想要访问内核,主要是通过调用
Win32API
,Win32API
调用ntdll.dll
和内核打交道。
1.2 windows与内核启动过程
windows操作系统启动主要包含以下几个步骤:
- 1.启动自检阶段
从BIOS中读取一些简单指令,进行硬件的初始化检查
- 2.初始化启动阶段
根据CMOS(保存启动信息的芯片)的设置加载启动盘,将MBR(主引导记录)中的引导代码载入内存。启动过程交给MBR执行。启动代码搜索MBR中的分区表,找出活动分区,将第一个扇区的引导代码载入内存。引导代码检测当前文件系统,查找ntldr
(win7之前)或Bootmgr
(win7)文件,然后把控制权交给这个文件。
- 3 .Boot加载阶段
设置内存模式,读取boot.ini
等操作。
- 4.检测和配置硬件阶段
检测适配器、鼠标、键盘等硬件。
- 5.内核加载阶段
加载一些内核和抽象硬件层,然后从如下位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
读取这台机器安装的驱动并加载。依次查找Start
键为为0或1的驱动进行加载。
- 6.Windows会话管理启动
驱动加载完成,启动会话管理器。
- 7.登录阶段
windows系统启动登录服务。