我没有听到关于RTOS的好消息 - 它们使程序员能够更好地控制调度程序,以便例如避免优先级倒置,它们的时序更一致,更好的多任务处理。但是所有标准桌面设置都使用非实时操作系统。因此,使用RTOS必须有一些权衡,它们是什么?
我没有听到关于RTOS的好消息 - 它们使程序员能够更好地控制调度程序,以便例如避免优先级倒置,它们的时序更一致,更好的多任务处理。但是所有标准桌面设置都使用非实时操作系统。因此,使用RTOS必须有一些权衡,它们是什么?
RTOS通常可以交换吞吐量性能和功能,以实现可预测性和易处理性。 “实时”人员通常的定义是“确定性的”;没有付出代价,你就无法拥有决定论。
在通用操作系统中,我们受到“常见情况”行为的驱使 - 我们希望获得非常好的平均性能和很多灵活性。在RTOS中,我们希望对“最坏情况”行为采取可靠的上限,并且我们在吞吐量或常见情况行为中付出(通常是非常重要的)。
是的,可以创建混合,如Windows甚至Linux实时线程。但在某些地方,你通常会付出代价,因为最终只有可用的有限资源(CPU,IO带宽等等)和消费者操作系统以及RTOS都可以根据不同的标准进行优化。一些RT Linux方法通过分区明确地处理这个问题。在每个分区中优化不同的假设和不同的最优标准。
交易的功能是什么? 我不能提供一个精确的列表 - 更多的是,通用操作系统往往拥有数以万计的驱动程序,并且能够跟上新设备的流失; RTOS往往侧重于一个小得多的集合,对于该集合,可以很好地理解或明确地保持及时性不会干扰其他活动。您可能不会在普通RTOS上选择相同的驱动程序,因为通常它们实现起来并不合理。
吞吐量 记住“实时”!=“真实快”。当系统是实时的时,意味着活动的完成时间是其正确性的一部分。在某些情况下,这意味着非常快速地处理许多活动(高吞吐量);在其他情况下,它可能在相对缓慢但极其可预测的时期进行处理。 RTOS中的结构可能具有高吞吐量,但通常无法实现等效RTOS的吞吐量,因为用于公平地实现该吞吐量的技术(缓存,花哨的交互驱动的调度方法,“公平”排队和锁争用)不利反对任何单一任务的及时性的可预测性。
RTOS通常可以交换吞吐量性能和功能,以实现可预测性和易处理性。 “实时”人员通常的定义是“确定性的”;没有付出代价,你就无法拥有决定论。
在通用操作系统中,我们受到“常见情况”行为的驱使 - 我们希望获得非常好的平均性能和很多灵活性。在RTOS中,我们希望对“最坏情况”行为采取可靠的上限,并且我们在吞吐量或常见情况行为中付出(通常是非常重要的)。
是的,可以创建混合,如Windows甚至Linux实时线程。但在某些地方,你通常会付出代价,因为最终只有可用的有限资源(CPU,IO带宽等等)和消费者操作系统以及RTOS都可以根据不同的标准进行优化。一些RT Linux方法通过分区明确地处理这个问题。在每个分区中优化不同的假设和不同的最优标准。
交易的功能是什么? 我不能提供一个精确的列表 - 更多的是,通用操作系统往往拥有数以万计的驱动程序,并且能够跟上新设备的流失; RTOS往往侧重于一个小得多的集合,对于该集合,可以很好地理解或明确地保持及时性不会干扰其他活动。您可能不会在普通RTOS上选择相同的驱动程序,因为通常它们实现起来并不合理。
吞吐量 记住“实时”!=“真实快”。当系统是实时的时,意味着活动的完成时间是其正确性的一部分。在某些情况下,这意味着非常快速地处理许多活动(高吞吐量);在其他情况下,它可能在相对缓慢但极其可预测的时期进行处理。 RTOS中的结构可能具有高吞吐量,但通常无法实现等效RTOS的吞吐量,因为用于公平地实现该吞吐量的技术(缓存,花哨的交互驱动的调度方法,“公平”排队和锁争用)不利反对任何单一任务的及时性的可预测性。
我不确定这是否是一个很大的原因,但我相信存在非实时功能 系统管理模式 在处理器中并不真正允许实时操作系统,因为SMM可以任意长,因为它想要响应SMI,并且操作系统可以做的最好的事情就是超时并且当它获得后退控制时崩溃 - - 如果 它及时获得了控制权。所以你需要BIOS也是实时的,这并不像只有像微软这样的公司让它的OS实时(这本身就不容易)。
无论如何,普通用户可能不会获得太多收益。
在需要实时操作系统的应用程序中,有助于桌面应用程序开发的功能并不重要。因此,RTOS供应商倾向于将工程时间集中在对客户重要的事情上,例如快速启动和错误恢复。
在快速应用程序开发和实时之间存在重叠市场之前,您不太可能看到操作系统供应商在两者之间分配资源。快速发展和安全关键只是不要在一起。
随着Blackberry Playbook转向QNX,我们可能第一次看到RTOS的友好开发环境(库和工具)。
它基本上与“为什么不是每个人都用C编写webapp?”的原因相同。它的速度要快得多,但是,它要困难得多。大型系统上的RTOS变得难以处理,因为很多控制都是给应用程序员的。