(计算机系统结构专业论文)基于微内核的设备驱动框架研究.pdf_第1页
(计算机系统结构专业论文)基于微内核的设备驱动框架研究.pdf_第2页
(计算机系统结构专业论文)基于微内核的设备驱动框架研究.pdf_第3页
(计算机系统结构专业论文)基于微内核的设备驱动框架研究.pdf_第4页
(计算机系统结构专业论文)基于微内核的设备驱动框架研究.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(计算机系统结构专业论文)基于微内核的设备驱动框架研究.pdf.pdf 免费下载

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

文档简介

浙江大学硕上学位论文摘要 摘要 随着电子技术的不断发展,各种新的电子产品不断涌现。驱动程序的设计也 随着外设的丰富而变得更加复杂,因此驱动代码中存在缺陷的概率也将越来越 大。这一趋势为操作系统中设备驱动框架的设计和实现带来了新的挑战。 本文在现有设备驱动研究基础之上,结合微内核技术的研究成果,针对内核 模式设备驱动框架中存在的安全隐患,提出了一种基于微内核技术的用户空间设 备驱动框架。本文克服了用户空间程序访问外部设备中存在的性能瓶颈,实现了 用户空间对外围设备的高效访问,并提供了可靠高效的机制来保证应用程序和驱 动服务之间的通讯。本文的主要工作和创新点总结如下: 1 ) 提出了一种基于微内核技术的用户空间设备驱动框架。本框架将驱动以 服务形式运行于用户空间从而实现了驱动与内核之间的隔离。隔离性使 得驱动程序中存在的错误局限于它所在线程,确保了不会因为驱动的缺 陷导致内核的崩溃。本框架提供驱动服务运行环境,用户可以根据应用 场景的不同而按需载入驱动服务,驱动服务和内核以及系统其他模块的 耦合很低,可以方便地对系统中已经运行的驱动服务进行动态更新,从 而使驱动服务具有新的功能特性。 2 ) 实现了驱动服务运行环境。驱动服务运行环境定义了各类驱动的标准接 口和驱动服务的交互模型。它对外围设备的特性进行归纳和总结,用i d l 语言对各类驱动的接口进行了描述。驱动服务运行环境对微内核提供的 i p c 机制进行了封装,实现了一种远程方法调用机制用来完成客户端和驱 动服务之间的交互。 3 ) 实现了硬件抽象层。硬件抽象层利用底层微内核提供的a p i 对底层硬件 和外设进行访问和控制,提供一个抽象硬件平台和统一的硬件接口。硬 件抽象层包括三个模块,其中内存管理模块将系统中空闲的物理内存映 射到它所在地址空间,并加以统一的维护和管理;i o 模块实现了对端口 浙江人学硕士学位论文摘要 i o 和内存映射i o 两种方式的封装;中断模块在微内核基础上对其中断 处理机制作迸一步封装,实现了用户对中断的处理和响应。 关键词:微内核,用户空间,设备驱动框架 浙江大学硕士学位论文 a b s t r a c t a b s t r a c t a se l e c t r o n i ct e c h n o l o g yc o n t i n u e st oe v o l v e ,av a r i e t yo fn e we l e c t r o n i cp r o d u c t s c o n t i n u et oe m e 唱e w i mr i c hp e r i p h e r a l s t h ed e s i g no fd r i v e r sb e c o m e sm o r ea n d m o r ec o m p l e x s ot h ep r o b a b i l i t yo fd e f e c t si nt h ec o d ew i l la l s ob eg r o w i n g t i l i s t r e n dh a sb r o u g h tn e wc h a l l e n g e st ot h ed e s i g na n di m p l e m e n t a t i o no ft h ed e v i c e d r i v e rf r a m e w o r ki nt h eo p e r a t i n gs y s t e m s i nt h i sp a p e r , b a s e do nt h ec u r r e n td e v i c ed r i v e ra n dm i c r o k e m e lr e s e a r c h ,w e p r o p o s e dan e wu s e r - s p a c ed e v i c ed r i v e rf r a m e w o r k w eo v e r c o m et h ep e r f o r m a n c e b o t t l e n e c k si na c c e s s i n gp e r i p h e r a ld e v i c e s ,a n dp r o v i d ear e l i a b l ea n de f f i c i e n t m e c h a n i s mt oe n s u r et h ec o m m u n i c a t i o nb e t w e e nt h ea p p l i c a t i o n sa n dt h ed r i v e r s e r v i c e s t h em a i nc o n t r i b u t i o n sa r ea sf o l l o w s : w ep r o p o s e dan e wu s e r - s p a c ed e v i c ed r i v e rf r a m e w o r k i nt h i sf r a m e w o r k , w er u nd r i v e r sa ss e r v i c e si n u s e r - s p a c ei no r d e rt oa c h i e v eas e p a r a t i o n b e t w e e nt h ed r i v e ra n dt h ek e m e l i s o l a t i o ne n s u r e st h a tt h ed e f e c t si nt h e d r i v e r sw i l ln o tc a u s et h ek e r n e lc o l l a p s e t m sf r a m e w o r kp r o v i d e sar u n t i m e e n v i r o n m e n tf o rd r i v e rs e r v i c e s t h es e r v i c e sa r el o o s e l yc o u p l e ds ot h e yc a n b eu p d a t e dd y n a m i c a l l y w ei m p l e m e n t e dar u n t i m ee n v i r o n m e n tf o rd r i v e rs e r v i c e s n l en m t i m e e n v i r o n m e n td e f i n e sas t a n d a r di n t e f f a c ef o ra l lk i n d so fd r i v e r s w ed e s c r i b e v a r i o u st y p e so fd r i v e ri n t e r f a c e si ni d ll a n g u a g e w ei m p l e m e n t e dar e m o t e m e t h o di n v o c a t i o nm e c h a n i s mb a s e do ni p co ft h em i c r o k e r n e l w ei m p l e m e n t e dah a r d w a r ea b s t r a c t i o nl a y e r w ep r o v i d e da t la b s t r a c t h a r d w a r ep l a t f o r ma n dau n i f i e dh a r d w a r ei n t e r f a c eb yt h eu s eo ft h e u n d e r l y i n gm i c r o k e m e la p i sf o rt h eu n d e r l y i n gh a r d w a r ea n dp e r i p h e r a l st o a c c e s sa n dc o n t r 0 1 h a r d w a r ea b s t r a c t i o nl a y e rc o n s i s t so ft h r e em o d u l e sa s f o l l o w s :am e m o r ym a n a g e m e n tm o d d es y s t e mt h a tc o n t r o l l e da l lt h e m e m o r ym a p p i n g s ;a ni 0m o d u l et h a te n c a p s u l a t e dp o r ti oa n dm e m o 巧 m a p p e di o ;a ni n t e r r u p tm o d u l et h a t a c h i e v e dh a n d l i n g i n t e r r u p t s i n 浙江人学硕士学位论文 a b s t r a c t u s e r - s p a c e k e y w o r d s :m i c r o k e m e l ,d e v i c ed r i v e rf r a m e w o r k ,u s e r s p a c e 浙江大学硕_ j :学位论文图目录 图目录 图1 1l i n u x 内核代码相对b u g 率4 图2 1n o o k s 体系结构示意图一l o 图2 2e x o k e r n e l 体系架构13 图2 3n e m e s i s 系统架构1 5 图2 4q n x 系统结构图1 6 图2 5o s k i t 体系架构1 7 图3 1 系统总体架构2 1 图3 2 中断处理示意图2 2 图3 3 远程方法调用原理2 7 图4 1 编组解组示意图3 4 图5 1 微内核缺页中断处理流程3 8 图5 2 中断处理模块整体结构图4 5 图6 1 远程方法调用机制性能对比一4 9 图6 2i n t e l8 2 5 4 芯片框图一51 图6 3 网络接口吞吐量对比5 4 图6 4 网络接口延时对比一5 4 图6 5c p u 占有率对比5 4 i i i 浙江大学硕f :学位论文 表目录 表目录 表5 1 端口i o 接口4 0 表5 2 端口i o 权限设置接口4 2 表5 3i o 内存映射接口4 3 表6 1 服务加载步骤4 8 表6 2 中断响应时间对比5 0 i v 浙江火学硕士学位论文第1 章绪论 第1 章绪论 随着数字革命进一步深化,人们的生产和生活越来越依赖于信息技术,新的 电子产品不断涌现。计算机外围设备的多样化让设备驱动在操作系统的所占比重 日益提升。驱动代码直接与硬件和外设交互,具有较高的复杂性。相比操作系统 的其他代码,设备驱动代码平均每行所含有的缺陷要多几倍,设备驱动的缺陷是 导致操作系统崩溃的一个主要原因之一。随着先进设备中诸如热插拔、高级电源 管理等功能的加入,设备驱动的设计也将随之变得更加复杂,因此驱动代码中存 在缺陷的概率也将越来越大。 针对设备驱动存在的上述问题,本文在微内核技术基础上,提出了一种用户 空间的设备驱动框架,具有以下优势: 设备驱动运行于用户空间,驱动中潜在的缺陷被隔离于内核之外,保证 了系统的容错性; 设备驱动以服务的形式加载,支持驱动运行时的动态替换与更新,保证 了系统的灵活性和可扩展性; 设备驱动依靠微内核提供的高效的i p c 机制,保证了驱动服务运行环境 的可行性,也就是驱动代码的精简与高效。 本章主要介绍研究背景与相关技术,各小节的内容分别安排如下:第一节介 绍了研究背景,包括了微内核技术的特点、微内核操作系统的现状以及设备驱动 框架的相关内容;第二节介绍了本文的主要研究工作;第三节介绍了各章节的安 排;最后一节是本章的一个小结。 浙江火学硕士学位论文第l 章绪论 1 1 课题背景 1 1 1 微内核技术 微内核为实现完整的操作系统提供最基本的机制,诸如底层地址空间管理、 线程管理以及进程间通讯等。微内核是系统中唯一运行于内核空间( 最高特权级) 的程序,设备驱动、通讯协议栈、文件系统以及用户界面等系统服务则都运行于 用户空间。 上世纪八十年代,出现了以m a c h 1 1 和m i n i x 2 1 为代表的第一代微内核系统。 它们在内核中提供了线程、地址空间等最基本的抽象,并提供了远程过程调用 ( r p c ) 、基于消息的进程间通讯( i p c ) 等最基本的机制。m a c h 第一次将缺页处 理器( p a g e r ) 放在用户空间,用户可以根据个性化的需求编写缺页处理器。核 外缺页处理器这一技术,使得系统具有高度的灵活性。m a c h 中第二个技术创新是 将硬件中断封装成i p c 的形式。微内核捕获硬件中断但不做处理,而是以i p c 的 方式向特定的服务发送消息。这一技术使得在用户空间编写设备驱动成为可能。 尽管第一代微内核在设计上有很多可取之处,然而它们实现的效率成为了制 约其广泛应用的一个瓶颈1 。对第一代微内核性能的分析表明,微内核系统性能 低下并不取决于它有更多的用户空间内核空间切换。第一代微内核采用的策略 是从宏内核一步一步改进到微内核,这是这种策略导致了微内核性能的低下。 鉴于上述原因,第二代微内核采用了从无到有构建一个全新内核的策略。第 二代微内核以e x o k e r n e l 4 】和l 4 【5 1 为代表,它们都秉承了上述开发策略,构建一 个最小化的体系架构,支持高度可扩展的操作系统。它们都克服了第一代微内核 系统普遍存在的性能问题。e x o k e r n e l 和l 4 通讯机制相比第一代微内核的i p c 最 多要快2 0 倍【6 】o 除了性能大幅攀升之外,第二代微内核设计上还具有更高的灵活 性。 微内核的诞生是为解决宏内核规模不断增长之后开发和维护难度越来越大 的问题。相比宏内核,微内核在技术上具有以下优势【7 】: 微内核系统中,不同的a p i ,不同的文件系统,甚至不同的操作系统基 本策略都可以同一个系统中并存,它们可以微内核的不同服务的形式实 2 浙江大学硕上学位论文第l 章绪论 现。 微内核系统具有高度的灵活性和可扩展性。系统对新的硬件和新的应用 具有高度的适应性。当需要增加新的硬件或者应用支持时,只需用对特 定的服务进行修改即可。而这种修改不需要重新编译内核,可以对这些 服务进行在线测试,从而也提高了系统的可靠性。 微内核系统中,所有服务都使用微内核提供的机制,系统各服务之间是 被严格隔离的,服务中存在的缺陷不会影响系统整体的可靠运行。 微内核设计促使操作系统的设计更加模块化。 微内核设计,使得内核的开发和维护变得相对容易,同时也方便了对内 核的测试和形式化的验证,使得内核存在缺陷的概率大为降低。 1 1 2 设备驱动 从最基本的层面来看,可以简单地将设备驱动看成是一种操控硬件的程序【引。 它向上层提供统一的接口,应用程序在无需了解硬件的具体细节的情况下能够通 过驱动使用硬件所提供的各项功能。驱动通常使用计算机总线以及i o 指令与硬 件设备进行通讯。当应用程序调用驱动的导出的接口时,驱动向硬件设备发送相 应的命令。同时驱动还响应来自外部设备的中断。当外设中有新数据到达或者完 成了某一任务时,它会以中断的形式通知驱动。驱动框架中需要提供一种机制, 保证应用程序请求和外设中断请求之间的同步。以这样的方式设备驱动建立起了 应用与硬件之间的交互。 设备驱动与底层硬件和外围设备之间有着密切的联系,它是操作系统的一个 重要组成部分。在当今的大部分操作系统中,设备驱动通常作为内核的一部分运 行于内核空间。内核空间的设备驱动具有最高的特权级,对内核拥有的各项资源 拥有完全的访问权限。这类实现的优点在于驱动能够直接对外设进行访问,保证 了其性能的最优化。 然而内核空间设备驱动也存在弊端。驱动拥有了过高的特权级,如果驱动代 码存在缺陷,那这个缺陷将有可能导致整个系统的崩溃。斯坦福大学的一项研究 浙江大学硕十学位论文第l 章绪论 显示,l i n u x 内核中设备驱动相关的b u g 占到全部b u g 的绝大部分【9 1 。图1 1 表 明,设备驱动存在b u g 的比率大约是内核其他部分的7 倍。 b l o c k 曰 _ 一 f r e e 垌 i n u l l 囝 一 i n t r 口一 l o c k 团j n u l l 口; 一r a 增e 口; va r 团s e : 一 喜j j i 。隔届。重嘲m :。r 旦。 o t h e ra r c h i 3 8 6n e tf sd r i v e r s 1 2 研究内容 图1 1l m u x 内核代码相对b u g 率 大多数操作系统中设备驱动通常作为内核的一部分而运行,这就意味着设备 驱动对包括内核数据结构在内系统资源拥有者完全的访问权限。上一节中本人对 内核空间设备给系统的稳定性造成的影响进行了分析。针对前述问题本文提出了 一种用户空间设备驱动框架。 用户空间设备驱动框架相比传统的设备驱动框架具有如下特点: 隔离性。本框架中驱动作为用户空间的进程独立运行,驱动与内核以及 驱动与驱动之间实现了强隔离。这种隔离性使得驱动的编写能够更加模 块化,方便驱动代码的编写与管理,减小出现错误的概率。更为重要的 是隔离性能够将驱动中存在错误局限于它所在进程,即便驱动中存在 b u g ,也不会扩散到整个系统导致系统的崩溃。 灵活性。本框架中驱动以服务的形式存在,每个驱动服务都包含载入、 暂停、开始以及销毁等接口,用户可以根据应用场景按需载入驱动服务。 4 7 6 5 4 3 2 l o o 薏篮 浙江大学硕士学位论文第1 章绪论 驱动服务和内核以及系统其他模块的耦合很低,因此用户可以方便地对 系统中已经运行的驱动服务进行动态更新,使服务具有新的功能特性。 然而将设备驱动运行于用户空间也面临着一些挑战。挑战主要来自以下几个 方面:首先驱动框架需要解决性能上存在的瓶颈,将由于迁移到用户空间所带来 的性能损耗降低到最低限度;其次驱动运行于用户空间无法对外围设备进行直接 的访问,框架需要提供一种间接的机制来访问这些资源;最后驱动以用户空间程 序的形式运行,应用程序必须通过进程间通讯的形式访问驱动服务提供的功能, 因此框架必须提供一套高效、可靠的机制来保证应用程序和驱动服务之间的通 讯。针对上述挑战,本文的主要研究内容包括: 底层硬件的抽象与封装。驱动主要依靠读写设备寄存器、中断处理、直 接内存访问等方式对对外围设备进行访问。驱动框架需要利用微内核提 供的a p i 对上述方式进行封装,构建一个抽象的硬件平台,向上提供一 个统一的接口,使得驱动服务能够利用这些接口来访问外围设备。 驱动服务的运行时环境。驱动以用户空间进程的形式运行,来为应用程 序提供服务。它需要由驱动框架为其提供运行时支持。首先框架对微内 核的进程间通讯加以封装,形成一套远程方法调用机制,从而建立应用 程序和驱动服务之间的通讯。其次框架需要提供一套管理驱动服务的接 口,用以对驱动服务的运行加以控制。 1 3 论文安排 第一章是绪论部分,介绍了本课题的相关背景以及研究内容。 第二章介绍了与本课题研究相关的项目进展情况,对现有研究问题、存在的 问题进行了分析。 第三章介绍了用户空间设备驱动框架的整体架构。 第四章介绍了硬件抽象层的设计与实现。 第五章介绍了驱动服务运行环境的设计与实现。 第六章对框架的两大模块进行了性能评估,并围绕驱动实例对框架的性能作 浙江大学硕上学位论文第1 章绪论 了定量分析。 第七章是总结与展望,对现有工作进行了总结并展望了未来的研究方向。 1 4 本章小结 本章首先介绍了课题背景,分别对微内核技术和设备驱动的特点进行了介 绍。然后阐述论文的研究内容,以及本文提出的设备驱动框架与传统的设备驱动 框架相比的优势,最后讲了本论文的章节安排。 6 浙江大学硕士学位论文第2 章相关工作 第2 章相关工作 本章主要介绍了目前集中常见的设备驱动框架,着重讨论用户空间驱动的实 现。第一节先介绍了l i n u x 中设备驱动模型概况,然后介绍了一种基于l i n u x 用 户空间驱动框架;第二节介绍了w d m 和w d f 两种w i n d o w s 设备驱动模型,描述了 两种框架的架构以及功能,并分析w i n d o w 中的用户空间设备驱动框架u m d f ;第 三节介绍了若干种微内核操作系统及其设备驱动框架;第四节是本章小节。 2 1l i n u x 设备驱动模型 2 1 1l i n u x 设备驱动模型概述 l i n u x 内核在2 5 版的开发过程中建立了一个统一设备驱动程序模型框架, 为其后续版本中的驱动程序开发提供了很大的便利。框架由一系列共同的数据结 构和函数调用组成。这些结构和函数在所有设备驱动子系统中得到了广泛的应 用。该框架将设备驱动子系统的所有对象都分解成总线( b u s ) 、设备( d e v i c e ) 和类( c l a s s ) 1 0 】。这些原语控制着驱动与物理设备或者虚拟设备之间的匹配, 向用户显示了这些对象之间的相互联系。 总线可以看成是一个用以连接各种设备的对象。常见的总线有p c i 总线、u s b 总线、i 2 c 总线、p c m c i a 总线以及s c s i 总线。总线的各种活动由一个对应的总 线驱动控制。例如u s b 总线的活动由u s b 控制器所控制。u s b 控制器本身则被连 接到一个p c i 总线上,它作为一个p c i 设备与p c i 总线进行交互。同时u s b 控制 器控制对应的u s b 总线的具体访问,与连接到u s b 总线上的各种u s b 设备进行交 互。总线在l i n u x 内核中以s t r u c tb u s t y p e 数据结构来表示。 设备代表了连接到总线上的各种物理设备或者虚拟设备。他们以s t r u c t d e v i c e 这一数据结构来表示。当总线发现某一设备存在于系统中,它为该设备创 建一个对应的设备对象。所有的设备都能在s y s d e v i c e s 目录下被找到。每个设 备都有一个分配给它的驱动来控制它如何与特定的总线进行交互。驱动以s t r u c t d e v i c e d r i v e r 来表示。用户可以在s y s b u s b u s t y p e d r i v e r s 找到这些驱动。 7 浙江大学硕士学位论文第2 章相关工作 驱动向特定的总线进行注册,同时导出一个该驱动所支持的设备列表。总线通过 驱动的导出的列表来对设备和驱动进行匹配。 类( c l a s s ) 是忽略底层的实现细节之后从更高层面对硬件的一种抽象。驱动 程序可能会看到一个s c s i 磁盘或a t a 磁盘,但在类的层面它们都只是磁盘。类 允许用户根据设备提供的功能来使用设备,而不需要关注它们如何连接或如何工 作。类的例子有音响设备、定点设备( 如鼠标,触摸板) ,键盘,游戏操纵杆, 磁盘设备和t r y 设备。内核上通常总会包含这些类型的设备,它们已经按主设备 号、从设备号聚集在一起,用户可以方便地访问它们。类在内核中以d e v i c e c l a s s 这一数据结构来表示。在s y s f s 的s y s c l a s s 目录下可以找到驱动框架中所包含 的类。 2 1 2l i n u x 设备驱动实现机制 l i n u x 设备驱动模型中驱动程序运行于内核空间。在内核空间可以相当直接 地访问设备寄存器,设备驱动只需要简单地访问设备寄存器的内存映射或者进行 一次端口i o 即可。l i n u x 驱动模型设计时所需要考虑的问题就是如何保持代码 的可移植性。为了保证驱动是可移植的,内核提供了一系列宏定义来进行端口 i o ,并提供了一套独立的函数来访问映射到内存的设备寄存器。 l i n u x 中设备驱动通过调用r e q u e s t来对某个中断进行注册il。驱动向irq r e q u e s t 传递两个参数,指明它希望注册的号( 中断请求号) 和对应的中_ i r qi r q 断处理函数。由于驱动程序运行于内核空间,当中断发生时内核只要调用先前注 册的中断处理函数即可完成对中断的处理。l i n u x 允许中断处理函数被注册为快 处理函数或者慢处理函数。快处理函数在中断被禁用的情况下执行,而慢处理函 数则是在中断被启动的情况下执行。 l i n u x 秉承了u n i x 的设计哲学,系统中每一个外围设备都有一个特殊的文件 与之对应。应用程序与设备之间的交互接口由系统调用来提供。它们之间的数据 传递通过r e a d 和w r i t e 之类的系统调用而进行【1 2 】。如果设备需要随机访问则通 过实现l s e e k 系统调用来实现。对于设备相关的一些操作由i o c t l 系统调用来实 8 浙江大学硕士学位论文第2 章相关工作 现。i o c t l 是一个通用的系统调用,驱动开发者可以根据设备的具体情况定制专 门的i o c t l 命令。 l i n u x 内核模块允许内核在运行时进行扩展。这使得设备驱动可以被动态加载 而不是必须被编译进内核。内核模块机制一定程度上增强了l i n u x 内核的灵活性。 然而内核模块不提供任何模块与内核其他部分之间的隔离保护,驱动模块一旦加 载之后与内核之间的界限变得模糊,使得对驱动模块的同态的替换与更新变得比 较困难。 2 1 3n o o k s 体系结构 n o o k s 体系结构试图将设备驱动程序运行于一个故障隔离环境从而增加 l i n u x 内核的稳定性【1 3 1 。驱动程序运行于一个n o o k ( 角落) 使得驱动与内核其他 部分实现隔离。每个n o o k 都构成一个保护域。驱动程序没有独立的地址空间而 是直接运行于内核空间。因此驱动程序可以直接使用内核提供的地址而不需要对 数据进行复制或者对地址进行翻译。然而n o o k s 体系结构防止驱动程序对其所在 保护域之外的内存进行写入操作,限制了错误的内存访问对系统可靠造成损害的 可能。n o o k s 体系构架允许多个驱动在同一个n o o k 中运行。紧耦合的模块例如: 网络接口驱动和t c p i p 协议栈,运行于同一个保护域,提高了驱动程序执行效 率。n o o k s 体系结构的架构图如图2 1 所示。 9 浙江火学硕士学位论文第2 章相关工作 a p a c h ew e bn a v g a t o rw e b q u a k e 3 dv 屹l e o s e r v e rb r o w s e rg a n - l e j 3g o p e r = l n gs y s t e mk e r n e l m e m o r y f i l es y s t e m n e t 慨嘲 m a n a g e m e n t n o o k $ k e m e ir u r m r n e v l d e on o o kn e r 巍o r kn o o k p e r , n o o kr u n t i m ep e r - n o o kr u r n h m e t c p i pd f i v e r ethevideordrivers c s ld r i v e r 嘶r u n t j r n e i l n o o k sk e l l )| l 多 s c s lc o n t m h e r e 蜘e r r 掩娃c a r d v 龇c a r d c a 删 2 2w i n d o w s 设备驱动 2 2 :1w d m 概述 w d m ( w i n d o w sd r i v e rm o d e l ) 是微软提出的一个统一驱动程序模型【1 4 1 。在此 驱动模型中驱动程序构建于一个复杂的层次之上,驱动之间通过i 0 请求包进行 交互。w d m 驱动程序可以分为以下几种类型: 功能驱动程序。功能驱动程序是设备最重要的驱动,它通常由设备提供 商编写。一个功能驱动能够为一种或者多种设备服务。功能驱动程序又 可以分成两种:类驱动程序和微型端口驱动程序。类驱动程序可被看成 是一种内置框架性驱动程序,微型端口驱动程序和其他类驱动程序可以 在它的基础之上构建。微型端口驱动程序则是为u s b 、音频、s c s i 设备 以及网络适配器等编写的驱动。 总线驱动程序。总线驱动程序为总线控制器、总线适配器以及总线桥提 l o 浙江大学硕十学位论文第2 章相关工作 供服务。微软为最常见的总线提供总线驱动,例如:p c i 总线、p n p i s a 总线、s c s i 总线、u s b 总线以及火线等。软件供应商可以按需创建自己 的总线驱动程序。如果机器上有一个以上相同类型的总线,总线驱动程 序为多个总线提供服务。 筛选器驱动程序。筛选器驱动程序是可选的驱动程序。它为设备增值或 修改设备的行为。一个筛选器驱动程序可以服务一个或者多个设备。上 层的筛选器驱动架构于功能驱动程序之上,底层的刷选器驱动程序架构 在总线驱动之上功能驱动之下。 w d m 相比它之前的v x d 和w i n d o w sn t 驱动模型有了显著的改进。然而w d m 仍 有很多为驱动开发人员诟病的不足之处,例如它学习曲线过于陡峭、对电源管理 和即插即用的支持不够完善、每个驱动程序动辄要撰写数千行的支持性代码、不 支持用户空间的设备驱动等。由于这些问题微软推出了一个叫做w d f ( w i n d o w s d r i v e rf o u n d a ti o n ) 的全新框架来取代w d m 。 2 2 2w d f 概述 w d f 定义了统一的驱动程序模型,驱动开发人员可以用它来创建面向对象、 事件驱动的驱动程序【1 5 】。开发的驱动程序按照需求不同可以运行于内核空间,也 可以运行于用户空间。通过使用w d f 开发人员可以专注于硬件,而不是低层次的 操作系统要求的功能需求。w d f 包括开发内核模式和用户模式驱动程序框架, 此外它还包括几个驱动程序验证工具6 1 。 2 2 2 1k ) f k m d f 是内核模式驱动框架( k e r n e lm o d ed r i v e rf r a m e w o r k ) 的缩写【1 7 】,它 实现了开发内核模式设备驱动程序所需要的基础特性,包括完全支持即插即用、 电源管理、i o 队列、d m a 、w m i 和同步。此外它还可以进行扩展以支持特定的 设备类所需要的特性。内核模式设备动框架不是操作系统内核的一部分,而是一 个独立的运行时库。使用k m d f 来编写一个支持多功能设备的总线驱动要比使用 浙江大学硕士学位论文第2 章相关丁作 w d m 模型简单得多。k m d f 下的总线驱动主要枚举它的子设备并列出每个子设 备的属性。k m d f 框架负责处理所有其他所有共同需求,例如设置设备对象、引 导i o 请求包等等。 k m d f 的接口设计旨在使驱动程序与内核的隔离在今后成为可能,使内核模 式驱动程序在受保护的环境中运行。如果驱动程序崩溃系统可以通过清理驱动程 序分配的资源而进行自行恢复,系统则本身不会停止或者崩溃。 2 2 2 2 啪f u m d f 是用户模式驱动模型( u s e rm o d ed r i v e rf r a m e w o r k ) 的缩写【l 引。它是 一个通用驱动程序平台,实现了内核模式框架的功能的一个子集。它能支持即插 即用、电源管理以及异步i o 。通过使用u m d f 开发人员可以为基于串行总线的 设备以及协议开发驱动程序。这些驱动程序是标准的即插即用驱动,系统可以像 安装内核模式即插即用驱动一样来安装这些驱动。 用户模式提供了相比内核模式更简单的操作环境。用户模式驱动程序只能访 问自己的地址空间而不能访问内核地址空间。它们使用w i n 3 2 a p i 而不是内核函 数来调用系统服务。因此用户模式驱动程序有助于加强系统的稳定性和安全性 【l9 】。然而用户模式驱动程序的功能还是受到某些限制。他们不能直接操作硬件, 所以他们无法进行d m a 或使用中断。此外他们不能为内核提供服务,也不能满 足极为严格的时序要求。 2 3 其他操作系统 2 3 1e x o k e r n e l e x o k e m e l 最早由m i t 并行分布式操作系统组( p a r a l l e la n dd i s t r i b u t e d o p e r a t i n gs y s t e mg r o u p ) 提出并实现。贯穿它的一个基本设计思想就是尽可能地少 做抽象,使得应用程序开发人员能够根据自己的应用需求来做硬件抽象。 e x o k e m e l 的功能仅限于对资源的保护以及复用,因此它的内核相比实现了消息传 递的传统微内核以及实现了各种抽象的宏内核要简单很多【2 0 1 。e x o k e m e l 上的应 1 2 新江 学硕士学位论文 第2 章相关i 作 用程序被称为库操作系统。它们可以对特定的内存、磁盘块等发出请求。内核仅 确保那些被请求的资源可被获取以及应用程序有权限访问该资源。应用程序对底 层硬件访问允许程序员来实现自定义的抽象,从而提高程序的性能。图22 描述 了e x o k e m e l 系统的架构。 圈2 2e x o k e m e l 体系架构 e x o k e m e l 中应用与库操作系统( 1 i b o s ) 进行链接。库操作系统标提供了准操 作系统的抽象( 例如:虚拟内存、文件、网络协议等) 。因为库操作系统运行于 用户空问,开芨人员可以对其功能进行扩展和改写。w e b 服务器就对库操作系统 进行了重写。由于e x o k e m e l 提供了保护机制,不同的l i b o s e s 可同时运行在同一 系统,安全地进行磁盘块和物理页等资源的共享。 e x o k e r n e l 中并没有提供一个专门的设备驱动框架,但它提供了磁盘驱动和网 卡驱动等实例口”。以下仅以网卡驱动程序为例,分析e x o k e m e l 中驱动的运行。 实现高效的网卡驱动需要满足以下两个要求:首先减少不必要的数据拷贝,其次 对中断进行及时响应。对于第一点,e x o k e r n e l 采取了允许应用访问硬件提供的敞 射聚集( s c a r e r - g a l h e r ) d m a 的方式来减少数据的拷贝。对于第二点,e x o k e m e l 将应用代码下载入内核作为中断处理器,增加了中断处理的效率。基于上进方式 e x o k e m e l 实现了一个高效的网卡驱动。 浙江大学硕j :学位论文第2 章相关工作 2 3 2b a c h m a c h 由卡耐基梅隆大学设计并实现,是第一代微内核的实现之一。从m a t h 3 0 起引入了新的i o 系统进行设备管理【2 2 】,具有如下的特点: 支持设备无关驱动。m a t h 对设备按照功能进行分类,总结出了各类设备 的通用接口。开发人员可以根据设备所属类的接口进行编程实现设备无 关驱动。m a t h 中设备可以分成:屏幕、控制台、磁盘、网卡以及串口等 几大类。每一个驱动由两部分构成,一部分是设备无关代码,实现了驱 动的通用接口;另一部分则是硬件相关部分,负责直接与硬件进行交互。 支持用户级设备管理。m a t h 将中断矢量化并将其与用户空间的线程对应 起来,同时将设备的寄存器以及用户d m a 的内存都映射到用户空间。上 述封装不仅实现了用户空间的驱动对硬件的访问,而且还为在用户空间 复用内核模式驱动提供了可能。 提供了位置透明的设备管理策略。m a c h 需要实现从任意一台机器对外设 进行控制和管理,不论外设是否直接连接到该机器。基于这个原因m a t h 采用了基于i p c 的驱动接口而不是采用基于系统调用的接口,使得应用 能够以远程过程调用的形式实现对驱动的访问。 m a t h 中驱动之间的交互依靠i p c 实现,而第一代微内核的i p c 实现存在较 大的性能瓶颈,因此m a t h 的i o 的性能也受到制约,使其没有得到广泛的应用。 2 3 3n e m e s i s n e m e s i s 是一个垂直架构的单地址空间操作系统。它的主要目的是向应用程序 提供服务质量( q o s ) 保证【2 3 】。提供服务质量时最困难之处在于对资源使用的精 确统计。n e m e s i s 通过将大部分应用代码运行于同一个域的方式实现了对资源使 用的统计。这和微内核中将每个服务运行于单独的保护域的方式有很大不同。 n t s c ( n e m e s i st r u s t e ds u p e r v i s o rc o d e ) 是个非常小的内核,它提供了进程 调度和i p c 机制两大基本功能。系统的其他功能由用户空间实现。尽管大部分的 应用程序代码运行于用户空间,n s t c 允许设备驱动程序注册中断处理函数,当 1 4 塑坚尘兰堡主兰些兰塞苎! 空塑苎三生 中断发生时这部分代码会在内核模式中得到执行。这样既保证了用户程序对中断 事件的捕获,也使得来自设备的中断能够及时被处理。图23 显示了n e m e s i s 的 系统架构。 图2 3 n e m e s i s 系统架构 n e m e s l s 使用r b u f s 2 4 系统调用柬进行两域之间的大批量数据传输。当两个域 需要进行数据传送时,域之间会建立一对控制区( c o n t r o la r e a ) 。控制区是一个简 单的循环缓冲区。数据传送时,数据传送的一方将一个i o r e c 加入控制区。i o r e c 包含了一个( b a s e ,l e n g t h ) 对的列表指向一个数据区域。当数据就绪时另一个域 会得到通知。 2 3 4o n x q n x 采用了微内核的架构,为应用程序提供了个支持多处理器的实时操作 系统环境。”。q n x 微内核实现四个基础性服务:进程问通讯、底层网络通讯、 进程调度以及中断派发机制。o n x 包括了1 4 个与这些服务相关的内核调用。这 些函数代码占据了7 k 空问,满足了实时系统对于功能和性能的要求。由于q n x 提供了极小化的内核,拥有足够片上高速缓存的处理器能够为应用提供出色的服 浙江太学硕士学位论立第2 相关t 作 务。q n x 的架构图如图2 4 所示。 圈24o n x 系统结构图 q n x 中提供了一个系统调用允许具有足够权限的应用程序对某一个中断关 联处理函数。外部中断发生时内核调用关联的中断理函数响应该中断。中断处理 函数运行于用户空间,对与其关联进程的地址空间有完全的访问权限。一旦中断 处理函数被调用,它可以选择唤醒关联进程,也可以选择直接返回到内核。通过 这种内核之外的中断处理机制,用户空间的程序可以在运行时动态地添加和删除 中断处理函数。外部中断处理机制是微内核系统中实现用户空间驱动程序的基 础。 2 3 50 s k i t o s k i t 是一种用于编写操作系统的通用操作系统框架。它的目的是让操作 系统编写者可以专注于编写操作系统本身,而不需要去考虑那些几乎在所有操作 系统环境中都通用的系统底层代码。o s k j t 整合了多个开源操作系统的源代码, 构成了它自己的操作系统组件。图2 5 说明了o s k i t 的体系架构。 互 胃 。寻 浙江人学颤学位论立第2 章相* t 作 n a t i v o o s k i tc o d e e n c a p s u l a t e c ll e g a c yc o d e l o a d i n g r 一 f i l e s y s t 口m n o t i s d r e a d e r fdesymem jd i s k j 型l 一塑型堕 c l i e n to p e r a t i n gs y s t e mo r l a n g u a g er u n t i m es y s t e m a d d ( o s $ m a p f r e e b s d m a n a g e r m 目t i li j m a r y g e n e r i cd e v i c ed r i v e r s u p p o r t 一 m a l c u b g e n e r i cd 0 “d r t v i r s u p p o n d e b u g g l e g 竺型坐坚一 k e r c ds u p p o r t s p 圉2 5 0 s k i t 体系架构 设备驱动支持方面,o s k i t 充分利用了b s d 和l i n u x 内核中的那些应用广泛 测试良好的驱动程序。

温馨提示

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

评论

0/150

提交评论