已阅读5页,还剩82页未读, 继续免费阅读
(信息与通信工程专业论文)windowsnt的驱动级加解密技术研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
:j 工c 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明 确的说明并表示谢意。 签名: 日期:确痧年于眇日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:聊繇妲 日期:泸fo 年f 月z o 日 , k 曾 h j : 嘤 摘要 w i n d o w s n t 系统的数据安全一直是应用研究的重点,虽然人们用了很多方法 对w i n d o w s 文件系统中的数据进行保护,但是破解的方法也层出不穷。加密是保 护文件系统中数据安全的主要方法,但应用层的文件加密过程基本可以被监控和 破解,这样的话,应用层加密软件的可靠性大大降低了。如果使用硬件加密,可 靠性可以得到保证,但是成本上升,使用也不方便。 驱动级加密软件的优点在于不易破解,在操作系统中以服务的形式存在,不 产生新的进程,无法被用户恶意关闭。作为文件系统的附加服务,它自动将用户 写入磁盘的数据进行加密,在读出磁盘上的数据时根据用户权限进行了解密。既 简化了用户的操作又保证的磁盘的数据安全。 作者意图设计一个能在w i n d o w s n t 内核上运行的驱动级加密软件。软件的主 要功能是监控文件系统的运行,对用户指定的文件进行透明加解密,以及附带提 供一些文件访问控制功能。虽然驱动级加密软件的原理并不复杂,但在w i n d o w s 操作系统没有开放源代码的情况下,实现一个可用的过滤驱动还是有难度的。 作者在本文中先分析过滤驱动的原理,再根据原理设计程序模型,最后对程 序进行了实现。在实现过程中,作者遇到不少实际问题,比如i r p 的操作,以及 加密标识位置的确定,缓存的处理,加密算法的选择等等。作者对现有的解决万 法进行了比较和分析,既借鉴了前人的观点,电提出了自己的解决思路,并依照 自己的想法进行了实践上的尝试。 最后,作者对程序做了简单的测试,从有效性、稳定性和读写效率这几个育 面对驱动级加密技术进行了阴步评价。 关键词:透明加解密;过滤驱动;w i n d o w s 文件系统: _ ? 蕾 a bs t r a c t d a t as e c u r it yo fw i n d o w s n ts y s t e mh a sb e e nt h ef o c u so fa p p li c a t i o n r e s e a r c hf o ral o n gt i m e a l t h o u g hak i n do f m e t h o dh a v eb e e nu s e dt op r o t e c t d a t ai nw i n d o w sf il es y s t e mf r o ms n i f f i n g ,c r a c k e rc a na l w a y sf i n dt h ew a y t og e tt h ed a t at h e yw a n t e n c r y p t i o ni st h em a i nm e a s u r eo f d a t a p r o t e c t i o n ,b u ta l m o s ta l lt h ep r o c e s so ff i l ee n c r y p t i o ni nt h ea p p l i c a t i o n l a y e rc a nb em o n i t o r e da n dt h ec r a c k e d s o ,t h er e l i a b i l i t yo fe n c r y p t i o n s o f t w a r ei nt h ea p p l i c a t i o nl a y e rh a sb e e ng r e a t l yr e d u c e d i fw eu s e h a r d w a r et od oe n c r y p t i o n ,t h er e l i a b i l i t yc a nb eg u a r a n t e e d ,b u ti tc o s t m o r em o n e ya n dn o te a s yt oh a n d le t h e r ei sal o tt ob es a i df o rt h ed r i v e r l e v e le n c r y p t i o n e i t h e ri t i su n l i k ea p p l i c a t i o nl a y e rs o f t w a r ec a nb ee a s i l yc r a c k e d ,o ri ti se a s i e r t oh a n d l et h a nt h eo t h e rt w oe n c r y p to p e r a t i o n i tr u ni nt h eb a c k g r o u n d ,a u t o e n c r y p t d e c r y p tt h ef i l e s ,i nw h i c hs e c r e tw a sk e e p e d i ts i m p l i f yo p e r a t i o n t oe n c r y p t d e c r y p tf i l e ,a n da v o i dd a t al e a k a g ew h i c hi sc a u s e db yt h eb a d o p e r a t i o nb yt h i su s e r sw i t h o u te x p e r i e n c e a u t h o rm e a nt od e s i g naf i i t e rs o f t w a r ew o r k i n gi nw i n d o w sk e r n e l t h e s o f t w a r eh a ss e v e r a lm a j o rf u n c t i o n s :o n ei sm o n i t o r i n gf i l es y s t e m s o p e r a tio n ,t h eo t h e risd o in gt r a n s p a r e n te n c r y p t io na n dd e c r y p tio nf o r u s e r s p e c i f i e df i l e s ,a n o t h e ri sp r o v i d i n gf i l ea c c e s sc o n t r o ls u b s i d i a r y a l t h o u g ht h ep r i n c i p l e so fd r i v e l 。l e v e le n c r y p t i o ns o f t w a r ea r en o t c o m p l i c a t e d ,i nt h ec o n d i t i o nw i n d o w s n ti san oo p e ns o u r c eo s ,i ti sal o t d i f f e r e n tt om a k ed r i v e l e v e le n c r y p t i o ns o f t w a r ea v a i l a b l e i nt h i sa r t i c l e ,a u t h o ra n a l y s e dt h ep r i n c i p l eo ff i l t e rd r i v e r f i r s t l y ,t h e nt h e nd e s i g n e dap r o g r a mf r a m ea c c o r d i n gt op r i n c i p l e s f i n a 一 1l y ,a u t h o rd i dai m p l e m e n tf o rt h ed e s i g n a u t h o rh a de n c o u n t e r e dm a n yo fp r o b l e m si nt h ei m p l e m e n t a t i o n , s u c ha s h o wt oc o p e r a t ei r p ,i d e n t i f yt h el o c a t i o no fe n c r y p t i o n ,c a c h i n gf i l ed a t a , c h o o s ee n c r y p t i o na l g o r i t h m ,e t c 1 i a b s t r a c t a u t h o rc o m p a r e da n da n a l y z e dt h ee x i s t i n g s o l u t i o n s ,n o to n l yd r a wo n t h ep r e v i o u sp o i n t ,b u ta l s or a i s e do w ns o l u t i o n s f i n a l l y 。a u t h o rm a d eas i m p l e t e s tf o rp r o g r a mf r o me f f e c t i v e n e s s , s t a b i l i t ya n de f f i c i e n c y ,a n dg e t s o m e p r e l i m i n a r yc o n c l u s i o n s a b o u t d r i v e l e v e le n c r y p t i o nt e c h n o l o g y k e y w o r d s :t r a n s p a r e n te n c r y p t i o na n dd e c r y p t i o n ;f i l t e rd r i v e r :w i n d o w s f i l es y s t e m : i i i k 气 目录 目录 第一章绪论 1 1 研究背景 1 2 文件加密技术概述 1 1 1 应用层数据加密技术 1 1 2 驱动层加密技术一 1 1 3 硬件层加密技术 1 3 国内外研究现状与未来发展方向 1 3 1 国外研究现状 1 3 2 国内研究现状一4 1 4 论文的研究意义,主要特色和组织结构一5 1 4 1 论文的研究意义5 1 4 2 组织结构6 第二章相关背景知识7 2 1 w i n d o w $ 内核的架构7 2 2w i l l d o w s n t 内核的重要机制9 2 2 1 内核中的同步机制9 2 2 2 冲的同步12 2 3 w i n d o w s n t 内核的执行体组件1 4 2 3 1 对象管理器1 5 2 3 2 进程管理器l5 2 3 3 虚拟内存管理器l5 2 3 4i o 管理器16 2 3 5 配置管理器l7 2 3 6 缓存管理器17 2 3 7 驱动程序1 7 2 4w i n d o w s 文件系统l7 2 4 1 本机文件系统18 2 4 2 网络文件系统】8 i v 2 4 3 分布式文件系统1 8 2 5 w i n d o w s n t 的对象命名空! 司1 9 第三章总体漫计2 0 3 1 过滤驱动的原理2 0 3 2 设计目标2 2 3 3 过滤驱动的结构设计2 3 3 4 子模块设计2 4 3 4 1 过滤驱动主体模块设计2 4 3 4 2 数据加解密模块设计2 6 3 4 3 访问策略控制模块设计2 9 3 4 4 缓存交互模块的设计。3 2 3 4 5 应用层控制端设计。3 4 第四章详细设计3 6 4 1 w i n d o w s 系统定义的基础性数据结构3 6 4 1 1 驱动对象和设备对象3 6 4 1 2i i u 3 9 4 1 3i r p 、设备栈和i o 栈的关系4 1 4 2 自定义的重要数据结构4 1 4 2 i 文件附加属性”数据结构4 l 4 2 2 读写完成例程使用的数据结构4 2 4 2 3 驱动设备扩展4 3 4 2 4 其它4 4 4 3 主要功能的代码实现4 4 4 3 1 动静态绑定和监控文件系统4 4 4 3 2 透明加解密5 0 第五章技术要点和难点5 6 5 1 加解密算法和密钥安全性5 6 5 2 驱动设备间的数据分块传输5 6 5 3 加密标识5 7 5 4 获得进程名称和文件路径的方法5 9 5 5 使用影子设备避免i r p 的重入6 0 5 6 缓存的处理6 1 v l l q 5 7 文件禁j 上非法仿阔:,2 5 8 文件防修改、防删除6 2 第六章程序测试c ,4 6 1 功能测试。6 4 6 2 稳定性和效率测试。6 6 第七章结论和展望6 8 7 1 结论6 8 7 2 展望6 8 致谢7 l 参考文献7 2 攻硕期间取得的研究成果7 4 l k i 第一章绪论 第一章绪论 本章简要介绍了本论文研究背景、对文件加解密技术进行了概述,介绍了国 内外研究现状与发展,并陈述了论文的研究意义及组织结构。 1 1 研究背景 很多个人电脑都安装了w i n d o w s 系列操作系统,在个人电脑的硬盘或是其它 的存储设备中,有很多我们的个人数据,有些数据甚至是我们的隐私数据。w i n d o w s 操作系统只有n t f s 文件系统自带有文件系统级别的磁盘加解密功能,而f a t 系 列的文件系统则不带有这种功能。如果硬盘丢失,或者是个人电脑丢失,对方在 获得物理硬盘的情况下,只需要利用现有的数据恢复技术,就可以轻易将隐私数 据恢复,造成电脑的所有者的隐私泄露。隐私泄露的后果无需多言,当年轰动 一时的“艳照门 事件就是隐私泄露的典型案例。现代计算机技术可以设计一种 内核驱动,将我们文件系统中的部分文件夹设定为机密文件夹,所有机密文件夹 中的数据在写入硬盘的时候被加密,在从磁盘读出的时候解密。驱动安装后即可 使用,使用简单,与系统集成度高。而且过滤驱动的线程属于系统线程,不能在任 务管理器中看到,用户在使用中无法感知,也无需对它操作。所以,我们将这种 技术称为驱动级透明加解密技术。 1 2 文件加密技术概述 网络技术发展以及信息共享给人们带来极大方便,但也带来了不少安全隐患。 一直以来,信息安全在应用技术方面对基于网络应用的外部防范技术关注较多, 对计算机主机系统安全关注的较少。即使是对计算机本机安全的关注也大多集中 在软件的加密与破解和漏洞防范上面。着眼于现在越来越多的个人隐私泄露事件, 本文的研究主要集中在计算机本机文件系统的数据安全存储上。 任何加密方法都可以抽象成钩子理论,即在数据从用户态请求到磁盘存储这 条通路的某个地方,插入一个入口和一个出口,必要的时候配合一些判断语句进 电子科技大学硕士学位论文 行逻辑判断,之后再跳转到自己的处理过程【l 】。当写请求到来时进行数据加密,当 读请求到来时进行数据解密。当前对数据加密的研究工作主要集中在4 个方面: 硬件级,设各驱动级,系统调用级及用户裂2 1 。 根据数据加密技术在计算机中运行的不同层次,笔者将加密技术分为应用层 加密技术,驱动级加密技术,硬件级加密技术三种类型,虽然现在三种技术越来 越多的进行融合,不过总体的框架还是不变的。 1 1 1 应用层数据加密技术 应用层加解密技术,就是单纯的使用程序实现一个加解密的模块,在这个模 块中,可以包含加解密的算法,在需要对某个文件进行加解密的时候对其进行加 解密;也可以包含一个黑盒,也就是一个字符对照表,其用来将明文与密文对应。 很多软件都有内置的加解密模块,用来对版权,使用期限等重要信息进行加密 3 】。 典型的加密软件为各种加密,加壳,压缩软件。相对于底层加密,其实现起 来比较容易,但是由于它是用户空间的程序,各种用户进程和内核进程都可以访 问它的中间处理数据,例如在加解密中间过程产生的临时文件,或在系统缓存 中留下的明文文件,因此,它很容易被其他进程拦截。所以其安全性得不到操作 系统内核机制保护,而只能依靠单纯的密码学机制来保证。一些利用u s b 保存密 钥的用户空间加密系统 4 同样存在先天缺陷,这类系统只能保证密钥的安全,并 不能保证被合法进程解密的数据不会被其他非法进程盗取。 但这种方法实现简单,并且可以搭配许多种加密方法使用,作为加解密的一 种主流方法,其到现在还被很多的软件所采用。其缺点也是很明显的,就是破解 者可以找到加解密模块的入口,反汇编后对其进行解析,甚至直接将这些代码复 制使用。因为技术比较成熟,而且分析代码的产品众多,而且有商业利益所驱使, 所以应用层的加密与破解一直对抗非常激烈。 1 1 2 驱动层加密技术 驱动层加密技术是属于软件加密的一种,产生于保护模式出现后。由于保护 模式的出现,应用层进程无权访问所有的计算机资源,这时内核级别的驱动程序 就占有的独特的优势,它可以对系统中所有的资源进行访问,而且应用层对资源 的调用一定会经过内核,那么在内核中设置钩子进程,截获应用层发来的数据流 2 k q 第一章绪论 就是一种非常有效地数据监视方法。非常重要的是,驱动设备比应用层程序具有 更高的权限,不易受到应用层木马、病毒的干扰。这些对于数据加密者是极具吸 引力的。更重要的是,操作系统中的文件系统也是在内核中用驱动设备的方式实 现的,如果将加密模块和文件系统绑定,对提高用户体验和增强数据安全性都是 非常有益的。 比如微软的e f s ( 加密文件系统) 就是利用过滤驱动技术,在n t f s 上实现的 文件级别加密系统。对于n t f s 卷上的文件和数据,都可以直接加密保存,在很 大程度上提高了数据的安全性。 1 1 3 硬件层加密技术 硬件加密方式位于加密链条的最底层,主机c p u 不参与对数据加密,c p u 只 需要将加密数据发送给硬件加密设备,或者将解密数据从加密设备中读出即可。 硬件加密设备加密速度快,和软件配合使用难以破解,但是缺点也非常明显,加 密设备必须针对某种操作系统和硬件接口,并且加密算法无法更改,升级不方便, 使用成本高等特点,因此普及程度不如软件加密技术。但随着电子存储设备的发 展,硬件加密模块整合到存储设备中去可能会成为未来的趋势,将其作为存储设 备的一个可选件1 5 1 。用户使用体验得到很大的提高,争强了数据存储的安全性, 很有可能会得到广泛应用。 1 3 国内外研究现状与未来发展方向 1 3 1 国外研究现状 在w i n d o w s2 0 0 0 以后,微软推出e f s ,支持文件系统加密。该系统使用方便, 用户不需要掌握加密体系框架就能对数据进行加密。e f s 采用对称加密算法和非 对称加密算法相结合的方式进行加密。系统首先随机生产一个文件加密密钥( f i l e e n e r y p t i o nk e y ,f e k ) 对文件进行加密,然后用公钥对f e k 进行加密,并把加密 后的f e k 和加密文件一起存储,形成一个特殊的属性字段数据解密字段( d a t a d e e r y p t i o nf i l d d d f ) 。解密时首先用私钥对f e k 进行解密,然后用解密的f e k 完成对加密数据的解密 6 1 。e f s 系统是利用文件系统过滤驱动技术来实现的,和文 3 电子科技大学硕士学位论文 件系统紧密结合,到w i n 2 0 0 3 后,称为了n t f s 文件系统的一个组成部分。虽然 其安全性得到操作系统保障,但是也有不足。例如它只能对n t f s 磁盘卷上的文 件进行加密,并且是对指定的文件进行加密,不能根据文件的其它属性对文件加 密。比如,不能满足用户只加密 ( t ,w o r d 文件的需求。 e f s 已经属于比较成熟的加密系统,现在更新版本的驱动加密软件已经可以 通过微软提供的驱动开发包设计出来。微软不断地推出新的驱动开发包,意图更 新和简化w i n d o w s 驱动开发技术。不过其核心结构没有大的变化。笔者注意到, w i n d o w s x p 上所使用的大多数驱动程序开发包的源代码都是9 8 到9 9 年微软推出 的,1 0 年间基本没有变化,这些驱动和w i n d o w s 内核联系紧密,很多数据结构共 享,因此笔者推断,微软的内核在这1 0 年间基本不变。而最近推出的w d k ,w d f 开发环境,其本质不变,只是对以前繁杂的底层数据结构和接口又进行了一层封 装,使w i n d o w s 驱动程序的开发者只要遵照微软制定的那一套标准即可快速开发 出驱动程序。以后,开发w i n d o w s 驱动程序可能会像开发w i n 3 2 应用程序一样简 单规范化【7 j 。 除了微软的官方过滤驱动,还有一些商业软件如t r u e r c y p t , o s r 的开源工 具包等等,都实现了商业级别的透明加解密。对于加密软件来说,如果不开放源 代码,无异于给自己披上了不透明的外套,无法让人放心。国外的这些安全软件 的发展趋势是提供有偿服务而不是卖软件,或者是出售开发工具包,使客户或者 是开发者能够开发、使用适合自己需求的安全加密软件。这些方法既解决了安全 软件代码不开放带来的问题,也带来了新的销售模式。 1 3 2 国内研究现状 相对于其它的成熟的加密技术手段,国内对过滤驱动的研究一直相对落后。 从2 0 0 1 年起,网络和专业杂志上就有了相关的文章,但总体上还是处于一种研究 的层次。到2 0 0 5 年以后,特别是近几年来,国外的开发工具包和各种有关w i n d o w s 操作系统的书籍传入国内,并且研究驱动的人员逐渐增多,国内的w i n d o w s 驱动 开发水平逐步提高,也有了相关网站的专业讨论区。受限于微软不完全公布其内 核代码,相关的技术资料也不是很完善,而且以前的文件系统设计的时候并没有 考虑到附加其它功能,要编写文件系统过滤驱动的难度还是较大。过滤驱动往往 和特定的文件系统联系过于紧密。因此在国内刚开始研究的阶段,很多过滤驱动 主要出自于研究、爱好者之手,在功能上不够完善,稳定性也有问题。但随着相 4 第一章绪论 关技术书籍传入国内,以及众多w i n d o w s 驱动爱好者的不断努力钻研和完善,现 在的过滤驱动的稳定性已经有了很大的提高。因为透明加解密技术具有商业价值, 促使专业人士对这项技术进行了深入研究,力图使其达到商业化水准。在商业应 用上已经有国内的公司推出了自己的产品。但笔者没有用过这些昂贵的软件,无 法对这些软件的稳定性进行判断。不过,笔者相信,在国人的努力下,这项技术 一定能被吃透。 1 4 论文的研究意义,主要特色和组织结构 1 4 1 论文的研究意义 w i n d o w s 驱动级加解密技术的主要研究意义在于:不改变底层文件系统驱动 就可以完成对文件系统功能的扩展。文件系统是负责数据管理、数据存储的系统 组件,其功能包括了磁盘上数据的读取和存储,以及对文件进行命名。文件系统 设计完成后基本不会进行重大修改。所以,如果直接修改复杂的文件系统,想增 加某种功能,比如实现透明加解密功能是相当复杂而且不容易实现的【8 1 。 利用过滤驱动实现文件透明加解密,比应用层直接加解密更加安全。因为文 件过滤过滤驱动是内核程序,工作在内核层的程序很难被停止或是改变,也比较 难以跟踪调试。因此,相同的加密算法在驱动级的实现要比在应用层的实现更加 安全。作为一个安全软件,安全性方面是应用层程序所无法比拟的。 过滤驱动技术介于应用层软件和硬件之间。它和文件系统紧密结合,工作在 内核态中,对原有的文件系统功能进行了拓展。 笔者总结过滤驱动具备以下几个优点: 不对任何已有的内核驱动程序进行修动。 能够在较细的粒度上对文件系统进行访问控制和加解密。 相对于应用层程序,它属于内核程序,更靠近计算机的底层,也就是相比 于纯软件它更“硬 。驱动程序编写不易,但攻击和修改更困难。天生就 具有较高的安全性。 相比于硬件加密,过滤驱动属于软件,可以对它的加密算法和使用方法进 行修改,更能够符合用户的特定需求。 过滤驱动属于文件系统级别的驱动程序,它的开发必须遵守一系列已定义 5 电子科技大学硕士学位论文 的内核程序接口。这种方式限制了驱动程序编写的随意性, 加密算法和其他模块的二次开发和升级。 作为驱动程序,它能够和应用程序以及硬件进行组织整合, 严密可靠、更加完善的加密系统。 1 4 2 组织结构 方便了以后对 构成一个更加 本文共分六章,各章节的写作内容安排如下: 第一章绪论,概述加密技术的种类和层次,说明过滤驱动在加密技术中的定 位,与其他加密方法相比所具备的优缺点,说明过滤驱动的研究意义,当前的研 究和应用状况。 第二章介绍w i n d o w s 的内核组件和文件系统,对过滤驱动的相关背景知识进 行分析说明。 第三章阐述过滤驱动的原理、设计目标和总体结构,以及模块划分。并详述 每个模块的功能以及实现方案。 第四章用代码和文字结合的方式,对过滤驱动的两个主要功能的实现进行描 述。 第五章过滤驱动的实现中遇到的技术难点以及解决方法。 第六章给出过滤驱动程序在功能性、稳定性以及效率方面的简单测试结果。 最后进行总结与展望,笔者在这章中对自己做的工作进行总结,同时对过滤驱动 这种技术的未来发展提出了自己的见解。 6 第二章相关背景知识 第二章相关背景知识 为了设计和实现一个类似于文件系统或者是其它内核级别驱动的复杂软件, 非常有必要事先了解一下操作系统平台,与应用层的程序不同,驱动程序直接与 内核组件打交道。只有熟悉内核组件的运行机制,驱动程序方可正常运行。 本章对w i n d o w s 的基础内核知识进行介绍,这些知识在论文的后面要用到。 2 1w i n d o w s 内核的架构 图2 1w i n d o w s 操作系统结构图 w i n d o w s n t 系列操作系统借鉴了很多操作系统的经验,最小化了内核,因此 7 电子科技大学硕士学位论文 实现了部分操作系统工作在客户端部分,利用消息传递机制实现了不同模块间的 通信。此外,设计者还为这个操作系统实现了分层结构,层与层之间通过设计好 的接口进行交互。 图2 - 1 是w i n d o w s 操作系统结构的经典结构视图。该图清晰地显示出 w i n d o w s n t 操作系统是如何组织的,它被明显的划分为用户态和核心态两个部分 【l o 】 o 用户态: w i n d o w s n t 操作系统为受保护的子系统提供支持。子系统间相互独立,分别 驻留在自己受保护的内存空间中。其中,w i n d o w s n t 的虚存管理器( v m m ) 提供 了内存保护的功能。 子系统中比较有代表性的就是w i n 3 2 子系统,w d m 子系统,p o s i x 子系统, o s 2 子系统,w o w ( w i n d o w so nw i n d o w s ) 子系统等等。 内核态: 代码运行在用户态和内核态的主要差别是c p u 的优先级不同。用户态进程的 执行优先级低,随时可能被阻塞,中断;而内核态进程的执行优先级高,可以屏 蔽其它中断。对应于x 8 6 架构,内核态等同于p i n g o 优先级,用户态等同于r i n 9 3 优先级。对于程序的开发者来说,除非编写的是w i n d o w s 的内核级驱动程序,否 则,在c p u 运行于内核态优先级的情况下,我们是没有办法执行w i n 3 2 程序的。 总的来说,w i n d o w s n t 的内核部分由以下三个部分组成【l l 】: 1 硬件抽象层( h a l ) w i n d o w s n t 操作系统被设计为可以在多种架构上运行的可移植操作系统。其 能够运行于x 8 6 平台,a l p h a 平台,以及对称多处理器平台。此外w i n d o w s n t 还 能够使用i s a ,e i s a ,v l - b u s ,p c i 等多种总线结构。硬件抽象层隔离了特定的 硬件代码,h a l 其实也是一个软件层,它为c p u 和其它的系统硬件提供接口,并 为系统的其他部分提供了适度的抽象。 2 w i n d o w s n t 内核 w i n d o w s n t 的内核为系统的其它部分提供最基础的功能,是w i n d o w s n t 执 行体强大功能的基石。所有n t 执行体的服务都是建立在n t 核心之上。内核的主 要功能是进程、线程调度,通过自旋锁对多处理器进行同步,并提供中断控制和 派遣,及其它类似的重要功能。 w i n d o w s n t 的内核执行在最高的特权之上,它被设计为可以并行在多个处理 器上。内核在调度线程的时候不能被其它的线程所打断,不允许线程在被调度时 8 第二章相关背景知识 切换。不过内核可以被更高的中断请求级( i r q l ) 所打断。 3 w i n d o w s n t 执行体 w i n d o w s n t 执行体的主要组件包含了对象管理器,虚存管理器,进程管理器 和i o 管理器,安全引用监视器,本地过程调用,配置管理器和缓存管理器。 文件系统,设备驱动和属于i o 子系统的一部分中间层驱动也是w i n d o ws _ n t 执行体的一部分。 2 2 晰n d o w s n t 内核的重要机制 w i n d o w s 是一个支持多处理,支持多线程的系统,为了实现这个设计目标, w i n d o w s 采用了一系列的机制【1 2 】。而驱动程序工作在核心态,时刻都要受到这些 机制的制约或是影响,了解这些机制的运作原理是非常必要的。 2 2 1 内核中的同步机制 笔者将w i n d o w s 内核中的同步机制划分为针对驱动程序和针对i r p 消息对象 两部分。驱动程序间的同步主要是为了避免关键资源被相互竞争的驱动程序恶性 抢占,导致系统死锁;i r p 消息对象的同步是针对驱动程序内部的派遣函数和中断 服务例程而言的,避免多个i r p 同时访问同一个驱动程序,造成数据冲突和重入 的现象。 驱动程序是以线程的方式存在于名为s y s t e m 的进程中,各个线程之问的关 系是异步的,即每个线程的运行不受到其它线程的影响。所谓的驱动程序间同步, 就是使这些并发的线程次序化、顺序化的执行。 在w i n d o w s 系统中,同步主要依靠中断请求级,自旋琐,同步对象等方式实 现。中断服务例程( i s r ) 和d p c 例程在涉及硬件的驱动程序中会用到,虽然文 件系统的过滤驱动一般不会使用他们。 一中断请求级 中断是一种处理器提供的机制,当一个特定的事件发生时( 比如定时器事件, 或者是一个异常、系统调用等等) ,当前的线程上下文( 线程上下文是指线程中低 2 g b 地址的内容) 会被捕获。此后中断处理程序介入,先将线程上下文以特定的 格式进行保存,然后根据中断条件跳转到指定的中断处理函数中去。中断处理函 数的地址一般是固定不变的。 9 电子科技大学硕士学位论文 中断请求( 瓜q ) 一般有两种,一种是外部中断,也就是硬件产生的中断,另 种是软件中断。 w i n d o w s 对中断的概念进行了扩展,提出一个中断请求级( i r q l ) 的概念。 其中规定了3 2 个请求的级别,其中毗级为软件中断,3 3 1 级为硬件中断。( 如 图所示) ,其中数字越高,中断优先级越高。低级别中断不能打断高级别的中断, 当然也有例外( 比如一个低优先级的线程拥有某个关键资源并且正在运行,那么 申请这个关键资源的高优先级线程就不能对其进行打断,而必须等待) 。 h i g h - l e v e l 雾 p o w e r - - l e v e l 雾 i m _ l e v e l 雾 c l o c k _ l e v e l p r o f i l e _ l e v e l 雾 d i s p a t c hl e v e l 雾 a p c 上e v e l p a s s i v e _ l e v e l 3 l 3 0 2 9 2 8 图2 - 2 中断请求级 现代的个人电脑一般使用高级可编程控制器( a p i c ) ,其将硬件的中断请求扩 展到了2 4 个,并将2 4 个硬件中断映射到d i s p a t c hl e v e l 到p r o f i l el e v e l 之间,不同硬件的中断处理程序运行在不同的中断优先级中。硬件的i r q l 称为设 备中断请求级,简称d i r q l 。w i n d o w s 大部分时间都运行在软件中断级别中。当 设备中断来临时,操作系统提升中断请求级到d i r q l 级别,并运行相应的中断处 理函数。当中断处理函数完成后,操作系统将中断请求级降到原来的级别。 二自旋锁 申请 资源 图2 3 竞争自旋锁 1 0 第二章相关背景知识 自旋锁的设计目的是:在短期间内进行轻量级的锁定。一个被争用的自旋锁 使得申请它的线程在等待锁重新可用的期间进行自旋( 特别浪费处理器时间) ,所以 自旋锁不应该被持有时间过长。如果需要长时间锁定的话,最好使用信号量或是其 他的同步对象。如上图所示,如果自旋锁已经被锁住,那么申请这个自旋锁的线 程b 会不停的询问是否可以获取自旋锁, 的这个过程中,也就是所谓的自旋状态。 三同步对象 一直处于忙循环旋转等待锁重新可用 自旋锁因此得名。 内核模式下有多种同步对象,这些同步对象与用户态下的同步对象有相似之 处。同步对象包括事件,互斥体,信号灯,定时器等等。 事件( e v e n t ) 是一种最典型的同步对象。事件有两种状态,激活态和未激活 态,其作用就是对线程进行同步。当我们在线程a 中初始化一个事件的时候,事 件处于未激发状态,然后线程a 把事件传递个线程b ,并进入了等待。之后的某 一时刻,当线程b 激活这个事件出现,则事件的状态被设定为被激发态,并被传 递给线程a ,线程a 得以继续执行。 四互斥体 互斥体也是一种常用的同步对象。互斥体可以避免多个线程争夺同一个资源。 比如在多线程环境中,只有一个线程能够占用互斥体。如果一个线程不释放互斥 体,那么申请这个互斥体的线程都必须睡眠并等待。与同步对象类似,互斥体也 有激发态和未激发态。但与同步对象不同的是,互斥体具有递归获取属性,也就 是说得到互斥体的线程还可以再次的获得这个互斥体。 五信号灯 信号灯也是内核中的一种同步对象,和互斥体非常类似,也分为激活态和未 激活态。但与互斥体不同的是,信号灯事实上就是操作系统中的信号量机制,一 个信号灯可以包含多个信号,只有等信号全部被占用,才能导致信号灯状态的改 变。 六定时器 定时器用于记录流逝的时间。如果线程希望在经过特定的时间后执行某种操 作,就应当使用定时器。定时器也有两种状态:激活态和未激活态。初始状态的 定时器是未激活的,到了设定的时间时,定时器被激活,而等待定时器的线程也 被激活,进入执行【1 3 】。 需要注意,上述所有同步对象必须存在于驱动程序的非分页内存中,否则, 一旦同步对象被换出内存,会导致同步异常和其它的系统异常。 电子科技大学硕士学位论文 七中断服务例程( i s r ) 当硬件设备的中断信号发生后,i r q l 会提升到相应的d i r q l ( 硬件中断请求 级) ,而操作系统也会调用相应的中断服务例程。要在驱动程序中适用中断服务例 程,必须首先获得中断对象。该中断对象是一个名为i n t e r r u p t 的数据结构。 内核函数i o c o n n e c t i n t e r r u p t 将中断对象和i s r 相联系,这样当中断信号到来时, 驱动程序就会跳转到中断对象指向的i s r 中1 1 4 】。 中断服务例程运行在d i r q l 级别,高于普通线程的p a s s i v e 或是d i s p a t c h 优先级。而自旋锁只能对d i s p a t c hl e v e l 以下的程序进行同步,所以自旋锁无 法对中断服务例程进行同步。并且,驱动程序中的派遣函数,f a s ti o 等例程会 被i s r 随时打断。如果不想被i s r 打断,就需要在这些例程执行的时候提升i r q l 到比较高的d i r q l 级别。但这会造成系统的其它硬件无法及时响应,需要仔细权 衡利弊。 八延迟过程调用例程( d p c ) d p c 一般和中断服务例程配合使用,中断服务例程处于很高的d i r q l 级别, 会打断正在运行的线程。而d p c 运行在d i s p a t c hl e v e l ,因此,一般将不紧 要的代码放在d p c 中,而需要及时进行处理的代码放在i s r 中。而i s r 的运行会 占用c p u ,导致其它硬件无法响应,因此i s r 中的代码要尽量精简【1 5 1 。 在i s r 中,我们可以将d p c 插入一个内部队列,这样当i r q l 从高级别的 d i r q l 降低到d i s p a t c hl e v e l 时,d p c 弹出队列进行响应,并且优先级比较 低,也不对其它硬件造成打断。总的来说,i s r 中代码要尽量简单,如果需要复杂 功能,就要将代码放到d p c 中,在i s r 里调用这个d p c 即可。 2 2 2i r p 的同步 对设备的操作最终都会转化为i r p 请求,而i r p 一般都是由操作系统异步发 送的。异步处理i r p 有助于提高系统的效率,但有时候异步处理会导致逻辑上的 错误,这时候就需要对异步的i r p 进行同步化。将i r p 同步化有多种方法,不过 主要的实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/SSBME 2-2025家用LED紫外治疗设备
- T/SATA 081-2024食品中二氧化硫残留量的测定 间断化学分析法
- T/CSWSL 044-2025猪舍吊装轨道巡检机器人
- T/CI 080-2023富有机硒脐橙生产技术规程
- T/CSPSTC 185-2025深埋地下管道数字化综合探测技术规程
- T/SSX 012-2024发酵人参粉
- 2025-2026学年辽宁省营口市初中数学九年级期末上册高分快速提分卷详细参考解析
- Photoshop CS2 试题及详细参考答案
- 2025-2026学年四川省广元市初中数学八年级期末下册点睛提升黑金试题(附答案)
- 废旧电缆回收拆解操作规程
- 2026年学校德育体系实施方案-五维融通,三阶递进
- 山东省菏泽市菏泽经济技术开发区2026-2027学年七年级上学期10月阶段检测语文试题(含答案)
- 2026年广东省公需课《加快培育发展新质生产力》考试答案
- 2026年农田废弃物的资源化利用路径
- 2026年公路水运工程助理试验检测师练习题附答案
- 2026年成人高考专升本政治真题试卷及完整答案解析(官方标准)
- 中远海运集团招聘笔试题目及答案
- 2026中国电信历年考试笔试题库及答案
- 护理副高职称评审答辩自我介绍模板
- 教学能力大赛-教学实施报告《大学英语2c》
- 法律制度金融预期与会计准则
评论
0/150
提交评论