是什么让VxWorks如此确定和快速?

时间:2012-01-10 08:28:16

标签: performance operating-system vxworks

我很长一段时间都在使用VxWorks 5.5,这是处理世界上最好的实时操作系统的最佳体验。从那时起,我再也没有机会再做一次。但是,一个问题不断涌现,让我如此快速和确定性?

我无法通过Google找到这个问题的很多参考资料。

所以,我只是想到了什么使得常规操作系统不确定:

  1. 内存分配/解除分配: - Wiki说RTOS使用固定大小的块,因此这些块可以直接编入索引,但这会导致内部碎片,我相信这对于任务来说根本不可取内存已经受限的关键系统。

  2. 分页/分段: - 与点1相关联的

  3. 中断处理: - 不确定VxWorks如何实现它,因为这是VxWorks处理得很好的东西

  4. 上下文切换: - 我相信VxWorks 5.5用于在内核地址空间中执行的所有进程,因此上下文切换过去只涉及保存寄存器值而不涉及PCB(过程控制块),但我仍然是不是100%肯定

  5. 进程调度算法: - 如果Windows实现抢占式调度(优先级/循环),那么处理调度的速度会与VxWorks一样快吗?我不这么认为。那么,VxWorks如何处理调度?

  6. 请在需要时纠正我的理解。

1 个答案:

答案 0 :(得分:12)

我相信以下会解释很多差异:

无分页/交换

确定性RTOS只是无法将内存页面交换到磁盘。这会杀死决定论,因为在任何时候你都必须交换存储器。 vxWorks要求您的应用程序完全适合RAM

无流程

在vxWorks 5.5中,有任务,但没有像Windows或Linux这样的过程。任务更类似于线程和切换上下文是一种相对便宜的操作。在Linux / Windows中,切换过程非常昂贵。

请注意,在vxWorks 6.x中,引入了一个流程模型,这会增加一些开销,但主要与从用户模式转换到Supervisor模式有关。任务切换时间不一定受新模型的直接影响。

固定优先级

在vxWorks中,任务优先级由开发人员设置,并且是系统范围的。在任何给定时间的最高优先级任务将是运行的任务。因此,您可以设计您的系统,以确保具有最紧迫期限的任务始终在其他任务之前执行。

在Linux / Windows中,一般来说,虽然您可以控制进程的优先级,但即使优先级较高的进程仍处于活动状态,调度程序最终也会让优先级较低的进程运行。