昆明信息 > 科技 >CCCF专栏 | 操作系统的兴衰

CCCF专栏 | 操作系统的兴衰

2020-08-24 10:12:57 来源:互联网 阅读:-
CCCF专栏 | 操作系统的兴衰

谷歌公司暂时中断对华为手机提供安卓操作系统的服务,这将导致华为无法使用安卓手机操作系统。随后传来华为将使用之前已经开发的鸿蒙操作系统来取代安卓作为反制对策。这一措施能否起到预期的效果?本文将通过计算机操作系统的发展历史来分析它的有效性。

CCCF专栏 | 操作系统的兴衰

关键词:操作系统 操作系统发展史 鸿蒙

2019年5月美国政府对华为公司进行制裁,使得谷歌公司暂时中断对华为手机提供安卓操作系统的服务,这将导致华为无法使用安卓手机操作系统。随后传来华为将使用之前已经开发的鸿蒙操作系统来取代安卓作为反制对策。这一措施能否起到预期的效果?本文将通过计算机操作系统的发展历史来分析它的有效性。

计算机操作系统是介于计算机硬件和应用软件之间的系统平台。它通过透明化硬件解放了广大应用程序的开发人员,避免了很多不必要的重复开发。在整个计算机历史发展过程中曾经出现的各种大大小小的操作系统数以千计,但大众耳熟能详的却屈指可数。这是因为虽然每一次计算机产业的更新换代都为新系统的出现提供了机遇,但用户使用计算机的习惯,尤其是趋向使用同一操作系统的本能,导致了每一个发展阶段只有一两个操作系统能够被广泛使用和认知。

IBM的OS/360

在计算机诞生之初的十几年时间里,业界对操作系统的必要性没有达成共识。大多数计算机公司和企业用户把计算机视为做固定的计算工作的专用机器,比如会计和生产管理。给计算机添加一个操作系统只会耗费更多的存储和计算资源,并不能提高效率。

后来随着计算机用途的增多,人们逐渐意识到为每一台新的计算机重新编写相同功能的应用软件是一件低效的工作。添加操作系统可以让用户更加方便地用高级编程语言编写程序和管理计算机,应用程序也可以移植到升级后的硬件上,大大方便了应用程序的开发、使用和维护。前瞻到这一趋势,IBM决定为其第一款多功能大型机S/360开发配备后来软件工程领域颇具传奇色彩的OS/360操作系统。

OS/360操作系统的设计和研发是当时计算机软件领域的一个重要突破。它的设计需要兼顾许多未曾尝试的领域,比如为充分利用中央处理器而实现多程序同时运行,兼顾系列中不同配置的机型,以及各种机型和其程序所需的不同文件的读写要求,这使得它的设计复杂性呈指数增长,导致该操作系统直到S/360大型机问世两年后才得以完成。

这里面还有一段值得提及的小插曲:IBM为了加快进度,一度添加了很多人手到该项目中,但随着开发人员的不断增多,整个工程的进度反而减缓。软件开发与传统的工程开发有所区别,将软件分割成不同模块同时开发,需不断协调和整合。当模块分割过细时,协调不同模块的进度将变得过于复杂,以至于彻底抵消分工所带来的效率。负责OS/360开发的项目经理是1956年从哈佛大学博士毕业的布鲁克斯。他根据上述观察写出了软件工程领域的经典论文《没有银弹:软件工程中的根本与次要工作》和家喻户晓的《人月神话》一书。

S/360大型机和OS/360操作系统的成功使得IBM牢牢把握住了20世纪70年代美国计算机市场。因为操作系统的软件兼容性,购买了S/360计算机的公司会更加频繁地进行系统升级,为IBM带来的利润甚至超过了计算机本身的销售。IBM OS/360的后续版本一直延续到IBM最新一代大型机zSeries上的z/OS操作系统,而且都实现了对早期版本的兼容。

70年代随着集成电路技术的发展,计算机开始向小型和微型化发展,这个时期的代表性公司DEC的PDP系列小型机,尤其是PDP-7催生了新一代操作系统UNIX。

UNIX与开源运动

