【问题标题】:Need help to choose real-time OS and Hardware需要帮助来选择实时操作系统和硬件
【发布时间】:2011-12-10 17:00:50
【问题描述】:

我听说 Windows/Linux 操作系统机器不是实时的。 我读过this article. 它列出了WindowsCE 是RTOS 之一。这让我有点困惑,因为我一直认为 WindowsCE 是用于移动或嵌入式设备的。

我需要一个 24/7 全天候运行的实时应用程序,并处理从每个快速移动对象到数据库的各种传感器的信号,并通过运行多种机器学习算法进行监控。

什么是适合此类应用程序的实时硬件和操作系统?开发环境是 MFC 或 Qt C++。我真的需要经验丰富的开发人员的意见。谢谢

【问题讨论】:

  • QNX 过去对我很有帮助。由于它仅用于培训目的(实时工业过程控制),因此我不会将其发布为答案。我认为 Qt 可以在 QNX 上编译,但我不确定 Qt 是否提供匹配您的实时约束所需的保证。
  • 实时系统绝对不等于“嵌入式系统”,尽管嵌入式系统经常有实时限制。
  • 实时系统的第一条规则是指定您的实时约束,例如“系统必须能够每分钟处理多达 600 个信号”或“系统不能花费更多每个信号超过 1/10 秒”(这些是不同的约束)。除非您指定这些约束,否则无法确定任何硬件/操作系统/库组合是否足够好。
  • 如果您查看许多 POSIX 系统调用的 QNX 文档,您会注意到它们指定了额外的性能约束,这可能是保证实时约束所必需的。操作系统是专门为匹配这些约束而设计的。你不会在一个不是正式的 RTOS 的系统上得到这个。如果您要编写实时软件,我建议您购买一本关于该主题的好书。鉴于该主题非常敏感,因此有大量文献。
  • 给自己买一本关于实时系统设计的好书,以了解要问什么问题,然后阅读您将使用的每个产品的技术文档,看看它是否能满足您的限制条件。在 Qt 等软件库中查看的示例是它们分配内存的时间。如果没有在每个类接口中记录这一点,则无法保证满足您的约束,因为存在隐藏的算法复杂性。

标签: c++ real-time


【解决方案1】:

QNX 过去对我很有帮助。我应该警告您,它仅用于培训目的(实时工业过程控制),并且我已经使用此操作系统实现了实时控制程序,但我从未真正部署过。

实时系统的第一条规则是指定您的实时约束,例如:

  1. 系统必须能够每分钟处理多达 600 个信号;或
  2. 系统在每个信号上花费的时间不得超过 1/10 秒。

差异很微妙,但这些是不同的约束。

请记住,绝对没有办法决定任何硬件/操作系统/库组合是否适合您除非您指定这些限制条件


对此,您认为 QNX 可能合适吗?与具有高优先级设置的 Windows/Linux 系统相比,它有什么优势?

如果您查看许多 POSIX 系统调用的 QNX 文档,您会注意到它们指定了额外的性能约束,这可能是保证您的实时约束所必需的。操作系统是专门为匹配这些约束而设计的。你不会在一个不是正式的 RTOS 的系统上得到这个。如果您要编写实时软件,我建议您购买一本关于该主题的好书。鉴于该主题非常敏感,因此有大量文献。

为自己准备一本关于实时系统设计的好书,以了解要问什么问题,然后阅读您将使用的每个产品的技术文档,看看它是否能满足您的限制条件。在 Qt 等软件库中查看的示例是它们分配内存的时间。如果没有在每个类接口中记录这一点,则无法保证满足您的约束,因为存在隐藏的算法复杂性。


开发环境可以是 MFC 或 Qt C++。

我认为 Qt 可以在 QNX 上编译,但我不确定 Qt 是否提供匹配您的实时约束所需的保证。抽象掉太多东西的库是有风险的,因为很难确定它们是否满足您的要求。隐藏的内存管理通常会出现问题,但您也应该提出其他问题。


在我看来,人们说实时系统 == 嵌入式系统。我错了吗?

实时系统绝对不等于“嵌入式系统”,尽管许多嵌入式系统都有实时限制。

【讨论】:

    【解决方案2】:

    您需要多长时间?
    请记住,实时是关于响应能力,而不是速度。事实上,大多数 RTOS 的平均速度会比一般 OS 慢。

    您需要保证一定的平均每秒事务数,还是需要始终在事件发生的 n 秒内做出响应?

    您是否有自定义硬件,或者您是否依赖以太网、USB 等输入? RTOS 上是否提供硬件驱动程序,还是您必须自己编写它们?

    Windows 和 linux 是可能的 RTOS。 Windows Embedded 允许您关闭服务以提供更可靠的响应率,并且有realtime kernelsrealtime add-ons 到 Linux,它们提供与 VxWorks 之类的几乎相同的实时性能。

    这还取决于您需要处理多少任务。真正的 RTOS(如 VxWorks)的许多复杂性在于它们可以同时控制许多任务,同时允许每个任务有保证的延迟和 CPU 共享——这对于火星探测器很重要,但对于单个数据收集 PC 来说并不重要

    【讨论】:

    • 感谢您的精彩提问和回答!我会尽快填补这些空白并尝试做出正确的决定。
    • @Paul 因为您计划拥有一个 gui,所以它可能是 0.1-0.5 秒的时间而不是微秒,所以如果处理不是太复杂或事件/秒太多,我会尝试一般操作系统优先
    • 非常适合我们的情况。谢谢!
    猜你喜欢
    • 2012-05-19
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 2022-07-12
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多