版权归原作者所有,如有侵权,请联系我们

[科普中国]-嵌入式实时多任务操作系统

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

嵌入式操作系统是一种系统软件,包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式实时多任务操作系统是指能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行的嵌入式操作系统。

简介嵌入式实时多任务操作系统会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础,具有多路性、独立性、及时性、交互性、可靠性的特点。嵌入式实时多任务操作系统与一般的嵌入式操作系统相比,最大的特色就是其“实时性”,也就是说,如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。设计嵌入式实时多任务操作系统的首要目标不是高的吞吐量,而是保证任务在特定时间内完成,因此衡量一个嵌入式实时多任务操作系统坚固性的重要指标,是系统从接收一个任务,到完成该任务所需的时间,其时间的变化称为抖动。可以依抖动将嵌入式实时多任务操作系统分为两种:硬实时操作系统及软实时操作系统,硬实时操作系统比软实时操作系统有更少的抖动:硬实时操作系统必须使任务在确定的时间内完成。软实时操作系统能让绝大多数任务在确定时间内完成。

嵌入式实时多任务操作系统在的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。首先,嵌入式实时操作系统提高了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统起码不能崩溃,而且还要有自愈能力。不仅要求在硬件设计方面提高系统的可靠性和抗干扰性,而且也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏洞和不可靠的隐患。

设计原则按照系统对时间限制的满足程度,实时系统可分为硬实时(Hard Real Time)系统和软实时(Soft Real Time)系统。硬实时系统是指那些对每个任务调度时间要求非常严格的系统,如果不满足时间限制的要求,则会对系统带来毁灭性的后果。软实时系统是指那些对每个任务调度时间要求不是很严格的系统,即使超过了时间限制的要求,也不会对系统带来毁灭性的后果。

实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求。也就是说,实时操作系统注重的是个体表现,更准确地讲是个体最坏情况的表现。举例来说,如果实时操作系统采用标准的虚存技术,则一个实时任务执行的最坏情况是每次访存都需要调页,如此累计起来的该任务在最坏情况下的运行时间是不可预测的,因此该任务的实时性无法得到保证。由于实时操作系统与通用操作系统的基本设计原则差别很大,因此在很多资源调度策略的选择上以及操作系统实现的方法上两者都具有较大的差异。一个好的实时操作系统需要具备以下功能(必须但非充分):多任务和可抢占的;任务具有优先级;操作系统具备支持可预测的任务同步机制;支持多任务间的通信;操作系统具备消除优先级转置的机制;存储器优化管理;操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。这是指在全负载的情形下,最坏反应时间可知;实时时钟服务;中断管理服务。实时系统最关键的部分是实时多任务内核。它的基本功能包括多任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、信号量管理等。这些管理功能是通过内核服务函数形式交给用户调用的,也就是实时操作系统的API1。

特征小巧。嵌入式系统所能够提供的资源有限,所以嵌入式操作系统必须做到小巧以满足嵌入式系统硬件的限制。

实时性。大多数嵌入式系统工作在实时性要求很高的环境中,这就要求嵌入式操作系统必须将实时性作为一个重要的方面来考虑。在信息时代,人们必须在有效的时间内对到来的信息进行处理,从而为进一步的决策分析争取时间。所以,嵌入式操作系统必须体现一定的实时性。

可装卸。由于嵌入式系统需要根据应用的要求进行装卸,所以嵌入式操作系统也必须能够根据应用的要求进行装卸,去掉多余的部分,或者简化相应的模块。这些特征在嵌入式系统的模块划分中必须事先考虑周全。

固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中使用很少,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,取而代之的是各种内存文件系统。

弱交互性。大多数嵌入式系统的工作过程不需要人的干预。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务。

强稳定性。嵌入式系统一旦开始运行就不需要人过多的干预。在这种条件下,要求负贵系统管理的嵌入式操作系统具有较高的稳定性。

统一的接口。随着各种各样的嵌入式操作系统的出现,人们有必要为嵌入式系统提供的接口进行约定,从而为嵌入式应用软件的设计者提供统一的服务接口,为嵌入式应用软件的运行提供平台的无关性2。

任务管理策略优先级

每个任务都有其优先级。任务越重要,赋予的优先级应越高。任务的优先级(特别是应用程序的优先级)在运行时可以动态变化的,则称之为动态优先级。

基于优先级抢占式调度

系统中每一个任务都有一个优先级,内核总是将CPU分配给处于就绪态的优先级最高的任务运行。如果系统发现就绪队列中有比当前运行任务更高的优先级的任务,就把当前运行任务置于就绪队列中,调入高优先级任务运行。系统采用优先级抢占方式进行调度,可以保证重要的突发事件及时得到处理。

时间片轮转调度

时间片轮转调度算法是让优先级相同的、处于就绪状态的任务按时间片使用CPU,以防止同优先级中某一任务独占CPU。

多任务调度机制

任务调度算法是直接影响实时性能的因素。尽管调度算法多种多样,但大多由单调速率(Rate-Monotonic Scheduling,RMS)调度算法和最早期限优先(Earlist-Deadline First, EDF)调度算法变化而来。前者主要用于静态周期任务的调度,后者主要用于动态调度。在不同的系统状态下,这两种算法各有优劣。在一般情况下,ERTOS多采用基于优先级抢占方式与时间片轮转调度相结合的调度。

时间的可确定性

实时操作系统函数调用与服务的执行时间应具有可确定性。系统服务的执行时间不依赖于应用程序任务的多少。基于此特征,系统完成某个确定任务的时间是可预测的。

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学