一个实时系统模型由三个部分组成,调度与资源访问控制、处理器和资源等,实时系统与通用操作系统不同,实时系统是应用在某个具体的场合中,且实时系统的任务必须在时限内完成。实时系统的设计就是要采用合适的任务调度算法,保证任务在时限内完成,而不论是否发生其他事情。实时系统注重的是个体表现,更准确地讲是个体最坏情况表现,即在最坏情况下也要保证个体的处理在其时限内完成。

外文名

Real-time system model

基本介绍

一个实时系统模型由三个部分组成,如图1所示。任务图位于图的上面部分,它给出了任务的执行时间、资源需求、定时约束和任务之间的依赖关系。下面部分是资源图,描述资源的数量和属性,以及使用资源的规则。在中间是操作系统使用的调度和资源访问控制算法。注意,图中给出的是简化了的模型,有些参数和关系没有详细表示出。

图1 实时系统模型

实时系统的可预测性

实时系统的可预测性包含两个方面:第一个方面是指任务处理在没有被打断的情况下的执行时间可预测,主要指任务的最长处理时间是可预测的;第二个方面是指实时系统在多任务调度、资源分配和需要中断服务的情况下,各任务保证在时限内完成处理。实时系统采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测的系统可靠性更高。

通用操作系统的设计注重多个任务的平均表现性能,尽量缩短系统的平均响应时间和提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。

一切导致系统不可预测的因素都是实时系统设计者所不期望的,比如Cache的使用。Cache在通用计算机中的使用很普遍,它能有效地减少存储器存取的时间,以增加系统的平均吞吐率。Cache分配算法之一就是当前执行的任务完全占有整个Cache,这种方法使Cache的命中率很高,从而减少了存取数据的时间。在通用计算机系统中,这是一种常用的方法。但是,对于实时系统的设计者来说,这种方法导致了任务执行时间不可预测。下面举一个例子说明。

已知任务A在未被其他任务打断时的执行时间为

。当A在执行过程中,一个高优先级的任务B就绪了,系统就会中断A,然后转为执行B,这时A已经执行的时间有

。B执行完后,系统转回A被打断处继续执行,直到完成A,这时任务A又被执行了

长的时间。

一定等于

吗?不一定!因为当任务B执行时,Cache中A的一些存储块会被B所替换。当A继续执行并存取被替换的Cache块时,就会发生Cache失效(miss),所以就会用更长的时间存取数据。如果没有B任务,就不会有这种Cache失效发生。因此

一般会大于

。在有Cache的系统中,A任务的执行时间就与A被抢占的次数有关和每次抢占后Cache被替换的状态有关。实时系统在计算所有任务是否满足各自的时限时,事先知道任务的确切执行时间是很重要的。Cache使任务的执行时间不可预测,所以对于实时系统来讲,要合理管理Cache,使用Cache冻结、旁路等模式。

实时系统任务的分类

实时系统的任务有两种分类方法:第一种是根据任务到达时间是否可预测来分类;第二种是根据任务没有在时限内处理完而所造成后果的严重程度来分类。

根据第一种分类方法,可以把实时系统的任务分为周期任务和非周期任务。

●实时系统中有很多任务被重复地执行。例如,在飞机上,传感器要每隔100ms对飞机的速度、高度和姿态等参数进行采集。这些传感器采集的信息送到实时控制计算机中,作为周期任务的输入参数。这些周期任务调整飞机的副翼、方向舵等控制面,以保持飞机的稳定。周期任务是设计者已知的,所以这类任务的调度方法可以预先设定。

●除周期任务外的其他任务是偶尔出现的,两次任务的释放时间间隔服从某种概率分布。例如,飞行员需要飞机转弯,一系列相关任务会被执行。非周期任务是不可预测的,系统必须保留足够的时间来执行这些任务。非周期任务中,必须在严格的时限内完成的任务又称为偶发(sporadic)任务。

根据第二种分类方法,可以把实时系统的任务分为关键(critical)任务和非关键任务。

●关键任务需要在时限内完成,否则后果会很严重,例如,飞机的稳定控制系统。但是,关键任务的发生频率可能过高,并不需要每次发生都需要成功地执行。比如,一个关键的周期任务每发生n次,只需要执行完一次就可以保证系统的正常。

