- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WDM内核驱动序模型分析
WDM内核驱动程序模型分析
WDM驱动程序是Windows 2000操作系统重要的组成部分,它的正常工作需要有Windows 2000其它内核组件的支持,同时大部分的内核组件也必须同WDM驱动程序交互来完成它们的功能,为能够完整而清晰的说明WDM驱动程序的工作情况,本文首先说明Windows 2000操作系统的内核工作机理,同时将给出WDM驱动程序和内核其它组件的协同工作机制,最后分析WDM驱动程序的结构和工作流程。
1 Windows 2000内核组件工作模式
1.1 Windows 2000的设计思想
在现代操作系统中,应用程序和操作系统本身是分开的——操作系统代码运行在核心态并有权访问系统数据和硬件;应用程序运行在用户态,能够使用的接口和访问系统数据的权限都受到限制。当用户程序调用系统服务时,处理器捕获该调用,然后把调用的线程切换到核心态。当系统服务完成后,操作系统将线程描述表切换回用户态,允许调用者继续运行。
系统核心态部分的设计是丰富多样的。较典型的有以下几种:
A) 传统的单片式操作系统。系统被设计为一个单一的、庞大的软件系统,在内部组件之间有许多关联。这种软件系统依赖于许多系统组件。这种相互关联意味着要扩展系统,就需要对全部代码库进行大量修改。同时在单片式操作系统中大量的操作系统代码运行于同一内存空间,这就意味着任何操作系统组件都可能损坏正在被其它组件使用数据。
B) 分片式的操作系统。将操作系统发分为不同层次中的模块。每个模块提供一组功能函数其它模块调用。在某一层次上的代码只能调用较低层次上的代码。在一些了系统中,DEC公司的OpenVMS包括老的Multics操作系统,硬件甚至强制分层(使用多重、分级处理模式)。分层操作系统结构的优点是,由于每层代码只能访问较低层的接口(和数据结构),因此限制了使用无限权利的代码数量,这种结构也允许在最底层开始调试操作系统,然后一层一层的往上调试,直到整个操作系统工作正常。层次化结构也使增强操作系统更容易,因为修改或替代单独的一层,不影响系统的其它部分。
C) 客户服务器微内核模型。其思想是把操作系统分成若干个服务器进程,每个服务器进程完成一种服务,如内存管理服务、进程创建服务和处理器调度服务。每个“服务器”运行在用户态,等待客户提出服务请求。“客户”,可以是另一个操作系统的组件,也可以是应用程序,它通过发送一个消息给服务器来请求服务。运行在核心态的操作系统的微内核把该消息传递给服务器,该服务器执行操作,内核用另一种消息把结果返回用户。
Windows2000融合了分层操作系统和客户服务器微内核操作系统的特点。对性能影响很大的操作系统组件在核心态下运行。在核心态下,组件可以和硬件交互,也可以在组件之间交互,并且不会引起描述表切换和模式转变,例如,内存管理器、高速缓存管理器、对象及安全性管理器网络协议、文件系统(包括网络服务器和重定向程序)、所有线程和进程管理都运行的核心态。
当然,所有这些组件都应该受到保护,以避免给其它的应用程序侵扰,应用程序不能直接访问操作系统特性部分的代码和数据(尽管他们可以快速调用其它的内核服务)。这种保护使得Windows2000成为既坚固又稳定的应用程序服务器的原因之一。而且从核心操作系统服务的角度,如虚拟内存管理、文件操作、复合文件及打印共享来看,Windows2000作为工作站平台仍是迅速和敏捷的。
由于WDM驱动程序的标准应用平台是Windows 2000,是内核的重要组件之一并和其它内核组件有相当多的关联,为本文讨论的完整性,首先讨论Windows 2000的系统结构。
1.2 Windows 2000的系统结构
图1 Windows 2000 系统结构图
图1显示了Windows 2000内核系统结构图。Windows 2000是由内核模式和用户模式两类代码构成的。
用户态代码模式主要包括各个环境子系统:POSIX,OS/2,Win32。在这三个子系统中Win32比较特殊,它是Windows 2000的必须组件。实际上,其它两个子系统只是在需要时才被配置启动,而Win32必须始终处于运行状态。
A) 硬件抽象层(HAL) HAL是一薄层软件,它是硬件与操作系统其它部分的接口,是物理硬件资源的一种抽象。我们可以称之为“抽象硬件模型”。HAL通过动态链接库(DLL,Dynamic Link Library)实现,管理的项目包括:
w 片外高速缓存
w 定时器
w I/O总线
w 设备寄存器
w 中断控制器
w DMA控制器
各种系统组件使用HAL函数与CPU外的硬件打交道,这样就把平台特定的细节对系统的其余部分隐藏起来,可移植性极佳。特别地,HAL例程的使用使得内核和设备驱动程序在有相同CPU体系结构的平台上二进制代码兼容
文档评论(0)