AutoSAR配置与实践(基础篇)2.5 RTE对数据一致性的管理

传送门 点击返回 ->AUTOSAR配置与实践总目录

AutoSAR配置与实践(基础篇)2.5 RTE对数据一致性的管理

  • 一、 数据一致性问题引入
  • 二、 数据一致性的管理
    • 2.1 RTE管理 (SWC间)
    • 2.2 中断保护 (SWC内)
    • 2.3 变量保护IRVS (SWC内)
    • 2.4 Task分配
    • 2.5 任务抢占控制

一、 数据一致性问题引入

数据一致性:当多个操作同时读写同一个数据,由于任务的抢占,出现了数据被篡改的情况,造成非预期的数据结果。

在抢占式调度RTOS系统中,可能会出现任务抢占导致的一致性问题:

例如:有两个Task,低优先级Task A和高优先级Task B, Task可抢占式调度系统。
Task A想要计算Var的值(预期结果应为Var = 1*5 = 5).
在这里插入图片描述

  1. Task A:先给GlobalVar赋初值1;
  2. Task B :因优先级高,Ready后打断A,给GlobalVar赋了新值( GlobalVar = 2);
  3. Task A : 在Task B执行结束后继续运算,运算GlobalVar 出错:
    预期值:1*5=5.
    实际值:2 *5 = 10

以上例子中,由于高优先级任务的抢占,导致了数据被篡改,从而引起非预期结果。

二、 数据一致性的管理

2.1 RTE管理 (SWC间)

适用场景: 不同SWC的Runnable访问数据,一般RTE机制自动实现,比如IRead和IWrite
方式:通过操作备份数据而不是原始数据,来防止数据被篡改。

示例代码:

Rte_IRead_<r>_<p>_<d>();//runnable运行前,读取到本地备份数据
User Code   //操作备份数据
Rte_IWrite_<r>_<p>_<d>();//runnable结束后,写入备份数据

针对第一章中的数据篡改示例,实施RTE管理的效果图:

在这里插入图片描述
RTE管理步骤:

  1. Task A :Runnable运行前Rte_Iread把全局变量读到局部变量, local Var = 1;
  2. Task B: 中断Task A重写值后,全局变量GlobalVar = 2;
  3. Task A 运算仍使用缓存数据local Var ,所以运算结果不受影响。

更详细机制介绍可以参考此前2.3章节对S/R类型接口的介绍。

2.2 中断保护 (SWC内)

适用场景:

  • SWC内部不同的Runnable访问共同全局变量,Runnable类似C文件中的函数,这些函数如果被放在不同Task上运行, 可能出现出现同一时刻多个函数共同运行的情况。

  • 如果要保护的代码段比较短,防止中断时间长对高优先级任务的影响。

方式: 通过禁用挂起所有中断、或仅操作系统中断或(如果硬件支持)仅某些中断级别来实现,因此不会出现高优先级打断的情况。

示例代码:

Rte_Enter_<ExclusiveArea>
//被保护的代码区
Rte_Exit_<ExclusiveArea>

针对第一章中的数据篡改示例,实施中断保护的效果图:
在这里插入图片描述
中断保护步骤:

  1. Task A:在操作GlobalVar 前,调用Rte_Enter_关闭中断;
  2. Task B :由于中断被关闭,因此即便高优先级Task B 就绪,也无法打断Task A;
  3. Task A:在操作GlobalVar 后,调用Rte_ Exit _开启中断。
  4. Task B:调度随即被Task B抢占,开始对GlobalVar新的操作。

2.3 变量保护IRVS (SWC内)

适用场景: SWC内部变量保护,限定局变量的作用域在变量的作用域在SWC的不同runnable间。

方式: 被限定的Runnable尝试变量时被限制。InterRunnableVariables在一个AUTOSAR软件组件内的runnable之间建立,所以只能被组件内部的访问。同时可以配置runnble访问范围,示例InterVarA变量只能被Runnable M访问。

示例代码:

Rte_IrvWrite_<r>_<v>
Rte_IrvRead_<r>_<v>

针对第一章中的数据篡改示例,实施变量保护的效果图:

在这里插入图片描述
变量保护步骤:

  1. Task A :赋值InterVarA =1
  2. Task B: 中断TaskA尝试重写值InterVarA,由于变量被保护,重写失败
  3. Task A :运算使用InterVarA 继续运算,运算结果不受影响

2.4 Task分配

将访问全局变量的runnable放在同一个Task中,这样runnable只能顺序执行,不会出现高优先级打断的情况,数据一致性就可以得到保证。

2.5 任务抢占控制

可以通过为受影响的任务分配相同的优先级,为受影响的任务分配相同的内部操作系统资源,或者将OS的任务配置为非抢占性来实现

传送门 点击返回 ->AUTOSAR配置与实践总目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/45313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

44、TCP报文(二)

接上节内容&#xff0c;本节我们继续TCP报文首部字段含义的学习。上节为止我们学习到“数据偏移”和“保留”字段。接下来我们学习后面的一些字段&#xff08;暂不包含“检验和”的计算方法和选项字段&#xff09;。 TCP首部结构&#xff08;续&#xff09; “数据偏移”和“保…

525. 连续数组

525. 连续数组 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 525. 连续数组 https://leetcode.cn/problems/contiguous-array/description/ 完成情况&#xff1a; 解题思路&#xff1a; 参考代码&#xff1a; …

解放数据库,实时数据同步利器:Alibaba Canal

文章首发地址 Canal是一个开源的数据库增量订阅&消费组件&#xff0c;主要用于实时数据同步和数据订阅的场景&#xff0c;特别适用于构建分布式系统、数据仓库、缓存更新等应用。它支持MySQL、阿里云RDS等主流数据库&#xff0c;能够实时捕获数据库的增删改操作&#xff…

JVM——垃圾回收(垃圾回收算法+分代垃圾回收+垃圾回收器)

1.如何判断对象可以回收 1.1引用计数法 只要一个对象被其他对象所引用&#xff0c;就要让该对象的技术加1&#xff0c;某个对象不再引用其&#xff0c;则让它计数减1。当计数变为0时就可以作为垃圾被回收。 有一个弊端叫做循环引用&#xff0c;两个的引用计数都是1&#xff…

如何用树莓派Pico针对IoT编程?

目录 一、Raspberry Pi Pico 系列和功能 二、Raspberry Pi Pico 的替代方案 三、对 Raspberry Pi Pico 进行编程 硬件 软件 第 1 步&#xff1a;连接计算机 第 2 步&#xff1a;在 Pico 上安装 MicroPython 第 3 步&#xff1a;为 Thonny 设置解释器 第 4 步&#xff…

【ARM-Linux】项目,语音刷抖音项目

文章目录 所需器材装备操作SU-03T语音模块配置代码&#xff08;没有用wiring库&#xff0c;自己实现串口通信&#xff09;结束 所需器材 可以百度了解以下器材 orangepi-zero2全志开发板 su-03T语音识别模块 USB-TTL模块 一个安卓手机 一根可以传输的数据线 装备操作 安…

高项4.项目管理核心技术.

第一部分 项目管理概论 价值驱动的项目管理知识体系: 十二项原则;生命周期四个阶段;五个过程组;十大PM知识领域;八大绩效域;外加价值交付系统; 自1987 年以来, PMBOK 一直是基于过程的项目管理标准的重要代表,项目管理从业者一 直坚持基于过程的项目管理方法。随着…

2023-8-20 单链表

题目链接&#xff1a;单链表 #include <iostream>using namespace std;const int N 100010;int head, e[N], ne[N], idx;void init() {head -1;idx 0; }// 将x插入到头结点 void add_to_head(int x) {e[idx] x;ne[idx] head;head idx;idx; }// 将x插入到下标k后面…

VGG分类实战:猫狗分类

关于数据集 数据集选择的是Kaggle上的Cat and Dog&#xff0c;猫狗图片数量上达到了上万张。你可以通过这里进入Kaggle下载数据集Cat and Dog | Kaggle。 在我的Github仓库当中也放了猫狗图片各666张。 VGG网络 VGG的主要特点是使用了一系列具有相同尺寸 3x3 大小的卷积核进…

Android glide框架及框架涉及到的设计模式

