FreeRTOS和ThreadX的任务调度

本文深入探讨了FreeRTOS和ThreadX两种实时操作系统在任务调度上的差异。FreeRTOS支持基于优先级的可抢占调度及时间片调度,而ThreadX则提供更精细的时分调度,确保相同优先级线程的执行时间一致性。

FreeRTOS的任务调度

       通过将 configUSE_PREEMPTIONconfigUSE_TIME_SLICING 都设置 1,FreeRTOS可以同时支持基于优先级可抢占的调度和相同优先级任务时间片调度。

        在这种配置方式下,任务会在以下时间点发生调度:

1、低优先级任务发送消息、事件或者信号量可以导致高优先级任务进入运行态。

     该低优先级任务的发送消息、事件、信号量函数返回时,代表它再次进入运行态,也表示由其引起的高优先级任务执行已经完毕。

2、中断服务程序的发送消息、事件或信号量可以导致高优先级任务进入运行态。

3、时间片调度是由tick中断触发的,前提是中间没有发生其它引起调度操作或事件。

      情况一:2个相同优先级的任务,Task_A 处于运行态,Task_B 处于ready态。

         (a)此时发生了一个中断,或者 Task_A 往 Task_B 发送一个消息,都会触发任务调度,调度程序会使相同优先级的下一个任务,即 Task_B 获得运行,而 Task_A 进入ready态,虽然 Task_A 还没有运行完一个tick周期。

         (b)当Task_A触发了一个更高优先级任务获得运行,该更高优先级任务执行完毕后,虽然Task_A还没有运行完一个tick周期,但调度程序会使相同优先级的下一个任务,即Task_B获得运行,而Task_A进入ready态。

      情况二:2个相同优先级的任务 Task_A 和Task_B都处于ready态,一个更高优先级的 Task_C处于运行态。

          &nbs

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值