改善嵌入式Linux实时性能的方法研究

来源 :科学与财富 | 被引量 : 0次 | 上传用户:zhanglicheng666
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文在分析Linux实时性的同时,探讨了其本身提供的一些支持实时性的机制以及在实时应用中的技术障碍。而后,基于增强Linux内核实时性的主流技术,从细化时钟粒度、增强内核抢占性及实时调度策略三方面入手,提出了改善Linux实时性能的优化方法。
  关键词:改善 Linux实时性能 嵌入式Linux
  一、细化时钟粒度
  精确的计时是实时调度器正确操作所必须的,调度器通常要求在一个特定的时刻进行任务切换,计时的错误将导致背离计划的调度,引起任务释放抖动。标准Linux系统时钟精度太过粗糙,时钟中断周期为10ms,不能满足特定嵌入式应用领域中对于响应时间精度的要求。因此,在实时Linux应用中,需要细化其时钟粒度,具体有两种方式可以解决时钟粒度问题:一是通过直接修改内核定时参数HZ的初值来细化时钟粒度,如将标准Linux中内核定时参数HZ改为10000, 则时钟粒度可以达到100us,这种方式虽然会增加一些系统开销,但在强周期性环境下,对定时器的设置只需初始化一次,在一定程度上保证了处理效率;二是通过对可编程中断定时器8254或先进的可编程中断控制器进行编程来改进Linux时钟机制,以提高其时钟的分辨率,使毫秒级的粗粒度定时器变成微秒级的细粒度定时器。
  二、 增强Linux内核的抢占性
  标准Linux内核是不可抢占的,导致较大的延迟,增强内核的可抢占性能,可提高系统内核对实时任务的响应能力。目前,有两种方法修改Linux内核以提高实时任务抢占非实时任务的能力:一是在内核中增加抢占点的方法;二是直接将Linux内核改造成可抢占式内核。插入抢占点方法是在Linux内核中插入一些抢占点,当一个系统调用执行到抢占点时,如果有更高优先级的实时进程正在等待运行,那么正在执行系统调用的内核进程将会把CPU的控制权转交给等待运行的实时进程;如果没有更高优先级的实时进程等待,则当前进程将继续执行,此时系统增加的开销仅仅是检测一下调度标志。将Linux内核改造成可抢占式内核方法的基本思想是产生运行调度器的机会,缩短任务发生到调度函数运行的时间间隔。这种方法修改了Linux源代码中的自旋锁宏以避免竞争,并在其中引入一个称作抢占锁计数器(PLC)的新的计数信号允许内核代码抢占,当它为0时,允许抢占;当其为大于0的任何值时,禁止抢占。目前,针对这两种修改Linux内核的方法,已经有两种比较成熟的Linux内核补丁被研制出来:抢占式补丁和低时延补丁。其中,抢占式补丁是Monta Vista開发的,它修改了内核代码中的spinlock宏和中断返回代码,使得当前进程可被安全抢占,当自旋锁释放或者中断线程完成时,调度器就有机会执行调度;低时延补丁是由Ingo Malnor提出,该方法只是在执行时间长的代码块上抢占,不采用强制式抢占,因此,如何找到延时长的代码块是解决问题的关键。
  三、 改善Linux内核实时调度器的调度策略
  将进入系统的所有任务按实时性分成三类:硬实时、软实时、非实时任务。硬实时要求系统确保任务执行最坏情况下的执行时间,即必须满足实时事件的响应时间的截止期限,否则,将引发致命的错误;软实时是指统计意义上的实时,一般整体吞吐量大或整体响应速度快,但不能保证特定任务在指定时期内完成。针对不同的实时性任务,分别采用不同的调度方法进行处理。
  为了严格保证硬实时任务的时限要求,改善的Linux内核实时调度器采用了优先级调度算法,目前最小松弛时间优先调度算法MLF(Minimum-Laxity-First Scheduling Algorithm)是动态优先级调度最常见的实时调度策略。它在系统中为每一个任务设定松弛时间(任务的松弛时间等于任务的截止期减去任务执行时间、当前时间)即: laxity= deadline―current_time―CPU_time_needed,系统优先执行具有最小松弛时间的任务。根据就绪队列的各任务的松弛时间来分配优先级,松弛时间最小的任务具有最高的优先级。为了提高Linux的实时性,我们设计了MLF调度器,并把它作为可加载模块加入Linux内核中,在实现中需对内核进行相应的修改。为了区分任务的类型,对基本Linux的task_struct属性进行改进,在其中增加SCHED_MLF调度策略,并按task_struct中的policy的取值来进行区分, 分别用SCHED_MLF,SCHED_RR,SCHED_OTHER来标识硬实时、软实时、非实时任务。将处于运行状态的三类任务放入两个队列,硬实时任务放入hard_real_queue队列, 采用MLF调度算法,软实时和非实时任务放入non_real_queue队列(空闲任务也在其中),沿用原内核的RR调度算法。这两个队列可以用一个run_queue[2]的指针数组来指向, 双队列任务运行过程与原内核的单运行队列执行流程的主要区别在:首先,各硬实时任务采用了MLF调度算法代替原内核的FIFO调度,提高了Linux系统的实时性能。其次,在判断是否有软中断需要处理之前需判断硬实时任务队列是否为空,如果不为空,即使存在中断的后半部分需要处理,也要先调度硬实时任务投入运行,在硬实时队列为空的条件下才去处理中断的后半部分(因为中断的后半部分没有硬实时任务紧急)。最后,如果没有硬实时任务存在,则说明只有run_queue [1]队列中有软实时或非实时任务存在,这时的处理方法和原内核对单运行队列的处理方法相同。这样改进后,可以明显提高硬实时任务的调度效率,而在没有硬实时任务时,系统性能没有变化。■
  参考文献
  [1] 赵慧斌,李小群, 孙玉芳. 改善Linux核心可抢占性方法的研究与实现. 计算机学报, 2004, 27(2): 244-251
  [2] 蒋溢, 李琳皓, 陈龙. Linux系统实时性探讨. 重庆大学学报, 2005, 28(3): 61-64
  [3] 董晓峰, 顾新. 关于Linux内核可抢占性的研究. 计算机工程, 2005, 31(1): 82-84
  [4] 陈敏, 周兴社. 基于嵌入式Linux的实时优化方案. 计算机应用研究, 2005, 22(3): 235-237
