調(diào)度機(jī)制:從任務(wù)狀態(tài)到處理器分配
RTOS的調(diào)度機(jī)制是實(shí)現(xiàn)任務(wù)優(yōu)先級(jí)管理的“操作系統(tǒng)內(nèi)核”,其核心是通過(guò)維護(hù)任務(wù)狀態(tài),動(dòng)態(tài)分配處理器時(shí)間。RTOS中的任務(wù)通常有五種狀態(tài):就緒(Ready)、運(yùn)行(Running)、阻塞(Blocked)、掛起(Suspended)和終止(Terminated)。就緒狀態(tài)的任務(wù)已具備運(yùn)行條件,等待處理器調(diào)度;運(yùn)行狀態(tài)的任務(wù)正在占用處理器;阻塞狀態(tài)的任務(wù)因等待資源(如信號(hào)量、定時(shí)器)而暫停;掛起狀態(tài)的任務(wù)需通過(guò)外部命令喚醒;終止?fàn)顟B(tài)的任務(wù)則已完成執(zhí)行。
最常用的調(diào)度算法是“固定優(yōu)先級(jí)搶占調(diào)度”(Fixed Priority Preemptive Scheduling)。RTOS內(nèi)核維護(hù)一個(gè)就緒任務(wù)隊(duì)列,按優(yōu)先級(jí)排序,最高優(yōu)先級(jí)的就緒任務(wù)始終獲得處理器控制權(quán)。當(dāng)高優(yōu)先級(jí)任務(wù)從阻塞狀態(tài)轉(zhuǎn)為就緒狀態(tài)時(shí),內(nèi)核會(huì)立即暫停當(dāng)前運(yùn)行的低優(yōu)先級(jí)任務(wù),保存其上下文(寄存器值、程序計(jì)數(shù)器等),加載高優(yōu)先級(jí)任務(wù)的上下文并執(zhí)行,這一“上下文切換”過(guò)程通常耗時(shí)幾微秒到幾十微秒,是衡量RTOS性能的關(guān)鍵指標(biāo)。例如,F(xiàn)reeRTOS的上下文切換時(shí)間約為1-5微秒,VRTX RTOS則可低至0.5微秒,適合對(duì)實(shí)時(shí)性要求極高的場(chǎng)景。
除固定優(yōu)先級(jí)調(diào)度外,
RTOS還支持多種靈活的調(diào)度策略?!皶r(shí)間片輪轉(zhuǎn)調(diào)度”允許相同優(yōu)先級(jí)的任務(wù)按時(shí)間片輪流執(zhí)行,每個(gè)任務(wù)運(yùn)行一定時(shí)間(如10毫秒)后切換到下一個(gè),適合處理多個(gè)同等重要的周期性任務(wù);“截止時(shí)間單調(diào)調(diào)度”(Deadline Monotonic Scheduling)則按任務(wù)的截止時(shí)間分配優(yōu)先級(jí),截止時(shí)間越短優(yōu)先級(jí)越高,適用于周期性任務(wù)密集的系統(tǒng)(如工業(yè)機(jī)器人的關(guān)節(jié)控制);“ Cooperative Scheduling”(協(xié)作式調(diào)度)則要求任務(wù)主動(dòng)釋放處理器,雖實(shí)時(shí)性較弱,但適合資源極度受限的微控制器(如8位單片機(jī))。