news 2026/3/17 22:39:07

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/3/13 21:45:09

5.5 RTOS任务通知(Task Notification)

5.5 任务通知(Task Notification) 5.5.1 任务通知的本质:面向任务的直接事件通信 在传统RTOS通信模型中,任务间的同步与数据交换需要通过诸如队列、信号量、事件组等内核对象作为中介。这些对象由内核动态创建和管理,任务通过句柄访问它们。这种模型虽然清晰、通用,但每…

作者头像 李华
网站建设 2026/3/13 15:17:05

Steamless终极指南:5个步骤轻松搞定DRM移除的完整教程

Steamless终极指南:5个步骤轻松搞定DRM移除的完整教程 【免费下载链接】Steamless Steamless is a DRM remover of the SteamStub variants. The goal of Steamless is to make a single solution for unpacking all Steam DRM-packed files. Steamless aims to sup…

作者头像 李华
网站建设 2026/3/13 10:00:59

MobaXterm中文版:重塑你的远程工作流体验

MobaXterm中文版:重塑你的远程工作流体验 【免费下载链接】Mobaxterm-Chinese Mobaxterm simplified Chinese version. Mobaxterm 的简体中文版. 项目地址: https://gitcode.com/gh_mirrors/mo/Mobaxterm-Chinese 还在为频繁切换各种远程工具而烦恼吗&#x…

作者头像 李华
网站建设 2026/3/15 18:43:30

没GPU怎么体验新模型?云端ASR镜像1块钱快速验证

没GPU怎么体验新模型?云端ASR镜像1块钱快速验证 你是不是也遇到过这样的情况:听说某个最新的语音识别模型特别牛,支持家乡话、方言都能听懂,心里一激动就想试试看。可问题是——你手上只有一台普通的笔记本电脑,连个像…

作者头像 李华
网站建设 2026/3/13 5:43:32

零基础玩转人脸关键点检测:DamoFD-0.5G预置镜像实战指南

零基础玩转人脸关键点检测:DamoFD-0.5G预置镜像实战指南 你是不是也遇到过这样的情况:想做一个酷炫的互动艺术装置,比如能随着观众表情变化而变色的灯光墙,或者根据人脸朝向控制动画方向的投影秀?但一想到要搞“人脸追…

作者头像 李华