车载软件架构 —— Adaptive AUTOSAR软件架构中操作系统
车载软件架构 —— Adaptive AUTOSAR软件架构中操作系统
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。
老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:
本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠自己,四海皆为家。人生的面吃一碗少一碗,人生的面见一面少一面。人生就是一次次减法,来日并不方长。自己的状态就是自己最好的风水,自己的人品就是自己最好的运气。简单点,善良点,努力点,努力使每一天都开心,不为别人,只为自己。
本文大体如下:
1、操作系统概述
2、执行管理
3、状态管理
一、操作系统概述
操作系统(OS)负责自适应平台上所有应用程序的运行时调度、资源管理(包括监控内存和时间限制)以及Process间通信。OS与执行管理(Execution Management)协同工作,后者负责平台初始化,并使用OS 执行应用程序的启动和关闭。
自适应平台并没有为高性能处理器指定新的操作系统。相反,它定义了一个执行上下文和操作系统接口(OSI),供自适应应用程序使用。
OSI规范包含的应用接口是ARA(自适应应用的标准应用接口)的一部分。OS本身也可能提供其他接口,如创建 Process,这是执行管理启动应用程序所必需的。但是,ARA 并不提供此类功能的接口,而且其定义取决于平台的实现。
POSIX
市场上有几种操作系统(如 Linux)提供与POSIX兼容的接口。但是,与平台服务和基础相比,应用程序必须使用更受限制的 API与操作系统连接。
一般假设是,用户应用程序应使用PSE51作为OS接口,而平台应用程序可使用完整的POSIX。如果应用层需要更多的功能,将尽可能从 POSIX 标准获取,而不是重新指定自适应平台基础和自适应平台服务功能的实现可能会使用更多的 POSIX 调用。具体调用的使用将由实施者自行决定,不会标准化。
调度
操作系统提供多线程和多Process支持。标准调度策略是POSIX 标准定义的SCHED FIFO 和 SCHED RR。允许使用其他调度策略,如SCHED DEADLINE 或任何其他操作系统特定策略,但这些策略可能无法在不同的 AP 实现中移植。
内存管理
支持多 Process 的原因之一是实现不同功能集群和 AA 之间的"无干扰"。OS 对多Process 的支持迫使每个 Process 都处于独立的地址空间,与其他 Process 分离并受到保护。同一可执行文件的两个实例在不同的地址空间运行,因此它们可能共享相同的入口点地址、代码以及启动时的数据值,但数据将位于内存的不同物理页中。
设备管理
设备管理在很大程度上与操作系统有关。自适应平台基金会有意倾向于创建服务来公开主要的系统功能。
虽然目前还没有计划对设备驱动程序本身的具体 APIS 进行标准化,但可以通过自适应平台服务对这些驱动程序实现的更高级功能进行标准化。
联网
多台 Machine 之间以及与其他传感器之间的主要互连机制预计将基于以太网。因此,TCP/IP-and UDP/IP-based 协议的使用已得到明确说明。因此,预计操作系统将提供这样一个网络堆栈。
应用程序将通过使用通信管理从网络支持中获益。作为自适应平台基础的一部分,VLAN、IPSEC 等附加功能可实现系统内和系统间的安全通信。
二、执行管理
2.1 概述
执行管理负责系统执行管理的各个方面,包括自适应平台的初始化和Process 的启动/关闭。执行管理与操作系统协同工作,配置 Process 的运行时调度。
2.2 系统启动
Machine 启动时,OS 将被初始化,然后执行管理将作为平台的初始 Process 启动。随后,执行管理将启动自适应平台基础的其他平台级 Process(代表功能集群)。自适应平台基础启动并运行后,执行管理将继续启动自适应应用程序的Process。平台级Process 和应用程序级 Process 的启动顺序由执行管理根据 Machine 清单和执行清单中指定的依赖关系来决定。
自适应应用程序可由多个可执行元素组成,这些元素通常与文件系统中的可执行文件相对应。每个可执行文件可以有多个 Process 配置,因此启动配置也取决于可执行文件处于活动状态的功能组状态。
执行管理可选择支持验证启动,即从信任锚点启动自适应平台,同时保持信任链。在验证启动过程中,执行管理会验证应用程序的真实性和完整性,如果检测到违规行为,执行管理会(有选择地)阻止其执行。通过这些机制,可以建立一个可信平台。
2.3 执行管理职责
执行管理负责自适应平台执行管理和应用程序执行管理的所有方面,包括:
1、平台生命周期管理执行管理是自适应平台启动阶段的一部分,负责自适应平台和已部署应用程序的初始化。
2、应用程序生命周期管理执行管理负责已部署应用程序的有序启动和关闭。执行管理根据 Machine 清单和执行清单中的信息确定部署的应用程序集,并根据已声明的执行依赖关系得出启动/关闭顺序。根据 Machine 状态和功能组状态的不同己部署应用程序的 Process 会在自适应平台启动时或稍后启动,但并不是所有应用程序都会立即开始工作,因为许多应用程序会向其他应用程序提供服务,因此需要等待和"监听"传入的服务请求。
执行管理部不负责应用程序的运行时调度,因为这是操作系统的职责。但是,执行管理负责 OS 的配置,使 OS 能够根据执行管理从 Machine 清单和执行清单中提取的信息执行必要的运行时调度。
2.4 确定性执行
确定性执行提供了一种机制,使使用给定输入数据集进行的计算总能产生一致的输出而不受干扰影响。执行管理区分时间确定性和数据确定性。前者是指输出总是在截止日期前产生,而后者是指从相同的输入数据集和内部状态产生相同的输出。
执行管理提供的支持侧重于数据确定性,因为时间确定性是通过提供充足的资源来处理的。在数据确定性方面,执行管理提供了 DeterministicClient APIs,以支持对 Process内部循环、确定性工作池、激活时间戳和随机数的控制。DeterministicClient 与通信管理交互,使数据处理与周期激活同步。
2.5 资源限制
自适应平台允许在同一台 Machine 上执行多个自适应应用程序,因此确保不受干扰是一个系统属性。因此,应限制行为不正确的自适应应用程序影响其他应用程序的能力例如,应防止应用程序 Process 消耗超过规定的 CPU时间,因为这可能会影响其他应用程序的正常运行。
执行管理支持通过配置一个或多个 ResourceGroups 来避免干扰,应用程序的 Process 被分配给这些 ResourceGroups。然后,可为每个 ResourceGroup 分配 CPU 时间或内存限制,以限制应用程序的可用资源
2.6 可信平台
为保证系统功能的正确性,必须确保在平台上执行的代码来源合法。集成商可通过保持这一属性来构建可信平台。
实现可信平台的系统的一个关键属性是可信锚点(也称为可信根)。信任锚通常以公开密钥的形式实现,它存储在一个安全的环境中,如不可修改的持久内存或 HSM 中。
系统设计者有责任至少确保系统从信任锚点开始,并在执行管理启动前保持信任。根据系统设计者选择的建立信任链的机制,整个系统的完整性和真实性可能已在系统启动时进行了检查。但是,如果系统设计者只确保已执行软件的完整性和真实性已得到检查,那么执行管理就会在接管系统控制权时接手继续执行信任链的责任。在这种情况下,系统集成商有责任确保正确配置执行管理。
从信任锚向 OS 和自适应平台传递信任(即建立信任链)的一个示例如下:根据定义,信任锚是一个真实的实体,它在引导加载器启动前对引导加载器进行验证。在启动过程的每个后续步骤中,应首先对即将启动的可执行文件进行验证。真实性检查应由已通过验证的实体完成,即真实性检查可由之前启动的可执行文件或 HSM 等外部实体完成。
OS 经过身份验证启动后,应将"执行管理"作为第一个 Process 启动。在启动"执行管理"之前,OS 应确保"执行管理"的真实性已由通过验证的可信实体验证。
注:如果认证不是由信任锚点本身的功能来检查(根据定义,信任锚点本身就是真实的),那么用于验证可执行文件真实性的软件在使用前就必须经过认证。例如,如果Crypto API用于验证可执行文件的真实性,那么 Crypto API本身在使用之前就必须经过某个可信实体的验证。
三、状态管理
状态管理是一个独特的功能集群,主要针对 ECU 开发项目,一般由系统集成商负责最终实施。它负责 AUTOSAR 自适应平台运行状态的所有方面,包括处理传入事件、确定这些事件/请求的优先级以设置相应的内部状态。根据项目需要,状态管理可由一个或多个状态机组成。
如下所述,状态管理通过由"字段"组成的项目特定 ara::com 服务接口与自适应应用程序进行交互。状态管理与其他功能集群之间的交互应通过各功能集群定义的标准化接口进行。
状态管理可要求以下效果:
-> 1、可要求将 FunctionGroups 设置为专用状态;
-> 2、可请求删除/激活(部分)网络;
-> 3、可请求关闭或重启 Machine;
-> 4、可影响其他自适应(平台)应用程序的行为;
-> 5、可执行特定于项目的操作;
-> 6、在收到平台健康管理或执行管理通知时,从(监督)错误中恢复;
-> 7、应诊断的要求,根据诊断地址执行特定项目重置;
-> 8、根据更新和配置管理的要求,准备并验证软件集群的安装、更新或删除;
-> 9、影响运行 Process 的行为,以实现 Machine 内部(部分)的同步行为(如电源模式)。
为实现同步行为,状态管理提供了已定义的消息和回复消息,在通讯管理的通讯组范围内,可从这些消息和回复消息中生成 ara::com 方法和字段。
状态管理通过 ara::com 提供一组"触发器"和"通知器"字段。SM 本质上是监听"触发器",并在内部执行特定状态机处理,如果"otifier"字段有效果,则将效果提供给"Notifier"字段。
由于状态管理功能至关重要,因此必须确保从其他功能组或应用程序的访问安全,如通过 IAM(身份和访问管理)。状态管理由平台健康管理进行监控。
状态管理引入了"轻量级"StateMachine 方法,以帮助自适应平台用户创建状态管理功能。StateMachines 的设计旨在以最少的配置工作覆盖标准用例。请注意,StateMachines 是 AUTOSAR 的补充部分,因此可以选择使用。预计复杂的用例仍需要用户提供源代码
StateMachine 不执行特定项目的逻辑。相反,它为特定项目的自适应应用程序(即SMControlApplication)提供输入接口。该应用程序包含项目专用逻辑,并决定下一光应请求 StateMachine 的哪种状态。请注意,对执行管理和/或平台健康管理报告的错误的反应是直接在 StateMachine 内部配置的。
为了概述 StateMachine 方法,下图显示了不同的 StateMachine 实例、相应 StateMachine 的接口、TransitionTable 和 ErrorRecoveryTable 的交互方式。
搁笔分享完毕!
愿你我相信时间的力量
做一个长期主义者!
相关文章:

