通信系统需要什么样的OS,linux? vxworks?

    在通信设备中,OS的选择是非常关键的,这直接关系到设备的性能,开发难度,后续可维护性等几个方面。目前通信系统中,国内厂商主要选择嵌入式linux和vxworks。

    通信系统真正需要的是什么样的OS?linux和vxworks就是通信系统最好的选择吗?

    在分析具体的OS之前,不妨先看看通信系统的应用特点。通信系统最主要的作用是转发数据包,最核心的要素是性能。通信系统中的任务粗略的可以划分为管理平面任务和数据平面任务。管理平面要求及时的响应,数据平面要求尽量多得占有CPU。在单位时间段内,如1秒内,数据平面任务占有CPU越多,转发的数据包就可能越多,性能也就可能越高。

    在管理平面任务不运行时,数据平面可以很happy的全速转发。但管理平面任务运行时,性能肯定会有抖动。通信系统不排斥这种抖动,但要求这种抖动控制在一定范围内,比如20%。个人认为适用于通信系统的OS需要有能力保证数据平面任务对CPU的占用率。

    下面具体的分析linux和vxworks。

       Linux现在很火,火得似乎成为了未来嵌入式领域的王者。但个人却觉得Linux不适合通信系统,甚至不适用于嵌入式系统。Linux有很多在桌面领域很优秀的特性,比如虚拟内存,比如地址空间保护,但这些特性在嵌入式领域却反而阻碍了linux的发展

       linux特性之虚拟内存。虚拟内存最主要的作用是允许系统运行比内存大得多得程序。最初的系统中,所有的代码必须先完全拷贝到内存中才能正常运行。由于内存容量的限制,这就限制了大程序,比如大型游戏的运行。在这种背景下,虚拟内存应运而生。虚拟内存机制允许程序可以先不完全拷贝到内存中,当需要的时候再到硬盘中去取。这样就可以运行比内存容量大得多得程序,这在桌面应用中是非常有用的。但嵌入式领域,通常的系统都是大内存加小flash这种架构,虚拟内存这种特性几乎没有用武之地。另外虚拟内存机制主要依靠内存缺页后从硬盘取数据,这样malloc()的实现中就需要即使没有内存也不返回失败,这样对上层应用而言,依赖于内存的判断就不再那么可靠了。

       Linux特性之地址空间保护。Linux使用了虚拟地址和线性地址来对进程与进程之间,用户空间与内核空间之间进行了隔离。通过这种隔离,各个进程可以互不干扰,这样即使一个进程有各式各样的飞指针,其它进程也不受影响。在桌面应用领域,毕竟可能会有非常多不同层次的开发者的应用程序都在系统中运行,隔离确实是非常有必要的。但在嵌入式开发领域,开发模式通常是集中在一个团体内部,而且在发布时并不允许任何一个功能模块的失败,相对而言对隔离的要求并不是很迫切。开发团队严谨程度和开发水平越高,对这种隔离的要求越小。地址空间保护必然需要引入更复杂的内存映射,这就必然需要消耗更多的内存,更多的内存访问时间。这对斤斤计较的嵌入式系统来讲,这部分开销完全是可以节省的。另外在有用户空间和内核空间的隔离后,很多数据交换都需要使用copy_to_user或是copy_from_user了,这也是额外的内存访问开销。特别是在以太收发包时,在其他系统可以广泛使用的零拷贝技术在linux中可能就必须要多一次拷贝动作了。这个开销还是很大的。

      Linux特性之进程调度。Linux调度主要强调公平性。Linux不采用进程抢占,使用了动态优先级的方式来对进程进行调度。这种公平性对嵌入式系统,特别是通信系统来讲是不适用的。试想在全速数据转发的过程中,忽然需要大量管理平面的操作,这样通过公平性调度后,性能抖动可能会变得不可控制,超过50%都是非常有可能的。

    以上是对Linux的一些简单的分析,下面再草率的来评价下vxworks。

      vxworks是专门针对嵌入式系统设计的商用OS,整个系统强调简单可靠,内存,I/O系统各方面都非常贴和嵌入式系统的应用。但其调度系统采用基于优先级的抢占机制,这对通信系统而言,仍然不能够把性能抖动控制在一个范围内。

    个人觉得适合于通信系统的OS应该是像vxworks一样以简单,可靠,实用为设计原则的操作系统。同时该操作系统采用特定的调度策略,将性能抖动控制在一个范围内。

    在业界有尝试对vxworks进行改造,将转发任务放到workQ中,每次reschedule的时候都执行一次,这变相的保证了数据平面任务对CPU的占用,似乎效果还可以。个人觉得,还有更灵活的方法来改造调度系统,比如基于分组优先级的方法。其实思科很早的系统中就已经采用这种方式了。国内厂商可能更多缺少的是一种魄力和自信。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值