Skip to main content

 路由器设置 > 新闻资讯 >

关于rtems实时性不如rtt的讨论

2014-02-13 22:33 浏览:
今天看到友人在群里说,rtems实时性不如rtt之类云云。看了之后,不禁手痒回了几句。不如就写在这里罢。个人观点,欢迎探讨。

关于这个硬实时系统和软实时系统网上有明晰的定义,这里只谈硬实时系统。目前看,市面上大大小小的rtos真地有上百个。实时性谁好谁差呢?这个真不好回答。其原因很多,首先,目前的os都需要和用户代码编译形成一个整体然后运行。极少数的rtos不要这样。用户的代码不可能不影响核心。其次,影响因素多,编译器的优化,cpu重载或轻载,是非常难以做到完全一致的;最后,测量方法,测量方法无非是想办法添加代码,要在上下文等位置添加代码。这对系统的影响很大的。量子物理里有个测不准原理,其实这里也是类似。上下文里添一点点东西,对整个系统来讲,都是有影响的,测量方案也是会有影响的。

我倒认为单纯的考察实时性没什么太大的意思。 市面上绝大部分os都是开源的,大家相互借鉴,就连vxWorks的代码也是开源的。我不太相信相关的os设计人员没看过vxworks的代码。所以在内核级别上,大家的算法一致,实现方法各有千秋应该简练程度和效率差别不大。反倒是用户的代码对内核影响,有些人说只要关中断的时间不超过内核关中断的时间就好了。实时性的定义可不是按照关中断的时间来定义的,它是说一个计算过程依赖于计算结果的正确性和返回值的正确性。这个定义揭示了,实时性的衡量必然是系统级别的。操作系统的计算最终是为了用户的计算。操作系统的实时性最终是为了用户的实时性。至于中断延时和切换任务的延时,是在不知道应用情况下,一种替代提法。当然,在充分尊重RMS算法条件下,中断延时和任务切换延时是极具意义的。


但现实是这样吗,RMS 算法的前提是比较苛刻的,绝大用户的应用都是不满足的。多个任务共享一个资源;随机响应事件的任务多余周期性任务;多个任务之间相互通讯。所以,我认为,真正影响实时性的还是用户的代码。操作系统只是提供一个良好的应用基础。