您的位置:首页 > 理论基础 > 计算机网络

Windows内核学习笔记(一)

2010-11-19 11:34 239 查看
一、Windows系统结构简介

Windows采用了双内核结构,操作系统核心运行在内核模式下,应用程序运行在用户模式下。当应用程序需要用到内核或内核扩展模块的服务时,使用硬件指令从用户模式切换至内核模式,等服务完成再切回用户模式。

 

Windows支持多环境子系统,除了Windows子系统外,还支持POSIX和OS/2环境子系统。

 

二、Windows内核简介

Windows内核分为三层,与硬件直接打交道的这一层称为硬件抽象层(Hardware Abstraction Layer,简称HAL),这一层的用意是把所有与硬件相关联的代码逻辑隔离到一个专门的模块中,从而使上面的层次尽可能做到独立于硬件平台。

 

HAL之上是内核层,有时候也称为微内核(micro-kernel),这一层包含了基本的操作系统原语和功能,如线程和进程、线程调度、中断和异常的处理、同步对象和各种同步机制。

 

内核层之上则是执行体(executive)层,这一层的目的是提供一些可供上层应用程序或内核驱动程序直接调用的功能和语义。Windows内核的执行体包含一个对象管理器,用于一致地管理执行体中的对象。

 

执行体层和内核层位于同一个二进制模块中,即内核基本模块,名为ntoskrnl.exe。

 

 

 


 

 

 

三、内核组件介绍

 

HAL的设计目的是将硬件的差别隐藏起来,从而为操作系统的上层提供一个抽象的、一致的硬件资源模型,以使Windows更容易被移植到不同的硬件平台上。

在Windows中,HAL是一个独立的动态链接库,提供了一些例程供其他内核模块或设备驱动程序调用,这使得一个驱动程序可以支持同样的设备在各种硬件平台上运行。HAL不仅涵盖了处理器的体系结构,也涉及了中断控制器、单处理器或多处理器等硬件条件。
 
微内核负责线程调度和中断、异常的处理。对于多处理器系统,它还负责同步处理器之间的行为,以优化系统的性能。这一层的核心任务是,让系统中的所有处理器尽可能地忙和高效。内核层可在多个处理器上并发执行,它的代码以C语言为主,也包含一部分汇编代码。
 
执行体是内核模块ntoskrnl.exe的上层部分,它包含进程和线程管理器、内存管理器、安全引用监视器、I/O管理器、缓存管理器、即插即用管理器、配置管理器和电源管理器。
 
在内核中除了内核模块ntoskrnl.exe和HAL以外,其他的模块几乎都以设备驱动程序的形式存在。设备驱动程序有以下三种基本类型:
即插即用驱动程序(WDM驱动程序)。这一类驱动程序通常是为了驱动硬件设备而由硬件厂商提供,它们与Windows的I/O管理器、即插即用(PnP)管理器和电源管理器一起工作。Windows自身随带了大量即插即用驱动程序,用于支持各种常见的存储设备、视频适配器、网络适配器、输入设备等。
内核扩展驱动程序(非即插即用驱动程序)。这一类驱动程序用于扩展内核的功能,或者提供访问内核模式代码和数据的一种途径。它们并没有集成到PnP管理
器和电源管理器的框架中。在引入即插即用管理机制以前开发的驱动程序都属于这一类型。现在仍然有大量的内核扩展驱动程序。
• <
4000
strong>文件系统驱动程序[/b]。这一类驱动程序接收针对文件的请求,再进一步将请求转变成真正对于存储设备或网络设备的I/O请求,从而满足原始的文件请求。
 
 

 
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息