FreeRTOS学习笔记—④RTOS通信管理篇/同步互斥与通信(正在更新中)

二、RTOS的核心功能

  RTOS的核心功能块主要分为任务管理、内核管理、时间管理以及通信管理4部分,框架图如下所示:
  (1)任务管理:负责管理和调度任务的执行,确保系统中的任务能够按照预期运行。
  (2)内核管理:负责系统核心功能的管理,包括内存、中断、异常处理和系统启动等。
  (3)时间管理:负责所有与时间相关的操作,包括系统时钟、定时器、任务延迟和周期性任务的执行。
  (4)通信管理:提供任务之间的通信机制,确保任务能够有效地协作和共享资源。
在这里插入图片描述

2.3 通信管理

  RTOS的通信管理部分主要由同步互斥与通信构成。其中同步与互斥主要用于解决任务间的时间协调和共享资源保护的问题,而通信机制负责在任务间传递数据。因此两者通常结合使用来确保多任务在并发环境下的正确性和高效性。
  (1)同步:指的是多任务在执行的时候,某些步骤需要按照一定顺序进行,通过这种同步机制来确保多个任务之间能够协同工作,避免竞争条件。eg.比如说任务A需要等待任务B完成某个操作后再执行。
  (2)互斥:指的是用于防止多个任务同时访问一个共享资源,相比同步来说好理解些。
  (3)通信:指的是任务之间交换数据或信息的机制。通常用于多个任务间传递消息或数据来实现更复杂的任务协调。
  其中典型的同步与互斥机制包括信号量、互斥量(mutex)、事件组等;通信机制通常包括队列、任务通知等。在某些情况下,事件组也可以承担简单的任务间通信功能。这些其实也能说是同步与互斥的内核方法。
  信号量、互斥量(mutex)、事件组、队列、任务通知这些内核方法的操作都是:获取/释放、阻塞/唤醒、超时等,如下:
   ① A获取资源,用完后释放资源;
   ② A获取不到资源会进入阻塞,当B释放资源后把A唤醒让A来获取资源;
   ③ A获取不到资源会进入阻塞状态,可以定个闹钟来规定任务A等待的最大等待时长Tmax。如果A等待的时间超过了Tmax(即超时),那么会超时返回一个超时错误或继续执行其他任务。另一种情况则是在Tmax内B把资源释放了,即使A未超时也会被立刻唤醒,从阻塞状态恢复执行。
   下图为这几种方法的对比以及示意图,摘自韦东山老师的FreeRTOS手册:
在这里插入图片描述
在这里插入图片描述

2.3.1 队列

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-appH5项目实现导航区域与内容区域联动效果

一、需求描述 将导航区域与内容区域实现联动,即点击导航区域,内容区滚动到对应位置,内容区滚动过程中根据内容定位到相对应的导航栏。 效果如下: 侧边导航与内容联动效果 二、功能实现思路分析汇总: 三、具体代码 1…

流媒体技术革新,EasyCVR视频汇聚平台赋能视频监控全面升级

随着科技的飞速发展,流媒体技术和视频监控正经历着前所未有的变革与融合。本文将从流媒体技术的新兴趋势出发,探讨其与视频监控领域的深度结合,以及这一融合所带来的创新与发展。 一、流媒体技术的新兴趋势 1、5G网络的广泛应用 5G网络以其…

鸿蒙开发入门day16-拖拽事件和手势事件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 拖拽事件 概述 拖拽流程 ​手势拖拽 ​鼠标拖拽 拖拽背板图 …

企业架构的概念及发展历程简述(附TOGAF架构理论学习资料下载链接)

企业架构在数字化转型中发挥着至关重要的作用。它不仅确保了战略一致性、提高了运营效率、强化了信息安全,还指导了数字化转型路径、推动了技术与业务的深度融合以及促进了生态系统的连接。因此,在数字化转型过程中,企业应高度重视企业架构的…

《OpenCV计算机视觉》—— 图像边缘检测

文章目录 一、图像边缘检测概述二、常见的图像边缘检测算法(简单介绍)1.sobel算子2.Scharr算子3.Laplacian算子4.Canny算子 三、代码实现 一、图像边缘检测概述 图像边缘检测是一种重要的图像处理技术,用于定位二维或三维图像中对象的边缘。…

计算氨基酸残基之间的键角和二面角

在蛋白质结构中,不同的角度由特定的原子位置决定。常见的原子类型包括氨基酸主链中的 Cα(α 碳)、C(羰基碳)、N(氮原子)和 O(氧原子)。为了更加清晰,下面给出几种常见角度的定义及其对应的原子类型: 使用具体原子的坐标计算键角和二面角 1. 计算 N−Cα−C 的键角…

初次使用住宅代理有哪些常见误区?