●非关键实时(或称为软实时)任务对系统的重要程度较低。非关键任务处理的数据常常是随时间变化的,所以如果没有在时限内完成非关键任务,它们就没有价值。调度非关键任务的目标就是尽量提高非关键任务完成的百分比。

实时系统的模型

系统资源、处理器和资源

系统资源分为两大类:处理器和资源。

这里所指的“处理器”是抽象的,包括CPU、磁盘、网络链路和数据库服务器等具有计算、检索和传输功能的部件。处理器执行机器指令、搬移数据、检索文件和处理查询。每个任务的执行必须拥有一个或多个处理器。处理器又常被称作服务器和主动资源。如果两个处理器功能是一样的并且可以交换使用,就可以认为它们是同一类型。

“资源”一词专指被动资源,如内存、互斥量和资源锁。任务执行除了需要处理器外,还需要一些资源。资源在使用的过程中不会被消耗掉,所以资源是可重用的。如果某种资源是丰富的,总是能被任务得到,它就不会在实时系统模型中出现,这样做的目的是为了简化模型。

实时系统任务的参数

一个任务可以由其时间参数、功能参数、资源参数和互联参数来表征。时间参数说明了任务的定时约束和行为,如时限和释放时间。功能参数说明任务的内在属性,如价值函数和可抢占性(可抢占性指任务执行时可以被其他任务抢占)。资源参数说明任务的资源需求。互联参数描述任务如何依赖于其他任务以及其他操作如何依赖于它。

定时约束

定时约束:执行时间、释放时间、响应时间、绝对时限、相对时限

任务的执行时间是指任务单独执行并拥有所有它需要的资源时,完成任务的执行所需要的时间量。任务执行时间可能在

之间变化,一般我们所指的任务执行时间是

任务的释放时间又称为到达时间,它是一个时刻,在这个时刻上,任务能够执行。从释放时间开始,只要任务所需的数据或其他条件得到满足,就可以被调度和执行。

任务的响应时间是指任务的释放时间到完成时间的时间长度。

任务的相对时限是指任务的最大允许响应时问。

任务的时限是一个时刻,要求任务在此时刻之间完成它的执行。任务的时限也称为绝对时限。任务的绝对时限等于释放时间加上其相对时限。

下面举一个例子说明。一个实时系统中有一个中断,其发生的周期是100ms,这个中断在

等时刻发生,其中k为自然数。中断服务程序(即任务)的执行时间为60ms。

①任务的释放时间(时刻):

②任务的执行时间(一段时间):

③任务的绝对时限(时刻):

④任务的相对时限(一段时间):

⑤任务的响应时间(一段时间):

,任务的响应时间可以是变化的。周期任务的模型

周期任务指释放时间间隔是一个常数的任务。任务的释放时间和执行时间的抖动会影响周期任务模型的准确程度。

假设系统中有n个任务:

,各个任务的周期对应为

。H为所有任务周期的最小公倍数,称H为系统的超周期(hyperperiod)。每个超周期中执行的H任务个数为

。任务的利用率

定义为任务的执行时间和周期的比值,即

。系统各任务利用率的总合称为总利用率,用U表示。

举一个例子:某实时系统中有3个周期任务,其周期分别为3、4和10,对应的执行时间分别为1、1和3,则系统的超周期为60,每个超周期中执行的任务数为41,各任务的利用率为0.33、0.25和0.3,系统总利用率为0.88。这个系统的处理器在88%的时间内处理任务。

执行次序图(precedence graph)

任务间的数据的相关性和控制的相关性可能限制任务的执行次序。如果要按照某种次序执行任务,则称任务具有“优先约束(precedence constraints)”。否则,如果任务可以按照任意次序执行,则称它们是独立的。

这里采用符号“<”来说明任务之间的先后约束关系。如果任务

必须在任务

完成之后才能执行,则称

的“先趋”,

的“后继”,并可用符号

表示。如果

,并且没有其他任务

使得

,则称

的“直接先趋”,

的“直接后继”。

可以用执行次序图表示任务集合T中任务之间的优先约束。图中的顶点表示一个任务,如果任务

的直接先趋,从顶点

就有一条有向的边。图2为一个有5个任务的实时系统的执行次序图。

