上下文切换时间 - RTOS和处理器的角色

Kar*_*uru 2 embedded operating-system rtos context-switch multitasking

RTOS是否起主要作用或处理器在确定上下文切换时间方面起主要作用?在确定上下文切换时间时,这两个主要参与者之间的份额百分比是多少.

任何人都可以告诉uC/OS-II RTOS吗?

Cli*_*ord 10

我会说两者都很重要,但它并不是那么简单:

实际的上下文切换时间只是执行切换所需的指令周期数的问题,就像软件中的任何内容一样,它可以被有效编码,也可能不会.另一方面,在所有其他条件相同的情况下,具有大寄存器集的处理器将需要更多的指令周期来保存上下文; 但是设置较大的寄存器可能会使其他代码更有效.

处理器还可以具有直接支持快速上下文切换的架构.例如,低8位8051有四个重复的寄存器组; 所以上下文切换只不过是一个寄存器组切换(只要你没有超过四个线程),并且考虑到Silicon Labs以100MIPS生产基于8051的设备,这可能非常快!

更复杂的处理器和操作系统可以使用MMU来提供线程内存保护,这是额外的上下文切换开销,但具有可以覆盖它的好处.当然,这样的处理器通常也具有高时钟速率,这有助于.

总而言之,处理器速度,处理器架构,RTOS实现的质量以及RTOS提供的功能都可能影响上下文切换时间.但最终改善切换时间的最简单方法几乎肯定是提高时钟频率.

虽然拥有更多的空间是很好的,但如果上下文切换时间是任何信誉良好的RTOS项目的成败问题,您应该考虑硬件或设计的适用性.您应该瞄准最小化上下文切换的设计.例如,如果ADC转换需要6us并且上下文切换需要20us,那么您最好忙于等待而不是使用转换完成中断; 更好地使用DMA传输以避免在可能的情况下对单个数据项进行上下文切换.