所有 Linux 发行版在录音、玩游戏等时都会出现延迟问题。但 Windows 内核可以用于录音、玩游戏或任何没有延迟的事情。
为什么 Windows 不需要低延迟或实时内核或者它已经是一个了?
答案1
Windows 和 Linux 都不是實時操作系統(实时操作系统),据我所知,两者都不可能实现。实时操作系统和通用计算的目标、要求和理念差异太大,任何一种产品都无法有效解决这两个问题。
你根本不能冒险让中断时间的变化影响防抱死制动系统或发送 20 亿美元火星探测器从悬崖上冲下去……但优先考虑这些设计必需品需要大量开销,而这些开销通常会浪费在桌面计算场景上。
正如其他人在本页上指出的那样,如果某个通用计算操作系统恰好在实时任务上表现良好(例如您提到的任务),那么这很可能只是由于操作系统供应商进行了大量乏味的经验测试、分析和调优工作。我说“乏味”,是因为这些潜在的实时因素使得调优工作本身具有不确定性。
可以想象,这与整个软件堆栈从根本上可以依赖 RTOS 建立的最大延迟保证的情况完全不同。这些最大值总体上聚合为确定性的“低延迟”,并被纳入 RTOS 的定义中正确性,这意味着迟来的结果在硬件正常工作的情况下,这变得“不可能”。定时错误要么可证明地不可能发生或变得毫无意义(可能是因为先决条件不可能出现等),并且任何此类错误都被视为彻底失败同样错误或不可想象作为获得2 + 2 = 5
。
答案2
您声明“Windows 内核可以毫无延迟地用于录音、玩游戏或做任何事情“。
那里是事实上是延迟,所以你真正的意思是“不会出现人类可察觉或感到困扰的延迟“。延迟是不可避免的,但延迟的大小决定了系统是否适合”交互的“ 使用。
人们在低延迟音频框架方面投入了大量精力,例如 Windows 的澳大利亚安全情报机构以及 Linux 的杰克。这些通常涉及删除抽象层、减少缓冲区大小等……
媒体播放只是同步音频和视频元素,只要播放协调正确,缓冲区就可以很大。
游戏和专业音频录制需要根据用户输入等外部因素动态构建流。
主题为“实时计算“在讨论人类与系统的交互时,它并没有真正的地位——我们非常宽容,我们的大脑可以处理我们感官之间相对较大的偏移——例如音频和视频。
实时系统提供保证 - 例如,如果发生触发输入,计算将完成并输出会发生之内n微秒。这对于许多系统的正确运行至关重要 - 通常关系到生死存亡。
为了提供此类保证(在设计、实施和验证方面),需要付出大量的额外努力,这显然是不合理的,以确保你的游戏身临其境- 更不用说,作为确保满足保证的副作用,此类系统通常会简单几个数量级。