没有合适的资源?快使用搜索试试~ 我知道了~
首页AUTOSAR-OS规范(一部分).docx
资源详情
资源评论
资源推荐

1. AUTOSAR OS 构架概述
2. AUTOSAR OS 在 AUTOSAR 构架中的位置
3. AUTOSAR OS 概念
3.1 任务管理
3.1.1 任务类别
任务分为两个类别:
· 基础任务:只有 running,suspended,ready 三个状态。
基础任务在三种情况下释放处理器资源:任务结束;操作系统切换到高优先级任
务;中断发生导致处理器切换到一个中断服务程序 ISR。
· 拓展任务:较之基础任务,多了一个 waiting 状态。拓展任务被允许调用系统
服务 WaitEvent。
3.1.2 任务状态及转换
任务状态
running 在任何时间点只有一个任务能处于 running 状态,CPU 将会被分
配到该任务,该任务的指令将被执行。
ready 所有的任务要转换为 running 状态都必须先处于 ready 状态,处
于 ready 状态的任务只需等待分配处理器就能转换为 running 状态。调度器决定哪一
个 ready 状态的任务将是下一个执行的任务。
suspended 处于 suspended 的任务是被动的,可以被激活。
waiting 处于 waiting 状态的任务将不能继续执行,它将等待至少一个事件
发生。
任务转换
running
wait
star
t
preempt
terminat
e

activate: 一个新的任务被设置成 ready 状态通过一个系统服务。AUTOSAR 操
作系统将确保任务从第一条指令开始执行。
(在多重激活情况下,任务激活不会立即改变任务状态。如果任务不是 suspended
状态,激活只会被记录,晚些时候被执行。)
start: 一个 ready 任务被调度器选择去执行。
preempt: 调度器决定去执行另一个任务,使得 running 任务进入 ready 状态。
terminate: running 任务通过调用系统服务导致它的状态转换为 suspended 状态。
(注:任务只自己结束自己)
以下两个状态转换为拓展任务特有
wait: 通过一个系统服务引起状态转换到 waiting 状态,waiting 任务等待一
个事件,以能够继续操作。
release: 至少一个任务等待的事件发生。
3.1.3 激活一个任务
使用操作系统服务 ActivateTask 或 ChainTask 激活任务。
AUTOSAR OS 不支持类 C 参数传递当启动一个任务时。
任务激活的多重请求
依据一致性类别,一个基础任务可以被激活一次或多次。“任务激活的多重请求”意
味着 AUTOSAR OS 接收和记录已经被激活任务的平行激活。
并行的多重请求的数目被定义在基础任务的一个特定的属性里在系统生产阶段。
如果没有达到多重请求的最大数目,那么请求是排队的。基础任务激活的请求按照激
活顺序里的优先级排序。
3.1.4 任务切换机制
调度器:决定哪一个任务应该开始运行和触发所有必须的 AUTOSAR OS 内部的
活动的实体被称作调度器。
在 AUTOSAR OS 里调度器是一个资源。依据实现的调度策略,每当要进行一次
任务切换时,调度器会被激活。任务可以保留调度器来避免任务切换直到调度器被该
任务释放。
ready
waiting
suspende
d
releas
e
activat
e

3.1.5 任务优先级
0 是最低优先级,数值越大优先级越高。
任务的优先级是静态定义的,在运行时不可以改变。但是在特殊情况下,操作系
统可以给一个任务一个定义的更高的优先级(详见优先级上限协议)。
BCC2 和 ECC2 支持相同优先级有多个任务。
在相同优先级的任务的开始顺序依据激活的顺序,通过拓展的任务进入 waiting
状态不会阻塞相同优先级里后面的任务的开始。被抢占的任务被认为是在它当前优先
级的 ready 清单里第一个任务(最老的任务)。
从 waiting 状态里释放的任务被当作它的优先级的 ready 序列里的最后的任务
(最新的)。
决定下一个要执行的任务的基本的步骤:
· 调度器搜索所有的处于 ready/running 状态的任务
· 从处于 ready/running 状态中的任务集合,调度器判定拥有最高优先级的任
务集合
· 在拥有最高优先级处于 ready/running 状态的任务集内,调度器找到最老的
任务。
3.1.6 调度策略
3.1.6.1 全抢占调度
全抢占调度意思是一个目前处于 running 状态的任务可能在任何的指令处被重调
度,通过操作系统预置的触发条件的发生。全抢占调度会使得 running 任务转化为
ready 状态,只要一个更高的优先级的任务处于 ready 状态。任务环境被保存以便被
抢占的任务可以在被中断的位置继续。
对于全抢占调度延迟时间与低优先级任务的运行时间无关。一些限制关于为了保
存环境要求增加的 RAM 内存和为了同步任务而必须的特征的增强的复杂性。由于理论
上一个任务可以在任何位置被重调度,对于与其它任务共享的数据的访问应该被同步。
如果一个任务的代码段不能被抢占,那么它应该调用系统服务 GetResource 给
调度器上锁。
总之,重调度将在下面情况发生:
· 一个任务成功结束(TerminateTask、ChainTask)
· 激活一个任务在任务层
· 显式 wait 调用如果一个到 waiting 状态的调用发生(WaitEvent)
· setting 一个事件到一个 waiting 任务在任务层
· 释放资源在任务层上(ReleaseResource)