其他文献
城市社区文化是社会主义精神文明建设的重要组成部分,本文将通过对社区文化的内涵和作用等进行分析,从社区文化的方向、硬件建设以及处理好各种关系等方面,探索加强城市社区文化
该文分析了可持续发展观的形成过程,探讨了可持续发展观的社会哲学意义,指出了可持续发展观与经济人范式之间的矛盾和冲突.该文认为,随着可持续发展观的形成,经济人范式的演
曾与儒家学派在先秦时期平分天下的墨家学派在秦汉以后逐渐衰落,以致成为绝学.这不仅是墨家思想发展中的一大遗憾,也是中国科技和教育发展史上的悲哀.清未后期墨学研究的兴起
该文以长泰县农民用水户协会运行情况为例,分析建立农民用水户协会的优势和存在的问题,探索农民用水户协会在全省推广的意义。
摘 要:介绍了PZT压电陶瓷元件制备工艺,采用喷雾塔造粒,干压成型,烧结后作机械加工,丝网印银,烧渗银,最后极化;本文对以上系列工艺作了分析和讨论,通过实验得出最佳工艺参数,制备出的压电陶瓷元件致密度高,压电性能优良,得到了客户认可。  关键词:PZT压电陶瓷元件、干压成型、喷雾造粒、丝网印银  1、引言  PZT压电陶瓷由于具有居里温度[1]高、压电性强、易掺杂改性[2]、稳定性好等特点,自20
文章通过场强模型、断裂点模型及最大联系强度理论,探讨了以川渝地区城市群的14个主要城市及111个县级行政单位的城市势力圈的测度。从理论上定量计算了成都重庆与二三级城市
女大学生在大学生活中,经常会遇见许多问题:陷入“美丽牢笼”;面临“性与爱”方面的困惑;深受“性别角色”偏见影响;人际交往问题。针对于这些问题,可以从一下几个方面采取措施:做好
【正】女性领导的成功比男性更加来之不易,女性管理者面临的压力和问题也比男性更多。在她们看来,要在竞争激烈的商业环境中持续成功,需要解决更为复杂的问题和增长更加丰富
近年来,随着我国建筑行业的大力发展,各种建筑材料的施工工艺和施工技术成为当前建筑施工的难题。本文对振动碾压机械的影响深度进行了分析,从土石混合料的结构、强度特点以及压
高校成人教育教学工作的多样化,对教学管理工作提出了亟待研究和解决的问题。本文以成人教育教学管理为中心,从管理意识、岗位定责、服务理念、工作成效、管理创新等方面进行了