优先级翻转问题

本文探讨了优先级翻转问题在多任务系统中的表现,通过实例展示了如何创建三个不同优先级的任务,使用二值信号量模拟低优先级任务被高优先级中断的情况。详细描述了任务流程,并强调了如何防止优先级倒置导致的任务延误。
摘要由CSDN通过智能技术生成

优先级翻转问题:
一,优先级翻转问题;
在这里插入图片描述
正常情况下,信号量被低优先级任务所占用的时候,其他任务想要使用必须等待低优先级任务释放信号量后才能使用。但是优先级翻转就会出现,在低优先级任务正常使用二值信号量时,高优先级的任务占用了CPU的使用权,此时会出现中优先级的任务去抢占CPU的使用权,去执行中优先级的任务,由于此时低优先的信号量没有释放,此时会较长时间的执行中优先级的任务。

二,优先级翻转功能需求:
1,新建三个任务,优先级分别是中,高,低
2,新建二值信号量,用于模拟低优先级翻转。
3,低优先级任务获取信号量后,被中优先级的任务打断,中优先级任务执行较长时间,因为低优先级任务还没有释放信号量,高优先级任务就无法获取信号量继续运行。

void taskYIELD(void);

功能概述:释放当前任务CPU使用权,开启上下文切换。

三,优先级翻转功能实现:

低优先级任务流程:

获取二值信号量–>循环释放CPU使用权—>释放二值信号量—>系统延时500ms。

高优先级任务流程:

获取二值信号量—>释放二值信号量—>系统延时500ms。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值