成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

還不知道鴻蒙OS底層實現?老司機帶你走進微內核

原創 精選
系統 其他OS
由于HarmonyOS需要對不同的硬件資源進行適配,因此需要內核具備靈活性、可擴展性,可靠性和可移植性,同時還需要對分布式系統的支持,因此微內核的應用就成了HarmonyOS的首選。今天就帶大家了解微內核,以及它在HarmonyOS中的應用。

作者 | 崔皓

審校 | 孫淑娟

眾所周知,HarmonyOS具備分布式軟總線、分布式數據管理和分布式安全三大核心能力。多種設備之間能夠實現硬件互助、資源共享,依賴的關鍵技術。同時還實現了包括分布式軟總線、分布式設備虛擬化、分布式數據管理、分布式任務調度等功能。在被這些眼花繚亂的功能的環繞之下,我們往往忽視了鴻蒙的內核技術,HarmonyOS采用多內核設計,支持針對不同資源受限設備選用適合的OS內核。

由于HarmonyOS需要對不同的硬件資源進行適配,因此需要內核具備靈活性、可擴展性,可靠性和可移植性,同時還需要對分布式系統的支持,因此微內核的應用就成了HarmonyOS的首選。今天就帶大家了解微內核,以及它在HarmonyOS中的應用。

1.鴻蒙OS技術架構 

和其他操作系統類似,鴻蒙OS整體遵從分層設計,如圖1所示,從下往上依次為內核層、系統服務層、框架層和應用層。系統功能按照“系統>子系統>功能/模塊”逐級展開。在多設備部署場景下,支持根據實際需求裁剪某些非必要的子系統或功能/模塊。

圖片

圖1 鴻蒙OS技術架構

如圖1所示,我們可以看到鴻蒙OS的整體架構,而本文我們需要聚焦內核層的架構體系。內核層由內核子系統和驅動子系統組成。

內核子系統:鴻蒙OS采用多內核設計,支持針對不同資源受限設備選用適合的OS內核。內核抽象層(Kernel AbstractLayer,KAL)通過屏蔽多內核差異,對上層提供基礎的內核能力,包括進程/線程管理、內存管理、文件系統、網絡管理和外設管理等。

驅動子系統:硬件驅動框架(HDF)是鴻蒙OS硬件生態開放的基礎,提供統一的外設訪問能力、驅動開發及管理框架。

而在內核子系統中包含了LiteOS的內核就是今天的主角,也就是我們要提到的微內核,為什么鴻蒙OS在具備Linux Kernel的情況下還要引入LiteOS的微內核技術作為補充呢?接下來就讓我們一起走進微內核的世界。

2.宏內核與微內核 

在描述微內核之前,要了解什么是內核。大家都知道計算機是由諸多硬件組成的,包括:CPU、內存、磁盤、網卡、顯示器、鍵盤、鼠標等等。為了能夠管理和組織這些硬件資源,我們創造操作系統,而內核就是操作系統中的核心部分。

就好像我們常用的Windows操作系統,Unix以及Linux操作系統,它們都存在內核。

而目前市面上、絕大多數操作系統都是宏內核,其典型代表就是Linux。

宏內核中的“宏”字表現為,將內核服務作為整體,所有服務都“伸手即得”。也就是將控制計算機的各個模塊,都聚合在內核中方便管理。如下圖2所示,CPU調度、文件系統、內存管理、應用管理調度、中斷處理、設備驅動都放在內核中。如果應用程序需要申請內存,內核直接使用“內存管理”給應用分配內存,使用“應用管理進程調度”給應用分配進程,沒有額外的消耗。

圖片

圖2 宏內核

宏內核的這種處事方式就好像一個公司將所有的職能部門都拉到一個辦公室辦公,這個辦公室有好多張桌子每個桌子上面都有各個職能部門的辦事員,操作系統要處理什么事情都通過宏內核這個大辦公室來解決,因此解決問題是很高效的。但是問題也很明顯,隨著系統的不斷發展,內核中會加入各種不同的模塊,就好像大辦公室需要更多的桌子,從而坐下更多的人。內核中模塊不斷增大,就需要更高的硬件資源來支持,同時模塊的增多也帶來了系統復雜性的增加,提高了系統崩潰的風險,例如內核中有一個模塊掛了會導致整個內核的崩潰。

