像VxWorks这样的实时操作系统与像Windows这样的传统操作系统有什么区别?


回答 1:

实时操作系统可确保任务将在一定时间内完成。 这在某些领域可能至关重要。 例如,考虑自动驾驶车辆控制系统。 您要确保计算在一定时间内完成,以免因不转动轮子而崩溃。

这意味着操作系统设计是不同的,因此调度程序可以保证事情在设备上的运行方式。 同时,这意味着由于这些要求和假设,为该OS编写的应用程序存在细微的差异。

另一方面,在Windows上,如果程序未能在20ms内完成,尽管系统可能看起来很慢,但不会导致灾难性的故障。 对于尝试与系统交互的用户而言,这种类型的环境通常更好,因为可以优先考虑不同的事物。


回答 2:

Saleem Abdulrasool有一个很好的答案,那就是系统的延迟。 在计算中,实时的定义是事件发生(通常是某种中断)与系统对该事件做出响应之间的有保证的响应时间。

您会发现,各种操作系统的生产者都根据基本硬件集定义了响应时间,具体取决于硬件组合和运行速度,他们使用基本硬件集来衡量任何更改和测试。

您可以通过将响应时间定义为1秒来将Windows定义为实时。 对于一个被认为是实时的过程,此响应时间可能足够。

实时系统上的编码也具有相同的约束,您的代码应在代码所响应的下一个中断之前完成,从而允许系统必须处理的任何其他中断。 如果这种情况没有发生,那么您的代码就有可能破坏堆栈。


回答 3:

我基本上同意萨利姆和安德鲁所说的话。 通常,RTOS与传统OS之间的区别在于调度算法。 这基于操作系统的应用程序域及其需要确定的优先级。

在传统的OS中,优先级是吞吐量和公平性,以便可以在给定的时间内完成最大数量的任务,并且所有工作都有机会完成。

在RTOS中,有些任务将需要尽可能接近保证的时间完成窗口。 即使这意味着不公平对待其他任务并总体上减少了吞吐量。 因为实时操作系统的用户所指定的实时任务具有一定的重要性。 因此,即使是较早开始的任务也可以被抢占并搁置以完成实时任务。 这违反了公平性,但是必须确保实时性。

我之所以说“尽可能接近”保证的完成时间,是因为如果您同时启动5个实时任务,则可能无法在所需窗口内全部完成。 在设计整个系统和容量规划时,系统设计人员必须考虑这些可能性。


回答 4:

由于VxWorks是实时操作系统(RTOS),而Windows是通用操作系统(GPOS),因此您的问题可以看作是RTOS vs GPOS。

最根本的区别在于,RTOS在时序行为上是确定性的,而GPOS是不确定的。

确定性的计时行为意味着,RTOS任务将仅消耗已知和预期的时间单位。 例如:我们可以说采样计算(一项任务)将在2毫秒内完成。

在GPOS中,服务(任务)可以将随机时间延迟注入应用程序软件,从而在意外时间导致响应速度慢。 例如:我们不能保证一旦单击打开Windows Word,便会在2秒内将其打开。