Advertisement

物联网RTOS开发(二)——信号量互斥量

阅读量:

信号量与互斥量

一、信号量与互斥量的差异

信号量和互斥量在任务同步以及资源互斥方面具有广泛应用。实际应用中,二者常被混淆使用,并且在许多情况下也允许进行混用。然而,它们之间仍存在显著区别。

二值信号量主要适用于任务与任务之间的同步操作,以及中断与任务之间的同步机制。而互斥量则更多地用于资源的互斥访问控制。值得注意的是,互斥量具备优先级继承机制。例如,当一个低优先级的任务正在使用某个互斥量时,若此时有一个高优先级的任务进入就绪状态并获得CPU使用权,同时该高优先级任务需要请求该互斥量,则系统会将低优先级任务的优先级临时提升至与高优先级相同等级。相较之下,在二值信号量的使用过程中不会发生此类优先级调整行为,最多只是让高优先级任务暂时被挂起,待其成功获取到信号量后才能继续执行。当高优先级任务因等待低优先级任务持有的信号量而被挂起的现象称为“任务的优先级翻转”。这种机制在设计低功耗模型时较为适用,相关内容将在后续介绍低功耗模块时详细说明。

还需特别注意的是,在FreeRTOS系统中,为了体现信号量用于任务同步、互斥量用于资源保护的设计初衷(这也是众多实时操作系统开发者设计互斥量的核心理念),系统对互斥量的释放操作进行了限制:必须由获取该互斥量的同一任务来执行释放操作。如果出现某任务获取了某个互斥锁后,在另一个不同的任务中尝试释放该锁,则系统会触发断言错误。

**二

全部评论 (0)

还没有任何评论哟~