• 沒有找到結果。

嵌入式实时操作系统的设计原则

在文檔中 嵌 入 式 系 统 应 用 开 发 (頁 108-113)

第 3 章 嵌入式操作系统

3.5 嵌入式实时操作系统的设计原则

实时系统与其他普通系统之间的最大差异是要满足处理与时间的关系。在实时计算 中,系统的正确性不仅仅依赖于计算的逻辑结果,还依赖于结果产生的时间。对于实时系 统来说,最重要的要求就是实时操作系统必须有能力在一个事先定义好的时间限制中对外 部或内部的事件进行响应和处理。这样,实时系统可以定义为“一个能够在事先指定或确 定时间内完成系统功能和对外部或内部、同步或异步时间作出响应的系统”。此外,作为 实时操作系统,还需要有效的中断处理能力来处理异步事件,有高效的 I/O 能力来处理有 严格时间限制的数据收发应用,即系统应该有在事先定义的时间范围内识别和处理离散的

事件的能力;系统能够处理和存储控制系统所需要的大量数据。

由于实时系统在设计时与应用的关系非常密切,所以有许多分类的方法。各种分类的 侧重点不同。方法一是分为周期性的和非周期性的(periodic 和 aperiodic)。周期性是指系 统通过传感器或其他设备周期性地探测外部环境的变化,在周期内对探测到的变化作出反 应,比如化工厂中的反应炉的控制。非周期性是指外部事件是循环发生但不是有规律的或 者是突发事件,比如一架客机飞入一个空中交通管制的管制范围所产生的事件。

方法二是分为硬实时和软实时(hard realtime 和 soft realtime)。硬实时系统就是系统必 须及时对事件作出反应,绝对不能发生错过事件处理的 deadline 的情况。在硬实时系统 中,一旦发生了这种情况就意味着巨大的损失和灾难,比如控制核电站的系统,如果没有 对堆芯过热作出及时的处理,后果不堪设想。在软实时系统中,当系统在重负载的情况下 允许发生错过 deadline 的情况而不会造成非常大的危害,比如在通信系统中允许 105 个电 话中有一个接不通。对于软实时系统,基于优先级调度的调度算法可以满足要求,提供高 速的响应和大的系统吞吐率;而对于硬实时系统,则必须及时作出响应。

这两类系统的区别在于调度算法。另外还可以分为专用系统和开放系统以及集中式系 统和分布式系统。

由于上述的实时系统的应用有关的特点,导致在实时系统的设计时面临着与原来的通 用系统截然不同的考虑因素。首先,在实时系统中最基本的是系统应该能够提供对时间正 确性进行指定的方法,即在实时系统中,不管是用户还是开发人员,都需要系统提供一种 指定时间尺度的方法,如在有的实时系统中,指定每隔一段时间就运行一段程序,或者是 提供指定程序必须在某个时间点之前完成的方法等。在实时系统中这是最最基本的要求。

这时,通用系统中的功能完全不适用了。例如,Unix 和许多类似的通用系统中都提供一 种延时的手段,但这种方法在实时系统中就无法达到要求,因为这种延时手段无法保证应 用能够在deadline 之前完成计算。

其次,是实时操作系统的设计或选用。现代实时系统一般都有实时操作系统。因为操 作系统使系统的设计更加的简便,保证系统的质量以及能够提供其他通用操作系统所提供 的服务。这样,实时的操作系统就面临着更高的设计要求。

最后,是实时系统的体系结构设计。实时系统的体系结构必须满足以下要求。

l 高运算速度 l 高速的中断处理 l 高的I/O 吞吐率

l 合理的处理器和I/O 设备的拓扑连接 l 高速可靠的和有时间约束的通信 l 体系结构支持的出错处理

l 体系结构支持的调度 l 体系结构支持的操作系统 l 体系结构支持的实时语言特性

另外,由于实时系统多应用于一些关键场合,因此系统的稳定性和容错非常重要。还 有,实时系统在自然的形态上大多有分布式的特点,所以还要考虑到实时的分布式应用。

此外,实时的通信也是实时系统的一大要求,很显然在分布式实时系统中实时的通信

是最基本的。实时通信必须满足逻辑正确并要有确定的延迟时间(或通信延时时间的上 限),其中包括建立通信的延迟和消息传递的延时。

以上是系统设计时的要点问题。从计算机科学角度出发,实时系统还必须解决以下 几点。

l 时间特性的指定和确定,这点与实际系统设计相同。

l 实时的调度理论。由于实时系统应用的特殊性,以往通用系统中以大吞吐量为目 标的调度算法必须改进以适应实时应用的需要。主要要求是满足时间的正确性,

然后提供高度动态的,满足在线需求的,适应性的实时调度。

l 实时操作系统的设计和实现。在设计上首要目标是提供保证实时性的方法,包括 一系列的经典问题的针对实时系统的解决方案。实现上要求操作系统的低开销,

而且必须保证内核以及其他关键的可重入性。

