FreeRTOS(和其他 RTOS'es)也是一个框架吗
Is FreeRTOS (and other RTOS'es) also a framework
众所周知,FreeRTOS 是一个实时操作系统。
例如,如果我们从 wiki 中获取解释:
FreeRTOS 有一些我们可以称之为的东西 "inversion-of-control" - FreeRTOS 控制着程序员实现的所有任务。
FreeRTOS 也是可扩展的。
这个定义的问题是当我们采用 "non-modifiable framework code" - FreeRTOS 主要作为用户项目的源代码部署 - 你可以修改它。
FreeRTOS 是框架吗?
是否有更好的框架定义?
不,与大多数其他 RTOS 内核一样,FreeRTOS 只是一个工具包,而不是一个框架。这是因为 you 需要编写每个任务的主体,通常是无限循环。然后,您决定使用哪些 RTOS 阻塞机制(信号量、时间延迟、事件标志等)来 "throttle" 执行您的任务主体。
在框架中,您通常不会这样做。该框架将提供您的任务主体,还将提供阻塞机制。例如,框架可能将每个任务构造为带有消息队列的事件循环 (a.k.a. "message-pump")。然后框架会调用你的代码来处理每一个事件。这就是 控制反转 (框架的定义特征)的产生方式。
请注意,RTOS 可以用作框架的组件,但 RTOS 本身不是框架。
众所周知,FreeRTOS 是一个实时操作系统。
例如,如果我们从 wiki 中获取解释:
FreeRTOS 有一些我们可以称之为的东西 "inversion-of-control" - FreeRTOS 控制着程序员实现的所有任务。 FreeRTOS 也是可扩展的。 这个定义的问题是当我们采用 "non-modifiable framework code" - FreeRTOS 主要作为用户项目的源代码部署 - 你可以修改它。
FreeRTOS 是框架吗? 是否有更好的框架定义?
不,与大多数其他 RTOS 内核一样,FreeRTOS 只是一个工具包,而不是一个框架。这是因为 you 需要编写每个任务的主体,通常是无限循环。然后,您决定使用哪些 RTOS 阻塞机制(信号量、时间延迟、事件标志等)来 "throttle" 执行您的任务主体。
在框架中,您通常不会这样做。该框架将提供您的任务主体,还将提供阻塞机制。例如,框架可能将每个任务构造为带有消息队列的事件循环 (a.k.a. "message-pump")。然后框架会调用你的代码来处理每一个事件。这就是 控制反转 (框架的定义特征)的产生方式。
请注意,RTOS 可以用作框架的组件,但 RTOS 本身不是框架。