2

在确定上下文切换的时间方面,RTOS 起主要作用还是处理器起主要作用?这两个主要参与者在确定上下文切换时间方面所占的百分比是多少。

谁能告诉关于 uC/OS-II RTOS ?

4

3 回答 3

10

我想说两者都很重要,但实际上并不是那么简单:

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

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

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

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

尽管有更多的余量很好,但如果上下文切换时间是您在任何知名 RTOS 上的项目的成败问题,您应该考虑您的硬件或设计的适用性。您应该以最小化上下文切换的设计为目标。例如,如果 ADC 转换需要 6us 而上下文切换需要 20us,那么您最好使用忙等待而不是使用转换完成中断;最好使用 DMA 传输来避免在可能的情况下对单个数据项进行上下文切换。

于 2010-06-12T23:32:55.117 回答
2

uC/OS-II RTOS 是用 C 语言编写的,有一些非常具体的部分(可能在汇编中)用于处理器特定的处理。上下文切换将是特定于处理器的部分的一部分。

因此上下文切换时间将非常依赖于所选的处理器以及用于使 uC/OS-II 适应该处理器的特定部分。我相信所有源代码都可用,因此您应该能够看到上下文切换需要多少源代码。我还认为 uC/OS-II 有回调,可以让你添加一些性能测量代码。

于 2010-06-13T16:42:16.863 回答
1

只是为了完成克利福德所说的内容,上下文切换时间还取决于触发上下文切换的条件,因此主要取决于基准。

根据 RTOS 实现,在某些情况下,可以直接切换到第一个等待进程,完全绕过调度程序。

这当然会极大地推动某些基准测试。

例如,我们制作了一些基准来测量传递信号所需的开销(以 µs 为单位)并切换到改变特定内核配置和目标架构的高优先级进程: http ://www.bertos.org/discover/context -切换开销

于 2011-12-22T13:00:20.860 回答