新闻中心

EEPW首页 > 嵌入式系统 > 编辑观点 > 嵌入式OS的核心是任务优先、安全与可靠

嵌入式OS的核心是任务优先、安全与可靠

作者:王莹时间:2016-11-24来源:电子产品世界

  一些爱琢磨的软件人员会心里痒痒,想自己做一个操作系统(OS);微软等软件巨头为何很少涉足操作系统?操作系统的真谛是什么?近日,公司的工作人员向电子产品世界编辑讲了一些鲜为人知的故事。

本文引用地址:http://www.eepw.com.cn/article/201611/340674.htm

  OS贵在可靠

  几年前,美国某大型零售公司的老板过去用别家软件,临近圣诞节大促销,系统一旦坏了承受不起。销售人员把他带到最高长官那里,“我想买你的软件,但你得让我放心。”风河最高长官说,“我把我的私人电话给你,你任何时候可以打给我。”这样这家公司变成了风河的客户。

  几年后,这家零售商又来风河签新合同,恰巧碰到了最高长官。风河长官得知情况后,说:“顺便告诉你,从明天开始,你刚刚买的这款产品就免费了。但是,免费后,圣诞节的时候不准给我打电话!”那个零售商想了想,还是付了钱。

  客户明明知道将要宣布要免费,花钱干什么?当企业做大了以后,其实最难的是风险管理,是控制那些不确定的因素,而不是说你怎么把成本降下来。具体地,商业决策的时候你要考虑成本,这是基本的要素,但是随着你的业务规模扩大,你会发现比成本、收入更重要的是风险,风险你是承受不起的。所以那位零售商愿意在降低风险上投资。

  其实代码就是代码,哪个代码不能跑?可是你要保证它不出问题很难。因为能做和安全可靠是两码事。你要经过反复的实验,十几年的时间验证。

  一个极端保守的例子,据说NASA(美国航空航天局)某个部门的实验室里,有一帮人的工作就是清理代码,诸如火箭上的代码,大概十几万行,并不多,那个软件都已经用了几十年,他们这个团队每天还是在清理,看看里面有什么bug。他们虽然在做枯燥无味的工作,这个代码不知看了多少遍,甚至已经把这些代码背得滚瓜烂熟了,但是还是要查,如果能发现一个bug可能会是救命的——宇航员在太空涉及到生命安全。

  风河的竞争对手是谁?

  其实做嵌入式操作系统的厂商不多。风河的竞争对手其实主要是In-House(公司内部)操作系统。因为嵌入操作系统本来不大,非常容易给人那种冲动,我自己做一个!尤其是做嵌入式软件的人员往往都有能力往底下沉。风河现在很重的任务之一是去说服这些企业的决策层,不要让开发人员去做操作系统,开发人员的时间可以投入到应用方面,让应用做得更好。这就像不需要重新发明一个轮子一样。

  按风河的逻辑,操作系统没有那么重要,它就是一个劳务,不要以为操作系统没有自己做就不行。

  另外,操作系统如果开始没有做完善,尽管产品在很短时间就出来了,但到一定阶段,企业会面临两难的选择。例如你选了开源操作系统,有一天你发现不行,因为再继续用这个技术的话,由于根扎得不够牢和深,很难继续长大了。

  为何做商用嵌入式OS的厂商寥寥?

  既然很多软件人员都有能力做操作系统,按理说,很多企业也应该像风河一样能提供操作系统这种服务?

  的确,操作系统的门槛不高,但反而不容易形成巨头。

  那么,是否是因为其他公司的市场能力没风河那么强?

  其实,关键的考量是是否值得去做这么大投入。例如微软也做自己的嵌入式操作系统,但是目前没做起来。微软的市场能力不强吗?这恐怕还是一个取舍的问题。

  首先要明确我要做什么样的系统?如果要做宇宙飞船、飞机、坦克这种非常关键的应用,要用的设计思路与普通计算是不一样的。微软并非没有这个能力,但是假设微软是一头大象,现在去抓一只小蚂蚁,一是抓不住,另外抓了也不够吃。所以这就刚好给风河这样规模的公司一个机会。

  从技术路线的决策方面,安全性、可靠性和性能这三个方面是三个不同的方向,但是归根到底是解决一件事——隔离性的问题。即在做软件设计的时候,这一部分很专注的,我就解决这个问题,我也不想去解决别的模块的问题;同时我也绝不允许别的模块想伸到我这个模块里面。从CPU的分配,到存储空间的分配,都是非常严格的限制,这样严格的限制就比较安全。但是你牺牲了交叉时的通信效率,就好比你一个小区的门卫特别严格的时候,小区的安全性提高了,你在里面也会很安全,但是你跟外界的沟通、交流就变差了,因为进门很麻烦。

  任务优先vs资源优先

  这就引申到一个概念:什么是嵌入式操作系统?即所有的操作系统有涉及到一个共同的问题:职能是什么?操作系统是做资源管理的,要让所有的资料都能最有效地被利用起来,诸如荧幕、键盘、内存、CPU等,这些都是资源。但是有一个优先的取舍问题,就是你是资源优先还是任务优先?即我要把资源最充分地利用,还是要让我的任务是最佳的执行。

  Windows是一个典型的资源优先的系统。意思是可让CPU、内存等计算机资源最高效地利用,但是你的任务有没有最好的完成?在尽量追求,但是没那么在意。例如,当你强调每个任务要按照确定的顺序打开,你这个窗口先打开一两秒钟,那个窗口后打开一两秒钟没什么影响,所以任务是什么时间完成没有特别提到。但是要让计算机里所有的资源都被充分利用,不要这个闲得无聊、那个忙得不可开交。总之,资源要充分利用。

  但是嵌入式系统,例如,飞机在空中飞的时候,飞行员的一个动作指令,要让机翼各个部分按顺序执行,顺序可能一毫秒都不能差。所以当计算机处理器发出一个请求的时候,你必须立刻做,你不能说等一下,我这边还在忙这件事情。这时,为了让任务能够最及时地完成(即任务实时地完成),其实计算机的资源很多时候是空闲的,导致资源利用率会降低,因为关键任务系统把内部资源牺牲掉了。所以真正的嵌入式系统强调的是关键任务的任务优先,不是资源优先。

  因此,需要在任务优先和资源优先之间进行一个取舍。

  所以风河是以这样的思路去设计嵌入式操作系统也的。当然,不是说微软不懂,但是微软的战略选择上不能做这块,做这块公司就活不了。

  风河的操作系统本质是嵌入式

  风河的特点是想怎么样用新的方法去解决一个老问题。

  提出新问题,然后解决它,这是创新,像阿里公司。不提出新问题,而是提出新方法去解决人们长期没解决的问题,这也是一种创新。

  风河这么多年一直专注于嵌入式,它的产品结构都是呈现操作系统、中间件到最终的应用。风河最核心的还是操作系统。你如果需要比较高精尖的,即特别精致的操纵系统,那你就选VxWorks;你要选比较大众、开放的,可选Linux。所以风河多年来沿袭了这种双操作系统架构。

  最近几年风河又拆分了,变成了四个操作系统:增加了Rocket,是一个缩小版、精简版的VxWorks;Linux也加了Pulsar Linux,主要是针对轻巧应用,例如可穿戴。

  图:风河部分操作系统组合(注:Helix是风河物联网产品集)

  但是一旦到了中间件及以上,就有了合作伙伴、生态系统,使客户有了更多的选择。风河在中间层的产品有“风河智能设备平台XT”等,是可定制的中间件开发环境,用于打造安全、可扩展、高性能物联网网关。

  到了应用层,严苛程度又降低了。

  所以风河这么多年来,比较专注在操作系统这一核心基础。到了物联网时代,跟云有关了,风河还运用了云的技术和环境,但是解决的问题还是嵌入式的问题。具体地,在云端做了设备的虚拟现实,像云端有个设备在那做开发一样,不需要真的有那个设备或芯片,就像在实验室拿了一个实验设备。即风河在云端可以有VR(虚拟现实)的实验室。

  总之风河比较专注于操作系统。你只要是个设备,你就会有操作系统,你就会有开发工具,你就是上了云端我还可以弄个虚拟的操作系统环境。我让你这个操纵系统既可以在云端里面虚拟的设备里,也可以在你开发自己做出来的实实在在的设备里面,它两个最好是完全一样的,在云端开发好多软件装到你实体的设备里面实际的运行。

  值得一提的是,风河的Wind River Helix App Cloud的基本想法是借鉴了苹果和安卓的的App概念,意思是:就算你是个路由器设备,抑或汽车、飞机等,你也可以从云端拿到需要的应用软件,方法是在App Store上一点立刻就下载了。但是你可以想象,如果一架飞机也可以像手机一样用这个软件一点就下来,有多恐怖!首先安全性怎么保证?但是风河能够给客户这样的保障,赢得客户的信任。风河有这个能力,能保证下载的软件是安全的,是不会经过篡改的,风河有一整套的相关技术。

  小结

  嵌入式操作系统看着简单,但是做好不容易,涉及安全、可靠与任务优先等,购买现成的操作系统是一种提升效率、适合长远发展的良策。另,在物联网时代,风河的嵌入式操作系统增加了云连接功能,也增加到4种,但本质仍然是嵌入式。



关键词: 嵌入式 风河

评论

技术专区

关闭