瞭解 HarmonyOS

来源:https://www.cnblogs.com/depeng8899/archive/2023/08/30/17666874.html
-Advertisement-
Play Games

本章提供了 HarmonyOS 的基礎知識,包括定義、發展歷程、特點、架構和與其他操作系統的比較。這為後續的開發工作打下了堅實的基礎。 ...


引言

在開始 HarmonyOS 開發之前,瞭解其背景、特點和架構是非常重要的。本章將為你提供一個全面的 HarmonyOS 概覽。

目錄

    1. 什麼是 HarmonyOS
    1. HarmonyOS 的發展歷程
    1. HarmonyOS 的特點
    1. HarmonyOS 的架構
    1. HarmonyOS 與其他操作系統的比較

1. 什麼是 HarmonyOS

HarmonyOS 是華為推出的一個全場景、多設備類型、多內核的分散式操作系統。
鴻蒙(即HarmonyOS,開發代號Ark,正式名稱為華為終端鴻蒙智能設備操作系統軟體)是華為公司自2012年以來開發的一款可相容AOSP的操作系統。系統性能包括利用“分散式”技術將各款設備融合成一個“超級終端”,便於操作和共用各設備資源。

系統架構支持多內核,包括Linux內核、LiteOS和鴻蒙微內核,可按各種智能設備選擇所需內核,例如在低功耗設備上使用LiteOS內核。

華為於2021年6月正式發佈了HarmonyOS。

定義

全場景: HarmonyOS 旨在提供一個統一的操作系統,適用於多種類型的設備,如智能手機、平板、電視、智能穿戴、車載系統、智能家居等。這意味著開發者可以使用一套代碼開發多種設備的應用,大大減少了開發的複雜性和成本。

多設備類型: HarmonyOS 不僅限於移動設備,還包括 IoT 設備、車載系統、工業設備等。這意味著 HarmonyOS 可以應用於多種場景,滿足不同類型設備的需求。

多內核: HarmonyOS 支持多種處理器架構,包括 ARM、x86、RISC-V 等。這意味著 HarmonyOS 可以運行在不同的硬體平臺上。

2. HarmonyOS 的發展歷程

2019年: 華為首次發佈 HarmonyOS,這是一個全新的操作系統,旨在提供一個統一的、分散式的操作系統。

2020年: 華為推出 HarmonyOS 2.0 版本,支持更多設備類型,包括智能手機、平板、電視、智能穿戴等。

2021年: 華為推出 HarmonyOS 3.0 版本,增加了更多高級特性,如 AI 能力、分散式數據管理、分散式軟匯流排等。

3. HarmonyOS 的特點

分散式架構: HarmonyOS 的最大特點是分散式架構,它可以讓多個設備協同工作,共用資源。這意味著開發者可以更容易地開發多設備協同的應用,提供更好的用戶體驗。

安全性: HarmonyOS 內置了多層次的安全機制,包括安全啟動、安全運行、安全數據、安全通信等。這意味著 HarmonyOS 可以提供更高的安全性,保護用戶的數據和隱私。

低延遲: HarmonyOS 優化了任務調度、記憶體管理、IO 處理等,減少了系統的延遲。這意味著 HarmonyOS 可以提供更流暢的用戶體驗。

4. HarmonyOS 的架構

HarmonyOS 的架構分為四層:

內核層

  • 內核子系統:HarmonyOS採用多內核設計,支持針對不同資源受限設備選用適合的OS內核。內核抽象層(KAL,Kernel Abstract Layer)通過屏蔽多內核差異,對上層提供基礎的內核能力,包括進程/線程管理、記憶體管理、文件系統、網路管理和外設管理等。
  • 驅動子系統:硬體驅動框架(HDF)是HarmonyOS硬體生態開放的基礎,提供統一外設訪問能力和驅動開發、管理框架。

系統服務層

系統服務層是HarmonyOS的核心能力集合,通過框架層對應用程式提供服務。該層包含以下幾個部分:

  • 系統基本能力子系統集:為分散式應用在HarmonyOS多設備上的運行、調度、遷移等操作提供了基礎能力,由分散式軟匯流排、分散式數據管理、分散式任務調度、方舟多語言運行時、公共基礎庫、多模輸入、圖形、安全、AI等子系統組成。其中,方舟運行時提供了C/C++/JS多語言運行時和基礎的系統類庫,也為使用方舟編譯器靜態化的Java程式(即應用程式或框架層中使用Java語言開發的部分)提供運行時。
  • 基礎軟體服務子系統集:為HarmonyOS提供公共的、通用的軟體服務,由事件通知、電話、多媒體、DFX(Design For X) 、MSDP&DV等子系統組成。
  • 增強軟體服務子系統集:為HarmonyOS提供針對不同設備的、差異化的能力增強型軟體服務,由智慧屏專有業務、穿戴專有業務、IoT專有業務等子系統組成。
  • 硬體服務子系統集:為HarmonyOS提供硬體服務,由位置服務、生物特征識別、穿戴專有硬體服務、IoT專有硬體服務等子系統組成。

