您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术应用中的嵌入式Linux实时优化 正文
应用中的嵌入式Linux实时优化

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

点击数:7828 次   录入时间:03-04 11:38:04   整理:http://www.55dianzi.com   嵌入式系统-技术

  在一个不太复杂的实时系统中,可采用优先级置顶的方法解决这一问题。该方案对每一个可能被共享的资源分配一个优先级,该优先级为有可能使用这个资源的最高优先级的进程的优先级(如下伪代码中的RESOURCE_X_PRIO)。由调度器将优先级传给使用该资源的进程,进程结束后其自身的优先级(如下伪代码中的TASK_A_PRIO)才恢复正常。这样就避免了上面场景中任务L被任务M抢占,而导致任务H始终处于挂起状态。优先级置顶的示例代码如下:

程序



www.55dianzi.com

  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发展动态,同时积累在此领域的开发经验,走出自己的路来。



上一页  [1] [2] 


本文关键字:嵌入式  Linux  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术