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

Mat*_*ips 13 operating-system real-time real-time-systems

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

and*_*soj 10

RTOS通常可以交换吞吐量性能和功能,以实现可预测性和易处理性."实时"人的通常定义是"确定性的"; 没有付出代价就不能有决定论.

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

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

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

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