0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AUTOSAR调度表可调度性的形式化分析

上海控安 来源:上海控安 作者:上海控安 2022-12-16 14:01 次阅读

作者 |郭建上海控安可信软件创新研究院特聘专家

版块 |鉴源论坛 · 观模

汽车上大量软件和电子控制单元(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。

poYBAGOcBvqAQmO0AAB-CJRHEnc353.png

图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所示:

poYBAGOcB9eAa2GeAABpnM78JCM853.png

图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调度表的可调度性分析方法。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AUTOSAR
    +关注

    关注

    9

    文章

    329

    浏览量

    21136
  • ecu
    ecu
    +关注

    关注

    14

    文章

    821

    浏览量

    53884
  • 车载操作系统

    关注

    0

    文章

    12

    浏览量

    7291
收藏 人收藏

    评论

    相关推荐

    STM32F103 FreeRTOS任务调度异常的原因?

    ) { vTaskDelay(500); //延时函数(任务调度) printf(\"Task1rn\");//串口打印 } } void Task2_Task(void
    发表于 04-16 06:24

    FreeRTOS任务调度器的三种调度算法讲解(下)

    配置如下时,调度算法就会变成不带时间片的抢占式调度
    的头像 发表于 03-21 13:46 609次阅读
    FreeRTOS任务<b class='flag-5'>调度</b>器的三种<b class='flag-5'>调度</b>算法讲解(下)

    鸿蒙OS 分布式任务调度

    鸿蒙OS 分布式任务调度概述 在 HarmonyO S中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的“超级虚拟终端”提供统一的组件管理能力,为应用定义统一的能力基线、接口形式
    的头像 发表于 01-29 16:50 240次阅读

    详解AUTOSAR-OS的调度机制

    调度表由一系列按时间先后顺序排序的终结点组成,其中每个终结点都有自己的任务,有的终结点可能是激活一系列的任务,有的是设置一系列的事件,还有的可能是既激活一系列的任务又设置一系列的事件。
    的头像 发表于 11-16 16:43 1382次阅读
    详解<b class='flag-5'>AUTOSAR</b>-OS的<b class='flag-5'>调度</b>机制

    调度运行操作设备介绍

    调度运行操作设备介绍
    的头像 发表于 11-09 15:55 261次阅读
    <b class='flag-5'>调度</b>运行操作设备介绍

    什么是Linux进程调度

    1、背景知识 1.1 什么是调度器 通常来说,操作系统是应用程序和可用资源之间的媒介。 典型的资源有内存和物理设备。但是CPU也可以认为是一个资源,调度器可以临时分配一个任务在上面执行(单位是时间
    的头像 发表于 11-09 09:05 266次阅读
    什么是Linux进程<b class='flag-5'>调度</b>器

    AUTOSAR OS操作系统功能特性

    汽车电子系统中的软件任务和中断。它提供了以下功能特性: 任务和中断管理:AUTOSAR OS可以创建、启动、停止和删除任务,并处理中断请求。它可以根据任务的优先级和调度策略来调度任务的执行,确保任务
    的头像 发表于 10-27 16:55 1243次阅读

    CDN调度策略介绍

    DNS 调度 基于请求端 local DNS 的出口 IP 归属地以及运营商的 DNS 调度。 DNS 调度的问题: DNS 缓存时间在 TTL 过期前是不会刷新的, 这样会导致节点异常的时候自动
    的头像 发表于 10-09 16:07 525次阅读

    国产调度器之光——Fsched到底有多能打?

    这是一篇推荐我们速石自研调度器——Fsched的文章。看起来在专门写调度器,但又不完全在写。往下看,你就懂了。 本篇一共五个章节: 一、介绍一下主角——速石自研调度器Fsched 二、只要有个
    的头像 发表于 08-30 22:01 355次阅读
    国产<b class='flag-5'>调度</b>器之光——Fsched到底有多能打?

    算力调度让算力高效利用 算力调度促进数字经济发展

    中国信息通院近日发布首批算力调度评估结果,天翼云通过评估。当前,算力网络快速融合
    的头像 发表于 08-25 16:42 1027次阅读

    形式化方法的工业应用:轨交领域

    文将聚焦于轨交领域,从领域专用的需求撰写与分析工具Prema入手,介绍形式化方法在工业中的实际应用。
    的头像 发表于 08-08 15:20 310次阅读
    <b class='flag-5'>形式化</b>方法的工业应用:轨交领域

    讯维综合调度中心案例分享

    院图像综合调度系统,可将市单位原有的重点区域监控视频、看守所监控视频、办案区及各基层院办案区音视频资源、相关案件可视化分析结果、移动侦查指挥音视频资源、视频接访音视频资源、远程庭审音视频资源等十几类不同业务
    的头像 发表于 07-27 09:52 202次阅读
    讯维综合<b class='flag-5'>调度</b>中心案例分享

    CDN常见的调度类型有哪些

    CDN通过调度的方式,选择最优节点为终端网民提供加速服务,那么调度方式显得尤为重要。在实际运用中,一般会采用4种调度类型,分别是DNS调度、HttpDNS、边缘302
    的头像 发表于 06-28 15:31 1078次阅读
    CDN常见的<b class='flag-5'>调度</b>类型有哪些

    调度线程池ScheduledThreadPoolExecutor源码解析

    `ScheduledThreadPoolExecutor`可以用来很方便实现我们的调度任务,具体使用可以参考调度线程池ScheduledThreadPoolExecutor的正确使用姿势这篇文章,那大家知道它是怎么实现的吗,本文就带大家来揭晓谜底。
    的头像 发表于 05-11 10:45 279次阅读
    <b class='flag-5'>调度</b>线程池ScheduledThreadPoolExecutor源码解析

    当没有进程可调度时内核在做什么呢?

    内核的主要职责是进程调度,比如当一个进程阻塞时,它会调度另外一个进程来执行。
    的头像 发表于 05-08 10:02 279次阅读