车载软件架构 —— Adaptive AUTOSAR软件架构中操作系统
车载软件架构 —— Adaptive AUTOSAR软件架构中操作系统 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师&…...

前缀和算法-截断数组
5057. 截断数组 - AcWing题库 给定一个长度为 n 的正整数数组 a1,a2,…,an 和一个正整数 p。 现在,要将该数组从中间截断,得到两个非空子数组。 我们规定,一个数组的价值等于数组内所有元素之和模 p 的结果。 我们希望,将给定数组…...

Kubernetes实战:Kubernetes中网络插件calico Daemon Sets显示异常红色
目录 一、排查步骤与解决方案1.1、POD排查问题定位1.2、针对问题解决错误1.3、继续针对问题解决错误 一、排查步骤与解决方案 1.1、POD排查问题定位 我的k8s集群由3个节点组成的,calico在每个节点上都有一个pod,通过kubectl get pod -A命令发现有一个pod的READY 为…...

深入探究:JSONCPP库的使用与原理解析
君子不器 🚀JsonCPP开源项目直达链接 文章目录 简介Json示例小结 JsoncppJson::Value序列化Json::Writer 类Json::FastWriter 类Json::StyledWriter 类Json::StreamWriter 类Json::StreamWriterBuilder 类示例 反序列化Json::Reader 类Json::CharReader 类Json::Ch…...

