|
前后臺系統(tǒng) :應(yīng)用程序一般是一個(gè)無限的循環(huán),可稱為前后臺系統(tǒng)或超循環(huán)系統(tǒng)。循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成后臺行為。中斷服務(wù)程序處理異步事件,這部分可以看成前臺行為。后臺也可以叫做任務(wù)級,前臺也叫中斷級。時(shí)間相關(guān)性很強(qiáng)的關(guān)鍵操作一定是靠中斷服務(wù)程序來保證的。因?yàn)橹袛喾⻊?wù)提供的信息一直要等到后臺程序走到該處理這個(gè)信息這一步時(shí)才能得到進(jìn)一步處理,所以這種系統(tǒng)在處理的及時(shí)性
上比實(shí)際可以做到的要差。這個(gè)指標(biāo)稱作任務(wù)級響應(yīng)時(shí)間。
實(shí)時(shí)操作系統(tǒng)(RTOS):實(shí)時(shí)操作系統(tǒng)是一段在嵌入式系統(tǒng)啟動后首先執(zhí)行的背景程序,用戶的應(yīng)用程序是運(yùn)行于 RTOS 之上的各個(gè)任務(wù),RTOS根據(jù)各個(gè)任務(wù)的要求,進(jìn)行資源(包括存儲器、外設(shè)等)管理、消息管理、任務(wù)調(diào)度、異常處理等工作。在 RTOS支持的系統(tǒng)中,每個(gè)任務(wù)均有一個(gè)優(yōu)先級,RTOS根據(jù)各個(gè)任務(wù)的優(yōu)先級,動態(tài)地切換各個(gè)任務(wù),保證對實(shí)時(shí)性的要求。實(shí)時(shí)多任務(wù)操作系統(tǒng),以分時(shí)方式運(yùn)行多個(gè)任務(wù),看上去好象是多個(gè)任務(wù)“同時(shí)”運(yùn)行。只有優(yōu)先服務(wù)方式的RTOS才是真正的實(shí)時(shí)操作系統(tǒng),時(shí)間分片方式和協(xié)作方式的RTOS并不是真正的“實(shí)時(shí)”。
代碼的臨界區(qū):指處理時(shí)不可分割的代碼,運(yùn)行這些代碼不允許被打斷。一旦這部分代碼開始執(zhí)行,則不允許任何中斷打入(這不是絕對的,如果中斷不調(diào)用任何包含臨界區(qū)的代碼,也不訪問任何臨界區(qū)使用的共享資源,這個(gè)中斷可能可以執(zhí)行)。為確保臨界區(qū)代碼的執(zhí)行,在進(jìn)入臨界區(qū)之前要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完成以后要立即開中斷。
非占先式內(nèi)核:非占先式內(nèi)核要求每個(gè)任務(wù)自我放棄CPU 的所有權(quán)。非占先式調(diào)度法也稱作合作型多任務(wù),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。異步事件還是由中斷服務(wù)來處理。中斷服務(wù)可以使一個(gè)高優(yōu)先級的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個(gè)任務(wù),直到該任務(wù)主動放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級的任務(wù)才能獲得CPU的使用權(quán)。
占先式內(nèi)核:當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式內(nèi)核。因此絕大多數(shù)商業(yè)上銷售的實(shí)時(shí)內(nèi)核都是占先式內(nèi)核。最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU 的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級高的任務(wù)進(jìn)入了就緒狀態(tài),當(dāng)前任務(wù)的 CPU使用權(quán)就被剝奪了,或者說被掛起了,那個(gè)高優(yōu)先級的任務(wù)立刻得到了 CPU的控制權(quán)。如果是中斷服務(wù)子程序使一個(gè)高優(yōu)先級的任務(wù)進(jìn)入就緒態(tài),中斷完成時(shí),中斷了的任務(wù)被掛起,優(yōu)先級高的那個(gè)任務(wù)開始運(yùn)行。
|
|