windows内核为用户模式代码提供了一组系统服务,供应用程序使用内核中的功能。应用程序通常不直接调用这些系统服务,而是通过一组系统DLL,最终通过ntdll.dll切换到内核模式下的执行体API函数中,以调用内核中的系统服务。
windows kernel 关键组件
内核 = 执行体 + 微内核 + HAL
- 内核 ntdll.dll, ntoskrnl.exe + hal.dll + drivers
HAL-
在windows中,HAL是一个独立的dll。windows安装包随带了多个主流机器的HAL,但安装时只有一个被copy和改名为hal.dll. hal.dll 提供了其它内核模块和设备应用程序的调用例程,使得一个设备驱动程序可以支持同样的设备在不同的硬件平台上运行。
HAL 不仅涵盖的处理器的体系结构,也涉及了中断控制器、单处理器和多处理器等硬件条件。
内核(或微内核)
它是内核模块ntoskrnl.exe中的下层部分,最接近于HAL层,负责线程调度和中断,异常处理,同步多处理器之间的行为。这一层的核心任务是让系统中的所有处理器尽可能地忙和高效。内核层可以在多个处理器上并发执行,代码以C语言为主和部分汇编。按照面向对象的思想设计而成,负责管理两种类型的对象:分发器