浅析嵌入式Linux操作系统的实时应用中的问题与优化

2016-03-19 16:35袁世军中煤科工集团重庆研究院有限公司重庆400037
低碳世界 2016年32期
关键词:补丁内核中断

袁世军(中煤科工集团重庆研究院有限公司,重庆400037)

浅析嵌入式Linux操作系统的实时应用中的问题与优化

袁世军(中煤科工集团重庆研究院有限公司,重庆400037)

随着我国计算机信息技术的发展,嵌入式系统逐渐被人们认可,越来越多地应用到我们的日常生活中,而嵌入式实时操作系统的开发是在这个基础上进一步开发研究出来的结果,但由于其开发成本高,价格昂贵,而且核心技术没有公开,我国要想应用只有借用别人的技术,在实时应用中非常不划算,而Linux操作系统的出现使得这一局面大为改观,到目前为止Linux操作系统已然成为嵌入式操作系统实时应用时的最佳选择之一。本文通过对嵌入式Linux操作系统进行概况分析,主要探讨嵌入式Linux操作系统在实时应用中的问题及其优化方法。

嵌入式Linux操作系统;实时应用;问题;优化

由于嵌入式Linux操作系统具有开源,免费以及支持多种架构等特点,使其在嵌入式操作系统中得到了广泛地应用,它是后PC时代来临时嵌入式操作系统与Internet的有效融合,但是嵌入式Linux操作系统在设计之初并没有对其实时性方面进行仔细研究,尤其是内核中没有设计允许抢占的要求,随着现今嵌入式Linux操作系统对实时性的要求越来越高,导致其在具体应用过程中受到诸多限制,出现了许多问题,对此需要对嵌入式Linux操作系统的实时应用进行相应的优化,这也是本文分析探讨的重点。

1 嵌入式Linux操作系统的概况

嵌入式Linux操作系统最初是由一个叫Linus的芬兰大学生完成的一份作业,其内容是关于Unix课程的,主要是设计出一个包含两个向屏幕写字母的进程,而进程之间的切换则通过定时器来完成,就是这么一个小程序发展到如今正在逐步完善,是许多编程爱好者共同努力的结果,到目前为止,Linux已经变成了一个应用最广,真正优秀并且值得信赖的嵌入式操作系统[1]。

①嵌入式Linux操作系统的开发成本低,目前大多数的商业操作系统都价格昂贵,而Linux操作系统却是完全免费,而且其性能非常优秀,源代码也完全公开,这让许多领域的不同用户都可以按照自己的需求改造内核,从而设计出自己满意的嵌入式操作系统;②Linux操作系统有较高的稳定性,这主要是由于其内核具备高度稳定性,既使移植到特定平台上其稳定性依然如故,而且移植过程相对也较为容易简便,可以运用在多种处理器上;③Linux操作系统具备强大的网强功能,现在通用的网络协议和网络接口基本都已经订制在Linux中,而且Linux的内核处理器在处理这些网络协议时更有效率,而且其吞吐量也更高;④Linux操作系统具备完整的开发工具链,其提供的开发工具无论从编辑器到底层调试,适用于多种体系结构的平台。

2 嵌入式Linux操作系统在实时应用中的问题

如上文所述,嵌入式Linux操作系统针对网络协议具有很高的处理效率,也就是说其具备很高的吞吐量,标准的Linux操作系统正是以这个作为主要的研究目标,而没有考虑其实时应用过程中所要遇到的问题,比如需满足时间的约束要求等,其具体不足之处分析如下:

(1)Linux操作系统的内核是不可抢占的,它是以用户态和核心态两种模式进行运行,当进程运行到用户态时,就会被优先级别更高的进程所抢占,而当运行到核心态时,却不能被用户态所抢占;

(2)在Linux操作系统的运行过程中,在突然发生某些事件时,极有可能会阻塞到实时进程的正常运行,也就不能确定出实时进程的确切响应时间;

(3)Linux操作系统在实时应用过程若是发生频繁短时间的中断现象,极有可能会导致中断延迟出现不可控制的局面;

(4)在实时应用时优先级反转的现象可能会使高优先级的进程被低优先级的进程所阻塞,导致优先级不能正常反转的现象发生,同时Linux操作系统与通用的嵌入式操作系统相比还缺少相应细粒度与多种模式运行下的定时器,导致进程之间不能正常切换[2]。

3 嵌入式Linux操作系统在实时应用中的优化方法

通过上文的探讨分析,可以看出嵌入式Linux操作系统在进行实时应用时还存在许多问题,对此需要增强Linux操作系统的实时应用性,其具体优化方法如下所示:

3.1 结构改进

3.1.1 标准内核抢占

标准内核的抢占主要是通过对标准Linux的内核进行相应的修改,使得高优先级能够抢占低优先级程,在具体实践中有以下两种内核补丁方法:首先就是利用低内核的延迟方案,也就是修改Linux的单内核结构,有效缩短非抢断代码的长度,使内核的实时性得到增强;其次就是利用内核可抢断方案,其内核可抢断补丁主要由Rober Love提出以及进行相应的维护,此方案不仅使内核中的单执1行流的限制得到解除,而且根据自旋锁宏定义和互斥锁保护数据的完整性,使得内核将拥有完整的可抢断性[3];另外将这两种内核补丁方法放在一起进行实验,结果发现其实验后的系统性能更加优秀,这充分表明这两种内核补丁修改方案完全适用于Linux操作系统的内核抢占修改,可使得Linux操作系统的结构发生改变。

3.1.2 标准内核的实时补丁