l 实时的编程语言和设计方法。在编程语言级完成或提供实时应用所需要的方法,

比如Ada 语言等。

l 分布式的实时数据库。

l 系统的容错。

l 实时时钟的同步。

l 实时系统中的人工智能。

作为实时系统,其特性决定了传统的性能衡量标准是不适用的。对传统的通用系统的 要求是大的系统吞吐量,合理的响应速度,对每个系统用户相对公平的进行计算资源的分 配。然而在实时系统中,以上这些要求都不再适用或者是不再占重要位置。实时系统中系 统的一切动作都以实时任务为中心。实时的数据吞吐取代了以吞吐量为目标的标准。对硬 实时应用的优先响应取代了对每个用户的恰当的反应速度。系统的计算资源和其他外设资 源必须优先满足实时应用的要求。针对实时系统新的要求,必须以实时的进程调度在实时 操作系统中是一个关键性的问题。

实时操作系统的实时进程调度的根本要求是保证实时任务的时间正确性。此外实时操 作系统的进程调度算法必须保证系统是可以事先定义的和易维护的。实时任务的时间正确 性以实时任务是否能够总是满足deadline 为标准。

3.5.1 实时进程调度算法

在多任务嵌入式系统中,系统对任务的响应时间是系统实时性能优劣的一个重要指 标。系统响应时间一方面取决于 CPU 的时钟频率、字长、指令,更主要取决于操作系统 对程序运行的调度方法。为了保证实时系统的各种事件要求,调度程序必须妥善安排任务 的调度过程,协调任务对系统的使用,这意味着调度程序应该能够预见任务的执行情况。

下面介绍嵌入式实时操作系统常用的几个调度算法。

(1) 静态的周期性调度

在控制系统的应用中,实时任务一般是各自独立的,周期性的;也有一些是由外部事 件来触发的,这样我们可以采用静态的周期性调度。这种调度算法的基本思想是将处理器 的时间分为“帧”。一个帧就是一个系统内部时钟触发时钟中断的基本时间间隔。每个实 时任务都在帧中占一段时间。仔细设计帧的大小可以保证系统中所有的实时任务都能在

deadline 之前完成。事件触发的实时任务则在每个帧中最后一个周期性实时任务完成之后 到帧结束这段时间内得以运行。

这种算法在系统相对简单,任务数少,又可以事先定义任务的执行顺序的情况下很有 效。还有一个更新的版本,即将一个大帧分为若干个级别较低的小帧。这个算法又称为同 步任务执行算法。

(2) FIFO 调度算法

FIFO 是另外一种简单的调度算法,即将系统中所有的任务组织成一个队列,先到先 服务。在简单的和静态的实时系统中可以事先安排好任务的执行顺序,预先组成队列。这 里要保证处理器执行的速度。当任务计算量一定,而处理器的执行速度合适时,FIFO 算 法完全可以满足实时的需要,而且可保证时间正确性。在设计队列和应用时要极力避免关 键任务长时间的阻塞。这种算法无疑是不精确的和适应性差的。

(3) 优先级队列算法

这种算法从 FIFO 发展而来,给每个任务设定优先级,然后在 FIFO 中按照优先级排 列。这种算法保证了高优先级的任务的完成,但是对于低优先级的任务很可能无法满足时 间的正确性,对低优先级的任务来说,等待的时间是无法预知的。我们无法知道在什么情 况下会发生时间正确性上的错误。而且必须在设计时仔细检查任务优先级的设定,保证不 会因为低优先级的任务无法按时完成而破坏整个系统的完整性。这个算法也是与特定应用 有关的。当环境或情况变化时系统无法随之变化。

以上调度算法都是独占的,即任务运行时,不允许别的任务抢先。完成一个任务后才 能完成下一个。下面介绍几种多任务的算法。

(1) Rate Monatomic/Pacing 算法

此算法是基于静态优先级调度协议的方法。此算法给系统中每个任务设置一个静态的 优先级。这个优先级的设定是在计算任务的周期性和任务需要满足的 deadline 的时间的长 短的基础上完成的。周期越短,deadline 越紧迫,优先级越高。按周期或计算要求将任务 细分成程序块,整个任务的执行开销为P/(C/CP)( P 是周期,C 是计算开销,CP 是块的大 小)。这样就将整个任务的执行按紧迫性要求分散在整个周期内。这种算法允许系统以多

此算法是基于静态优先级调度协议的方法。此算法给系统中每个任务设置一个静态的 优先级。这个优先级的设定是在计算任务的周期性和任务需要满足的 deadline 的时间的长 短的基础上完成的。周期越短,deadline 越紧迫,优先级越高。按周期或计算要求将任务 细分成程序块,整个任务的执行开销为P/(C/CP)( P 是周期,C 是计算开销,CP 是块的大 小)。这样就将整个任务的执行按紧迫性要求分散在整个周期内。这种算法允许系统以多

在文檔中 嵌 入 式 系 统 应 用 开 发 (頁 108-113)