嵌入式操作系统是一种系统软件,包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式实时多任务操作系统是指能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行的嵌入式操作系统。
嵌入式实时多任务操作系统会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础,具有多路性、独立性、及时性、交互性、可靠性的特点。嵌入式实时多任务操作系统与一般的嵌入式操作系统相比,最大的特色就是其“实时性”,也就是说,如果有一个任务需要执行,
实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。设计嵌入式实时多任务操作系统的首要目标不是高的吞吐量,而是保证任务在特定时间内完成,因此衡量一个嵌入式实时多任务操作系统坚固性的重要指标,是系统从接收一个任务,到完成该任务所需的时间,其时间的变化称为抖动。可以依抖动将嵌入式实时多任务操作系统分为两种:硬实时操作系统及软实时操作系统,硬实时操作系统比软实时操作系统有更少的
抖动:硬实时操作系统必须使任务在确定的时间内完成。软实时操作系统能让绝大多数任务在确定时间内完成。
嵌入式实时多任务操作系统在的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。首先,嵌入式实时操作系统提高了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统起码不能崩溃,而且还要有自愈能力。不仅要求在硬件设计方面提高系统的可靠性和抗干扰性,而且也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏洞和不可靠的隐患。
按照系统对时间限制的满足程度,实时系统可分为硬实时(Hard Real Time)系统和软实时(Soft Real Time)系统。硬实时系统是指那些对每个任务调度时间要求非常严格的系统,如果不满足时间限制的要求,则会对系统带来毁灭性的后果。软实时系统是指那些对每个任务调度时间要求不是很严格的系统,即使超过了时间限制的要求,也不会对系统带来毁灭性的后果。
实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、
内存、
网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求。也就是说,实时操作系统注重的是个体表现,更准确地讲是个体最坏情况的表现。举例来说,如果实时操作系统采用标准的虚存技术,则一个实时任务执行的最坏情况是每次访存都需要调页,如此累计起来的该任务在最坏情况下的运行时间是不可预测的,因此该任务的实时性无法得到保证。由于实时操作系统与通用操作系统的基本设计原则差别很大,因此在很多资源调度策略的选择上以及操作系统实现的方法上两者都具有较大的差异。一个好的实时操作系统需要具备以下功能(必须但非充分):多任务和可抢占的;任务具有优先级;操作系统具备支持可预测的任务同步机制;支持多任务间的通信;操作系统具备消除优先级转置的机制;存储器优化管理;操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。这是指在全负载的情形下,最坏反应时间可知;实时时钟服务;中断管理服务。实时系统最关键的部分是实时多任务内核。它的基本功能包括
多任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、信号量管理等。这些管理功能是通过内核服务函数形式交给用户调用的,也就是实时操作系统的API。
系统中每一个任务都有一个优先级,内核总是将CPU分配给处于就绪态的优先级最高的任务运行。如果系统发现就绪队列中有比当前运行任务更高的优先级的任务,就把当前运行任务置于就绪队列中,调入高优先级任务运行。系统采用优先级抢占方式进行调度,可以保证重要的突发事件及时得到处理。
时间片轮转调度算法是让优先级相同的、处于就绪状态的任务按时间片使用CPU,以防止同优先级中某一任务独占CPU。
任务调度算法是直接影响实时性能的因素。尽管调度算法多种多样,但大多由单调速率(Rate-Monotonic Scheduling,RMS)调度算法和最早期限优先(Earlist-Deadline First, EDF)调度算法变化而来。前者主要用于静态周期任务的调度,后者主要用于动态调度。在不同的系统状态下,这两种算法各有优劣。在一般情况下,ERTOS多采用基于优先级抢占方式与时间片轮转调度相结合的调度。