简评爱坛的鸿蒙之争
最近几天在爱坛上鸿蒙是一个热议的话题。套用外交行话,大家就此进行了坦率交谈。领衔双方的都是大牛,所持观点都有一定的道理。但是好之中总会有更好,笔者不才,瞎说两句吧。关于鸿蒙的一个热点是其微内核( microkernel architecture )的架构。微内核的优缺点是一个老生常谈的话题,到现在晨大跟老兵还对此有不同的看法。虽然晨大知识广泛,在很多工程领域都有很高的水平。可是计算机毕竟是老兵谋生几十年的本业,对该问题的认识要强于晨大。简单地说,微内核安全、容易剪裁,但性能(performance)做好不容易。道理其实很好理解:在微内核构架下,想要完成一件事往往需要频繁出入内核与用户空间,跨越不同安全等级区必然导致一定的系统开销。就像下图,你觉得哪一个办事效率更高呢?
https://media.giphy.com/media/3o7TKplfY8Oedy4GXK/giphy.gif
微内核
https://s3.amazonaws.com/wordpress-production/wp-content/uploads/2015/08/open-office-spaces.jpg
monolithic kernel模式
因此,微内核性能下降是必然。但是能否让这种下降止于某个可以令人接受的程度,从而生产出一个依然可用的系统呢? 这其实需要有天赋有理想的创作者, 裱糊匠肯定不行。老兵为了论证自己的观点,拉来Windows NT做例子。然而,微软是一家把实用主义融入基因里的公司,只要能用,任何时候都不介意做成一锅乱炖。当初微软为Windows开发搞了一个MFC框架,里面大量使用了宏定义(Macro),直到delphi横空出世人们才意识到原来Windows的封装可以那么清新,那么有条理。
有意思的是, 双方不知有意,还是无心, 这次微内核的讨论基本上都是在PC层面展开的,这对手机来说多少有点隔靴止痒的意味。其实到目前为止,在移动设备上做得最好的微内核的系统(鸿蒙依然在开发之中)就出自他们大湖北的一家公司(难道这就是传说中的灯下黑?{:soso__14347937040236606360_4:})该公司在意气风发的时候它的名字叫Research in Motion,不熟悉的小伙伴们一提 BlackBerry也就全明白了。 BlackBerry手机用QNX(现在已经改用安卓, 时不利兮骓不逝),QNX是微内核的实时操作系统。曾经有一段时间,美国总统的智能手机只能用BlackBerry,因为那时候只有BlackBerry通过了特勤局的安全检测(iPhone和安卓都不行)。
另一方面,在对鸿蒙的前途和未来的展望上,老兵的观点未必能够胜过晨大。大概老兵长期处于IT高端,周围被专有(Proprietary)软件环绕,惯性使然。一开始,老兵没有注意区别安卓和GSF(Google Services Framework)以及谷歌全家桶(Chrome、YouTube等应用程序)。前者是开源软件(更精确地讲应该是 free software,从习惯) ,后者是专有软件。只有专有软件才限制别人分发、修改、以及二进制兼容。国内的软件都是在没有GSF的环境下长大的,所以除非将来谷歌修改安卓的许可证(那也只能适用于新版,现有安卓依然free),否则鸿蒙要保证国产软件的运行一点问题都没有。
有一点老兵看到了,那就是鸿蒙的作用可以作为兑子,即用停止开发鸿蒙换取谷歌解除封锁。但有一点老兵忽略了,交换需要双方愿意,用来交换的东西必须自身拥有足够的价值才行。马换炮,想一想也就换了。但想要卒换车,高手肯定笑一笑走开了。如果鸿蒙像老兵说的那样不堪,那么兑子也基本上做不到。
比之其他IT领域,移动设备更下里巴人,更接地气一些。以国内市场为例,国产手机中步步高系的市场占有率对小米具有压倒性优势。您没有看错,就是做学习机的那个步步高,OPPO、vivo、以及海外卖得很火的一加,都是由步步高出来的(甚至可以精确到段永平这个人)。在很长的一段时间里,步步高系的手机,配置比小米低,价格比小米高,而且依赖传统的店面销售(他们的网上直销到现在依然是个软肋)。那么他们凭什么战胜high-tech的小米?其中有一点就是销售人员同顾客做朋友。很多都生活在同一小区里,就这么说吧,如果大妈晚上九点手机遇到问题,销售人员都能上门服务,可能顺便还把老人搬不动的矿泉水带上楼。对这些顾客来说,手机有多大内存,CPU有几个核真的不重要,YouTube、Facebook、Instagram更是虚无缥缈,这与欧美的高端市场绝对是不同的世界。
万一,华为遭遇最坏情况,谷歌彻底撕破脸怎么办?很简单,三个字:活下去!凭借国内市场及亚非拉第三世界市场,华为不可能死。能坚持,就有胜利的希望。只要活的足够长,敌人都可能助你成功。3G时代,当中国拿着TD-SCDMA申请国际标准的时候,不要说产业化,就连很多基础性的实验都没有做,完全是白纸上画大饼去跟人家分,有谁能想到今天的局面? 时光倒退30年,有谁又能想到曾经拥有包括晶体管在内的九项诺级科研成果,共计14诺贝尔奖获得者的美国电话电报公司,在电信制造业上现在已血骨无存?电信是规模效益很大的一个行业,有时候客户数比利润率更重要,这是迂回前进,走农村包围城市道路的底气所在。 说的真好。
个人意见。技术层面晨斯基那个微内核优势论一看就太扯了,作为一个Linux用户。和安卓的兼容性,只要谷歌肯干,在新版本的安卓上肯定是可以动手脚的,给你拉后个半年就可以了。华为有了鸿蒙,进可攻,退可守,即使兑子兑掉也不可惜,相当于把备胎用足。
关于蓝绿厂给大爷大妈搬水来卖手机,实在难以苟同。不过和主题关系不大,就不说了。{:191:} Windriver公司的Vxworks实时操作系统在通信公司设备上常用,也是微内核的,很有名气,但不是手机内核。 我关注的是以下几点:
第一。欧美市场而非国内市场。在欧美市场,谷歌框架是必须的,因此一旦这个授权未能达成,鸿蒙在欧美市场基本上没机会。
第二。从技术上讲,国内目前没有能与美国公司交换的本钱,因此你所设想的互相让步基本上没可能。
第三。国内市场,实际上与谷歌授权没关系,而只是使用了开源的安卓部分。因此鸿蒙在这段没有多少可以折腾的空间,因为市场已经满了。
第四。亚非拉市场意义不大,因为低端用不上鸿蒙,高端则不会用它,因为涉及到主流安卓的现实。
结论就是鸿蒙可以活下去,但是做大的希望不大。 qyangroo 发表于 2019-6-19 07:00
Windriver公司的Vxworks实时操作系统在通信公司设备上常用,也是微内核的,很有名气,但不是手机内核。 ...
微内核系统的一个关键是要控制它的规模以及复杂度,在这样的前提下,性能还是可以保证的。但是这个要求意味着它不能是全尺寸的操作系统,而只能是个小型的特定用途的操作系统。这也就是为什么商界的主流操作系统没有什么微内核的成功案例,但是在特定市场领域却可以看到它成功的原因。 RIM 后来才收购 QNX的,他们开始卖得火的 7230/7290 等等,用得都是自己的OS,连名字都没有,就叫 OS2.0/OS 3.0 这样子。Blackberry 由盛转衰的原因之一就是决定用 QNX 代替自己的 OS,这个过程花了太长的时间,占用了公司太多资源。
另外,我觉得鸿蒙能不能成功,跟微内核啥的一点关系都没有。 天下武功,唯快不破。当cpu足够快时,神马内核都无所谓。
回头看看PC的发展历程。都是先拼主频,然后多核,伴随滞后的gpu竞争。
目前的手机的cpu已足够支持正常应用,所以有些安全的额外负载并不是什么问题。
鸿蒙大可以走微软博采众长(抄袭)的路子,农村包围城市,以数量取胜。
沉个宝{:7_330:} 好奇:你对CISC vs RISC是怎么看的? 响马 发表于 2019-6-19 08:42
RIM 后来才收购 QNX的,他们开始卖得火的 7230/7290 等等,用得都是自己的OS,连名字都没有,就叫 OS2.0/OS ...
黑莓是自己把自己玩死的,具体来说就是为了赶市场时髦频繁地换操作系统和开发模式,结果把自己的软件开发商都给坑死了。
没有了软件开发商队伍的操作系统,再好也是看画,没用处的。
另外,鸿蒙能否成功的确跟是否微内核毫无关系,它的关键点在于如何吸引软件开发商,因为任何操作系统都只是应用程序的载体而已,没有足够数量以及适用的应用程序就没有任何实际意义。 雨楼 发表于 2019-6-19 08:51
天下武功,唯快不破。当cpu足够快时,神马内核都无所谓。
回头看看PC的发展历程。都是先拼主频,然后多核, ...
道理对,但是只要有竞争对手,性能差距就是要命的事情。
具体的例子就是金融业的玩trade那帮,按照理论,当CPU足够强的时候,编程语言的性能如何就无所谓了。但是现实中,C++依然吊打Java,而Java依然吊打JavaScript。 RIM收购QNX是2010年,2013年BB10推出,也不能算慢,但还是晚了,没赶上市场。现在只能向自动驾驶方向发展了。
@响马 老兵帅客 发表于 2019-6-19 10:21
道理对,但是只要有竞争对手,性能差距就是要命的事情。
具体的例子就是金融业的玩trade那帮,按照理论 ...
应用不同。你不能拿做闪速交易的和手机比。那帮家伙恨不得直接连到交易服务器上,神牛好像有篇文章就说这个的。
手机上差个几毫秒谁在乎啊?何况华为还有方舟呢? 雨楼 发表于 2019-6-19 11:04
应用不同。你不能拿做闪速交易的和手机比。那帮家伙恨不得直接连到交易服务器上,神牛好像有篇文章就说这 ...
是吗,那你为啥不拿javascript来写手机应用呢?
会死人的!
为啥,nodejs的文档说的很清楚了,它只适用于io密集程序而非计算密集程序。nodejs是谷歌的东西,那东西的性能优化做得相当好,还这样说呢。
要不您拿javascript写个AES,然后跟java写的比比性能,看差多少?
伯威 发表于 2019-6-19 19:10
说的真好。
个人意见。技术层面晨斯基那个微内核优势论一看就太扯了,作为一个Linux用户。和安卓的兼容性, ...
关于蓝绿厂给大爷大妈搬水来卖手机
段子嘛,笑一笑就好了。但是蓝绿厂能胜出小米那么多年,说明在手机行业技术不是绝对决定性的。 老兵帅客 发表于 2019-6-19 11:08
是吗,那你为啥不拿javascript来写手机应用呢?
会死人的!
Android编程是java吧?你非得扯到JavaScript。微内核是操作系统层面的,你说app编程干嘛?
应该比较的是
微内核的操作系统, 和宏内核/混合内核的比速度,性能。
比编程语言速度?你咋不用汇编呢? 老兵帅客 发表于 2019-6-19 10:19
黑莓是自己把自己玩死的,具体来说就是为了赶市场时髦频繁地换操作系统和开发模式,结果把自己的软件开发 ...
华为应该是吃死android兼容这一点的。但是系统底层可能是linux内核加自己的一些东西(比如方舟,韩国人的文件系统EROFS)做出来的。
放弃adroid的已有应用忒不明智。
这叫穿股沟的鞋,走股沟的路,让股沟无路可走~~
Google Fuchsia? 嘿嘿。。。 老兵帅客 发表于 2019-6-19 07:14
我关注的是以下几点:
第一。欧美市场而非国内市场。在欧美市场,谷歌框架是必须的,因此一旦这个授权未能 ...
第一。欧美市场而非国内市场。在欧美市场,谷歌框架是必须的,因此一旦这个授权未能达成,鸿蒙在欧美市场基本上没机会。 没了GSF就不能活了?教主会不高兴的。
第二。从技术上讲,国内目前没有能与美国公司交换的本钱,因此你所设想的互相让步基本上没可能。干嘛让步, 另立山头不行?
第三。国内市场,实际上与谷歌授权没关系,而只是使用了开源的安卓部分。因此鸿蒙在这段没有多少可以折腾的空间,因为市场已经满了。 既然国内没了gsf一样活的有滋有味,国外为什么就不行?回到第二点,同样基于android的, 兼容的,速度更快,国内控制/主导的免费手机操作系统,为什么会没有市场?
第四。亚非拉市场意义不大,因为低端用不上鸿蒙,高端则不会用它,因为涉及到主流安卓的现实。
低端?多低?功能机?那android也用不上。智能手机低端? 为什么用不上鸿蒙?
结论就是鸿蒙可以活下去,而且做大的希望很大
别忘了,华为本来是坐二望一的手机生产商。 晨枫 发表于 2019-6-19 23:03
好奇:你对CISC vs RISC是怎么看的?
CISC和RISC之争又是一个大话题。简单地说,他们哪个更优反映了不同时期技术进步的方向和速度。最早的CPU很原始,根本就没有几条指令,也就无所谓CISC与RISC。后来技术进步了,可以更大规模地集成电路,速度也快了很多。这时候人们发现把一些复杂的工作打包交给CPU去做,效率会提高很多。比如说(这里只是打一个容易被一般人理解的比喻,并非CISC和RISC真正的区别点),假设CPU只有累加器(最早的CPU也确实如此),那么当人需要做4×3的时候只能写成4+4+4。现在可以给这个原始的CPU增加一条乘法指令,只告诉它乘数和被乘数,至于CPU内部怎么把数最后算出来,那是CPU内部的事情。因为CPU内部的速度远远快于外围电路,这种增加CPU指令的做法可以极大地提高整个系统的性能。
那么RISC呢?电路的速度不能无限地提高。曾几何时,为了求快超级计算机甚至用上了ECL(发射极耦合逻辑)电路,再大幅度的提速几无空间。于是人们的眼光转向了挖潜,把CPU需要完成的复杂工作分解成一项项简单的任务,模仿制造业流水线那样分步完成。比如说某某汽车厂号称一分钟生产一辆汽车,并不是真的装配这一辆汽车只需要一分钟,而是成千上万辆汽车在流水线上滚动起来,平均就可以每分钟有一辆汽车出厂。当这种流水线模式大规模应用起来,人们发现如果每次交给CPU的工作更加简单而且整齐划一,更有利于流水线的优化,从而获得更高的速度。这就是RISC的动机,它化繁为简,砍掉CISC中很多不常用的指令,并对剩余的指令格式上规整化。有人可能会问当初那些复杂的工作怎么办?在RISC构架下,许多过去由一条复杂指令完成的工作被软件(比如说高级语言的编译器)分解和优化,转换成多条简单指令。
科技发展到今天,RISC无疑是占了上风。一些CISC的CPU,其实就只剩下CISC的一张皮了。拿最常见的Intel CPU来讲,它的CISC指令集就是为了原有的软件能够无缝运行,进入CPU后被翻译成一系列类似于RISC的微操作,然后再执行。至于将来,会不会一直RISC保持下去?老实说,我不知道。但如果再发展,一个很可能的方向是更大的并行性。回到汽车制造业,我们知道整车的装配速度会受制于发动机的生产速度。甚至更极端,受制于发动机从发动机厂运输到总装厂的时间。这种依赖性决定了汽车生产速度不能无限地提高。现在科技的进步已经可以让家用电脑CPU轻易地装备6核、8核,但我们主观感受到的速度并不是过去电脑的6倍或8倍,其原因就在于这种依赖性。提高并行度,也就是减弱这种相互依赖关系,无疑可以使电脑的性能又上新台阶。有意思的是,信息在人脑中流动是并行的,它被表达出来(无论是人类自然语言还是计算机语言)却是一个串行的过程。这种串行的东西有时候平添了很多不必要的依赖性(或者术语上下文相关)。然后再到CPU执行时又是越并行越好。这种并->串->并的转换现在是必要的,将来也许是革命的着力点。 雨楼 发表于 2019-6-19 14:38
Android编程是java吧?你非得扯到JavaScript。微内核是操作系统层面的,你说app编程干嘛?
应该比较的是
...
安卓系统编程不是java,否则性能就没法要了。微内核与其他内核比速度,怎么可能赢呢,系统开销在那里呢。
linux以及android都不是微内核的,这就是结果。