如果说OS/360是一个精雕细琢的系统工程结晶,UNIX则是一个无心插柳的赤子之作。它出现的背景是麻省理工学院、通用电气公司和贝尔实验室三方合作但是以失败告终的大型机操作系统Multics。尽管尝试失败,Multics很多新颖的设计启发了当时参与研发的贝尔实验室的汤普森、里奇和柯尼根。汤普森利用闲暇时间在实验室的通用电气大型机上编写了一个小游戏“太空旅行”。但是每次运行这个程序需要花费75美元的机时,而有一台大家不太用到的小型机PDP-7不但有非常好的显示器,而且机时可以不计。于是他们决定把游戏移植到这台小型机上。

在移植过程中,因为游戏的需要,他们需要设计一套基于PDP-7的文件处理系统。很快他们发现其实可以在此基础上为PDP-7编写一个分时操作系统,于是花了几个星期的时间讨论了操作系统内核、用户界面、文件编辑器、编译器等主要组成部分,并且用汇编语言将其一一实现。由于PDP-7将很快被淘汰,大家决定将这一操作系统移植到即将推出的PDP-11上。贝尔实验室和它的母公司美国电话电报公司的很多部门都在使用PDP计算机,有了操作系统可以使未来的软件更新更加方便,而且这一新的操作系统还有一定的商业潜力。于是这一立项要求得到了贝尔实验室管理层的认可。

柯尼根给操作系统起了与“Multics”谐音的“UNIX”的名字。里奇发明了C语言,将UNIX操作系统重新编写了一遍,使其可以更方便地移植到其他计算机上。UNIX系统与同时代的其他操作系统相比有很多重要的创新,比如采用了模块化设计和进程之间的管道连接,它的设计遵循了认知工程原则,即使用方式与使用者的直觉密切相关。

UNIX后来逐渐演变出BSD和SYSTEM V两个版本。BSD版本起源于汤普森在母校加州大学伯克利分校开设UNIX操作系统课程时带来的版本。该版本从伯克利传播到其他大学,后来获得了美国国防部高级研究计划署的资助,被开发成适合互联网前身阿帕网联网计算机使用的BSD版。伴随着阿帕网和PDP计算机的普及,BSD版成为美国大学里最流行的计算机操作系统。SYSTEM V版来自贝尔实验室的母公司——因垄断被解体后的美国电报电话公司所推出的商业版,该版本被授权给升阳、惠普、IBM、康帕等多家计算机公司使用。

伯克利BSD版本在开源运动的影响下衍生出了FreeBSD、NetBSD等多种开源版本,它最有影响力的衍生版本是2001年苹果公司的Mac个人电脑所使用的macOS。

汤普森和里奇因为UNIX操作系统获得了ACM图灵奖。汤普森从贝尔实验室退休后被谷歌聘用,合作开发了GO编程语言。里奇在2011年去世,令人遗憾的是尽管他对计算机领域贡献巨大,却因为去世时间是在乔布斯去世一星期之后,而没能得到媒体的关注。

UNIX对后世计算机领域有长远的影响。其中最重要的影响是软件开源运动和Linux操作系统。

微软视窗

OS/360和UNIX从诞生之日起就是完备的计算机操作系统,而当时几乎占据100%个人电脑市场份额的微软视窗一开始并不是一个真正意义上的操作系统。它的诞生可谓先天不足,以至于后天一直被各种“后遗症”所困扰。微软公司创立之初是为个人电脑做BASIC编译器和办公应用程序,尤其是早期和苹果公司合作为苹果电脑开发的办公系统,为微软的发展奠定了重要的基础。微软进入操作系统市场的起因是IBM PC。

1980年IBM进军个人电脑市场,由于大型机仍然是IBM的主要产品,所以IBM并不想投入过多资源到个人电脑的研发上,于是采用了公开架构方式,只保留了主板上的BIOS芯片控制权,对于其他软硬件则是通过与其他公司合作的方式进行开发和生产。

