2

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

我在某处读到它是完成调度程序的运行,但另一方面,我也看到它被用于并行任务,所以它不会是循环调度程序?

4

1 回答 1

5

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

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

通常,您希望为必须对某些重要事件做出快速反应、执行快速操作并进入睡眠状态的任务分配高优先级,同时让不太重要的事情工作。

这种系统的一般示例可能是:

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

一般应用程序的优先级最低,这些应用程序使用循环调度,它提供或多或少相等数量的 CPU 时间。

中等优先级 - 控制台任务。系统操作员无法被陷入无限循环的故障 www 服务器切断。这些任务并非 100% 的时间都在运行。例如,它可以执行来自管理员的命令行命令。

最高优先级 - 设备驱动程序,处理关键事件,例如机械控制。如果锅炉压力过高,您可能会对打开安全阀感兴趣,并且您真的不想等到 Web 服务器线程中完成一些愚蠢的 HTML 渲染。此类任务仅在有限的时间内运行。

于 2014-06-07T19:51:01.297 回答