μC/OS、RTT等大多數(shù)實(shí)時(shí)內(nèi)核都是搶占式的,準(zhǔn)備運(yùn)行的最高優(yōu)先級(jí)任務(wù)始終被賦予 CPU 控制權(quán)。
當(dāng)一個(gè)任務(wù)使更高優(yōu)先級(jí)的任務(wù)準(zhǔn)備好運(yùn)行時(shí),當(dāng)前任務(wù)被搶占(掛起)并且更高優(yōu)先級(jí)的任務(wù)立即獲得 CPU 的控制權(quán)。
如果 ISR 使更高優(yōu)先級(jí)的任務(wù)準(zhǔn)備就緒,當(dāng) ISR 完成時(shí),被中斷的任務(wù)被掛起并恢復(fù)新的更高優(yōu)先級(jí)任務(wù)。

(1) 任務(wù)正在執(zhí)行但被中斷。(2) 如果中斷被使能,CPU 向量(跳轉(zhuǎn))到 ISR。(3) ISR 處理事件并使更高優(yōu)先級(jí)的任務(wù)準(zhǔn)備好運(yùn)行。ISR 完成后,調(diào)用內(nèi)核提供的服務(wù)(即調(diào)用內(nèi)核提供的函數(shù))。(4) & (5) 該函數(shù)知道一個(gè)更重要的任務(wù)已經(jīng)準(zhǔn)備好運(yùn)行,因此內(nèi)核將執(zhí)行上下文切換并執(zhí)行更重要的代碼而不是返回到被中斷的任務(wù)任務(wù)。當(dāng)更重要的任務(wù)完成時(shí),內(nèi)核提供的另一個(gè)函數(shù)被調(diào)用,讓任務(wù)進(jìn)入休眠狀態(tài),等待事件(即 ISR)發(fā)生。(6) & (7) 然后內(nèi)核“看到”需要執(zhí)行一個(gè)較低優(yōu)先級(jí)的任務(wù),并完成另一個(gè)上下文切換以恢復(fù)被中斷任務(wù)的執(zhí)行。
使用搶占式內(nèi)核,最高優(yōu)先級(jí)任務(wù)的執(zhí)行是確定性的;你可以確定它何時(shí)可以控制 CPU。因此,通過(guò)使用搶占式內(nèi)核可以最大限度地減少任務(wù)級(jí)響應(yīng)時(shí)間。
使用搶占式內(nèi)核的應(yīng)用程序代碼不應(yīng)使用不可重入函數(shù),除非通過(guò)使用互斥信號(hào)量確保對(duì)這些函數(shù)的獨(dú)占訪問(wèn),因?yàn)榈蛢?yōu)先級(jí)和高優(yōu)先級(jí)任務(wù)都可以使用公共函數(shù)。如果較高優(yōu)先級(jí)的任務(wù)搶占正在使用該功能的較低優(yōu)先級(jí)的任務(wù),則可能會(huì)發(fā)生數(shù)據(jù)損壞。
總而言之,搶占式內(nèi)核始終執(zhí)行準(zhǔn)備運(yùn)行的最高優(yōu)先級(jí)任務(wù)。中斷搶占任務(wù),完成 ISR 后,內(nèi)核將繼續(xù)執(zhí)行準(zhǔn)備運(yùn)行的最高優(yōu)先級(jí)任務(wù)(而不是被中斷的任務(wù))。任務(wù)級(jí)別的響應(yīng)是最佳的和確定性的,當(dāng)系統(tǒng)響應(yīng)性很重要時(shí),建議使用搶占式內(nèi)核。
-
內(nèi)核
+關(guān)注
關(guān)注
4文章
1427瀏覽量
42209 -
cpu
+關(guān)注
關(guān)注
68文章
11186瀏覽量
221214 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4400瀏覽量
66345 -
RTT
+關(guān)注
關(guān)注
0文章
66瀏覽量
17981 -
ISR
+關(guān)注
關(guān)注
0文章
38瀏覽量
15032
發(fā)布評(píng)論請(qǐng)先 登錄
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—Linux-RT應(yīng)用開(kāi)發(fā)案例

一文讀懂:嵌入式Linux實(shí)時(shí)性進(jìn)階
強(qiáng)實(shí)時(shí)運(yùn)動(dòng)控制內(nèi)核MotionRT750(一):驅(qū)動(dòng)安裝、內(nèi)核配置與使用

基于RISC-V內(nèi)核的嵌入式系統(tǒng)在機(jī)器人關(guān)節(jié)控制中的應(yīng)用研究
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝之?dāng)?shù)據(jù)拷貝介紹
2025年常用實(shí)時(shí)Linux系統(tǒng)深度評(píng)測(cè)
使用TFTP加載內(nèi)核設(shè)備樹(shù)

評(píng)論