微软公司被IBM挑中为其个人电脑提供BASIC、FORTRAN、COBOL和PASCAL编程语言的编译器。BASIC不需要操作系统,后面三种语言都需要操作系统的支持。于是微软为IBM推荐了当时拥有最流行的CP/M个人电脑操作系统的数字研究公司(DRI),但是CP/M是8位元,而且数字研究公司不能保证在短时间内开发出16位元的操作系统。于是IBM当时的管理者山姆斯把球踢给了微软公司创始人比尔·盖茨。

面对如果没有合适的操作系统就无法按计划开发出其他编程语言的风险,盖茨他们开始寻找当时已经存在的16位元操作系统,结果找到了一个名为西雅图计算机的小公司及其开发的一款名为86-QDOS(Quick and Dirty Operating System)的16位元操作系统。这个操作系统是该公司的程序员帕特森按照CP/M说明书的功能特点仓促开发的。帕特森恰好和微软的联合创始人艾伦相识,于是微软以2.5万美元的价格获得了这一操作系统的授权,微软也因此获得了IBM的合同。

因为先天不足,86-QDOS功能极其有限,其中最突出的就是640K的内存限制,后来微软升级视窗系统时为了向后兼容不得不继续受其影响。IBM个人电脑问世后迅速占领了市场。随后IBM PC的克隆机也纷纷出现。这些克隆机虽然把IBM挤出了个人电脑市场,但继续扩大了微软操作系统的市场份额。

IBM PC问世之时,微软就在悄悄研发图形界面的操作系统,并且在1985年推出了第一款视窗(Windows)。但是微软视窗在问世之初仅仅是一个建立在DOS操作系统之上的图形界面,继承了DOS系统的所有缺点。后来微软从头开发了服务器端的操作系统视窗NT,并以此为基础将后来视窗的所有版本进行了升级才逐渐摆脱了DOS的缺陷。

由于服务于个人电脑市场,微软视窗成为第一个为大众所熟悉的计算机操作系统,并独霸90年代个人电脑操作系统整个市场。但是它作为一个商业闭源软件有着天然的系统设计缺陷,除了早期的DOS所存在的各种问题外,后来为了系统远程升级维护而设立的超级用户,为黑客攻击留下了无法克服的系统隐患和令用户头疼的无法删除的系统垃圾文件。这些问题和隐患为90年代开源操作系统Linux的崛起提供了机会。

开源运动与Linux

80年代,自由软件在个人电脑的普及下蓬勃发展。1983年麻省理工学院人工智能实验室的斯托曼通过网络邮件群组,联合散布于世界各地的程序员发起了自由软件运动,目标是通过志愿者共同努力开发出从操作系统、编译器,到基本应用程序一整套开源软件生态系统,也就是影响后世的GNU Project。操作系统是整个计划的核心部分。斯托曼希望志愿者们能够合作开发出一个完整的开放源代码操作系统,使所有人都可以自由地修改其源代码,与他人分享,并且发布自己的修改版本而不受限制。这一理念充分体现在他的GNU宣言里。

斯托曼代表的开源软件运动对计算机产业的影响除了软件本身之外,还逐渐形成了一系列对源代码控制程度不同的协议以及对应的许可证制度,这是对整个知识产权领域的重要贡献。比如针对GNU项目,为了进一步防止开源软件在未来被主张所有权,所有GNU涉及的软件都被放到GNU通用许可证GPL(General Public License)的保护之下。此方式成为最早的开源软件知识产权管理方式之一。它授权给任何人以任何目的(包括恶意)免费使用软件源代码,但是要求任何使用GNU授权下的开源软件代码开发出来的软件必须沿用同一授权许可证。

除了GPL开源协议,还有在这之前和之后出现的众多开源软件协议。如果从对源代码的控制程度来划分,这些协议大致可以分成三类,它们的代表分别是MIT许可证协议、Apache许可证协议和GPL许可证协议。

MIT协议是最为宽松的一类。它允许任何人以任何方式使用源代码,包括用于商业目的,而且衍生出来的软件可以闭源。与其类似的协议还有伯克利UNIX版本使用的BSD 3。Apache协议相对宽松,因为它仍然不强制衍生软件使用相同的许可证发布。但是衍生软件必须对所有未修改的部分使用相同的许可证。而且在每个许可文件中,必须保留再分发代码中的所有原始著作权和更改说明。而GPL协议则相对严格一点,它要求所有衍生软件产品必须沿用同一许可证。也就是说如果使用GPL协议的开源软件来开发新的软件产品,那么新的软件产品必须也是开源的,而且需要使用GPL协议来管理。

