HarmonyOS是一款「面向未來」、面向全場景(移動辦公、運動健康、社交通訊、媒體娛樂等)的分散式作業系統。在傳統的單裝置系統能力的基礎上,HarmonyOS提出了基於同一套系統能力、適配多種終端形態的分散式理念,能夠支援多種終端裝置。
對消費者而言,HarmonyOS能夠將生活場景中的各類終端進行能力整合,可以實現不同的終端裝置之間的快速連線、能力互助、資源共用,匹配合適的裝置、提供流暢的全場景體驗。
對應用開發者而言,HarmonyOS採用了多種分散式技術,使得應用程式的開發實現與不同終端裝置的形態差異無關。這能夠讓開發者聚焦上層業務邏輯,更加便捷、高效地開發應用。
對裝置開發者而言,HarmonyOS採用了元件化的設計方案,可以根據裝置的資源能力和業務特徵進行靈活裁剪,滿足不同形態的終端裝置對於作業系統的要求。
在這樣的特殊的歷史時期,鴻蒙邁出了第一步。我們未來的繁榮可期,未來已來。
分散式軟匯流排是多種終端裝置的統一基座,為裝置之間的互聯互通提供了統一的分散式通訊能力,能夠快速發現並連線裝置,高效地分發任務和傳輸資料。分散式軟匯流排示意圖見圖1。
分散式裝置虛擬化平臺可以實現不同裝置的資源融合、裝置管理、資料處理,多種裝置共同形成一個超級虛擬終端。針對不同型別的任務,為使用者匹配並選擇能力合適的執行硬體,讓業務連續地在不同裝置間流轉,充分發揮不同裝置的資源優勢。分散式裝置虛擬化示意圖見圖2。
分散式資料管理基於分散式軟匯流排的能力,實現應用程式資料和使用者資料的分散式管理。使用者資料不再與單一物理裝置繫結,業務邏輯與資料儲存分離,應用跨裝置執行時資料無縫銜接,為打造一致、流暢的使用者體驗創造了基礎條件。分散式資料管理示意圖見圖3。
分散式任務排程基於分散式軟匯流排、分散式資料管理、分散式Profile等技術特性,構建統一的分散式服務管理(發現、同步、註冊、呼叫)機制,支援對跨裝置的應用進行遠端啟動、遠端呼叫、遠端連線以及遷移等操作,能夠根據不同裝置的能力、位置、業務執行狀態、資源使用情況,以及使用者的習慣和意圖,選擇合適的裝置執行分散式任務。
圖4以應用遷移為例,簡要地展示了分散式任務排程能力。
HarmonyOS提供了使用者程式框架、Ability框架以及UI框架,支援應用開發過程中多終端的業務邏輯和介面邏輯進行復用,能夠實現應用的一次開發、多端部署,提升了跨裝置應用的開發效率。一次開發、多端部署示意圖見圖5。
HarmonyOS通過元件化和小型化等設計方法,支援多種終端裝置按需彈性部署,能夠適配不同類別的硬體資源和功能需求。支撐通過編譯鏈關係去自動生成元件化的依賴關係,形成元件樹依賴圖,支撐產品系統的便捷開發,降低硬體裝置的開發門檻。
支援各元件的選擇(元件可有可無):根據硬體的形態和需求,可以選擇所需的元件。
支援元件內功能集的設定(元件可大可小):根據硬體的資源情況和功能需求,可以選擇設定元件中的功能集。例如,選擇設定圖形框架元件中的部分控制元件。
支援元件間依賴的關聯(平臺可大可小):根據編譯鏈關係,可以自動生成元件化的依賴關係。例如,選擇圖形框架元件,將會自動選擇依賴的圖形引擎元件等。
HarmonyOS整體遵從分層設計,從下向上依次為:核心層、系統服務層、框架層和應用層。系統功能按照「系統 > 子系統 > 功能/模組」逐級展開,在多裝置部署場景下,支援根據實際需求裁剪某些非必要的子系統或功能/模組。HarmonyOS技術架構如圖1所示。
核心層
核心子系統:HarmonyOS採用多核心設計,支援針對不同資源受限裝置選用適合的OS核心。核心抽象層(KAL,KernelAbstract Layer)通過遮蔽多核心差異,對上層提供基礎的核心能力,包括程序/執行緒管理、記憶體管理、檔案系統、網路管理和外設管理等。
驅動子系統:HarmonyOS驅動框架(HDF)是HarmonyOS硬體生態開放的基礎,提供統一外設存取能力和驅動開發、管理框架。
系統服務層
系統服務層是HarmonyOS的核心能力集合,通過框架層對應用程式提供服務。該層包含以下幾個部分:
系統基本能力子系統集:為分散式應用在HarmonyOS多裝置上的執行、排程、遷移等操作提供了基礎能力,由分散式軟匯流排、分散式資料管理、分散式任務排程、方舟多語言執行時、公共基礎庫、多模輸入、圖形、安全、AI等子系統組成。其中,方舟執行時提供了C/C++/JS多語言執行時和基礎的系統類庫,也為使用方舟編譯器靜態化的Java程式(即應用程式或框架層中使用Java語言開發的部分)提供執行時。
基礎軟體服務子系統集:為HarmonyOS提供公共的、通用的軟體服務,由事件通知、電話、多媒體、DFX、MSDP&DV等子系統組成。
增強軟體服務子系統集:為HarmonyOS提供針對不同裝置的、差異化的能力增強型軟體服務,由智慧屏專有業務、穿戴專有業務、IoT專有業務等子系統組成。
硬體服務子系統集:為HarmonyOS提供硬體服務,由位置服務、生物特徵識別、穿戴專有硬體服務、IoT專有硬體服務等子系統組成。
根據不同裝置形態的部署環境,基礎軟體服務子系統集、增強軟體服務子系統集、硬體服務子系統集內部可以按子系統粒度裁剪,每個子系統內部又可以按功能粒度裁剪。
框架層
框架層為HarmonyOS的應用程式提供了Java/C/C++/JS等多語言的使用者程式框架和Ability框架,以及各種軟硬體服務對外開放的多語言框架API;同時為採用HarmonyOS的裝置提供了C/C++/JS等多語言的框架API,不同裝置支援的API與系統的元件化裁剪程度相關。
應用層
應用層包括系統應用和第三方非系統應用。HarmonyOS的應用由一個或多個FA(Feature Ability)或PA(Particle Ability)組成。其中,FA有UI介面,提供與使用者互動的能力;而PA無UI介面,提供後臺執行任務的能力以及統一的資料存取抽象。基於FA/PA開發的應用,能夠實現特定的業務功能,支援跨裝置排程與分發,為使用者提供一致、高效的應用體驗。
在搭載HarmonyOS的分散式終端上,可以保證「正確的人,通過正確的裝置,正確地使用資料」。
在分散式終端場景下,「正確的人」指通過身份認證的資料存取者和業務操作者。「正確的人」是確保使用者資料不被非法存取、使用者隱私不洩露的前提條件。HarmonyOS通過以下三個方面來實現協同身份認證:
零信任模型:HarmonyOS基於零信任模型,實現對使用者的認證和對資料的存取控制。當使用者需要跨裝置存取資料資源或者發起高安全等級的業務操作(例如,對安防裝置的操作)時,HarmonyOS會對使用者進行身份認證,確保其身份的可靠性。
多因素融合認證:HarmonyOS通過使用者身份管理,將不同裝置上標識同一使用者的認證憑據關聯起來,用於標識一個使用者,來提高認證的準確度。
協同互助認證:HarmonyOS通過將硬體和認證能力解耦(即資訊採集和認證可以在不同的裝置上完成),來實現不同裝置的資源池化以及能力的互助與共用,讓高安全等級的裝置協助低安全等級的裝置完成使用者身份認證。
通過「分散式多端協同身份認證」來保證「正確的人」。
通過「在分散式終端上構築可信執行環境」來保證「正確的裝置」。
通過「分散式資料在跨終端流動的過程中,對資料進行分類分級管理」來保證「正確地使用資料」。
在分散式終端場景下,只有保證使用者使用的裝置是安全可靠的,才能保證使用者資料在虛擬終端上得到有效保護,避免使用者隱私洩露。
安全啟動
確保源頭每個虛擬裝置執行的系統韌體和應用程式是完整的、未經篡改的。通過安全啟動,各個裝置廠商的映象包就不易被非法替換為惡意程式,從而保護使用者的資料和隱私安全。
可信執行環境
提供了基於硬體的可信執行環境(TEE,Trusted Execution Environment)來保護使用者的個人敏感資料的儲存和處理,確保資料不洩露。由於分散式終端硬體的安全能力不同,對於使用者的敏感個人資料,需要使用高安全等級的裝置進行儲存和處理。HarmonyOS使用基於數學可證明的形式化開發和驗證的TEE微核心,獲得了商用OS核心CC EAL5+的認證評級。
裝置證書認證
支援為具備可信執行環境的裝置預置裝置證書,用於向其他虛擬終端證明自己的安全能力。對於有TEE環境的裝置,通過預置PKI(Public Key Infrastructure)裝置證書給裝置身份提供證明,確保裝置是合法製造生產的。裝置證書在產線進行預置,裝置證書的私鑰寫入並安全儲存在裝置的TEE環境中,且只在TEE內進行使用。在必須傳輸使用者的敏感資料(例如金鑰、加密的生物特徵等資訊)時,會在使用裝置證書進行安全環境驗證後,建立從一個裝置的TEE到另一裝置的TEE之間的安全通道,實現安全傳輸。如圖1所示。
在分散式終端場景下,需要確保使用者能夠正確地使用資料。HarmonyOS圍繞資料的生成、儲存、使用、傳輸以及銷燬過程進行全生命週期的保護,從而保證個人資料與隱私、以及系統的機密資料(如金鑰)不洩漏。
資料生成:根據資料所在的國家或組織的法律法規與標準規範,對資料進行分類分級,並且根據分類設定相應的保護等級。每個保護等級的資料從生成開始,在其儲存、使用、傳輸的整個生命週期都需要根據對應的安全策略提供不同強度的安全防護。虛擬超級終端的存取控制系統支援依據標籤的存取控制策略,保證資料只能在可以提供足夠安全防護的虛擬終端之間儲存、使用和傳輸。
資料儲存:HarmonyOS通過區分資料的安全等級,儲存到不同安全防護能力的分割區,對資料進行安全保護,並提供金鑰全生命週期的跨裝置無縫流動和跨裝置金鑰存取控制能力,支撐分散式身份認證協同、分散式資料共用等業務。
資料使用:HarmonyOS通過硬體為裝置提供可信執行環境。使用者的個人敏感資料僅在分散式虛擬終端的可信執行環境中進行使用,確保使用者資料的安全和隱私不洩露。
資料傳輸:為了保證資料在虛擬超級終端之間安全流轉,需要各裝置是正確可信的,建立了信任關係(多個裝置通過華為帳號建立配對關係),並能夠在驗證信任關係後,建立安全的連線通道,按照資料流動的規則,安全地傳輸資料。當裝置之間進行通訊時,需要基於裝置的身份憑據對裝置進行身份認證,並在此基礎上,建立安全的加密傳輸通道。
資料銷燬:銷燬金鑰即銷燬資料。資料在虛擬終端的儲存,都建立在金鑰的基礎上。當銷燬資料時,只需要銷燬對應的金鑰即完成了資料的銷燬。
演講中,華為消費者業務軟體部總裁王成錄表示鴻蒙 2.0 相比 1.0 有一個非常大的提升,同時這是一個非常重要的里程碑。一方面得益於分散式技術的提升,EMUI 的能力過去一年也已經全部重用在了鴻蒙 2.0 系統中;另一方面,鴻蒙 2.0 邁出了賦能第三方生態的第一步:華為已經將其開放給應用廠家做創新。
鴻蒙不是手機系統的簡單替代,是全場景的底座,其三大分散式能力分別是分散式軟匯流排、分散式資料管理和分散式安全的解決方案。
如下圖,分散式軟匯流排是整個鴻蒙系統的底座,其效能無限逼近硬匯流排的能力,讓多裝置可以融為一體,讓系統極速流暢。
在全融合自適應部分,鴻蒙系統實現了異構網路融合,不同裝置可以互聯互通;自發現自連線,幾乎每次更換網路都需要做很繁瑣的設定,基於鴻蒙系統的裝置設定一次就可以自發現自連線;三是動態時延校準,以音畫同步為例,如果把視訊流給大屏,音訊流給音箱,可以實現二者同步。
分散式資料管理
分散式的資料管理讓跨裝置資料處理如同本地一樣方便便捷。在分散式檔案系統層面,遠端檔案跨裝置之間的讀寫如果速度上不來將會很糟糕,華為比業界做的最好的 Samba 系統最低速度快四倍;分散式資料庫層面,跨裝置之間的讀取對比 ContentProvide(同裝置之間的讀取)速度提升了 1.3 倍;分散式檢索的速度比 iOS Core Spotlight 快 1.2 倍。
分散式安全
實際上,在分散式系統裡有非常好的機會可以突破單裝置上的單維度身份認證,在多裝置上可以通過多因子進行更強的身份認證,這樣不僅讓程式碼可以一次編寫、多端執行,還可以讓裝置更加安全。
王成錄表示,華為可以將微核心彈性部署到任何裝置上,並會將該能力開放。在資料層面,華為設定了一系列規則,比如最高階別的資料一定要存在單體能力更強的裝置上,資料的流動一定要有規則,高階別可以存取低階別,反之不行。
https://developer.harmonyos.com/cn/home/
DevEco Studio支援包括智慧屏、智慧穿戴和輕量級智慧穿戴的HarmonyOS應用開發,可以根據工程嚮導輕鬆建立適應於各類裝置的工程,並自動生成對應的程式碼和資源模板。同時,DevEco Studio還提供了多種程式語言供開發者進行HarmonyOS應用開發,包括Java、JS和C/C++三種程式語言,並支援多種語言的混合開發場景。因此,在建立對應裝置的工程時,工具會預置多種Ability的模板,並推薦您使用適合的開發語言。
參考:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415
對計算機知識(領域)有一個宏觀的認識:https://www.zhihu.com/question/265434988
電腦科學領域,從底層向上依次是:
編譯器是連線人類世界與機器世界之間的一座橋樑,任何在手機上的程式都需要經歷軟體開發的過程,軟體開發使用的語言是易於程式設計師理解的高階語言,程式在手機上執行需要轉換成可以高效執行的機器碼,這樣的轉換過程就是由編譯器完成的。可以說編譯器是用來生成軟體的軟體,是連線軟體與晶片的橋樑,其效能,效率直接影響到最基礎的消費者體驗。
面向多裝置、支援多語言的統一程式設計平臺。
OpenArkCompiler是來自華為方舟編譯器的開源專案。華為方舟編譯器(HuaWei Ark Compiler),靜態編譯,執行平臺:HarmonyOS,EMUI,MagicUI等。
能夠將不同語言程式碼編譯成一套可執行檔案,在執行環境中高效執行:
支援多語言聯合優化、消除跨語言呼叫開銷;
更輕量的語言執行時;
軟硬協同充分發揮硬體能效;
支援多樣化的終端裝置平臺。
原始碼:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/home
官網:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/readme
方舟編譯器改變了系統及應用的編譯和執行機制,直接將高階語言編譯成機器碼,讓手機能直接聽懂「高階語言」,消除了虛擬機器器動態編譯的額外開銷,提升了手機執行效率。
同時,方舟編譯器還能夠理解程式特徵、使用適合的指令來執行程式,因此能夠極大程度地發揮出晶片的能力。
目前,方舟編譯器聚焦在 Java 程式碼效能上,未來,方舟編譯器將覆蓋多種程式語言(包括 C/C++、JS 等),多種晶片架構(包括CPU、GPU、IPU等),覆蓋更廣的業務場景。
https://www.openatom.org/#/indexPage
https://developer.huawei.com/consumer/cn/
「開放原子」開源基金會:https://www.openatom.org/#/indexPage
OpenHarmony 的目標是支援可在多種終端裝置上執行。既可執行在百 KB 級別的資源受限裝置和穿戴類裝置上,也可執行在百 MB 級別的智慧家用攝像頭、行車記錄儀等相對資源豐富的裝置上,以及 GB 級別的智慧電視等裝置上。第一個版本支援 128KB-128MB 的記憶體裝置。
技術價值:OpenHarmony 採用了元件化的設計方案,可以根據裝置的資源能力和業務特徵進行靈活裁剪,滿足不同形態的終端裝置對於作業系統的要求。
業務價值:將廣泛應用在智慧家居物聯網終端、智慧穿戴、智慧大屏、汽車智慧座艙、音箱等智慧終端,提供全場景跨裝置的極致體驗。
生態價值:對裝置開發者而言,OpenHarmony 採用了元件化的設計方案,可以根據裝置的資源能力和業務特徵進行靈活裁剪,滿足不同形態的終端裝置對於作業系統的要求。對應用開發者而言,OpenHarmony 統一軟體架構打通了多種終端,使得應用程式的開發實現與不同終端裝置的形態差異無關,降低了開發難度和成本。這能夠讓開發者聚焦上層業務邏輯、便捷開發應用程式。
harmony os原始碼:https://openharmony.gitee.com/openharmony
華為開發者大會2020(Together)丨主題演講直播回看:
https://developer.huawei.com/consumer/cn/training/detail/101600172153624030?channelname=HeZuo58&ha_source=banner