news 2026/3/2 10:23:29

5.3 互斥量(Mutex)与递归互斥量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5.3 互斥量(Mutex)与递归互斥量

5.3 互斥量(Mutex)与递归互斥量

5.3.1 互斥量的核心目标:安全的独占访问

在FreeRTOS多任务系统中,当两个或更多任务需要访问同一共享资源(如全局变量、静态数据结构、外设寄存器或非线程安全的库函数)时,必须进行同步以避免竞态条件。竞态条件指系统输出依赖于任务执行的相对时序,这种不确定性是嵌入式系统稳定性的重大威胁。互斥量正是为解决此问题而设计的核心同步原语。

互斥量的核心语义是提供对资源的互斥访问,即任一时刻只允许一个任务进入受保护的代码区域(临界区)。在形式上,互斥量可视为一个具有特殊所有权属性的二进制信号量:

  • 持有:任务成功获取(Take)互斥量后,称为该互斥量的持有者(Owner)。
  • 释放:只有持有者才能释放(Give)该互斥量。
  • 嵌套:标准互斥量不支持嵌套获取,即持有者再次尝试获取同一互斥量将导致死锁。

这种所有权模型是互斥量与普通二进制信号量的根本区别。二进制信号量是一个“事件”,任何任务都可以给予(Signal);而互斥量是一个“令牌”,其释放必须由获取它的任务执行。FreeRTOS通过记录互斥量持有者的任务句柄来强制执行此所有权规则。

5.3.2 优先级继承协议:应对优先级反转

1. 优先级反转问题
考虑一个由三个任务(优先级高H> 中M> 低L)和互斥量Mtx保护的共享资源组成的系统:

  1. L运行并成功获取Mtx,进入临界区。
  2. H就绪,抢占LH尝试获取Mtx,发现已被L持有,于是阻塞。
  3. M就绪(此时H被阻塞,L被挂起),因优先级高于LM开始运行。

此时,高优先级任务H的阻塞时间不仅包括L持有Mtx的时间,还被迫包括完全无关的中优先级任务M的执行时间。在最坏情况下,M(或更多中优先级任务)可能无限期运行,导致H永远无法运行。这种高优先级任务因资源被低优先级任务持有,而被中等优先级任务间接无限期阻塞的现象,称为无界优先级反转,它彻底破坏了实时系统的可调度性分析。

2. 优先级继承协议机制
FreeRTOS的互斥量通过实现优先级继承协议来解决此问题。当高优先级任务H因请求已被低优先级任务L持有的互斥量而阻塞时,内核会临时将任务L的优先级提升至与H相同。该协议的运行流程如下图所示:

内核/互斥量中优先级任务 M高优先级任务 H低优先级任务 L内核/互斥量中优先级任务 M高优先级任务 H低优先级任务 L
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/28 16:34:05

git常见操作及问题

本文将持续更新遇见的所有报错... 一、 正常提交代码至远程仓库 最常用,适用于:已经在本地代码库中进行了修改的情况。 1. 将修改添加到暂存区 git add .2. 提交到本地仓库," "内为commit内容,最好为有意义的注释 git commit -m…

作者头像 李华
网站建设 2026/2/25 11:31:45

通俗解释电感参数对电路性能的影响

小电感,大讲究:从电源纹波到EMI,一文看懂电感参数如何“牵一发而动全身”你有没有遇到过这样的情况?调试一个DC-DC电路,输入输出电压都没问题,可一接上负载,输出就开始抖;效率怎么也…

作者头像 李华
网站建设 2026/2/24 3:24:39

PlayIntegrityFix完整解决方案:2025年Root设备认证终极指南

PlayIntegrityFix完整解决方案:2025年Root设备认证终极指南 【免费下载链接】PlayIntegrityFix Fix Play Integrity (and SafetyNet) verdicts. 项目地址: https://gitcode.com/GitHub_Trending/pl/PlayIntegrityFix 还在为Google Play设备认证失败而烦恼吗&…

作者头像 李华
网站建设 2026/3/2 6:11:50

洛雪音乐音源配置指南:5分钟实现免费畅听海量音乐

洛雪音乐音源配置指南:5分钟实现免费畅听海量音乐 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 还在为音乐会员费用烦恼吗?通过简单的洛雪音乐音源配置,你就能…

作者头像 李华
网站建设 2026/2/24 11:21:27

SeedVR-3B:通用视频修复的终极扩散大模型

SeedVR-3B:通用视频修复的终极扩散大模型 【免费下载链接】SeedVR-3B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/SeedVR-3B 导语 字节跳动旗下团队推出的SeedVR-3B扩散大模型,以"无先验依赖"的创新架构突破传统视…

作者头像 李华
网站建设 2026/2/28 23:45:08

5步掌握AI人体姿势搜索神器:零基础也能精准匹配动作

5步掌握AI人体姿势搜索神器:零基础也能精准匹配动作 【免费下载链接】pose-search x6ud.github.io/pose-search 项目地址: https://gitcode.com/gh_mirrors/po/pose-search 在当今数字时代,如何从海量图片中快速找到特定的人体姿势?传…

作者头像 李华