当前位置: 首页 > news >正文

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 环境,并在退出时移除该环境
所有中断的执行优先级都高于任务的优先级

http://www.dtcms.com/a/473841.html

相关文章:

  • 建设企业网站制作公司贵阳做网站公司排名
  • 设计模式篇之 桥接模式 Bridge
  • Spring IOC(控制反转)中常用注解
  • 常州建设银行网站安源网站建设
  • 【Linux学习笔记】线程的同步与互斥(一)
  • 【开题答辩全过程】以 基于Android的小区物业管理APP的设计与实现为例,包含答辩的问题和答案
  • 【数据结构】二叉树-图解广度优先搜索
  • 临汾市建设局网站wordpress hacker主题
  • 【机器学习入门】7.1 决策树 —— 像 “判断流程图” 一样做分类
  • 虚拟机可以做两个网站物流网站有哪些
  • C++ 模拟题 力扣495. 提莫攻击 题解 每日一题
  • Google Chrome 开发者工具
  • 微信公众号平台开发文档深圳网站建设模板乐云seo
  • GitHub 热榜项目 - 日榜(2025-10-12)
  • 结构化特征生成推进广度学习:2025年深度学习领域的重要突破
  • 达梦数据库全库透明加密(TDE)解决方案:实现静态数据高安全防护
  • 深圳模板网站多少钱政务中心网站建设方案
  • spring boot拦截器获取requestBody的巨坑
  • [2]python爬虫实践,爬取网易云音乐热歌榜排行版名称
  • 网站快速备案公司wordpress文章末尾加上相关文章
  • WebAssembly联调实践:Rust计算模块与Node.js后端的性能对比
  • 利用万网做网站建筑工程网下载
  • 麒麟系统开机启动
  • Redis-List
  • PHP基础教程:从入门到精通
  • 瓦力机器人-舵机控制(基于树莓派5)
  • 建设银行南通通州支行网站如何改wordpress里的代码
  • linux网站环境网站公司的好坏
  • 音视频学习(六十九):视音频噪声
  • Python 爬虫实战 | Selenium 高效自动化:Headless + 无痕浏览深度解析