OS:uCOS-II
以前我一直认为是一个任务只要在运行,只有中断才可以打断它继续运行;但是最近测试发现只要比它优先级高的任务都可以打断它继续运行。只要高优先级的任务满足运行的条件,不管低优先级任务是否在运行,它都可以打断它来抢先运行自己。
总结:
1、中断可以打断任何任务而抢先运行,不管任务是否在运行都没有关系,即中断来了它就要使用CPU
2、高优先级的任务只要满足运行的条件,不管低优先级的任务是否在运行都没有关系,即使低优先级任务在运行,高优先级任务也可以打断它【类似中断的现象】而运行自己
这样理解对吗?不对请指点
应该就在滴答定时器中判断并做的任务切换。另:抢占型OS就需要这样,永远是高优先级的任务先运行
下面是滴答定时器中断中的代码
[mw_shl_code=applescript,true]void SysTick_Handler (void)
{
#if OS_CRITICAL_METHOD == 3u
OS_CPU_SR cpu_sr;
#endif
OS_ENTER_CRITICAL();
OSIntNesting++;
OS_EXIT_CRITICAL();
OSTimeTick(); /* Call uC/OS-II's OSTimeTick()*/
OSIntExit();
}[/mw_shl_code]
一周热门 更多>