关于ucos中系统的任务运行的原理

2019-10-15 05:16发布

我记得
不是说好有任务优先级的吗?系统执行任务是先执行完高优先级的;(我的理解是,期间低优先级的任务完全不执行。)

然后去执行低优先级的。
然后任务调度不是只发生在面对同一优先级的任务的吗?(这是系统分配时间片)

不知道我的理解是不是错了……
那为什么在考虑到信号量的时候,高优先级的task请求信号量(高优先级的task内第一行代码就是delay,然后才请求信号量),
低优先级的task也是(低优先级的task内第一行代码直接请求信号量),反而是低优先级的任务先执行。。。。

不是很懂,求助。
(问题出处在ucos开发手册--第十章·信号量--优先级反转实验)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
wszdxmh
2019-10-15 13:41
如果优先级高的任务进行就绪状态,或者优先级高的任务在运行状态而没有调用任务切换函数,如系统级延时函数等,那么高优先级的任务就会一直占用CPU,低优先级的任务无法执行。而低优先级的任务就算没有调用任务切换函数,只要高优先级的任务进入了就绪状态,那高优先级的任务也可以被执行。你可以看一下任务状态切换表那张图

一周热门 更多>