RT-Thread学习总结(1)---线程调度

1、系统支持256个优先级,0为最高优先级,255一般为空闲线程;根据实际情况可设置为8个或者32个优先级

2、调度器实现通过一个包含256个优先级队列的数组;每个数组元素中放置相同优先级链表的表头。这些相同优先级的列表形成一个双向环形链表,最低优先级线程链表一般只包含一个idle线程。系统中的总线程数不受限制,只和系统所能提供的内存资源相关。

3、采用了基于位图的优先级算法(时间复杂度O(1),即与就绪线程的多少无关),通过位图的定位快速的获得优先级最高的线程。

4、允许创建相同优先级的线程,相同优先级的线程采用时间片轮转方式进行调度(也就是通常说的分时调度器),时间片轮转调度仅在当前系统中无更高优先级就绪线程存在的情况下才有效。

5、操作系统通过数据结构线程控制块struct rt_thread控制线程

6、线程共有5种状态,如下图

7、空闲线程是系统线程中一个比较特殊的线程,它具有最低的优先级,当系统中无其他线程可运行时,调度器将调度到空闲线程。空闲线程通常是一个死循环,永远不被挂起。

   空闲线程提供了钩子函数,并且负责线程清理(rt_thread->cleanup回调函数)函数、真正的线程删除。

你可能感兴趣的:(RT-Thread学习总结(1)---线程调度)