《浅谈Linux操作系统中实时化的关键问题.pdf》由会员分享,可在线阅读,更多相关《浅谈Linux操作系统中实时化的关键问题.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、浅浚薹冀羹55 1 Hx 攥侔系统中实时化的关键问题张玉馥营口职业技术学院计算机系1 15 0 0 5辩i 赛。_。?j。j 10-分析了普通L inu 内核实时性不足的主要原因具体研宽了普通L i n u x 内核在嵌入式系统中的有关进程调度算法的实时性不足的具体因素,最后,提出了L i n u x 实时化的关键问题,同时给出了解决方法。关键词L i n u x 操作系统;实时性;进程调度;内核A b S t r a c tT h i sp a p e ra n a l y z e st h ep r i m a r yr e a s o n so fE e a l-t i m ed e f
2、 i c i e n c yo fa v 静a g eL i n u xO S I ts t u d i e st h em a i nf a c t o r so fr e a l-t i m ed e f i c i e n c yo fa v e r a g eL i n u xO Sa b o u tp r o c e s ss c h e d u l ea r i t h m e t i ci ne m b e d d e ds y s t e m A tl a s t,i ts h o w st h ek e yq u e s t i o n so f r e a lt i m e
3、i m p r o v e m e n to fL i n u xO S I tp r e s e n t st h ei m p o r t a n ts o l v i n gm e t h o d s K e yw o r d s、。jk i n u xO S;E e a l t i m ec h a r a c t e r;P r o c e s ss c h e d u l e;L i n u xK e r n e l L i n u x 作为一种通用的操作系统,:它最初的设计是用于桌面系统或者小型服务器。L i n U X 操作系统的设计目标是取得最优平均性能,因此内核在实J时性方
4、面还有很多不足。因此,要将I普通L i n u x 操作系统用于嵌入式系统中,就必须对普通L i n u x 内核作一些改进,使它能更好地为嵌入式系统服务。一、L i n u x 在实时应用中的不足之处虽然目前L i n u x 内核在实时性方面有所增强,但它仍然不是实时操作系统,L i n t l x 内核的设计关注于应用程序的吞吐量连同内核整体设计的完美。作为提高吞吐量的必然要求,L ir l u X的调度器试图提供一种“公平分配”策略来保证所有的进程可以均衡地享有C P U 的资源。普通L i n u x 内核提供三种调度策略,分别为SCHED RR、S C H E D F I F O、
5、S C H E D O T H E R。其中第一个策略为实时进程的基于优先级的轮转法,s c h e d f i f o 为实时进程的先进先出算法,s c h e d o t h e r 为非实时进程的基于优先级的轮转法。前两种为软实时进程调度策略,后者为普通实时进程调度策略。普通时分进程调度策略保证了每个进程相对于其静态优先级可以公平地获取C P U 资源。由于调度器按照优先级驱动的方式,因此软实时进程的优先级要高于普通进程,通常软实时进程的优先级在10 0 0 以上而普通进程的优先级在0 9 9 9 之间。由调度器调用的g o o d n e s s()函数保证实时进程先于普通进程获得CP
6、U。函数g o o d n e s s()女U 下:s t a t i ci n l i n ei n tg o o d n e s s(s t r u c tt a s ks t r u c t P,i n tt h i s c p u,s t r u c tm ms t r u c t*t h i sm m)i n tw e i g h t;w e i g h t=一l;i f(p 一 p o l i c y&S C H E D Y I E L D)g o t oo u t;非实时进程t i f(p=p o l i c y=S C H E D _ O T H E R)w e i g h t
7、-p 一 c o u n t e r;i f(!w e i g h t)g o t oo u t;诹p 一 m m=t h 妊L m m!P 一 m m)w e i g h t+=l:w e i g h t+=2 0 一p-n i c e;g o t oo u t;+软实时进程t 万方数据w e i g h t1 0 0 0+p 一 r tp r i o r i t y;g o t oo u t;r e t u r nw e i g h t;从上面的g o o d n e s s()函数可以看出普通L i n u x 内核的进程调度算法只是软实时的,并不是硬实时的。尤其不能作为硬实时应用,主要
8、有以下几个原因:l、L I N U X 内核的实时进程的调度算法当中,S C H E D R R 和S C H E D R R调度策略的主要不同点在于,S C H E D R R 进程在一个时间片运行完以后被放到运行队列的最后。L I N U X的,每一个进程都有一个调度策略,在进程描述结构t as k S tr U C t 中规定p o l i c y 属性。所有的进程不管采用哪一种调度策略,都放在同一个运行队列中。这样做,就对实时进程的响应产生了影响。2、L I N U X 的内核是非抢占式的(n o n p r e e m p t i v e)。3、L i n u x 的进程调度策略不是
9、完全抢占式的。4、Lin1 1x 的虚拟内存技术(v i r t u a lm e m o r y)增加了系统的不确定性。5、L i n u x 采用的时钟中断的精度不高。6、L i n u x 系统的一些额外操作会延迟实时进程的执行。二、L i n u x 内部实时性的改造对L J n u x 内部实时性改造有两个方面的工作:(1)对时钟机制的改造。(2)在内核方面的抢占性改造。改造的目的是为了缩短L i n u x 内核的响应延时。(1)在时钟机制的改造方面,可以通过提高系统时钟的精度来增强系统的实时性,特别是对外部中断的响应。因为精确的时钟是操作系统进行准确的调度工作的必不可少的条件。执
10、行调度就要求在特定的时间进行任务切换。不精确的时钟会导致调度偏差,从而导致无法预计的结果。所以提高时钟精度,减少调度偏差是非常重要的。在操作系统中,时钟精度不高的原因之一是因为:周期性时钟中断的使用。操作系统不得不将大量的时间、开销用于处理时钟中断。L i n u x 操作系统也是如此。在L i n u x 内核使用三1种时钟:实时时钟(RealTime ClO Ck,RTC)、时间标记计数器l(T i m eS t a m pC o u n t e r,T S C)、可编程间隔定时器(Pr o g r a m m a b l eI n t e r v a lT i m e r,P I T)。
11、前两种硬件设备:允许内核跟踪当前的时间。P I T 由内核。f 编程,以固定的、预先设定的频率发出中断。它用于L i n u x 中任务的调度。在!L i n u x 中,它的中断频率被设为1 0 0 H Z。l即大约每10 M S 产生一次定时中断。时钟中断包含周期性时钟中断j(PeriodiC)以及单触发时钟中断il(O n e s h O t)。周期性时钟中断顾名ff 思义就是周期性的时钟中断。而单触 发时钟中断需要在每次发生中断的时;候,检查每个进程的运行时间是否过f 期,并且把下一次时钟中断的时间设1定为最近的过期时间。例如:中断之Jj 后,下次会过期的时间有1 m s、2 m s、
12、i 3 ms,那么就设定下次时钟中断的时l 间为1ms。这两种时钟中断方式有什么优缺点;呢?首先周期性时钟中断处理的整个需:要的时间要比单触发时钟的需要的时间要少,因为周期性时钟中断不需要每次都检查下一次过期时间。所以它的I 运行时间要比单触发方式的时钟中断时1j 间要少。现在看看单触发时钟中断方式f 的特点,因为每次中断的时间不一样,所以它的优点在于“弹性”。举一个例子i来看看单触发时钟中断方式的优点:假如我们正在控制一个机器人,有少数地i 方需要做2 m s、5 m s 的反应,所以1 0 m s 1 的周期性时钟显然无法使用。但如果为l了这个少数2 m s、5 m s,而把周期性时钟设定
13、为2 m s 过期一次,那么开销增加f 非常多。因此,为了减少C P U 处理中断的时间开销,同时又提供高精确度,R T L i n u x 将设置定时芯片(例8 3 4 5)为j 终端计时中断方式。仅仅当需要时才使|l 用可编程的间隔定时器中断C P U,这1 样不仅可以获得高定时精度,同时中断1 4 7 处理的开销又最小。(2)在内核抢占性方面的改造有两种方法:一种是抢占点的方法,另一种是抢占式内核的设计。所谓抢占点就是内核在某个合适的地方调用s c h e d u l e()函数来检查是否有高优先级的任务已经处于r e a d y 状态并让这个高优先级任务运行。为了提高系统的实时性,抢占
14、的选择要合理,既不能时间间隔太短,也不能太长,因此,在设置抢占点的时候要测试内核中的运行路径,在较长的运行路径中插入s c h e d u l e()。进行调度,这个地方就是抢占点。另一种是抢占式内核的设计,即允许处于系统调用状态的用户进程被N l l N f 唤醒的高优先级进程所抢占。但是这种抢占方式并不是在内核代码的所有地方都是安全的,如在临界区就不能抢占。在抢占式l i n u x 内核的调度器中,用一个链表数组来表示就绪队列,每一个链表代表一个优先级,其中优先级为0 的链表是s c h e do t h e r 任务,调度器依然使用原来的调度算法来调度s c h e d o t h e
15、 r 任务。为了能够更快地找到正确的队列,使用一个与队列相对应的位图。每个链表当中有一个或者几个任务时,位图的相应位将置1。为了能够处理9 9 个优先级,就需要4 个3 2 位字。这实际提供了1 2 8 位,所以共有1 2 8个优先级。即0 1 2 7。其结构定义如下:s t a t i cs t r u c t i n tg u a r d;当其值为l时表示就绪队列中没有任务+i n tr q b i t a r y 4】;r q b i t s=1,0,0,0,0 ;#d e f i n er q b i t m a pr qb i t s r q b i t a r y为了能够找到优先级
16、最高的任务,首先寻找R Q 位图中的非零字,接着再寻找在该字中第一个不为0 的位。R T L i n u x 允许抢占任何处于非临界区的进程,它的实现方法是增加了一个抢占计数变量,每当碰到一个不可抢占的条件时变量值加l。在系统内部中下转第1 5 0 匿p 万方数据E n dI f同时,根据模块功能细化,通过S Q LS e r v e r 在用户数据库中建立了多达7 4 个表项目,表间通过K e y 项确定信息流向和表的逻辑关系,其中B u g T y p e T a b l e、B u g C o n t e n t T a b l e、B u g K i n d T a b l e 与B
17、u g P a r a T y p e T a b l e将与后续系统中的GPS 系统功能结合,更进一步加强了系统的技术性含量。所有表中数据都通过代码控制实现了直接由系统界面输入生成,并显示在地图与各种输出文本中。例如系统中系统只检修记录可通过文本输入录入到实时数据库中从而进一步可反映在地图显示中:I fT e x t l A n dT e x t 2 A n dT e x t 3 ”A n dC o m b 0 2 !”A n dC o m b o l ”请选择”T h e nA D O D B E x e c u t e”u p d a t er e p a i r t a b l es
18、e ti f d o n e=7&lT r i m(C o m b 0 1)&I I,d o n e t i m e=。T r i m(T e x t 3)&”,d o n e m a n=&晌(C o m b 0 2)&”。,d o n e c o n t e n t=&T r i m(T e x t l)&”,m a r k:”1&T r i m:(T e x t 2)&”w h e r ei d=&L a b e l l l C a p t i o n&”L a b e L 2 3 C a p t i o n=”处理了(”&T r i m(L a b e l l l)&”)号检修,记录”
19、A D OD B E x e c u t e”I N S E R TI N T Or e p a i r L o g T a b l e(u s e r n a m e,n a m e,d o W h a t,T t i m e)V A L U E S(|&L o g u s e m a m e&”1,1|&L o g n a m e”1,。T r i m(L a b e l 2 3)&”l,1&F o r m a t(N o w(),”Y Y Y Y M M d dH H:m m:s s”)”。)”w e=M s g B o x(”处理成功!”,v b O K C a n c e l)E l
20、 s eM s g B o x”请完整输入!”E n dI f最后将系统进行整合。在V B 环境中完成对所有软件模块功能的编写,完成整个系统与数据库和G I S 功能的结合,并对各模块的运行和作业进行反复调试,系统完成。四、总结本系统合理有效地将G I S 成功引入到电力信息管理系统中来,用菜单选择与填表混合的形式实现人机的交互,在G I S 环境支持下采用文图互显、文图互查的简单形式实现了任务信息传递和信息记录管理的功能。本系统操作的优点包括:功能直观,学习和记忆负担少,易操作,用户掌握主动,而且可应用于一般操作系统且适于向系统输入大量数l据信息。可以看出,G I S 在电力系统中越来越广泛
21、的应用必将是电力行业发展的一个前沿方向。#;j 上接第1 4 7 页断处理退出时,即系统从不可抢占区域退出时,检查抢占计数变量,只有在该变量为非零值时,可以去处理软中断、信号以及恢复寄存器,否则要先处理抢占。为了提高硬件的使用效率,L i n u x系统可能会作些额外的操作。例如:在内存不足的时候,L i n u x 不是只释放一个页面而是搜索整个页面链表以释放尽可能多的页面。这种机制虽然在普通系统应用中可以提高系统的整体性能,但在实时应用中却会影响实时进程的执行。综上所述,不经处理的L i n u x 是不适合做实时操作系统的,即便是软实时,在系统负荷重的情况下也不能保证其实时性。但通过对L
22、 in u X 内核的改造完全可以提高L i n u x 的实时性,甚至可以满足实时的要求。L。T _ 宁工程技术大学学报,2 0。4 年0 4;参考文献c 泌竺黧,拦:酶,竺:骠赫赫纛搿麓i 内础及应用教程 M】。北京:机械工业出版:一。一曼饿,辫:恐黧吲置豢篇麓薹翁f 用:7 挚计与实现 M j 北京:科学出版社,i 5 最,;。:。S h 4 i。毒纂磊(M 北京;清华翌絮熙霉:?,。毒薹篡熙统设计捌演2 9 1 兰?堂,鼍明教程 j M 1 4 匕V 京i s u:高赫i 辜名蓑嵌父式磊差篇:。j j j 嚣登社一0,0 4。,j:。5 淳毒平。L|n。,X 纂作主藐妥验装程 M 传者
23、简羚。:?:?。j;:”+j。或j?、。,r。7。”“4。“”卜 万方数据浅谈Linux操作系统中实时化的关键问题浅谈Linux操作系统中实时化的关键问题作者:张玉馥,Zhang Yufu作者单位:营口职业技术学院计算机系,115003刊名:中国科技信息英文刊名:CHINA SCIENCE AND TECHNOLOGY INFORMATION年,卷(期):2007(5)参考文献(5条)参考文献(5条)1.窦振中 嵌入式系统设计方法的演化期刊论文-单片机与嵌入式系统应用 2001(1)2.李善平 Linux操作系统实验教程 20003.Krishna Shin 实时系统 20014.周思轶 嵌入式Linux设计与应用 20025.李善平;陈文智 边干边学Linux内核指导 2002 本文链接:http:/