非搶占式內(nèi)核
非搶占式內(nèi)核要求每個(gè)任務(wù)(線程)都做一些事情來(lái)明確放棄對(duì) CPU 的控制,為了保持多任務(wù)并發(fā)的錯(cuò)覺(jué),必須要有這一步操作。
非搶占式調(diào)度也稱為協(xié)作多任務(wù),任務(wù)相互協(xié)作以共享 CPU,異步事件仍然由 ISR 處理。ISR 可以使更高優(yōu)先級(jí)的任務(wù)準(zhǔn)備好運(yùn)行,但 ISR 總是返回到被中斷的任務(wù)。
只有當(dāng)當(dāng)前任務(wù)放棄 CPU 時(shí),新的更高優(yōu)先級(jí)任務(wù)才會(huì)獲得對(duì) CPU 的控制。
非搶占式內(nèi)核的優(yōu)點(diǎn)之一是中斷延遲更低,在任務(wù)級(jí)別,非搶占內(nèi)核也可以使用不可重入函數(shù)。每個(gè)任務(wù)都可以使用不可重入函數(shù),而不必?fù)?dān)心被另一個(gè)任務(wù)破壞。這是因?yàn)槊總€(gè)任務(wù)都可以在放棄 CPU 之前運(yùn)行到完成。但是,不應(yīng)允許不可重入函數(shù)放棄對(duì) CPU 的控制。
使用非搶占式內(nèi)核的任務(wù)級(jí)響應(yīng)可能比前臺(tái)/后臺(tái)系統(tǒng)低得多,因?yàn)槿蝿?wù)級(jí)響應(yīng)現(xiàn)在由最長(zhǎng)任務(wù)的時(shí)間給出。
非搶占式內(nèi)核的另一個(gè)優(yōu)點(diǎn)是較少需要通過(guò)使用信號(hào)量來(lái)保護(hù)共享數(shù)據(jù)。每個(gè)任務(wù)都擁有 CPU,你不必?fù)?dān)心任務(wù)會(huì)被搶占。當(dāng)然,這不是絕對(duì)的,在某些情況下,仍應(yīng)使用信號(hào)量。共享 I/O 設(shè)備可能仍需要使用互斥信號(hào)量;例如,任務(wù)可能仍需要對(duì)打印機(jī)的獨(dú)占訪問(wèn)。
(1) 任務(wù)正在執(zhí)行但被中斷。(2) 如果中斷被使能,CPU 向量(跳轉(zhuǎn))到 ISR。(3) ISR 處理事件并使更高優(yōu)先級(jí)的任務(wù)準(zhǔn)備好運(yùn)行。(4) ISR完成后,執(zhí)行返回指令,CPU返回被中斷的任務(wù)。(5) 任務(wù)代碼在中斷指令之后的指令處恢復(fù)。(6) 當(dāng)任務(wù)代碼完成時(shí),它調(diào)用內(nèi)核提供的服務(wù),將 CPU 交給另一個(gè)任務(wù)。(7) 內(nèi)核看到更高優(yōu)先級(jí)的任務(wù)已經(jīng)準(zhǔn)備好運(yùn)行,因此,內(nèi)核執(zhí)行上下文切換,以便它可以運(yùn)行(即執(zhí)行)更高優(yōu)先級(jí)的任務(wù)來(lái)處理由 ISR 發(fā)出信號(hào)的事件。
非搶占式內(nèi)核最重要的缺點(diǎn)是響應(yīng)性:已準(zhǔn)備好運(yùn)行的較高優(yōu)先級(jí)任務(wù)可能需要等待很長(zhǎng)時(shí)間才能運(yùn)行,因?yàn)楫?dāng)前任務(wù)應(yīng)該及時(shí)放棄CPU使用權(quán)。
與前臺(tái)/后臺(tái)系統(tǒng)中的后臺(tái)執(zhí)行一樣,非搶占式內(nèi)核中的任務(wù)級(jí)響應(yīng)時(shí)間是不確定的;你永遠(yuǎn)不知道最高優(yōu)先級(jí)的任務(wù)何時(shí)才能獲得 CPU 的控制權(quán)。這個(gè)操作由你的應(yīng)用程序來(lái)決定怎么時(shí)候放棄對(duì) CPU 的控制。
總而言之,非搶占式內(nèi)核允許每個(gè)任務(wù)運(yùn)行,直到它自愿放棄對(duì) CPU 的控制。中斷搶占任務(wù),ISR 完成后,ISR 返回到被中斷的任務(wù)。任務(wù)級(jí)響應(yīng)比前臺(tái)/后臺(tái)系統(tǒng)要好得多,但仍然是不確定的,因此,很少有商業(yè)內(nèi)核是非搶占式的。
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1337瀏覽量
40085 -
cpu
+關(guān)注
關(guān)注
68文章
10702瀏覽量
209448 -
中斷
+關(guān)注
關(guān)注
5文章
889瀏覽量
41220 -
嵌入式開(kāi)發(fā)
+關(guān)注
關(guān)注
18文章
1007瀏覽量
47360 -
ISR
+關(guān)注
關(guān)注
0文章
38瀏覽量
14360 -
線程
+關(guān)注
關(guān)注
0文章
501瀏覽量
19580
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論