这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 任务调度问题,请大侠支招!

共3条 1/1 1 跳转至

任务调度问题,请大侠支招!

菜鸟
2004-05-21 06:41:17     打赏
偶创建了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却永远不被执行?



关键词: 任务     调度     问题     大侠     支招    

菜鸟
2004-05-21 20:22:00     打赏
2楼
冒昧,是不是优先级弄反了?

菜鸟
2004-06-25 02:51:00     打赏
3楼
今天我把优先级改了,t2 = t3 = t4 > t1,并且用了时间片轮转的调度方式,但是有时t2还是一直处于pend状态,而t1,t3, t4 却一直到运行得很正常。是不是t2发生了活锁?t2, t3, t4 是由t1一次创建的。

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]