下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

实时调度
[RTOS 基本原理]

下图演示了实时操作系统如何调度上一页中定义的任务。RTOS 自身创建了一个任务:空闲任务,该任务仅在没有其他任务执行时才会执行。RTOS 空闲任务总是处于就绪态。

RTExample.gif


请参阅上图:

  • 开始时,这两个任务都不能运行:vControlTask 等待合适的时间来开始新的控制周期, vKeyHandlerTask 等待按键操作。处理器时间分配给了 RTOS 空闲任务。
  • 在时间 t1 处,一个按键事件发生。vKeyHandlerTask 可以执行,其优先级高于 RTOS 空闲任务,因此获得了处理器时间。
  • 在时间 t2 处,vKeyHandlerTask 已完成按键处理并更新 LCD。 在按下另一个键之前该任务无法继续执行,因此将自己挂起,RTOS 空闲任务恢复执行。
  • 在时间 t3 处,定时器事件指示执行下一个控制循环的时间到了。vControlTask 现在可以执行,因为优先级最高的任务被立刻分配了处理器时间。
  • 在时间 t3 和 t4 之间,vControlTask 仍在执行时,发生了按键事件。vKeyHandlerTask 可以执行,但由于其优先级低于 vControlTask,因此未获得任何处理器时间。
  • 在 t4 处, vControlTask 完成了控制周期的处理,并且直到下一次定时事件的发生前不能重新开始运行,进入阻塞态 。vKeyHandlerTask 现在成为可以运行的最高优先级的任务,因此获得处理器时间以处理先前的按键事件。
  • 在 t5 处,按键事件处理完成,并且 vKeyHandlerTask 进入阻塞态等待下一次按键事件。再一次,两个任务都未进入就绪态, RTOS 空闲任务获得 处理器时间。
  • 在 t5 与 t6 之间,定时事件发生并处理,没有进一步的按键事件发生。
  • 在 t6 处发生按键事件,但在 vKeyHandlerTask 完成按键处理之前,发生了定时事件。此时两个任务都可以执行。由于 vControlTask 具有更高的优先级,因此 vKeyHandlerTask 在完成按键操作之前被挂起,vControlTask 获得处理器时间。
  • 在 t8 处,vControlTask 完成控制周期的处理,然后进入阻塞态等待下一次事件。vKeyHandlerTask 再次 成为运行的最高优先级任务,因此获得处理器时间,以便完成按键处理。


下一节: 第 2节 - RTOS 实施


Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.