為了解決宏內核所面臨的問題,就推出了微內核的概念, 微內核是內核的一種精簡形式。它將與宏內核集成在一起的系統服務分離出去,讓這些服務模塊變成按需加載,也就是把這些服務變成可選項而非必選項,如果需要這些服務就作為內核的一種擴展。如果需要對系統內核進行升級,只要用新模塊替換舊模塊,或者在原有服務的基礎擴展新的服務。這樣就不需要改變整個操作系統的內核。

圖片

圖3 宏內核與微內核的比較

如圖3所示,微內核與宏內核的區別在藍色的部分,微內核將宏內核藍色部分的系統服務進行拆解,將一些重要的服務依舊留在內核中,例如:進程間通信、虛擬內存、進程調度等。而將其他服務放到了內核之外,這些服務直接在用戶態運行,內核態的一些核心服務會和這些被剝離的服務進行交互,保證進程間的通信。同時,這些用戶態的服務會直接服務于應用程序。

如果將圖3進行化簡就得到了圖4, 如圖4所示,在宏內核的時代所有的服務都在內核中,內核中的服務為應用提供服務,而到了微內核時代,將一些服務從內核移到了外邊,這些被移出去的服務依舊與內核中的核心服務保持聯系,同時為應用服務。

微內核結構使用一個水平分層代替傳統的縱向分層,所有微內核之外的操作系統構件都被當作服務進程來實現,它們可以通過微內核傳遞消息來實現相互之間的交互。因此,微內核還可以驗證消息并授權訪問硬件,而且微內核還執行保護功能,阻止非法的信息等。

例如,應用程序如果要打開一個文件,則它發送消息給文件系統服務,如果他想創建一個進程或線程,則它發送消息給進程服務進程。每個服務進程之間可以相互通信,并可以調用微內核中的功能。

圖片

圖4 宏內核與微內核簡圖

按照圖4的操作,微內核包含的服務數會減少,實現服務的代碼量也會有明顯的下降。微內核盡可能簡化內核,將更多的用戶服務程序放置在內核之外完成。內核僅僅放置最核心以及經常性需要使用到的程序代碼。

如果還是用辦公室來打比方,微內核將大辦公室縮小了,將其中一些辦公桌移到了辦公室外邊,在大辦公室之外設置了多個小辦公室安置這些辦公桌。在大辦公室內只安放重要的核心的服務,用來管理和協調小辦公室的工作。

鴻蒙OS在發布會上強調了多個特性用來強調鴻蒙OS作為一個操作系統而言本身的突破和優勢在哪里,實際上在使用微內核以后鴻蒙OS具備下面四點能力的提升:

  • 采用分布式架構,可以實現跨終端的能力互助共享。
  • 低時延和高性能IPC帶來高流暢的使用體驗。
  • 基于微內核技術的可信執行環境,通過形式化方法提升了內核安全,全面提升全場景終端設備的安全能力。
  • 鴻蒙OS可支撐開發者實現一次開發、多端部署,最終實現跨終端生態共享。

3.微內核的優點 

上面我們介紹了什么是微內核,以及宏內核與微內核的區別,下面來看看微內核具備哪些優點。

  • 提供一致的接口:進程不用區分內核服務還是用戶服務,并且都是通過消息傳遞;
  • 可擴展性:當需要增加新的服務時,只需要增加新的服務進程,而不需要修改內核;
  • 靈活性:可以定制服務進程,例如分布式系統需要增加安全性相關的服務進程;
  • 可移植性:大部分處理器專用代碼在微內核中,如果需要移植到另一個處理器上時,只需要修改少量的代碼;
  • 可靠性:足夠小的微內核能夠進行充分的測試,從而提供更穩定的代碼。只提供少量的API和交互方式,減少組件之間的相互影響;
  • 分布式系統的支持:如果一個客戶往一個服務進程發送消息時,該消息包含請求服務的標識符。在分布式系統被配置為所有進程和服務都具有唯一的標識符,微內核會為這類標識符提供單獨的系統映像,讓進程消息發送透明化;
  • 適用于面向對象設計:微內核設計和操作系統模塊化的開發都可以借助面向對象的原理。例如,一種方式是構造組件,組件間通過組建接口交互,它們可以通過搭積木的方式構件軟件。

