0

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

4

3 回答 3

7

我们可以忽略您问题中的第二句话吗?它毫无意义,并且可能指向对设计模式的误解。然而,第一部分很有趣。也就是说,我会将其概括为涵盖实时系统而不是 RTOS。

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

Bruce Powell Douglass可能是实时系统模式主题的主要作者。如果您想了解他对这个主题的看法,请阅读Embedded.com上的这篇文章(这是三篇系列文章的第三部分;请务必同时阅读前两篇,因为它们也涉及到该主题, (1) (2) )。您也可以访问 Embedded.com 并在搜索框中输入“设计模式”,这里有许多关于特定模式的文章和关于该主题的一般文章。

虽然我认为您在请求“RTOS(VxWorks)”模式方面还不够具体,但我专门用于 VxWorks 的模式是FacadeAdapter模式。部分是为了提供一个 OO API,也为了提供一个与 RTOS 无关的抽象级别。然后为 Segger emBOS(允许我们运行更小、成本更低、免版税的 RTOS)和 Windows 和 Linux 实现生成的类,以允许在更丰富的环境中使用更强大的工具测试、调试和模拟代码。

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

于 2010-05-10T18:42:53.093 回答
6

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

  1. 避免在 ISR 中做太多事情。如果可能,将一些处理传递给等待任务。
  2. 保持多线程优化。太多了,你有上下文切换开销。太少,您的问题解决方案可能会很复杂。
于 2010-05-10T04:30:04.670 回答
1

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

于 2010-06-09T18:30:23.420 回答