为什么不是每个操作系统都是实时的?

时间:2011-03-27 20:53:38

标签: operating-system real-time real-time-systems

我没有听到关于RTOS的好消息 - 它们使程序员能够更好地控制调度程序,以便例如避免优先级倒置,它们的时序更加一致,更好的多任务处理。但是所有标准桌面设置都使用非实时操作系统。因此,使用RTOS必须有一些权衡,它们是什么?

4 个答案:

答案 0 :(得分:10)

RTOS通常会将吞吐量性能和功能进行交换,以实现可预测性和易处理性。 “实时”人的通常定义是“确定性的”;如果不付钱就不能有决定论。

在通用操作系统中,我们受到“常见情况”行为的激励 - 我们希望获得非常好的平均性能和很多灵活性。在RTOS中,我们希望对“最坏情况”行为采取可靠的上限,并且我们在吞吐量或常见情况行为中付出(通常是非常重要的)。

是的,可以创建混合,如Windows甚至Linux实时线程。但在某些地方,你通常会付出代价,因为最终只有可用的资源有限(CPU,IO带宽等),而消费者操作系统和RTOS都会根据不同的标准进行优化。一些RT Linux方法通过分区明确地处理这个问题。在每个分区中优化不同的假设和不同的最优标准。

交易了哪些功能?我无法提供精确的列表 - 更多的是通用操作系统往往拥有数以万计的驱动程序,并且能够跟上流失新设备; RTOS倾向于关注一个小得多的集合,对于该集合,可以很好地理解或明确地保持及时性不会干扰其他活动。您可能不会在普通RTOS上选择相同的驱动程序,因为通常它们实现起来并不合理。

吞吐量请记住“实时”!=“真实快速”。当系统是实时的时,意味着活动的完成时间是其正确性的一部分。在某些情况下,这意味着非常快速地处理许多活动(高吞吐量);在其他情况下,它可能在相对缓慢但非常可预测的时期进行处理。 RTOS中的结构可能具有高吞吐量,但通常无法实现等效RTOS的吞吐量,因为用于公平地实现该吞吐量的技术(缓存,花哨的交互驱动的调度方法,“公平”排队和锁争用)不利反对任何单一任务的及时性的可预测性。

答案 1 :(得分:2)

我不确定这是否是一个重要原因,但我相信处理器中存在非实时功能如System Management Mode并不能真正实现实时操作系统,因为SMM可以采用只要它想要响应SMI,任意操作系统可以做的最好的事情就是超时并且当它获得后退控制时崩溃 - 如果它及时获得后退控制。所以你需要BIOS也是实时的,这并不像只有一家像微软这样的公司实时操作它(这本身就不容易)。

无论如何,普通用户可能不会获得太多收益。

答案 2 :(得分:2)

有助于桌面应用程序开发的功能在需要实时操作系统的应用程序中并不重要。因此,RTOS供应商倾向于将工程时间集中在对客户重要的事情上,例如快速启动和错误恢复。

在快速应用程序开发和实时之间存在重叠市场之前,您不太可能看到操作系统供应商在两者之间分配资源。快速发展和安全关键只是不要在一起。

随着Blackberry Playbook转向QNX,我们可能会第一次看到RTOS的友好开发环境(库和工具)。

答案 3 :(得分:1)

这与“为什么不是每个人都在C中编写webapps?”的理由基本相同。它的速度要快得多,但是,它要困难得多。大型系统上的RTOS变得难以处理,因为很多控制都是给应用程序员的。