根據不同設備形態的部署環境,基礎軟體服務子系統集、增強軟體服務子系統集、硬體服務子系統集內部可以按子系統粒度裁剪,每個子系統內部又可以按功能粒度裁剪。

框架層
框架層為HarmonyOS應用開發提供了ArkTS/JS/C/C++/Java等多語言的用戶程式框架,兩種UI框架(包括適用於ArkTS/JS語言的方舟開發框架即ArkUI、適用於Java語言的Java UI框架),以及各種軟硬體服務對外開放的多語言框架API。根據系統的組件化裁剪程度,HarmonyOS設備支持的API也會有所不同。

應用層
應用層包括系統應用和第三方非系統應用。HarmonyOS的應用由一個或多個FA(Feature Ability)或PA(Particle Ability)組成。其中,FA有UI界面,提供與用戶交互的能力;而PA無UI界面,提供後臺運行任務的能力以及統一的數據訪問抽象。FA在進行用戶交互時所需的後臺數據訪問也需要由對應的PA提供支撐。基於FA/PA開發的應用,能夠實現特定的業務功能,支持跨設備調度與分發,為用戶提供一致、高效的應用體驗。

5. HarmonyOS 與其他操作系統的比較

5.1 與 Android、iOS 的比較

  • 架構:
    • HarmonyOS 使用了微內核架構,這意味著它的內核更小,更輕量級,可以提供更高的系統穩定性和安全性。
    • Android 使用了 Linux 內核,這是一個巨集內核架構。
    • iOS 使用了 XNU 內核,這是一個混合內核架構。
  • 分散式能力:
    • HarmonyOS 的最大特點是分散式架構,可以讓多個設備協同工作,共用資源。這意味著開發者可以更容易地開發多設備協同的應用,提供更好的用戶體驗。
    • Android 和 iOS 主要是為單一設備設計的,雖然也有一些分散式能力,但不如 HarmonyOS。
  • 安全性:
    • HarmonyOS 內置了多層次的安全機制,包括安全啟動、安全運行、安全數據、安全通信等。
    • Android 和 iOS 也有很高的安全性,但 HarmonyOS 在安全性上做了更多的優化。
  • 開發語言:
    • HarmonyOS 支持多種編程語言,包括 Java、JavaScript、C++ 等。
    • Android 主要使用 Java 和 Kotlin。
    • iOS 主要使用 Objective-C 和 Swift。

5.2 與 Linux、Windows 的比較

  • 架構:
    • HarmonyOS 使用了微內核架構。
    • Linux 使用了巨集內核架構。
    • Windows 使用了混合內核架構。
  • 分散式能力:
    • HarmonyOS 有很強的分散式能力。
    • Linux 和 Windows 主要是為單一設備設計的。
  • 安全性:
    • HarmonyOS 內置了多層次的安全機制。
    • Linux 和 Windows 也有很高的安全性,但 HarmonyOS 在安全性上做了更多的優化。
  • 開發語言:
    • HarmonyOS 支持多種編程語言。
    • Linux 和 Windows 支持多種編程語言,但開發語言的選擇可能會受到一些限制。