字节UC伯克利新研究 | Magic-Me:简单有效的主题ID可控视频生成框架
在生成模型领域,针对特定身份(ID)创建内容已经引起了极大的兴趣。在文本到图像生成(T2I)领域,以主题驱动的内容生成已经取得了巨大的进展,使图像中的ID可控。然而,将其扩展到视频生成…...

2024免费人像摄影后期处理工具Portraiture4.1
Portraiture作为一款智能磨皮插件,确实为Photoshop和Lightroom用户带来了极大的便利。通过其先进的人工智能算法,它能够自动识别并处理照片中的人物皮肤、头发和眉毛等部位,实现一键式的磨皮美化效果,极大地简化了后期处理的过程。…...

Spring Boot 笔记 010 创建接口_更新用户头像
1.1.1 usercontroller中添加updateAvatar,校验是否为url PatchMapping("updateAvatar")public Result updateAvatar(RequestParam URL String avatarUrl) {userService.updateAvatar(avatarUrl);return Result.success();} 1.1.2 userservice //更新头像…...

认识并使用HttpLoggingInterceptor
目录 一、前情回顾二、HttpLoggingInterceptor1、HttpLoggingInterceptor拦截器是做什么的?2、如何使用HttpLoggingInterceptor?2.1 日志级别2.2 如何看日志?2.2.1 日志级别:BODY2.2.2 日志级别:BASIC2.2.3 日志级别&a…...

