从零入门 FreeRTOS 操作系统之任务的概念
從零入門 FreeRTOS 操作系統(tǒng)之任務(wù)的概念
從系統(tǒng)的角度看,任務(wù)是競爭系統(tǒng)資源的最小運(yùn)行單元。FreeRTOS 是一個支持多任務(wù)的操作系統(tǒng)。在 FreeRTOS 中,任務(wù)可以使用或等待 CPU、使用內(nèi)存空間等系統(tǒng)資源,并獨(dú)立于其它任務(wù)運(yùn)行。
簡而言之: FreeRTOS 的任務(wù)可認(rèn)為是一系列獨(dú)立任務(wù)的集合,并且每個任務(wù)在自己的環(huán)境中運(yùn)行。在任何時刻,只有一個任務(wù)得到運(yùn)行,當(dāng)前需要執(zhí)行哪個任務(wù),由FreeRTOS 調(diào)度器決定。調(diào)度器不斷的啟動、停止每一個任務(wù),宏觀看上去所有的任務(wù)都在同時在執(zhí)行。
調(diào)度器主要的職責(zé)是在任務(wù)切入切出時保存上下文環(huán)境(寄存器值、堆棧內(nèi)容)。為了實現(xiàn)這點,每個 FreeRTOS 任務(wù)都需要有自己的棧空間,當(dāng)任務(wù)切出時,它的執(zhí)行環(huán)境會被保存在該任務(wù)的棧空間中,這樣當(dāng)任務(wù)再次運(yùn)行時,就能從堆棧中正確的恢復(fù)上次的運(yùn)行環(huán)境,任務(wù)越多,需要的堆棧空間就越大,而一個系統(tǒng)能運(yùn)行多少個任務(wù),取決于系統(tǒng)的可用的 SRAM。
FreeRTOS 中的任務(wù)是搶占式調(diào)度機(jī)制,高優(yōu)先級的任務(wù)可打斷低優(yōu)先級任務(wù),低優(yōu)先級任務(wù)必須在高優(yōu)先級任務(wù)阻塞或結(jié)束后才能得到調(diào)度。但是,FreeRTOS 同樣支持任何數(shù)量的任務(wù)可以共享同一個優(yōu)先級,當(dāng)宏 configUSE_TIME_SLICING 定義為 1 時,處于就緒態(tài)的多個相同優(yōu)先級的任務(wù)將會以時間片輪轉(zhuǎn)調(diào)度的方式共享處理器,只不過時間片的調(diào)度是不允許搶占任務(wù)的CPU 使用權(quán)。
任務(wù)通常會運(yùn)行在一個死循環(huán)中,也不會退出,如果一個任務(wù)不再需要,可以調(diào)用 FreeRTOS 中的任務(wù)刪除 API 函數(shù)接口顯式地將其刪除。
總結(jié)
以上是生活随笔為你收集整理的从零入门 FreeRTOS 操作系统之任务的概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何预测ChatGPT未来的发展趋势?
- 下一篇: 从零入门 FreeRTOS 操作系统之任