微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 应用中的嵌入式Linux实时优化技巧

应用中的嵌入式Linux实时优化技巧

时间:05-16 来源:EDN 点击:
3.3 内核线程

  中断服务程序(ISR)是不能被抢占的。一旦CPU 开始执行ISR,除非程序结束,否则不可能转而执行其他的任务。Linux用自旋锁(Spinlock)来实现ISR对CPU的独占。采用了自旋锁的ISR是不能进入休眠的,而且此时系统的中断也被完全禁止。内核线程是由内核创建和撤销的,用来执行一个指定的函数。内核线程具有自己的内核堆栈,能够被单独调用。我们用内核线程代替ISR,并且用互斥量(Mutex)替换自旋锁。内核线程能够进入休眠,而且执行时是不禁用外部中断的。系统接到中断信号后,唤醒相应的内核线程,内核线程代替原来的ISR执行完任务后继续进入休眠状态。这样中断廷时就是可预测的,并且占用时间也很少。

  根据LynuxWorks公司的测试数据,在Pentium III 1GHz的PC上,Linux 2.4内核的平均任务响应时间为1133us,平均中断响应时间为252us;而Linux 2.6内核的平均响应时间为132us,平均中断响应时间仅为14us,比Linux 2.4内核提高了一个数量级。在此基础上,采用这种方法能够针对具体的系统进一步加快特定中断的响应时间,提高应用系统的实时性能。

  4 总结与展望

  本文以Linux 2.6为基础探讨了提高Linux实时性的方法。引入了在实时系统中,只有当进入临界区的进程能在下一个实时任务开始之前结束时才被允许执行的机制,保证实时任务总是优先得到执行;采用了优先级置顶的方法避免了出现优先级倒置的情况;用内核线程代替中断服务程序,改变了了一般中断服务程序执行中不能进入休眠状态的情况,并且执行时不禁用外部中断,使系统的中断廷时变得短小和可预测。本文所述方法的缺点在于,提高系统时钟中断频率带会增大系统开销问题。为了在实时性能提升和系统开销增大之间找到一个平衡点,开发者不得不对具体系统做大量测试,具体问题具体分析,使得该方法在适用性上打了折扣。Linux因其免费、性能强大、工具众多的特点,必将在嵌入式系统领域得到大量的应用。我们应该及时跟踪国内外Linux发展动态,同时积累在此领域的开发经验,走出自己的路来。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top