驱动开发2.操作系统与驱动程序_第1页
驱动开发2.操作系统与驱动程序_第2页
驱动开发2.操作系统与驱动程序_第3页
驱动开发2.操作系统与驱动程序_第4页
驱动开发2.操作系统与驱动程序_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统与驱动程序sigangWindow 2000 (NT5.0)的设计目标兼容性操作系统应该尽量支持已经存在的 硬件和软件。健壮性和可靠性用户程序的错误不应该使 操作系统崩溃。可移植性操作系统应该尽量能够在现有和 未来的硬件平台上运行。可扩展性操作系统应该易于增加新功能和支持新的硬件,并且对已有代码的影响应 该尽可能的小。Windows 2000中的硬件特权层为了实现健壮性和可靠性目标,NT的设计 者为它的核心实现部分选择了客户服务器 体系结构。即用户应用程序作为操作系统 服务器的一个客户在操作系统上运行 Windows 2000中的程序运行于两个模式中: 用户模式和内核模式用户模式用户的

2、应用程序运行于这个模式中,在这 个模式中的程序执行有很多的限制,例如 不能访问其它应用程序的内存(除非运用 各种机制进行内存共享),不能执行硬件 I/O等。如果用户程序需要各种受到限制的 服务,那么必须向操作系统提供请求,一 种由硬件提供的陷阱机制用来处理这些请 耒。内核模式操作系统的代码在这个模式下运行。内核 模式在特权环境中运行,而用户模式在非 特权环境中执行。在一个Intel平台上使用指 令集中的Rmg 3执行用户模式,而使用Ring 0执行内核模式。 Windows中的大部分驱动程序运行于内核模 式的环境中,在这种特权环境下运行使得 它们几乎可以进行各种操作內核模式图1 Windows

3、 2000操作系统的分层心硬件抽象层硬件抽象层将处理器和平台依赖与设备驱动程序 和内核分开。通常在设备驱动程序被移植到一个 新的平台上时,只要重新编译即可。设备驱动程序代码本质上是设备、处理器和平台 特有的。显然设备驱动程序代码必须依赖于HAL 中的代码,以便引用硬件寄存器和总线。在某些情况下,设备驱动程序代码必须依赖于I/O 管理程序(及其它程序)提供的抽象代码来控制 共享的硬件资源(例如,DMA通道)。Windows 2000的内核 Windows 2000中的一个重要设计概念内核从执行程序组件中分离岀来Windows 2000中的内核主要负责线程调度。 每一个线程都有一个独立的线程环境。

4、线 程环境包括CPU寄存器状态、线程ID、优 先权、线程本地存储等等。执行程序组件执行程序组件负责执行内存管理、进程管理、安 全管理和I/O管理等工作。这些可执行的程序组件被设计成模块软件这些组件包括即插即用管理器(Plug and PhyManager) > 电源管理器(Power Manager)、配置 管理器(Con figuration Man ager )、内祥管理器(Memory Manager)、对象管理器(Object Manager)等需要考虑改进和折衷时,Microsoft增加、删除、 融合或者分离这些组件I/O管理程序 I/O管理程序是一个可执行的程序组件由一系列的

5、内核模式的例程所实现,这些例程为 用户模式的进程提供一个统一的抽象以实现I/O操 作 I/O管理程序的目标之一是使所有来自用户模式的 I/O访问独立于设窑 I/O管理程序将请求以IRP(I/O Request Packet)的形 式从用户模式发送到设备驱动程序例程。 I/O管理程序是用户模式代码和设备驱动程序之间 的接口层API(应用程序编程接口) Windows 2000的执行程序组件和I/O管理程 序执行操作系统的核心服务,但是这些服 务不是直接暴露给用户模式的应用程序 的。 Microsoft定义了几种API(应用程序编程接 口),用户模式代码把它们看成是操作系统 服务的抽象,这些API

6、形成不同的环境子系 统环境子系统这些子系统包括Win 32子系统、VDM (Virtual DOS Machine)子系统、WOW(Wmdows On Windows)子系统、POSIX子系统、OS/2子系统只有Win 32子系统是本机子系统,其它子系统依 赖于Win 32子系统,模拟它们自己的环境因此与Win 32子系统相比,它们都将承受不同程 度的性能下降。但是,它们的目的是为了实现兼 容性而不是速度环境子系统 一个特定的应用程序只能存在于一个环境子系统环境子系统通常作为单独的用户模式进程被实 现。它们根据需要装入,支持和代理用户模式进 程环境子系统成为用户模式客户的服务器。本地过程调用执

