引言
20世纪70年代以来嵌入式系统的硬件和软件技术的飞速进步,使得嵌入式应用得到了蓬勃发展,在这些应用中实时操作系统起着决定性的作用。
在复杂测控应用中,必须使用对实时性要求非常高的实时操作系统。例如在工业控制、交通管理、机器人、航空航天、武器装备等领域控制工程网版权所有,系统事件的响应如果不能准时或超时CONTROL ENGINEERING China版权所有,就可能导致巨大的损失和灾难。因而控制工程网版权所有,选择操作系统时,对实时性的仔细考虑至关重要。本文从实时性的角度细致的分析对比了适用于此类有苛刻实时性要求的4种操作系统——VxWorks、mC/OS-II、RT-Linux、QNX,为系统选型提供一定参考。
实时性能主要实现技术
实时操作系统的实时性是第一要求,需要调度一切可利用的资源完成实时任务。根据响应时间在微秒、毫秒和秒级的不同,可分为强实时、准实时和弱实时三种。强实时系统必须是对即时的事件作出反应,绝对不能错过事件处理时
● 占先式内核
当系统时间响应很重要时,要使用占先式内核。当前最高优先级的任务一旦就绪,总能立即得到CPU的控制权,而CPU的控制权是可知的。使用占先式内核使得任务级响应时间得以最优化。
● 调度策略分析 ● 任务优先级分配 ● 任务切换时间 ● 中断响应时间(可屏蔽中断)  
任务调度策略是直接影响实时性能的因素。强实时系统和准实时系统的实现区别主要在选择调度算法上。选择基于优先级调度的算法足以满足准实时系统的要求,而且可以提供高速的响应和大的系统吞吐率。当两个或两个以上任务有同样优先级,通常用时间片轮转法进行调度。对硬实时系统而言,需要使用的算法就应该是调度方式简单,反应速度快的实时调度算法了。尽管调度算法多种多样,但大多由单一比率调度算法(RMS)和最早期限优先算法(EDF)变化而来。前者主要用于静态周期任务的调度,后者主要用于动态调度,在不同的系统状态下两种算法各有优劣。在商业产品中采用的实际策略常常是各种因素的折中。
每个任务都有其优先级。任务越重要,赋予的优先级应越高。应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。反之,应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。
● 时间的可确定性
强实时操作系统的函数调用与服务的执行时间应具有可确定性。系统服务的执行时间不依赖于应用程序任务的多少。系统完成某个确定任务的时间是可预测的。
当多任务内核决定运行另外的任务时,它把正在运行任务的当前状态(即CPU寄存器中的全部内容)保存到任务自己的栈区之中。然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。CPU的寄存器越多,额外负荷就越重。
计算机接收到中断信号到操作系统作出响应,并完成切换转入中断服务程序的时间。对于占先式内核控制工程网版权所有,要先调用一个特定的函数,该函数通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套。占先式内核的中断响应时间由下式给出:
中断响应时间=关中断的最长时间
+保护CPU内部寄存器的时间
+进入中断服务函数的执行时间
+开始执行中断服务例程(ISR)的第一条指令时间
中断响应时间是系统在最坏情况下响应中断的时间,某系统100次中有99次在50ms之内响应中断,只有一次响应中断的时间是250ms,只能认为中断响应时间是250ms。