《Linux操作系统实时性的分析与改进策略.pdf》由会员分享,可在线阅读,更多相关《Linux操作系统实时性的分析与改进策略.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2 0 0 8 年第6 期N o,6,2 0 0 8九江学院学报J o u r n a lo fj i u j i a n gU n i v e r s i t y(总第1 4 9 期)(S u mN O1 4 9)L i n u x 操作系统实时性的分析与改进策略木徐德陈亚军(西华师范大学计算机学院四川南充6 3 7 0 0 0)摘要:L i n u x 已经成为一个流行的嵌入式操作系统,但在实时应用中有些不足。本文在详细分析L i n u x 实时性的基础上。从双内核结构、定时器的细粒度化、可抢占式内核和实时调度策略等四个方面做了改进,以增强系统的实时性。关键词:嵌入式系统;实时性;实时调
2、度策略中图分类号:T P3 1 6 文献标识码:A 文章编号-1 6 7 3-4 5 8 0(2 0 0 8)0 6-0 0 1 6 一(0 4)嵌入式系统是以应用为中心、以计算机技术为基础,软硬件可裁减,适用应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。众所周知,L i n u x 已经成为一个流行的嵌入式操作系统,而L i n u x 是按照分时系统的目标设计的,进程调度强调平衡各进程之间的响应时间来保证公平的C P I J 时间占用,因此,本身为一个通用的分时操作系统而非真正意义上的实时系统。尽管L i n u x 系统已经加入了一些实时处理的支持,包括支持大部分的P
3、 O S I X 标准中的实时功能,支持多任务多线程,具有丰富的通信机制等,但是它还是没有满足嵌人式系统所要求的实时性。为了保证在嵌入式系统中的实时性,必须采用一定的策略加以改进。本文从双内核结构、定时器的细粒度化、可抢占式内核和实时调度策略四个方面对L i n u x 的实时性做了改进,给出具体的算法思想或数据结构。lL i n u x 系统实时性的分析尽管L i n u x 在内核中加入了提高中断性能和调度响应时间的改进,但其内核设计关注于应用程序的吞吐量,而在实时方面存在不足,主要表现在以下几个方面:(1)频繁关中断引起中断丢失,导致由中断触发的实时任务不能被立即被调度执行。如果低优先级
4、的进程由于进入临界区或者为了尽快完成任务而关闭了中断,那么即使有高优先级实时进程的中断发生,系统也无法响应。这种情况在实时系统中是不允许发生的。(2)粗糙的时钟粒度心1 不能够提供精确的定时以满足实时应用微秒级的响应需求。时钟管理是操作系统的脉搏,操作系统环境建立之后,任务的执行和中止在很多情况下都是由时钟直接或间接唤起的。时钟也是许多操作系统基本活动的基准。系统用它来维持系统时间,监督进程运行,另外它还是进程调度的重要依据。通常L i n u x 的时钟粒度被设置为1 0 m s,而实时应用一般都需要微秒级的响应精度,显然,1 0 m s 的时钟粒度不能满足实时应用的需求。(3)L i n
5、u x 内核的不可抢占性。L i n u x 不能保证在任一时刻系统所运行的进程是具有最高优先级的进程,这主要是由于被动调度和优先级反转等问题造成的。(4)缺乏有效的实时任务调度机制和调度算法【3】。L i n u x 使用的是基于优先级的任务调度策略,这种调度策略不能保证实时任务按时完成。L i n u x 虽然给实时进程提供了较高的优先级,但是并没有加入时间限制,如完成的最后期限、应在多长时间内完成、执行周期等。L i m t x 的基于时间片的调度策略可能使得一个实时进程在一个时间片内未完成,其优先级将降低,从而可能造成到基金项目:本文得到四川教育厅重点科研项目(0 7 2 7 _)3
6、5)的支持。收稿日期:2 0 0 8 一0 7 0 6作者简介:徐德(1 9 8 2 一),男,四川苍溪人,硕士,西华师范大学计算机学院教师。研究方向为嵌入式系统开发。万方数据2 0 0 8 年第6 期九江学院学报1 7 截止时间实时任务无法完成。2L i n u x 实时性改进策略2 1 双内核法该方法通过在系统的最底层增加一个实时核心层来实现,实时核心层负责硬件管理并提供实时任务管理,L i n u x 核心被看作是实时核心中优先级最低的任务来调度,只有当没有可运行的实时任务时L i n u x 核心才被调度。对于实时内核来说,它始终不关闭硬件中断,可以接受所有的中断信号。当中断信号需要实
7、时进程来处理时,实时进程将抢占L i n u x 内核;如果中断信号需要L i n u x 内核来处理时,则由实时内核将信号传给L i n u x 内核。实时内核中提供了一个用来模拟L i n u x 内核的关中断情况:l 表示L i n u x 内核打开中断,0 表示L i n u x 关闭中断;实时内核在中断到来的时候检查该标志位,如果该位是1,立刻把中断传给L i n u x内核,否则,将所有待处理的中断放到一个队列里,直到L i n u x 打开中断时才把它们传给L i n u x 内核。双内核实时系统架构如图1 所示:图1 双内核架构在双内核方法中,实时进程和普通进程需要通信,方法有
8、:共享内存和F I F O 设备接口。因为实时内核只调度实时任务,所以可以实现一个效率极高的可抢占调度算法和任务切换算法。2 2 定时器的细粒度化该改进方案借鉴了K U R T 的思路,所不同的是提供了与标准Li n u x 核心时钟并行运行的一个具有精密刻度的实时核心时钟处理系统(用于对实时任务进行定时),与原Li n u x 核心时钟区别开来,不但提高了系统的稳定性和效率,而且独立的核心时钟易于维护改进。方案利用X 8 6 体系C P U 的T S C 提供高精确度的标度。系统中增加了一个高精确度定时器之后,需要维护两个与时钟有关的中断请求队列:系统时钟中断请求队列(t i m e r i
9、 r q)和H R T 中断请求队列(h r t t i m e r 一岫),它们分别对应各自的中断服务程序。在内核中添加C O N F I G H R T R E Q 宏定义来控制高精确度时钟系统的运行,如果内核中配置了C O N FI G H R T R E Q,则高精度定时器机制有效,否则H R T 不起作用。下面给出关键的数据结构h r t t i m e r s u b e x 2 p i r e s 来指示在一个高精确度定时器到期时处理j i f f y 值之外的机器指令周期数,该成员提供了高精确度的判断标准。s t r u e th r t t i m e rs t r u c
10、tr b n o d en o d e;事内嵌的红黑树节点k t i m e ts u b e x p i r e s;奉期满时刻幸e n u mh r t t i m e r s t a t es t a t e;掌定时器状态宰i n t(3f u n c t i o n)(s t r u c th r t t i m e r3);s t r e e th r t i m e r b a s e3 b a s e;定时器基准幸#f f d e fC O N F I G H R T R E Q i n t m o d e;木定时器模式搴s t r u c tl i s t h e a dc b
11、 e n t r y;书回调函数队列木#e n d i f;除此之外,还需要修改与定时器相关的函数,包括初始化定时器数据结构i n i t t i m e r(),激活定时器的函数a d d t i m e r(),更改已经激活的定时器超时时间的函数m o d t i m e r()等。2 3 内核的抢占性设计为了解决L i n u x 实现硬实时的最大障碍,就必须使L i n u x 内核成为完全可被抢占实时内核。改进方案通过以下2 种方式实现了L i n u x 核心的可抢占性。2 3 1 中断处理线程化 4 1基本思想:m Q t a s k在中断初始化后,被赋值为相应的中断服务线程的结
12、构。每当硬件中断发生时,底层中断处理函数唤醒相应的中断服务线程,设置调度标志,随后的s c h e d u l e()函数将在合适的时机选择执行 万方数据1 8 徐德,等:L i n u x 操作系统实时性的分析与改进策略服务线程。中断服务线程(对用户而言可以说是驱动程序)初始状态主动放弃C P U,s c h e d u l e()函数将选择其他进程,直到它被底层的相应中断唤醒;进入中断服务实体任务,如读写I O 端口等。在以上机制中,每个中断线程也被赋予不同的优先级。用户进程也可以和中断线程一起竞争C P U 时间。因此,在某些特殊情况下,一些中断线程的优先级可以被设置得低于用户进程的优先
13、级,例如,在发生优先级逆转的情况下。2 3 2 强制二元信号量的互斥锁机制为了支持可抢占核心,改进方案通过强二元信号量的互斥锁改进机制实现了对临界资源的保护。L i n u x 中的互斥锁机制采用了硬件锁的方式,普遍基于s p i nk k-i q 和s p i n u n l o c k i r q 的原语引申,采用了强二元信号量的互斥锁机制改进方案,实现了较为高效的互斥锁且这种设计易于实现复杂的互斥锁协议,如P I P,P C P。基本思想:采用了一个阻塞进程队列q u e u e,由于w a i t 调用而被阻塞的进程将进入这一队列。当持有锁的进程退出关键数据区时,发出s i g n a
14、 l 调用,它在阻塞进程队列中选择一个被阻塞的进程调度执行。这种互斥锁的设计与实现依据一定的互斥锁协议选择进程,因而避免了可能出现的某些进程饿死的现象。在这种改进的互斥锁方案的基础上,进一步实现了针对实时任务的优先级继承协议(P I P),改善了优先级逆转(p r i o r i t yi n v e r s i o n)问题o2 4 实时调度的算法常用的实时调度算法有:基于优先级的调度算法P D”(p r i o r i t yd r i v e ns c h e d u l i n g),调度器以优先级作为寻求下一个任务执行的依据。基于时间驱动的调度算法T D(t i m ed r i v
15、 e ns c h e d u l i n g),该算法本质上是一种设计时就确定下来的离线的静态调度方法,在系统设计阶段,在明确系统中所有处理的情况下,对于各个任务的开始、切换以及结束时间等事先组出明确的安排和设计。基于比例共享的调度算法S D(s h a r ed r i v e ns c h e d u l i n g),该算法是按照一定的权重对一组需要调度的任务进行调度,使其执行时间与权重完全成正比。改造方案中采用了常用的两种基于优先级的实时调度算法:基于静态优先级的速率单调调度算法(R a t eM o n o t o n i cA n a l y s i s。R M)和基于动态优先级
16、的最早截止期优先算法(E a r l i e s tD e a d l i n eF i r s t,E D F),采用动态模块L K M(L i n u xL o a d a b l eK e r n e lM o d 2 u l e)方式加载。2 4 1R M 调度算法R M 调度算法是一种典型的静态优先级抢占调度算法,也是实时研究中最经典的算法。R M 调度器的数据结构如下:(1)在头文件s c h e d h 中增加R M S 的宏定义:#d e f i n eR M S3;(2)在进程控制块t a s k s t r u e t 中增加采用R M 调度策略的任务的属性:s t r u
17、 e tR M S-s t r u e tlu n s i g n e dl o n gp e r i o d;u n s i g n e dl o n gr e a d y t i m e;u n s i g n e dl o n gs e r v i e e-t i m e;u n s i g n e dl o I l gt i m e s e r v i c e d;然后,把该结构加入t a s k s t r u e t 之前,需要先进先初始化:s t r u e tR M S s t r u e ti n i t r i l l s(s t r u e tR M S s t r u
18、c t i n i t-m s)i n i t r i n g p e r i o d=一l;i n i t r n i 8 r e a d y t i m e=0;i n i t 一皿s s e r v i e e t i m e=1;i n i t n n s t i m e s e r v i c e d=0:;(3)还需要设置扩展调度参数结构s c h e d p a 2 r a m s;s t r u e ts c h e d-p a r a m si n ts c h e d-Pr i o r i t y;u n s i g n e dl o n gp e r i o d;u n
19、s i g n e dl o n gs e r v i c e-t i m e;2 4 2E D F 调度算法E D F 也称为截止时间驱动调度算法(D D S)6 1,是一种动态调度算法。E D F指在调度时,任务的优先级更具任务的截止时间动态分配。截止时间越短,优先级越高。E D F 调度算法已被证明是动态最优调度,而且是充要条件。处理机利用率最大可达1 0 0。但瞬时过载时,系统行为不可预测,可能发生多米诺骨牌现象,一个 万方数据2 0 0 8 年第6 期九江学院学报1 9 任务丢失时会引起一连串的任务接连丢失。另外,它的在线调度开销比R M S 大。E D F 调度器的数据结构如下:(
20、1)在头文件s c h e d h 中增加E D F 的宏定义:#d e f i n eE D F4;(2)在进程控制块t a s k s t r u c t 中增加采用E D F 调度策略的任务的属性:s t r u e tE D F-s t r n c tu n s i g n e dl o n gd e a d l i n e;u n s i g n e dl o n gp e r i o d;u n s i g n e dl o n gr e a d y-t i m e;u n s i g n e dl o n gs e r v i c e t i m e;u n s i g n e
21、dl o n gt i m e s e r v i c e d;3 结论L i n u x 虽然为分时操作系统,但由于其功能强大、源代码开放以及可移植性强等优势,已成为日益流行的嵌入式实时操作系统的解决方案。本文从双内核结构、定时器的细粒度化、可抢占式内核和实时调度策略四个方面给出了改善系统实时性能的方法,拓展了实时系统的应用范围。L i n u x 实时性能的逐步完善,必将大大促进嵌入式L i n u x 在工业控制、信息电器等领域的广泛应用,应用的需要也会进一步促进大量新型改进方案的出现。下一步工作将对新型改进方案的优化做进一步的研究。参考文献:,1 李小琼,赵慧,比斌等R F R T O
22、 S:基于l i n u x 实时操作系统 J 软件学报,2 0 0 3,(5):1 2 0 4 2 范剑英,吴岩1 i n t t x 2 6 内核实时性分析与改进方案 J 哈尔滨理工大学学报,2 0 0 8,(2):2 4 3 殷锋卫R T L i n u x 的中断和任务调度 J 西安工业学院学报,2 0 0 2,2 2(1):7 8 4】洪雪玉,张凌1 i n u x 实时性及其中断进程化实现 J 计算机工程,2 0 0 7,(5):6 4 5 刘兴亮,李秀华1 i n u x 操作系统实时性分析及其研究 J 科技创新导报,2 0 0 8(4):1 6 6 W a n gY u c h
23、 u n g,L i nK w e iJ a y I m p l e m e n t i n gag e n e r a lr e a lt i m e ss c h e d u l i n gf r a m e w o r ki nt h eR E DL i n u xr e a lt i m ek e r n e l A P r o c e e d i n g sR e a lT i m eS y s t e m sS y m p o s i u m C ,1 9 9 9:2 4 6 R E S E A R C HA N Dn 佃I R O V E M E N TO FI 冱A LT 毗m
24、I,D n O SX uD e;C h e nY a j u n(C o m p u t e r C o U e g eo fC h i n aW e s tN o r m a lU n i v e r s i t y,N a n c h o n g,S i c h n a n6 3 7 0 0 0)A B S T R A C TB a s e do nt h ea n a l y s i so ft h el i m i t a t i o na I fe m b e d d e dL i n u xi nr e a lt i m ea p p l i c a t i o n,t h ep
25、a p e rp r o p-佣c 8 d 哪ei m p r o v e m e n tm e t h o d so fr e a lt i m eL i n t=w i t ht h ed o u b l ek e r n dm e t h o d,f i n e 一妯t i m e rm e c h a n i s m,n o n i n t e r r u p t i v ek e r n a la n dr e a lt i m es c h e d u l i n gp o l l c y A f t e ri m p r o v e m e n t。t h e 删k e r n
26、dw a 8m o r ee f f i c i e n ta n dr e a lt i m ep 既f 油锄W a se n h a n c e d K E YW O R D Se m b e d d e ds y s t e m;r e a lt i r o e;r e a lt i m es c h e d u l i n gp o l i c y(责任编辑陈平生)万方数据Linux操作系统实时性的分析与改进策略Linux操作系统实时性的分析与改进策略作者:徐德,陈亚军,Xu De,Chen Yajun作者单位:西华师范大学计算机学院,四川南充,637000刊名:九江学院学报英文刊名:
27、JOURNAL OF JIUJIANG UNIVERSITY年,卷(期):2008,27(6)参考文献(6条)参考文献(6条)1.Wang Yuchung;Lin Kwei Jay Implementing a general real times scheduling framework in the RED Linuxreal time kernel 19992.刘兴亮;李秀华 linux操作系统实时性分析及其研究期刊论文-科技创新导报 2008(04)3.洪雪玉;张凌 linux实时性及其中断进程化实现期刊论文-计算机工程 2007(05)4.殷锋卫 RTLinux的中断和任务调度期刊论文-西安工业学院学报 2002(01)5.范剑英;吴岩 linux2.6内核实时性分析与改进方案期刊论文-哈尔滨理工大学学报 2008(02)6.李小琼;赵慧;比斌 RFRTOS:基于linux实时操作系统 2003(05)本文链接:http:/