鴻蒙開始于 2012 年,雖一開始定位于物聯(lián)網(wǎng)方向,但到如今,已經(jīng)發(fā)展為一款可兼容 Android 應(yīng)用的跨平臺操作系統(tǒng). 最新的 2.0 的官方描述是: HarmonyOS 是新一代的智能終端操作系統(tǒng),為不同設(shè)備的智能化、互聯(lián)與協(xié)同提供了統(tǒng)一的語言。帶來簡潔,流暢,連續(xù),安全可靠的全場景交互體驗。
Unix 版權(quán)之爭
要徹底了解微內(nèi)核,還得先說到Minix(上篇有提到)和Darwin(macOS,IOS 的內(nèi)核),都是UnixLike(類 Unix)操作系統(tǒng).
上文我們了解到, 1969年AT&T公司(貝爾實驗室)開發(fā)Unics, 1973年用 C語言重寫后正式命名為 Unix, 后來AT&T意識到了Unix的商業(yè)價值, 在1979 年發(fā)布 Unix Version 7之后, 不再將Unix源碼授權(quán)給學(xué)術(shù)機構(gòu),并對之前的Unix及其變種聲明了著作權(quán)權(quán)利. 而這期間, BSD 其實已經(jīng)有了很大發(fā)展了.
BSD 全稱 Berkeley Software Distribution, 也被稱為伯克利Unix或Berkeley Unix, 1970年代由伯克利加州大學(xué)的學(xué)生Bill Joy(比爾·喬伊)開創(chuàng), BSD許可證非常地寬松,因此BSD常被當(dāng)作工作站級別的Unix系統(tǒng),也被用來代表其派生出的各種包. 許多1980年代成立的計算機公司都從BSD中獲益.
1974 年第一個Berkeley的 Unix 系統(tǒng)被安裝在迷你電腦(PDP-11)上,計算機科學(xué)系便開始將其作為擴展研究.而后發(fā)展為 1BSD,2BSD,3BSD 直到4.4BSD,這其中 4.3BSD 及之前版本都混合了專屬的AT&T UNIX代碼,也就需要當(dāng)時非常昂貴的AT&T 的許可證.
一些其他組織對單獨的網(wǎng)絡(luò)版感興趣,完全獨立于AT&T,不受許可證的支配. 1989年6月,相應(yīng)的Net/1 誕生,沒有 AT&T 許可證,但是發(fā)展到 Net/2 就被 AT&T 在 1992 正式提起訴訟了,這樁訴訟直到 1994 年 1 月了結(jié),到 6 月,4.4BSD以兩種形式發(fā)布:可自由再發(fā)布的4.4BSD-Lite,不包含AT&T源碼;另有4.4BSD-Encumbered,遵照AT&T的許可證。1995 年開發(fā)團隊解散; 之后幾種基于4.4BSD的包,如FreeBSD、OpenBSD和NetBSD都基于4.4BSD-Lite 繼續(xù)維護.
微內(nèi)核架構(gòu)項目的發(fā)展
上篇中已經(jīng)了解到,Unix 版權(quán)之爭,也導(dǎo)致 Minix 和 linux 得以開發(fā)和發(fā)展起來,而這期間其實還有一個叫 Mach 的項目也得到了發(fā)展,由卡內(nèi)基梅隆大學(xué)從 1985 年開發(fā)并運行到 1994 年, 到 Mach3.0 版本結(jié)束, 也就是 Unix 版權(quán)之爭愈演愈烈的那幾年. Mach的開發(fā)就是為了取代BSD的傳統(tǒng)UNIX內(nèi)核出現(xiàn)的, 所以就成了之后的許多新操作系統(tǒng)的設(shè)計基礎(chǔ)。Mach之所以突出,是因為其首倡的微核心結(jié)構(gòu). Linux 的參考者Minix 在 3.x 也被采用微內(nèi)核架構(gòu)進行了重寫.與微內(nèi)核對應(yīng)的就是宏內(nèi)核,大名鼎鼎的 Linux 就是使用的宏內(nèi)核架構(gòu),上篇對 Linux 有所介紹,這里就不多說了, 對微內(nèi)核繼承最好的便是喬布斯的蘋果電腦的 MacOS和蘋果手機的 iOS 了.
現(xiàn)在我大致了解一下 MacOS 的發(fā)展歷程.
1985 年喬布斯離開蘋果電腦后創(chuàng)立的公司叫 NeXT, NeXT 公司開發(fā)的操作系統(tǒng)叫NeXTStep,這套系統(tǒng)是以Mach和BSD為基礎(chǔ),以O(shè)bjective-C作為原生語言,具有很先進的GUI(Graphical User Interface, 圖形用戶界面).
1989 年 9 月 NeXTStep1.0 推出,直到 3.3 版本, 除了主要用于自家的電腦,以及后面也可以運行在 IBM,Sun 等部分平臺上.
1997 年 2月蘋果公司將 NeXT 買下,也就是喬布斯又回歸之后,NeXTStep 就成為了 MacOSX 的基礎(chǔ). 這里還可順便提一下, 世界上第一臺 WWW Server(即萬維網(wǎng)服務(wù)器)是姆·伯納斯-李在一臺 NeXT個人電腦上架出來的,第一個網(wǎng)絡(luò)瀏覽器(直接叫 WorldWideWeb)也是以 NeXTStep 為操作系統(tǒng)所開發(fā)出來的.
macOS 在 2011 年之前稱 MacOS X,2012 年至 2015 年稱 OS X, 到 2016 年 6 月更名為 macOS, 以便與蘋果其他操作系統(tǒng) iOS、watchOS 和 tvOS 保持統(tǒng)一的命名風(fēng)格。最新版本 macOS Big Sur 已于 2020 年 6 月 23 日發(fā)布.
macOS 包含兩個主要的部分:核心名為 Darwin,是以 BSD 源代碼和 Mach 微核心為基礎(chǔ),由蘋果公司于 2002 年 4 月開源,以和獨立開發(fā)者社區(qū)合作開發(fā);及一個由蘋果公司開發(fā),名為 Aqua 的專利的圖形用戶界面.
所以,本質(zhì)上來看, macOS(iOS,watchOS,tvOS)是由開源的 Darwin +自家閉源的相關(guān) GUI 服務(wù)組成, 這和各家的安卓系統(tǒng)是由開源的 AOSP+各自相應(yīng)的 UI(GMS,MIUI 等) 服務(wù)組成是一樣的模式,到這里,也就更能理解 HarmonyOS 也被處理成 OpenHarmony +相應(yīng)的 HMS 服務(wù)的模式了吧.
操作系統(tǒng)和內(nèi)核
操作系統(tǒng)(Operation System, 縮寫:OS) 是管理計算機硬件與軟件資源的系統(tǒng)軟件,位于底層硬件與用戶之間,是兩者溝通的橋梁。負責(zé)管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本事務(wù)。操作系統(tǒng)也提供一個讓用戶與系統(tǒng)交互的操作界面, 有命令行界面和圖形界面兩種, 用戶可以通過此界面, 輸入命令, 操作系統(tǒng)則對命令進行解釋, 驅(qū)動硬件設(shè)備, 實現(xiàn)用戶要求。以現(xiàn)代標(biāo)準而言, 一個標(biāo)準PC的操作系統(tǒng)應(yīng)該提供以下的功能:
- 進程管理(Processing management)和 線程管理(Thread management)
- 內(nèi)存管理(Memory management)
- 驅(qū)動程序(Device drivers)
- 文件系統(tǒng)(File system)
- 網(wǎng)絡(luò)通信(Networking)
- 安全機制(Security)
- 用戶界面(User interface)
對于完全的普通用而言, 最直觀的是界面(桌面)系統(tǒng),以及上層的應(yīng)用程序, 其他的資源處理等等則都是被系統(tǒng)封裝的黑盒. 就讀者閱讀這篇文章而言, 是在今日頭條 App 或者瀏覽器上進行的,這些都是應(yīng)用程序,而你所用的手機后電腦則是硬件集合, 此三者的關(guān)系如圖:
應(yīng)用系統(tǒng)硬件關(guān)系
再來看看內(nèi)核的定義: “內(nèi)核”指的是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。內(nèi)核是操作系統(tǒng)最基本的部分。它是為眾多應(yīng)用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,并且內(nèi)核決定一個程序在什么時候?qū)δ巢糠钟布僮鞫嚅L時間。直接對硬件操作是非常復(fù)雜的,所以內(nèi)核通常提供一種硬件抽象的方法來完成這些操作。硬件抽象隱藏了復(fù)雜性,為應(yīng)用軟件和硬件提供了一套簡潔,統(tǒng)一的接口,使程序設(shè)計更為簡單。
簡單來說,內(nèi)核是一個操作系統(tǒng)的核心。它負責(zé)管理系統(tǒng)的進程、內(nèi)存、設(shè)備驅(qū)動程序、文件和網(wǎng)絡(luò)系統(tǒng)等等,決定著系統(tǒng)的性能和穩(wěn)定性。是連接應(yīng)用程序和硬件的橋梁。
內(nèi)核示意圖
我們再來看看內(nèi)核的分類, 其實主要是有宏內(nèi)核(也叫單內(nèi)核)和微內(nèi)核, 在此基礎(chǔ)上,還有混合內(nèi)核,外內(nèi)核等分類, 混合內(nèi)核可以理解是為了追求性能,對宏內(nèi)核和微內(nèi)核做了一些折中,如MacOSX,windowsNT,但都宣稱采用微核心架構(gòu); 外內(nèi)核是一種比較極端的設(shè)計方法,其理念是讓用戶程序的設(shè)計者來決定硬件接口的設(shè)計,這個也就不多聊了.
我們就重點來了解一下宏內(nèi)核和微內(nèi)核是什么?
宏內(nèi)核
宏內(nèi)核(Monolithic kernel)架構(gòu)的特性是整個內(nèi)核程序是一個單一二進制可執(zhí)行文件,在內(nèi)核態(tài)以監(jiān)管者模式(Supervisor Mode)來運行。是這樣, 就像我們上面提到的內(nèi)存,文件,驅(qū)動,IO 等等,每個功能被當(dāng)做一個模塊,全部集合在一起運行在內(nèi)核進程中, 這些模塊直接的交互是直接通過方法(函數(shù))調(diào)用. 如下圖:
宏內(nèi)核示意圖
微內(nèi)核
微內(nèi)核(Microkernel)架構(gòu)的特性就是盡可能精簡的精簡程序,以實現(xiàn)一個操作系統(tǒng)所必要的最基本功能,包括線程調(diào)度,進程管理,中斷處理. 其他的模塊都移出內(nèi)核,這就使得內(nèi)核中最核心的功能,設(shè)計上變的更簡單。讓服務(wù)各自獨立,可以減少耦合度,易于實現(xiàn)與調(diào)試,增加可移植性。這樣某單一組件失效,既不影響內(nèi)核也不會影響其他模塊, 內(nèi)核只需要重啟這個這個模塊。同時,也可以視需要抽換或新增某些服務(wù)進程,這樣整個系統(tǒng)更加穩(wěn)定和富有彈性.如圖:
微內(nèi)核示意圖
在微內(nèi)核架構(gòu)下,還創(chuàng)建了一套進程間通信,通過消息列隊傳遞的這種機制來讓各模塊進程間互換消息,調(diào)用服務(wù),以及完成同步。采用主從式架構(gòu),使得它在分布式系統(tǒng)中有特別的優(yōu)勢,因為遠程系統(tǒng)與本地進程間,可以采用同一套進程間通信機制。
微內(nèi)核的優(yōu)勢
總結(jié)一下,宏內(nèi)核是模塊集成在一起,而微內(nèi)核是模塊間分離。對比如下:
|
宏內(nèi)核 |
微內(nèi)核 |
通信效率 |
搞(函數(shù)調(diào)用) |
低(進程通信) |
穩(wěn)定性 |
低(模塊集成一損俱損) |
高(模塊獨立互不影響) |
擴展性 |
低(模塊集成一損俱損) |
高(模塊獨立互不影響) |
代碼量 |
多(需實現(xiàn)所有模塊) |
少(只實現(xiàn)核心機能) |
從前面描述中我們也知道, 微內(nèi)核出現(xiàn)的較晚(1985年 Mach 首倡),實際上在后續(xù)的發(fā)展中宏內(nèi)核和微內(nèi)核相互間都有借鑒, 也就是為什么會有混合內(nèi)核,超微內(nèi)核等等, 細究的話,也同樣有著業(yè)界的互噴現(xiàn)象.這里我們不深究,懂得即可; 我們繼續(xù)來看微內(nèi)核, 其天生在分布式系統(tǒng)中有優(yōu)勢; 分布式系統(tǒng)是指一組電腦,透過網(wǎng)絡(luò)相互連接傳遞消息通信后并協(xié)調(diào)它們的行為而形成的系統(tǒng)。所以到此刻我也知道華為 HarmonyOS 采用微內(nèi)核架構(gòu)也是一種必然了. 我們還知道它的內(nèi)核層還有一個 LiteOS, 就是一個輕量級的物聯(lián)網(wǎng)操作系統(tǒng),最小內(nèi)核尺寸甚至僅為6KB,具備快速啟動、低功耗等優(yōu)勢. 下面這個是鴻蒙的系統(tǒng)架構(gòu)圖:
總結(jié)
至此,我們也就基本明白了, 鴻蒙操作系統(tǒng)的內(nèi)核層是怎么回事了. 加上上一篇,我們也就基本明白了, 關(guān)于鴻蒙里的 Linux內(nèi)核, 微內(nèi)核,分布式,LiteOS 以及如何兼容安卓等核心問題.
其實本來上對于任何一件事物, 我們既要了解它的發(fā)展歷程,從而也去思考它的未來期許, 對于那些無腦噴,我是真有點不能理解的,只能說明要么腦瓜確實有問題要么動機有問題.
比如, 說是有的程序員也來噴, 我特別好奇, 打開鴻蒙的開發(fā)者網(wǎng)站, 比安卓那邊明顯的多了一個設(shè)備開發(fā)的入口, 只要多想一下, 其實不難想到這個系統(tǒng)的思路完全有了不同的變化, 否則安卓為什么不這樣做呢?甚至我們早就知道了谷歌還把精力分到了 ChromeOS 和 FuchsiaOS 這其他的操作系統(tǒng)上呢?還去秀你的什么命令,去向外行證明什么套殼之類的噴罵?難道是真的不明白就算是一個上層 App 也有架構(gòu)演進的過程嗎?真的不明白安卓作為開源項目的 AOSP 代表著什么嗎? 如果僅僅是套個殼,工信部那幫人真的是啥都不懂嗎?如果僅僅是復(fù)制修改,谷歌想要追責(zé)就沒辦法了嗎?谷歌是怎么封殺的阿里云OS?還是說華為的那幫工程師全是沒臉沒皮,開源出來等著這種人來噴嗎?還是說...
上面這一堆疑問其實也引出了另外一個話題, 就是鴻蒙的多設(shè)備鏈接的物聯(lián)網(wǎng),1+8+N 的生態(tài). 從這兩篇系統(tǒng)內(nèi)核的介紹中, 我們也了解了操作系統(tǒng)的發(fā)展本身也是一個場景需求變化的演進發(fā)展的過程.從早期大型工業(yè)電腦系統(tǒng),到個人桌面系統(tǒng),再到手機便攜系統(tǒng),如今的萬物互聯(lián)HarmonyOS. 事實上鴻蒙不是第一個物聯(lián)網(wǎng)操作系統(tǒng),就想剛剛提到了阿里云OS, 除了谷歌封殺, 也同樣有人認為是它出生太早了,所以對于這樣的一個新系統(tǒng)而已,其實最要關(guān)注的應(yīng)該是它的生態(tài)問題,這才是決定性的.