内存块与内存池
(1)在运行过程中,MemoryPool内存池可能会有多个用来满足内存申请请求的内存块,这些内存块是从进程堆中开辟的一个较大的连续内存区域,它由一个MemoryBlock结构体和多个可供分配的内存单元组成,所有内存块组…...

【FPGA开发】HDMI通信协议解析及FPGA实现
本篇文章包含的内容 一、HDMI简介1.1 HDMI引脚解析1.2 HDMI工作原理1.3 DVI编码1.4 TMDS编码 二、并串转换、单端差分转换原语2.1 原语简介2.2 原语:IO端口组件2.3 IOB 输入输出缓冲区2.4 并转串原语OSERDESE22.4.1 OSERDESE2 工作原理2.4.2 OSERDESE2 级联示意图2.…...

[NSSRound#16 Basic]Web
1.RCE但是没有完全RCE 显示md5强比较,然后md5_3随便传 md5_1M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&md5_2M%C9h%FF%0E%E3%5C%20%95r%D4w…...

[职场] 会计学专业学什么 #其他#知识分享#职场发展
会计学专业学什么 会计学专业属于工商管理学科下的一个二级学科,本专业培养具备财务、管理、经济、法律等方面的知识和能力,具有分析和解决财务、金融问题的基本能力,能在企、事业单位及政府部门从事会计实务以及教学、科研方面工作的工商管…...

docker (五)-docker存储-数据持久化
将数据存储在容器中,一旦容器被删除,数据也会被删除。同时也会使容器变得越来越大,不方便恢复和迁移。 将数据存储到容器之外,这样删除容器也不会丢失数据。一旦容器故障,我们可以重新创建一个容器,将数据挂…...

飞行路线(分层图+dijstra+堆优化)(加上题目选数复习)
飞行路线 这一题除了堆优化和dijstra算法和链式前向星除外还多考了一个考点就是,分层图,啥叫分层图呢?简而言之就是一个三维的图,按照其题意来说有几个可以免费的点就有几层,而且这个分层的权值为0(这样就相…...

云计算基础-快照与克隆
快照及克隆 什么是快照 快照是数据存储的某一时刻的状态记录,也就是把虚拟机当前的状态保存下来(快照不是备份,快照保存的是状态,备份保存的是副本) 快照优点 速度快,占用空间小 快照工作原理 在了解快照原理前,…...

使用 RAG 创建 LLM 应用程序
如果您考虑为您的文件或网站制作一个能够回应您的个性化机器人,那么您来对地方了。我可以帮助您使用Langchain和RAG策略来创建这样一个机器人。 了解ChatGPT的局限性和LLMs ChatGPT和其他大型语言模型(LLMs)经过广泛训练,以理解…...

第13章 网络 Page744~746 asio核心类 ip::tcp::endPoint
2. ip::tcp::endpoint ip::tcp::socket用于连接TCP服务端的 async_connect()方法的第一个入参是const endpoint_type& peer_endpoint. 此处的类型 endpoint_type 是 ip::tcp::endpoint 在 在 ip::tcp::socket 类内部的一个别名。 libucurl 库采用字符串URL表达目标的地…...

面试浏览器框架八股文十问十答第一期
面试浏览器框架八股文十问十答第一期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)什么是 XSS 攻击&#…...

多线程的基本原理学习
由一个问题引发的思考 线程的合理使用能够提升程序的处理性能,主要有两个方面,第一个是能够利用多核cpu以及超线程技术来实现线程的并行执行;第二个是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提…...

C/C++进制转换
十进制转化为二进制 进制转化#include <iostream> using namespace std;void change(int); int main() {int num;cout << "请输入一个十进制数: ";cin >> num;cout << "转化后的二进制数为: ";change(num);return 0; } void chan…...

使用 Coze 搭建 TiDB 助手
导读 本文介绍了使用 Coze 平台搭建 TiDB 文档助手的过程。通过比较不同 AI Bot 平台,突出了 Coze 在插件能力和易用性方面的优势。文章深入讨论了实现原理,包括知识库、function call、embedding 模型等关键概念,最后成功演示了如何在 Coze…...

Arduino程序简单入门
文章目录 一、结构1.1 setup()1.2 loop() 二、结构控制2.1 if2.2 if...else2.3 switch case2.4 for2.5 while2.6 do...while2.7 break2.8 continue2.9 return2.10 goto 三、扩展语法3.1 ;(分号)3.2 {}(花括号)3.3 //(单…...

QT+OSG/osgEarth编译之八十三:osgdb_ogr+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_ogr)
文章目录 一、osgdb_ogr介绍二、文件分析三、pro文件四、编译实践一、osgdb_ogr介绍 osgDB是OpenSceneGraph(OSG)库中的一个模块,用于加载和保存3D场景数据。osgDB_ogr是osgDB模块中的一个插件,它提供了对OGR(开放地理空间联盟)库的支持。 OGR是一个开源的地理空间数据…...