目录 原文链接Android glide框架 简单使用介绍Glide 框架整体结构设计Glide 框架的优点基本使用&#xff1a;Glide占位符 Android glide框架涉及到的设计模式 原文链接 Android glide框架 简单使用介绍 Glide&#xff1a;快速高效的Android图片加载库&#xff0c;可以自动加载…

LLM低成本微调方法

LLM日益流行&#xff0c;已经渗透到各个领域&#xff0c;比如生物医学&#xff0c;但是模型的规模导致微调LLM对普通用户不够友好&#xff0c;因此&#xff0c;我们需要借助一些低成本方法&#xff0c;通过更新少量参数也达到与LLM全参数更新一样的效果。这里介绍三种主流方法&…

改善神经网络——优化算法(mini-batch、动量梯度下降法、Adam优化算法)

改善神经网络——优化算法 梯度下降Mini-batch 梯度下降&#xff08;Mini-batch Gradient Descent&#xff09;指数加权平均包含动量的梯度下降RMSprop算法Adam算法 优化算法可以使神经网络运行的更快&#xff0c;机器学习的应用是一个高度依赖经验的过程&#xff0c;伴随着大量…

解锁Spring AOP的神秘面纱

目录 Spring AOP的组成组成部分与常用注解举例理解 Spring AOP的实现添加 Spring AOP 框架⽀持定义切⾯和切点定义通知切点表达式说明 Spring AOP 实现原理JDK动态代理CGLIB动态代理 Spring AOP作为Spring框架的核心模块&#xff0c;为我们提供了一种优雅的方式来处理横切关注点…

版本控制工具Git集成IDEA的学习笔记(第一篇Gitee)

目录 一、Gitee的使用 1、注册网站会员 2、用户中心 3、创建远程仓库 4、配置SSH免密登录 二、集成IDEA&#xff0c;Git项目搭建 1、本地仓库搭建 1&#xff09;创建一个新项目 2&#xff09;打开终端&#xff0c;在当前目录新建一个Git代码库 3&#xff09;忽略文件 …

3. 爬取自己CSDN博客列表(自动方式)(分页查询)(网站反爬虫策略,需要在代码中添加合适的请求头User-Agent,否则response返回空)

文章目录 步骤打开谷歌浏览器输入网址按F12进入调试界面点击网络&#xff0c;清除历史消息按F5刷新页面找到接口&#xff08;community/home-api/v1/get-business-list&#xff09;接口解读 撰写代码获取博客列表先明确返回信息格式json字段解读 Apipost测试接口编写python代码…

03_缓存双写一致性

03——缓存双写一致性 一、缓存双写一致性 如果redis中有数据&#xff0c;需要和数据库中的值相同如果redis中无数据&#xff0c;数据库中的值要是最新值&#xff0c;且准备回写redis 缓存按照操作来分&#xff0c;可以分为两种&#xff1a; 只读缓存 读写缓存 同步直写操作…

【NX】NX二次开发BlockUI集列表的详细使用步骤

最近使用NX二次开发&#xff0c;需要用到集列表&#xff0c;也就是SetList这个控件&#xff0c;然而网上相关的资料和范例实在是太少&#xff0c;有幸找到《NX二次开发-BlockUI集列表的使用技巧》和《UG&#xff08;NX&#xff09;二次开发 BlockUI 集列表使用方法》&#xff0…

K8S deployment挂载

Deployment部署文件 apiVersion: apps/v1 kind: Deployment metadata:annotations:deployment.kubernetes.io/revision: "1"kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"apps/v1","kind":"Deployment&qu…

Redis从基础到进阶篇(一)

目录 一、了解NoSql 1.1 什么是Nosql 1.2 为什么要使用NoSql 1.3 NoSql数据库的优势 1.4 常见的NoSql产品 1.5 各产品的区别 二、Redis介绍 2.1什么是Redis 2.2 Redis优势 2.3 Redis应用场景 2.4 Redis下载 三、Linux下安装Redis 3.1 环境准备 3.2 Redis的…

JDK8知识点梳理

JDK8知识点梳理 一、lambda表达式1.标准格式2.实现原理3.省略模式4.前提条件 二、函数式接口1.函数式接口&#xff1a;FunctionalInterface2.接口默认方法3.接口静态方法4.供给型接口&#xff1a;Supplier5.消费型接口&#xff1a;Consumer6.消费供给型接口&#xff1a;Functio…