[学习笔记-AUTOSAR] OS-Task任务调度

任务种类:

  • BCC1:支持基础任务,唯一优先级,无排队
  • BCC2:支持基础任务,共享优先级,可排队
  • ECC1:支持基础任务及扩展任务,唯一优先级,无排队
  • ECC2:支持基础任务及扩展任务,共享优先级,基础任务下可排队,扩展任务下无排队

任务状态:

状态默认为Suspended,被激活后为Ready,当其在所有Ready中优先级最高时变为Running,若有更高优先级的进来,

  • 变回Ready(基础任务),任务终止后状态变回Suspended
  • 变成Ready/Waiting(扩展任务),对应的事件被设置后变成Ready(非Running,因为可能有更高优先级的在Running),任务终止后状态变回Suspended

基础任务:

  • 状态:Running,Ready,Suspended
  • 通常称为单次任务模型,只有当基本任务终止或被更高优先级的任务抢占时,才会释放处理器,因此非常适合嵌入式控制功能
  • 基本任务快速有效

扩展任务

  • 状态:Running,Ready,Waiting,Suspended
  • 在执行期间自动挂起自身任务,为任务提供了一种具有同步点的方法
  • 适合于需要中间执行同步的功能
  • 时间响应较快,但会一直占用Ram资源,相当于以空间换时间

Task 配置

  • 包括:name、Priority、Scheduling、Activation及Autostart

Priority 优先级:0的优先级最低

Task优先级:

  • 同一优先级的任务以先进先出FIFO(First In First Out)的原则从Ready状态Release。
  • 使用时避免用Share Priorities(实时性差,无法进行调度可行性分析)

Scheduling 调度:抢占/非抢占。为了获得最佳的应用程序性能,选择抢占式。

调度方式:

  • 静态调度:在调度前就已经配置好;动态调度:根据负载率自动去调度
    • AUTOSAR仅支持静态调度的方式,在单个处理器上一次只运行一个任务,不同任务之间通过调度表或者Alam进行切换
  • 当更高优先级进来时,
    • 抢占式,直接打断,下一个结束后前一个继续
    • 非抢占式,等待前一个任务结束后
    • 协作式(这种方式需要自己构建),等前一个任务主动告诉OS何时可以抢占,下一个进,下一个结束后前一个继续

执行顺序:当有些任务的执行需要基于另一个任务执行的结果时,可通过:

  • 直接激活链:使用ActivateTask()调用
  • 优先级:将需要优先执行的设置得更高,通过抢占式实现

Activation 激活:在Ready状态下可以排队的最大任务激活数。

激活Task的方式:

  • 直接激活:调用API:ActivateTask()
  • 间接激活:Alarm到期:对于系统中的每个Alarm,可以指定一个任务,该任务在每次Alarm过期时激活
  • 间接激活:Schedule Table调度表:对于系统中的每个调度表,可以指定在表上的一个或多个到期点激活的任务
  • 对于BCC1、ECC1和ECC2任务,激活次数始终为一次。即只有在处于挂起状态时才能激活。在未挂起的情况下,尝试激活将导致错误。
  • 大于1的值表示操作系统将对激活进行排队,任务结束时再次激活。

任务终止:

  • TerminateTask():进入挂起状态
  • ChainTask(TaskID):终止任务,激活任务TaskID(即终止当前任务,开始下一个任务)

Idle任务:

  • 在抢占式OS中,没有Task运行且没有中断运行时,也必须要有些事情做(处于繁忙的等待循环),可定义Idle任务来覆盖“繁忙的等待循环”这个默认行为
  • 当没有Task运行且没有中断运行时自动运行,因此
  1. 不能被手动激活/终止
  2. 不能被Chain/Activate调用
  3. 不能使用内部资源
  • 退出时返回一个bool值,true则下次还进Idle,false则下次进默认行为(繁忙的等待循环)

堆栈管理:

  • RTA-OS使用单栈模型,即所有的Task、ISRs在同一个堆栈区域上运行

    • 当任务被抢占时,高优先级任务在同一堆栈上继续使用。当任务终止时,它使用的堆栈空间被回收,然后重新用于下一个优先级最高的任务运行

  • 堆栈大小与系统中优先级的数量成比例

    • 共享优先级(同一优先级)的任务需等待前一个结束才能进行

    • 优先级数量越少,堆栈使用空间越小,但是响应时间会变长

  • 扩展任务的Waiting状态为保存至内部操作系统缓冲区中

你可能感兴趣的:(学习笔记-AUTOSAR,学习,笔记,mcu)