點擊藍字 ╳ 關注我們
開源項目 OpenHarmony是每個人的 OpenHarmony
冷欽街
軟通動力
高級技術專家、產品推薦官
以下內容來自嘉賓分享,不代表開放原子開源基金會觀點一、背景
OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)輕量系統(tǒng)面向MCU類處理器例如ARM Cortex-M、RISC-V 32位的設備,硬件資源極其有限,支持的設備最小內存為128KiB,可以提供多種輕量級網絡協(xié)議,輕量級的圖形框架,以及豐富的IOT總線讀寫部件等。可支撐的產品如智能家居領域的連接類模組、傳感器設備、穿戴類設備等。 在輕量系統(tǒng)內核中,由于可用內存資源少,一般的數據資源都是小批量的,所以其資源管理方式都比較簡單且相似,本文重點講解在輕量系統(tǒng)內核中,典型的資源的存儲和訪問方式。這些典型的資源包括互斥鎖,信號量、消息隊列、事件、定時器等。 本文以互斥鎖為例來探究其內核資源的主要管理方式。 互斥鎖軟件模塊相關的代碼在如下位置 https://gitee.com/openharmony/kernel_liteos_m/blob/master/kernel/src/los_mux.c https://gitee.com/openharmony/kernel_liteos_m/blob/master/kernel/include/los_mux.h二、模塊使能和容量
互斥鎖軟件模塊是編譯可裁剪模塊,可以通過編譯配置宏來打開或者關閉具體的編譯配置宏定義在https://gitee.com/openharmony/kernel_liteos_m/blob/master/kernel/include/los_config.h文件中
?
通過這個文件可知,liteos_m內核默認是使能互斥鎖功能的,但我們根據具體產品可以對其進行設置,如某產品對應的配置文件https://gitee.com/openharmony/device_qemu/blob/master/arm_mps2_an386/liteos_m/board/target_config.h
?
?
這里明確看到此產品使用了互斥鎖功能,如果需要將其關閉,直接修改成0值即可。
互斥鎖支持的最大數目不同產品可以不同,當前這個產品為24,如果產品沒有定義容量限制,那么使用默認容量限制(見los_config.h中)。
?
?1.數據保存方式
由于容量較小,采用數組這種簡單和原始的數據保存方式,在系統(tǒng)初始化的時候申請數組內存。如下(los_mux.c中)
?三、數據訪問方式
由于輕量系統(tǒng)的計算資源相對受限,因此需要在算法上斤斤計較。目前提供了ID方式(數組下標訪問)和鏈表訪問2種方式,如下進行詳細說明。1.通過ID訪問 在los_mux.h中,定義了通過id訪問互斥鎖的方法,其實質就是數組下標訪問,獲取具體互斥鎖資源的地址
?2.通過空閑鏈表訪問
隨著互斥鎖的申請和釋放,系統(tǒng)中當前正在使用的互斥鎖數目是動態(tài)變化的。由于采用了數組存儲以及內存預留的策略,所以數組中的互斥鎖有些是空閑的,有些是正在使用的,并且其狀態(tài)隨著系統(tǒng)的運行過程而無規(guī)律地變化。
若僅依賴于數組方式訪問互斥鎖,則查詢空閑互斥鎖是一個稍耗時的算法,因為要遍歷數組。
為了加快空閑互斥鎖的查詢,本系統(tǒng)采用了將所有空閑互斥鎖組織成鏈表的方法。這樣每次取出鏈表第一個節(jié)點即可,可以極大提升性能。
在los_mux.h中,通過增加muxList字段將所有空閑的互斥鎖組織成鏈表
?
在los_mux.c中,系統(tǒng)初始化時,所有互斥鎖都為空閑狀態(tài),放入空閑鏈表
?
?
在los_mux.c中,創(chuàng)建互斥鎖時,從空閑鏈表取下空閑狀態(tài)的互斥鎖
?
?
在los_mux.c中,釋放互斥鎖時,將互斥鎖放入空閑鏈表
?
?四、健壯性考慮
1.空閑狀態(tài)雙保險 除了通過判斷是否在空閑鏈表上來判斷描述符是否空閑以外,在結構體中也保存了是否空閑的狀態(tài),這樣可以增加空閑狀態(tài)判斷的健壯性;另外,通過直接判斷狀態(tài)也比判斷是否在鏈表中性能更高。如下(los_mux.c中):
?2.中斷上下文保護
由于在中斷上下文中不允許有睡眠操作,而互斥鎖獲取邏輯就是典型的具有睡眠操作的邏輯,所以,互斥鎖的獲取和釋放不能在中斷上下文中,如下(los_mux.c中)。
?3.任務切換保護
IPC操作有時會需要任務切換,如果當前任務切換功能被臨時關閉,則不允許進行IPC操作,互斥鎖獲取操作也是IPC操作的一種。
代碼如下(los_mux.c):
?4.關鍵任務不允許切換
一些系統(tǒng)關鍵任務運行后,不允許執(zhí)行IPC邏輯,比如軟件定時器任務:其監(jiān)控多個定時器的超時。假定其執(zhí)行IPC邏輯導致任務等待某資源比較長的時間,會導致后續(xù)部分定時器定時功能失效(不準確)。代碼如下(los_mux.c):
?五、總結
輕量系統(tǒng)中內核資源多采用數組與空閑鏈表相結合的方式。除了OpenHarmony輕量系統(tǒng),其他嵌入式系統(tǒng)中這類的數據存儲方式也比較常見。這種方式有如下幾個突出的優(yōu)點●簡單易懂●讀寫效率高
●代碼緊湊
原文標題:OpenHarmony輕量系統(tǒng)中內核資源主要管理方式
文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。
舉報投訴
-
OpenHarmony
+關注
關注
33文章
3952瀏覽量
21103
原文標題:OpenHarmony輕量系統(tǒng)中內核資源主要管理方式
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
熱點推薦
【匯總】OpenHarmony輕量系統(tǒng)開發(fā)目錄和個人感悟
前言還記得2020年9月OpenHarmony大會后,我開始在社區(qū)寫了一些OpenHarmony輕量系統(tǒng)開發(fā)的文章,基于Hi3861。轉眼已
發(fā)表于 01-20 09:04
從零移植OpenHarmony輕量系統(tǒng)【1】移植思路
移植類型OpenHarmony輕量系統(tǒng)的移植比較簡單,代碼中解耦做得非常好。從代碼的設計理念上來看,移植
發(fā)表于 01-26 17:18
移植OpenHarmony輕量系統(tǒng)【7】燒錄與驗證
摘要:本文簡單介紹OpenHarmony輕量系統(tǒng)移植,內核初始化和啟動適合群體:想自己動手移植OpenH
發(fā)表于 02-09 18:09
從零開始移植OpenHarmony輕量系統(tǒng)
內核移植到ARM單片機上,現在代碼開源、移植文章也完成7篇,后續(xù)會考慮增加視頻講解,直播。以便大家也可以自己移植。移植文章:移植OpenHarmony輕量
發(fā)表于 02-09 18:58
OpenHarmony支持的系統(tǒng)類型及內核
本文介紹OpenHarmony所不同的系統(tǒng)類型以及支持的內核。系統(tǒng)類型OpenHarmony支持以下幾種
發(fā)表于 04-19 11:29
OpenHarmony輕量與小型系統(tǒng)入門概述
參考輕量和小型系統(tǒng)快速入門(安裝包方式)。 開發(fā)環(huán)境 開發(fā)者通常習慣采用Windows+Ubuntu環(huán)境進行OpenHarmony開發(fā): W
發(fā)表于 05-06 15:48
OpenHarmony輕量系統(tǒng)中內核資源主要管理方式
資源少,一般的數據資源都是小批量的,所以其資源管理方式都比較簡單且相似,本文重點講解在輕量系統(tǒng)
發(fā)表于 10-21 11:34
OpenHarmony Dev-Board-SIG專場:ARM架構和MIPS架構移植OpenHarmony輕量系統(tǒng)
OpenHarmony Dev-Board-SIG專場:ARM架構和MIPS架構移植OpenHarmony輕量系統(tǒng)
OpenHarmony Dev-Board-SIG專場:MIPS架構移植OpenHarmony輕量系統(tǒng)展示
OpenHarmony Dev-Board-SIG專場:MIPS構架移植OpenHarmony輕量系統(tǒng)展示
OpenHarmony、輕量系統(tǒng)、小型系統(tǒng)、標準系統(tǒng)的差異
本文簡單介紹OpenHarmony、輕量系統(tǒng)、小型系統(tǒng)、標準系統(tǒng)的差異,以及相關的官方資料和文檔
關于OpenHarmony輕量系統(tǒng)開發(fā)
還記得2020年9月OpenHarmony大會后,我開始在社區(qū)寫了一些OpenHarmony輕量系統(tǒng)開發(fā)的文章,基于Hi3861。
OpenHarmony輕量系統(tǒng)開發(fā)【1】初始OH
本文簡單介紹OpenHarmony、輕量系統(tǒng)、小型系統(tǒng)、標準系統(tǒng)的差異,以及相關的官方資料和文檔
發(fā)表于 02-25 17:49
?1529次閱讀
OpenHarmony輕量系統(tǒng)書籍推薦《OpenHarmony輕量設備開發(fā)理論與實戰(zhàn)》
最近大家問的智能家居套件方面有沒有可以參考的資料,這里給大家統(tǒng)一回復一下 推薦大家可以看這本書 《OpenHarmony輕量設備開發(fā)理論與實戰(zhàn)》 本書系統(tǒng)地講授
【開源鴻蒙】使用QEMU運行OpenHarmony輕量系統(tǒng)
本文將會介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運行OpenHarmony輕量系統(tǒng)。通過本文,你將會對QEMU和OpenHarm
OpenHarmony輕量系統(tǒng)中內核資源主要管理方式
評論