AUTOSAR任务管理 下载本文

内容发布更新时间 : 2024/11/17 23:53:16星期一 下面是文章的全部内容请认真阅读。

该文件从os223.pdf,依据AUTOSAR OS规范进行了部分调整。 作者:邓孔宏 1.1

任务管理

1.1.1 任务类别

任务分为两个类别:

· 基础任务:只有running,suspended,ready三个状态。

基础任务在三种情况下释放处理器资源:任务结束;操作系统切换到高优先级任务;中断发生导致处理器切换到一个中断服务程序ISR。

· 拓展任务:较之基础任务,多了一个waiting状态。拓展任务被允许调用系统

服务WaitEvent。

1.1.2 任务状态及转换 任务状态

running 在任何时间点只有一个任务能处于running状态,CPU将会被分配到该任务,该任务的指令将被执行。

ready 所有的任务要转换为running状态都必须先处于ready状态,处于ready状态的任务只需等待分配处理器就能转换为running状态。调度器决定哪一个ready状态的任务将是下一个执行的任务。

suspended 处于suspended的任务是被动的,可以被激活。

waiting 处于waiting状态的任务将不能继续执行,它将等待至少一个事件发生。 任务转换 waiting wait start ready release activate preempt running terminate suspended

activate: 一个新的任务被设置成ready状态通过一个系统服务。AUTOSAR操作系统将确保任务从第一条指令开始执行。

(在多重激活情况下,任务激活不会立即改变任务状态。如果任务不是suspended状态,激活只会被记录,晚些时候被执行。)

start: 一个ready任务被调度器选择去执行。

preempt: 调度器决定去执行另一个任务,使得running任务进入ready状态。 terminate: running任务通过调用系统服务导致它的状态转换为suspended状态。 (注:任务只自己结束自己) 以下两个状态转换为拓展任务特有

wait: 通过一个系统服务引起状态转换到waiting状态,waiting任务等待一个事件,以能够继续操作。

release: 至少一个任务等待的事件发生。

1.1.3 激活一个任务

使用操作系统服务ActivateTask或ChainTask激活任务。 AUTOSAR OS不支持类C参数传递当启动一个任务时。 任务激活的多重请求

依据一致性类别,一个基础任务可以被激活一次或多次。“任务激活的多重请求”意味着AUTOSAR OS接收和记录已经被激活任务的平行激活。

并行的多重请求的数目被定义在基础任务的一个特定的属性里在系统生产阶段。如果没有达到多重请求的最大数目,那么请求是排队的。基础任务激活的请求按照激活顺序里的优先级排序。 1.1.4 任务切换机制

调度器:决定哪一个任务应该开始运行和触发所有必须的AUTOSAR OS内部的活动的实体被称作调度器。

在AUTOSAR OS 里调度器是一个资源。依据实现的调度策略,每当要进行一次任务切换时,调度器会被激活。任务可以保留调度器来避免任务切换直到调度器被该任务释放。

1.1.5 任务优先级

0是最低优先级,数值越大优先级越高。

任务的优先级是静态定义的,在运行时不可以改变。但是在特殊情况下,操作系统可以给一个任务一个定义的更高的优先级(详见优先级上限协议)。

BCC2和ECC2支持相同优先级有多个任务。

在相同优先级的任务的开始顺序依据激活的顺序,通过拓展的任务进入waiting状态不会阻塞相同优先级里后面的任务的开始。被抢占的任务被认为是在它当前优先级的ready清单里第一个任务(最老的任务)。

从waiting状态里释放的任务被当作它的优先级的ready序列里的最后的任务(最新的)。

决定下一个要执行的任务的基本的步骤:

· 调度器搜索所有的处于ready/running状态的任务

· 从处于ready/running状态中的任务集合,调度器判定拥有最高优先级的任务

集合

· 在拥有最高优先级处于ready/running状态的任务集内,调度器找到最老的任

务。

1.1.6 调度策略 1.1.6.1

全抢占调度

全抢占调度意思是一个目前处于running状态的任务可能在任何的指令处被重调度,通过操作系统预置的触发条件的发生。全抢占调度会使得running任务转化为ready状态,只要一个更高的优先级的任务处于ready状态。任务环境被保存以便被抢占的任务可以在被中断的位置继续。

对于全抢占调度延迟时间与低优先级任务的运行时间无关。一些限制关于为了保存环境要求增加的RAM内存和为了同步任务而必须的特征的增强的复杂性。由于理论上一个可以在任何位置被重调度,对于与其它任务共享的数据的访问应该被同步。