偶创建了4个任务t1, t2, t3, t4. 任务t1 和t2 的优先级相同,t3低于t1. t4低于t3, 如下:
优先级: t1 = t2 > t3 > t4
关系:t2, t3, t4 是由t1创建的任务,t1是主任务。
四个任务共用一段受互斥的二进制信号量保护的临界区代码(一个全局的数组变量)。
互斥信号量创建使用的是优先级队列.
t1,t2, t3, t4 ,用的都是 semTake(semMutex, WAIT_FOREVER);
问题描述:绝大部分的情况下,四个任务运行都非常的正常。而有时在程序运行后,t2就永远不被执行,用shell的-〉i 命令观察各任务的状态,t2 大部分是处于pend状态,而偶尔处于ready状态。t1 大部分是处于ready状态, 偶尔处于pend或pend + T状态。t3, t4在一切情况下都运行正常。
问题:
1:既然t1,t2的优先级相同,且t2有时也处于ready状态,为什么t2有时会永远不被执行?
2:在不正常的情况下,t2的优先级大于t3和t4,为什么t3,和t4能够被执行而t2却永远不被执行?
共3条
1/1 1 跳转至页
3楼
今天我把优先级改了,t2 = t3 = t4 > t1,并且用了时间片轮转的调度方式,但是有时t2还是一直处于pend状态,而t1,t3, t4 却一直到运行得很正常。是不是t2发生了活锁?t2, t3, t4 是由t1一次创建的。
共3条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| bsp_log:RTT分级日志封装被打赏¥16元 | |
| J-LinkRTT常用API函数讲解被打赏¥14元 | |
| 【S32K3学习整理】S32K388 四核启动被打赏¥23元 | |
| 【S32K3学习整理】Lockstep和Decoupled 模式被打赏¥28元 | |
| 嵌入式芯片调试神器-J-LinkRTT被打赏¥21元 | |
| 人体红外PIR感应传感器使用(ESP32S3)被打赏¥26元 | |
| 一种有效完成脚本程序测试的方法被打赏¥28元 | |
| WorkBuddy搭配SolidCraft给开发板做两件式外壳被打赏¥33元 | |
| 开箱一块k230被打赏¥33元 | |
| 【瑞萨RA8D1测评】RA8D1+lwIP网络验证与TCPOTA的实验记录被打赏¥33元 | |
我要赚赏金
