好像想明白了
正在运行的任务是所有就绪任务中优先级最高的,如果要运行其它优先级更高的任务,就只有发生了某些事件使得更高优先级的任务进入了就绪状态,而这些事件只有在两种情况下发生: 1. 中断改变了任务状态 2. 运行中的任务主动使优先级更高的任务进入就绪状态
2 相当于是主动放弃CPU占有权,所以说抢占是由中断引起的,是异步调度的结果
所以就是你说的结论,关中断只是关了抢占,而运行中的任务依然可以主动做任务调度。这里uC/OS有一个非常重要的前提条件,就是 运行中的任务是所有就绪任务中优先级最高的,如果没有事件发生就会一直运行直到完成。
John_Lee,我理解的对不? |
|