μ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。因此,通過使用搶占式內(nèi)核可以最大限度地減少任務(wù)級(jí)響應(yīng)時(shí)間。
使用搶占式內(nèi)核的應(yīng)用程序代碼不應(yīng)使用不可重入函數(shù),除非通過使用互斥信號(hào)量確保對(duì)這些函數(shù)的獨(dú)占訪問,因?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)注
3文章
1410瀏覽量
41115 -
cpu
+關(guān)注
關(guān)注
68文章
11038瀏覽量
216031 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4371瀏覽量
64218 -
RTT
+關(guān)注
關(guān)注
0文章
66瀏覽量
17531 -
ISR
+關(guān)注
關(guān)注
0文章
38瀏覽量
14690
發(fā)布評(píng)論請(qǐng)先 登錄
使用TFTP加載內(nèi)核設(shè)備樹

嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動(dòng)流程
飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動(dòng)流程
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡(jiǎn)介
飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡(jiǎn)介
嵌入式工程師都在找的【Linux內(nèi)核調(diào)試技術(shù)】建議收藏!
嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用 閱讀體驗(yàn) +分離內(nèi)核的嵌入式Hyperviso

rtthread是搶占式的rtos,那么線程的timeout參數(shù)具體的作用是什么呢?
新書發(fā)布——《RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核、驅(qū)動(dòng)和應(yīng)用開發(fā)技術(shù)》

linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核
學(xué)習(xí)hypervisor嵌入式產(chǎn)品安全設(shè)計(jì)
Linux內(nèi)核測(cè)試技術(shù)

評(píng)論