从创立历史来看,1988年推出的代表早期黑客精神的MIT协议出现得最早,其目的是让更多的人使用开源软件;随后是1989年斯托曼倡导的开源运动推出的GPL协议,其目的是在一个开源平台上产生更多的开源软件;2000年才出现的Apache协议则更像前两种协议的折中版本,是为了满足中间用户的需求。这些宽容程度不同的许可证协议为软件开源运动提供了多样的管理方式,不但有利于更多开源软件的出现,也为不同用户提供了不同的选择。

1984年斯托曼等人不断用C和LISP语言开发GNU软件。截止到1989年,GNU计划中包括编辑器Emacs、编译器、Shell在内的大部分应用软件都已经开发完成。由于和UNIX的兼容性,这些软件被广泛使用,但是唯独操作系统还没有被开发出来。

1990年在开源软件基金会推动下,GNU重启开发操作系统的计划并将其命名为Hurd,但是开发进程依旧缓慢。事实上Hurd很快就不再被需要,因为一年后芬兰的一个学生在开源软件运动的影响下协调众多网络志愿者成功开发出了一套开源操作系统。该系统加入了GNU生态圈成为其操作系统的核心,这就是Linux。

Linux的出现和UNIX息息相关。1987年荷兰计算机教授、操作系统专家谭宁邦(Andrew Tanenbaum)为了给学生讲解操作系统原理,自己编写了一款模拟UNIX的16位字元MINIX操作系统,并且将其作为开源软件发布。MINIX影响了很多学生。但是由于当时已经出现了32位字元的386微处理器,所以大家希望能有一款32位元的开源操作系统。1991年芬兰赫尔辛基大学学生托沃兹在MINIX操作系统上用GNU的C语言编译器开发出了UNIX的终端模拟器,用来连接学校里的UNIX服务器。但是不久他意识到自己已经在编写操作系统内核的一部分,索性开始正式编写32位元的操作系统。

基本编写完成后,托沃兹在USENET上关于MINIX的群组讨论中发布了自己的新程序。他的朋友把内核源代码上传到赫尔辛基大学的FTP服务器上并将其命名为Linux。Linux立刻吸引了众多开源软件志愿者。擅长编程的志愿者开始为Linux添加不同的模块和新功能,计算机新手或者是用户则负责系统的测试工作。随着新功能和模块的不断增加,Linux的更新速度也越来越快,有时达到每天一个新版本。为了让Linux有一个相对集中的发展方向,托沃兹设立了Linux管理小组,对志愿者提供的新功能模块进行筛选,把符合发展方向的模块融入到Linux的下一个正式版本中。

不久Linux内核通过几百名志愿者的共同开发成功地发展成为功能丰富的操作系统,其可靠性也因为数千名志愿用户的不断使用和反馈而远远高于同时期的微软视窗。开源软件运动也因为Linux的成功而被主流媒体关注。雷蒙在他总结开源运动的《大教堂与市集》一书中对此有详细的描述。

Linux作为开源软件的操作系统核心给软件行业带来的另一个重要创新是,把所有在它之上运行的各种开源应用程序,集中到几个服务器平台上供用户自动下载使用。这样做的好处是可以对平台上的应用程序的安全性做出保证,防止用户从第三方网站下载被恶意软件植入的程序。苹果公司学习这一软件组织方式形成了苹果的App Store。Linux在PC机市场的占有率在90年代一直不及微软视窗。但是90年代末因为开源优势,Linux被用来作为搭建云计算平台的单机操作系统。随着谷歌、亚马逊等云计算平台的崛起,Linux越来越流行。

2000年以后计算机产业进入到移动计算时代,为新的操作系统占据主导提供了机会。有意思的是这次世代变迁所产生的两大移动操作系统都可以溯源到开源版本的UNIX:苹果的iOS系统移植于macOS,而安卓系统使用的则是Linux内核。

