【问题标题】:Why is Windows not considered suitable for real time systems/high performance servers? [closed]为什么 Windows 不适合实时系统/高性能服务器? [关闭]
【发布时间】:2011-06-01 19:01:48
【问题描述】:

我希望这个问题不要太主观,但为什么 Windows 被认为不适合实时系统和高性能服务器?与 *nix 替代品相比,是否有任何技术论文或研究可以衡量其性能?

除了“Windows 不是实时操作系统”这一极为常见的说法之外,我从未真正听到过任何关于开发人员反对将 Windows 用于这些类型系统的解释,就好像这是某种众所周知的事实这不需要证明。

请注意,我问的是 Windows CE/Windows Server,而不是操作系统的桌面版本。

【问题讨论】:

  • Windows CE 和这个有什么关系?
  • 高性能?我相信这个网站使用的是 Windows,而且我确信他们的服务器性能很高 :)
  • Windows CE/Windows 服务器?这两者有什么共同点?
  • Windows CE 的开发考虑了实时系统,我相信。与其说它们有什么共同点,不如说它们分别适用于实时系统和高性能系统。
  • msdn.microsoft.com/en-us/library/ms834197.aspx 摘要:本文列出了实时系统中使用的操作系统的八个先决条件,并描述了 Microsoft® Windows® CE 2.1 操作系统是如何设计来满足这些要求的。我在与该领域的知名公司进行了大量采访并得到一致的“我们不使用Windows,因为它不适合{高性能,实时}系统”之后,毫无理由地提出了这个问题。我的印象是这是某种众所周知的事实,但找不到任何支持或反对的东西。

标签: windows performance real-time-systems


【解决方案1】:

实时操作系统需要一定数量的确定性行为。您希望能够设置始终遵循的特定任务优先级,并具有具有特定优先级的中断。您不能让操作系统决定优先考虑您的应用程序之外的守护程序或任务。根据您的系统微秒可能很重要,一个运行 50 微秒来处理应用程序外部守护程序的操作系统可能是致命的。

现在,话虽如此,但这并不意味着您不能将 Windows 用于实时应用程序。事实上我已经做过好几次了,只是实时方面由硬件卡和系统内置的缓冲来处理。如果操作系统晚了数百毫秒,这仅意味着显示器可能会在数据中出现明显的打嗝。没有数据丢失或未被收集。我们还能够通过自定义正在运行的其他任务来避免问题(与硬核游戏玩家所做的几乎相同)。

另外,我最近有一个要求做一个实时系统,实时硬件会发出一个回调,Windows 代码会看到,然后发送一个 USB 消息。消息必须在微秒内发送,无论延迟是多少,都必须是确定性的,以便接收 USB 消息的系统可以补偿延迟。这让我觉得 Windows 不适合,因此重新设计了。

尽管这个问题现在已经结束,但我想我会更新这个回复,并附上关于该主题的更长的blog post I wrote 的链接。

【讨论】:

  • 非常详细的答案。谢谢。
【解决方案2】:

Windows 在这方面久负盛名,主要基于孤立的不良体验(每个人都有一些,不是吗?),这种体验通过过时的旧理由的重大修订而持续存在。不幸的是,绝大多数系统管理员从未看过 Microsoft 免费提供的任何性能调整文档,甚至更少人会费心对他们的系统进行适当的调整。

实时关键系统可以在 Windows 上运行。例如,看看呼叫中心解决方案——这是我的专业领域之一,我监督着几十台服务器正在做这件事。这些机器可以有数百条线路同时处理语音识别和语音合成,与数据库和可编程呼叫路由系统进行通信。对电话公司设备的响应延迟可能会导致部分或全部呼叫中断或呼叫质量严重下降。我们仍然必须实施防病毒和其他安全措施,这些系统才能运行。

您需要做的最重要的事情是: * 消除定期自动化作业和流程,例如检查和应用更新、磁盘维护(例如碎片整理操作和清理)和全面扫描,并将它们移至定期安排的停机时间进行维护。 * 有足够的内存,这样系统就不会因为交换而陷入困境 * 将你的交换放在它自己的分区上,这样碎片就不会干扰交换文件(我的一些系统没有这个并且仍然可以工作) * 与防病毒供应商合作,对他们的产品进行微调,使其尽可能少地干扰您的服务器,同时仍然提供足够的保护——大多数防病毒软件是用于桌面使用,而不是服务器使用,并且需要调整 * 调整您的组/本地安全策略

最后,如果您管理不当,UN*X 系统可能会遇到同样的问题:计划作业、不适当的交换配置以及侵入性的第 3 方安全软件。当涉及到安全性时,它们也经常被忽视,因此当它们受到攻击时,并不比 Windows 服务器受到攻击更令人惊讶。

你必须保持平衡。两个平台都可能同样管理不善,并且两个平台都可以很好地调整。如果您主要与 UN*X 平台人员交谈,那么他们有理由喜欢他们的平台并且对 Windows 有很多偏见,您会得到反映这一点的答案。如果您与 Microsoft 人员交谈,您会从他们的角度得到相同的结果。

当您选择平台时,最重要的应该是供应商对您正在运行的应用程序的支持 - 他们对哪一个投入更多,他们在开发中偏爱哪一个?哪些已被证明最有效,哪些将在未来继续可用?

【讨论】:

    【解决方案3】:

    如果您想得到答案,您应该向我们提供一些可以处理的事实。谁说 Windows 不适合高性能服务器?我们不知道,但你显然知道。所以你比我们更有资格回答这个问题,不是吗?

    至于实时系统?这是真的。 Windows 不适合,因为它不是实时操作系统。顺便说一句,Linux 和 OSX 也是如此。实时系统需要一些非常专业的操作系统。以性能、吞吐量和响应能力为目标的主流操作系统都不会成功,无论它们是由 Microsoft 还是其他任何人编写的。

    【讨论】:

    【解决方案4】:

    实时系统通常需要最大响应时间。 Windows 无法提供此类保证。

    对于高性能的 Windows 服务器,您认为 StackOverflow 运行在什么位置?

    【解决方案5】:

    您收到的答案是正确的:Windows 根本不是 RTOS。作为一个,它必须能够对调度做出具体保证。这样做所需的行为与适合常规服务器或工作站的行为并不特别兼容。

    至于“高性能”,这只是模糊的。 Windows 的服务器版本可以并且确实可以运行高性能系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多