· 从中断层返回到任务层
在中断服务程序运行期间,不执行重调度。
3.1.6.2 非抢占调度
如果任务切换只通过一个选择的显式的定义的系统服务执行(显式的重调度点),
这样的调度策略被描述为非抢占调度。
非抢占调度强加特殊的约束在可能的任务的时间要求上。特别是一个低优先级的
running 任务的非抢占区域,延迟一个高优先级任务的开始到下一个重调度点。
在非抢占任务情况下,重调度将在下面情况发生:
· 一个任务成功结束(TerminateTask、ChainTask)
· 显式的调用调度器(Schedule)
· 发生到 waiting 状态的转换(WaitEvent)
非抢占调度系统的实现可能规定(导致重调度的)操作系统服务可能只能在最高
任务程序层被调用(不是在子函数里)
3.1.6.3 任务组
操作系统允许任务去结合抢占和非抢占调度方面通过定义任务组。对于有着同任
务组内最高优先级一样或者更低优先级的那些任务,在这个任务组内的任务表现得像
非可抢占任务:重调度将会发生在重调度点(理解:任务组内的低优先级任务不会被
那些比他高的任务组外的任务抢占,因为它的优先级被调整到任务组内最高的优先级,
任务组内外就表现的像非可抢占任务调度一样,因为没有任务会被抢占)。对于有着
比任务组内最高优先级更高的优先级的那些任务,在任务组内的任务表现得像可抢占
调度。
通过使用内部的资源来定义组合。
非可抢占任务是非常普遍使用的内部资源的概念:它们是拥有一个特别的分配了
最高优先级的内部的资源的任务。
非可抢占任务是一个特别的组合拥有一个资源有着相同的 RES_SCHEDULER 分
配的优先级。
3.1.6.4 混合的抢占调度
如果可抢占调度和非可抢占调度被混合在相同的系统里,产生的调度策略被称为
“混合的抢占”调度。在这个情况里调度策略依据 running 任务的抢占属性值。如果
running 任务是非可抢占的,那么非可抢占调度被执行。如果 running 任务是可抢占
的,那么抢占调度被执行。
一个非可抢占任务的定义在一个全抢占操作系统里有意义
· 如果任务的执行时间同任务切换的时间处于相同量级

· 如果 RAM 被用来提供空间去保存任务环境比较经济,或者
· 如果任务不能被抢占。
3.1.6.5 选择调度策略
软件开发者或系统集成者决定任务的执行顺序通过配置任务优先级和分配可抢占
性作为一个任务属性。
任务的类型(基础的或拓展的)独立于任务的调度类型(可抢占或非可抢占)。
如果一个操作系统服务在运行,抢占和环境切换可能会被延迟直到服务完成。
3.1.7 任务的结束
在 AUTOSAR 操作系统里,一个任务只可以自我结束。
每个任务应该结束自己在它的代码的最后。不调用 TerminateTask 或
ChainTask 结束任务被严格禁止且这会导致未定义的行为。
3.2 事件
事件是由操作系统管理的对象。事件机制只提供给拓展的任务,它开始任务从
waiting 到 ready 和 running 到 waiting 状态的转换,是一种同步的方法。
每个任务有一个确切数量的事件集。这个任务被称作那些事件的所有者。一个个
别的事件被识别通过它的所有者和它的名称(或掩码)。事件可以被用来传达二进制
信息到(事件分配到的)拓展的任务。
有多种可用的选项去操作事件,要看特有的任务是事件所有者任务还是另一个任
务(每必要一定是拓展的任务)。任何任务可以设置任何非 suspended 任务的任何
事件,但是只能事件的所有者可以清除事件和等待事件的接收。
任何的任务或者第二类中断可以设置一个事件给一个非 suspended 任务,这样
通过这个事件通知这个拓展的任务关于任何状态的改变。
任何情况下一个事件的接收者是一个拓展的任务。因此,不可能一个中断服务程
序或一个基础的任务等待一个事件。一个事件只能被该事件的所有者任务清除。
如果至少一个任务正等待的事件已经发生,该处于 waiting 状态的拓展的任务被
释放到 ready 状态。如果一个拓展的任务试图等待一个事件,而这个事件已经发生,
该任务继续在 running 状态。
3.3 资源
资源管理被用来协调有着不同优先级的几个任务对共享资源的并发访问。
资源管理对于所有的一致性类别是强制的。
资源管理可以视情况的被拓展到协调任务和中断服务程序并发的访问。
剩余38页未读,继续阅读














安全验证
文档复制为VIP权益,开通VIP直接复制

评论0