Autosar OS简介

OS所在框架位置

可裁剪性

SC1:在Osek OS基础上加调度表

SC2:在SC1基础上加上时间保护和时间同步

SC3:在SC1基础上加上内存保护、服务保护、信任功能和APP

SC4:前面的都有

Task

Task本质上就是 C 语言函数,这些函数可以并行执行。

一个应用程序中的所有Task都会争夺 CPU 的使用权。
Task可以自愿释放 CPU

在特定条件下,Task可以从中央处理器中移除

调度程序会决定接下来要执行的Task

每个Task的静态优先级都会由调度程序进行评估

Task优先级

0是最低优先级

254 是最高优先级

255 是预留给资源的优先级调度器

任何Task都有四种可能的状态,并伴有明确的转换流程

激活始终是外部触发的

从"ready"到"running"以及再返回"ready"仅通过调度实现

终止仅由Task自身触发

等待事件的执行也由任务自身完成

从"wait"到"ready"的转换仅由外部事件触发

不具备wait状态的任务被称为basic tasks,其余的则为extended tasks

一项Task可以激活任何其他Task,包括自身。

激活是执行Task的先决条件。
Task通常包含程序代码的主要部分。

应用程序的需求是通过Task之间的协作来实现的。

Scheduling

每个Task都可以通过以下两种方式之一进行调度:

• 非抢占式:

调度器始终运行具有最高优先级的就绪Task

较高优先级的Task不会抢占较低优先级的Task
Task切换仅在任务结束时发生

• 抢占式:

调度器始终运行具有最高优先级的就绪Task

较高优先级的Task会抢占较低优先级的Task
Task切换可以在任务运行时发生

AUTOSAR 操作系统支持的应用范围内的调度策略

• 非抢占式:

所有任务均为非抢占式,即Task切换仅在任务通过等待或终止而释放 CPU 时才会发生

• 全抢占式:

所有任务均为抢占式,即在任何时候具有最高优先级的就绪Task都会被执行

• 混合式:

可以为每个任务单独设置其行为

可以通过调用 Schedule() 明确请求重新调度

调度将作为某些操作系统服务的一部分来执行

• 重新调度点:

-- ActivateTask()(仅适用于抢占式任务)

-- TerminateTask()

-- ChainTask()

-- SetEvent()(仅适用于抢占式任务)

-- WaitEvent()

-- ReleaseResource()(仅适用于抢占式任务)

-- Schedule()

-- IncrementCounter()(仅适用于抢占式任务)

-- 从中断服务程序返回(仅适用于抢占式任务)

任务堆栈

被中断的任务会从其被中断的那一点重新开始执行。

这需要保存相关上下文信息

• 寄存器集(尤其是程序计数器)

• 栈

• 本地变量

• 返回地址

因此,AUTOSAR 操作系统通常会为每个任务单独预留一个栈(→ 内存使用量)

在某些情况下,栈可能会在任务之间共享使用

Counters和Alarms

Alarm与一个Counter相关联,并会在达到特定计数值时自动结束。
Alarm到期会导致四种情况之一:

-- 事件的生成

-- 任务的激活

-- 回调函数的执行

-- 软件计数器的递增

举个例子,譬如用Alarm来周期触发basic task

Schedule Table

调度表是一组预定义的操作序列(到期点)

• 操作系统会遍历调度表并处理每个到期点

• 到期点上的操作

-- 激活任务(ActivateTask())

-- 设置事件(SetEvent())

• 调度表与一个计数器关联,该计数器提供底层的时间间隔测量

• 调度表可以相对于或绝对基于当前计数器值启动

• 调度表模式

-- 单次触发

-- 周期性触发

Events


每个扩展任务有 8/16/32 位事件掩码
每个任务最多 32 个事件

Interrupts

ISR 是由硬件中断请求直接触发的

ISR 的优先级高于所有任务,并会抢占任务

对 AUTOSAR API 函数的调用在 ISR 内部是受限的

ISR 应该小巧且运行速度快

ISR 可以激活任务或触发事件

带有阻塞功能的 ISR 会阻塞整个 AUTOSAR 系统

AUTOSAR 操作系统提供了两种不同的中断服务程序(ISR)类别:

• ISR 类别 1:

  • ISR 不能使用(大多数)操作系统服务

  • ISR 的执行优先级高于操作系统

  • 行为类似于常规中断

  • 完全绕过操作系统

• ISR 类别 2:

  • ISR 可以使用操作系统服务,例如激活任务等

  • ISR 在调度程序的控制下执行

  • 操作系统在进入时会施加一些额外的延迟来设置 ISR 环境,并在退出时移除该环境

所有中断的执行优先级都高于任务的优先级

相关推荐
云茧5 分钟前
机器学习中的Hello World:线性回归(一)
人工智能·机器学习·线性回归
他们叫我技术总监22 分钟前
从开发者视角深度评测:ModelEngine 与 AI 开发平台的技术博弈
java·人工智能·dubbo·智能体·modelengine
minhuan23 分钟前
构建AI智能体:八十三、当AI开始“失忆“:深入理解和预防模型衰老与数据漂移
人工智能·模型衰老·数据偏移·psi群体稳定性指标·ks统计量检验
AI浩24 分钟前
深入级联不稳定性:从 Lipschitz 连续性视角探讨图像恢复与目标检测的协同作用
人工智能·目标检测·php
笨鸟笃行25 分钟前
人工智能备考——大体题型讲解+1.1.1-1.1.5固定搭配总结
人工智能
大千AI助手26 分钟前
差分隐私随机梯度下降(DP-SGD)详解
人工智能·神经网络·差分隐私·sgd·大千ai助手·dp-sgd·差分隐私随机梯度下降
十三画者33 分钟前
【文献分享】DARKIN:基于蛋白质语言模型的零样本磷酸化位点与暗激酶关联基准测试
人工智能·语言模型·自然语言处理
执笔论英雄1 小时前
【大模型训练】zero 学习及deepseed实战
人工智能·深度学习·学习
大千AI助手1 小时前
分布式奇异值分解(SVD)详解
人工智能·分布式·spark·奇异值分解·svd·矩阵分解·分布式svd
AgeClub1 小时前
当“钢铁护工”进入家庭,Figure 03如何重建老年居家生活?
大数据·人工智能