本
文
摘
要
未来的操作系统是什么样?
操作系统
内核之争,传统的宏内核与架构先进的微内核对比。传统的宏内核是一个大内核,所有能塞进内核的都塞进内核而微内核则不一样:除了最底层的必要代码外其它的都可以扔进用户太以服务进程的方式去调用。顾名思义这也就理解了什么是微内核什么是宏内核,这里要强调一点,著名的linux创始人linus和minix的创始人Andrew S. Tanenbaum曾经就宏内核与微内核展开过激烈讨论。首先是Linus承认了微内核在架构上的先进之处,说要是GNU hurd早之前搞出来他也就没必要搞linux,但直到现在GNU hurd一直都胎死腹中。其次就是minix这种采用微内核的操作系统目前也有很多地方不完美 ,Andrew S则说是由于当时英特尔的CPU 糟糕设计所致!
其实,从美学或者系统学的角度来讲微内核的设计架构是有它的过人之处的(linus在与Andrew S之争论中也提到过)但对linus这样的极客来讲性能效率大于一切,他有一句名言:Talk is cheap,show me the code 。
不过就目前来看微内核在短期内效率上还是无法媲美宏内核,传统的宏内核进程间通讯主要采用的是系统调用,而微内核则依靠IPC。IPC的效率相比函数调用差的不是一点半点儿,但随时计算机技术的发展这个难点迟早会被攻破。
目前的操作系统在技术架构实现上,都有相互借鉴。linux的宏内核也借鉴了不少微内核的思想,所以大概除了Linux其它的操作系统目前应该都采用的是混合内核,如:MAC的OS X 、IOS 微软的WINDOWS 、GOOGLE的ANDRIOD 等 。
不得不说的是随着5G的加速到来,操作系统应用场景的多元化、未来能在全场景上运行的OS越来越成为下一个技术的风口,华为近来发布的鸿蒙操作系统号称采用的全新的微内核设计模式,进程间通讯效率相比传统的IPC提高了5-8倍。是一款全新的基于万物互联时代打造的全场景分布式操作系统。设计相当代感,从发布会上看目前HarmonyOS 底层是采用linux内核、Harmony内核、LiteOS内核这样的三级并存架构。未来将摒弃linux内核从而实现Harmony内核一统天下,不过这些都有待于时间的考验,包括操作系统设计的合理性、生态的完善性、未来的可持续性等等从而看是否能形成最终的用户粘性。
为什么华为发布会时会提及到普通用户根本不了解的“微内核”字眼做为宣传点?
其一:目前来讲微内核在设计模式上已经战胜了宏内核,结束了战争。
其二:目前业界没有拿的出手的成熟微内核操作系统。
为什么说微内核在设计上比较优秀呢?
据调查:现在的linux内核已经千万行级别代码,大概有2000多万行代码,其中各种驱动代码就占用了1000多万行。相比微内核的内核代码就小很多了必千行搞定。众所周知,Linux一直以来都以安全著称,但微内核在安全方面可以做的更好。大家都知道,没有绝对的安全,代码量越大容易出bug的地方就越多,1000行代码出一个bug也就是所谓的千行代码bug率。而Linux这种大内核动轧几千万行这其中存在多少未知?尤其是一些古老驱动,如果崩一个那岂不是整个内核都挂掉了。而几千行代码量的微内核则不会出现这种问题,这将大量的代码都丢到了用户态去了。驱动、包括文件系统都可以不写进内核,这样即使突然挂掉了一个服务,整个内核依然纹丝不动。真正做到了坚如磐石!而且由于内核代码量小,可行性验证容易做,从数学上容易证明。这样,日后说不定我们真就出了绝对意义上的0 bug系统!
讲到这里说个题外话,以前我们使用windows电脑系统的时候大多都经历过蓝屏或其它一些bug的现象吧,从而破口大骂微软。其中本质上来讲其中大部分原因有时都不是微软的锅。你不能说它系统设计的不好吧,因为那是其它三方驱动或软件惹的事儿!但再稍微深入一点,从设计层面来讲这真不是微软的锅吗?“我不提供自杀的刀,但你们的刀可以捅死我!”
这也从侧面反应了,即使再好的系统也会面临一些不确定性!你可以说你的很好,但你不能保证它几周以后、几个月以后、甚至几年以后都还好的状态。随着一些不确定性的暴露出现,你需要不停的打补丁。你每打一个补丁,从数学的角度来讲系统的复杂度就上升了一点,不确定性也就增加了。所以补丁是打不完的。只有从根本上从头设计、从头进行验证才能确保相对完美,但这似乎不太符合现在的商业环境。
我们都知道计算机的出现使我们人类迈入了信息时代,最开始的计算机就是用来帮助我们人类计算不确定的问题为确定!从未知探索到已知,从复杂演化为简单。所以究其本质计算机本身的软件操作系统可以实现的更加确定些,也许以后的AI系统会实现吧。
如果不理解确定性和不确定性预判,举个例子简单说明:“假设我们有2部智能手机,一部A 一部B,A比B智能,2部手机上有无数的APP可供测试。”,拿一个事件为说吧,我们在A手机上不断重复打开运行APP 而不清理后台,在B手机上同样操作。得到的结果是:A手机将无限运行下去,B手机因内在耗尽将卡死!从这一个简单的事件上来类比,将这样的局部实现功能放大到全局。得出的结论就是,A是一台有智慧的智能手机,B是一台平淡的智能手机!A将用户是否清理后台习惯这一事件做了准确的预判从而提供了机制,B则没有。
乍一看这是一个非常小的内存优化机制也就是我们平常所说的伪后台但为什么一开始只有苹果考虑到了呢?安卓则依然是传统PC端那套真后台。如果将它放大到全局那就是人工智能手机了。我们剥开来看,为什么同样一个事件造成A B两种不同的结果。那就是因为B手机没有实现对用户使用习惯的精准预测,它需要用户使用一段时间就去手动清理下内存。而A手机呢,正是因为预判了用户的这种使用习惯从而实现自我内存管理,当app启动过多内存管理将自动释放前一级app所占有的内存,这样就算用户一直按下去也感觉不到机器卡,从而实现了优秀的用户体验。这两个对比也恰如ios和android,这就是给人造成了一种印象,用苹果的手机流畅不卡,用安卓的使用一段时间就会卡这一现象。事实上安卓在某些配置上还高于苹果(即使现在安卓也不卡了哈,但低端安卓机依然难逃此命运)这一事件的过程抽象出来,可以理解为,A实现了对用户使用习惯的精准预判,B则没有。所以本质上来讲是有不同区别的,任正非曾说过苹果本质上是一家软件公司。
再说一个题外话:现在的安卓智能电视在系统层面优化实在是差劲,本质上电视不同于手机,为什么不在底层限制APP 应用进程呢?如果说安卓手机上使用真后台是因为手机与人交互的复杂性,那么在电视端,照搬手机的交互逻辑那就是厂商有义而为之喽。试想一下,一台电视只要1G或者最多2G的运存就可以拥有流畅的观看体验。其中关于国内的电视广告也是强制满天飞,要不是华为荣耀智屏的推出也不会促进小米取消电视开机广告,毕竟这是多么大的蛋糕呀。
奇怪的是目前的PC系统几乎没有优化出所谓AI的影子,假如我提一个需要,你来实现吧,哈哈:我需要一台终端设备(不论是电脑、手机还是其它)它的操作系统无论我怎么操作都不会死机、卡机、或者超出规定时间的延时,简单来讲不论我怎么操作它都永远一如既往的平稳、高效地运行直至世界灭亡!
如果未来真出现了一款坚如磐石且高度智能的操作系统,那一定是采用微内核的!