对标准内核进行实时补丁也可以修改Linux的内核,以便提高其实时性能,具体方法如下:①实时微内核,这种方法是将一个内核作为标准内核与硬件层之间的接口层,在紧凑代码模块的同时,还把标准内核当作后台任务执行,而且微内核可截取硬件中断,保证标准内核不会抢占微内核正在处理的中断,另外微内核还可以调度优先级的实时任务以避免任务的延迟时间太长,这种双内核机制可以最大程度地缩短实时任务的中断时间,以获得硬时实支持;②POSIX实时扩展,这种方法是直接将标准内核进行修改,以此提供一个实现POSIX实时扩展的库,通过这个库可以产生一个符合IEEE1003.1d标准的系统,这种修改方法没有增加另外的内核,其补丁程序是直接针对内核的,从而能够实现相应标准的定时器,信号,信号量以及进程锁的内存机制,实现内存共享,优先级调度以及同步或异步I/O等;③纳内核方法,这种方法的显著特征就是可以让许多操作系统同时运行在纳内核上,只要其中一个是实时系统即可;④资源内核扩展,这种方法同实时微内核方法一样,都是紧凑代码模块,为普通内核以及用户进程提供相对应的资源模块,让用户进程在运行过程中可以以请求或保留的方式存在,同时还要保证能够获得相应的机器资源[3]。

3.2 任务响应时间分析

嵌入式Linux操作系统在运行过程中由于某些突发事件而无法确定出任务响应的时间,而通常情况下影响任务响应时间的因素主要包括分派时间中断,服务时间中断,调度延迟,上下文切换时间以及系统调用返回时间等,在这其中服务时间中断的减少是一个非常重要的问题,不能通过禁止其他特定中断而进行中断处断,这种方法虽然可以有效减少中断服务的时间,但若是出现无数个中断的情况,关中断就会造成丢中断,这种代价无疑是巨大的。对此需要在Linux操作系统的内核和硬件中断控制器的中设置一个中断模拟软件层,就可以很好的解决中断丢失的问题,比如当发生中断情况时,操作系统就会中断变量进行记录,然后立即返回给CPU处理器,在这个过程中只保存了中断模拟程序中的寄存器,而有效拖延了中断服务程序的过程,从而保证了中断任务运行时的响应时间[4]。

3.3 定时器粒度分析

定时器的粒度具体指的是Linux操作系统所提供的最小间隔时间,在Linux操作系统中定时器每两次中断之间的时间就是其粒度,这也是影响Linux操作系统响应速度的一个主要因素,通常情况下标准Linux操作系统的定时器粒度大约为10ms,这个粒度不能满足Linux操作系统的实时调度需求,就需用将其粒度进行细化,具体方式有两种:①可以将操作系统的实时时钟芯片放置在单次触发模式下,通过多处微秒级的细小粒度来起到细化其粒度的作用;②将Linux操作系统的内核中的Hz宏的定义进行修改,这种细化粒度的方式虽然在某种程度上会增加系统开销,但只需要对定时器在初始时进行一次设置就可以长期保持,这样可以有效提升系统定时器的处理效率。

3.4 优先级反向问题

嵌入式Linux操作系统在实时应用时,通过一种二元信号量的机制来实现资源共享,从而进行有效管理。当临界资源任务在进入到临界区之前必须拥有相应的信号量,否则其没有执行临界代码的权限,而且由于一些关健数据区的信号量得到了保护,一些高优先极的程序进程在等待信号量的过程中出现了阻塞,从而导致低优先级进程处于运行态的状况发生,这就是优先级反向问题,这种问题在系统运行中难以预测,甚至还会导致操作系统出崩溃的局面,对于这种优先级反向问题主要有两种解决方法:第一种就是基本优先级继承协议,也就是将低优先级进程的优先级提高到高优先级进程的优先级别,另一种就是优先级上限继承协议,也就是事先设置一个优先级上限,当进程在获取资源共享的使用权时,就可以将该进程的优先级别提高到上限,而当高优先级的进程在释放资源时就立刻恢复优先级原有的级别[5]。

4 结束语

综上所述,本文通过对嵌入式Linux操作系统进行概况分析,主要探讨嵌入式Linux操作系统在实时应用中的问题及其优化方法,其实时应用的问题及其优法方法主要表面在四个方面,即系统的结构内核改进,任务响应时间的减少,定时器粒度的细化以及优先级进程的级别提升与恢复等,希望本文的分析探讨让嵌入式Linux操作系统更好地应用在实时应用中,在走入我们生活与工作的同时可以带给我们更大加完善的操作体验。

[1]马季兰,刘 勇.嵌入式Linux操作系统的实时性研究[J].计算机技术与发展,2007,08:80~83+91.

[2]陈文星,张辉宜.嵌入式Linux操作系统的特性[J].计算机技术与发展,2006,03:20~21+25.

[3]肖振华,徐玉斌,解 辉,吕亚男.基于嵌入式Linux2.6的实时优化[J].计算机技术与发展,2008,11:83~86.

[4]王宇英.嵌入式Linux实时化及其应用[D].西北工业大学,2003.

[5]李智鹏.嵌入式Linux操作系统实时问题研究[D].湖南大学,2004.

TP316.81

A

2095-2066(2016)32-0240-02

2016-11-2

袁世军(1978-),男,四川隆昌人,工程师,本科,从事技术工作。

猜你喜欢
补丁内核中断
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
健胃补丁
Linux内核mmap保护机制研究
绣朵花儿当补丁
基于FPGA的中断控制器设计*
补丁奶奶
跟踪导练(二)(5)
千里移防,卫勤保障不中断
大病医保期待政策“补丁”