Piy*_*sal 9 performance operating-system vxworks
我很久以前就在VxWorks 5.5上工作,这是在世界上最好的实时操作系统上工作的最佳体验.从那时起,我再也没有机会继续努力.但是,一个问题不断涌现,让我如此快速和确定性?
我无法通过Google找到这个问题的很多参考资料.
所以,我只是想到了什么使常规操作系统不确定:
内存分配/解除分配: - Wiki说RTOS使用固定大小的块,因此这些块可以直接编入索引,但这会导致内部碎片,我相信这对于内存是关键任务系统来说根本不可取.已经有限了.
分页/分段: - 它与点1的链接
中断处理: - 不确定VxWorks如何实现它,因为这是VxWorks非常好的处理
上下文切换: - 我相信VxWorks 5.5用于在内核地址空间中执行的所有进程,因此上下文切换过去只涉及保存寄存器值而不涉及PCB(进程控制块),但我仍然不是100%肯定
进程调度算法: - 如果Windows实现抢占式调度(优先级/循环),那么处理调度的速度和VxWorks一样快吗?我不这么认为.那么,VxWorks如何处理调度?
请在需要时纠正我的理解.
Ben*_*oit 12
我相信以下会解释很多差异:
没有分页/交换
确定性RTOS根本无法将内存页面交换到磁盘.这会杀死决定论,因为在任何时候你都必须交换存储器.vxWorks要求您的应用程序完全适合RAM
没有进程
在vxWorks 5.5中,有任务,但没有像Windows或Linux这样的过程.任务更类似于线程和切换上下文是一种相对便宜的操作.在Linux/Windows中,切换过程非常昂贵.
请注意,在vxWorks 6.x中,引入了一个流程模型,这会增加一些开销,但主要与从用户模式转换到Supervisor模式有关.任务切换时间不一定直接受新模型的影响.
固定优先权
在vxWorks中,任务优先级由开发人员设置,并且是系统范围的.在任何给定时间的最高优先级任务将是运行的任务.因此,您可以设计系统,以确保具有最紧迫期限的任务始终先于其他任务执行.
在Linux/Windows中,一般来说,虽然您可以控制进程的优先级,但即使优先级较高的进程仍处于活动状态,调度程序最终也会使较低优先级进程运行.
| 归档时间: |
|
| 查看次数: |
10455 次 |
| 最近记录: |