图2 一个实时系统任务的执行次序图

从图中可以得到:

如果在执行次序图的结点标上任务的释放时间和绝对时限,该图就被称为任务图。表示任务之间的数据依赖关系可用有向的数据相关连线连接任务,以表示任务之间的数据相关关系。数据相关连线的起点是生成数据的任务,数据相关连线的终点是使用数据任务,数据量的大小可标示在数据相关连线上。

功能参数

任务的功能参数会影响调度和资源访问控制算法,这些功能参数主要有任务的可抢占性、任务的重要程度(criticality)和任务价值函数。

系统中任务常常是交替执行的。调度程序可能挂起一个不是特别紧急的任务,把处理器让给更紧急的任务执行。如果一个任务的执行在任何时候都可以被挂起,以便让其他任务执行,随后又可以在挂起点被恢复执行,就称此任务是可抢占的(preemptable)。如果一个任务必须从头执行到尾,中途不能中断,则称任务是不可抢占的。之所以有这种限制是因为,如果任务在执行中被挂起并把处理器让给其他任务,那这个被挂起的任务就必须重新从头开始执行。有时,一个任务可能在一小段是不可抢占的,比如中断服务任务,它在开始执行时要保存处理器的状态,这一段是不可抢占的。

任何系统中,任务都不是同等重要的。某个任务的重要性指明了相对于其他任务来讲这个任务有多重要。当系统负荷过重以至于调度不能满足所有任务的时限要求时,牺牲重要性低的任务是有实际意义的,这样能使重要性高的任务满足时限要求。这种系统中,任务的重要性信息就要送给调度程序使用。

资源参数

实时系统资源包括处理器和资源,处理器也可看作是资源的一种。任务的资源参数从应用的角度给出了处理器和资源的部分描述。任务的资源参数包括执行任务的处理器类型、任务需要的每种类型的资源的数量和任务执行时需要某种资源的时间间隔。

如果一种资源的每个单元必须连续使用,则此资源是不可抢占的。换句话说,一旦不可抢占资源的单元被分配给了一个任务,其他需要此资源的任务必须等到这个任务用完以后才能使用该资源。如果任务可以同时使用一种资源中的不同单元,则此资源是可抢占的。

可用资源图描述资源的配置和资源间的连接关系。资源图中的一个顶点表示一种资源,顶点的属性是资源的参数,包括资源的类型和资源的单元数。资源图中连接资源的边有两种:第一种,

,表示

的一部分,如计算机资源包含CPU资源和内存资源;第二种连接表示资源是可访问的,如两台计算机的CPU之间有连接,表示每个CPU都可以被另外的一台计算机访问。调度程序和性能

调度程序根据所选择的一组调度算法和资源访问控制协议,来对任务进行调度和资源分配。调度程序把处理器分配给任务,也可以反过来说,调度程序把任务分配给处理器。调度程序产生的调度为有效时,需要满足的条件为:

●任何时候,每个处理器最多只分配给一个任务;

●任何时候,每个任务最多只分配到一个处理器;

●所有任务在释放之前都没有被调度;

●根据所使用的调度算法,给每个任务分配的处理器时间之和等于其最大执行时间或实际执行时间;

●所有的优先约束和资源使用约束满足。

如果所有的任务按照其时限完成,就称相应的调度程序是可行调度。如果调度程序对某个任务集合总是能产生可行调度,则称这个任务集合是可调度的。除了可行性准则外,调度程序的其他性能参数包括最大与平均延缓时间(tardiness)、最大与平均延迟时间(lateness)、超时率(miss rate)、丢失率(loss rate)和无效率(invalid rate)。

①延缓时间是任务的响应时间与其执行时间的差。如果任务在释放后立即执行,并没有被其他任务打断,则延缓时间为0,达到最小延缓时间。

②延迟时间是任务的响应时间与其相对时限的差。和延缓时间不同,延迟时间有负值。当任务的响应时间小于相对时限时,即任务及时完成,延迟时间就是负值。

③超时率是指已经执行但完成得太晚的任务的百分比。

④丢失率是指被放弃的任务的百分比,也就是根本没有执行的任务的百分比。

⑤无效率是超时率和丢失率之和,它给出了任务中没有产生有效结果的百分比。实时系统希望无效率尽可能小。