苹果与安卓

移动计算是继个人电脑之后计算机发展的新阶段。关于这一时期的起点比较一致的看法是苹果手机的问世。

在苹果手机问世之前,计算机和手机是两道平行的发展轨迹。前者在微软和英特尔的主导下沿着摩尔定律向更高更强的运算速度发展,后者则被爱立信、诺基亚和黑莓等公司所共享,主要定位在设计和生产经久耐用、低能耗的功能机。当苹果公司决定进入这个市场时,面临着两个选择:是将苹果计算机移植到手机上,还是将手机功能添加到当时颇为流行的随身听iPod里,并保留当时功能机的特点。乔布斯选择了前者,尽管此举备受争议,尤其是不被当时手机市场的大公司所看好,但是苹果手机问世后,功能机很快成为历史。而iOS操作系统则顺理成章地成为移动计算的主要操作系统。

安卓系统能够在苹果iOS取得先机的情况下后来居上并占据大半移动计算操作系统市场,则要归功于谷歌公司。

安卓问世之前的主流手机操作系统是微软CE、爱立信和诺基亚等所使用的塞班(Symbian)。但这两者都不是开源系统,所以电信公司无法根据自己的需要将其个性化。对中小手机制造商而言,如果不选择微软或者塞班授权,就不得不使用Linux,但每个公司都开发了自己版本的Linux,导致应用程序相互之间无法兼容,只有通过复杂的整合才能让这些具有不同Linux版本的手机服务与微软和塞班进行竞争。所以电信公司和中小手机制造商都希望能有一个开源手机操作系统平台。在这个平台上电信公司可以根据自己的需要来添加服务内容,手机制造商可以免费用统一平台来开发产品。安卓的创始人鲁宾和他的投资人米纳尔发现了这一需求后,以Linux内核为基础编写了安卓开源操作系统平台。2005年安卓系统问世不久就被谷歌收购。鲁宾也加入谷歌,成为移动系统开发的负责人。

谷歌虽然从2005年收购安卓时就开始筹划基于安卓系统的谷歌手机,但一直没有推出像苹果手机那样的成熟产品。2007年苹果手机问世后,谷歌失去了先机。但是随后谷歌联合30多家电信公司、手机制造商、软件公司、半导体公司以及移动电子商务公司,发起了安卓开源软件联盟(Open Handset Alliance)与苹果争夺市场。这一联盟主要由美国、日本、韩国和中国的公司组成,其中包括中国移动、德国电信、英特尔、摩托罗拉、中国台湾的宏达电子、高通以及韩国三星1。随后谷歌又通过收购加拿大电信设备公司北电和摩托罗拉移动进一步巩固移动平台的基础,最终形成了以安卓操作系统为核心的从软件到硬件的整套移动平台。

在平台竞争中,这两大平台都能够在较短的时间内迅速吸引大量程序员和公司为其平台开发各种应用程序。安卓虽然起步较晚,在2009年初只有2300个应用程序,但凭借开放平台的优势,在5~6年时间里应用程序的数量就与苹果比肩。从下载数量上看,2016年谷歌安卓的下载量达到820亿,苹果商店为1300亿。如果考虑安卓系统在不同国家和地区存在的不同版本的下载数量,两者可能基本持平。

在苹果和安卓二分天下的环境中,是否会出现第三种具有一定市场份额的移动操作系统呢?

从操作系统的演变历史来看,没有计算机技术的世代更替作为背景,这是不可能的。但是从市场细分来看,却有一定的可能性。安卓和苹果主要是在中高端智能机市场竞争,而价格低廉、功能简单、续航能力强的低端智能手机其实在发展中国家有更广阔的市场。这些国家的用户大多没有能力购买动辄200美元以上的智能手机。但是随着电信的普及,这些国家的普通用户有着对移动通讯和基本应用的巨大潜在市场需求。针对这些需求,TCL的一个产品经理库德维尔在2016年说服了公司管理层收编了失败的火狐操作系统研发团队,成立了一家独立公司,在优化火狐操作系统基础上开发出了省电且内存占用小的KaiOS开源移动操作系统。2017年该操作系统进入低端功能机市场后迅速发展,目前已超过苹果iOS,占据15%的印度手机操作系统市场。

