说说我对uCOS-II任务调度的理解,大家看看对不,不对请指教

2019-07-20 22:20发布

OS:uCOS-II

以前我一直认为是一个任务只要在运行,只有中断才可以打断它继续运行;但是最近测试发现只要比它优先级高的任务都可以打断它继续运行。只要高优先级的任务满足运行的条件,不管低优先级任务是否在运行,它都可以打断它来抢先运行自己。


总结:
1、中断可以打断任何任务而抢先运行,不管任务是否在运行都没有关系,即中断来了它就要使用CPU
2、高优先级的任务只要满足运行的条件,不管低优先级的任务是否在运行都没有关系,即使低优先级任务在运行,高优先级任务也可以打断它【类似中断的现象】而运行自己


这样理解对吗?不对请指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
来俩不甜的
1楼-- · 2019-07-24 20:53
 精彩回答 2  元偷偷看……
特朗姆斯
2楼-- · 2019-07-25 00:46
来俩不甜的 发表于 2016-5-11 22:12
发现忽略了一个问题啊。任务不会无缘无故的就绪,任务的就绪都会伴随着任务调度。这样楼主位说的就没错了 ...

如果高优先级的任务是通过获得信号量来进行,这个信号量由中断给出,恰好中断服务程序的最后没有调用进入系统调度的函数呢?
来俩不甜的
3楼-- · 2019-07-25 00:48
特朗姆斯 发表于 2016-5-12 08:56
如果高优先级的任务是通过获得信号量来进行,这个信号量由中断给出,恰好中断服务程序的最后没有调用进入 ...

那是你程序写的有问题,那谁知道呢。还是想办法搞明白正确的情况,错误的情况下出现啥问题都奇怪
特朗姆斯
4楼-- · 2019-07-25 03:36
来俩不甜的 发表于 2016-5-12 09:11
那是你程序写的有问题,那谁知道呢。还是想办法搞明白正确的情况,错误的情况下出现啥问题都奇怪

freertos的中断就可以不用写OSIntExit函数,照样没有问题
天山狐狸
5楼-- · 2019-07-25 05:39
来俩不甜的 发表于 2016-5-11 22:12
发现忽略了一个问题啊。任务不会无缘无故的就绪,任务的就绪都会伴随着任务调度。这样楼主位说的就没错了 ...

嗯,这样理解就对了

高优先级任务不会无缘无故的就绪,哪里就绪了,那里就会有任务的调度的。所以高优先级任务不会延时10ms后才响应的。
天山狐狸
6楼-- · 2019-07-25 06:48
 精彩回答 2  元偷偷看……

一周热门 更多>