再举一个例子,比如家庭网络应用中的家庭网关(HG,Home Gateway)。家庭网关需要支持多种多样的无线和有线接入技术,需要与各种各样的家用电器连接,比如电冰箱、空调、家庭电脑、电视机、微波炉等,有时候甚至需要与门铃、门锁、窗帘等完成连接。这需要非常复杂的数据处理能力和通信能力,同时要高度安全、高可靠、高效率。还有一些其它的需求,比如人脸识别、生物认证技术等。在已有操作系统上增加这些特性,其复杂度可能会比重新开发一个操作系统还要大。因此针对这种场景,开发一个专门针对家庭网关的操作系统,是非常有必要的。
还有很多其它的场景,在此不一一列举。总之,随着应用场景的细分,硬件的个性化,操作系统开发需求不但不会消失,而且会以越来越强劲的势头凸现出来。
什么样的公司适合开发自己的操作系统
我认为,直接面向终端用户的IT公司,都可以通过开发自己的操作系统来增强其竞争力。比如提供互联网服务的ISP,提供通信服务的运营商(Operator),销售终端产品的终端供应商,甚至一些非IT公司,比如汽车制造商,也可以通过开发自己的操作系统来增强核心竞争力。一个原则就是,只要直接面向终端用户,为终端用户提供服务或产品,都有潜在的操作系统开发需求。主要是因为,操作系统是业务终端的最核心软件(也是最核心部件),只要控制了操作系统,就控制了业务终端,进而达到保持用户、增强用户忠诚度的目的。同时,以一个自有产权的操作系统为基础,可以派生出非常多的终端类型,来满足各种各样的业务需求。这样在竞争中,企业就有了主动性,通过不断的业务创新,使得企业永远位于产业链的前端,做行业的领导者而不是跟随者。
以苹果公司为例,正是由于其拥有完全自主知识产权的iOS操作系统,才使得其在产品推陈出新、更新换代的过程中始终保持在同行的前列,通过重复使用这个操作系统,开发出各种各样的新颖产品。假设其没有自主知识产权的操作系统,而利用第三方的操作系统,那就受限于操作系统本身更新换代的影响,很难及时推出有差异化的产品。
总之,在用户直接接触的终端领域,操作系统是最高的战略高地。只要占领了这个高地,就意味着建立了在整个领域内的王者地位。但是,操作系统的开发也不能盲目进行,必须找到一个符合自身整体战略规划的应用领域,针对这个领域进行开发。比如Alibaba公司,就针对云计算自主定制了自己的操作系统。我认为这是一个非常明智的举措。
最后再着重说明一下,开发自己的操作系统,并不意味着一定要自主开发,也可以选择在已有开源操作系统基础上进行定制。比如,现在很多互联网服务提供商,就是在Android基础上开发定制自己的操作系统的。这种操作方式,不能算是完全的自主开发,可称为自主定制。相对自主开发,自主定制方便快捷,投入少,而且短期内的目标都可达到,不失为一种便捷的措施。但是从长远来看,这种方式的竞争力远远不如自主开发操作系统的竞争力强。因为自主定制的操作系统,在大部分功能上,很难赶上或超过其基础操作系统的开发进度和更新速度。即使定制厂商不跟随基础操作系统的主版本计划,自己完全建立一套从内核到应用的开发流水线,也会因为跟不上硬件平台的变动,而最终落伍。除非厂商有足够的实力,既能够跟上硬件平台的更新换代,又能够完全掌握基础操作系统代码。而这种情况下,大部分厂商一开始就会选择自主开发,而不是自主定制。因为前者的竞争优势远远大于后者。
操作系统开发难度是否真的很大?
纯粹从技术上说,相对二十世纪,当前操作系统开发的难度已大大降低,甚至低于很多应用软件开发的难度。主要有以下一些原因。
首先,目前存在很多开远的操作系统,可供开发过程中的参考。虽然开发的目标操作系统的架构和核心功能与现有操作系统不一致,但是一些关键的机制,比如线程同步、内存管理算法等,很大程度上都是相通的,可以参考借鉴已有操作系统的实现思路。
其次,不存在人才壁垒。计算机行业中有非常多的系统软件开发人才,这些人才的水平和经验,足以支撑操作系统的有效开发。
再次,当前已有非常多的功能模块代码,可直接在操作系统开发过程中引用。比如图形库,当前有很多的开源图形库可供直接应用。如果说以前开发操作系统是从零开始的话,现在开发操作系统,就是站在巨人的肩膀上进行开发。除非是你希望体验一下从无到有的整个过程,否则没有必要所有模块都完全重写。