FreeRTOS 调度器的复杂度是多少?
What is the complexity of the scheduler of the FreeRTOS?
我搜索了 FreeRTOS 的文档,但找不到任何与其调度程序的复杂性相关的内容。那么,它的复杂性是什么?有什么办法可以自己检测吗?
FreeRTOS 内核将 TCB (任务控制块) 实例指针存储在双向链表数组中。数组的索引表示任务所属的优先级组。这是它的可视化图表。请注意,该列表仅包含处于就绪状态的任务的 TCB。
每次调度程序运行时,算法都会选择位于最高索引*(即最高优先级)* 的第一个 TCB。如果最高优先级的双向链表有多个元素,则选择第一个。循环机制用于此目的。很明显,这个过程与准备调度的任务数无关。因此,时间复杂度为O(1).
我搜索了 FreeRTOS 的文档,但找不到任何与其调度程序的复杂性相关的内容。那么,它的复杂性是什么?有什么办法可以自己检测吗?
FreeRTOS 内核将 TCB (任务控制块) 实例指针存储在双向链表数组中。数组的索引表示任务所属的优先级组。这是它的可视化图表。请注意,该列表仅包含处于就绪状态的任务的 TCB。
每次调度程序运行时,算法都会选择位于最高索引*(即最高优先级)* 的第一个 TCB。如果最高优先级的双向链表有多个元素,则选择第一个。循环机制用于此目的。很明显,这个过程与准备调度的任务数无关。因此,时间复杂度为O(1).