校招大學生簡歷制作模板(ps:程序員簡歷)
849
2025-04-02
今天,我們分享的內容主要是物聯網操作系統中的任務管理。
在開始正式的閱讀分享帖之前,按慣例,我們需要思考幾個問題:
進程和線程,你是否了解其區別與聯系?
什么是任務?
物聯網操作系統中的任務管理主要包含那幾個方面?
如果你認真的思考了上面的問題,那么請你閱讀下面的分享,也希望你能Get到屬于自己的盲點知識!
一、任務管理基本概念
進程:正在運行程序的一個實例
線程:進程中的一個實體,是被系**立調度和分派的基本單位
進程與線程的區別
線程是程序執行的最小單位,進程是操作系統分配資源的最小單位
一個進程由一個或多個線程組成,線程是一個進程中代碼的不同執行路線
進程之間相互獨立,同一進程下的各個線程共享程序的內存空間
任務概念
從系統的角度看,任務是競爭系統資源的最小運行單元;任務可以使用或等待CPU、使用內存空間等系統資源,并獨立于其它任務運行
Huawei LiteOS的任務模塊可以給用戶提供多個任務,實現了任務之間的切換和通信,幫助用戶管理業務程序流程
Huawei LiteOS是一個支持多任務的操作系統,在LiteOS中一個任務表示一個線程
Huawei LiteOS中的任務是搶占式調度機制,同時支持時間片輪轉調度方式
二、任務管理原理
任務:由一組元素組成的實體
元素(用于管理每一個任務)
標識符:和任務相關的唯一標識符
任務名:任務名稱
任務狀態:用于表示當前任務正在執行或等待
優先級:代表任務執行的優先順序
上下文棧指針:任務即將被執行的下一條指令地址
任務控制塊(TCB:Task Control Block)
任務狀態
用于描述任務所表現出的行為
就緒態(Ready):該任務在就緒列表中,就緒的任務已經具備執行的能力,只等待調度器進行調度,新創建的任務會初始化為就緒態
運行態(Running):該狀態表明任務正在執行,此時它占用處理器,LiteOS調度器選擇運行的永遠是處于最高優先級的就緒態任務,當任務被運行的一刻,它的任務狀態就變成了運行態
阻塞態(Blocked):如果任務當前正在等待某個時序或外部中斷,我們就說這個任務處于阻塞狀態,該任務不在就緒列表中。包含任務被掛起、任務被延時、任務正在等待信號量、讀寫隊列或者等待讀寫事件等
退出態(Dead):該任務運行結束,等待系統回收資源
任務狀態間的遷移
就緒—>運行態
任務創建后進入就緒態,發生任務切換時,就緒列表中最高優先級的任務被執行,從而進入運行態,但此刻該任務依舊在就緒列表中
運行—>阻塞態
正在運行的任務發生阻塞(掛起、延時、獲取互斥鎖、讀消息、讀信號量等待等)時,該任務會從就緒列表中刪除,任務狀態由運行態變成阻塞態,然后發生任務切換,運行就緒列表中剩余最高優先級任務
阻塞—>就緒態
阻塞的任務被恢復后(任務恢復、延時時間超時、讀信號量超時或讀到信號量等),被恢復的任務會被加入就緒列表,從而由阻塞態變成就緒態;如果被恢復任務的優先級高于正在運行任務的優先級,則會發生任務切換,將該任務由就緒態變成運行態
就緒—>阻塞態
任務也有可能在就緒態時被阻塞(掛起),此時任務狀態會由就緒態轉變為阻塞態,該任務從就緒列表中刪除,不會參與任務調度,直到該任務被恢復
運行—>就緒態
有更高優先級任務創建或者恢復后,會發生任務調度,此刻就緒列表中最高優先級任務變為運行態,那么原先運行的任務由運行態變為就緒態,依然在就緒列表中
運行—>退出態
運行中的任務運行結束,內核自動將此任務刪除,任務狀態由運行態變為退出態
阻塞—>退出態
阻塞的任務調用刪除接口,任務狀態由阻塞態變為退出態
任務棧
任務棧的大小按8字節對齊
作用
任務切斷或響應中斷時,任務棧用于保存CPU寄存器的內容
任務運行時,任務棧用于保存一些局部變量、函數參數等
任務優先級
優先級表示任務執行的優先順序
任務的優先級決定了在發生任務切換時即將要執行的任務
在就緒列表中的最高優先級的任務將得到執行
高優先級的任務可打斷低優先級任務,低優先級任務必須在高優先級任務阻塞或結束后才能得到調度
Huawei LiteOS的任務一共有32個優先級(0-31),最高優先級為0,最低優先級為31
三、任務調度
任務上下文
Huawei LiteOS在任務掛起的時候會將本任務的任務上下文信息,保存在自己的任務棧里面,以便任務恢復后,從棧空間中恢復掛起時的上下文信息,從而繼續執行被掛起時被打斷的代碼
任務切換
任務切換包含獲取就緒列表中最高優先級任務、切出任務上下文保存、切入任務上下文恢復等動作
調度算法
搶占式調度機制
時間片輪轉調度機制
四、任務運行
創建任務
LOS_TaskCreateOnly:創建任務進入suspend態,不進行任務調度
LOS_TaskCreate:創建任務進入就緒態,進行任務調度
終止任務
LOS_TaskDelete:刪除指定的任務
五、任務間通信
任務之間通過消息隊列進行信息傳輸,實現任務間的通信
用于任務間通信的數據結構
用于接收來自任務或中斷的非固定長度消息
可根據不同的接口選擇消息是否存放在自己的空間中
輕量級操作系統 LiteOS IoT
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。