4.LiteOS 的內核模塊 

前面提到了鴻蒙OS使用了微內核提升操作系統的靈活性、可擴展性,可靠性和可移植性,為分布式系統的設計提供支撐。接下來就來看看LiteOS 的內核是如何實現微內核的。在文章的第一個部分就提到了在鴻蒙OS的內核子系統中就實現了LiteOS,LiteOS是華為面向物聯網領域開發的一個基于實時內核的輕量級操作系統。它支持任務管理、內存管理、時間管理、通信機制、中斷管理、隊列管理、事件管理、定時器等操作系統基礎組件,更好地支持低功耗場景,支持tickless機制,支持定時器對齊。

這里就展開說一下LiteOS四大核心模塊。

任務管理

任務是競爭系統資源的最小運行單元。LiteOS支持多任務運行,一個任務就表示一個線程,任務之間可以進行切換和通信。LiteOS的任務管理模塊提供任務創建、刪除、延時、掛起和恢復、更改任務優先級、鎖定任務調度和解鎖任務調度、根據任務控制塊查詢任務ID、根據ID查詢任務控制塊信息等功能。LiteOS使用搶占式調度內核,高優先級的任務可以打斷低優先級任務,同優先級任務會進行時間片輪轉調度。同時,每一個任務都含有一個任務控制塊(TCB),它包含了任務的所有狀態和運行信息。T具體包括:上下文棧指針(stack pointer)、任務狀態(包括就緒、運行、阻塞、退出4種狀態)、任務棧大小(任務棧里保存著局部變量、寄存器、函數參數、函數返回地址等)、任務優先級、任務ID、任務名等信息。

在任務服務初始化時,會先申請TCB需要的內存空間。任務初始化完成,則系統對TCB內容進行初始化。用戶創建任務時,系統會將任務棧進行初始化,預置上下文。此外,系統還會將“任務入口函數”地址放在相應位置。

內存管理

LiteOS的內存管理模塊管理系統的內存資源,主要包括內存的初始化、分配及釋放。

其目的是管理用戶和OS對內存的使用,使內存的利用率和使用效率達到最優,同時最大限度地解決系統的內存碎片問題。LiteOS的內存管理分為動態內存管理和靜態內存管理。

動態內存管理

在動態內存池中分配用戶指定大小的內存塊。

優點:按需分配。缺點:可能出現碎片。

靜態內存管理

在靜態內存池中分配用戶固定(預設配置)大小的內存塊。優點:分配和釋放效率高,無碎片。缺點:不能按需申請。

中斷管理

在LiteOS中,用戶可以通過中斷申請,注冊中斷處理程序,并且指定CPU響應中斷請求時所執行的具體操作。避免CPU把大量時間耗費在等待、查詢外設狀態的操作上,因此將大大提高系統實時性以及執行效率。按照硬件可以對中斷劃分為三類:設備、中斷控制器、CPU本身。

  • 設備:發起中斷的源,當設備需要請求CPU時,產生一個中斷信號,該信號連接至中斷控制器。
  • 中斷控制器:中斷控制器是CPU眾多外設中的一個,它一方面接收其它外設中斷引腳的輸入,另一方面,它會發出中斷信號給CPU。可以通過對中斷控制器編程實現對中斷源的優先級、觸發方式、打開和關閉源等設置操作。
  • CPU:CPU會響應中斷源的請求,中斷當前正在執行的任務,轉而執行中斷處理程序。

信號量管理

信號量(Semaphore)是一種實現任務間通信的機制,可以用于任務之間同步或臨界資源的互斥訪問。

