




已阅读5页,还剩50页未读, 继续免费阅读
(计算机应用技术专业论文)windows环境下设备驱动程序的研究与开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
、6 0 8 4 6 5 摘要 本文通过介绍wi n d o w s 9 x操作系统虚拟环境的搭建与实现特点,对wi n d o w s 环境 下的虚拟设备驱动程序模型v x d进行了深入的研究与开发。通过分析总结驱动程序访 问不同硬件资源时的特点和不同情况下的开发方法, 对i s a接口的数据采集卡进行了驱 动程序和应用程序的设计与开发,较好的解决了驱动程序在中断与 d ma方式下运行 不稳定的问题,使采集卡运行良好,具有很强的实用意义。 关键词:驱动程序、v x d 、数据采集 abs tract t h i s d i s s e r t a t i o n a n a l y z e s t h e b u i l d i n g a n d r e a l i z a t i o n o f v i r t u a l e n v i r o n m e n t i n t h e wi n d o w s 9 x o p e r a t i n g s y s t e m , a n d h a v e a i n - d e p t h r e s e a r c h t o t h e v i r t u a l d e v i c e d r i v e r mo d e l v x d i n wi n d o w s e n v i r o n m e n t . b y a n a l y s i s o f d i f f e r e n t c h a r a c t e r i s t i c a n d d e v e l o p m e n t m e t h o d w h e n v x d a c c e s s d i f f e r e n t h a r d w a r e r e s o u r c e s , a d r i v e r p r o g r a m a n d a p p l i c a t i o n p r o g r a m b a s e d o n t h e d a t a g a t h e r i n g c a r d w i t h i s a i n t e r f a c e i s d i s c u s s e d , t h e d e s i g n o f t h e d r i v e r p r o g r a m s o l v e s t h e p r o b l e m t o a c e r ta i n e x t e n t o f in s t a b i l i t y i n i n t e r r u p t a n d d ma w a y w h e n v x d a c c e s s h a r d w a r e r e s o u r c e , m a k i n g t h e d a t a g a t h e r i n g c a r d r u n n in g w e l l . t h u s t h i s d i s s e r t a t i o n h a s s t r o n g p r a c t i c a l s i g n i f i c a n c e . c h e n g u o h u a ( c o m p u t e r a p p l i c a t i o n t e c h n o l o g y ) d i r e c t e d b y p r o f . z h e n g l i n g k e y wo r d s : d r i v e r p r o g r a m , v x d , d a t a g a t h e r i n g 华北电 力大学( 北京) 硕士学位论文 w i n d o w s 环境下设备驱动程序的研究与开发 第一章引言 在今天的p c 机上, w i n d o w s 无可争议的占据着操作系统的广大市场。由于其采 用了特有的系统保护措施,使得应用程序若要访问 p c机下的硬件设各 ( 如网络接 口卡、声卡、d m a 控制器等) ,必须通过设备驱动程序的方法来实现。驱动程序需要 工作在操作系统的核心级,并要涉及处理器的体系结构,开发难度大。在国内由于 对操作系统和处理器的设计开发一直处于比较薄弱的地位,因此造成驱动程序的研 究比较落后,具有开发技术不甚成熟,应用领域狭窄等特点。 驱动程序在w i n d o w s 9 x的模型为v x d , v x d 是v i r t u a l d e v i c e d r i v e r 的缩写, 它是w i n d o w s 环境下的驱动程序类型的一种,它运行在操作系统的r i n g o 层,可以 完成各种系统物理层的访问。它在操作系统级控制硬件,是链接操作系统和外部设 备的关键模块,它提供连接到计算机的硬件设备的软件接口。从根本上来讲, w i n d o w s操作系统就是由许许多多的 v x d所组成的,v x d将各种资源虚拟化,使应 用程序对硬件的请求直接反应到各种不同的v x d 中来,通过v x d 的数据结构和提供 的服务来完成任务。从这种角度上来看,v x d 就是硬件与应用程序之间的a p 工 。 本文通过剖析 工 n t e l 处理器的工作模式和w i n d o w s 操作系统中的虚拟机环境, 对驱动程序进行了深入的研究与开发。文章分析了v x d 程序的结构特点、通信机制 等,并通过对基于 i s a 接口数据采集卡驱动程序的开发与设计,重点研究了驱动程 序在访问工 / 0 端口、存贮器地址空间、硬件中断和d m a四种硬件资源情况下,不同 的设计方法。通过实际开发,采集卡运行正常,很好的满足了用户需求。 本文参阅了大量国内外的相关文献,分析总结了各项知识之间的内在联系,同 时吸取了网络上许多工程人员的开发经验,总结出驱动程序开发中的思路与针对不 同情况的开发方法,通过验证,证明这套开发思路切实可行,具有很强的现实意义 和商业意义。 本文驱动开发的主要工具为n u m e g a 公司的v t o o l s d 和微软公司的v c 6 , 为满足 不同环境的需求和深入了解驱动程序内部结构,参考了微软公司用于驱动开发的 d d k 。调试工具为 s o f t l c e a 华北电力大学( 北京) 硕士学位论文w i n d o w s 环境下设备驱动程序的研究与开发 第二章w i n d o w s 环境下的虚拟环境 本章主要介绍i n t e l 处理器的工作模式和保护模式下的工作机制, 包括存贮器管 理、分页管理、保护机制等,这些是进行系统核心开发必须掌握的知识。 介绍了w i n d o w s 驱动程序的概念 环境下的工作机制、执行环境,通过对虚拟机机制的分析 同时本章 ,弓 i 出了 2 . 1 w i n t e l 联盟 在计算机的发展历程中,中央处理器c p u 和操作系统一直是发展的核心环节, 而二者也一直是相互联系共同发展的。c p u主要为计算机提供良好的指令集系统, 同时为计算机的硬件体系提供强大的计算和处理支持,而操作系统则充分运用 c p u 的体系结构和指令系统,开发对外设资源的利用,为用户提供合理友好的界面。 正是这两种技术造就了两个业界的霸主:生产 工 n t e l 处理器的i n t e l 公司和生 产w i n d o w s 操作系统的m i c r o s o f t 公司。他们相互合作,从2 0 世纪8 0 年代开始, 他们就逐步垄断了计算机产业的硬件与软件主要领域,在技术上相互支持,设计理 念相互联系, 同时商业运作也相辅相成,从而被称为w i n t e l 联盟。每当m i c r o s o f t 推出功能更强的软件后,i n t e l 处理器的需求量就会上升;同样,当 工 n t e l 生产出 速度更快的处理器后, m i c r o s o f t 的软件就会因为有了更好的平台而显得更加好用。 工 n t e l有多快的 c p u . m i c r o s o f t就会有相应的、庞大的软件来支持它,反之, m i c r o s o f t的应用程序不管有多庞大,需要多快的速度,i n t e l的新处理器又总能 满足它。在业界内,谁跟不上w i n t e l 的步伐,谁就极有可能被淘汰出局。 正是这种技术上的联系,当开发w i n d o w s 操作系统平台下的系统软件时,除了 深入分析操作系统的内部机制外,还要充分了解处理器的工作原理,把握它与操作 系统合作的方方面面,包括静态的体系结构和众多寄存器功能,动态的存储机制、 分页机制等。 2 . 2 i n t e l c p u的工作模式 8 0 3 8 6 以前的c p u 芯片只支持一种工作模式:实模式,m s - d o s 操作系统就是工 作在实模式下。而从8 0 3 8 6 开始,i n 七 。 i c p u 开始支持三种工作模式:实模式、保 护模式和虚拟8 6 模式。w i n d o w s 9 x 实现了其中的两种模式:保护模式和v 8 6 模式。 处理器的工作模式决定了以下几个重要的执行特征: 今 处理器能够访问多大的内存地址; 华北电力大学 北京) 硕士学位论文w i n d o w s 环境下设 备驱动程序的 研究与开发 令 处理器如何把软件操作的逻辑地址转换为总线上的物理地址: 令 处理器如何保护对内存和 i / 0端口的访问,如何禁止某些处理器指令的执 行 。 2 . 2 . 1实模式 实模式也就是实地址模式,顾名思义,在这种模式下,运行程序使用到的逻辑 地址就是实际的物理地址。当加电开机或硬件 r e s e t 重新启动后,c p u处于实地址 模式下。实模式下,禁用 c p u的所有保护功能,不支持分页,地址空间仅限于 1 m b 物理存储器,地址范围为 0 0 0 0 : 0 0 0 0至 f f f f : f f f f ,物理地址要通过段地址与偏 移地址计算才能生成。 实模式下, 通过将c p u 控制寄存器c r o 的p e 位置1 , 可使工作方式进入保护模 式,在保护模式下,将 c p u状态标志寄存器中的虚拟方式标志位 v m置 1 ,可进入 v 8 6 模式。 2 . 2 . 2保护模式 保护模式是处理器最常用的工作方式,同时也是最复杂的工作模式。保护模式 下,实现了多任务宏观并行工作和内存的分段、分页管理等。 由于实现了多任务,即系统同时运行多个任务或程序,而各个任务的特权与能 力不同,为了防止各个程序之间的相互干扰,c p u采用了一种硬件机制,以保证为 每个程序提供一种隔离的工作环境,这就是所谓的保护机制。所谓保护,从c p u 角 度来说,主要是指对存储器访问的保护;从运行在c p u 上的操作系统角度来说,主 要是指各个程序运行在不同的特权级别上。 保护模式屏蔽了普通程序对系统、 硬件、 中断等直接访问,使这些设备处于一种保护状态下。 保护模式提供四级的保护功能,分别为 r i n g o , r i n g l , r i n g 2和 r i n g 3 , 其中的 r i n g o级别最高。通过四级的保护机制,容易实现程序与程序之间、应用程序与操 作系统之间的隔离和保护,为多任务操作系统提供了优化支持。 保护模式的最大优点是:提高了系统的可靠性和健壮性,使系统不会因为运行 级别低的应用程序崩溃造成整个系统的崩溃。对于那些运行级别低的应用程序而 言,访问硬件受到一定的限制,避免了由于普通应用程序直接操作硬件资源而产生 意外的错误。而在操作系统中,硬件资源的访问是不可避免的,因此操作系统设计 了设备驱动程序接口,当程序在需要访问某种硬件资源时,必须通过硬件设备对应 的设备驱动程序,由它接受应用程序的功能调用,并实际反应到硬件设备中,这也 就是驱动程序产生的原因。 华北电力大学( 北京) 硕士学位论文w i n d o ” 环境下设备驱动程序的研究与开发 2 . 2 .2 . ,存贮器管理 所谓存储器管理,就是实现从程序的逻辑地址转换为实际存储器物理地址的地 址转换机制。 . 逻辑地址 当一个程序访问存储器,而并不考虑其操作方式和具体的物理细节时,它所使 用的地址就是逻辑地址。程序通过处理器的存储管理机构将它所使用的逻辑地址转 换成有效的存储器读写操作所需要的地址。在实地址模式下,逻辑地址称为分段地 址,而在保护模式下,逻辑地址称为虚拟地址。 . 虚拟地址 在保护模式下,程序访问存储器所使用的两部分逻辑地址称为虚拟地址。与实 地址分段地址相似,虚拟地址也写成 “ 段:偏移量”的形式。 . 线性地址 实地址模式下的分段地址或保护模式下的虚拟地址最终转换成的地址形式被 称为线性地址,它指出了在处理器的线性地址空间中所要访问的存储器偏移量。 . 物理地址 物理地址是地址转换的最终结果,它是与最终安排在处理器的地址总线管脚上 的信号等价的数字地址,通常物理地址是线性地址转换的结果。 在保护模式下,要实现最终的物理地址,处理器通过片内两级存储管理机制来 完成,其中第一级为分段管理,每段容量为 4 g b ,第二级为分页管理,每页的容量 固定大小为4 k b e 2 . 2 . 2 . 2分段管理 与实地址模式下的分段地址类似,保护模式下的虚拟地址保持 “ 段:偏移量” 的形式,其中的 “ 段”指 1 6 位的段选择器, “ 偏移量”指 3 2 位的地址偏移量。操 作系统通过段选择器的内容选择某描述符表中的描述符,可以得到要访问段的基地 址,与操作指令的偏移量相加,即可得到要访问的线性地址。描述符是存于存储器 中大小为8 个字节的数据结构,它决定了如何把虚拟地址转换成线性地址,保护模 式下, 为了支持虚拟存储管理和进行有效的多任务处理, 使用了各种类型的描述符。 描述符表是存放不同类型描述符的数据结构,包括三种:全局描述符表 g d t 、局部 描述符表l d t 和中断描述符表工 d t . 保护模式下的段选择器可以是 c p u中的六个寄存器,c s , d s , e s , s s , f f或 g s ,其结构如图2 . 1 所示: 华北电力大学( 北京) 硕士学位论文w i n d o ” 环境下设备驱动程序的研究与开发 段选择寄存器索引值ti i rp l 3 2 1 0 图2 . 1段选择器的结构 最低两位是选择器的请求特权级别 ( r p l , r e q u e s t p r i v i l e g e l e v e l ) ,它用 来防止低特权程序访问高特权程序保护的数据和代码。 表格指示位 t i ( t a b l e i n d i c a t o r )用来确定段选择器,如果t i = o ,则表示指 向的段是系统全局描述符表g d t 的一部分,反之则为程序的局部描述符表 l d t 的一 部分。全局描述符表用来存放能被系统上所有任务所使用的数据和代码,它包括系 统自 身提供的系统服务程序和一些系统核心数据以及动态连接模块提供的代码模 块等,而局部描述符表存放的是各个任务自 身的数据和代码,每个任务都有一个完 全独立的局部地址空间,局部地址空间中的代码和数据只能为其私用。 段选择器的高 1 3位用来存放描述符表的指针,它唯一确定哪一个段正要被虚 拟地址访问。由于段选择器只有 1 3位来标识段,故全局描述符和局部描述符分别 最多指向8 1 9 2 ( 2的1 3 次方)个段。整个系统只有一个全局描述符表g d t ,而各个 任务都有各自的局部描述符表 l d t 。为了使 l d t本身也作为一个数据段,g d t中有 一项是用来存储各任务的l d t 描述符。 系统寄存器g d t r( 全局描述符表寄存器) 和 l d t r( 局部描述符表寄存器)存放了各数据段的物理基地址和段界限以及段的访问 权限。 段选择器中t i 为0时,表明要访问的是全局描述符中的描述符。根据g d t r 寄 存器存放了g d t的起始地址和段选择器中的偏移量, 则会取得g d t中的一个描述符, 从描述符中, 即可得到要访问的段的基地址、 界限、 特权级别以及其它的相关信息。 段的基地址加上偏移寄存器 如e i p ) 中的偏移量,完成整个的寻址过程。 段选择器的t i 位为 i 则表明要访问的是一个 l d t , c p u 会根据g d t r 中g d t 的 基址加上l d t r 中的高 1 3 位所表示的偏移量,找到g d t中的l d t 描述符。l d t 描述 符( 在g d t中) 6 4 位,用来记录对应任务l d t的起始地址、界限和权限一些信息。系 统把这个描述符中的l d t 的起始地址和界限值放入一个高速缓存l d t r c a c h e ( 4 8 位, 不可访问) 中,再通过译码确定局部描述符表 l d t的首地址。配合段寄存器中高 1 3 位的偏移量,可以得到l d t中的对应描述符,结合偏移寄存器( 如 e 工 p ) 中的偏移量, 可以完成整个的寻址过程。 2 .2 . 2 . 3分页管理 在保护模式下,c p u的运行机制发生了改变,线性地址究竟是不是最后对应的 华北电力大学( 北京) 硕士学位论文w i n d o ”环境下设备驱动程序的 研究与开发 物理地址,由c r o寄存器中的p g 位来决定,如果p g = 1 ,启用分页机制,线性地址 要经过分页机制的转变才能成为物理地址; 如果p g = o ,则禁止分页机制, 线性地址 即为最后的物理地址,从而实现对物理存储的访问和操作。 分页机制实现了内存的按需分配,为实现从虚拟地址到物理地址的转换,页面 大小必须固定,保护模式下页面大小为4 k b . 分页机制的完成是依靠页目录表和页表两级转换机制来完成。存储空间中只有 一个页目录表,大小为 4 k b ,用来记录页表信息。页目录表的起始物理地址通常存 放在 c p u的控制寄存器 c r 3中。页目录表包含有 1 0 2 4 个页目 录项,每个页目录项 对应一个页表,指出对应页表的起始地址。一个页表的大小为4 k b ,共有 1 0 2 4 个页 表项,每个页表项对应一个大小为 4 k的页面。这样,分页机制可以映射到的空间 大小为4 g b ( 1 0 2 4 * 1 0 2 4 * 4 k b ) ,即一个页目 录表可以管理的空间,其中第一个 1 0 2 4 表示一个页目录表中有 1 0 2 4 个页目录项,第二个 1 0 2 4 表示每个页目录项对应一个 页表,4 k b 是每个页面的大小。 通过将地址空间划分为固定大小的页 ( 4 k ) ,可以更加充分合理的利用地址空 间。由于3 8 6以后的地址空间定位可以最大到4 g ,而实际上是很少有存贮器 ( r a m ) 能够达到如此大的容量,因此引入了分页机制和虚拟内存管理技术,把页做为存储 空间的最小单位,访问的线性地址最终要转换为某个页面上的地址。至于这个页面 是在真正的内存中,还是在硬盘中,以及什么时候调入要访问的页,则取决于操作 系统的虚拟内存的管理技术。 一个转换为物理地址的线性地址格式如图2 . 2 所示: 目 录表索引 ( 1 0 位) i 页表索引 ( 1 0 位)偏移量 ( 1 2 位) 图2 . 2分页机制下线性地址的格式 其中的目 录表索引代表了要访问的页位于哪个页目 录项中,此值乘以4 表示此 页目录项在目 录索引表中的偏移量,这个目 录项的地址域给出了对应页表的开始地 址。页表索引值表示该页在页表中的位置,此值乘以4 可得出此页表项在页表中的 偏移量,页表项的地址域给出了物理页的物理地址的高 2 0位,线性地址中的偏移 量给出了在这个物理页面中的偏移量,即给出了物理地址的低 1 2位,这样经过分 页机制的转换后,一个线性地址便转换为一个3 2 位的物理地址。 线性地址到物理地址的转换过程如图2 . 3 所示: 华北电力大学( 北京) 硕士学位论文w i n d o w s 环境下设备驱动程序的研究与 开发 图2 .3分页机制实现线性地址到物理地址的转换 2 . 2 . 2 . 4保护机制 在多任务系统中,由于同时运行着多个程序或任务,为了防止程序之间相互干 扰和破坏,处理器从硬件上提供一种隔离程序的机制,被称为保护机制。如果在访 问存储器时违反这些保护机制的属性要求,系统就会禁止对存储器的访问。 处理器为保护机制提供4 个特权级别,分别为r i n g 3 , r i n g 2 , r i n g l , r i n g o , 其中r i n g 3 特权级别最低,r i n g o 特权级别最高。 2 . 2 . 2 . 5任务管理 从8 0 3 8 6 开始,多任务开始在c p u 中充分利用。所谓多任务,就是指处理器同 时可以处理多个任务,实际上在某一时刻只有一个任务在处理器上运行,当它使用 完其拥有的时间片后,处理器就会把主动权交到排队等待的另一个任务,由于时间 片很短,从而从宏观上达到了多任务同时运行的 “ 假象” 。 任务管理为处理器中的任务切换提供了技术上的支持,它为每个运行的任务提 供任务状态段 t s s 。当控制权从一个任务转移到另一个任务,处理器保存运行任务 的c p u 寄存器和存储器等运行参数到其t s s的特定比特位,当控制从另一个任务返 回时,这个任务读回原来的环境参数,继续运行。通过硬件上t s s 的支持,大大减 少了切换的时间。 华北电力人学( 北京) 硕士学位论文w i n d o w s 环境下设备驱动程序的研究与开发 2 .2 .3 v 8 6 模式 v 8 6模式是一种特殊的保持模式,是 c p u为了向下兼容实模式下的程序,同时 也能获得保护模式的优点,是一种可以原封不动将在d o s 下生成的程序在保护模式 存储器中也能运行的特殊模式。 在 v 8 6 模式下,c p u 模拟生成多个处理器,将不同的v 8 6 任务映射到不同的物 理存储空间,使得 d o s程序能够运行在保护模式的存储器中。与实模式类似,v 8 6 模式只能访问1 m的地址空间,但地址转换方法却介于实模式与保护模式之间。v 8 6 模式按照实模式的方法进行逻辑地址到线性地址的转换,同时又按照分页管理机制 进行线性地址到物理地址的转换。 2 . 3虚拟机的概念 所谓虚拟机,就是指执行应用程序的虚拟环境,是一个独立的执行环境。虚拟 实现了对硬件资源的仿真,从而使应用程序运行时,访问的资源都是虚拟机中虚拟 的资源假象,而由虚拟机完成到实际资源的访问。 虚拟中包含的硬件资源包括:独立的内存地址、1 / 0端口空间、中断和处理器 中的存储器。 虚拟机是存在于w i n d o w s 之中,其产生的原因是为了支持已经存在的d o s 应用 程序,d o s应用程序在运行的时候都认为自己是系统中唯一运行的程序,而且可以 直接访问硬件、占用系统中所有可用的物理内存和所有的处理时间片。由于在 w i n d o w s 环境下,支持多任务同时运行,d o s 应用程序并不是唯一运行的应用程序, 于是w i n d o w s 就创建了虚拟机让这些d o s 应用程序在其中运行,每个d o s 应用程序 就是一个虚拟机,而所有的w i n 3 2 应用程序均运行在一个系统虚拟机 ( s y s t e m v m ) 中。w i n d o w s捕获所有虚拟机中应用程序对硬件的访问并进行处理.如果其他虚拟 机得到处理器的时间片的话,该虚拟机就会被暂时 “ 催眠” 。 要实现虚拟机中的资源,需要处理器的特殊性能,同时还要执行大量的应用程 序代码。8 0 3 8 6( 及以后的兼容处理器)支持完成包括地址转换、所需内存分页、 1 / 0 地址捕获、指令捕获和中断捕获的复杂工作。 虚拟机的管理工作主要由虚拟机管理器 ( v m m )完成,v m m利用系统的硬件,可以产 生、运行、监控和中止虚拟机,这些虚拟机都拥有自己独立的运行环境,同时 v m m 要以建立和维护支持虚拟机的工作框架, 提供一些像管理内存、 中断和出错的服务。 实际上,v m m 是操作系统中最重要的驱动程序,它用来管理其它软件和硬件资源。 华北电力大学( 北京) 硕士学位论文 w i n d o w s 环境下设各驱动程序的研究与开发 2 . 4 w i n d o w s 的执行环境 w i n d o w s 9 x 支持四种不同的进程:超级进程、w i n 3 2 应用程序、 和d o s 应用程序,操作系统分别在不同的执行环境下运行这些进程 包括处理器的模式、优先级和 “ 位”等。 w i n 1 6 应用程序 ,一个执行环境 进程类型处理器模式 优先级位数 内存模式v m 超级进程保护模式 第 0环3 2位 平坦v m之外 wi n 3 2 保护模式第 3 环 3 2 位平坦 系统 v m w i n 1 6 保护模式第 3 环 1 6位分段 系统 v m d o s v 8 6 第 3 环 1 6 位分段 系统 v m 表 1 . 1 w i n d o w s的执行环境 在w i n d o w s 环境下,只有v m m 和虚拟设备驱动程序v x d 属于超级进程,他们是 运行于任何v m 之外的,而别的程序均工作在各种v m 中。超级进程运行在第。 环的 保护模式下,它们能够访问和控制实际的硬件,也就是说它在实际机器上运行。 w i n 3 2 应用程序和w i n 1 6 应用程序都是运行在r i n g 3 级别的保护模式下, w i n 3 2 应用程序采用平面内存模式,可以访问4 g b的虚拟内 存。w i n 1 6的应用程序采用一 般的分段式内存模式,只能访问1 6 m b的虚拟内存。 d o s应用程序并不运行在保护模式下,而是运行在 v 8 6模式下。v 8 6程序延用 8 0 8 6 的模式,没有选择器和描述器,同时也没有分页机制,物理地址的生成只是依 靠段地址和偏移量的简单结合。v 8 6 程序也是运行在 r i n g 3 层访问级别上,访问硬 件资源和中断被隐藏和虚拟,内存模式是分段的。 2 . 5虚拟环境的实现 从前面的介绍可以看出,虚拟机的实现包括四个部分:工 / 0地址、 内存地址空间和处理器寄存器。针对不同的资源,v m的实现方法类似: 序 ( v x d ) o 中断操作、 使用驱动程 2 . 5 . 1捕获对1 / o端口的访问 不论是保护模式还是v 8 6 模式,操作系统均可以通过捕获输入和输出指令来防 止应用程序直接访问1 / 0映射的设备。 w i n d o w s 利用处理器的两个特性:工 / 0 优先 华北电力大学( 北京) 硕士学位论文w i n d o w s 环境下设备驱动程序的研究与开发 级 ( 工 o p l )和 i / 0 允许映射 ( 工 o p m )来控制 v m 访问 1 / 0 地址。 在保护模式下,每个代码段都有相关的优先级描述符,它存储在描述符表中, 每个代码段同时也有一个 i / 0 优先级 ( 工 o p l ) ,也存放在描述表中。在保护模式下, 当执行一个 i / 0指令时,处理器将段的 工 o p l和当前执行代码段的优先级 c p l进行 比较,如果c p l i 0 p l ,并且 工 o p m = o时,处理器才执行指令,否 则处理器会产生一个保护异常。 在实际的w i n 3 2 系统虚拟机中,c p l 总是大于 工 o p l ,因此当处理一个 工 / 0 指令 时,处理器总是忽略 i o p l而直接进行 i o p m的比较,因此 工 o p m才是对所有的代码 起决定作用的权限机制。 通过操纵i o p m , w i n d o w s 可以捕获到对任何端口的访问并加以允许或禁止。通 过这个特性可以虚拟那些映射到某 i / 0 端口的硬件设备,通过虚拟驱动程序来对硬 件端口的访问进行跟踪。 w i n d o w s 和它的标准组件 v x d 几乎可以捕获p c 上所有的标 准 i / 0 设备,表 2 . 2 列出可捕获的标准的端口及其对应的描述: 端口地址v x d描述 3f0-3f7v f b a c k u p 软盘控制器 1 f o - 1 f 7e s d i 5 0 6硬盘控制器 3 7 8 / 3 7 9 / 3 7 a v p d 打印机 l p t 1 2 f 8 - 2 f e / 3 f 8 - 3 f es e r i a l串口c o m 1 和 c o m 2 61v s d声音 3 8 4 / 3 b 5 / 3 b a / 3 d 0 3 d f / 3 c 0 3 c f v d d v g a显示器 1 c e / i c f / 2 e 8 / x 6 e c e f / a e c e f / x e e c e f a t i 微端口显示器 p c i总线 v g a 0 0 o f / c o - d f / 8 1 8 3 / 8 7 - 8 a / v d m a d d m a 控制器 6 0 / 6 4 v k d键盘 4 0 / 4 3 v t d 时钟 2 0 / 2 1 / a o / a 1 v p i c d 可编程中断控制器 表 2 . 2标准 v x d能捕获的 工 / 0端口 w i n d o w s 环境下,v m m负责管理 i o p m ,虚拟设备驱动程序 v x d可以向v m m申请 捕获特殊端口的服务,同时注册一个回调函数,称为 “ 端口捕获处理函数” 。mm就 华北电力大学( 北京) 硕士学位论文w i n d o w s 环境下设备驱动程序的研究与 开发 会把 i o p m中的相应位置 1 。这样,当v m 访问该端口时,就会产生一个访问异常, v m m的异常处理器就会调用 v x d注册的回调函数进行处理,在回调函数中,v x d可 以做任何事情 ,也可以忽略指令。 2 . 5 .2捕获内存操作 大多数的标准外设都是 工 / 0映射的,但还是有一些是内存映射,w i n d o w s 依靠 页面异常机制来虚拟内存映射设备。 为了捕获对这些设备的访问, 虚拟该设备的v x d 可以将该设备的物理内存地址标记为 “ 不存在” ,并通过 v m m注册自己的页面异常 处理函数。这样当v m中的进程试图访问该页面时,就会引起页面访问异常,v m m的 异常处理器就会调用 v x d 中的异常处理函数来进行处理。 2 .5 .3捕获中断和异常 除能捕获内存和 i / 0 地址,w i n d o w s还能获取某些具有优先级的c p u指令,这 些指令可以绕过处理器的保护特性,与虚拟机直接打交道。这种指令包括如处理器 中断标记指令c l i , s t i , 软中断指令 i n t 等, w i n d o w s 捕获它是为了透明的拦截d o s 和 b i o s调用。 运行在虚拟机中的进程都是运行在 r i n g 3层中,当执行特权指令时,就会引 起异常,于是处理器就会切换到r i n g 0 层,并且将控制权交给合适的处理函数。 2 . 5 . 4处理器寄存器 与虚拟 工 / 0 端口和中断操作相比,虚拟处理器寄存器要简单得多 每当v m m 从一个v m( 记为v m 1 ) 。v m m为每个 v m 保留一份虚拟的寄存器数据结构, v m( 记为 v m 2 )时,它首先会在 v m 1 切换到另一个 的寄存器数据结构中保存 v m i 的寄存器状态, 然后用v m 2的寄存器状态来更新处理器的寄存器,这才去执行 v m 2 . 华北电力大学 北京) 硕士学位论文 w i n d o w s 环境下设备驱动程序的研究与开发 第三章虚拟设备驱动程序v x d w i n d o w s操作系统采取了对底层设备屏蔽保护的措施,使得应用程序要对底层 进行操作必须通过运行在 r i n g 0层上的设备驱动程序来实现。在 w i n d o w s的各个 版本中,驱动程序的模型是不同的,在 w i n d o w s 9 x 下,驱动模型为 v x d . v x d是虚拟设备驱动程序的简称,其中的x表示某一种设备,如 v k d 表示虚拟 键盘驱动程序,v d m a d 表示系统d m a 驱动程序等,v x d 本身是运行在r i n g 0 层上的 3 2 位可执行程序, 它是w i n d o w s 应用程序和实际硬件之间的接口, 也是操作系统管 理资源的接口,主要完成对设备的虚拟化功能。 w i n d o w s系统是多任务多线程的操作系统,外部设备往往同时被多个线程同时 使用, 这样必须要实现外设的虚拟化, 使应用程序感觉每时每刻都是独占硬件设备, 这便是v x d 产生的根本原因。通过设备虚拟化,驱动程序成为实际硬件的 “ 替身” , 线程或者应用程序总是与驱动程序来交换信息。 设备驱动程序将不同外部设备特性和操作系统高层分隔开,隐藏了硬件设备内 部实现细节,并对操作系统透明。设备驱动程序只关心程序所控制的硬件设备,应 用程序以一种规范方式访问硬件设备,而不需要理解和关心设备具体的硬件实现细 节。实际上设备驱动程序是一系列的控制硬件设备的函数,它提供了连接到计算机 硬件设备的软件接口。 v x d 文件并不仅仅是对硬件资源的虚拟化, 从本质上来讲, v x d 是指工作在r i n g o 级的用来管理系统资源 ( 软件和硬件)的可执行二进制代码,任何想在r i n g o 层完 成的任务,都可以利用 v x d来实现。因此,v x d文件的另一种存在方式是是静态的 v x d文件,与实际的硬件设备没有关系,它运行在核心级,向其他的v x d提供各种 服务或者与应用程序进行通信从而扩展应用程序的功能,比如v w 工 n 3 2 , i f s 等。 对于v x d ,它在系统中完成以下任务: 1 .虚拟物理设备, v x d 可以使多个应用程序和线程同时访问一个物理设备,实 现w i n d o w s 环境下的多任务多线程的工作方式。 2 .操作硬件设备,w i n d o w s 应用程序通过v x d 操作硬件,通过中断过程,在不 影响其它应用程序执行的情况下,完成特定应用程序的工 / 0 操作。 3 .完成软件功能,任何想在 r i n g o层上运行的程序都可以用 v x d来实现,这 时候v x d 并不虚拟实际硬件设备。 4 .提高已安装软件的性能,v x d 是运行在r i n g o 层上的程序,执行 3 2 位 v x d 程序比执行 m s - d o s设备驱动程序效率要高,因此可以利用 v x d程序来提高已安装 软件的性能。 华北电力大学( 北京) 硕士学位论文 w i n d o w s 环境下设备驱动程序的研究与 开发 3 . 1 v x d的分类 3 . 1 . 1静态 v x d和动态 v x d . 静态v x d 是指在系统启动时就被加载系统中,到系统关闭时才被卸载的v x d 程 序。这些v x d 在整个系统工作期间一直存在于内存中,处于等待被应用程序激活的 状态。 w i n 9 x中v m m 借助于s y s t e m r e g i s t r y , s y s t e m an i 中的静态信息以及 i n t 2 f h 中的f u n c t i o n 1 6 0 5 h 功能调用来收集一系列的静态v x d 信息。静态v x d 一般用 作系统常驻的程序。 动态 v x d 是在系统启动后,根据需要装载和卸载的 v x d 程序。在 w i n 9 x 中,对 于动态 v x d的载入与卸除i作要由系统中的 c o n f i g u r a t i o n m a n a g e r和 i n p u t / o u t p u t s u p e r v i o r来完成。这二者均为静态 v x d , c o n f i g u r a t i o n m a n a g e r 用以 选择并载入与硬件对应的正确的动态v x d ,而i n p u t / o u t p u t s u p e r v i o r 则使用 比较简单的机制,根据v x d的实际地址,为硬件载入适当的驱动程序。在系统中, 动态v x d 常用来控制即插即用设备或者应用程序中实时性的驱动需求。 3 . 1 .2标准 v x d和非标准v x d 标准 v x d 是w i n d o w s 系统提供的, 用于支持公共设备和可安装软件的v x d 程序。 这些 v x d ,有些可以修改,以便使其能够支持设备的新特征或者支持非标准设备; 有些不能被修改但是可以被其它v x d 使用,例如许多v x d 利用v p i c d( 虚拟可编程 中断控制器设备)提供的功能允许硬件中断请求。 非标准的v x d 程序是用户为支持非标准设各而编写的驱动程序,主要为其它的 v x d 和v m m 提供服务或者与之进行通信,从而完成某些软件功能。 3 . 2 v x d的文件格式 w i n d o w s 9 x 操作系统中v x d 程序格式为l e 格式,不同于d o s 应用程序的m z 格 式,w i n 3 1 文件的n e 格式和w i n 2 0 0 0 下的p e 格式。l e 是l i n e a r e x e c t a b l e ,即线 性可执行文件格式,这种文件格式适合于 1 6 位和 3 2 位程序代码运行,即程序中既 要用到 1 6 位代码,也要用到3 2 位代码,而v x d 在启动系统时要实现实模式的初始 化过程,启动后,主要用的是 3 2位代码,符合 l e文件格式的特点,所以采用 l e 格式。 虽然v x d 使用 3 2 位的平坦内存模式, v x d的代码和数据还是以段的形式进行组 织的。v x d 使用以下几种类型的段: 华北电力大学( 北京) 硕士学位论文w i n d o w s 环境下设备驱动程序的研究与开发 4 l c o d e :页面锁定的代码和数据段。这种段被锁定在内存里。使用此段类型 的程序, 在v x d 运行期间, 不会被释放出内存。 在这种类型的段中, 存放的 是必须常驻内存的代码与数据, 只有三种段是必须锁定的:d e v i c e c o n t r o l p r o c e d u r e ( v x d 的主入口) ; 硬件中断处理函数和所有它们需要访问的数据; 供别的 v x d 硬件中断处理函数调用的服务 ( 即异步处理服务) 。 4 p c o d e :可分页代码段。v m m可以对这种段实行分页处理,处在这种段中的 代码,不必必须常驻内存中,当v m m 需要物理内存时, 段中的内容可以被置 换到硬盘中去。 4 p d a t a :可分页数据段。与可分页代码段类似,只不过存放的是数据而不是 代码。 个 工 c o d e :保护模式的初始化段。存放在这种段中的代码,仅仅用来进行 v x d 的初始化工作,当初始化完成后,v m m就把这些段中的内容从内存中释放, 从而释放资源。 4 d b o c o d e :仅用于调试的代码和数据段。当需要调试v x d 程序时,就要用到 这种段里的代码和数据,例如,它包含要调试消息的处理代码。 令 s c o d e :静态代码和数据段。这种类型的段,时刻存在于内存中,即使 己经卸载。这种段对某些动态v x d 程序实现很有用,如某些v x d 程序, v x d 需要 在某一w i n d o w s 进程中不停地加载/ 卸载,而同时又要记录上次加载的环境 和状态,这时就要使用这种类型的段。 4 r c o d e :实模式初始化代码数据段。这种段类型,包含实模式初始化时需要 的 1 6 位代码和数据。 4 1 6 1 c o d e : 保护模式初始化数据。 这是一个 1 6 位的段, 包含v x d 程序从保护 模式拷贝到v 8 6 模式时需要的代码。 令 m c o d e : 锁定的消息字串。 这种段包含了由v m m 消息宏帮助编译的消息字串。 3 . 3 d d b的数据结构 设备描述块 ( t h e d e v i c e d e s c r i p t o r b l o c k ,简称d d b )是v m m 联系v x d 的句 柄,d d b中包含了v x d的标识和指向v x d 主要入口的指针。d d b中有时还包含指向 其他入口的指针,这些指针供别的应用程序或者 v x d使用。也可以说,d d b是标识 v x d 的唯一结构。 表 3 . 1 列出了v x d 初始化时用到的d d b的数据结构: 字段区域 描述 n a m e 8 字节的v x o名称 华北电力人学( 北京) 硕士学位论文 w i n d o w s 环境下设备驱动程序的研究与开发 m a j o r v e r s i o nv x d 的主版本号,与w i n d o w s 的版本号无关 m i n o r v e r s i o n v x d 的从版本号,与w i n d o w s 的版本号无关 d e v i c e c o n t r o l p r o c e d u r e 设备控制过程的地址 d e v i c e i d m i c r o s o f t分配的唯一的标识 i n i t i a l i z a t i o n o r d e r 通常是 u n d e f i n e d _ i n i t _ o r d e r 。如果要强制在某个指 定的 v x d初始化之前或者结束之后进行初始化,那就 在v m m . i n c 中找到相应的i n i t _ o r d e r 加 1 或者减 1 s e r vi c e t a bl e 服务表地址 v 8 6 a p i p o r c e d u r e v 8 6 a p i 函数的地址 p m a p i p r o c e d u r ep m a p i 函数的地址 表 3 . 1 d d b 结构中的各个区域
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高压电工操作证理论考试笔试试题(附答案)
- 2025年高级会计职称评审试卷及答案
- 中联安全培训试题及答案
- 兴化城管考试题库及答案
- 计划与统计管理办法
- 中山用工风险管理办法
- 自媒体申报管理办法
- 下属公司物资管理办法
- 负面负面清单管理办法
- 自助餐食堂管理办法
- 《孤独的小螃蟹》课件
- 企业员工健康管理实施方案
- 《钢铁是怎样炼成的》读书分享课件
- 施工现场临时用电计算书范本
- 国际宫颈病理与阴道镜联盟(IFCPC) 阴道镜新术语
- 子集和补集 习题课课件-2024-2025学年高一上学期数学湘教版(2019)必修第一册
- 职业技术学校《药物分析检测技术》课程标准
- 2024-2030年中国定向钻井服务行业发展趋势与前景动态分析研究报告
- 苏教版六年级上册科学全册教学设计(2022年新改版)
- 2023年起重机械检验员资格考核试题及答案
- 消化科临床重点专科建设项目申报汇报课件
评论
0/150
提交评论