華為 "鴻蒙" 操作系統(tǒng)關(guān)鍵特性解讀
1、計(jì)算機(jī)為什么需要操作系統(tǒng)?
大部分人認(rèn)為,操作系統(tǒng)本來就是與計(jì)算機(jī)(IT設(shè)備)一體的。究竟計(jì)算機(jī)為什么需要操作系統(tǒng)?可能我們并不會(huì)去特意想這個(gè)問題。
其實(shí),對于IT產(chǎn)品而言,操作系統(tǒng)的角色,就像我們?nèi)祟惿眢w中,大腦的角色一樣。我們每天面對大量的或大或小、或簡單或復(fù)雜、或緊迫或?qū)捤傻氖虑?。大腦如何處理這些事情的處理的先后順序和邏輯關(guān)系。
來源:計(jì)算機(jī)教程
我們先了解一下,操作系統(tǒng)為什么是計(jì)算機(jī) (IT設(shè)備)一個(gè)核心必備軟件系統(tǒng)?
為了了解操作系統(tǒng)的必要性,我們先看幾個(gè)簡單的場景案例。
1)計(jì)算機(jī)(任何IT產(chǎn)品)其實(shí)就是一個(gè)利用IT資源(計(jì)算資源、存儲(chǔ)資源、網(wǎng)絡(luò)資源)對各種數(shù)據(jù)進(jìn)行處理的設(shè)備。而在計(jì)算機(jī)處理數(shù)據(jù)的時(shí)候,會(huì)遇到IT資源如何分配的問題。比如,如果同時(shí)有幾個(gè)應(yīng)用程序發(fā)出運(yùn)行請求,各個(gè)程序之間運(yùn)行的先后邏輯是什么?哪個(gè)程序優(yōu)先運(yùn)行,哪個(gè)程序后運(yùn)行?每個(gè)程序又該分配多少計(jì)算資源?這些都是需要解決的問題。如果沒有操作系統(tǒng),多個(gè)程序同時(shí)運(yùn)行,就會(huì)出現(xiàn)各個(gè)應(yīng)用程序相互擠占計(jì)算資源,最終都無法運(yùn)行的情況。
2)在同一個(gè)計(jì)算機(jī)(IT設(shè)備)中,其運(yùn)行著各種各樣的應(yīng)用程序。而在應(yīng)用程序開發(fā)的時(shí)候,開發(fā)者關(guān)注的是自己的應(yīng)用程序是基于什么操作系統(tǒng)開發(fā)的(這也是應(yīng)用程序與操作系統(tǒng)之間的耦合關(guān)系),而不會(huì)去關(guān)注自己的程序是否會(huì)受到其他應(yīng)用程序的影響。對于操作系統(tǒng)來說,就需要解決不同應(yīng)用程序之間是否會(huì)相互干擾的問題。
3)計(jì)算機(jī)(IT設(shè)備)是由硬件和軟件組成。操作系統(tǒng)和在其之上運(yùn)行的應(yīng)用程序都是軟件。由于硬件種類很多,同一硬件產(chǎn)品也都有不同的生產(chǎn)設(shè)計(jì)產(chǎn)商。對于這樣的一個(gè)看似非標(biāo)準(zhǔn)化的硬件環(huán)境,如何能讓應(yīng)用程序都能適應(yīng)這些硬件環(huán)境,不會(huì)出現(xiàn)某個(gè)應(yīng)用程序只能在某一個(gè)硬件環(huán)境下運(yùn)行,換一個(gè)硬件環(huán)境就無法運(yùn)行的情況。
解決以上問題的核心途徑,就是采用操作系統(tǒng)。
1)操作系統(tǒng),可以對應(yīng)用程序進(jìn)行計(jì)算資源分配、運(yùn)行管理、調(diào)用權(quán)限審核等。目的就是讓各種應(yīng)用程序都能夠有序、快速地運(yùn)行。計(jì)算機(jī)資源分配包括:CPU的運(yùn)算資源,內(nèi)存條的主存容量,硬盤的讀寫流量,網(wǎng)卡的網(wǎng)絡(luò)傳輸流量,主線的內(nèi)部數(shù)據(jù)流量等。
2)操作系統(tǒng),可以將不同硬件造成的運(yùn)行環(huán)境的差異進(jìn)行標(biāo)準(zhǔn)化。無論什么樣的底層硬件,上層應(yīng)用程序運(yùn)行的環(huán)境都是一樣的。這就極大便利了應(yīng)用程序開發(fā)者,可以將精力主要用在優(yōu)化自身產(chǎn)品方面,而不用擔(dān)心底層的計(jì)算環(huán)境。
3)操作系統(tǒng),可以進(jìn)行多任務(wù)管理,控制程序并發(fā)運(yùn)行。操作系統(tǒng)可以針對幾個(gè)應(yīng)用程序提出的并發(fā)運(yùn)行請求,進(jìn)行合理處理,安排優(yōu)先級(jí)。合理有序?qū)ζ溥M(jìn)行計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)等各種IT資源的分配。
來源:計(jì)算機(jī)教程
2、鴻蒙OS解讀
對于鴻蒙OS,大家印象比較深刻的是幾個(gè)關(guān)鍵詞:全場景、分布式、微內(nèi)核、跨終端。這些都是鴻蒙OS相比傳統(tǒng)其他OS不同的地方,當(dāng)然也是鴻蒙OS的賣點(diǎn)所在。
而華為對鴻蒙OS介紹中,花了大量篇幅來介紹鴻蒙OS的四大技術(shù)特性。說實(shí)話,這四大技術(shù)特性,對于非專業(yè)IT人士而言,可能大致能明白其表達(dá)的核心意思,但對于其背后的體現(xiàn)的IT內(nèi)涵和程序模塊間的邏輯關(guān)系,可能并不一定有多理解。而這些也正是鴻蒙OS相比其他操作系統(tǒng)的不同或者說優(yōu)勢所在。
為了更好地理解鴻蒙OS,我們將圍繞華為對鴻蒙OS四大技術(shù)特性的官方描述展開,來進(jìn)一步理解其背后的IT邏輯關(guān)系和含義。
鴻蒙OS,具備四大技術(shù)特性:
鴻蒙OS技術(shù)特性一:分布式架構(gòu)首次用于終端OS,實(shí)現(xiàn)跨終端無縫協(xié)同體驗(yàn)
這里有個(gè)關(guān)鍵詞,就是“分布式架構(gòu)”,什么是操作系統(tǒng)的分布式架構(gòu)?
華為在介紹這一部分內(nèi)容時(shí),特別提到了兩個(gè)專業(yè)術(shù)語“分布式OS架構(gòu)”和“分布式軟總線技術(shù)”。對于以上這種“分布式”的作用,華為的描述是“通過公共通信平臺(tái),分布式數(shù)據(jù)管理,分布式能力調(diào)度和虛擬外設(shè)四大能力,將相應(yīng)分布式應(yīng)用的底層技術(shù)實(shí)現(xiàn)難度對應(yīng)用開發(fā)者屏蔽,使開發(fā)者能夠聚焦自身業(yè)務(wù)邏輯,像開發(fā)同一終端一樣開發(fā)跨終端分布式應(yīng)用,也使最終消費(fèi)者享受到強(qiáng)大的跨終端業(yè)務(wù)協(xié)同能力為各使用場景帶來的無縫體驗(yàn)?!?/span>
那我們先了解下,操作系統(tǒng)的分布式架構(gòu)是怎樣的架構(gòu)?
分布式操作系統(tǒng)架構(gòu),是相對于集中式操作系統(tǒng)架構(gòu)而言的。根據(jù)以上,我們知道,操作系統(tǒng)分別經(jīng)歷了從CP/M系統(tǒng)、DOC系統(tǒng)、集中式操作系統(tǒng),到現(xiàn)在的分布式操作系統(tǒng)。
分布式架構(gòu)操作系統(tǒng),能夠?qū)τ?jì)算機(jī)的資源進(jìn)行動(dòng)態(tài)分配,并有效控制和協(xié)調(diào)操作系統(tǒng)中各任務(wù)的并行執(zhí)行。分布式架構(gòu)的操作系統(tǒng),除了具備傳統(tǒng)操作系統(tǒng)功能之外,還提供分布式進(jìn)程通信、分布式文件系統(tǒng)、分布式進(jìn)程遷移、分布式進(jìn)程同步和分布式進(jìn)程死鎖等功能。
分布式操作系統(tǒng)的特點(diǎn)是:分布性和穩(wěn)定性。分布式操作系統(tǒng)中的微內(nèi)核和其他應(yīng)用程序,可以以多副本的方式運(yùn)行,一旦系統(tǒng)中某一個(gè)部分發(fā)生故障,該分布式操作系統(tǒng)仍能夠正常運(yùn)行,保障了系統(tǒng)的穩(wěn)定性。
另外,分布式操作系統(tǒng)一般采用微內(nèi)核及核外輔以若干實(shí)用程序的結(jié)構(gòu)。而此次鴻蒙OS特別提到,其利用的是微內(nèi)核。
微內(nèi)核是一種具有有限功能的較小的操作系統(tǒng)內(nèi)核。我們可以將其理解為是一個(gè)功能縮小版的內(nèi)核。微內(nèi)核主要負(fù)責(zé)原來內(nèi)核中幾個(gè)基礎(chǔ)的功能,包括中斷、通信、調(diào)度等,其他的系統(tǒng)功能分配給微內(nèi)核外的使用程度來執(zhí)行。在分布式操作系統(tǒng)中,一臺(tái)計(jì)算機(jī)對應(yīng)配置一個(gè)微內(nèi)核我,分布式系統(tǒng)之上運(yùn)行的實(shí)用程序可以不同。這樣可以使得,整個(gè)架構(gòu)更加靈活,節(jié)省系統(tǒng)資源,保證系統(tǒng)的穩(wěn)定性。
同時(shí),分布式操作系統(tǒng),對應(yīng)用程序開發(fā)者,將相應(yīng)分布式應(yīng)用的底層技術(shù)實(shí)現(xiàn)難度進(jìn)行屏蔽,使開發(fā)者能夠聚焦自身業(yè)務(wù)邏輯,像開發(fā)同一終端一樣開發(fā)跨終端分布式應(yīng)用。?以上是我們對“分布式架構(gòu)OS”的理解。
來源:計(jì)算機(jī)教程
另外一個(gè)就是“分布式軟總線技術(shù)”
要了解分布式軟件總線技術(shù),我們需要一層一層的剝開。要知道分布式軟件總線,需要了解軟件總線,進(jìn)而需要了解軟插件,進(jìn)而需要了解軟件復(fù)用的概念。
軟件復(fù)用,是利用現(xiàn)有的軟件成分(資源)來構(gòu)造新的軟件系統(tǒng)。該軟件成分可以是已有的軟件,也可以是專門開發(fā)的可以復(fù)用的軟件構(gòu)件。
軟件復(fù)用技術(shù)分為組裝技術(shù)和生產(chǎn)技術(shù)。
組裝技術(shù),是對已有的軟件構(gòu)件不做修改或者少做修改,直接將其插裝在一起,來構(gòu)造出一個(gè)新的軟件系統(tǒng)。
生成技術(shù),是利用程序編譯器來完成對軟件結(jié)構(gòu)模式的復(fù)用。例如V c++等。
軟插件模型,軟插件技術(shù)從本質(zhì)來講是一種軟件集成技術(shù)。對于一個(gè)新的軟件系統(tǒng),其中有大部分的工作量是用在重復(fù)編寫已有軟件部分。軟插件是一種具有一組外接插頭。如果構(gòu)造一個(gè)軟件系統(tǒng)的軟插件都已存在,那開發(fā)者只需要對整個(gè)系統(tǒng)的構(gòu)造策略和原則進(jìn)行制定即可,從而提升軟件生產(chǎn)效率。軟件插件的特征包括:模塊化好、獨(dú)立性強(qiáng)、高可靠性、鏈接簡單、封裝功能等。
軟件總線,解決的是軟插件的交互問題,以支持軟件工廠總裝期間和運(yùn)行階段的高級(jí)通信問題。并解決軟件系統(tǒng)內(nèi)部各個(gè)軟插件的互操作問題。
分布式軟件總線。在分布式操作系統(tǒng)下,大量易購網(wǎng)絡(luò)以及各個(gè)廠商推出的軟硬件產(chǎn)品,帶來分布式系統(tǒng)各個(gè)層次都存在互操作問題。如果將軟件總線與操作系統(tǒng)、網(wǎng)絡(luò)通信機(jī)制結(jié)合起來,就能夠比較好的處理分布式系統(tǒng)的互操作問題。
華為給出的關(guān)于分布式軟總線的關(guān)鍵指標(biāo),這將有利于我們對其的理解。主要包括:1)低時(shí)延:端到端時(shí)延小于20毫秒。2)高吞吐:有效圖吞吐高達(dá)1.2Gbps。3)高可靠:抗丟包率高達(dá)25%。
來源:計(jì)算機(jī)教程
鴻蒙OS技術(shù)特性二:確定時(shí)延引擎和高性能IPC技術(shù),實(shí)現(xiàn)系統(tǒng)天生流暢
華為對改性能的解釋為:“鴻蒙 OS通過使用確定時(shí)延引擎和高性能IPC兩大技術(shù)解決現(xiàn)有系統(tǒng)性能不足的問題。確定時(shí)延引擎,可在任務(wù)執(zhí)行前,分配系統(tǒng)中任務(wù)執(zhí)行優(yōu)先級(jí)及時(shí)限進(jìn)行調(diào)度處理,優(yōu)先級(jí)高的任務(wù)資源將優(yōu)先保障調(diào)度,應(yīng)用響應(yīng)時(shí)延降低25.7%。鴻蒙微內(nèi)核結(jié)構(gòu)小巧的特性使IPC(進(jìn)程間通信)性能大大提高,進(jìn)程通信效率較現(xiàn)有系統(tǒng)提升5倍。”
高性能IPC。IPC指的是進(jìn)程間通信,Inter process communication。IPC是一組編程接口,讓程序員能夠協(xié)調(diào)不同的進(jìn)程,使之能在一個(gè)操作系統(tǒng)里同時(shí)運(yùn)行,并相互傳遞、交換信息。
為什么需要進(jìn)程間通信?
在計(jì)算機(jī)實(shí)際運(yùn)行過程中,可能會(huì)出現(xiàn)一個(gè)系統(tǒng)中好幾個(gè)進(jìn)程同時(shí)在進(jìn)行的情況。這時(shí),不同進(jìn)程之間需要相互協(xié)作、相互溝通,以便更好的完成工作。而由于不同進(jìn)程之間的相互獨(dú)立性,進(jìn)程間的溝通就變得比較困難。因此,就產(chǎn)生了不同進(jìn)程間的通信方式,來解決不同進(jìn)程之間的通信問題。
因此,基于以上的解釋,我們可以理解進(jìn)程間通信的目的:
1)數(shù)據(jù)傳輸:一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程。
2)資源共享:多個(gè)進(jìn)程間共享同樣的資源。
3)通知事件:一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)消息,通知它們發(fā)生了某種事件(如進(jìn)程終止時(shí)要通知父進(jìn)程)。
4)進(jìn)程控制:有些進(jìn)程希望完全控制另一個(gè)進(jìn)程的執(zhí)行(如Debug進(jìn)程),此時(shí)控制進(jìn)程希望能夠攔截另一個(gè)進(jìn)程的所有陷入和異常,并能夠及時(shí)知道它的狀態(tài)改變。
而對于華為鴻蒙OS而言,其進(jìn)程間通信(IPC)性能大幅提升,我們可以理解為不同進(jìn)程之間的對話和溝通效率大幅提升。
鴻蒙OS技術(shù)特性三:基于微內(nèi)核架構(gòu),重塑終端設(shè)備可信安全
華為對該功能的描述為:“鴻蒙OS采用全新的微內(nèi)核設(shè)計(jì),擁有更強(qiáng)的安全特性和低時(shí)延等特點(diǎn)。微內(nèi)核設(shè)計(jì)的基本思想是簡化內(nèi)核功能,在內(nèi)核之外的用戶態(tài)盡可能多地實(shí)現(xiàn)系統(tǒng)服務(wù),同時(shí)加入相互之間的安全保護(hù)。微內(nèi)核只提供最基礎(chǔ)的服務(wù),比如多進(jìn)程調(diào)度和多進(jìn)程通信等。”
這其中的一個(gè)關(guān)鍵詞是:微內(nèi)核。這也是鴻蒙OS的關(guān)鍵特性之一。
在上面,我們提到了分布式操作系統(tǒng)與微內(nèi)核的關(guān)系。一般分布式操作系統(tǒng)通過微內(nèi)核的方式來實(shí)現(xiàn)。
在理解微內(nèi)核之前,我們先理解下,什么是內(nèi)核?
操作系統(tǒng)中的“內(nèi)核”,內(nèi)核是操作系統(tǒng)的核心部分,它管理著系統(tǒng)的各種資源,我們可以把他比作連接應(yīng)用程序和硬件的一座橋梁,是直接運(yùn)行在硬件上的最基礎(chǔ)的軟件實(shí)體。
微內(nèi)核的概念,是由Richard Rashid在卡內(nèi)基梅隆(Carnegie-Mellon)大學(xué)開發(fā)Mach操作系統(tǒng)時(shí)提出的,目標(biāo)是建立一個(gè)基于消息傳送(message passing)機(jī)制的最小內(nèi)核,以便在此基礎(chǔ)上建造對其它操作系統(tǒng)的模擬層來模擬其它操作系統(tǒng)的特性。
微內(nèi)核(Microkernel),是一種內(nèi)核的設(shè)計(jì)架構(gòu),由一組盡可能將數(shù)量最小化的軟件程序組成,它們負(fù)責(zé)提供、實(shí)現(xiàn)一個(gè)操作系統(tǒng)所需要的各種機(jī)制與功能。這些最基礎(chǔ)的機(jī)制,包括了底層地址空間管理,線程管理,與行程間通信(IPC)。
微內(nèi)核的設(shè)計(jì)理念,是將系統(tǒng)服務(wù)的實(shí)現(xiàn),與系統(tǒng)的基本操作規(guī)則區(qū)分開來。它實(shí)現(xiàn)的方式,是將核心功能模塊化,劃分成幾個(gè)獨(dú)立的行程,各自運(yùn)行,這些行程被稱為服務(wù)(service)。所有的服務(wù)行程,都運(yùn)行在不同的地址空間。只有需要絕對特權(quán)的行程,才能在具特權(quán)的運(yùn)行模式下運(yùn)行,其余的行程則在用戶空間運(yùn)行。
微內(nèi)核提供一組“最基本”的服務(wù),如進(jìn)程調(diào)度、進(jìn)程間通信、存儲(chǔ)管理、處理I/O設(shè)備。其他服務(wù),如文件管理、網(wǎng)絡(luò)支持等通過接口連到微內(nèi)核。而在傳統(tǒng)的內(nèi)核情況下,內(nèi)核集成了大量的基礎(chǔ)服務(wù)和其他服務(wù),這樣,內(nèi)核顯得就更加的笨重。
微內(nèi)核的功能:微內(nèi)核設(shè)計(jì)帶來了良好的兼容性、擴(kuò)充性、靈活性、移植性、可靠性和網(wǎng)絡(luò)支持。
但是,微內(nèi)核設(shè)計(jì)有一個(gè)重要缺點(diǎn):由于微內(nèi)核操作系統(tǒng)使用進(jìn)程來隔離系統(tǒng)組件,這些組件之間的通信使用了消息傳遞方式來實(shí)現(xiàn)一個(gè)組件對另一個(gè)組件的調(diào)用-這實(shí)際上是進(jìn)行了一次RPC(例如在NT上是LPC)調(diào)用。但這種類似RPC的方式是通過進(jìn)程間通信(IPC)機(jī)制實(shí)現(xiàn)的,其性能一般低于傳統(tǒng)操作系統(tǒng)的系統(tǒng)調(diào)用的性能。由于微內(nèi)核操作系統(tǒng)的類似RPC調(diào)用是通過消息傳送機(jī)制實(shí)現(xiàn)的,而傳統(tǒng)操作系統(tǒng)的系統(tǒng)調(diào)用一般是通過類似trap的方法實(shí)現(xiàn)。相比于trap方法,通過消息傳送機(jī)制實(shí)現(xiàn)的這種類RPC調(diào)用的方式較慢。
鴻蒙OS技術(shù)特性四:通過統(tǒng)一IDE支撐一次開發(fā),多端部署,實(shí)現(xiàn)跨終端生態(tài)共享
華為對此性能的官方描述為:“鴻蒙OS憑借多終端開發(fā)IDE,多語言統(tǒng)一編譯,分布式架構(gòu)Kit提供屏幕布局控件以及交互的自動(dòng)適配,支持控件拖拽,面向預(yù)覽的可視化編程,從而使開發(fā)者可以基于同一工程高效構(gòu)建多端自動(dòng)運(yùn)行App,實(shí)現(xiàn)真正的一次開發(fā),多端部署,在跨設(shè)備之間實(shí)現(xiàn)共享生態(tài)。華為方舟編譯器是首個(gè)取代Android虛擬機(jī)模式的靜態(tài)編譯器,可供開發(fā)者在開發(fā)環(huán)境中一次性將高級(jí)語言編譯為機(jī)器碼。此外,方舟編譯器未來將支持多語言統(tǒng)一編譯,可大幅提高開發(fā)效率?!?/span>
下面我們逐句來進(jìn)行解讀
1)IDE,Integrated Development Environment ,即集成開發(fā)環(huán)境。IDE是一種編程軟件,是集成了程序員語言開發(fā)中會(huì)需要的一些基本工具、基本環(huán)境和其他輔助功能的應(yīng)用軟件。IDE一般包含三個(gè)主要組件:源代碼編輯器(Editor)、編譯器、解釋器(Compiler、Interpreter)和調(diào)試器(Debugger)。集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)套件。
開發(fā)人員可以通過圖形用戶界面訪問這些組件,并且實(shí)現(xiàn)整個(gè)代碼編譯、調(diào)試和執(zhí)行的過程?,F(xiàn)在的IDE也提供其他幫助程序員提供開發(fā)效率的一些高級(jí)輔助功能,比如代碼高亮,代碼補(bǔ)全和提示,語法錯(cuò)誤提示,函數(shù)追蹤,斷點(diǎn)調(diào)試等。
現(xiàn)在有大量的免費(fèi)開源的和商用的IDE,包括:
1、微軟 Visual Studio(VS):VS支持創(chuàng)建各種類型的程序,包括從桌面應(yīng)用、Web應(yīng)用、移動(dòng)APP、到視頻游戲。對于初學(xué)者到高級(jí)專業(yè)開發(fā)人員來說都是最棒的開發(fā)工具。VS有可定制儀表板和可??康拇翱凇KС侄啻?6種不同的編程語言,如:ASP.NET、DHTML、JavaScript、Jscript、Visual Basic、Visual C#、Visual C ++、Visual F#,XAML等。
2、NetBeans:是一個(gè)免費(fèi)開源的Java集成的開發(fā)環(huán)境軟件,主要用于Java開發(fā)。適合從零開始或者對已有工程進(jìn)行開發(fā)。NetBeans支持多種編譯器,如CLang/LLVM、Cygwin(GNU)、MinGW和Oracle Solaris Studio等。
3、PyCharm:是著名編程語言Python的IDE,由知名的IDE開發(fā)商JetBrains出品。除了Python之外,PyCharm還支持其他Web開發(fā)語言:JavaScript、Node.js、CoffeeScript、TypeScript、Dart、CSS、HTML等。
除此之外,典型的IDE還包括:IntelliJ IDEA,Eclipse,Code:: Blocks,Aptana Studio 3,CodeLite等。
2)多語言統(tǒng)一編譯
不同的集成開發(fā)環(huán)境IDE,支持不同的開發(fā)語言。比如,上面提到的微軟Visual Studio 支持的編程語言包括:ASP.NET、DHTML、JavaScript、Jscript、Visual Basic、Visual C#、Visual C ++、Visual F#,XAML等。
而鴻蒙OS 可以支持多語言統(tǒng)一編譯,而這很大程度上是依賴于華為開發(fā)的方舟編譯器。上面,我們提到,編譯器是計(jì)算機(jī)(IT設(shè)備)系統(tǒng)軟件中一個(gè)基礎(chǔ)和核心軟件。方舟編譯器與鴻蒙OS結(jié)合,應(yīng)用程序開發(fā)者可以利用方舟編譯器來進(jìn)行多語言同一編譯。這在一定程度上能夠顯著提升開發(fā)展的開發(fā)效率。
3)分布式架構(gòu)Kit。Kit在IT行業(yè)指的軟件工具包。我們認(rèn)為,這里的分布式架構(gòu)的工具包,是與鴻蒙OS的分布式架構(gòu)自成一體的。分布式架構(gòu)的思想體現(xiàn)在整個(gè)鴻蒙OS的各個(gè)組件當(dāng)中。其能夠帶來分分布式架構(gòu)OS的所帶來的便利和功能。
而以上鴻蒙OS的這一性能的核心意思是:通過華為提供的集成開發(fā)環(huán)境,和支持多語言統(tǒng)一編譯的方舟編譯器,應(yīng)用程序開發(fā)人員,可以大幅提高軟件開發(fā)效率,包括縮短應(yīng)用程序開發(fā)周期、語言模塊調(diào)用、應(yīng)用程序的自動(dòng)調(diào)優(yōu)等。而且,通過華為提供的開發(fā)環(huán)境和編譯器開發(fā)的應(yīng)用程序,可以適應(yīng)于多種不同類型的終端,包括手機(jī)、PC、汽車以及其他各種智能終端。
鴻蒙OS之所以要要想盡一切辦法,來給軟件開發(fā)人員帶來便利和效率,核心還是打造基于鴻蒙OS的IT生態(tài)。因?yàn)樽罱K這些應(yīng)用軟件都要在鴻蒙OS上來運(yùn)行。
3、方舟編譯器
通過以上,我們看到鴻蒙OS之所以能夠?yàn)檐浖_發(fā)者提供支持多語言統(tǒng)一編譯的極大便利,核心還是基于方舟編譯器的應(yīng)用。
首先,我們解釋一下,什么是編譯器?
編譯器,是將“一種語言(通常為高級(jí)語言)”翻譯為“另一種語言(通常為低級(jí)語言)”的程序。編譯器的主要工作流程:源代碼 (source code) → 預(yù)處理器 (preprocessor) → 編譯器 (compiler) → 目標(biāo)代碼 (object code) → 鏈接器 (Linker) → 可執(zhí)行程序 (executables)。
之所以需要編譯器,只因?yàn)橛?jì)算機(jī)是一個(gè)二級(jí)制單位,是通過0和1的組合來實(shí)現(xiàn)不同的操作。而人類的編程語言,從較早的匯編語言,到C、C++,再到我們現(xiàn)在看到的Java語言等。
說的簡單通俗點(diǎn):編譯器就是想一個(gè)翻譯官一樣,將人類的邏輯語言,翻譯為機(jī)器可識(shí)別可理解可執(zhí)行的機(jī)器語言。翻譯的快慢可以影響溝通交流的效率,同樣,編譯器的效率也就影響了程序運(yùn)行的效率。
關(guān)于方舟編譯器的發(fā)展歷程
2019年4月,在華為P30系列國內(nèi)發(fā)布會(huì)上,華為首次發(fā)布了方舟編譯器。方舟編譯器是基于GCC開發(fā)的交叉編譯器套件,它包括了C、C++、Fortran的前端,也包括了這些語言的庫(如libstdc++、libgcc等)。
方舟編譯器,是對傳統(tǒng)Android操作系統(tǒng)編譯器的改進(jìn)和突破。
1)方舟編譯器,可以實(shí)現(xiàn)多語言聯(lián)合優(yōu)化編譯,大幅提升運(yùn)行效率
我們知道,在Android操作系統(tǒng)中,使用的語言是Java語言。而Android操作系統(tǒng)之上運(yùn)行的各種各樣的應(yīng)用程序,其開發(fā)語言既有Java語言,也有C和C++。這就使得操作系統(tǒng)的Java語言與應(yīng)用程序的各種語言進(jìn)行交互。這種交互的接口就是JNI(Java Native Interface)。在數(shù)據(jù)訪問、函數(shù)調(diào)用、生命周期維護(hù)、異常處理時(shí),需要這兩種語言交互,進(jìn)行相互調(diào)用。而在相互調(diào)用過程中,會(huì)占用一定的系統(tǒng)資源。使得系統(tǒng)之上的應(yīng)用程序運(yùn)行效率降低。
方舟編譯器,是業(yè)界首個(gè)多語言聯(lián)合優(yōu)化的編譯器,開發(fā)者在開發(fā)環(huán)境中可以一次性將多語言統(tǒng)一編譯為一套機(jī)器碼,運(yùn)行時(shí)無需產(chǎn)生跨語言帶來的額外消耗,并可以進(jìn)行跨語言的聯(lián)合優(yōu)化。
2)方舟編譯器直接編譯出機(jī)器指令,無需繁瑣的虛擬機(jī)運(yùn)行
在Android系統(tǒng)中,程序的運(yùn)行,需要借助ART虛擬機(jī)來執(zhí)行,編譯器是把源程序的每一條語句都編譯成機(jī)器語言并保存成二進(jìn)制文件,解釋器在執(zhí)行程序時(shí),一條一條地解釋成機(jī)器語言來讓計(jì)算機(jī)執(zhí)行。而在這個(gè)動(dòng)態(tài)編譯和解釋過程中,消耗了大量的系統(tǒng)資源。
方舟編譯器,可以在開發(fā)環(huán)境中,就可以完成全部代碼的編譯。所以在手機(jī)運(yùn)營環(huán)境中,應(yīng)用程序并不需要將進(jìn)行語言的編譯和解釋,可以直接讀取運(yùn)行,提升運(yùn)行效率。
3)方舟編譯器提供高效的內(nèi)存回收機(jī)制
早期C、C++需要開發(fā)人員自己管理程序,對系統(tǒng)內(nèi)存的實(shí)用和釋放,影響開發(fā)效率。Java的虛擬機(jī)模式提供了內(nèi)存GC(垃圾回收)機(jī)制,但需要短暫中斷應(yīng)用,成為隨機(jī)卡頓的根因之一。
方舟編譯器,可以對內(nèi)存進(jìn)行隨時(shí)回收,而是回收時(shí),并不需要暫停應(yīng)用,保證了系統(tǒng)和應(yīng)用程序運(yùn)行的流暢性和高效性。
全 文 總 結(jié)
1、鴻蒙OS,只是冰山一角
我們認(rèn)為,鴻蒙OS只是華為建立自身IT生態(tài)體系的冰山一角。我們在之前的文章中分析了華為產(chǎn)品發(fā)展的邏輯。從IT產(chǎn)品形態(tài)角度來講,華為經(jīng)歷了從早期的硬件產(chǎn)品向軟件產(chǎn)品的演進(jìn)。而在軟件領(lǐng)域的不斷突破,逐步奠定了華為在IT產(chǎn)業(yè)的核心地位。特別是在基礎(chǔ)軟件領(lǐng)域,華為的默默進(jìn)取,在基礎(chǔ)軟件核心環(huán)節(jié)不斷取得新的成就。
目前我們看到的是鴻蒙OS和方舟編譯器,都只是華為自身IT生態(tài)底層軟件的一小部分。在芯片、數(shù)據(jù)庫等領(lǐng)域,華為同樣取得了一些突破性進(jìn)展。我們知道,如果在一套新的IT生態(tài)中,讓基礎(chǔ)軟件都能充分發(fā)揮其最高性能,需要各個(gè)基礎(chǔ)軟件不斷適配和完善,最終達(dá)到完美耦合。這也是我們在PC時(shí)代看到的Wintel以及移動(dòng)時(shí)代看到Android+ARM堅(jiān)不可破的原因。因此,我們可以想象,華為自身開發(fā)的這些基礎(chǔ)軟件,從一開始就是高度耦合的。
2、技術(shù)變革,帶來產(chǎn)業(yè)格局變化
每一次的重大技術(shù)變革都會(huì)預(yù)示著產(chǎn)業(yè)格局的演變,甚至對產(chǎn)業(yè)鏈進(jìn)行重構(gòu),促進(jìn)主流企業(yè)的重新洗牌。目前,我們看到華為已經(jīng)在多個(gè)IT領(lǐng)域進(jìn)行了產(chǎn)業(yè)格局的重構(gòu),從早期的路由器,到現(xiàn)在手機(jī)、存儲(chǔ)等市場。而以上我們看到的只是硬件部分。其實(shí),更重要的是隨著5G逐步商用,華為正逐步在最為艱難的核心底層基礎(chǔ)軟件部分,來對市場格局進(jìn)行重構(gòu)。目前,我們已經(jīng)看到華為在5G通信領(lǐng)域占據(jù)了全球產(chǎn)業(yè)鏈的話語主導(dǎo)權(quán)。未來,我們有望看到在芯片、操作系統(tǒng)、數(shù)據(jù)庫等領(lǐng)域的不斷崛起。
3、硬件企業(yè),軟件化
硬件企業(yè)逐步向軟件方向延伸,在IT領(lǐng)域我們經(jīng)常看到這樣的例子。這也是硬件企業(yè)發(fā)展到一定階段的必然選擇。而在這個(gè)演化方向上,往往只有行業(yè)的領(lǐng)導(dǎo)者才有可能取得一定成功。至于從硬件到軟件轉(zhuǎn)化的原因,我們的理解:
1)硬件發(fā)展到一定階段,技術(shù)和架構(gòu)逐步成熟,不同企業(yè)的硬件產(chǎn)品逐步趨同。對于IT產(chǎn)品而言,只有差異化(有價(jià)值的差異化)才能獲取高額利潤。趨同帶來的利潤降低迫使行業(yè)領(lǐng)導(dǎo)者不斷加快新技術(shù)的應(yīng)用,即通過軟件來增加硬件的功能或者提升硬件的性能。即硬件發(fā)展到一定階段,可能決定硬件競爭力的倒不是硬件本身,而是軟件。
2)從技術(shù)角度來看,硬件產(chǎn)品的迭代速度較慢,迭代慢帶來的結(jié)果是,客戶采購新產(chǎn)品的動(dòng)力和需求降低。通過軟件的應(yīng)用來加快硬件產(chǎn)品的迭代速度,縮短客戶的采購周期。
3)在原來IT產(chǎn)業(yè)分工下,硬件和軟件可以由不同的公司來提供,彼此發(fā)揮相對比較優(yōu)勢。但在現(xiàn)有的IT階段下,硬件和軟件的適配要求明顯提高;在某些領(lǐng)域,硬件與軟件只有做到相互定制、相互融合,其整體性能才能得到最大化釋放。
1、操作系統(tǒng)與芯片的耦合度
鴻蒙OS的目標(biāo)無疑是下一代5G通信技術(shù)下的核心操作系統(tǒng)。從IT底層軟件發(fā)展規(guī)律來看,操作系統(tǒng)作用的發(fā)揮,需要與芯片進(jìn)行長期、不斷、反復(fù)的適配、修改和完善,以達(dá)到最大限度的相互耦合。這樣才能最大發(fā)揮操作系統(tǒng)和芯片雙方的功能。比如,PC時(shí)代的Windows操作系統(tǒng)與Intel芯片經(jīng)歷了幾十年的適配,移動(dòng)互聯(lián)網(wǎng)時(shí)代的Android操作系統(tǒng)與ARM芯片也達(dá)到了高度耦合。對于鴻蒙OS操作系統(tǒng),如果未來在5G時(shí)代發(fā)揮作用,需要不斷與底層的芯片進(jìn)行適配耦合。如果是華為自身開發(fā)的芯片,耦合度會(huì)非常高。如果是其他廠商的芯片,雙方需要一段時(shí)間的適配過程。
2、鴻蒙OS的微內(nèi)核
微內(nèi)核本身不是新鮮事物,相比安卓系統(tǒng),華為鴻蒙OS將各種硬件驅(qū)動(dòng)拿到核外進(jìn)行處理,這在一定程度上帶來了架構(gòu)的靈活性。但凡事都是有利有弊,靈活性和擴(kuò)展性增加的同時(shí),對核內(nèi)與核外之間的通信要求更高。未來鴻蒙OS在對全場景跨終端的適用方面,可能也需要與硬件廠商的產(chǎn)品不斷進(jìn)行適配。
3、鴻蒙OS全場景的適配,也需要不斷迭代過程
鴻蒙OS的目標(biāo)適用主題是全場景的IOT領(lǐng)域。客觀來講,這個(gè)適配的場景確實(shí)挺大的。從目前我們看到的歷史操作系統(tǒng)來看,能夠廣泛適用這么多樣化智能終端的的操作系統(tǒng)并不多。比如,PC、手機(jī)和汽車中適用的操作系統(tǒng)都是不一樣的。鴻蒙OS要達(dá)到在每一個(gè)應(yīng)用場景都能高效運(yùn)行,需要其不斷的根據(jù)不用應(yīng)用場景對計(jì)算需求的特點(diǎn),而不斷改進(jìn)和完善自身架構(gòu)和性能。這是IT產(chǎn)品長期迭代的過程。
4、開放、開源,而不要打造封閉系統(tǒng)
核心底層基礎(chǔ)軟件的開發(fā)和應(yīng)用,一方面是開發(fā)難度較大,更重要的是能否建立起以該基礎(chǔ)軟件為核心的一套完整的產(chǎn)業(yè)鏈,形成正向循環(huán)的產(chǎn)業(yè)生態(tài)體系。在全球IT發(fā)展歷史上,我們既看到過封閉生態(tài)體系,比如蘋果的產(chǎn)品;也看到開放生態(tài)體系,比如谷歌、微軟的產(chǎn)品等。而對于未來的IT產(chǎn)業(yè)發(fā)展而言,只有不斷開放,更加開放,才能與生態(tài)伙伴一起成長。
而從PC歷史發(fā)展來看,目前還沒有看到通過封閉系統(tǒng),來持續(xù)獲得不斷擴(kuò)大的業(yè)務(wù)規(guī)模的。對于華為而言,目前正在逐步建立自己的核心底層生態(tài)體現(xiàn),從芯片、算法到操作系統(tǒng)、數(shù)據(jù)庫,更不用說早期發(fā)展起來的服務(wù)器、存儲(chǔ)和網(wǎng)絡(luò)設(shè)備。而對于未來5G產(chǎn)業(yè),只有不斷開放、開源,才能獲得人生的“開掛”。
往期好文合集
最 后
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!