我希望我能给你介绍一个不同的鸿蒙系统操作系统。什么软公交,什么在鸿蒙系统发布会上散发迷雾。要理解这些名词,你只需要理解微内核。
关于微内核,这个东西一直是学术界的宠儿,而不是工业界的宠儿。以应用为代表的Linux之父,从技术角度涌出微内核。
www.lupaworld.com
经过几代的发展,微内核已经发展到了seL4,这个L4太神奇了。它是人类历史上第一个被正式证明的操作系统[1]。
简单来说,从逻辑上证明这个操作系统是无Bug和无Bug的。为什么Linux不行?哈哈,很简单。内核太复杂了。没有办法证明这是人类力所不及的。所谓成功也是萧何,失败也是我。微内核的简单性使其高度安全。但是.
核心只保留基本的资源管理:处理器时间、内存、通信、中断等。所有其他功能都被抛出到应用层管理,以服务的形式提供功能。服务之间使用IPC通信,即进程间通信。对比seL4和Linux的架构图不难发现,Linux是一个什么都有的宏内核,seL4的一切似乎都被安排在了用户空间。因为这个原因,seL4的核心非常小,不到9000行C代码。每个内核都有自己的优势。
SeL4系统架构。
Linux的宏内核架构
对于微内核,由于进程空间(内存区域)被MMU(内存管理单元)隔离和保护,未经授权的进程无法访问其他进程的空间。这可以防止恶意程序从其他进程窃取数据。进程是操作系统的抽象概念。简单地说,每个进程运行一段用户编写的代码。从这段代码来看,它似乎有自己的CPU和所有资源(内存、设备等)。).当然,我们都知道这是操作系统造成的错觉。当一个进程需要额外的资源时,它必须应用于操作系统。要与其他进程通信,您必须应用操作系统。哈哈,看起来有点啰嗦,其实比看起来还要啰嗦。但好处不言而喻。没有许可你不能做任何事。想做坏事,好!收回你所有的资源。让我们下定决心。想想用Windows Ctrl Alt del杀死没有响应的程序。了解一下Linux下的Kill -9。
微内核甚至驱动可能是面向进程的,也就是说只有内核不能重启,其他所有组件都可以重启。看着很刺激,但实际上可能是最后一道防线,实际上并不需要。系统不可能用重启Bug的驱动运行,不会导致系统崩溃,但是用户不买。这对写驱动的程序员来说是个好消息,至少杀内核不容易。可以反复调试发现问题。啊,安全!
在微内核的管理下,用户进程必须请求内核存储一些东西,内核将数据抛出到文件系统的进程中进行处理。由于这种MMU封锁过于严格,早期的方法不得不将数据从用户进程移动到文件系统进程。这个过程非常耗时。可惜没有好办法突破MMU的保护。这是微内核性能低下的主要原因。
另一方面,Linux内核,如果驱动不好,杀内核是常事。但是因为文件系统都在内核中,相对来说内核可以直接访问用户空间中的数据。Linux用系统调用代替了IPC,比IPC快。然后就是Linux下的IPC,呵呵,可惜的是,Linux下的IPC性能并不好。但是Linux不依赖IPC通信,微内核依赖。因此,微内核没有理由争论这个问题。
因为脚跟IPC没有泡在冥河的水里,被Linux的宏内核吊死了。我该怎么办?学术界也没有闲着,想了很多办法。L4提出了一种Fast IPC的方法,只要你的IPC通信中没有数据,就可以使用CPU内核寄存器来传递消息,速度大大加快。有一头牛在2017年想到了Dipc,直接IPC[2]
。用标签内存的办法进行隔离,传递数据,无需通过内核空间。大大加快了通讯速度。但标签内存这个玩意,不符合现在计算机体系的架构,实践中,采用的可能性较小。
下面牛人登场,上交的陈海波教授团队,19年想了两个办法进行IPC的加速。一个是XPC[3],一个是Skybridge[4]。传闻他是华为鸿蒙的核心人物。这两个方法XPC是硬件的,增加了一点点CPU硬件修改,使得IPC通讯无需内核的参与,也无需数据拷贝;Skybridge,采用双内核的办法,一个RootKernel,类似type-1的虚化,专门负责IPC数据通讯,上层的Kernel为微内核。这样IPC绕过了MMU 机制,也不会对微内核之上的MMU保护机制产生破坏。在IPC通讯的时候,无内核参与,无需拷贝。这可不是共享内存的老技术,共享内存访问没有权限约束,会引入Time-Of-Check-To-Time-Of-Use, TOCTTOU 的问题。
我们来看看Android的架构,Android因为采用了非常多的服务,非常依赖于IPC通讯,这不同于普通的应用。为了提高速度,开发了IPC Binder Drivers 来加速 Linux下的IPC通讯。结果呢?效果还是不太满意。我们来看看XPC对Binder IPC的加速。也就是50多倍吧,哈哈。
17年的dIPC也是吊打Linux的 IPC。
SkyBridge应该和dIPC处于同一性能级别,略差。XPC要更高。从论文上看,SkyBridge更实用一些,未来XPC还依赖于硬件的革新。
目前市场上还是宏内核的天下,如Linux、Unix、Windows等,微内核商业上较为有名气的可算是QNX。好在巨头们都看到了微内核的进步,Google搞了Fuchsia OS (内核Zircon),华为搞了鸿蒙,苹果MAC和IOS也号称微内核,微软搞混合内核。一时间好不热闹。我个人坚信微内核是未来的方向,尤其是华为手握CPU的设计和操作系统的设计,想做个带硬件优化的高性能系统并非难事。此举会引领学界和产业界对微内核的一个小高潮。
微内核因为比较小,不到1万行C代码。只要处理器支持MMU,应该就可以跑出微内核的全特性。服务是可扩展的,依据不同的应用上不同的服务就好,有点像USB热拔插,现在电脑没有光驱、硬盘、打印机等,用USB扩呗。这也决定着,微内核可以在各种场景下见到它的身影。手机,上面弄个Android Binder,堆上相关的库就可以跑Android;服务器,上面弄个Type-2的虚化或者容器,就可以跑各种各样的服务。嵌入式,嗯,当然,体积不是问题,应用更不是问题。
华为这次的发力,真正的用一种操作系统内核统一了大多数应用场景。配上他们自家的开发工具,相信应该是很好用的。对于华为的开源,还有鸿蒙的未来发展。我持乐观态度,毕竟中国市场问题不大。活下来,发展起来只是时间问题。同时,推动微内核的发展,这是一个开启新纪元的大事。
文无第一,武无第二。操作系统领域也是。产业用什么往往并不代表那就是方向,要结合行业支撑发展和行业应用的发展看。紧跟时代潮流,我们错过两次工业革命,难道再错过第三次吗?
操作系统这个领域,是国人研究的弱项,为什么?
首先是这个领域是基础领域,已经被研究得太多了,没办法,研究的点很难找。想发一篇像样的论文毕业,太难太难,这也使得很多人不愿意选择这个领域;
其次,操作系统是一个工程性非常强的领域,你说那么多废话有啥用,来写个系统跑跑看?MMU的各种切换,内存的各种管理,各种调度算法,各种虚化……虽然可以用流程图画完,估计没几个能坚持下来,更不用说兑换成相应的代码了。算法不仅要正确,一堆工程细节,实现起来痛不欲生。调试异常困难。需要非常好的抽象和分析能力。
最后,企业们都知道,拿来主义好。早年用uC/OS-II,商业偷着用。后来改用FreeRTOS。做应用的企业都明白,操作系统不是最终产品,花那么多精力在底层上,是吃饱了撑的吗?所以,很少企业投入这块。加之国内的知识付费,软件付费的氛围,导致这块没有利润,就活不下来。
企业没需求,学生毕业没工作;学界需要论文,要成果。大家都不愿意搞这个领域,其结果就是我们在这个领域的落后。
现在,鹅厂搞了一个物联网的OS,与FreeRTOS这种核心类似,主要目的也不是发展操作系统,而是推自家的云平台。阿里也是。不过,至少,这些大企业意识到,这种基础软件的支撑意义。
大家都知道Linux。这个系统大都跑在有MMU的处理器上,(早年有uCLinux,现在Linux也可裁剪跑在无MMU的系统上。不过不是主流。),物联网就覆盖不到。怎么办?Linux基金会又搞了个 Zephyr,和 Linux 高低搭配,准备统治世界。
但是物联网的应用比手机到服务器的变化还要大,怎么去适配呢?各个公司都拿出自己的本事,。想把世界一口吃下,奈何市场并不买账。这里面有很多原因。但都做出了自己的尝试,取得了一些效果。
微内核是多少年人们对操作系统领域的总结,提炼。大家认识到,浓缩的一定要是精华。把操作系统内核最核心的功能提炼出来以后固定下来,上面的服务,那就一花一世界,一叶一菩提啦。这个好处就是,大家的根是一样的,通用。
Android是跑在Android Binder上的,下面是Linux还是Unix,什么x都不重要,重要的是提供的API的行为是一致的。所以微内核是可以统一大部分软件系统的底层的。理论实践都没啥大问题。
微内核的确有一些性能上的瓶颈,但学界已经在努力,工业界已经开始在破冰。这都是好的迹象。且,像华为这样的企业,自己拥有CPU的设计能力,设计一个微内核的加速硬件模块,并不是难事,可以直接把微内核送上天。反正手机底层是封闭的。其他的领域,比如说车载、军事、服务器,有些地方都是超高可靠性的领域。非微内核不能。
可以看出来,华为真的是用心做事情,有一些大厂搭着仿制内核推自己的云就不说了。
首先选择不选择一个生态,开发者主要还是看当下和未来,自己的投资和产出比是否值得。华为手机市场占有率摆在那里,Android上的应用都能被复用到鸿蒙上,用不用在手机上只是一个核心而已。当然Linux的应用也可以跑在鸿蒙上。参考Linux下的 WINE,可以把windows下的应用程序跑在Linux下。幸亏Windows没开源,开源的话,Linux + WINE 真的扫平家用电脑了。鸿蒙是可以复用其他生态发展自己的。国内缺大旗。当下、未来都没啥大障碍。
其次,好用的工具链,让生态发展起来增色不少。发展生态这个,要学毛主席的抗日统一民族战线,团结可以团结的一切力量。好用的工具链让稍微受过专业训练的人都可以来开发,支持更高级别的语言,不要陷入无谓的工程细节。
最后,华为的管理者们也有意识地去推广鸿蒙,很大的格局去做这个事,撒了很多钱给开发者开发上面的应用。扫除当前的投入产出比障碍,未来投入产出比可期,吸引开发者。
多管齐下,发展不会不好,相信华为领导深谙此道,别问我怎么知道的。人力牛叉的公司,发展一定不差!
[1]Gerwin Klein, Kevin Elphinstone, GernotHeiser, June Andronick, David Cock, Philip Derrin, Dhammika Elkaduwe, KaiEngelhardt, Rafal Kolanski, Michael Norrish, Thomas Sewell, Harvey Tuch, andSimon Winwood. 2009. seL4: formal verification of an OS kernel. In Proceedings of theACM SIGOPS 22nd symposium on Operating systems principles (SOSP'09). ACM, New York, NY, USA, 207-220. DOI: https://doi.org/10.1145/1629575.1629596
[2] Lluís Vilanova, Marc Jordà, Nacho Navarro, Yoav Etsion, and MateoValero. 2017. Direct Inter-Process Communication (dIPC): Repurposing the CODOMsArchitecture to Accelerate IPC. In Proceedings of the Twelfth European Conference on ComputerSystems (EuroSys '17). ACM, New York, NY, USA, 16-31. DOI:https://doi.org/10.1145/3064176.3064197
[3]Dong Du, Zhichao Hua, Yubin Xia, BinyuZang, and Haibo Chen. 2019. XPC: architectural support for secure andefficient cross process call. In Proceedings of the 46th InternationalSymposium on Computer Architecture (ISCA '19). ACM, New York, NY, USA,671-684. DOI: https://doi.org/10.1145/3307650.3322218
[4]Zeyu Mi, Dingji Li,Zihan Yang, Xinran Wang, and Haibo Chen. 2019. SkyBridge: Fast and SecureInter-Process Communication for Microkernels. In Proceedings of theFourteenth EuroSys Conference 2019 (EuroSys '19). ACM, New York, NY, USA,Article 9, 15 pages. DOI: https://doi.org/10.1145/3302424.3303946
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/141523.html