鸿蒙开始于 2012 年,虽一开始定位于物联网方向,但到如今,已经发展为一款可兼容 Android 应用的跨平台操作系统. 最新的 2.0 的官方描述是: HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统一的语言。带来简洁,流畅,连续,安全可靠的全场景交互体验。
要彻底了解微内核,还得先说到Minix(上篇有提到)和Darwin(macOS,IOS 的内核),都是UnixLike(类 Unix)操作系统.
上文我们了解到, 1969年AT&T公司(贝尔实验室)开发Unics, 1973年用 C语言重写后正式命名为 Unix, 后来AT&T意识到了Unix的商业价值, 在1979 年发布 Unix Version 7之后, 不再将Unix源码授权给学术机构,并对之前的Unix及其变种声明了著作权权利. 而这期间, BSD 其实已经有了很大发展了.
BSD 全称 Berkeley Software Distribution, 也被称为伯克利Unix或Berkeley Unix, 1970年代由伯克利加州大学的学生Bill Joy(比尔·乔伊)开创, BSD许可证非常地宽松,因此BSD常被当作工作站级别的Unix系统,也被用来代表其派生出的各种包. 许多1980年代成立的计算机公司都从BSD中获益.
1974 年第一个Berkeley的 Unix 系统被安装在迷你电脑(PDP-11)上,计算机科学系便开始将其作为扩展研究.而后发展为 1BSD,2BSD,3BSD 直到4.4BSD,这其中 4.3BSD 及之前版本都混合了专属的AT&T UNIX代码,也就需要当时非常昂贵的AT&T 的许可证.
一些其他组织对单独的网络版感兴趣,完全独立于AT&T,不受许可证的支配. 1989年6月,相应的Net/1 诞生,没有 AT&T 许可证,但是发展到 Net/2 就被 AT&T 在 1992 正式提起诉讼了,这桩诉讼直到 1994 年 1 月了结,到 6 月,4.4BSD以两种形式发布:可自由再发布的4.4BSD-Lite,不包含AT&T源码;另有4.4BSD-Encumbered,遵照AT&T的许可证。1995 年开发团队解散; 之后几种基于4.4BSD的包,如FreeBSD、OpenBSD和NetBSD都基于4.4BSD-Lite 继续维护.
上篇中已经了解到,Unix 版权之争,也导致 Minix 和 linux 得以开发和发展起来,而这期间其实还有一个叫 Mach 的项目也得到了发展,由卡内基梅隆大学从 1985 年开发并运行到 1994 年, 到 Mach3.0 版本结束, 也就是 Unix 版权之争愈演愈烈的那几年. Mach的开发就是为了取代BSD的传统UNIX内核出现的, 所以就成了之后的许多新操作系统的设计基础。Mach之所以突出,是因为其首倡的微核心结构. Linux 的参考者Minix 在 3.x 也被采用微内核架构进行了重写.与微内核对应的就是宏内核,大名鼎鼎的 Linux 就是使用的宏内核架构,上篇对 Linux 有所介绍,这里就不多说了, 对微内核继承最好的便是乔布斯的苹果电脑的 MacOS和苹果手机的 iOS 了.
现在我大致了解一下 MacOS 的发展历程.
1985 年乔布斯离开苹果电脑后创立的公司叫 NeXT, NeXT 公司开发的操作系统叫NeXTStep,这套系统是以Mach和BSD为基础,以Objective-C作为原生语言,具有很先进的GUI(Graphical User Interface, 图形用户界面).
1989 年 9 月 NeXTStep1.0 推出,直到 3.3 版本, 除了主要用于自家的电脑,以及后面也可以运行在 IBM,Sun 等部分平台上.
1997 年 2月苹果公司将 NeXT 买下,也就是乔布斯又回归之后,NeXTStep 就成为了 MacOSX 的基础. 这里还可顺便提一下, 世界上第一台 WWW Server(即万维网服务器)是姆·伯纳斯-李在一台 NeXT个人电脑上架出来的,第一个网络浏览器(直接叫 WorldWideWeb)也是以 NeXTStep 为操作系统所开发出来的.
macOS 在 2011 年之前称 MacOS X,2012 年至 2015 年称 OS X, 到 2016 年 6 月更名为 macOS, 以便与苹果其他操作系统 iOS、watchOS 和 tvOS 保持统一的命名风格。最新版本 macOS Big Sur 已于 2020 年 6 月 23 日发布.
macOS 包含两个主要的部分:核心名为 Darwin,是以 BSD 源代码和 Mach 微核心为基础,由苹果公司于 2002 年 4 月开源,以和独立开发者社区合作开发;及一个由苹果公司开发,名为 Aqua 的专利的图形用户界面.
所以,本质上来看, macOS(iOS,watchOS,tvOS)是由开源的 Darwin +自家闭源的相关 GUI 服务组成, 这和各家的安卓系统是由开源的 AOSP+各自相应的 UI(GMS,MIUI 等) 服务组成是一样的模式,到这里,也就更能理解 HarmonyOS 也被处理成 OpenHarmony +相应的 HMS 服务的模式了吧.
操作系统(Operation System, 缩写:OS) 是管理计算机硬件与软件资源的系统软件,位于底层硬件与用户之间,是两者沟通的桥梁。负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面, 有命令行界面和图形界面两种, 用户可以通过此界面, 输入命令, 操作系统则对命令进行解释, 驱动硬件设备, 实现用户要求。以现代标准而言, 一个标准PC的操作系统应该提供以下的功能:
对于完全的普通用而言, 最直观的是界面(桌面)系统,以及上层的应用程序, 其他的资源处理等等则都是被系统封装的黑盒. 就读者阅读这篇文章而言, 是在今日头条 App 或者浏览器上进行的,这些都是应用程序,而你所用的手机后电脑则是硬件集合, 此三者的关系如图:
应用系统硬件关系
再来看看内核的定义: “内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。
简单来说,内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。
内核示意图
我们再来看看内核的分类, 其实主要是有宏内核(也叫单内核)和微内核, 在此基础上,还有混合内核,外内核等分类, 混合内核可以理解是为了追求性能,对宏内核和微内核做了一些折中,如MacOSX,windowsNT,但都宣称采用微核心架构; 外内核是一种比较极端的设计方法,其理念是让用户程序的设计者来决定硬件接口的设计,这个也就不多聊了.
我们就重点来了解一下宏内核和微内核是什么?
宏内核(Monolithic kernel)架构的特性是整个内核程序是一个单一二进制可执行文件,在内核态以监管者模式(Supervisor Mode)来运行。是这样, 就像我们上面提到的内存,文件,驱动,IO 等等,每个功能被当做一个模块,全部集合在一起运行在内核进程中, 这些模块直接的交互是直接通过方法(函数)调用. 如下图:
宏内核示意图
微内核(Microkernel)架构的特性就是尽可能精简的精简程序,以实现一个操作系统所必要的最基本功能,包括线程调度,进程管理,中断处理. 其他的模块都移出内核,这就使得内核中最核心的功能,设计上变的更简单。让服务各自独立,可以减少耦合度,易于实现与调试,增加可移植性。这样某单一组件失效,既不影响内核也不会影响其他模块, 内核只需要重启这个这个模块。同时,也可以视需要抽换或新增某些服务进程,这样整个系统更加稳定和富有弹性.如图:
微内核示意图
在微内核架构下,还创建了一套进程间通信,通过消息列队传递的这种机制来让各模块进程间互换消息,调用服务,以及完成同步。采用主从式架构,使得它在分布式系统中有特别的优势,因为远程系统与本地进程间,可以采用同一套进程间通信机制。
总结一下,宏内核是模块集成在一起,而微内核是模块间分离。对比如下:
|
宏内核 |
微内核 |
通信效率 |
搞(函数调用) |
低(进程通信) |
稳定性 |
低(模块集成一损俱损) |
高(模块独立互不影响) |
扩展性 |
低(模块集成一损俱损) |
高(模块独立互不影响) |
代码量 |
多(需实现所有模块) |
少(只实现核心机能) |
从前面描述中我们也知道, 微内核出现的较晚(1985年 Mach 首倡),实际上在后续的发展中宏内核和微内核相互间都有借鉴, 也就是为什么会有混合内核,超微内核等等, 细究的话,也同样有着业界的互喷现象.这里我们不深究,懂得即可; 我们继续来看微内核, 其天生在分布式系统中有优势; 分布式系统是指一组电脑,透过网络相互连接传递消息通信后并协调它们的行为而形成的系统。所以到此刻我也知道华为 HarmonyOS 采用微内核架构也是一种必然了. 我们还知道它的内核层还有一个 LiteOS, 就是一个轻量级的物联网操作系统,最小内核尺寸甚至仅为6KB,具备快速启动、低功耗等优势. 下面这个是鸿蒙的系统架构图:
至此,我们也就基本明白了, 鸿蒙操作系统的内核层是怎么回事了. 加上上一篇,我们也就基本明白了, 关于鸿蒙里的 Linux内核, 微内核,分布式,LiteOS 以及如何兼容安卓等核心问题.
其实本来上对于任何一件事物, 我们既要了解它的发展历程,从而也去思考它的未来期许, 对于那些无脑喷,我是真有点不能理解的,只能说明要么脑瓜确实有问题要么动机有问题.
比如, 说是有的程序员也来喷, 我特别好奇, 打开鸿蒙的开发者网站, 比安卓那边明显的多了一个设备开发的入口, 只要多想一下, 其实不难想到这个系统的思路完全有了不同的变化, 否则安卓为什么不这样做呢?甚至我们早就知道了谷歌还把精力分到了 ChromeOS 和 FuchsiaOS 这其他的操作系统上呢?还去秀你的什么命令,去向外行证明什么套壳之类的喷骂?难道是真的不明白就算是一个上层 App 也有架构演进的过程吗?真的不明白安卓作为开源项目的 AOSP 代表着什么吗? 如果仅仅是套个壳,工信部那帮人真的是啥都不懂吗?如果仅仅是复制修改,谷歌想要追责就没办法了吗?谷歌是怎么封杀的阿里云OS?还是说华为的那帮工程师全是没脸没皮,开源出来等着这种人来喷吗?还是说...
上面这一堆疑问其实也引出了另外一个话题, 就是鸿蒙的多设备链接的物联网,1+8+N 的生态. 从这两篇系统内核的介绍中, 我们也了解了操作系统的发展本身也是一个场景需求变化的演进发展的过程.从早期大型工业电脑系统,到个人桌面系统,再到手机便携系统,如今的万物互联HarmonyOS. 事实上鸿蒙不是第一个物联网操作系统,就想刚刚提到了阿里云OS, 除了谷歌封杀, 也同样有人认为是它出生太早了,所以对于这样的一个新系统而已,其实最要关注的应该是它的生态问题,这才是决定性的.