常用于RTOS的设计模式(VXworks)

任何人都可以帮我解决RTOS常用的设计模式吗?
在VXworks中,哪种模式更可取?

我们可以忽略你问题中的第二句吗? 它没有意义,也许表明对设计模式的误解。 然而,第一部分很有趣。 也就是说,我会将其概括为覆盖实时系统而不是RTOS。

许多最熟悉的模式都是机械的,但在实时系统中,更高级别的架构模式也很重要。

布鲁斯鲍威尔道格拉斯可能是关于实时系统模式主题的最重要的作者。 如果你想要了解他对这个主题的看法,那么请阅读Embedded.com上的这篇文章 (这是三个系列的第三部分;一定要阅读前两个,因为他们也涉及到这个主题, (1) (2) )。 你也可能比访问Embedded.com并在搜索框中输入“设计模式”更糟糕,有很多关于特定模式的文章和关于这个主题的一般文章。

虽然我认为您在请求“RTOS(VxWorks)”模式方面有很大的特殊性,但我专门用于VxWorks的模式是Facade和Adapter模式。 部分是提供OO API,并提供一定程度的RTOS不可知抽象。 然后为Segger emBOS实现生成的类(允许我们运行更小,更低成本,免版税的RTOS),以及Windows和Linux,以便在更丰富的环境中使用更强大的工具来测试,调试和模拟代码。

维基百科上提供了许多模式的非详尽列表,其中许多模式将适用于实时系统。 列出的并发模式最明显相关。

正如Mike DeSimone评论的那样,太过于通用了。 但是,对于RTOS(不仅仅是VxWorks),请记住以下几点。

  1. 避免在ISR中做太多。 如果可能的话,将一些处理传递给等待任务。
  2. 保持multithreading最佳。 太多,你有上下文切换开销。 太少,你的问题解决方案可能很复杂。

另一个重要方面是保持RTOS对用户的可预测性和可理解性。 通常情况下,您会看到固定优先级的调度程序,这些调度程序不会尝试公平或自适应,而是完全按照说明进行操作,如果您搞砸了优先级并且饿死了某些任务,那就这样吧。 完成内核操作的时间往往很短且可预测,通常记录最差的执行时间。