本章提供了 HarmonyOS 的基礎知識,包括定義、發展歷程、特點、架構和與其他操作系統的比較。這為後續的開發工作打下了堅實的基礎。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 眾所周知,Mysql的事務隔離級別分為4個,分別是READ-UNCOMMITED,READ-COMMITED,REPEATABLE-READ,SERIALIZABLE,在常規資料庫概論中,前三種事務隔離級別會帶來臟讀、不可重覆讀、幻讀的問題,對應關係如下: ||臟讀|不可重覆讀|幻讀 | | | | ...
  • MySQL 到 SelectDB 的實時數據同步技術,通過 NineData 的數據複製控制台,僅需輕點滑鼠,即可輕鬆完成 MySQL 到 SelectDB 的同步任務配置。NineData 採用先進的數據同步技術,確保數據實時同步到 SelectDB,極大地降低了數據延遲,讓您的決策基於最新數據。 ...
  • 在這個燥熱的夏天,又突然收到告警,分庫分表的主鍵衝突了,這還能忍?不,堅決不能忍,必須解決掉!後面咱們慢慢道來是如何破局的,如何走了一條坎坷路…… ...
  • - 0.寫在前面 - 1.準備工作 - 1.1 準備Docker環境 - 1.2 下載源碼包 - 1.3 修改MySQL Shell源碼包 - 1.4 編譯相關軟體包 - 2.準備編譯MySQL Shell - 2.1 編譯MySQL 8.0.32 - 2.2 編譯MySQL Shell 8.0.3 ...
  • 今天來說一個老生常談的問題,來看一個實際案例:業務中往往都會通過緩存來提高查詢效率,降低資料庫的壓力,尤其是在分散式高併發場景下,大量的請求直接訪問Mysql很容易造成性能問題。 ...
  • 在mybatis的xml中使用MySQL的`DATE_FORMAT` 函數可以將日期類型的數據格式化為字元串。然而,儘管這個函數很方便,但在處理大量數據時可能會引起性能問題,特別是在複雜查詢中。這是因為 `DATE_FORMAT` 函數的計算是在資料庫引擎層級進行的,而不是在應用程式代碼中。 以下是 ...
  • 原文地址: https://www.mssqltips.com/sqlservertip/3572/recovering-a-sql-server-tde-encrypted-database-successfully/ 問題: 我的任務是在具有敏感信息的SQL Server資料庫上設置透明數據加密 ...
  • ## 前言 最近接到一個任務是將一個unity開發的游戲接入到現有的Android項目里,然後在現有的App實現點擊一個按鈕打開游戲,並且在游戲內提供一個可以退出到App的按鈕。 整體需求是很明確的,難點主要有兩個: 1. 我們公司是做應用開發的,沒有任何游戲開發的技能儲備。 2. 在游戲中需要和N ...
一周排行
    -Advertisement-
    Play Games
  • 1、預覽地址:http://139.155.137.144:9012 2、qq群:801913255 一、前言 隨著網路的發展,企業對於信息系統數據的保密工作愈發重視,不同身份、角色對於數據的訪問許可權都應該大相徑庭。 列如 1、不同登錄人員對一個數據列表的可見度是不一樣的,如數據列、數據行、數據按鈕 ...
  • 前言 上一篇文章寫瞭如何使用RabbitMQ做個簡單的發送郵件項目,然後評論也是比較多,也是準備去學習一下如何確保RabbitMQ的消息可靠性,但是由於時間原因,先來說說設計模式中的簡單工廠模式吧! 在瞭解簡單工廠模式之前,我們要知道C#是一款面向對象的高級程式語言。它有3大特性,封裝、繼承、多態。 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 介紹 Nodify是一個WPF基於節點的編輯器控制項,其中包含一系列節點、連接和連接器組件,旨在簡化構建基於節點的工具的過程 ...
  • 創建一個webapi項目做測試使用。 創建新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等 創建一個Http請求幫助類以及方法,用於獲取指定URL的信息 使用http請求訪問指定url,先運行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json數據。我們主要解析 大事記 部 ...
  • 最近在不少自媒體上看到有關.NET與C#的資訊與評價,感覺大家對.NET與C#還是不太瞭解,尤其是對2016年6月發佈的跨平臺.NET Core 1.0,更是知之甚少。在考慮一番之後,還是決定寫點東西總結一下,也回顧一下.NET的發展歷史。 首先,你沒看錯,.NET是跨平臺的,可以在Windows、 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 添加節點(nodes) 通過上一篇我們已經創建好了編輯器實例現在我們為編輯器添加一個節點 添加model和viewmode ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...
  • 類型檢查和轉換:當你需要檢查對象是否為特定類型,並且希望在同一時間內將其轉換為那個類型時,模式匹配提供了一種更簡潔的方式來完成這一任務,避免了使用傳統的as和is操作符後還需要進行額外的null檢查。 複雜條件邏輯:在處理複雜的條件邏輯時,特別是涉及到多個條件和類型的情況下,使用模式匹配可以使代碼更 ...
  • 在日常開發中,我們經常需要和文件打交道,特別是桌面開發,有時候就會需要載入大批量的文件,而且可能還會存在部分文件缺失的情況,那麼如何才能快速的判斷文件是否存在呢?如果處理不當的,且文件數量比較多的時候,可能會造成卡頓等情況,進而影響程式的使用體驗。今天就以一個簡單的小例子,簡述兩種不同的判斷文件是否... ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...