11

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

我从来没有真正听到过任何解释为什么开发人员反对将 Windows 用于这些类型的系统,除了极其常见的“Windows 不是实时操作系统”声明,就好像它是某种众所周知的事实一样t 需要被证明是合理的。

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

4

5 回答 5

10

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

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

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

即使这个问题现在已经结束,我想我会用一个链接更新这个回复,链接到我写的关于这个主题的更长的博客文章。

于 2011-06-01T19:19:32.577 回答
6

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

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

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

最后,如果您管理不当,UN*X 系统可能会遇到同样的问题:计划作业、不适当的交换配置以及侵入性的第 3 方安全软件。当涉及到安全性时,它们也经常被忽视,以至于当它们受到损害时,与 Windows 服务器受到损害时一样不足为奇。

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

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

于 2011-06-01T19:40:59.957 回答
2

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

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

于 2011-06-01T19:05:27.513 回答
2

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

至于高性能的 Windows 服务器,你认为 StackOverflow 运行在什么地方?

于 2011-06-01T19:07:44.840 回答
1

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

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

于 2011-06-01T19:07:30.537 回答