开年炸裂-Sora/Gemini
最新人工智能消息 谷歌的新 Gemini 模型 支持多达 1M的Token,可以分析长达一小时的视频 1M Token可能意味着分析700,000 个单词、 30,000 行代码或11 小时的音频、总结、改写和引用内容。 Comment:google公司有夸大的传统,所以真实效果需要上…...

vue前端系统启动报错Module not found: Error: Can‘t resolve ‘sass-loader‘
1、确认项目中是否已安装 node-sass 包。sass-loader 是依赖于 node-sass 包的,如果没有安装 node-sass 包,也会导致无法找到 sass-loader 包。 npm ls node-sass安装 node-sass 包: npm install --save-dev node-sass2、确认项目中是否已安…...

HTML | DOM | 网页前端 | 常见HTML标签总结
文章目录 1.前端开发简单分类2.前端开发环境配置3.HTML的简单介绍4.常用的HTML标签介绍 1.前端开发简单分类 前端开发,这里是一个广义的概念,不单指网页开发,它的常见分类 网页开发:前端开发的主要领域,使用HTML、CS…...

乡政府|乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)
乡政府管理系统目录 目录 基于Springboot的乡政府管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、活动信息管理 3、新闻类型管理 4、新闻动态管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…...

存储系统如何规避数据静默错误SDC?
存储系统规避数据静默错误(Silent Data Corruption, SDC)是一项复杂且关键的任务,涉及多个层次的技术和策略。数据静默错误是指在存储或传输过程中发生的错误,这些错误未被检测出来,因此无法立即纠正,可能导…...

《Linux 简易速速上手小册》第8章: 安全性与加固(2024 最新版)
文章目录 8.1 防火墙与安全策略8.1.1 重点基础知识8.1.2 重点案例:配置 iptables 以保护 Web 服务器8.1.3 拓展案例 1:使用 firewalld 配置动态防御区域8.1.4 拓展案例 2:配置 ufw 以简化管理 8.2 SSH 安全最佳实践8.2.1 重点基础知识8.2.2 重…...

Ubuntu Desktop 显示文件路径
Ubuntu Desktop 显示文件路径 1. GUI hot key2. CLIReferences 1. GUI hot key Ctrl L: 显示文件路径 2. CLI right click -> Open in Terminal -> pwd strongforeverstrong:~/Desktop$ pwd /home/strong/DesktopReferences [1] Yongqiang Cheng, https://yongqiang…...