国产操作系统背负的包袱
做了这么多年操作系统,想想有什么可以和大家分享的,既能体现咱们做国产操作系统这么多年的一直砥砺前行不放弃的一种精神,也想让大家看到,我们为国产操作系统寻找新的出路实现峰回路转所付出的努力。基于这种心情,作为国产操作系统领域的一个近二十年的从业者,和大家分享一下自己的想法。
国家非常重视基础软件的发展,从国家“八五”开始,每一个五年的科研计划基本上有国产基础软件相关的课题。但真正国产操作系统以公司化运作,还是从1999年开始,借当时Linux的东风,前前后后涌现了很多操作系统的厂商,算起来到现在应该是18年了。
这么多年,大家对咱们做基础软件的一直争议不断,作为一个从业者,一方面确确实实这么多年在国产操作系统领域做了很多自己的贡献,感到肩上的压力;另一方面也在不断地追问自己,操作系统这块究竟面临着什么问题?原因在什么地方?怎么才能让我们做出来?才能走出来?这个行业入门容易,但是想走出来难。我们究竟有哪些机会?怎么做才能成功。
首先讲操作系统的重要地位,上可以支配应用,下可以控制硬件,附加值也很高,是兵家必争之地。世界福布斯IT公司排名中,前面几个都是以操作系统作为核心竞争力的,同时操作系统也是控制产业链生态崛起的制高点,正所谓得操作系统得天下。像微软通过PC操作系统,成就了一个世界级大公司;谷歌和苹果,也是通过不断的努力凭借操作系统成为世界级大公司。国内有很多厂商都在关注操作系统,华为、阿里、百度、腾讯,都曾做过操作系统方面的尝试,操作系统本身的市场地位非常重要。我们国家为什么这么多年一直投入在做这件事情?因为操作系统决定的市场地位,以及它对信息安全的影响,都决定了它的重要性。
国产操作系统面临的各种问题,大家直接看到的是用户习惯、应用迁移等等带来的用户接受度的问题,同时这个市场规模本身不大的市场又充斥了这么多的供应商,操作系统碎片化非常严重。这么多的操作系统本身就会影响产业链的建设,上下游的厂商要如何基于这么多的操作系统去做软硬件的适配?这就是我们常说的国产操作系统的生态问题。
究竟是什么原因导致这些问题很难解决?我觉得确实是有本质原因的。
第一,操作系统的重要地位决定了操作系统一旦进入,很难被弃。已经凭借操作系统占领市场主导的国际大公司肯定要把握住,尽量加大别人进来的难度。我觉得这是一个很大的问题。
其次,传统的信息系统已经经过多年的发展,已经积累了很多应用和数据,面临着大量的数据和应用迁移问题,历史包袱非常的大。有一次开会,很多专家说我们的数据库就是做的不好,我有点义愤填膺,我站起来问DB2是不是一个好的数据库?我请问用DB2替换Oracle的时候会有什么情况?难道说你应用不会做迁移吗?难道你所有迁移做完了应用不用测试吗?一样的道理。所以它是个替代的过程,本身是要背负着巨大的历史包袱的。
第三,我们的客户端因为用户习惯影响,迁移难度比较大,这是我们在桌面操作系统这块,为什么这么多年一直比较难的一个非常重要的原因。客户端面临着各种各样的不同类型的终端用户,每个人的需求其实都不一样,这些不一样会导致整个产业链条非常长,适配和生态建设就非常困难。
第四,国产操作系统大多基于Linux开源技术,其本身衍生了很多产品和相应的商业模式。较多的产品开源和免费提供导致操作系统本身获取的途径比较多,商品价值难以体现。而当下的中国市场对服务、对定制开发等附加值的需求并没有那么大,这也影响到操作系统本身的发展。
除了这些根本原因,还有很多不利于国产操作系统发展的环境原因。
像这几年大热的云计算,给操作系统也带来了冲击。曾经有一个观点,是云计算来了,操作系统就没了,我觉得这可能是一个错误的观点。操作系统可能交付的形式发生了一些变化,但它本身的重要性肯定还是在增强,因为操作系统归根结底还是应用程序运行的载体。但是它确确实实给我们的操作系统带来冲击,就是计算资源虚拟化以后,给用户交付的是一个计算平台,不再直接面对操作系统,类似这样的误解也加剧了对操作系统的产业链冲击。
另外,互联网企业自身的研发能力比较强,而且跨界经营的商业模式影响下,自研自用操作系统多开放作为互联网入口,通过广告或其他方式来获取商业利益,这对于单纯立足操作系统的公司来说,也增加了竞争的难度。
像阿里开发云OS,号称装机量有七八千万,但是没通过操作系统收一分钱,相反还补贴给这些安装其操作系统的厂家,它不是通过操作系统去挣钱,是通过外面的广告的收入等等其他方式来获利。互联网企业的这种模式,也对我们国产操作系统本身带来了很大的影响,这个影响会长期存在。
我说这些,不是想为我们开脱,只是希望通过分析限制操作系统本身发展的具体原因,找到我们突围的方式。无论存在多少的外在原因,肩负国家发展基础软件的使命,我们都要在这条路上坚持砥砺前行。
国产操作系统成功不可或缺的要素
到底怎么才能把国产操作系统做成,个人观点,觉得至少有三个要素不可或缺。
一是技术。没有一个好的操作系统的技术,是很难得到长期发展的。比如内核技术、图形界面的技术、开发语言工具等等。
二是生态。有好的技术,不一定能有好的生态,相互之间都是相辅相成的。甚至有时候开发一个操作系统本身,比建造一个生态更容易一些。
三就是时机。当下有句时髦的话,站在风口猪都会飞起来。面对任何一个产业链重构的机会,就是操作系统进入的最佳时间。因为一个新的产业的到来,可能整个上下游的产业链配套都还没有形成,而这恰恰是我们的一个机会。一旦形成以后,再想进来就很难了。想想PC时代的微软,移动互联时代的苹果和谷歌。
安卓是基于Linux的一款成功的操作系统,它对我们做国产操作系统的来讲,有什么启示呢?我们做操作系统,究竟是做通用还是做专用的路线?可能在传统的市场已经相对成熟的时候,我们其实是很难进的。而面对一些特定的场景,通过与CPU的绑定,软硬一体,缩短生态链,优先走专注化的道路,再迂回看看有没有机会做通用,做成的可能性还大一些。
同时真的需要我们这些操作系统厂商放下眼下的利益,共同做出一些努力。建立统一的操作系统版本,维护统一用户建设和运行环境,提高操作系统标准化的程度。不要让这么多的操作系统版本出现,困扰我们的用户,困扰我们的合作伙伴。在提高标准化的程度操作系统上,通过软硬件的捆绑,以此为基础,快速建立产业链,是解决目前操作系统困境的唯一可行的出路。
在此基础上,一方面,可以通过集成商去带动培养应用开发商,突破应用困境,另一方面通过政策影响用户,坚持用、培养用,突破用户习惯的困境。我觉得从这个层面讲,像大飞机、高铁一样,通过举国体制集中力量办大事,是实现飞跃发展的关键。
风向标
其实在各种新技术趋势的冲击下,即使是行业主导的先行者也面临非常多的问题,在寻求新的出路。
比如安卓的碎片化问题,基于Linux的开源许可问题等等。大家可能知道谷歌跟Oracle就Java版权打了很长时间的官司,还有同微软的专利授权问题。这些问题导致了谷歌有很多新的举措。除了比较成功的安卓系统,谷歌还先后出过Chrome OS,安卓wear和安卓Things(后面叫Brillo)等多个系统。而最新的报道,它在Fuchsia这一块做了很多开发工作。
根据能查到的有限资料,Fuchsia大概的意图是将来统一PC端、移动端以及物联网操作系统,整个技术是基于微内核技术的,要彻底摆脱Linux GPL协议以及Java的约束等等。他们对未来的洞察以及为此付诸的各种实践,对我们判断未来技术走向具有风向标的意义。
Fuchsia它本身是一个什么样的架构呢?首先,在内核方面它是基于微内核的,原来叫Magenta,现在叫Zircon。可以从特定的一些设备上运行早期的版本,目前的工具量还是相对比较完善的。在UI设计方面采用Flutter,目前组件方面已经基本上完善。虽然3D方面OpenGL ES等等还没有得到很大的支持,但是将来它也确认要支持这些3D优化的技术,在渲染引擎方面,它是采用Escher组件,在渲染速度和效果方面有非常突出的优势。
另外,在编程语言方面,它采用Dart的编程语言,可能也是考虑到要摆脱Java的一些限制。其实编程语言对操作系统开发非常重要,一个好的编程语言能够影响整个应用生态的建设。国产操作系统大多基于的Linux是一个开源社区的产物,一种开发语言代表了一定的社区文化,所以我觉得语言的选择本身对这个社区版本的存在,影响力也是非常的重要。这个Fuchsia的架构,是一个全新的架构,不依赖于Linux,跟原来的都不太一样,所以也值得我们去关注这件事情。
Fuchsia有哪些特点呢?首先它是非常适合嵌入设备和高性能的设备。第二,低延迟和高效率,第三,一些高级编程语言的开发,有统一的UI体验。
目前在终端操作系统领域,有PC端、移动端、Pad、手机,包括一些工业控制类的设备,这些操作系统的界面都不一样。曾经有人想过,我们能否做到把所有不同终端类型的设备进行界面统一。从这个层面来讲,我不知道将来Fuchsia这个东西会发展的怎么样,但是我们会积极的关注。
今天谈了这么多,很多地方其实我自己也没有想得很清楚,也不知道到底能不能解决我们现在的问题。只是今天难得的机会有这么多的同行以及学术界的朋友,说出来供大家参考,也希望大家共同研究,进一步交流,看看这块究竟有多少机会,我们在座的能不能将来像谷歌Fuchsia一样,做出新一代的操作系统出来。
下一个风口在哪?
这么多年国产操作系统厂商在技术和生态上都做了非常多的努力,然而可能抓住风口和时机才是我们实现突破的出路。
人工智能
整个互联网发展经历三个阶段。第一, PC阶段,第二,移动互联网。第三,现在智能互联网时代已经到来,而智能互联网非常重要的就是物联网、人工智能等。人工智能本身不是一个硬件问题,而是一个软件问题。围绕人工智能的创新将会迎来爆发式的增长,人工智能将会带来产业链的重构的机会,可能成为下一个风口。
目前的人工智能,比尔盖茨在这方面有一些预测,比如机器人即将重复个人电脑崛起的道路,走进千家万户。但是机器人的出现依然面临着很多挑战,跟三十年前的电脑行业遇到的挑战是一样的。比如流行的应用程序很难在五花八门的设备上去运行,每台机器使用的编程代码几乎不可能在另外一台机器上去复制。这些情况,导致的根本原因就是硬件标准化还没有开始做,软件的操作系统也没有形成统一的。但是,正因为这样一点才给我们带来了机会,站在一个新的时间窗口上,可能一个新的行业也将崛起。
那么,人工智能对操作系统有哪些挑战呢?
首先肯定是一个架构的问题。传统的操作系统虽然通过集群配置,它也是基于单机运行的基础上的。这样一个模式很明显是不能够适应人工智能对操作系统的需求。比如分布式的架构,特别是云,云管端即操作系统的功能发生了变化,已经外延伸到云端。从这个层面来讲,可能整个架构,操作系统本身也要做一些调整。
其次,可能还考虑异构计算的问题,比如GPU,因为人工智能对计算的要求很高,可能需要更多的计算资源去帮助它去做一些计算,GPU可能就是一个非常好的时机。谷歌在研究TPU(张量处理器),国内很多研究GPU和FPGA去做一些类似计算等等。智能算法和机器学习也是非常重要的一点,要求我们在算法层面去创新,在机器学习方面充分利用大数据技术去提高机器学习的效率等等。这些问题的到来,对我们操作系统的架构上会产生什么样的调整,都需要我们去思考和研究。
另外,实时性。单机的实时性我们可能会做一些,但是在多机的实时环境,它的情况是非常的复杂,我们怎么去实现多机的实时协同?包括一些计算资源调度的实时性,包括通讯协议的实时性,以及多任务协同的实时性,这方面其实对我们操作系统本身来说要求很高。
最后就是安全性。我们将来可能整个人工智能就是基于无线通讯的方式,在这种情况下,我们怎么去建立一些抗干扰无线通讯的方式,通信协议本身的安全性怎么去考虑等等。
应该说人工智能时代对操作系统本身的影响也是非常大,我们怎么去把握这个机会,怎么让我们的操作系统更加适应目前的人工智能环境也非常重要。虽然目前有很多都是基于Robot OS,他是基于Linux的一个人工智能应用开发的中间件,但是怎么在机器人的控制层面充分发挥操作系统本身的架构,我觉得非常重要。这是人工智能本身对操作系统本身的一个需求。
微内核
最近微内核这一块,大家也总提,特别是一些核高基专家非常重视这一块。
其实微内核的发展很早,最开始是Mach,从八十年代就开始做,做到现在,没有太多的产品级的产品,这方面肯定是有它本身原因的,其中很大一块就是性能问题。
有一个统计发现,操作系统本身的故障率中,内核驱动占了很大比例,大概有75%左右的故障是来自于硬件的驱动。微内核也是想克服这些,把内核做得很小,同时也能适合去做一些形式化的分析,技术做到一定的保障。但是带着一些性能的开销,比如要通过IPC通讯,也导致它出现很早,但是一直没有得到广泛使用。不过最近又开始活跃了。
另一个是L4,微内核实现的一个标准,目前基于L4本身已经有一些商业性的产品在做。前些还是比较活跃的,中间很长一段时间没那么活跃了,但是最近这几年又开始活跃了。国外的谷歌,国内的中兴新支点等公司都在关注微内核的发展,包括普华本身。
确实,微内核经过这么多年发展,它的性能得到了较大的提高,这没准儿也是我们解决将来操作系统碎片化的一种方式。
峰回路转或有时
下一个风口来了。我们在传统的国产化替代这一块,必须一如既往地去投入,脚踏实地去做事情,但是在新的机会到来的时候也需要去把握住。
其实我们国产操作系统厂商应该抓住目前这样一个机会,所谓的看天时地利人和,我们目前都具备了。
首先,时机的问题,人工智能、物联网需要有统一的、开放的、普适的计算平台,产业生态面临重构。
第二,地利的问题。历史上从未出现过中国和美国在某些高科技领域的差距如此近,我们的高铁其实是领先于美国的。根据一些报道,我们一些互联网公司的技术,包括现在的人工智能,都是有可能在近几年内超过美国的。这种飞速赶超的产业环境,使我们有可能在更高的平台上去实现突破。
另外,中国已经培养了很多从事底层内核研究、基础软件研究的开发人员,包括BAT公司和华为等等。华为可能有一两千人做操作系统开发。包括整个阿里也是一样,阿里的Yun OS现在叫Ali OS,也表示它下一步对操作系统本身的发力。
最后,关于人和的问题。国内已经初步涌现出上下游合作分工的国产软件厂商,厂商之间在通过联盟方式打造产业链方面,已经比较成熟了。从这个层面来讲,我们如何去利用我们的天时地利人和去抓住风口,去开发一些新的操作系统,也是值得我们去思考的一些问题。
当然抓住机遇除了我们国产操作系统厂商自己付诸努力,也少不了来自各方面的支持与配合。
首先操作系统是一个需要长期投入的过程,操作系统究竟是个价值中心还是利润中心,大家一直在做一些取舍。一方面希望国家能像大飞机和高铁一样,加大资金投入集中力量办大事,促进基础软件方面也实现大的突破。另一方面就是耐心的问题。其实谷歌做安卓,早在2007年就收购了安卓系统公司,但也通过大概五六年的时间才形成当下的局面,所以我觉得需要耐心。
其次就是政策的支持。比如在人工智能领域,在工业操作系统领域等等,通过政策加大支持力度。凭心说,现在在国产通用操作系统方面,国家的支持力度确实太小,但在这风口,希望也要进一步出台一些政策去支持国产操作系统的发展。
最后,回到企业本身的一些问题。国产操作系统厂商战略的决策要坚定,人才团队要组建一支高效和高水平的队伍。对于技术的领导者来讲,怎么去确定一个技术路线非常重要。在工程化的管理方面,需要加强,引领趋势,这都是非常重要的。
这是我对操作系统产业化方面的一些体会,分享给大家。可能有些不一定对,我只是站在产业的角度,谈了一下对这件事情的理解和看法,供大家参考。谢谢!
【本文整理自普华基础软件股份有限公司副总经理李祥凯先生在CCF系统软件论坛:中国操作系统新技术与产业化上的专题分享】