基于嵌入式应用的Linux内核实时性改进研究

时间:2025-03-09

操作系统

严丽平,宋凯,邓胡滨:基于嵌入式应用的Linux内核实时性改进研究2011,Vol.32,No.1121

0引言

个:确定性、可抢占性、上下文切换时间、中断延迟以及调度延迟。在上述的5个指标中,上下文切换时间与具体的CPU有关,而确定性又由其他的3个指标决定。所以笔者主要从可抢占性、中断延迟以及调度延迟几个角度来讨论Linux内核的实时性能。

(1)可抢占性

在Linux2.4内核中,可分为用户态以及核心态两种模式。当进程运行在用户态时,在不使用共享数据的前提下,抢占是可以发生的,但在核心态时,不允许抢占,处于就绪态的进程会被顺序执行。Linux的上述特性也决定了系统在对进程进行切换时的时间比较长和难以预测,系统很难在一个较短的时限内完成任务的切换,故此也就不能保证系统的实时性。综上所述,从根本上2.4内核是非抢占的,而2.6内核对此做了改进,它允许在核心态发生抢占,但必须满足诸多条件,在进入临界区时或者强制使用Preempt_disable使抢占失效时就不能进行抢占,因此其抢占性能仍不能满足硬实时性的要求。(2)调度延迟

调度延迟是指当一个事件引发高优先级任务就绪时,高优先级任务从就绪到运行之间的时间差,而这个时间差又由中断延迟、非可抢占的时间以及调度算法决定。在Linux2.4内

Linux操作系统以其开源免费的优势,以及稳定和支持多种处理器结构的特点受到诸多嵌入式商业产品开发者的青睐,成为嵌入式领域发展最快的操作系统。事实上,Linux在嵌入式系统应用中能够成为宠儿绝非偶然。第一,Linux自身具备一套完备的开发工具链,能够快速建立完整的嵌入式系统开发环境及交叉编译环境,并且可以跨越在嵌入式系统开发中的仿

真工具(ICE)的障碍。第二,Linux内核源代码完全开放,使得开发者可以真正了解其内部代码结构,自行设计开发真正的硬实时系统;对于软实时系统,在现有的Linux版本中可通过补丁形式实现。第三,丰富的网络功能及完备的网络协议体系,为嵌入式系统的网络开发提供了有力的保障。但对于嵌入式开发而言,Linux的实时性能仍旧是其致命的短板,在2.4时代,甚至其内核都是非可抢占的,2.6内核虽然对此做了很大的改进,但其在硬实时性方面仍不能令人满意。因此,在规模较小的嵌入式应用中,改进2.6内核的硬实时性能具有重要意义。

1制约Linux2.6内核实时性的原因分析

众所周知,衡量操作系统实时性能的主要技术指标有5

收稿日期:2010-01-08;修订日期:2010-03-15。

操作系统

1222011,Vol.32,No.1计算机工程与设计ComputerEngineeringandDesign

Hrt_taskqueue

核中,使用固定的时间片对CPU时间进行分配调度,一开始进程将被赋予较高优先级。一方面,若在某个进程的执行时间片内,该进程主动放弃CPU资源,则其系统优先级不变,甚至变的更高。另一方面,若某某一进程用完了自己的时间片,被强制切换,则其优先级自然降低。上述调度策略对于交互性较强的程序非常有利,比如文本编辑器,它需要频繁的输入及输出工作,随时需要等待键盘或者鼠标的消息。这种做法虽然对于终端用户的使用感受非常有利,但很多程序的执行还是依赖复杂的代码或者其他的任务进程以及一些不可预知的外来负载,因此该调度策略对于实时性能而言,完全不可满足。从根本上而言,上述调度算法是一个O(n)算法,即调度时间与规模有关,这与其集中计算时间片有很大关系,而Linux2.6内核中,调度算法得到了改进,其是一个O(1)算法,调度时间是确定的与任务规模无关,因为其设置了Active队列和Expired队列,这样无需集中计算时间片,也无需扫描整个队列,即可实现调度切换。但是2.6内核的调度仍然不能脱离原来的框架,实时任务和非实时任务在地位上仍没有根本的区别,很容易导致非实时任务通过关闭中断等方式阻塞实时任务等。

(3)中断延迟

中断服务是内核处理的最敏感的任务之一,内核在正常的运行过程中,内外中断随时可能到来并终止当前程序,转去处理中断服务程序。因此内核的实时性能参数之一,也就是其最大的关中断时间,这个时间越短,越能提高系统的实时性能。在关中断的处理方式上,Linux2.4内核和Linux2.6内核是基本一致的。中断具有最高的优先级,它可以抢占任何的进程。在Linux的内核进程中,关闭中断来寻求安全是很常见的做法,即使一些低优先级的非实时进程也可以关闭中断,这种做法将使关中断的最大时间很长甚至无法预料,也将对实时任务的响应将带来不确定的延迟时间,实时系统是不能容忍的。

综上所述,Linux2.6内核实时性的根本缺陷是调度策略不明确和中断延迟而造成的实时任务随时可能被阻塞。

Hrt时为硬实时任务,其进入硬实时任务的专有队列,硬实时任务具有静态的优先级,调度采用适合于应用规模较小的优先级位图调度算法。而标志为Srt的任务为软实时任务,其进入正常的任务队列,调度也采用2.6内核自身的SCHED_RR或者SCHED_FIFO算法,非实时任务具有Non标志,使用SCHED_NORMAL调度算法。

在新的调度体系中,当具有Hrt标志的任务就绪时,只有更高优先级的Hrt任务可能阻塞它,当然如果普通任务关闭了中断也可能阻塞Hrt任 …… 此处隐藏:5303字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于嵌入式应用的Linux内核实时性改进研究.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219