为了解决Linux实现硬实时的最大障碍,使Linux内核成为完全可被抢占实时内核,典型的实现方案是双核结构。使用实时核来运行实时任务,Linux内核来运行非实时任务。例如:对于实时数据采样分析而言,利用实时内核运行一个实时任务来完成数据采集,另一个实时任务完成数据分析和控制输出功能;同时利用Linux内核上运行的界面来进行数据显示。如图1所示。
图1双内核结构
在Linux内核和硬件之间加个小的实时核,由它管理中断,提供一些必要的功能,如底层任务创建、中断服务程序,并且为底层任务、ISR和Linux进程之间进行通信排队;而Linux内核本身则成为优先级最低的Idletask。
随着嵌入式应用的深入,特别是在数字通信和网络中的应用,多核结构的处理器也陆续上市。如:Motorola公司研发的MPC8260PowerQUICC||融合了两个CPU-嵌入式PowerPC内核和通信处理模块(CPM);Infineon公司推出的TC10GP和增强型TC1130都是三核(TriCore)结构的微处理器,这些处理器的产生对于Linux应用中的实时性都大有帮助。3.实时调度的算法研究
(1)静态优先级调度算法:该算法给系统中所有进程都静态的分配一个优先级。静态优先级的分配可以根据应用的属性来进行,例如任务的周期、用户优先级或者其他预先确定的策略。RM(RateMonotonic)是一种典型的静态优先级调度算法,它根据任务执行周期的长短来决定调度优先级,执行周期小的任务具有较高的优先级。
(2)动态优先级调度算法:这种算法根据任务的资源需求来动态的分配任务的优先级。EDF(earliestdeadlinefirst)算法是一种典型的动态优先级调度算法,该算法根据就绪队列中各个任务的截止期限来分配优先级,具有最近截止期限的任的优先级最高。
基于比例共享的调度算法
每一种调度策略都有自己的优越性和不足。在这里我们提出了一种宏观调度结构,通过设计和构造多属性和多调度器的选择机制,使三种实时调度策略的应用都得到支持,相对于只对单种调度策略提供支持的方案,拓展了系统的可使用范围。宏观调度结构如图2所示。
五、结论与展望
Linux虽然为分时操作系统,但由于其功能强大、源代码开放以及可移植性强等优势,已成为日益流行的嵌入式实时操作系统的解决方案。本文从软中断模拟技术、可抢占式内核和实时调度策略三个方面给出了改善系统实时性能的方法,并提出了通过采用宏观调度结构实现的混合调度,拓展了实时系统的应用范围。Linux实时性能的逐步完善,必将大大促进嵌入式Linux在工业控制、后PC时代信息电器等领域的广泛应用,应用的需要也会进一步促进大量新型控制算法的出现。