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

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

我从来没有听说过为什么开发人员反对将Windows用于这些types的系统,除了极其常见的“Windows不是一个实时操作系统”的声明,就好像这是一种众所周知的事实,需要说明理由。

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

Solutions Collecting From Web of "为什么Windows不适合实时系统/高性能服务器?"

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

现在,说这并不意味着你不能使用Windows实时应用程序。 事实上,我已经做了好几次了,只是实时的方面是由硬件卡和内置在系统中的缓冲来处理的。 如果操作系统晚了几百毫秒,这意味着显示器可能会在数据中出现明显的呃逆。 没有数据丢失或没有收集。 我们还可以通过定制运行其他任务来避免问题(几乎与核心玩家一样)。

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

即使这个问题现在已经关闭了,但我还是想把这个回应放在一个更长的博客文章的链接上。

Windows在这方面有着悠久的声誉,主要是基于孤立的不好的经验(每个人都有一些,不是吗? 不幸的是,绝大多数系统管理员从来没有见过任何微软免费提供的性能调优文档,甚至更少的人都在适当地调整他们的系统。

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

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

最后,如果您没有正确管理UN * X系统,那么UN * X系统可能会遇到同样的问题:计划任务,交换配置不足以及侵入式第三方安全软件。 当涉及到安全问题时,它们也会被忽视,因此当它们被入侵时,比Windows服务器受到威胁时更加令人惊讶。

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

当你选择平台时,最重要的事情应该是你正在运行的应用程序的供应商支持 – 他们更关心哪一个,哪一个更喜欢他们的开发? 什么被证明是最好的,未来还会继续有哪些?

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

至于实时系统? 这是真的。 Windows不适合,因为它不是一个实时操作系统。 顺便说一句,Linux和OSX也是如此。 实时系统需要一些相当专业的操作系统。 主流操作系统的性能,吞吐量和响应速度都不会有所斩获,无论它们是由微软或其他人撰写的。

实时系统通常要求最大响应时间。 Windows不能提供这样的保证。

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

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

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