您的位置: 主页 > 单职业sf > 嵌入式OS的核心是任务优先、安全与可靠

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

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

本文引用地址:

  嵌入式OS贵在可靠

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

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

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

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

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

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

  风河的竞争对手是谁?

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

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

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

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

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

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

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

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

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

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

  任务优先vs资源优先

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

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

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

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

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

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

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

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

Copyright © 单职业私服 http://www.780a.com 版权所有