随着网络技术的发展,住宅代理因其高匿名性和稳定性成为许多用户进行网络活动的首选工具。然而,对于新手而言,使用住宅代理时往往容易陷入一些误区,这不仅可能影响使用效果,还可能带来安全风险。本文将探讨新手在使用住…

前缀列表(ip-prefix)配置

一. 实验简介 本来前缀列表是要和访问控制列表放在一起讲的,但是这里单拎出来是为了更详细的讲解两者的区别 1.前缀列表针对IP比访问控制更加灵活。 2.前缀列表在后面被引用时是无法对数据包进行过滤的 实验拓扑 二. 实验目的 R4路由器中只引入子网LoopBack的…

oracle数据库安装和配置

​ 大家好,我是程序员小羊! 前言: Oracle 数据库的安装和配置是一个较为复杂的过程,涉及多个步骤和配置项。以下将详细介绍如何在 Linux 和 Windows 系统中安装 Oracle 数据库并进行基础配置。 一、Oracle 数据库安装前的准备 …

提升效率!ArcGIS中创建脚本工具

在我们日常使用的ArcGIS中已经自带了很多功能强大的工具,但有时候遇到个人的特殊情况还是无法满足,这时就可以试着创建自定义脚本工具。 一、编写代码 此处的代码就是一个很简单的给图层更改别名的代码。 1. import arcpy 2. input_fc arcpy.GetParam…

Oracle同义词

默认只能访问自己用户下面的对象,所以可以创建同义词。 同义词(Synonym) 是数据库对象的一个别名,Oracle 可以为表、视图、序列、过程、函数、程序包等指定一个别名 https://blog.csdn.net/ChineseSoftware/article/details/121750937

【springboot】使用缓存

目录 1. 添加依赖 2. 配置缓存 3. 使用EnableCaching注解开启缓存 4. 使用注解 1. 配置缓存名称 2. 配置缓存的键 3. 移除缓存 5. 运行结果 1. 添加依赖 <!-- springboot缓存--><dependency><groupId>org.springframework.boot</groupId>…

ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名

前言 当我们需要把本地开发的应用展示给外部用户时&#xff0c;常常会因为无法直接访问而陷入困境。 就为了展示一下&#xff0c;买服务、域名&#xff0c;搭环境&#xff0c;费钱又费事。 那有没有办法&#xff0c;让客户直接访问自己本机开发的应用呢&#xff1f; 这种需…

分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

1&#xff1a;MSSQL SQL语法篇&#xff1a; BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ] FROM data_file [ WITH ( [ [ , ] BATCHSIZE batch_size ] [ [ , ] CHECK_CONSTRAINTS …

基于OMS构建OceanBase容灾双活架构的实践

在实际生产环境中&#xff0c;对于关键业务&#xff0c;往往会有容灾双活的需求。除了OceanBase提供的主备库能力&#xff0c;通过官方工具OMS也可以实现容灾双活架构。目前&#xff0c;通过OMS实现的双活架构仅支持OceanBase数据库之间的数据同步。 要通过OMS实现双活架构&am…

Spring之Bean的生命周期 2024-9-6 19:47

目录 什么是Bean的生命周期为什么要知道Bean的生命周期Bean的生命周期之5步Bean生命周期之7步Bean生命周期之10步 声明&#xff1a;本章博客内容采自老杜2022spring6 语雀文档 什么是Bean的生命周期 Spring其实就是一个管理Bean对象的工厂。它负责对象的创建&#xff0c;对象的…

关于鸿蒙开发中Stage应用模型的相关介绍

应用模型 是系统为开发者提供的应用程序所需能力的抽象提炼&#xff0c;它提供了应用程序必备的组件和运行机制。 简言之&#xff1a;应用模型就是 应用的施工图纸&#xff0c;他规范了&#xff1a;程序运行流程、项目结构、文件功能等…… 了解应用模型之后&#xff0c;就可…

ELK学习笔记(二)——使用K8S部署Kibana8.15.0

上篇文章我们完成了&#xff0c;ES的集群部署&#xff0c;如果还没有看过上篇文章的兄弟&#xff0c;可以去看看。 ELK学习笔记&#xff08;一&#xff09;——使用K8S部署ElasticSearch8.15.0集群 话不多说&#xff0c;接下来直接进入kibana的搭建 一、下载镜像 #1、下载官方…

JS 封装方式

引言&#xff1a;本人是后台服务端开发的&#xff0c;前端的 js 都是在 html 中的 script 标签中写的&#xff0c;处理下数据啥&#xff0c;如果要有需要公共使用的方法啥的都是把方法直接丢在一个 js 文件里&#xff0c;然后 html 引入使用&#xff0c;没有关注过 js 的封装。…

【JavaEE初阶】多线程(2)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 线程的核心操作 创建线程start 线程的状态 线程的终止 定义一个变量实现 利用标志位实现 加上break/return 结束线程 线程等待 join 无参数版本 两个线程等待 多个线…