OS:uCOS-II
以前我一直认为是一个任务只要在运行,只有中断才可以打断它继续运行;但是最近测试发现只要比它优先级高的任务都可以打断它继续运行。只要高优先级的任务满足运行的条件,不管低优先级任务是否在运行,它都可以打断它来抢先运行自己。
总结:
1、中断可以打断任何任务而抢先运行,不管任务是否在运行都没有关系,即中断来了它就要使用CPU
2、高优先级的任务只要满足运行的条件,不管低优先级的任务是否在运行都没有关系,即使低优先级任务在运行,高优先级任务也可以打断它【类似中断的现象】而运行自己
这样理解对吗?不对请指点
是这么理解的。没有任务调度,高优先级的任务肯定不会打断低优先级任务的。
问题的关键是:请看32、36楼。高优先级任务为什么没有运行了让你低优先级的任务运行呢?就是因为高优先级任务在等待某个信号或延时没到,低优先级任务才可以运行。当高优先级任务等待的信号来临时【如post等】,那里肯定会发生一次任务调度,这样高优先级任务马上就运行了。即打断了正在运行的低优先级任务。
总结:只要是满足高优先级任务就绪的那里肯定有任务调度,所以就绪的高优先级任务会马上执行,即它打断了正在运行的低优先级任务。
一周热门 更多>