一、windows 系统结构
windows采用双双模式结构来保护操作系统本身
1、用户模式 (user mode)
2、内核模式(kernel mode)
当应用程序需要用到系统内核或者内核驱动程序所提供的服务的时候,应用程序通过硬件指令,从用户模式切换到内核模式中,内核完成所请求的服务后,控制权回到用户模 式代码;
内核模式和用户模式能访问的内存空间:
内核模式可以访问当前进程的整个4GB虚拟地址空间。
用户模式只能访问底端的2GB虚拟地址空间。
用户模式访问的2GB以下的虚拟内存空间称为进程地址空间,2GB以上称为系统地址空间。实际上两者之间有一块特殊的64KB地址空间,位于0x7fff0000~0x7fffffff,两种模式都不可以访问,
windows子系统的概念:
windows 子系统与内核一起构成用户应用程序的执行环境,既有内核模式部分(图形和窗口管理),又有用户模式部分;
windows操作系统还包括一组系统进程和服务进程,他们为操作系统提供关键的服务;
二、windows 内核结构
windows内核分为三层
1、硬件抽象层 (HAL) : 把所有硬件想关联的代码逻辑隔离到一个专门的模块中,从而使上面的层次尽可能做到独立于硬件平台;
2、内核层(也称之为微内核 micro - kernel):包含了基本操作系统的原语和功能,如线程和进程、线程的调度、中断和异常处理、同步对象和各种同步机制;
3、执行体层(executive): 提供一些可供上层应用程序或者内核驱动程序直接调用的功能和语义。执行体重包含一个对象管理器,用于一致的管理执行体重的对象,执行体和内核层位于同一个二进制模块中,即内核基本模块,名称为:ntoskrnl.exe;
内核层和执行体分工:
内核层实现操作系统的基本机制,而所有策略决定则留给执行体;执行体通过某种方式(比如对象句柄)暴露给应用程序,实现策略与机制分离的思想;
执行体API函数为了确保系统健壮性,以及抵抗来自用户模式的恶意攻击,所有的执行体API函数必须保证参数的有效性,所以会在恰当的时候检查参数的值。