FreeRTOS使用什么样的调度程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FreeRTOS使用什么样的调度程序?相关的知识,希望对你有一定的参考价值。

FreeRTOS用的是什么样的调度器?

我曾在某处读到它是一个运行到完成的调度器,但另一方面,我也看到它被用于并行任务,所以它不会是一个round robin调度器吧?

答案

最高优先级的任务被授予CPU时间。如果多个任务的优先级相同,它就在它们之间使用循环调度。低优先级的任务必须等待。

重要的是,高优先级的任务不会在100%的时间内执行,因为低优先级的任务将永远不会获得CPU时间。这是实时编程的一个基本问题。

通常,你希望给一个必须对某些重要事件做出快速反应的任务分配一个高优先级,执行快速行动,然后进入睡眠状态,让不太重要的东西在此期间工作。

这样一个系统的通用例子可能是。

  1. 最高优先级--设备驱动任务(阀门控制、ADC、DAC等)
  2. 中等优先级--管理子系统(控制台任务、telnet任务)
  3. 低优先级--几个应用任务(www服务器、数据处理等)。

最低优先级的是一般的应用程序,使用轮回调度,这样可以获得或多或少相等的CPU时间。

中等优先级--控制台任务。系统操作员不能被一个故障的www服务器切断,陷入无限循环。那些任务不是100%的时间都在运行。例如,它可能会执行管理员的命令行命令。

最高优先级--设备驱动程序,处理关键事件,如机械控制。如果锅炉压力过高,你可能会对打开安全阀感兴趣,而你真的不想等到webserver线程中一些愚蠢的html渲染完成。这种任务只在有限的时间内运行。

以上是关于FreeRTOS使用什么样的调度程序?的主要内容,如果未能解决你的问题,请参考以下文章

使用 freeRtos 触发任务的可变延迟

STM32与FreeRTOS实现低功耗

轻量级操作系统FreeRTOS的内存管理机制

轻量级操作系统FreeRTOS的内存管理机制

FREERTOS之任务调度vPortYield

freertos openamp 使用vitis创建的工程,任务无法调度