【发布时间】:2018-08-25 07:24:07
【问题描述】:
我是初学者,我对 RTOS 和状态机中的任务之间的区别有点困惑。以我愿意实现的状态机为例:
enum states{
READY_STATE
RUNNING_STATE
BLOCKED_STATE
FINISHED_STATE
}STATES;
如果这个状态机可以在不使用任何 RTOS 的情况下用事件/中断枚举,那么使用 RTOS 和创建任务有什么好处?
【问题讨论】:
-
如果没有类似内核的东西,状态机上的任务之间如何进行上下文切换?
-
我猜这将基于事件,例如
event = read_event();后跟一个开关循环 -
您还可以查看抢占式和协作式多任务处理之间的区别。在最后一个中,单个任务运行到它阻塞并将控制权交还给调度程序(这实际上是一个事件循环)
-
您将粉笔与奶酪进行比较。它们的目的不同,也不相互排斥。 RTOS 任务通常会实现状态机 - 允许存在许多并发通信状态机。
-
嗯.. RTOS 内核是一个状态机。它的输入是硬件中断和系统调用,它的输出是一组正在运行的线程。
标签: c embedded state-machine rtos freertos