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

2019-07-20 22:20发布

OS:uCOS-II

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


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


这样理解对吗?不对请指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
来俩不甜的
1楼-- · 2019-07-24 02:47
特朗姆斯 发表于 2016-5-9 11:26
那么如果假设当前正在运行的低优先级任务总共需要占用2ms的运行时间,然后这个任务运行到1ms之后高优先级 ...

要知道任务不会打断任务,除非任务里边进行了能够引起任务调度的操作如延时,或者是中断来了退出中断的时候会进行任务调度
特朗姆斯
2楼-- · 2019-07-24 08:28
 精彩回答 2  元偷偷看……
来俩不甜的
3楼-- · 2019-07-24 09:19
 精彩回答 2  元偷偷看……
特朗姆斯
4楼-- · 2019-07-24 11:51
来俩不甜的 发表于 2016-5-9 12:00
本质是中断打断,主要是systickhandler,如果systick设为1ms那么只有每ms进行一次调度,如果设为10ms那么 ...

我之前是像你这么理解的,但是原子哥赞同的是楼主的想法
天山狐狸
5楼-- · 2019-07-24 13:10
特朗姆斯 发表于 2016-5-9 12:58
我之前是像你这么理解的,但是原子哥赞同的是楼主的想法

再次呼叫一下原子

@正点原子,这种情况下这样理解对吗
天山狐狸
6楼-- · 2019-07-24 17:00
来俩不甜的 发表于 2016-5-9 12:00
本质是中断打断,主要是systickhandler,如果systick设为1ms那么只有每ms进行一次调度,如果设为10ms那么 ...

原理上是这么理解的,即使高优先级的任务已经就绪了,但是os现在在空闲任务中,还没到调度的时间,空闲任务中没有调度的语句,所以这么看来,若OS是10ms调度一次,那个任务的最大延时时间可以看成是10ms,即10ms后系统才相应任务。


坐等高手解释下。

一周热门 更多>