Spring OXM- 漫談XML解析技術">Spring OXM- 漫談XML解析技術
1105
2022-05-30
Huawei LiteOS是華為面向IoT領域,構建的“統一物聯網操作系統和中間件軟件平臺”,以輕量級(內核小于10k)、低功耗(1節5號電池最多可以工作5年),快速啟動,互聯互通,安全等關鍵能力,為開發者提供“一站式”完整軟件平臺,有效降低開發門檻、縮短開發周期。下面對LiteOS基礎內核的任務管理、內存管理、中斷管理、信號量、互斥鎖五大模塊進行簡單介紹。
LiteOS內核的任務管理
基本概念和功能
任務是競爭系統資源的最小運行單元。任務可以使用或等待CPU、使用內存空間等系統資源,并獨立于其它任務運行。
Huawei LiteOS是一個支持多任務的操作系統,一個任務就表示一個線程,任務之間可以進行切換和通信。LiteOS的任務管理模塊提供任務創建、刪除、延時、掛起和恢復、更改任務優先級、鎖定任務調度和解鎖任務調度、根據任務控制塊查詢任務 ID、根據 ID 查詢任務控制塊信息等功能。
因為LiteOS內核是搶占式調度內核,所以高優先級的任務可以打斷低優先級任務,低優先級任務必須在高優先級任務阻塞或結束后才能得到調度,同優先級任務會進行時間片輪轉調度。優先級表示任務執行的優先順序,決定了在發生任務切換時即將要執行的任務。LiteOS中的任務一共有32個優先級 (0-31),最高優先級為 0,最低優先級為31。
任務控制塊TCB
每一個任務都含有一個任務控制塊(TCB)。TCB 包含了任務上下文棧指針(stack pointer)、任務狀態(包括就緒、運行、阻塞、退出4種狀態)、任務棧大小(任務棧里保存著局部變量、寄存器、函數參數、函數返回地址等)、任務優先級、任務ID、任務名等信息。TCB相當于每個任務在內核中的身份證,可以反映出每個任務運行情況。
運作機制
在任務模塊初始化時,系統會先申請TCB需要的內存空間。如果任務初始化成功,則系統對TCB內容進行初始化。用戶創建任務時,系統會將任務棧進行初始化,預置上下文。此外,系統還會將“任務入口函數”地址放在相應位置。這樣在任務第一次啟動進入運行態時,將會執行“任務入口函數”。
LiteOS內核的內存管理
主要功能
Huawei LiteOS的內存管理模塊管理系統的內存資源,主要包括內存的初始化、分配及釋放,是操作系統的核心模塊之一。
在系統運行過程中,內存管理模塊通過對內存的申請/釋放操作,來管理用戶和OS對內存的使用,使內存的利用率和使用效率達到最優,同時最大限度地解決系統的內存碎片問題。
Huawei LiteOS的內存管理分為動態內存管理和靜態內存管理。
動態內存管理
在動態內存池中分配用戶指定大小的內存塊。
o??? 優點:按需分配。
o??? 缺點:內存池中可能出現碎片。
靜態內存管理
在靜態內存池中分配用戶初始化時預設(固定)大小的內存塊,初始化后塊大小不可變更。
o??? 優點:分配和釋放效率高,靜態內存池中無碎片。
o??? 缺點:只能申請到初始化預設大小的內存塊,不能按需申請。
LiteOS內核的中斷管理
中斷的介紹
中斷是指出現需要時,CPU暫停執行當前程序,轉而執行新程序的過程。即在程序運行過程中,系統出現了一個必須由CPU立即處理的事務。此時,CPU暫時中止當前程序的執行轉而處理這個事務,這個過程就叫做中斷。
為什么需要中斷
眾多周知,CPU的處理速度比外設的運行速度快很多,外設可以在沒有CPU介入的情況下完成一定的工作,但某些情況下需要CPU為其做一定的工作。通過中斷機制,在外設不需要CPU介入時,CPU可以執行其它任務,而當外設需要CPU時通過產生中斷信號使CPU立即中斷當前任務來響應中斷請求。用戶通過中斷申請,注冊中斷處理程序,可以指定CPU響應中斷請求時所執行的具體操作。這樣可以使CPU避免把大量時間耗費在等待、查詢外設狀態的操作上,因此將大大提高系統實時性以及執行效率。
相關的硬件
與中斷相關的硬件可以劃分為三類:設備、中斷控制器、CPU本身。
l? 設備:發起中斷的源,當設備需要請求CPU時,產生一個中斷信號,該信號連接至中斷控制器。
l? 中斷控制器:中斷控制器是 CPU 眾多外設中的一個,它一方面接收其它外設中斷引腳的輸入,另一方面,它會發出中斷信號給CPU。可以通過對中斷控制器編程實現對中斷源的優先級、觸發方式、打開和關閉源等設置操作。常用的中斷控制器有VIC(Vector Interrupt Controller)和GIC(General Interrupt Controller),在 ARM Cortex-M 系列中使用的中斷控制器是NVIC(Nested Vector Interrupt Controller)。
l? CPU:CPU會響應中斷源的請求,中斷當前正在執行的任務,轉而執行中斷處理程序。
主要功能
Huawei LiteOS支持:
·???????? 中斷初始化
·???????? 中斷創建
·???????? 開/關中斷
·???????? 恢復中斷
·???????? 中斷使能
·???????? 中斷屏蔽
LiteOS內核的信號量
基本概念和功能
信號量(Semaphore)是一種實現任務間通信的機制,可以用于任務之間同步或臨界資源的互斥訪問。
信號量可以被任務獲取或者申請,不同的信號量通過信號量索引號來唯一確定,每個信號量都有一個計數值和任務隊列。通常信號量的計數值表示有效的資源數,即剩下的可被占用的互斥資源數。當任務申請(Pend)信號量時,如果申請成功,則信號量的計數值遞減,如申請失敗,則掛起在該信號量的等待任務隊列上,一旦有任務釋放該信號量,則等待任務隊列中的任務被喚醒開始執行。
信號量運作示意圖
使用場景
信號量是一種非常靈活的同步方式,可以運用在多種場合中,實現鎖、同步、資源計數等功能,也能方便的用于任務與任務,中斷與任務的同步中。
·???????? 任務間互斥
用作互斥時,信號量創建后記數是滿的,在需要使用臨界資源時,先申請信號量,使其變空,這樣其他任務需要使用臨界資源時就會因為無法申請到信號量而阻塞,從而保證了臨界資源的安全。
·???????? 任務間同步
用作同步時,信號量在創建后被置為空,任務1申請信號量而阻塞,任務2在某種條件發生后,釋放信號量,于是任務1得以進入READY或RUNNING態,從而達到了兩個任務間的同步。
·???????? 資源計數
用作資源計數時,信號量的作用是一個特殊的計數器,可以遞增或者遞減,但是值永遠不能為負值,典型的應用場景是生產者與消費者的場景。
·???????? 中斷與任務的同步
用作中斷與任務的同步時,可以在中斷未觸發時將信號量的值置為0,從而堵塞中斷服務處理任務,一旦中斷被觸發,則喚醒堵塞的中斷服務處理任務進行中斷處理。
LiteOS內核的互斥鎖
基本概念和功能
互斥鎖(mutex)又稱互斥型信號量,是一種特殊的二值信號量,用于實現對共享資源的獨占式處理。互斥鎖主要使用在多任務環境下,此時往往存在多個任務競爭同一共享資源的應用場景。另外,Huawei LiteOS通過優先級繼承算法,解決了信號量存在的優先級翻轉問題。
運作機制
任意時刻互斥鎖只有兩種狀態:開鎖或閉鎖。當有任務持有時,互斥鎖處于閉鎖狀態,這個任務獲得該互斥鎖的所有權。當該任務釋放它時,該互斥鎖被開鎖,任務失去該互斥鎖的所有權。當一個任務持有互斥鎖時,其他任務將不能再對該互斥鎖進行開鎖或持有,所以其他任務此時訪問這個公共資源將會被阻塞,直到互斥鎖被持有該鎖的任務釋放后,其他任務才能重新訪問該公共資源。
互斥鎖運作示意圖
IoT IoT 物聯網 輕量級操作系統 LiteOS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。