windows体系结构是分层的模块系统,主要层次有硬件,抽象层HAL、内核、执行体和大量的子系统集合。前面三个都运行在保护模式下,而各子系统都在用户模式下运行,子系统又可分为环境子系统和保护系统两类,其中环境子系统仿真不同的操作系统,保护系统提供安全功能。
内核
内核执行windows操作系统中最基本的操作,主要提供下列功能:线程调度、陷入处理和异常调度、中断处理和调度、多处理器同步,供执行体使用的基本内核对象。
windows操作系统的内核始终运行在和心态代码短小紧凑,可移植性也很好,通常除了中断服务例程正在运行的线程是不能抢占内核的。
硬件抽象层HAL
windows操作系统设计的一个至关重要的方面就是在多种硬件平台上的可移植性,HAL是一个可加载的核心态模块HAL.dll,它为运行在windows操作系统上的硬件平台提供低级接口。HAL隐藏各种与硬件有关的细节,例如IO接口,中断控制器以及多处理器通信机制等,任何体系结构专用的和依赖于计算机平台的函数。
执行体
windows的执行体是NTOSKRNL.EXE的上层(内核是其下层)。执行体从用户态导出并且可以调用函数,这些函数的接口在NTDLL.DLL中,通过Win32API可以对他们进行访问。
系统进程和系统线程
系统进程是一种特殊类型的、只试运行在核心态的“系统线程”的宿主。系统线程具有一般用户态线程的所有属性和描述表,不同点在于它们仅运行在内核态,执行加载于系统空间中的代码。另外,系统线程没有用户进程地址空间,因此必须从系统内存堆中分配动态存储区。
系统线程只能从内核态调用,windows操作系统以及不同的设备驱动程序,在系统初始化时,创建系统线程以执行那些需要线程描述表的操作,例如发布和等待I/O,或其他对象轮询一个设备等。