为什么Windows不适合实时系统/高性能服务器?

时间:2011-06-01 19:01:48

标签: windows performance real-time-systems

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

除了非常常见的“Windows不是实时操作系统”声明之外,我从来没有真正听说过开发人员为什么反对在这些类型的系统中使用Windows的任何解释,好像它是某种众所周知的事实这不需要被证明是合理的。

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

5 个答案:

答案 0 :(得分:10)

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

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

或者,我最近要求建立一个实时系统,实时硬件会发出一个windows代码会看到的回调,然后发出一条USB消息。消息必须在几微秒内发送,无论延迟是什么,它都是确定性的,以便接收USB消息的系统可以补偿延迟。这让我感到震惊,因为Windows不适合这种设计而且设计已经过重新设计。

即使这个问题现已结束,我还是认为我会通过指向该主题的更长blog post I wrote的链接来更新此回复。

答案 1 :(得分:6)

Windows在这方面有着长期的声誉,主要基于孤立的糟糕经历(每个人都有一些,不是吗?),这些经历在过时的旧理由的重大修订中持续存在。不幸的是,绝大多数系统管理员从未见过微软免费提供的任何性能调优文档,更少的人不愿意适当地调整他们的系统。

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

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

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

你必须保持平衡。两个平台都可能同样管理不善,并且两个平台都可以进行良好调整。如果你主要与UN * X平台的人交谈,那么他们就有理由喜欢他们的平台并且对Windows有很多偏见,你会得到反映这一点的答案。如果你正在与微软的人交谈,那么从他们的角度来看你也会得到同样的结论。

当您选择平台时,最重要的事情应该是您正在运行的应用程序的供应商支持 - 哪一个是他们投入更多,哪一个他们在开发中受到青睐?什么已被证明是最好的,将来会继续提供什么?

答案 2 :(得分:2)

如果您想要答案,您应该向我们提供一些事实。谁说Windows不适合高性能服务器?我们没有任何线索,但你显然做到了。所以你比我们更有资格回答它,不是吗?

实时系统?这是真的。 Windows不适合,因为它不是实时操作系统。 Linux和OSX也是如此,顺便说一下。实时系统需要一些非常专业的操作系统。无论是由微软还是其他任何人编写的,针对性能,吞吐量和响应能力的主流操作系统都无法解决问题。

答案 3 :(得分:2)

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

对于高性能的Windows服务器,您认为运行StackOverflow会怎样?

答案 4 :(得分:1)

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

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