目录

一.产生原因

二.实验

1.二值信号量的创建

2.任务的创建

3.运行结果

一.产生原因

        在使用二值信号量的时候,会产生优先级翻转的现象,这种现象违背了实时操作系统的预期执行顺序。

        

        如图,有三个任务分别为高优先级(H),中优先级(M),低优先级(L),H和L优先级共享同一个二值信号量,当第一次二值信号量被释放的时候,H任务获取到开始执行,执行完后释放该二值信号量,此时L任务获取到该信号量,开始执行,由于L任务占用该信号量的时间大于H任务的占用的时间,所以此时H任务获取不到该信号量一直处于阻塞态,M任务就一直在运行会剥夺了L任务的CPU使用权,直到在L任务中该二值信号量被释放,所以此时M任务的优先级相当于高于H任务的优先级,导致了任务的优先级翻转。

二.实验

1.二值信号量的创建

2.任务的创建

3.运行结果

        可以从终端输出中看到,只有当L任务使用完该二值信号量释放H任务才会运行,在此之前M任务一直在运行,剥夺了L任务的CPU使用权,导致看起来M任务的优先级是最高的,这就是优先级翻转.

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