详解FreeRTOS:嵌入式多任务系统的任务互斥和优先级反转(理论篇—9)

news/2024/10/18 0:14:55/

在嵌入式多任务系统中,有些资源必须是独占使用的,多个任务对这样的资源的并发访问将导致错误的发生。一般来说,对需要独占使用的资源必须使用互斥方法将对其的并发访问串行化。

在优先级多任务系统中引入互斥方案,会导致任务优先级反转的问题:假如某时低优先级的任务占有资源,然后又有高优先级的任务申请资源,但因为不能满足而被挂起了,即低优先级任务阻塞了高优先级任务的运行。

假如这时又有一个中优先级任务,那么它会把低优先级任务抢占。最终高优先级任务会间接地被中优先级任务抢占了。这种现象叫作优先级反转。举例说明:

假如A、C、D三个任务优先级从高到低排列,任务A和C共享互斥信号量R,如果某一时刻任务C已经获得互斥信号量R,而任务A此时尝试占用R,那么任务A会因为得不到R而阻塞在R的任务等待队列中。再假设此时任务D因为优先级高于任务C从而抢占了C,进而长期占有处理器资源,那么就相当于低优先级的任务D间接阻塞了高优先级任务A的运行。

  • T0时刻,任务C处于运行状态,运行过程中,任务C获得了共享资源R;
  • T1时刻,任务A就绪,由于任务A优先级高于任务C,所以它抢占了任务C,任务A被调度执行;
  • T2时刻,任务A需要共享资源R,但R被更低优先级的任务C所拥有,所以任务A被阻塞等待该资源,任务C得到执行;
  • T3时刻,此时任务D就绪,由于任务D优先级高于任务C&#

http://www.ppmy.cn/news/104009.html

相关文章

【macOS自带VNC远程】——Windows在外远程桌面控制macOS

文章目录 前言1.测试局域网内远程控制1.1 macOS打开屏幕共享1.2 测试局域网内VNC远程控制 2. 测试公网远程控制2.1 macOS安装配置cpolar内网穿透2.2 创建tcp隧道,指向5900端口 3. 测试公网远程控制4. 配置公网固定TCP地址4.1 保留固定TCP地址4.2 配置固定TCP端口地址…

STL --- 七. 适配器(Adapters)

目录 1、STL适配器介绍和分类 2、迭代器适配器 3、容器适配器 4、函数适配器 1、STL适配器介绍和分类 STL适配器是一种将一个容器(或其他数据结构)转换为另一种容器(或数据结构)的功能。 它们是一种高效的工具,用…

R语言生物群落(生态)数据统计分析与绘图(从数据整理到分析结果展示)

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来自经典…

注意:腾讯云轻量应用服务器十大限制说明

腾讯云轻量应用服务器相对于云服务器CVM是有一些限制的,比如轻量服务器不支持更换内网IP地址,不支持自定义私有网络VPC,内网连通性方面也有限制,轻量不支持CPU内存、带宽或系统盘单独升级,只能整个套餐整体升级&#x…

SpringBoot 配置文件和日志文件

目录 一、SpringBoot配置文件 配置文件的格式 .properties配置文件格式 .yml配置文件格式 .properties 与 .yml的区别 配置文件的读取 .properties 与 .yml的区别 设置不同环境的配置⽂件 二、SpringBoot日志文件 日志打印的步骤 得到日志对象 方法一:使…

R实践——【rgplates】安装、介绍、入门

【rgplates】安装、介绍、入门 1. rgplates 安装1.1 easy way1.2 备案方法 2. rgplates 介绍3. rgplates 在线方法入门3.1 加载rgplates3.2 板块重建3.3 独立的地点坐标3.3.1 单个现存坐标点3.3.2 单个点的古坐标3.3.3 多个点的古坐标 3.4 现今的海岸线3.5 其他的重建模型3.6 在…

2023年,软件测试怎么样?

​2022年因为各种不可抗力原因,大厂裁员,失业等等频频受到关注。 不解释,确实存在,各行各业都很难,但是,说软件测试行业不吃香,我还真不认同(不是为培训机构说好话,大环…

Linux 安装nodejs、npm、yarn、nrm(超实用)

前言:初衷想要本地通过dockerfile文件直接把项目打包到linux服务器,不用再本地加载再上传等,后续再贴上配置文件 一、什么是nodejs 来自官网的介绍,Node.js 是一个开源的跨平台 JavaScript 运行时环境。它几乎是任何类型项目的流…