近期,华为鸿蒙操作系统成为业内关注焦点。
什么是操作系统?直接给出定义过于枯燥,在此以事例来说明——
在移动互联网时代,应用最广泛的两大操作系统为:安卓操作系统和苹果操作系统。如果做一个较为直白的比喻的话,操作系统好比人所具有的基本功能,比如吃喝拉撒睡,应用软件好比是人所具备的各种高级能力,如唱歌、跳舞、弹钢琴等,而硬件设备则可以直接看作人的身体部件。
我们回顾操作系统的发展历史发现,操作系统已经发展了近半个世纪,其覆盖的范围包括:个人电脑端操作系统、工业应用操作系统以及移动端操作系统。
其中,个人电脑端操作系统包括我们熟知和常用的微软Windows操作系统、苹果Mac操作系统以及门槛较高的Linux开源操作系统。
移动操作系统目前是安卓和苹果操作系统的二分天下。
至于工业操作系统,由于距离普通大众甚远,在此不做分析。本篇文章重点回顾一下个人电脑端操作系统的发展历程。
现代所有操作系统的鼻祖可追溯到美国AT&T公司和贝尔实验室等共同开发的MULTICS(多路信息计算系统)。自那开始,整个操作系统的演化可分成以下三个阶段:
(1)Unix初始系统诞生。此时的操作系统主要面向专业人士,无可视化界面,非专业人士不可用。
(2)可视化操作系统演进。以苹果 Mac、微软Windows为代表的可视化操作系统诞生,降低了使用者门槛。
(3)开源Linux诞生与演进。全世界软件人员合力开发的免费开源操作系统的诞生和长足发展。
下面,我们以操作系统在这三个阶段的发展做为主线,来大致回顾一下电脑端操作系统的发展历程。
一
Unix初始系统诞生
计算机操作系统的鼻祖来自MULTICS(多路信息计算系统),我们在这里简称为M系统。
M系统是1964年由贝尔实验室、麻省理工学院及美国通用电气公司共同参与研发的,其目的是开发出一套安装在大型主机上多人多工的操作系统。因为在当时,计算机一次只能接受一个任务,多人的任务需要排队执行。
后来,原M系统设计成员Ken Thompson(肯·汤普森)因为无聊,想把一套名为“太空旅游”的游戏移植到他们实验室的一台机器上而开发了一套软件,该套软件参考M系统的思路设计,但是功能目的单一,实验室的人戏称此软件为Unics(单路信息计算系统)。
由于当时的Unics,每次移植到一个新的机器上,都需要重复在机器上处理,且对不同的机器设备,需要额外的编程处理。对于了解计算机的人来讲,就是驱动都要自己写,自己配。那个时候,系统的传播,受限于硬件和使用者的能力,只能做到极少部分人来使用。
1971年,肯·汤普森 和DennisRitchie(丹尼斯·里奇)为了使当时的Unics具有更好的移植性、适用于不同的硬件设施,创造了C语言。
他们于1973年,以C语言重新改写与编译Unics的核心, 并正式命名为Unix,形成Unix的初代版本。该版本由于使用在当时看来是高级语言的C来改写,减轻了对底层硬件依赖的问题,从而可以广泛地在各种机器上使用。
初代的Unix采用了200多条程序命令,虽然内核很小,但是功能极为精简强悍。当时传统需要用100行到1000行代码的程序,用Unix不超过10条命令就可解决。因为它的极高效率,使得它在AT&T公司内得以疯狂快速地传播。对软件编程不了解的人可以设想一下,本来要一天才能做完的工作,用当时的Unix几分钟就搞定了全天的工作,这种神器能不快速传播吗?
计算机软件的发展历程就是一个持续优化,提升效率的过程。Unics的发明是为了将复杂的任务简单化处理。同时,为了将软件和硬件的关联处理实现简化而重新创建了一个新的语言(C语言),从而实现软件和硬件的分离,为现代操作系统(Unix)的发展打下了坚实的基础。
需要指出的是,当时的Unix属于美国AT&T公司下的贝尔实验室,但该公司和学术界合作开发(加州伯克利大学),从而快速将其在各大高校传开。随后在1977年,伯克利大学的Bill Joy在取得了Unix的核心原始码后,着手修改成适合自己机器的版本, 同时增加了很多功能软件与编译工具,最终将它命名为Berkeley Software Distribution(简称BSD)。这个BSD是Unix很重要的一个分支,苹果的操作系统实际源自此分支。
1979年,AT&T公司出于商业的考量,将Unix的版权收了回去。因此,AT&T在1979年发行的第七版Unix中,特别提到了 “不可对学生提供原始码”的严格限制。 这导致后来学术界自力更生,Andrew Tanenbaum(安德鲁·塔能鲍姆)教授参照Unix的功能,写了一个Minix系统,用于教授学生操作系统。该系统在1986年完成并发布,并于次年发布了相关书籍。这是后来大名鼎鼎的Linus Torvalds(林纳斯·托瓦兹)能够得以构建Linux初代系统的基础。
二
可视化操作系统演进
在1984年以前,所有的操作系统都是基于企业的大型机或高校科研机构来设计和使用的,还没有普及到普通人能用的地步。
当时,大部分的计算机系统都是基于命令行终端,没有图形化的操作界面。这样的操作系统只被极少部分的高级专业人员和学术界的老师、学生使用。等到了1984年,一切都发生了变化。
1984年前后,操作系统的发展,发生了哪些变化呢?
1. VisiCorp的*款可视化操作系统Visi On 发布;
2. 苹果的*款可视化操作系统Mac OS System 1.0发布;
3. 微软推出Windows 1.0(1985年);
4. 日本NEC公司宣布基于ITRON/86规范,*个实现了ITRON操作系统。
几乎不约而同的,世界上几个重要的操作系统都在这个时间段内发布了基于操作系统的商用版本,且都是图形化界面。而这四个操作系统近40年的演进,几乎影响了我们现代生活的方方面面。
VisiCorp公司的操作系统专为大型企业设计和使用,普通人无从得知其演进历程。我们这里也不赘述。
苹果的Mac OS 实际来源于Unix(free BSD版本),是Unix阵营向普通消费者进军的主力,图形化的界面和应用程序,降低了系统和机器的使用门槛。
微软之前一直使用MS-Dos命令行的系统,在看到苹果的可视化界面后,马上开发出Windows系统,共同抢占普通消费者市场,由此也导致了苹果和微软两大公司长达30多年相恨相杀的争斗。
ITRON和日本的精密机械工业相结合,使日本在数据系统、工业机器人、办公机器方面处于世界*地位。例如日本的本田汽车中的引擎控制系统就是基于ITron的。
三
开源Linux诞生与演进
从上世纪80年代中后期开始,大量的基于可视化操作界面的系统问世后,操作系统真正普及开来。
不过,可视化的操作系统是直接装在机器上的,它在降低了用户使用门槛的同时,也封闭了内在复杂的软件设计。这对于具有骇客精神的学院派老师、学生来讲,难以看到其被隐藏的具体设计。由此,基于开源的操作系统Linux出现了。
1991年,在赫尔辛基上大学的林纳斯·托瓦兹,参照Unix和Minix,重写了一个初始的Linux系统,并于10月5日发布了*版0.01版。
1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。
到2019年,Linux 最新内核发布,此内核有大约2500万行代码。
有别于Unix的闭源(代码不可获得),Linux系统遵循开源协议,意味着任何人都可以获取和编辑代码,进行修改,也因此,Linux获得了极大的关注和应用推广。由于全世界系统爱好者、使用者的参与,到Linux内核4.9.2版本时,Linux内核源代码量超过1800万行(目前最新版本超过2500万行)。
我们通过微软的Windows系统研发对比,来评估这些代码的研发投入。微软的Windows Vista 大约5000万行代码, 其研发投入超过65亿美元。几千万行代码的时间投入是个什么概念呢?
以国产的金山办公软件WPS为例, WPS的代码量约150万行,开发耗时3年。从这个研发成本角度看, 我们的系统采取完全自研的方式,不如直接拥抱Linux开源社区,毕竟,站在巨人的肩膀上更有效。
这时候,读者朋友们可能会好奇地问一下,当前市场上主流的系统占比分布是怎样的?下图给出了答案:
Windows系统仍然是市场的主流。虽然Linux的发展历程很振奋人心,但是市场上的占有率实际上只有1.61%(如果将谷歌的Chrome OS也看作Linux的一部分,则合起来是2.78%)。
那微软构建这个占据市场主流的操作系统付出了多大代价呢?
下图展示了微软公司从2002年到2018年的研发费用。需要说明的是,微软的研发包括三部分:操作系统的开发、配套该操作系统的各种应用、驱动等围绕系统的生态圈建设费用。
其中,2018年的花费超过147亿美元,折合人民币约1020亿。
另外,需要指出的是,微软的Windows系统在占据主要市场份额的情况下,每年仍然投入超过千亿人民币的研发费用,这也为市面上的系统竞争设置了超高门槛。
四
中国力量的崛起
当前开源社区,中国力量又是怎样一个现状呢?
首先,早在1999年7月,几个年轻的创业者做出*个在framebuffer(Linux为显示设备提供的一个接口)上进行汉化的中文版本蓝点Linux(Bluepoint Linux)。不过,因为没有坚持在操作系统方向进行持续深耕,蓝点公司的Linux系统最终消亡。除此之外还有如红旗Linux(诞生于1999年8月),中软Linux版本(发布于1999年9月)。但是因为在使用体验上不如Windows,没有市场的支持,最终没有成熟强大起来。
不过,随着我国庞大IT从业者的崛起,情况有了根本性变化。
在此以Linux5.1内核贡献为例:
我们拉取了Linux内核贡献度超过1%的国家统计数据,发现:美国*,中国第二(注:*名未知范畴,不作为真实有效国家)。
以公司为维度来看,中国的华为公司对Linux的贡献度排在第三位(注: *名属于未知范畴,不算有效公司名,其排序参见下图)。
据财报显示,华为在2018年的研发投入也超过了千亿人民币(1015亿)。由此可见,华为面对谷歌的系统封杀,是有底气的。
从另外一个角度看, 我们的企业也有很长的路要走,希望能有更多的企业榜上有名,只有那样,我们的自主操作系统才算是稳了。
五
华为鸿蒙系统的诞生
前面我们提到日本在1984年提出了Tron系统规范,目的是创作出一个开源的的、可用的操作系统,从而减少对美国Windows系统的依赖。Tron系统原型机于1987年完成,但是该系统没有像预想的那样成为像Windows一样的替代品。
日本Tron操作系统的发展受到美国政府的打压,导致其没有在人机交互的场景上继续发展。
也许你会问:日本的Tron操作系统为什么被打压呢?
要了解这个根源,首先我们要了解另外一个基础:芯片。
我们知道,操作系统好比是人的灵魂,芯片好比大脑。软件和硬件结合才能产生真正的生产力。
而日本在80年代的时候,“芯片产业正处于高峰时期,占据全球近80%的DRAM(俗称电脑内存)份额,硅谷的英特尔、AMD等科技创业公司在半导体存储领域,被日本人追着打,然后被反超,被驱离王座,半导体芯片领域(当时主要是半导体存储占据主流)成为日本企业后花园。”(摘自“魔铁的世界”的《30多年前,日本是如何输掉芯片战争》)
日本的芯片实力已经开始碾压以美国为首的西方世界了,这个时候如果软件也取得突破性进展,那西方世界的科技市场将面临全面碾压。日本彼时提出的Tron系统,对美国来讲是完全不可接受的,也因此在美国对日本实施的超级301法案中明确要求,不允许Tron系统安装在学校中。因为,它很有可能带来另外一个版本的Unix发展史。
现在来看,美国对日本芯片和软件两方面的打压,是不是和当前华为被禁止使用美国芯片、软件是一样的套路呢?
我想,这也是华为公司未雨绸缪地布局鸿蒙系统开发的主因。
单纯的操作系统技术,相信国内是有能力了解并吃透的。但是如何在开辟新系统的同时,又能持续保住曾经的消费市场,才是考验公司能力的地方。这一点,华为的策略相当让人惊艳。
华为是怎么应对的呢?
华为的系统变革让普通用户无感知,因此不会影响到用户对系统的使用体验。华为的EMUI系统的开发和迭代都是经过多年的深耕,将安卓系统进行深度的解耦合,碎片化替换,完成系统的优化和逐步升级。
例如,华为贡献给安卓开源社区的EROFS文件系统,就是其中的一部分。华为的系统类似采取了飞行过程中换零件的策略,让用户在无感知的情况下,在每一次的升级过程中替换一个优化模块,而这些模块都是鸿蒙系统的一部分经验总结。
在这里,也不得不提一下华为的方舟编译器,方舟编译器对于普通人来说也就是个编译工具,但实际上它对一个新系统是至关重要的。一个操作系统是否健壮,要看其对底层硬件的利用程度。
拿汽车来比喻,系统构建好比是汽车引擎的构建,编译器好比是制作汽油的设备。好的编译器好比能直接生产出98号汽油,从而让你的机器快到飞起来。
编译器能否设计好,首先就要考量你对手机硬件的理解程度。从这个角度看,华为在系统构建层面是有信心的。然而,仅有这些还是不够的。华为的鸿蒙系统如何能流畅的兼容安卓生态圈,才是需要深思的地方。
和30多年前相比,中国和日本的境遇虽然相似,但是市场、外部环境却大不相同,让我们对后面鸿蒙系统的发展拭目以待。