作者 |郭建 上海控安可信软件创新研究院特聘专家
版块 |鉴源论坛 · 观模
汽车上大量软件和电子控制单元(ECU,Electronic Control Unit)的使用导致了汽车电子架构变得更为复杂,现如今从工厂生产的汽车更像是带轮子的电脑。现代汽车由大约50到上百个电子控制单元组成,而且每年的数量还在增加。每个电子控制单元负责特定的功能,它们之间通过某种总线相互通信,例如CAN、FlexRay、LIN等。每多一个连接到系统上的电子控制单元,系统的复杂性都会增加。汽车电子系统都必须配置对应的应用程序和软件,而每次新硬件出现时,应用程序都需要被重写来支持硬件的更新。
为了应对这种令汽车电子系统软件难以管理的局面,德国汽车工业界共同提出了一个开放的标准接口OSEK/VDX。2003年,几个在汽车领域领先的原始设备制造商和汽车行业的一级供应商决定为了未来汽车电子的发展,共同在OSEK/VDX的基础上制定一个新标准,而这个标准就是AUTOSAR(AUTomotive Open System ARchitecture)。其旨在成为行业内的共享软件架构框架,而背后的原因是汽车电子系统复杂性的增加。AUTOSAR标准的产生可以通过提供一个各方共同认可的架构来允许制造商在功能而非架构上展开竞争。共享同一个架构的好处包括制造商和软件公司可以开发适合汽车市场的通用软件,提高汽车电子系统的灵活性、可扩展性和质量。
作为车载操作系统,实时性对于AUTOSAR OS的重要性不言而喻,如何保证操作系统中的计算单元在截止时间内完成是极其重要的。而AUTOSAR OS提供的调度表机制是系统中一个重要的任务激活机制。调度表通过包含一组封装了动作和偏移量的终结点来设定任务的激活方式。由于调度表机制的特殊性,任务的调度情况变得更加复杂,这使得调度表的可调度性非常重要。本文将针对AUTOSAR OS调度表进行可调度性分析。
01AUTOSAR OS任务和调度表
任务是AUTOSAR OS中的一个重要概念,被看作是操作系统中最小的调度单位,也是最基本的功能单位,即使是最简单的应用也需要至少一个任务来完成它的功能。AUTOSAR OS中提供了两种任务:基本任务和扩展任务。
AUTOSAR OS 中使用静态优先级调度策略,不论是基本任务还是扩展任务都被静态地分配到一个优先级,并且为了保证系统的运行效率,任务的优先级是在系统设计阶段被静态配置的,不允许在系统运行时更改。因为AUTOSAR OS允许多个任务共享同一个优先级,在AUTOSAR OS中为每一个优先级维持一个队列,相同优先级的任务采用先来先服务的调度方法。
调度表是AUTOSAR OS中新引入的一种调度机制,它是对OSEK/VDX OS中使用定时器激活周期性任务的一种改进。调度表通过将一组任务静态地封装到终结点中,让有关联的任务按照规定的时间和顺序激活。其中一个终结点封装了:
•行为:激活任务或者是设置事件,一个终结点至少包含一个行为。当终结点被处理时,其包含的行为将被执行。
•偏移量:在一个调度表中,每个终结点都有一个唯一的偏移量,这个偏移量是一个相对时间,标示终结点与调度表起点的距离。各个终结点偏移量之差代表了终结点被处理时间之间的的延迟。调度表中第一个终结点的偏移量被称作此调度表的初始偏移量,最后一个终结点的偏移量到调度表结束的时间差被称为最终延迟。
每个调度表都有一个持续时间表示它完全运行一次需要的时间。在调度表启动后,AUTOSAR OS会使用一个迭代器遍历调度表,并按照偏移量递增的顺序依次处理每个终结点。AUTOSAR OS中定义了两种调度表:周期性和非周期性调度表。如果一个调度表被配置为非周期性的,当最后一个终结点被处理之后,AUTOSAR OS会停止遍历此调度表。而当周期性调度表的最后一个终结点被处理,经过最终延迟之后,AUTOSAR OS会从调度表的开始处再次遍历。
图1展示了一个周期性调度表的实例。在这个调度表中共包含三个终结点,持续时间为17。
图1 调度表结构
02调度表的形式化模型
2.1 任务模型
作为比调度表更小的调度单位,在对调度表建立模型之前,首先需要对任务进行合理的抽象,并建立任务模型。AUTOSAR OS中的任务被抽象为三个属性:
(1)最坏情况执行时间,即处理器执行这段代码最长的用时;
(2) 截止时间,即任务的最坏情况响应时间应当少于的时间;
(3)优先级,数字越小说明优先级越高。
综上,描述AUTOSAR OS中任务的模型被定义如下:
定义1:一个任务是一个三元组 T=(CT, DT, PT),其中:
● CT ∈ N+任务的最坏执行时间,下文简称执行时间;
● DT ∈ N+代表了这个任务的截止时间;
● PT ∈ N+ 代表了这个任务的优先级。
任务模型隐含地假设对所有任务T都满足CT ≤ DT ,因为可调度性要求系统中所有任务都能够在截止时间之内完成计算。如果一个任务的执行时间超出了它的截止时间,那么它将永远无法满足时间特性需求,也就无法进行可调度性分析。
2.2 调度表的形式化模型
AUTOSAR OS中的调度表提供了新的任务激活模式,一个调度表中各个任务的激活时间存在关联:同一个终结点上的任务都会被同时激活,对于不同终结点上的任务,它们的激活时间之间存在固定延迟。虽然周期性调度表使其中的任务以周期性激活,但调度表模型应当能够描述出任务激活时间之间的关系。这里给出了基于有向图的模型来描述调度表的时间特性与行为,其定义如下:
定义2:一个调度表ST由一个有向图G(ST)= (V (ST),E(ST)) 表示。其中V (ST) 是有向图中顶点的集合,E(ST) 是顶点之间的边的集合:
● V (ST) = {ep1, . . . ,epn},表示调度表中所有终结点组成的集合,其中的一个终结点ep = {T1, . . . ,Tk}是一个集合,包含了终结点封装的所有任务;
● G(ST) 中边的指向表示了调度表中终结点被处理的顺序。每一条边(epu,epv ) ∈E(ST) 都有一个权值p(epu,epv ) ∈ N+ ,表示两个终结点偏移量之差,即它们被处理时间之间的延迟。
在这个模型中,并没有标示第一个终结点和最后一个终结点。当调度表是周期性的时候,最后一个终结点被处理后再经过最终延迟加初始偏移量,调度表的第一个终结点会被再次处理。所以可以将最后一个终结点到第一个终结点之间的延迟看作是最终延迟与初始偏移量的和。在调度表模型中,每个ep ∈ V (ST) 都不是空集。为空集的ep对系统的运行来说没有任何用处,通过简单的转换就可以消除它们。
AUTOSAR OS中,多个任务可以共享同一个优先级,所以当多个相同优先级的任务争用处理器时,它们激活时间的不同导致了调度情况的不同。而定义的任务模型并不包括激活时间的属性。为了将AUTOSAR OS任务的激活时间属性表示出来定义了作业的概念。
定义3:作业表示一个任务在某个时间点被激活产生的实例。一个作业J=(CJ ,DJ ,PJ ,RJ ) 由一个四元组表示,除了与任务同样使用CJ 、DJ 和PJ 来表示这个作业的执行时间、截止时间以及优先级之外,还使用了RJ ∈ N+ 来表示这个作业被激活的时间。一个作业就代表着一个任务被激活一次。
03调度表可调度性分析
AUTOSAR OS调度表中一个作业被阻塞和抢占的时间可以分为三个部分:
● 第一部分是在作业激活之前,本地调度表激活的高优先级或相等优先级作业的执行时间。
● 第二部分是作业激活之后,本地调度表激活的高优先级作业的执行时间。
● 第三部分是其他调度表激活的优先级更高或优先级相同,但激活时间更早作业的执行时间。
它们分别对应前缀需求函数、需求函数和最大需求函数的计算,用这种方法计算出的第一部分与第二部分之间有重叠,它们都包含了作业J所在终结点实例P(J)对作业J的影响值,需要减去这部分的重叠时间,就得到作业J被阻塞和抢占的时间。
除了使用需求函数、最大需求函数以及前缀需求函数外,还引入了忙碌窗口的概念。
对于一个优先级P,P的忙碌窗口是一个时间段。在这个时间段中处理器持续地执行优先级高于或等于P的作业。即在这个时间段内处理器不会执行优先级小于P的作业,也不会空闲。
最长的忙碌窗口并不一定能导致作业的响应时间最长,而且也很难预测导致最坏情况响应时间出现时忙碌窗口的确切大小。但是通过这个忙碌窗口长度的上限,可以列举所有忙碌窗口大小的可能性。所以为了计算任务最坏情况响应时间,遍历所有忙碌窗口的大小直到上限,就可以得到此任务的可调度性。
对于AUTOSAR OS,其调度表集合T= {ST1,ST2, . . .STn},分析AUTOSAR OS可调度性的完整的方法可以被分为以下四步:
(1)将调度表集合中所有的任务组成一个任务集合t= T1,T2, . . . ,Tq,然后进入第二步。
(2)如果任务集合t为空,则此AUTOSAR OS 就是可调度的;如果不为空,任意选中t中一个任务Tk(k ∈[1,q]),然后进入第三步。
(3)使用任务的前缀需求函数、需求函数、最大需求函数和忙碌窗口的分析,得出该人的可调度性,如果Tk 是不可调度的,那么此AUTOSAR OS 就是不可调度的;如果Tk 是可调度的,进入第四步。
(4)更新任务集合t=t-Tk,然后再回到第二步。
上述步骤描述的AUTOSAR OS可调度性分析方法如图2所示:
图2 调度表可调度算法
算法SCHEDULABILITY (t) 的目的是找出AUTOSAR OS中一个不可调度的任务并声明这个系统是不可调度的,或者当系统中的所有任务都可调度时,声明是可调度的。它的初始输入是AUTOSAR OS中所有任务的集合t,输出为真时说明系统是可调度的,输出为假时说明系统是不可调度的。其中第一到四行对应着步骤2,判断任务集合为空并声明系统可调度,或者在任务集合中任取一个任务。第五到十行对应步骤3和步骤4,其中第五行使用算法TASK_ANALY SIS(T)检查任务是否是可调度的,如果是可调度的,那么就在t中将该任务删除,然后迭代执行此算法;如果取到的任务不可调度,就直接声明这个AUTOSAR OS是不可调度的。
04小结
本文研究了AUTOSAR OS中的任务、调度表机制,并使用了一个基于有向图的模型描述AUTOSAR OS中调度表的时间特性及行为,继而提出适用于AUTOSAR OS的可调度性分析方法。通过将路径抽象成运行时间,提出需求函数、最大需求函数以及前缀需求函数来分析作业被抢占和阻塞的时间,提出了针对AUTOSAR OS调度表的可调度性分析方法。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !