有熟悉 Nucleus Plus RTOS 的吗?进来探讨一下!

jxxx2967 2010-09-27 01:17:00
前几天去一家公司面试把我搞纠结了。

问我Nucleus与Linux相比,它的实时性体现在哪里?

我的回答:
1、它是抢点式的。
2、它的屏中断时间很短。
3、它的任务切换是常量时间,不依赖于系统内有多少个TASK。

可是他们(有一个经理级别的)对我的回答很不满意,它们说主要是因为Timer,因为Timer的使用保证了实时性。

这下把我搞纠结了,第一次听说Timer可以保证一个RTOS的实时性?
首先Timer的源是中断,连中断的及时处理都不能保证的话,Timer又如何实时?
其次Timer的周期一般很长,ms级别的,ms级也能算上实时吗?
再次Nucleus中的Timer是可有可无的一个模块,难道去掉Timer就不是实时操作系统了?

真是把我搞纠结了,是我的理解有问题吗?
我亲手把一个PowerPC版的Nucleus移植到ARM上,用ARM汇编重写了它的低层上下文切换及Timer中断处理的代码。
我自己认为还是比较深入的了解了这个RTOS。

熟悉 Nucleus Plus RTOS 的高手们,进来探讨一下!

...全文
389 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxxx2967 2010-10-01
  • 打赏
  • 举报
回复
楼上的两位分析的比较到位,看来我是遇到一个破经理。
dfysy 2010-09-30
  • 打赏
  • 举报
回复
那个面试的经理肯定是胡说,你的说法是对的,我也算做了几年的Nucleus了,Timer的确是可以随便设的,跟实时性没有必然的联系,我们以前有系统Timer中断设成4.615ms的整数倍,也有设成10ms的,不影响实时性,只影响NU_Sleep、Timer队列等的精度。Nucleus比Linux是可以按照优先级进行抢占,不过现在Linux也有类似机制了。还有就是,Nucleus的代码比较比较短小精悍,比自己写的单片机复杂点,比Linux简短很多,在Nucleus里面处理一个中断,从LISR直接触发LISR,下一个调度就可以运行。Linux那一大通的判断和标志操作,最后找到处理程序,比Nucleus慢了很多。此外Linux需要在用户态和核心态切换,需要处理很多问题,Nucleus都运行在核心态,不用考虑这些问题。
memoleak 2010-09-30
  • 打赏
  • 举报
回复
抢占式的调度策略和多中断优先级才是实时性的保障。前者是纯软件的,后者需要一定的硬件支持,如果硬件支持得不是很好,那么可以通过快速的中断响应来弥补。Nucleus在这两个方面做得都比Linux好,跟Timer完全没有关系。一个实时系统也可以完全没有Timer,仅仅依靠中断来进行任务调度。

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