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处于运行态。

            当 Task_C 执行完毕,Task_A获得运行,接着来了一个tick中断,调度程序会使相同优先级的下一个任务,即 Task_B 获得运行,而 Task_A 进入ready态,虽然到此时为止,Task_A运行的时间没有达到一个tick周期。

因此,这里的时间片调度是无法保证相同优先级任务获得相同CPU运行时长,这与时分操作系统不同。

 

ThreadX的线程调度

  • 默认是基于优先级的可抢占调度方式。
  • 对于同优先级线程,默认是FIFO调度方式,当然,也可以配置为时分(time-slicing)调度方式。
  • 对于时分调度方式
  1. 时分值可以每个线程单独分配。
  2. 当被抢占后,能够在同优先级线程中优先获得被抢占前未执行完成的时间,即能保证同优先级线程获取的执行时间和设置值一致。比如:时间片统一设置为 10 ms的同优先级 T 线程 A、B、C;在A运行 3 ms时 CPU 被更高优先级线程抢占,当优先级T的线程再次获的CPU运行资源时,线程A会优先获得剩余的 7ms CPU资源。这一点与FreeRTOS的调度方式不同,ThreadX的同优先级时分是真的时分。

### 回答1: ThreadXFreeRTOS都是常用的嵌入式实时操作系统(RTOS),用于开发嵌入式系统。 ThreadX是由Express Logic开发的商业RTOS。它具有高度可靠性、高效性可扩展性的特点。ThreadX具有轻量级的内核,支持多线程、优先级调度、实时事件信号量消息队列等功能。它适用于多种处理器架构,并具有广泛的设备驱动支持。ThreadX还提供了全面的调试监控工具,便于开发者进行系统的调试性能优化。 而FreeRTOS是一款开源RTOS,由Richard Barry在2003年创建。它具有可移植性、可配置性易用性的特点。FreeRTOS的内核非常精简,适用于需要高度可裁剪的嵌入式系统。它支持多任务实时调度,提供了多种调度算法,如抢占式协作式调度。FreeRTOS提供了各种功能组件,如信号量、消息队列定时器,以便于开发者构建复杂的嵌入式系统。 ThreadXFreeRTOS在功能特性上有一些区别。ThreadX具有更强大全面的功能,适用于大型高度可靠性的嵌入式系统。而FreeRTOS则更加灵活精简,适用于资源受限的嵌入式系统。开发者可以根据具体需求选择使用哪种RTOS,以获得最佳的系统性能开发效率。 ### 回答2: ThreadXFreeRTOS都是实时操作系统(RTOS)。下面分别介绍它们的特点应用场景: ThreadX是由Express Logic公司开发的商业RTOS,具有高度可定制可扩展性的特点。它采用了优先级线程调度算法,使得不同的线程可以按照优先级的顺序进行调度,以满足实时性要求。ThreadX还提供了丰富的服务功能,如信号量、消息队列、事件标志等,支持多任务多线程并发处理。它在许多领域广泛应用,如汽车行业、工业控制、通信设备等。 FreeRTOS是一个开源的RTOS,非常受欢迎。它以轻量级可裁剪的特点而闻名,可在资源受限的嵌入式系统中运行。FreeRTOS提供了基本的任务管理调度功能,并具有内存管理、定时器、消息队列等常用功能。其设计简单,易于移植适应各种处理器架构。由于它是开源的,因此有较大的开发社区支持,并且有许多相应的扩展、应用工具可用。 ThreadXFreeRTOS在实时性功能上有些差异,选择哪个取决于项目的需求开发团队的偏好。如果项目对实时性要求比较高,或者需要一些高级功能,可以选择ThreadX。如果项目对资源的消耗有严格要求,或者需要定制化的开发,可以选择FreeRTOS。无论选择哪一个,它们都是用于嵌入式系统的可靠、成熟广泛应用的RTOS。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值