2 RTOS系列文章:PendSV功能,为什么需要PendSV( 二 )


答案:确实存在这些问题,但是这些问题影响面已经很小了 。我们能不能将的优先级设置成最高,将的优先级设置为低,就能完美的解决上述问题,我们不妨分析下这种情况:
这样似乎解决了问题,但是又带来了一个问题,因为的优先级最高,而且又是周期性的触发,会导致经常抢占外部IRQ,这就会导致外部IRQ响应变慢,这在一些对实时性要求高的,比如按键、断电中断等待,是不能接受的,你肯定不希望你的按键扫描体验卡顿 。
所以,没有十全十美的解决方案,关键是要看我们更关注什么?对于CPU来说,嵌入式OS也是一个程序,跟普通的裸机程序是一样的,无非就是复杂一些,涉及到了手动切换堆栈、PC等高级操作而已,OS的优先级天生就没有外部中断的优先级高 。
小结 是可悬起系统中断,具有【缓期执行】特征 。一般被嵌入式OS用于 任务调度的上下文切换 。使用时,一般会将的优先级设置为最低,让外部IRQ先执行,等到没有外部中断后,在执行上下文切换 。嵌入式实时操作系统的【实时】概念,并不仅仅指应用程序、任务的调度实时,而是指整个系统的实时性高,具备【可剥夺】特点,当有高优先级的中断、任务具备执行条件时,立刻中断当前正在运行的任务,去执行高优先级的IRQ和高优先级任务 。嵌入式OS一般会将的优先级也设置为最低,保证外部中断IRQ优先,详细的分析,我们下一篇文章讨论 。