




已阅读5页,还剩60页未读, 继续免费阅读
(计算机应用技术专业论文)嵌入式linux实时化及其测试方法的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工程大学硕士学位论文 摘要 随着嵌入式系统的广泛应用,人们对嵌入式操作系统的需求也越来越大。 相比于传统的商业嵌入式操作系统,l j n o x 具有免费、源代码开放、并且功 能强大等优点。因此,越来越多的组织和个人将l i n u x 应用于嵌入式领域。 但是要更好地在嵌入式领域发挥作用,l i n u x 仍然需要在体积、实时性等方 面作进一步地改进。 目前,主要存在双内核和直接修改内核两种l i n u x 实时化方法。本文主 要研究双内核r t a i 实时方案。首先,本文阐述了l i n u x 实时化方法的相关理 论和技术,包括r t o s 和l i n u x 内核的一些基本概念,以及l i n u x 实时性问题 的原因。然后本文重点论述了基于实时硬件抽象层( r t h a l ) 的r t a i 方案的 体系结构、原理和关键技术,并在实践经验的基础上,总结了使用r t a i 构建 实时l j n u x 的步骤和注意事项。接下来,本文探讨了作为r t h a l 未来替代的 a d e o s ( a d a p t i v ed o m a i ne n v i r o n m e n tf o ro p e r a t i n gs y s t e m s ) 技术,并 在实际测试a d e o s 和r t h a l 的基础上,对二者进行了多方面的比较。 另外,通过实践和研究发现,目前并不存在一种通用程序既能精确测试 经双内核法改造后的l i n u x 的实时性又能精确测试标准l i n u x 的实时性。因 此,本文在利用l i n u x 模块编程的基础上,设计并实现了一种能够测量l i n u x 定时器抖动的通用程序。最后,本文利用该程序对r t a i 和标准l i n u x 进行了 测试,并通过结果证明了该测试程序的正确性。 关键词:嵌入式系统;实时;l i n u x ;r t a i ;测试 哈尔滨工程大学硕士学位论文 a b s t r a c t a se m b e d d e ds y s t e m sa r ew i d e l ya p p l i e d ,t h ed e m a n df o re m b e d d e d o p e r a t i n gs y s t e m s i s g e t t i n gb i g g e r c o m p a r e dt ot r a d i t i o n a lc o m m e r c i a l e m b e d d e do p e r a t i n gs y s t e m s ,l i n u xi sf r e e ,o p e n - s o u r c e ,a n dp o w e r f u l t h u s , m o r ea n dm o r eo r g a n i z a t i o n sa n dp e r s o n sa r ea p p l y i n gl i n u xi n t oe m b e d d e df i e l d h o w e v e r , t ob em o r ei n f l u e n t i a l i nt h i sf i e l d l i n u xs t i l lh a st oi m p r o v ei ns o m e a s p e c t ss u c ha si t sc o m p a c t n e s sa n dr e a l - t i m ep e r f o i t n f l r l c e a tp r e s e n t ,t h e r ea r et w om a i nm e t h o d st om a k el i n u xr e a l t i m e :d u a lk e r n e l o rd i r e c tm o d i f i c a t i o no fl i n u xk e m e l a n dt h i sp a p e rp u tt h ef o c u so nt h e d u a l k e r n e lr t a ir e a l - t i m es o l u t i o n a tf i r s t ,t h i sp a p e ri n t r o d u c e ds o m et h e o r i e s a n dt e c h n o l o g i e sr e l a t e dt ot h e m e t h o d o l o g i e st oi m p r o v el i n u xr e a l t i m e p e r f o r m a n c e ,i n c l u d i n gs o m eb a s i cc o n c e p t so fr t o sa n dl i n u xk e r n e l ,a n dt h e c a u s e so fl i n u xr e a l t i m ep r o b l e m l a t e rt h i sp a p e rp u tt h ee m p h a s i so ns t a t i n g t h ea r c h i t e c t u r e ,r a t i o n a l ea n dk e yt e c h n i q u e so fr t h a l b a s e dr t a i a n db a s e d o np r a c t i c e s ,t h es t e p sa n dn o t e so nh o wt ob u i l dr e a l - t i m el i n u xw i t hr t a lw e r e s u m m a r i z e d n e x t ,t h i sp a p e rd i s c u s s e dt h ea d a p t i v ed o m a i ne n v i r o n m e n tf o r o p e r a t i n gs y s t e m s ( a d e o s ) ,w h i c hi s t o r e p l a c et h er e a lt i m eh a r d w a r e a p p l i c a t i o nl a y e r ( r t h a l ) ,a n db a s e do nt h et e s to fa d e o sa n dr t h a l ,t h i s p a p e rc o m p a r e dt h e mi ns e v e r a la s p e c t s m o r e o v e r , t h r o u g hp r a c t i c ea n ds t u d y , t h i sp a p e rf o u n dt h a tt h e r ea r en o g e n e r a lp r o g r a m st h a tc a nn o to n l yt e s te x a c t l yt h er e a l - t i m ep e r f o r m a n c eo fl i n u x i m p r o v e db yd u a l - k e r n e lm e t h o d ,b u ta l s ot h a to fs t a n d a r dl i n u x ,t h u s ,t h i sp a p e r d e s i g n e da n di m p l e m e n t e dag e n e r a lp r o g r a mt om e a s u r el i n u xt i m e rj i t t e rb a s e d o nl i n u xm o d u l ep r o g r a m m i n g a n di nt h ee n d ,t h i sp a p e rt e s t e dr t a ia n d s t a n d a r dl i n u x ,a n dp r o v e dt h ec o r r e c t n e s so f t h ep r o g r a mb yr e s u l t s k e y w o r d s :e m b e d d e ds y s t e m ;r e a l - t i m e ;l i n u x ;r t a i ;t e s t 哈尔滨工程大学 学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的指导 下,由作者本人独立完成的。有关观点、方法、数据和文 献的引用已在文中指出,并与参考文献相对应。除文中已 注明引用的内容外,本论文不包含任何其他个人或集体已 经公开发表的作品成果。对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到 本声明的法律结果由本人承担。 作者( 签字) :? 每坚 日期:础年? 月日 哈尔滨工程人学硕士学位论文 第1 章绪论 1 1 课题的来源、目的及意义 随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术 和软件技术为核心的嵌入式系统已经成为当前研究和应用的热点。通信、计 算机、消费电子技术( 3 c ) 合一的趋势正在逐步形成。无所不在的网络和无 所不在的计算( e v e r y t h i n gc o n n e c t i n g ,e v e r y w h e r ec o m p u t i n g ) 正在将人 类带入一个崭新的信息社会。 同时,以开放源代码为基础的嵌入式l i n u x 研发热潮正在蓬勃兴起,并 且占据了很大的市场份额。除了一些传统的l i n u x 公司( 如r e d h a t 、 m o n t a v i s t a 等) 正在从事嵌入式l i n u x 的开发和应用之外,i b m 、i n t e l 、 m o t o r o l a 等著名企业也开始进行嵌入式l i n u x 的研究。虽然前景不错,但就 目前情况而言,嵌入式l i n u x 的研究成果与市场的真币要求仍有段羔距, 要开发出真正成熟的嵌入式l i n u x 系统,还需要从体积、实时性、内核结构 等方面继续进行不懈的努力。 对我国的软件业来说,研究嵌入式l i n u x 具有重要意义。一方面,由于 嵌入式应用领域没有像微软这样的垄断性厂商,所以嵌入式l i n u x 给我国软 件业摆脱低水平的二次开发,进行操作系统的自主开发带来了机遇。另一方 面,l i n u x 的开源性以及开源世界里丰富的软件资源为我们奠定了峰实的台 阶,使我们能够较快的赶上世界先进水平。 本课题来源于哈尔滨工程大学基础研究基金项目基于深度网络的安全 嵌入式操作系统研究。 1 2 国内外研究现状 目前国内外对标准l i n u x 或者嵌入式l i n u x 进行实时化的方法主要有采 用双内核方法和直接修改内核的方法“】。 双内核方法是指硬件平台上增加一个实时内核,架空标准l i n u x 内核, 1 哈尔滨丁程大学硕十学位论文 实现双内核,提高时钟精度,如现在流行的r t l i n u x 和r t a i 系统该方法保 证了l i n u x 系统的完整性、稳定性和对原有l i n u x 资源的充分利用,改动且 最小,但实时调度机制简单,不能满足复杂实时应用的需要,在协调双内核 工作时,寻求一种合理的实时和非实时的混合调度机制是亟待解决的问题。 直接修改内核法是指直接修改l i n u x 内核源码,实现实时扩展,如在内 核代码中增加抢占点,从而减少内核抢占延迟等。代表系统如m o n t a v i s t a l i n u x 、k u r t 、t i m e s y sl i n u x 、r e d - l i n u x 等。 现介绍几种主要的l i n u x 实时化方案如下: ( 1 ) r t l i n u x r t l i n u x 是新墨西哥科技大学( n e wm e x i c oi n s t i t u t eo ft e c h n o l o g y ) 的研究成果。它的基本思想是,为了在l i n u x 系统中提供对于硬实时的支持, 它实现了一个微内核的小的实时操作系统( 也称之为r t l i n u x 的实时子系 统) ,而将普通l i n u x 系统作为一个该操作系统中的一个低优先级的任务来运 行一1 。另外普通l i n u x 系统中的任务可以通过f i f o 和实时任务进行通信。 r t l i n u x 的框架如图3 4 所示。 l _ m u x 应用程序 tt 寨统调用i f i f o 昔通l 椭“内核l _ + 1 实时任务实时任务 r t - l i n u x 窭时内核 硬件 图3 4r t l i n u x 的结构 ( 2 ) r t a i 意大利d i p a r t i m e n t od ii n g e g n e r i aa e r o s p a z i a l e p o l i t e c n i c od i m i l a n o ( d i a p m ) 的r t a i ( r e a l t i m ea p p l i c a t i o ni n t e r f a c e ) 源于r t l i n u x , 它在设计思想上和r t l i n u x 基本相同。它当初设计目的是为了解决r t l i n u x 难于在不同l i n u x 版本之间难于移植的问题,为此,r t a i 在l i n u x 上定义了 一个实时硬件抽象层,实时任务通过这个抽象层提供的接口和l i n u x 系统进 行交互,这样在给l i n u x 内核中增加实时支持时可以尽可能少地修改l i n u x 哈尔滨丁程大学硕士学位论文 的内核源代码n ,。后续章节有更详细的介绍。 k u r t l i n u x 由k a n s a s 大学开发,它可以提供微秒级的实时精度。不同 于r t l i n u x 单独实现个实时内核的做法,k u r t l i n u x 是在通用l i n u x 系统 的基础上实现的,它也是第一个可以使用普通l i n u x 系统调用的基于l if l u x 的实时系统。 k u r t l i n u x 将系统分为三种状态:正常态、实时态和混合态,在正常态 时它采用普通的l i n u x 的调度策略,在实时态只运行实时任务,在混合态实 时和非实时任务都可以执行;实时态可以用于对于实时性要求比较严格的情 况。k u r t l i n u x 借鉴u t i m e 所使用的方法提高了l i n u x 系统中的时钟精度。 对于实时任务的调度,k u r t - l i n u x 采用基于时间( t d ) 的静态的实时c p u 调 度算法。k u r t l in u x 相对于r t l i n u x 的一个优点就是可以使用l i n u x 系统自 身的系统调用。 ( 4 ) r e d l i n u x r e d l i n u x 是加州大学i r v i n e 分校开发的实时l i n u x 系统,它将对实时 调度的支持和l i n u x 很好地实现在同一个操作系统内核中”i 。它同时支持三种 类型的调度算法,即:t i m e d r i v e n 、p r i o r i t y d i r v e n 、s h a r e d r i y e n 。 为了提高系统的调度粒度,r e d l i n u x 从r t l i n u x 那儿借鉴了软件模拟 中断管理器的机制,并且提高了时钟中断频率。另外为了解决l i n u x 进程在 内核态不能被抢占的问题,r e d l i n u x 在l i n u x 内核的很多函数中插入了抢 占点原语,使得进程在内核态时,也可以在一定程度上被抢占。通过这种方 法提高了内核的实时特性。r e d l i n u x 的设计目标就是提供一个可以支持各 种调度算法的通用的调度框架。 ( 5 ) m o n t a v i s t al i n u x m o n t a v i s t al i n u x 是m o n t a v i s t a 公司所发布的一款主要面向各种嵌入 式应用的l i n u x 发布。m o n t a v i s t al i n u x 最大的贡献在于:为了解决l i n u x 在内核态不可被抢占的问题,它开发了一种抢占式的内核,有人认为它的这 种方法充其量也就是一种能够被抢占的内核。其基本思想就是让调度程序获 得更多的执行机会,从而减少了从一个事件发生到调度程序被执行的时间间 隔。可抢占内核的补丁包修改了s p i n l o c k 的宏定义以及中断返回处理代码, 哈尔滨工程大学硕十学位论文 这样在当前进程可以被“安全”地抢占并且有一个重薪调度的请求时,系统 就会调用调度程序进行进程调度。 1 3 论文的主要工作 本文的主要工作包括: ( 1 ) 学习和了解嵌入式l i f l u x 实时化方法的相关理论,其中包括实时操作 系统的一些内容如r t o s 的基本组成、经典的调度算法等,还有就是研究l i n u x 内核中与实时性相关的一些方面如内核结构、时钟机制等。 ( 2 ) 研究r t a i 双内核实时方案,包括基于r t h a l 和基于a d e o s 两种r t a i 方案的体系结构、原理等。 ( 3 ) 应用r t a i 实时方案构建实时l i n u x ,包括基于r t h a l 和基于a d e o s 两种r t a i 方案的具体实施,然后使用r t a i t e s t s u i t e 测试程序对它们进行 测试,并在分析测试结果的基础上,对二者进行多方面的比较。 ( 4 ) 在分析现有l i n u x 实时性测试程序不足的基础上,提出一种测试程序 的设计和实现。并利用该程序对r t a i 和标准l i n u x 进行测试和分析。 1 4 论文的章节安排 本文的章节安排如下: 第一章是绪论,介绍了课题的来源、目的及意义,以及国内外研究现状、 论文工作内容和章节安排。 第二章论述实时操作系统的组成、调度算法以及它的评价手段。 第三章论述l i n u x 内核的结构、时钟机制和进程调度,然后指出其实时 性问题的原因。 第四章是本文的重点之一,较详细地探讨了基于r t h a l 的r t a i 技术的各 个方面包括体系结构、实时硬件抽象层、细粒度定时器等;然后在实践经验 的基础上,总结了使用r t a i 构建实时l i n u x 的步骤和注意事项;最后,在已 有理论的基础上,分析了r t a i 一3 0 的部分源代码。 第五章较详细地了a d e o s 的来历、关键技术以及与r t a i 的关系,并使用 4 哈尔滨上程人学硕士学位论文 r t a i t e s t s u i t e 测试了a d e o s 和r t h a l ,然后分析了结果,对二者做了多方 面的比较。 第六章也是本文的重点,该章阐述了一种l i n u x 实时测试程序的设计与 实现。其中,先是阐述该程序的必要性,然后阐述原理、设计思想和实现细 节。最后应用该程序对r t a i 和标准l i n u x 进行了测试,并分析了结果。 结论部分对本文的工作进行了总结,同时指出了还有待进一步研究的一 些问题。 哈尔滨工程大学硕士学位论文 2 1r t o s 的组成 第2 章实时操作系统 实时操作系统( r t o s ,r e a l l i 1 eo p e r a t i n gs y s t e r n ) 是一个程序,它 按时序方式调度执行、管理系统资源,并为开发应用代码提供致的基础”1 。 一个r t o s 可以是各种模块的组合,包括内核、文件系统、网络协议栈以及应 用需要的其他部件( 如图2 i 所示) 。对于大多数r t o s 的内核而言,一般都 包括以下部件: ( 1 ) 调度器( s c h e d u l e r ) 包含在每个r t o s 中,本质上是一组算法,决 定何时执行哪个任务。常见的调度算法包括时间轮换( r o u n d r o b i n ) 和抢占 ( p r e e m p t i r e ) 调度。 ( 2 ) 对象( o b j e c t ) 是特殊的内核部件,帮助开发者创建实时嵌入式系 统应用。常见的内核对象包括任务、信号灯和消息队列。 ( 3 ) 服务( s e r v i c e ) 是内核在对象上执行的操作或者其他通用操作, 如计时、中断处理和资源管理。 图2 1r t o s 的高层视图 哈尔滨工程大学硕士学位论文 图2 2 列举了这些部件,但是该图是非常简化的,并非所有的r t o s 内核 和这早的对象、调度算法和服务精确地一致。 图2 2r t o s 内核中的公共部件 2 2r t o s 的调度算法 对于r t o s 来说,多任务经常同时运行。r t o s 会为每个任务负责分配可 得到的资源( c p u 时间、内存等等) 。而r t o s 决定如何在任务间分配c p u 资源 的过程称为“调度”。 r t o s 喜欢使用简单的调度算法,因为这将得到一个小而确定的运算时间 数,并且只需要很少的内存。所以它主张在算法的简洁性和最优性之间进行 折中。虽然通用操作系统( g p o s ,g e n e r a lp u r p o s eo p e r a t i n gs y s t e m ) 和 r t o s 的调度策略使用相同的基本原理,但它们的侧重点不同。g p o s 注重最大 平均吞吐量,而r t o s 注重确定性行为,而且往往占用更少的内存。 如今,大多数r t o s 内核支持两种普遍的调度算法:基于优先级的抢占调 度和时间轮换调度“1 。大多数实时内核缺省使用基于优先级的抢占调度算法。 图2 3 描述了这种类型的调度:在任何时候,运行的任务都是所有就绪任务 中优先级最高的任务。 哈尔滨工程大学硕士学位论文 局l 蒜;描一巨匦圈+ 一一一一一_ 1 任务完成 磬i抢占 1 塑! 塑i - 一一一一一一一一 任务完成 忧; i, 蠹l、e 亘垂囵匝量互 一7 7 时间 图2 3 基于优先级的抢占调度 根据不同的优先级分配方法,基于优先级的调度算法又可以分为:静态 优先级调度算法( 如r m 算法) 、动态优先级调度算法( 如e d f 算法) 。 2 2 1 速率单调( r a t em o n o t o nic ) 调度算法 r m 调度算法是单处理器静态优先级可抢占调度算法,使研究和应用最为 广泛的实时调度算法n ,。为了简化算法的分析过程,r m 对调度环境作以下假 设: ( 1 ) 任务总可以被抢占,抢占的代价可以忽略不计。 ( 2 ) 只考虑任务的处理器需求、内存、i l o 和其他资源请求忽略不计。 ( 3 ) 任务问相互独立,不存在先后关系。 ( 4 ) 任务集中所有任务都是周期任务。 ( 5 ) 任务的相对时限等于周期。 上述假设极大地简化了r m 算法的分析。在r m 调度算法中,任务的周期 和优先级成反比。关于r m 调度的可调度条件,有以下定理: 如果任务集的总资源利用率不大于n ( 2 “一1 ) ,r m 将调度所有任务满足其 时限要求,其中n 是被调度任务的数目。即对于任务集s t ,t 一,t 。 ,如果 满足公式( 2 1 ) ,则该任务可以被r m 调度。 一一一 ! 墨+ ! :羔+ + ! 鱼兰n ( 2 1 m 一1 ) ( 2 1 ) p ler 式( 2 一1 ) 中,c ,和p ,分别是指任务t ,的执行时间和周期。而c :p 是指任 哈尔滨工程大学硕士学位论文 务t 。的资源利用率。 值得注意的是,上述条件是充分非必要条件,当总资源利用率高于 n ( 2 “”一1 ) 时,实时任务集仍旧可能被r m 算法调度。 r m 调度算法的一个重要特征是可以分析系统的可行性( f e a s i b i l i t y ) 。 采用r m ,结构设计人员可以收集系统的情况,然后分析系统的可行性,从而 获得“调度程序j f 是如此工作”或者是“固定优先级调度程序不能进行这样 的调度”等分析结果。 r m 算法是最优静态优先级算法。也就是说,对于某个任务集,如果任意 一个静态优先级调度算法能够调度该任务集,r m 调度算法也能调度该任务 集。但是,上述介绍只是r m 的基本情况,而且只考虑了符合假设的理想情况。 在实际的工程应用中,还会遇到很多实际情况不符合假设。放宽对任务的限 制条件,是目前实时调度算法研究的热点问题。目前该领域已有大量的研究 成果,更多内容可以参考文献。,。 2 2 2 最早时限优先调度( e a r i yd e a d i in ef ir s t ) 算法 根据最早时限优先调度( e d f ) 算法,处理器将分配给当前距离绝对时限最 近的任务。e d f 算法是动念调度算法,任务的优先级不是固定的,而是根据 各个任务距离其绝对时限的接近程度决定“。 在讨论e d f 算法的过程中,除了任务可以是非周期任务外,将沿用r m 算法的假设。即: ( i ) 任务总可以被抢占,抢占的代价可以忽略不计。 ( 2 ) 只考虑任务的处理器需求、内存、i o 和其他资源请求忽略不计。 ( 3 ) 任务间相互独立,不存在先后关系。 关于某任务集是否可以用e d f 算法调度,有以下两个定理。 ( 1 ) e d f 算法是单处理器最优调度算法。也就是说,如果e d f 算法不能调 度某任务集,则其他算法也不能调度该任务集。 ( 2 ) 如果任务均为周期任务,相对时限等于周期,并且任务集的总资源利 用率不大于1 ,则任务集可由e d f 算法调度。 e d f 算法同样是实时调度中广泛应用的算法。而且它也同样存在假设条 件太苛刻的问题。放宽对任务集的假设条件,是实时调度算法的重要发展方 哈尔滨工程大学硕士学位论文 向。 2 2 3 优先级反转问题及其解决方法 当采用基于优先级的可抢占式调度策略时,系统为每一个任务分配一个 优先权,调度程序保证当前运行的进程是优先权最高的进程。但是,有时候 会出现种比较奇怪的现象:由于多进程共享资源,具有最高优先权的进程 被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行, 这就是所谓的优先级反转( p r i o r i t yi n v e r s i o n ) “。优先级反转问题赢接影 响系统的实时响应能力,甚至会导致系统的死锁以至崩溃。所以,在实现实 时调度算法的同时,要避免优先级反转问题的出现。 图2 4 有界优先级反转 出现优先级反转的原因是较高优先级任务和共享一个较低优先级任务所 占有的资源。当较低优先级任务已经锁住资源时,即使较高优先级的任务有 资格运行,它也必须等待。图2 4 描述了这样个过程。优先级反转是由不 同优先级任务之间的资源同步引起的。虽然它不可避免,但是可以通过一些 资源访问控制协议将其降到最低。这些协议包括优先级继承协议( p r i o r i t y i n h e r i t a n c ep r o t o c 0 1 ) 、优先级置顶协议( p r i o r i t yc e i l i n gp r o t o c 0 1 ) 等。 详细内容参见文献 6 第1 6 4 节。 2 3r t o s i j 勺评价 对于r t o s 而言,评判实时性优劣的标准有其特殊的地方,主要是其对外 1 0 哈尔滨工程大学硕士学位论文 部实时事件实时响应特性和操作系统本自身行为的确定性。考核操作系统的 实时性能可以从任务调度机制、调度算法、中断处理方式和内存管理机制等 几个主要影响实时性能的方面考虑。在实际测试r t o s 实时性能的时候,人们 常常从两类基准( b e n c h m a r k ) 入手进行测试。它们包括:测量o s 确定性的 基准,测量某些特定且重要的操作延迟时间的基准m ,具体参见表2 1 。表 2 1 巾的前3 个基准被设计用来测试操作系统确定性,而其他的用来测量某 些特定且重要的操作延迟时间。本文的第6 章从定时器抖动这一基准进行了 测试和分析。 表2 1 实时测量基准 基准描述所测试的方面 参数 定时器抖动创建一个周期线程,测测量o s 响应时间定时器周期: 量期望和实际结束时间( 1 1 0 ,1 0 0 m s ) 之间的偏差 响应执行固定的处理负载,确定线程是雨能够以确处理类型:( 添加拷贝, 运行多次,测量执行时定的方式响应讹e t s t o n e ) 间 b i n l j r e调用t o d 时钟,测量两测量最大内核无 次调用的时间间隔b l o c k i n g 时间 同步测量线程到线程或者进测量线程间和进程问上信号量类型:( p o s i x 有 程到进程同步的延迟时下文切换时间名无名信号量, 问p t h r e a d 互斥量等) :进 程到进程或者线程到线 程 消息传递 测量从线程到线程或者测量进程间和线程间可数据b u f f e r 人小;进程 从进程到进程发送数据能的数据吞吐量 到进程或者线程到线程 的延迟时间 实时信号 测量两个进程问实时信测量p o s i x 实时信号的 无 号的延迟时间 延迟时间 哈尔滨上程人学硕士学位论文 2 4 本章小结 本章主要论述实时操作系统的一些关键概念和相关理论,为后续的研究 作理论铺垫。r t o s 一般由各种模块组成,包括内核、文件系统、网络协议栈 以及应用需要的其他部件。和6 p o s 不同,r t o s 注重确定性行为,而g p o s 注 重最大平均吞吐量。因而r t o s 喜欢使用简单的调度算法,包括:基于优先级 的抢占调度算法和时间轮换调度算法。其中,基于静态优先级的r m 算法和基 于动态优先级的如e d f 算法是经常用到的具体算法。由于不同优先级任务之 间的资源同步引起的优先级反转问题,在r t o s 中可以通过优先级继承协议和 优先级置顶协议来解决。实际测试r t o s 实时性能时要经常考虑几个基准,它 们包括:定时器抖动、响应、b i n t i m e 、同步、消息传递、实时信号。 1 2 哈尔滨工程大学硕士学位论文 第3 章l in u x 的实时性能分析 3 1l in u 的内核结构 l i n u x 操作系统是类u n i x 操作系统,所以l i n u x 操作系统的架构与u n i x 是一致的,可被看作是u n i x 的兼容操作系统m ,。和u n ix 样,l i n u x 操作系 统的架构有两大特点:用户态内核态模式、宏内核结构。 l i n u x 所采用的宏内核( m o n o l i t h i c k e r n e l ) 结构是与微内核 ( m i c r o k e r n e l ) 结构相对应的概念。传统的宏内核由于内核庞大,一般设 计成纵向分层的结构,与进程运行相关的各个管理和支撑模块以分层的方式 存在于内核空间,而微内核则不同,采用了横向分层的结构,并且与进程运 行相关的各个管理和支撑模块以用户进程的方式横向分布于用户空间,图 3 1 显示了这种不同。 用户 空间 内核 空间 熊孙一i 曩 文件系萱;i 进程间遁信 i ,o 和设备管理 内存管理 基本进程管理 硬件层 设文进 内 用用 备 件 程 存户户 驱服服管程程 动务务理序序 程器器 序 微内核 硬件层 图3 1 宏内核结构( 左) 与微内核结构( 右) 微内核结构相对于传统的宏内核结构有组成灵活、配置方便和便于调试 的优点,被广泛的应用于嵌入式实时操作系统的设计。l i n u x 操作系统在进 行内核设计时引入了可卸载模块管理机制,因而l i n u x 虽然是宏内核结构, 但在内核中的各个模块是采用与微内核相似的水平分层方式的,十分便于修 改和裁减以适用于嵌入式实时系统。 哈尔滨上程大学硕士学位论文 如前所述,c p u 既可以运行在用户态下,也可以运行在内核态下。当一 个程序在用户态下执行时,它不能直接访问内核的程序。然而,当应用程序 在内核态下运行时,这些限制不再有效。每种c p u 模型都为从用户态到内核 态的转换提供了特殊的指令。一个程序执行时,大部分时问都处在用户态下, 只有需要内核所提供的服务时才切换到内核态。当内核满足了用户程序的清 求后,它让程序又回到用户态下。 在单处理器系统中,任何时候只有一个进程在运行,它要么处于用户态, 要么处于内核态。如果进程运行在内核态,处理器就执行一些内核例程。图 3 2 举例说明了用户态和内核态之间的转换。处于用户态的进程1 发出系统 调用之后,进程切换到内核态,系统调用被执行。然后,直到发生定时中断 且调度程序在内核态被激活,进程1 才恢复在用户态下执行。进程切换发生, 进程2 在用户态下开始执行,直到硬件设备发出中断请求。中断的结果是, 进程2 切换到内核态并处理中断“。 图3 2 用户态与内核态之间的转换 3 2lin u x 的b , - i i 中机制 3 2 1 时钟硬件 时间系统是计算机系统非常重要的组成部分,它的主要任务是维持系统 时间并作为进程调度的重要依据。大部分计算机都有两个时钟源,分别称为 r t c ( r e a lt i m ec l o c k ) 和0 s 时钟,r t c 也叫c m o s 时钟,它是一个靠电池供 电的芯片,独立于操作系统,是最底层的时钟数据。o s 时钟产生于定时计 1 4 哈尔滨工程入学硕士学位论文 数芯片,由操作系统控制这个芯片的运作,该时钟的基本单位就是该芯片的 计数周期。在计算机启动阶段操作系统获取r t c 中的时间数据,并以此初始 化0 s 时钟,然后通过计数芯片的向下计数形成o s 时钟。在应用程序中广泛 使用的就是o s 时钟。o s 时钟所用的定时计数芯片最典型是8 2 5 3 8 2 5 4 可编 程芯片,它由两部分组成:计数硬件和通信寄存器。通信寄存器包含有控制 寄存器、状态寄存器、计数初始值寄存器等,这些寄存器在计数硬件和操作 系统之间建立联系,用于二者之间的通信。操作系统通过这些寄存器控制计 数器的工作方式“”。 不同的操作系统,r t c 和o s 时钟的关系是有差别的。二者的关系就是操 作系统的时钟运作机制。l i n u x 的时钟运作机制如图3 3 所示。在系统初始 化阶段,o s 时钟和r t c 之间要通过b i o s 的连接,因为b i o s 中固化了对r t c 进行有关操作的函数。由于操作系统可以直接对r t c 的有关端口进行操作, 所以l i n u x 在内核初始化完成后就不再用b i o s 中的相关程序,这样提高了灵 活性和效率。 图3 3l i n u x 的时钟运作机制 事实上,在单c p u 的8 0 x 8 6 体系结构上,除了上述两种时钟之外,内核 必须显式地与另一种时钟打交道:时间戳计数器( t i m es t a m pc o u n t e r ,t s c ) 。 从p e n t i u m 开始,很多新近的8 0 x 8 6 微处理器都包含一个有6 4 位的时间戳计 哈尔滨工程大学硕士学位论文 数器( t s c ) 的寄存器。该计数器在每个时钟信号到来时加1 。与可编程间隔 定时器传递来的时间相比,l i n u x 利用这个寄存器可以获得更精确的时间测 量。 3 2 2 l in u x 时间系统与时钟中断 o s 时钟是由可编程定时计数器产生的输出脉冲触发中断而产生的,输 出脉冲的周期叫做一个“时钟滴答”( c l o c kt i c k ) 。操作系统根据时钟滴答 可得到以秒或毫秒等为单位的其他时间格式,l i n u x 内核使用全局变量 j i f f i e s 表示系统自启动以来的时钟滴答数。每次时钟中断,j i f f i e s 的值就 加1 ,因此时钟中断的频率决定了时钟滴答的长短。在应用程序中,无论时 间的表示形式如何变化,都是建立在j i f f i e s 的基础之上。 l i n u x 的o s 时钟物理产生原因是可编程定时计数器产生的输出脉冲, 这个脉冲送入c p u ,就引发一个中断请求信号,这就是时钟中断。时钟中断 是特别重要的一个中断,因为整个操作系统的活动都受到它的激励和制约。 操作系统利用时钟中断维持系统时间、促使环境的切换,以保证所有进程共 享c p u ,而且,利用时钟中断进行记账、监督系统工作以及确定未来的调度 优先级等工作。可以说,时钟中断是整个操作系统的脉搏。因此,时钟管理 也是实现l i n u x 硬实时性的重要一环。 每个时钟中断是一次进程调度时机,l i n u x 中,每个时钟中断发生时由 三个函数协同工作,共同完成进程的选择和切换。它们是:s c h e d u l e0 进程 调度函数、d o t i m e r 0 时钟中断服务程序、r e t f r o ms y s c a l l ( ) 系统调用返 回函数n ”。 通过对d o t i m e r 0 分析,可以发现,它主要完成了更新j i f f i e s 值、标 志t i m e r 阴的b o t t o mh a l f 队列为可执行等任务。实质性的中断任务,如递 减进程的时间片、唤醒相关软件定时器等,被推迟到b o t t o mh a l f 处理函数 中完成,这很好的保证了时钟中断的处理效率。 在l i n u x2 4 内核中很好的重新实现了系统定时器,它是l i n u x 时间系 统中的一个重要数据结构,它用链表结构( t i m e r l j s t ) 替换了原有的静态数 组结构,使得定时器机制更加灵活,这为在实时内核中实现细粒度定时器也 提供了方便。 1 6 哈尔滨t 程大学硕士学位论文 3 3k in u x 自c j 进程调度 1 i f l u x 与其他分时系统一样,通过进程问的快速切换使得多个进程实现 并发。进程调度主要关心的是什么时候进行进程切换及选择哪一个进程来运 行。合理地为进程分配c p u 是进程调度程序( 又称调度器) 的主要任务。调 度程序运行时,要在所有可运行状态的进程中选择最值得运行的进程投入运 行。选择进程的依据在每个进程的t a s k s t r u c t 结构中,有以下四项: ( 1 ) p o l i c y :进程的调度策略,用来区分实时进程和普通进程,实时进 程优先于普通进程运行。 ( 2 ) p r i o r i t y :进程( 包括实时和普通) 的静态优先级。 ( 3 ) c o u n t e r :进程剩余的时间片,它的起始值就是p r i o r i t y 的值。由 于c o u n t e r 在计算一个处于可运行状态的进程值得运行的程度g o o d n e s s 时起 重要作用,因此,c o u n t e r 也可以看作是进程的动态优先级。 ( 4 ) r tp r i o r i t y :实时进程的静态优先级,有效优先级范围在l 到9 9 之间。用于实时进程间的选择。普通进程的实时静态优先级必须置为o 。 进程调度程序的绝大部分代码在1 i n u x k e r n e l s c h e d c 中,真正执行 调度的函数是s c h e d u l e 0 。它的目的是在运行队列链表中找到一个进程,然 后把c p u 分配给它。几个内核例程以直接或延迟方式调用它。 调度算法的核心是在运行队列链表的所有进程中确定最佳候选者。l i n u x 用函数g o o d n e s s 0 来衡量一个处于可运行状态的进程值得运行的程度。该函 数综合了以上提到的四项,还结合了一些其他的因素,给每个处于可运行状 态的进程赋予一个权值( w e i g h t ) ,如果w e i g h t = 1 0 0 0 ,则该进程就是一个 实时进程。调度程序以这个权值作为选择进程的唯一依据。 因为l i n u x 中对实时进程和普通进程的调度是不同的,实时进程应该先 于普通进程而运行m ,。l i n u x 根据t a s k s t r u c t 中的p o l i c y 从整体上区分实 时进程和普通进程,p o l i c y 分为以下三种: ( 1 ) s c h e do t h e r :这是普通的用户进程,进程的缺省类型,采用动念优 先调度策略,选择进程的依据主要是根据进程g o o d n e s s 值的大小。这种进 程在运行时,可以被高g o o d n e s s 值的进程抢先。 ( 2 ) s c h e df i f o :先入先出的实时进程。遵守p o s i x i b 标准的f i f o ( 先 1 7 哈尔滨 j 程大学硕十学位论文 入先出) 调度规则。 ( 3 ) s c h e d r r :时问片轮转的实时进程。遵守p o s i x l b 标准的r r ( r o u n d r o b i n ) 调度规则。与先进先出相比,增加了个时间段的概念。 3 4l i n u x 实时性问题的原因 ( 1 ) 内核不可抢占 l i n u x 下有用户态和核心态两种模式,当进程运行在用户态时,很容易 被优先级更高的进程抢占,但当它进入核心态时( 比如通过系统调用f o r k 进入核心态) ,则其他的用户态的进程优先级再高,比如实时进程,也不能抢 占处于核心态的低优先级的普通进程。这是因为l i n u x 内核本身是不可抢占 的。这一算法与硬实时应用中优先级高的就绪任务可以抢占低优先级任务的 特性相矛盾u “。 ( 2 ) 进程调度 l i n u x 作为一个分时系统,它的调度算法的目标是提供一种公平的调度 机制,平衡系统响应时间和吞吐量,保证系统中运行的所有进程都能获得一 段运行时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承包装修木工合同3篇
- 食堂托管管理合同营养健康方面的补充协议3篇
- 绿化合伙人协议书5篇
- 合作合同范本哪里卖
- 委托加工油合同范本
- 合同范本开头怎么写
- 场地出租合同书范文3篇
- 钢材买卖中介合同范本
- 超市商品经销合同范本
- 代理信息咨询合同范本
- 砂石料供应、运输、售后服务方案-1
- BYK色差仪使用方法简介
- 文献检索与科技论文写作入门-第2章
- 无损探伤工(技师、高级技师)技能鉴定考试题库大全-下(多选、判断题汇总)
- 大陆与台湾《建筑抗震设计规范》的比较
- 辩论赛PPT模板模板
- 陶瓷材料基础-陶瓷力学性能-课件
- 开展VIP商务旅客服务的项目策划书
- 广东省封开县金装神梧黄金开采有限公司金矿矿山地质环境保护与土地复垦方案评审意见
- 一年级下册竖式计算题大全
- 大学英语六级(CET-6)试卷模拟真题及答案
评论
0/150
提交评论