RTOS是否起主要作用或处理器在确定上下文切换时间方面起主要作用?在确定上下文切换时间时,这两个主要参与者之间的份额百分比是多少。
任何人都可以告诉uC / OS-II RTOS吗?
答案 0 :(得分:10)
我会说两者都很重要,但实际上并不那么简单:
实际上下文切换时间只是执行切换所需的指令周期数的问题,就像软件中的任何内容一样,它可以被有效编码,也可能不会。另一方面,在所有其他条件相同的情况下,具有大寄存器集的处理器将需要更多的指令周期来保存上下文;但是设置较大的寄存器可能会使其他代码更有效。
处理器还可以具有直接支持快速上下文切换的架构。例如,低8位8051有四个重复的寄存器组;所以上下文切换只不过是一个寄存器组切换(只要你没有超过四个线程),并且考虑到Silicon Labs以100MIPS生产基于8051的设备,这确实非常快!
更复杂的处理器和操作系统可能会使用MMU来提供线程内存保护,这是一个额外的上下文切换开销,但具有可以覆盖它的好处。当然,这样的处理器通常也具有高时钟速率,这有助于。
总而言之,处理器速度,处理器架构,RTOS实现的质量以及RTOS提供的功能都可能影响上下文切换时间。但最终改善切换时间的最简单方法几乎肯定是提高时钟频率。
虽然拥有更多的空间是很好的,但如果上下文切换时间是任何信誉良好的RTOS项目的成败问题,您应该考虑硬件或设计的适用性。您应该瞄准最小化上下文切换的设计。例如,如果ADC转换需要6us并且上下文切换需要20us,那么您最好忙于等待而不是使用转换完成中断;更好的是使用DMA传输以尽可能避免单个数据项的上下文切换。
答案 1 :(得分:2)
因此,上下文切换时间将非常依赖于所选的处理器以及用于使uC / OS-II适应该处理器的特定部分。我相信所有源代码都可用,因此您应该能够看到上下文切换需要多少源。我还认为uC / OS-II有回调功能,可以让你添加一些性能测量代码。
答案 2 :(得分:1)
为了完成Clifford的说法,上下文切换时间还取决于触发上下文切换的条件,因此主要取决于基准测试。
根据RTOS的实现,在某些情况下,可以直接切换到绕过调度程序的第一个等待进程。
这当然会在一些基准测试中大大提升。
例如,我们制定一些基准测试来衡量传递信号所需的开销(以μs为单位),并切换到改变特定内核配置和目标架构的高优先级进程: http://www.bertos.org/discover/context-switch-overhead