FreeRTOS 使用什么样的调度程序?
我在某处读到它是完成调度程序的运行,但另一方面,我也看到它被用于并行任务,所以它不会是循环调度程序?
最高优先级的任务被授予 CPU 时间。如果多个任务具有相同的优先级,则在它们之间使用循环调度。较低优先级的任务必须等待。
重要的是,高优先级任务不会在 100% 的时间内执行,因为低优先级任务永远不会获得 CPU 时间。这是实时编程的一个基本问题。
通常,您希望为必须对某些重要事件做出快速反应、执行快速操作并进入睡眠状态的任务分配高优先级,同时让不太重要的事情工作。
这种系统的一般示例可能是:
一般应用程序的优先级最低,这些应用程序使用循环调度,它提供或多或少相等数量的 CPU 时间。
中等优先级 - 控制台任务。系统操作员无法被陷入无限循环的故障 www 服务器切断。这些任务并非 100% 的时间都在运行。例如,它可以执行来自管理员的命令行命令。
最高优先级 - 设备驱动程序,处理关键事件,例如机械控制。如果锅炉压力过高,您可能会对打开安全阀感兴趣,并且您真的不想等到 Web 服务器线程中完成一些愚蠢的 HTML 渲染。此类任务仅在有限的时间内运行。