通過(guò)任務(wù)分割提高嵌入式系統(tǒng)的實(shí)時(shí)性
引言
隨著工業(yè)的飛速發(fā)展,人們對(duì)系統(tǒng)實(shí)時(shí)性的要求越來(lái)越高。計(jì)算機(jī)技術(shù)的進(jìn)步客觀上也為進(jìn)一步提高實(shí)時(shí)性提供了可能。因此近年來(lái),嵌入式實(shí)時(shí)系統(tǒng)的研究已經(jīng)成為單片同應(yīng)用領(lǐng)域的又一大熱點(diǎn),實(shí)編排軟件也越來(lái)越多,有商業(yè)軟件,也有免費(fèi)的代碼。然而影響系統(tǒng)實(shí)時(shí)性的因素很多,有硬件,也有軟件的。這就決定了提高系統(tǒng)的實(shí)時(shí)性并不是一件十分容易的事情,除了使用高性能的CPU和高效的實(shí)時(shí)內(nèi)核外,在實(shí)時(shí)系統(tǒng)應(yīng)用的過(guò)程中,還要結(jié)合具體情況進(jìn)行具體分析,充分利用CPU的效率,挖掘內(nèi)核的實(shí)時(shí)潛能。
1 任務(wù)與嵌入式多任務(wù)實(shí)時(shí)系統(tǒng)
1.1 任務(wù)與多任務(wù)
在嵌入式多任務(wù)實(shí)時(shí)系統(tǒng)時(shí),任務(wù)是指一個(gè)程序分段。這個(gè)分段被操作系統(tǒng)當(dāng)作一個(gè)基本單元來(lái)調(diào)度。
典型地,每個(gè)任務(wù)都是一個(gè)無(wú)限的循環(huán),而且在同一時(shí)刻只能處于以下5種狀態(tài)之一。這5種狀態(tài)是休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、等待態(tài)和被中斷態(tài),如圖1所示。
多任務(wù)系統(tǒng)的執(zhí)行過(guò)程實(shí)際上就是一系列任在這5種狀態(tài)中循環(huán)流動(dòng)、輪流被內(nèi)核調(diào)度的過(guò)程。多任務(wù)運(yùn)行使CPU的利用率得到最大的發(fā)揮,并使應(yīng)用程序模塊化。
1.2 嵌入式多任務(wù)實(shí)時(shí)系統(tǒng)
RTOS本質(zhì)上就是嵌入的實(shí)時(shí)內(nèi)核,它負(fù)責(zé)管理各個(gè)任務(wù),或者說(shuō)是為每上任務(wù)分配CPU時(shí)間,并且負(fù)責(zé)任務(wù)之間的通信。實(shí)時(shí)內(nèi)核可分為可剝奪型和不同剝奪型兩類(lèi)。因此,按照所使用內(nèi)核的不同,嵌入式實(shí)時(shí)系統(tǒng)也可分為兩類(lèi):使用不可剝奪型內(nèi)核的嵌入式實(shí)時(shí)系統(tǒng)和使用可剝奪型內(nèi)核的嵌入式實(shí)時(shí)系統(tǒng)。
2 實(shí)時(shí)系統(tǒng)中的長(zhǎng)任務(wù)問(wèn)題
2.1 長(zhǎng)任務(wù)的定義
在RTOS中,長(zhǎng)任務(wù)就是指整個(gè)任務(wù)的執(zhí)行時(shí)間較長(zhǎng),超出了RTOS中其它某一個(gè)或某幾個(gè)任務(wù)的實(shí)時(shí)要求容限,而對(duì)整個(gè)RTOS的實(shí)時(shí)性構(gòu)成威脅的那些任務(wù)。
2.2 長(zhǎng)任務(wù)對(duì)RTOS的影響
當(dāng)使用可剝奪型實(shí)時(shí)內(nèi)核時(shí),長(zhǎng)任務(wù)由于執(zhí)行的時(shí)間較長(zhǎng),因而更容易被高優(yōu)先級(jí)的任務(wù)打斷;一旦高優(yōu)先級(jí)的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說(shuō)任務(wù)被掛起了,那個(gè)高優(yōu)先級(jí)的任務(wù)立刻得到了CPU的控制權(quán)。這樣會(huì)出現(xiàn)兩個(gè)問(wèn)題:一是長(zhǎng)任務(wù)可能在一次執(zhí)行的過(guò)程中被頻敏打斷,長(zhǎng)時(shí)間得不到一次完整的執(zhí)行;二是長(zhǎng)任務(wù)被打斷時(shí),可能要保存大量的現(xiàn)場(chǎng)信息,其目的是為了保證在高優(yōu)先級(jí)的任務(wù)執(zhí)行完返回后,長(zhǎng)任務(wù)能得以繼續(xù)執(zhí)行。然而,這樣做要占用一定的系統(tǒng)資源,同時(shí)保存現(xiàn)場(chǎng)本身也是要占用CPU時(shí)間的,因此,實(shí)時(shí)性也會(huì)下降。
當(dāng)使用不可剝奪型實(shí)時(shí)內(nèi)核時(shí),長(zhǎng)任務(wù)對(duì)RTOS的影響更為明顯,因?yàn)樵谶@種內(nèi)核中,任務(wù)級(jí)響應(yīng)時(shí)間取決于最長(zhǎng)的任務(wù)執(zhí)行時(shí)間。這也就是說(shuō)由于長(zhǎng)任務(wù)的存在,任務(wù)級(jí)的響應(yīng)時(shí)間要變長(zhǎng)。其結(jié)果是CPU長(zhǎng)時(shí)間停留在長(zhǎng)任務(wù)中,其它的任務(wù)得不到實(shí)時(shí)的響應(yīng),甚至于根本得不到執(zhí)行,系統(tǒng)的實(shí)時(shí)性勢(shì)必要下降。
總之,無(wú)論是使用可剝奪型內(nèi)核,還是使用不可剝奪型內(nèi)核,長(zhǎng)任務(wù)都會(huì)對(duì)RTOS構(gòu)成嚴(yán)重的威脅。
3 長(zhǎng)任務(wù)問(wèn)題的解決
解決長(zhǎng)任務(wù)問(wèn)題最有效的途徑是進(jìn)行任務(wù)分割。所謂任務(wù)分割指將影響系統(tǒng)實(shí)時(shí)性的長(zhǎng)任務(wù)分割成若干個(gè)小任務(wù)。這樣單個(gè)任務(wù)的執(zhí)行時(shí)間變短,系統(tǒng)的任務(wù)級(jí)響應(yīng)時(shí)間變短,實(shí)時(shí)性提高。
評(píng)論