这篇文章给大家介绍怎么进行RT-Thread中线程调度器的解析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
调度器是操作系统的核心,其主要功能就是实现线程的切换,即从就绪列表里面找到优先级最高的线程,然后去执行该线程。
要实现线程调度器,首先面临的问题是何时需要将CPU从无限循环的线程中释放出来。这个得分不同的场景,比如:线程执行完毕;线程需要等待外设响应;线程正在执行,但这时更高优先级的线程就绪了;线程正在执行,但这时相同优先级的线程就绪了。不同的os对这些场景的处理是不尽相同的。RTT作为一种RTOS,允许抢占调度。所以当线程正在执行,但这时更高优先级的线程就绪了,线程调度器应该立刻主动抢占CPU。
这就出现了第二个问题,如何将CPU从无限循环的线程中释放出来。我们知道,中断控制器能打断程序的执行顺序,获得对CPU的控制。但有些线程并不涉及中断。对此,操作系统用一个计数器来处理这个问题。这个计数器就像RTOS的“心跳”一样,定时唤醒线程调度器。STM32F103提供了一个专门的外设SysTick给操作系统使用。
第三个问题是,线程切换后,如何恢复线程之前的状态。这个就需要给每个线程分配一段专有的线程栈,用于在线程切换时存储线程的参数。
关于怎么进行RT-Thread中线程调度器的解析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/222903.html