如圖5所示,信號量可以被任務線程獲取,不同的信號量通過信號量索引號來唯一確定,每個信號量都有一個計數值和任務隊列。通常信號量的計數值表示有效的資源數,即剩下的可被占用的互斥資源數。當任務申請(Pend)信號量時,如果申請成功,則信號量的計數值遞減,如申請失敗,則掛起在該信號量的等待任務隊列上,一旦有任務釋放該信號量,則等待任務隊列中的任務被喚醒開始執行。

圖片

圖 5 信號量運作示意圖

上面提到了信號量的使用方式,由于它是對資源使用量的計數器,因此以下兩個場景經常會出現信號量的身影。

  • 任務互斥:當多個任務同時對一個臨界資源進行訪問時,會對這個資源維護一個信號量,初始值為1,當有任務線程訪問時就將這個值減1,此時如果其他任務線程也訪問該資源會先檢查信號量,如果小于等于0就等待。當之前的任務線程訪問完畢,釋放資源時會將信號量加1,此時其他任務線程就可以訪問該資源了。
  • 資源計數:用于生產者與消費者的場景可以通過信號量的遞增或者遞減來表示資源的狀態。

5.總結 

本文從鴻蒙OS的架構特性入手,發現在內核子系統中使用了LiteOS的微內核架構,從而引出了微內核在鴻蒙架構中扮演的特殊角色。為了解釋什么是微內核,先從操作系統內核說起,接著介紹了常見的宏內核將所有服務都集于一身,微內核為了提升靈活性、可擴展性,可靠性和可移植性,將一些非核心的服務從內核中剝離,只留一些核心服務在內核中減少了內核的容量,降低了出錯的風險。最后,又回到開始時介紹的LiteOS ,并介紹了它的四大核心模塊,包括:任務管理、內存管理、中斷管理以及信號管理。

作者介紹

崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。曾任惠普技術專家。樂于分享,撰寫了很多熱門技術文章,閱讀量超過60萬。《分布式架構原理與實踐》作者。

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2016-07-22 17:55:07

云計算

2019-12-25 14:20:01

Zookeeper框架大數據

2022-09-19 18:32:22

函數編程語言

2022-05-05 12:02:45

SCSS函數開發

2020-12-14 07:51:16

JS 技巧虛值

2018-09-02 15:43:56

Python代碼編程語言

2022-07-17 06:53:24

微服務架構

2017-03-17 15:10:52

微信消息撤回功能

2019-12-24 09:49:02

微軟英語瀏覽器

2010-03-12 09:15:28

Firefox新功能

2022-04-15 07:51:12

off-heap堆外內存JVM

2021-10-22 09:41:26

橋接模式設計

2023-01-02 10:08:42

StampedLocAQS框架

2018-07-10 11:33:58

計算器iPhone刪除

2021-02-03 08:24:32

JavaScript技巧經驗

2014-12-01 09:41:25

2015-07-13 08:49:54

2021-03-18 14:02:56

iOS蘋果細節

2020-10-28 08:06:09

Vue3框架數據

2024-03-07 07:58:26

Web開發響應媒體查詢工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线一区二区观看 | 久久国产精品无码网站 | 在线观看视频福利 | 中文字幕 在线观看 | 成人免费精品 | 日日想夜夜操 | 国产中文字幕在线观看 | 黄色一级大片在线免费看产 | 午夜寂寞影院在线观看 | 国产一区二区不卡 | 久久成人久久 | 喷水毛片 | 国产亚洲第一页 | 成人伊人 | 成人无遮挡毛片免费看 | xxxxx免费视频| 在线看亚洲 | 久久网一区二区 | 免费福利视频一区二区三区 | 国产激情视频 | 色小姐综合网 | 91免费在线 | 色综合久 | 中文字幕91av | 久久精品国产一区二区三区 | 中文字幕 在线观看 | 免费a v网站| 国产成人a亚洲精品 | 欧美区日韩区 | 麻豆精品国产91久久久久久 | 国产成人免费网站 | 五月激情婷婷在线 | 精品亚洲一区二区三区 | 免费性视频 | 欧美日韩黄色一级片 | 欧美一区二区精品 | 99精品99| 日韩在线欧美 | 国产精品99视频 | 毛片网在线观看 | 国产免费看 |