UCOS任务切换的工作到底是OS_Sched()完成的还是系统时钟中断完成的?网上很多讲解都不详细,请教高人指


在OS_Start()里就是调用OS_Sched(),来切换数轮世任务。一个任务等待信号量或者把自己悬挂起来也是通过OS_Sched()来切换的。大多数的情况都是通过OS_Sched()来切换桐棚的。
如果调用OS的延时函数OSTimeDly(),先把任务挂起来,系统时间中断来了,也一定不会发生任务切换,要看此时是否有更高优先级薯肢的任务在就绪状态,有就切换,没有就不切换。其他的中断也是这样,中断返回时检查有没有更高优先级的任务。
时钟中断等于是定时调用OS_Sched()完成任务切换的,另外首渗引用UCOS系统者缺脊函扮念数也会调用OS_Sched()产生任务切换