OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4125|回复: 5

ucos小白问一个任务调度的问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-7-22
在线时间
0 小时
发表于 2015-7-22 14:20:53 | 显示全部楼层 |阅读模式
5金钱
ucos会不会出现因为任务太多,导致高优先级的任务占用了100%CPU,而低优先级的任务永远不能运行的情况

最佳答案

查看完整内容[请看2#楼]

不可能,一个任务占用100%的CPU使用率说明CPU被一个任务独享了,这个也只是暂时的,任务执行完以后就会让出CPU使用权给低优先级的任务,如果一个任务让不出CPU使用权的话只有一种情况,那就是人为的,也就是说你的代码有bug。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-7-22 14:20:54 | 显示全部楼层
不可能,一个任务占用100%的CPU使用率说明CPU被一个任务独享了,这个也只是暂时的,任务执行完以后就会让出CPU使用权给低优先级的任务,如果一个任务让不出CPU使用权的话只有一种情况,那就是人为的,也就是说你的代码有bug。
开往春天的手扶拖拉机
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2015-7-22 15:02:45 | 显示全部楼层
假如写了6个任务,使高的3个相互切换时总有至少1个处于准备好的状态。低的3个就永远跑不了

高优先级任务1延时后任务2执行,如果2执行完时1就准备好了,其他低的任务当然跑不了。
小小蜗牛
回复

使用道具 举报

8

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
金钱
210
注册时间
2014-9-29
在线时间
13 小时
发表于 2015-7-22 15:02:59 | 显示全部楼层
一般情况下不会出现。下面说说出现的情况:情况一:除非高优先级的任务没有使用延时,只要高优先级任务就绪就会占用CPU,那么低的优先级自然得不到CPU的使用权,因为高优先级的任务会一直占用,不会释放;情况二:如果高优先级的任务使用延时,但是延时时间比低优先级任务的延时时间短的话,也会一直占用,因为就绪的更快,在就绪表中自然就在前面,那么低的优先级自然也得不到CPU的使用权
回复

使用道具 举报

39

主题

598

帖子

0

精华

高级会员

Rank: 4

积分
875
金钱
875
注册时间
2013-12-18
在线时间
41 小时
发表于 2015-7-22 15:07:18 | 显示全部楼层
同意2楼,在每次时间片轮转的时候,如果每次都有高优先级的任务在就绪队列等CPU,那么你的低的是永远跑不起来,所以这就涉及到操作系统的调度算法的知识了,要是你的系统是这种情况,那你就得用算法来避免了,但是一般不会出现把,高优先级抢占几圈时间片也就结束了呗,除非源源不断,那就得算法优化了。
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-7-22
在线时间
0 小时
 楼主| 发表于 2015-7-22 15:21:40 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
并不是说一个任务占用了100%CPU,而是多个任务一起,就是2楼说的那种情况
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 14:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表