7、行程序组件,将来自客户的每个 请求传递到合适的服务器进程(环境子系统), 服务器进程要么直接完成请求的作业,要么依次 请求合适的执行程序组件。Win 32环境子系统的工作系统用户可见的图形用户接口(GDI) o 控制台I/O,包括键盘、鼠标以及各个子系 统的显示。 Win 32 API的实现。这是应用程序和其它子 系统用来与可执行组件的交互的接口。Win 32函数分类 USER函数,负责管理窗口、菜单、对话框 和空间。 GDI函数,在物理设备(如显示器和打印 机)上执行绘图操作。 KERNEL函数,管理非GUI资源,诸如进 程、线程、文件和同步服务。Windows 2000中驱动程序的种类文件

8、系统 驱动程序“其它内核模式±设备驱动程序4内核模式驱动程序用户模式驱动程序运行于用户模式下,只能通过Wm 32 API调用来访问系统数据。用户模式驱动程序和内核模式驱动程序有 不同的结构、入口点和系统接口有一些设备驱动程序可以部分或者全部运 行于用户模式,如打印机的驱动程序而实际上的大部分设备驱动程序运行于内 核模式内核模戎驱动程序分为遗留驱动程序和 WDM驱动程序遗留驱动程序不支持PnP,而WDM驱动程 序则支持PnP,它还支持电源管理和WMI等 新特性。文件系统驱动程序即FSD ( File System Drivers),这些驱动程序独立 于任何底层设备进行I/O操作在基于N

9、T的操作系统中,文件系统驱动是核心模 式的驱动这些文件系统驱动程序总是要依靠底层的外围设 备的支持,它们还有可能需要一个或几个的总 线驱动程序的支持。进行文件系统驱动程序开发、,需要安装IFS(Instailable File System),这是Microsoft提供的开 发工具其它内核模式设备驱动程序它内核模式设备驱动程序提供对底层设备 的I/O服务。这些程序包括总线驱动程序、类驱动程 序、微型驱动程序以及过滤器驱动程序以 及各种功能驱动程序功能驱动程序是我们最有可能写的驱动程 序WDM驱动程序的层次结构功能驱动程序下层过滤器驱动程序总线驱动程序上层过滤器驱动程序是一个收集让操作系统调用的

10、用来执行各种涉及到硬件操 作的子程序的容器些例稈,女nDriverEntry和AddDcvice例程和一些特定的 I/O请求包(IRP)的分发函数会出现在每个这样的容器 中。需要排队请求的驱动程序可能还有一个乱2江1。例程。而执 行直接存储器存取(DMA)操作的驱动程序会有一个 AdapterContfollJ程。而执行直接存储器存取(DMA)操 作的驱动程序会有一个AdapterContfollJ程。产生硬件中断 的驱动程序也会有一个中断服务例程(ISR)和一个延迟 程序调用(DPC)例程r二品“a. nou(j门©合DriverEntryAddDeviceI/O Control

11、RoutinesStartsAdapterContmlDispatch RoutinesDsspatchPnpDispatch PowerDsspatchVlfmiDpcForlsrDispatchReadDisps Eh Writs| | Required driver routinesI Include S/arf/o Io handle request queuing|l Include Adaptercontrol routine for DMA Include interrupt and DPC routines if device interruptsOptional IRP di

12、spatch routinessys和exc就像EXE程序一样,驱动程序也是可执行文件。 其扩展名为.SYS在结构上严格地说驱动程序和任何32位的Windows 或者控制台的应用程序没什么区别。和EXE程序 一样,一个驱动程序也需要许多辅助程序,许多 也都是动态链接自操作系统内核或来自一组驱动 或者其他的支持库。但是驱动程序没有主程序。取而代之的是其包含 了一批系统可以在适当的时候调用的子程序集。 驱动程序除了其自己的硬件外没有照管任何别的 事情:系统管理了其他的任何事务,包括决定在 何时运行你的驱动程序代码。操作系统调用驱动程序的各个例程的简要过程:系统运行时设备插入系统或者系统重新启动,

13、系统就会装载可执行的驱动程序到内存中,并 且调用 D riverEntryJ 程。D rive En try做 了 一 些操 作之后返回。 即插即用管理器(PnP Manager)调用AddDevice 例程,让其做一些操作之后返回。即插即用管理器发送给驱动程序一些IRP,分发 函数依次处理每一个IRP之后返回。操作系统调用驱动程序的各个例程的简要过程: 一个应用程序打开了设备,因此系统发送 给驱动另一个IRP,分发函数进行了少量 的操作之后返回应用程序尝试读取或者写入一些数据,因 此系统发送一个IRP,分发例程将IRP放入 一个队列之后追回。某些I/O操作引发设备中断,中断服务例 程做一些很少的操作,然后请求一个 DPC,之后返回。操作系统调用驱动程序的各个例程的简要过程: DPC例程运行了,它可能要读回数据,或者继 续下一次的写操作等,然后开始下一个排在队 列中的IRP,之后DPC例程返回系统。随着时间变化,在这期间系统会发送各种IRP给 驱动程序,驱动程序进行相应的处理。最后,用户拔岀设备或者关闭系统,这时,系 统发送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论