那么华为的鸿蒙是否可以学习KaiOS?5G是否可以认为是移动计算的下一个世代更替技术,为华为提供契机呢?

鸿蒙的未来

华为近日宣布将用自主研发的鸿蒙操作系统来替代被谷歌限制使用的安卓系统。这一反制手段主要是针对华为海外手机市场。安卓系统的内核是完全开源的,即便是谷歌也无法限制华为的使用权。谷歌所限制的主要是华为手机所使用的谷歌安卓移动平台(Google Mobile Services),它包括各种谷歌应用程序、服务以及调用系统功能的API。国内华为手机用户的系统更新和应用程序下载链接的并不是谷歌平台,不受这一限制的影响。受影响的是从谷歌平台接受更新和下载的海外华为手机用户。显然解决这一困局的方式可以是更换操作系统,让所有用户都直接使用华为自己的操作系统平台来实现更新和下载,这也是华为推出鸿蒙的原因。

但是一个新的操作系统能够兴起的必要前提是计算机技术的世代更替。当技术更新所带来的更替进入尾声后,赢者通吃的特点将使新操作系统很难取代已经获得市场主导地位的操作系统。因为后者已经形成了合作伙伴、用户群和建立在操作系统之上的应用软件生态系统。如果在技术更新换代之际两种强势的操作系统同时出现而且各自建立了自己的生态系统,那么将形成类似苹果和安卓这样的双寡头垄断局面。这种局面虽然为用户提供了两种平台的选择,却为应用程序的开发增加了双倍的负担,从长期来看这是一种脆弱的平衡。这时如果有第三种操作系统平台试图来三分天下时,从它为市场带来的潜在额外开发成本来看,几乎是不可完成的任务。微软投入数十年之功,甚至为此收购诺基亚的手机分部,但最终不得不放弃CE移动操作系统,就是最好的佐证。

华为鸿蒙如果定位在目前华为手机所在的中高端智能机市场,相当于重复微软等公司前面的努力,所以也将面临同样的用户市场培养和应用程序开发问题。选择给华为提供应用程序的开发商将面临着开发和维护苹果、安卓和鸿蒙三种版本的压力,二八定律告诉我们至少80%的应用程序中小开发商无法承受这样的负担。如何帮助或者激励这些开发商为华为平台提供应用,将成为鸿蒙能否续存的关键,而激励开发商的最主要因素是鸿蒙的用户市场。另一方面,华为海外用户只有在培养出应用程序的良好生态系统的前提下才有可能选择使用鸿蒙。这两者如何相辅相成、同步推进,是一个永远的难题。

那么我们能否将5G看作是一个世代更替的机会呢?答案是不确定的。从目前来看,5G仍然属于移动计算,不能看作是质的世代更替,因为它所依附的整个体系并没有发生变化,它仍然需要应用程序的支撑和将手机作为最基本的平台。但是如果华为能够将各种新的计算技术和需求相融合开发一款充分利用5G和物联网时代的新安卓,横跨手机、个人电脑、平板电脑、汽车和智能家居等平台(类似于谷歌的Fuchsia),并以此搭建生态系统,那么鸿蒙作为这一新平台的操作系统将有更大的胜机,因为它将创造一个新的市场,而不是与现有的操作系统争抢一个已经存在的市场。

CCCF专栏 | 操作系统的兴衰

作者介绍

万赟

CCCF特邀专栏作家。美国休斯敦大学维多利亚校区教授。主要研究方向为电子商务和互联网应用。著有《电商进化史》一书(机械工业出版社2015年出版)。wany@uhv.edu

脚注:

1 只有诺基亚和AT&T两大电信公司没有加入,前者作为最大的手机生产商有自己的塞班操作系统,后者则是苹果手机的独家电信公司伙伴。

CCF推荐

【精品文章】

  • CCCF专栏 | 万赟:区块链的极限

  • CCCF专栏:万赟 | 网络安全的时代变迁

推荐阅读:only时尚网

(正文已结束)