袁志祥,甘正良
(安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽馬鞍山243032)
基于μC/OS-Ⅲ的實(shí)時(shí)內(nèi)核中斷管理機(jī)制
袁志祥,甘正良
(安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽馬鞍山243032)
在嵌入式實(shí)時(shí)內(nèi)核中,低優(yōu)先級(jí)中斷對(duì)緊急任務(wù)的截止期干擾較大。針對(duì)該問(wèn)題,提出一種改進(jìn)的μC/OS-Ⅲ實(shí)時(shí)內(nèi)核中斷管理機(jī)制。利用共用優(yōu)先級(jí)空間的方式實(shí)現(xiàn)中斷和任務(wù)優(yōu)先級(jí)統(tǒng)一分配。根據(jù)當(dāng)前任務(wù)在執(zhí)行過(guò)程中發(fā)生中斷的緊急程度為中斷分配相應(yīng)的優(yōu)先級(jí),如果中斷比任務(wù)重要,則其優(yōu)先級(jí)高于當(dāng)前任務(wù),反之則低于當(dāng)前任務(wù)。優(yōu)先級(jí)低于當(dāng)前任務(wù)的中斷以任務(wù)方式處理,高于的則通過(guò)中斷服務(wù)程序處理。理論推導(dǎo)和實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的中斷管理機(jī)制可以縮短當(dāng)前執(zhí)行任務(wù)的響應(yīng)時(shí)間,保證緊急任務(wù)的可調(diào)度性和可預(yù)測(cè)性。
嵌入式實(shí)時(shí)內(nèi)核;低優(yōu)先級(jí)中斷;共用優(yōu)先級(jí)空間;中斷服務(wù)程序;可調(diào)度性;可預(yù)測(cè)性
嵌入式實(shí)時(shí)系統(tǒng)是一個(gè)能夠在指定或者確定的時(shí)間內(nèi)對(duì)外部事件作出響應(yīng)的系統(tǒng),其重要的特性是實(shí)時(shí)響應(yīng)性。嵌入式實(shí)時(shí)系統(tǒng)對(duì)外部事件的響應(yīng)一般都是通過(guò)中斷來(lái)處理的,其對(duì)中斷的處理方式直接影響到系統(tǒng)的實(shí)時(shí)性能[1]。
傳統(tǒng)嵌入式實(shí)時(shí)系統(tǒng)的中斷優(yōu)先級(jí)由硬件決定,而任務(wù)優(yōu)先級(jí)由內(nèi)核軟件決定,中斷服務(wù)程序(Interrupt Service Routine,ISR)的處理順序也是由硬件優(yōu)先級(jí)決定,中斷優(yōu)先級(jí)獨(dú)立于任務(wù)優(yōu)先級(jí)并高于任務(wù)優(yōu)先級(jí)。任務(wù)在執(zhí)行過(guò)程中如果有硬件中斷發(fā)生,只要沒(méi)有關(guān)閉硬件中斷,系統(tǒng)會(huì)立即響應(yīng)中斷,執(zhí)行ISR。所以,在傳統(tǒng)實(shí)時(shí)系統(tǒng)中,如果中斷響應(yīng)及時(shí),則系統(tǒng)負(fù)載也小。
中斷發(fā)生后ISR立即執(zhí)行的中斷處理方式雖然會(huì)有上述優(yōu)點(diǎn),但是也會(huì)帶來(lái)低優(yōu)先級(jí)ISR影響緊急任務(wù)的執(zhí)行、關(guān)中斷導(dǎo)致中斷丟失、高優(yōu)先級(jí)中斷破壞任務(wù)的臨界區(qū)、ISR執(zhí)行帶來(lái)時(shí)序顛倒和系統(tǒng)過(guò)于復(fù)雜等問(wèn)題[2-3]。
中斷處理的另一種方式是中斷以線程方式處理[4],其本質(zhì)是中斷發(fā)生后中斷管理模塊首先進(jìn)入ISR進(jìn)行簡(jiǎn)單處理,然后調(diào)用中斷服務(wù)任務(wù)(Interrupt Service Task,IST),這樣中斷的主要工作就以任務(wù)方式處理(在實(shí)時(shí)內(nèi)核中,線程和任務(wù)是同一個(gè)概念)。中斷以任務(wù)處理的好處是系統(tǒng)中只有任務(wù)這一種異步事件,IST和任務(wù)之間的交互就可以像普通任務(wù)之間交互一樣,例如IST可以進(jìn)入等待列表,可以使用信號(hào)量、消息等。
實(shí)時(shí)系統(tǒng)中有3類中斷[5]會(huì)對(duì)當(dāng)前任務(wù)執(zhí)行產(chǎn)生影響:(1)軟實(shí)時(shí)中斷;(2)中斷周期大于當(dāng)前任務(wù)周期的硬實(shí)時(shí)中斷;(3)中斷周期小于當(dāng)前任務(wù)周期的硬實(shí)時(shí)中斷。根據(jù)實(shí)時(shí)內(nèi)核基礎(chǔ)理論RMS[6]算法,前兩類中斷實(shí)際處理的內(nèi)容沒(méi)有當(dāng)前任務(wù)緊急,如果按照傳統(tǒng)內(nèi)核中斷處理方式,中斷發(fā)生后立即搶占當(dāng)前任務(wù)執(zhí)行就代表低優(yōu)先級(jí)事件搶占高優(yōu)先級(jí)事件,存在不合理性,因此,前兩類中斷可以看作是優(yōu)先級(jí)低于當(dāng)前任務(wù)的中斷。而第(3)類中斷無(wú)論以IST方式還是ISR方式處理,優(yōu)先級(jí)都比當(dāng)前任務(wù)優(yōu)先級(jí)高,因此,搶占當(dāng)前任務(wù)執(zhí)行是合理的,這類中斷看作是優(yōu)先級(jí)高于當(dāng)前任務(wù)的中斷Hi。本文針對(duì)μC/OS-Ⅲ實(shí)時(shí)內(nèi)核,提出一種新的中斷管理機(jī)制,以降低優(yōu)先級(jí)中斷對(duì)緊急任務(wù)截止期的干擾。
μC/OS-Ⅲ是M icrium公司開發(fā)的一個(gè)可裁剪、可固化、可剝奪的多任務(wù)內(nèi)核,沒(méi)有任務(wù)數(shù)目限制,是第3代內(nèi)核,提供所有現(xiàn)代實(shí)時(shí)內(nèi)核所需的功能,包括資源管理、同步、任務(wù)通信等,此外,μC/OS-Ⅲ還提供了很多其他類似內(nèi)核所不具備的獨(dú)特功能,例如內(nèi)嵌的實(shí)時(shí)性能測(cè)試、向任務(wù)直接發(fā)送信號(hào)量和消息、同時(shí)等待多個(gè)內(nèi)核對(duì)象等[7]。
2.1 μC/OS-Ⅲ中斷
μC/OS-Ⅲ采用2種中斷管理模式,在系統(tǒng)初始化時(shí)選擇其中的一種。一種是傳統(tǒng)中斷管理模式,即中斷以ISR方式處理,在當(dāng)前任務(wù)執(zhí)行的過(guò)程中,只要沒(méi)有關(guān)硬件中斷,無(wú)論何種級(jí)別的IRQ發(fā)生就立即處理,也稱為直接處理模式;另一種是以IST方式處理,在IRQ發(fā)生后先進(jìn)入ISR,向中斷隊(duì)列OSINT-Q發(fā)送信號(hào),退出ISR直接調(diào)度中斷隊(duì)列處理任務(wù)OS-IntQTask,即延時(shí)處理模式。
μC/OS-Ⅲ的2種中斷管理模式如圖1和圖2所示。在直接模式中,外設(shè)產(chǎn)生IRQ并調(diào)用ISR,ISR處理該IRQ的實(shí)際工作,這個(gè)過(guò)程中ISR可能會(huì)激活一個(gè)任務(wù),該任務(wù)優(yōu)先級(jí)可能比當(dāng)前運(yùn)行任務(wù)的優(yōu)先級(jí)高,也可能低。退出ISR之后會(huì)進(jìn)行任務(wù)調(diào)度,ISR激活任務(wù)過(guò)程中系統(tǒng)關(guān)中斷。
圖1 直接處理模式
圖2 延時(shí)處理模式
在延時(shí)處理模式中,外設(shè)產(chǎn)生IRQ后,依舊調(diào)用ISR,但不在ISR中激活新任務(wù),ISR主要是向中斷隊(duì)列OS-INT-Q發(fā)送信號(hào)量,有內(nèi)核服務(wù)參與的工作由中斷處理任務(wù)OS-IntQTask來(lái)處理,OS-IntQTask是系統(tǒng)中優(yōu)先級(jí)最高的任務(wù),一旦ISR退出,系統(tǒng)就立即調(diào)度OS-IntQTask,該任務(wù)主要是向新任務(wù)發(fā)送內(nèi)核消息(如信號(hào)量)來(lái)激活新任務(wù)。該模式本質(zhì)是把ISR分為兩部分處理,前半段是處理沒(méi)有涉及內(nèi)核服務(wù)參與的工作,后半段向OS-INT-Q發(fā)送內(nèi)核信息,激活新任務(wù)的工作由OS-IntQTask完成,并且ISR只在向OS-INT-Q發(fā)送內(nèi)核信息時(shí)關(guān)中斷,即在圖2中時(shí)刻(4)關(guān)中斷,這樣即可減少關(guān)中斷時(shí)間。
2.2 μC/OS-Ⅲ中斷管理的缺點(diǎn)
μC/OS-Ⅲ延時(shí)中斷處理模式實(shí)現(xiàn)了中斷以任務(wù)方式處理,可以最大限度降低關(guān)中斷的時(shí)間,但是μC/OS-Ⅲ中斷處理模塊會(huì)帶來(lái)2個(gè)問(wèn)題:
(1)中斷以任務(wù)方式處理的粒度過(guò)粗。系統(tǒng)中僅有一個(gè)優(yōu)先級(jí)最高的中斷隊(duì)列處理任務(wù)OSIntQTask,沒(méi)有實(shí)現(xiàn)中斷任務(wù)細(xì)分。很多異步事件依舊用ISR處理,這樣低優(yōu)先級(jí)的ISR對(duì)緊急任務(wù)的干擾問(wèn)題依舊存在。
(2)中斷優(yōu)先級(jí)和內(nèi)核任務(wù)優(yōu)先級(jí)沒(méi)有進(jìn)行統(tǒng)一分配。中斷優(yōu)先級(jí)由硬件決定,高于軟件優(yōu)先級(jí),這樣不緊急中斷的優(yōu)先級(jí)也會(huì)比緊急任務(wù)優(yōu)先級(jí)高,會(huì)影響緊急任務(wù)的執(zhí)行。
針對(duì)2.2節(jié)提出的問(wèn)題,本文對(duì)實(shí)時(shí)內(nèi)核μC/ OS-Ⅲ中斷管理機(jī)制進(jìn)行改進(jìn),同時(shí)從任務(wù)最大響應(yīng)時(shí)間這個(gè)角度來(lái)比較μC/OS-Ⅲ中斷管理機(jī)制和改進(jìn)后的中斷管理機(jī)制的性能。
3.1 改進(jìn)的中斷管理機(jī)制
改進(jìn)的模式采用共用優(yōu)先級(jí)方式實(shí)現(xiàn)中斷和普通內(nèi)核任務(wù)共用優(yōu)先級(jí)空間,實(shí)現(xiàn)優(yōu)先級(jí)共同分配。系統(tǒng)中每一個(gè)IRQ都對(duì)應(yīng)一個(gè)ISR和IST,具體某個(gè)IRQ是以ISR方式執(zhí)行還是以IST方式執(zhí)行取決于系統(tǒng)當(dāng)前執(zhí)行任務(wù)。在當(dāng)前任務(wù)執(zhí)行過(guò)程中如果發(fā)生的IRQ屬于Li,則向系統(tǒng)中已經(jīng)在等待信號(hào)的該IRQ對(duì)應(yīng)的IST發(fā)送一個(gè)信號(hào),得到信號(hào)后IST就處于就緒態(tài),待當(dāng)前任務(wù)執(zhí)行結(jié)束后再根據(jù)IST的優(yōu)先級(jí)和其他低優(yōu)先級(jí)任務(wù)一起進(jìn)行處理,即中斷以IST方式處理。如果IRQ屬于Hi則不進(jìn)行延時(shí),直接搶占當(dāng)前任務(wù)以ISR方式處理,雖然以ISR方式處理會(huì)帶來(lái)傳統(tǒng)模式下的缺點(diǎn),但可以保證高優(yōu)先級(jí)IRQ的及時(shí)響應(yīng)和最大限度的降低中斷對(duì)當(dāng)前執(zhí)行任務(wù)的干擾。本文提出的所有改進(jìn)都是為了實(shí)現(xiàn)2個(gè)目標(biāo):實(shí)現(xiàn)緊急IRQ的及時(shí)響應(yīng)和高優(yōu)先級(jí)任務(wù)的可調(diào)度性和可預(yù)測(cè)性。
混合模式中斷處理流程如圖3所示。
圖3 混合模式中斷處理流程
中斷處理的具體過(guò)程如下:
(1)當(dāng)任務(wù)ti在執(zhí)行時(shí),一個(gè)IRQ發(fā)生,系統(tǒng)首先獲取該IRQ對(duì)應(yīng)的ID,通過(guò)ID可以確定該IRQ對(duì)應(yīng)的中斷源。
(2)通過(guò)INT-PRIO[ID]獲取該IRQ優(yōu)先級(jí)prio,INT-PRIO數(shù)組下標(biāo)是IRQ的ID,值是該IRQ對(duì)應(yīng)的優(yōu)先級(jí)。
(3)通過(guò)INT-TCB[ID]獲取該IRQ對(duì)應(yīng)的IST任務(wù)塊指針tcb-Ptr,INT-TCB數(shù)組下標(biāo)是IRQ的ID,值是該IRQ對(duì)應(yīng)的IST任務(wù)控制塊指針,通過(guò)該指針調(diào)度IST。獲取指向ISR的函數(shù)指針fun-Ptr,通過(guò)該指針調(diào)用ISR。某個(gè)IRQ以ISR方式處理還是IST方式并不是固定不變,在一個(gè)時(shí)間點(diǎn)是以ISR方式處理,但另一個(gè)時(shí)間點(diǎn)以IST方式處理,這完全由系統(tǒng)當(dāng)前任務(wù)優(yōu)先級(jí)和該IRQ的優(yōu)先級(jí)決定。
(4)將IRQ的優(yōu)先級(jí)prio和ti的優(yōu)先級(jí)os-Prio進(jìn)行比較,如果IRQ優(yōu)先級(jí)高(優(yōu)先級(jí)值越低,優(yōu)先級(jí)越高),直接執(zhí)行該IRQ對(duì)應(yīng)的ISR,中斷返回后繼續(xù)執(zhí)行ti。如果ti優(yōu)先級(jí)高,則發(fā)送信號(hào)給該IRQ對(duì)應(yīng)的IST,IST一直處于等待信號(hào)的狀態(tài),一旦獲取信號(hào)就進(jìn)入就緒態(tài)。然后返回到ti繼續(xù)執(zhí)行。
(5)ti結(jié)束后重新獲取系統(tǒng)新的最高優(yōu)先級(jí)highst-Prio賦值給os-Prio,然后執(zhí)行該優(yōu)先級(jí)對(duì)應(yīng)的任務(wù),這個(gè)任務(wù)可能是IST或者是普通任務(wù)。
3.2 在低優(yōu)先級(jí)IRQ影響下任務(wù)最大響應(yīng)時(shí)間
當(dāng)采用μC/OS-Ⅲ直接處理模式時(shí)對(duì)應(yīng)的任務(wù)調(diào)度如圖4所示。
圖4 直接發(fā)布模式任務(wù)調(diào)度圖
在圖4中,當(dāng)前高優(yōu)先級(jí)任務(wù)ti在執(zhí)行的過(guò)程中,發(fā)生了中斷請(qǐng)求,執(zhí)行中斷服務(wù)程序ISR(用tISRm表示),tISRm結(jié)束時(shí)會(huì)激活一個(gè)優(yōu)先級(jí)低于ti優(yōu)先級(jí)的任務(wù)tjm,(假設(shè)優(yōu)先級(jí)順序是tj1>tj2…>tjm)ti執(zhí)行結(jié)束后執(zhí)行tjm。
任務(wù)最大響應(yīng)時(shí)間是[8-9]:
在式(1)中,cISRm是tISRm實(shí)際執(zhí)行時(shí)間;Ci是任務(wù)ti執(zhí)行時(shí)間包括上下文切換時(shí)間;γ1是激活tjm時(shí)間(向tjm發(fā)送信號(hào)量所需時(shí)間);δI是進(jìn)入和退出中斷進(jìn)行中斷現(xiàn)場(chǎng)保護(hù)時(shí)間;ci是任務(wù)ti實(shí)際執(zhí)行時(shí)間;δP是任務(wù)切換時(shí)間;m是任務(wù)執(zhí)行時(shí)發(fā)生的不同種類IRQ的數(shù)目。為了簡(jiǎn)化,后文中只給出了一個(gè)IRQ,但這不影響分析。
如果采用μC/OS-Ⅲ延時(shí)處理模式,對(duì)應(yīng)的任務(wù)調(diào)度如圖5所示。
圖5 延時(shí)發(fā)布模式任務(wù)調(diào)度圖
在圖5延時(shí)發(fā)布模式下,ISR向中斷隊(duì)列OSINT-Q發(fā)布消息,退出中斷后立即執(zhí)行中斷隊(duì)列任務(wù)OS-IntQTask,該任務(wù)把OS-INT-Q中的消息發(fā)布給任務(wù)tjm,由此可見這個(gè)過(guò)程多了一次任務(wù)調(diào)度。此時(shí)任務(wù)ti響應(yīng)時(shí)間是:
在式(3)中,ISR執(zhí)行之后向中斷隊(duì)列OS-INTQ發(fā)送消息,耗時(shí)是γ2,然后調(diào)用中斷隊(duì)列處理任務(wù)OS-IntQTask,該任務(wù)向tjm發(fā)送該消息(發(fā)送信號(hào)量來(lái)激活tjm),耗時(shí)為γ1注意公式中并沒(méi)有考慮中斷隊(duì)列任務(wù)執(zhí)行時(shí)間,只是考慮中斷隊(duì)列任務(wù)發(fā)送信號(hào)量的時(shí)間,所以計(jì)算結(jié)果和測(cè)量結(jié)果有一定偏差,但是沒(méi)有影響。
改進(jìn)后IRQ和普通內(nèi)核任務(wù)共用同一優(yōu)先級(jí)空間(見圖6),IRQ優(yōu)先級(jí)低于當(dāng)前任務(wù),在當(dāng)前任務(wù)執(zhí)行時(shí)發(fā)生此類IRQ后依舊會(huì)立即響應(yīng)IRQ,但是IRQ主要是以IST方式處理,IST處理結(jié)束后向tjm發(fā)送信號(hào),即tISR的處理分為兩部分,第1部分是向IST發(fā)送信號(hào),第2部分才是實(shí)際執(zhí)行(用tIST任務(wù)),IST處理結(jié)束后向tjm發(fā)送信號(hào)。
圖6 改進(jìn)后任務(wù)調(diào)度圖
在圖6中,中斷發(fā)生后,tISR并不處理主要的工作,大部分工作由tIST完成(即cISR是tIST消耗而不是ISR消耗),因?yàn)閠IST和ti共用一個(gè)優(yōu)先級(jí)空間并且沒(méi)有ti優(yōu)先級(jí)高,所以不會(huì)搶占ti的執(zhí)行,所以ti的響應(yīng)時(shí)間會(huì)減少很多。響應(yīng)時(shí)間計(jì)算式如下:
3.3 高優(yōu)先級(jí)IRQ下當(dāng)前任務(wù)響應(yīng)時(shí)間
如果中斷請(qǐng)求屬于Hi,那么這類中斷比當(dāng)前任務(wù)重要,優(yōu)先級(jí)也比當(dāng)前任務(wù)高,改進(jìn)的模式(直接以ISR方式處理)和μC/OS-Ⅲ直接發(fā)布模式一樣,對(duì)任務(wù)響應(yīng)時(shí)間的影響也是一樣。因?yàn)棣藽/OS-Ⅲ延時(shí)發(fā)布需要調(diào)用中斷處理函數(shù)OS-IntQTask,會(huì)帶來(lái)任務(wù)切換額外的開銷,所以在直接模式下任務(wù)響應(yīng)時(shí)間小。
上文從理論分析了在不同中斷管理模式中低優(yōu)先級(jí)IRQ的影響的任務(wù)最大響應(yīng)時(shí)間,結(jié)果表明改進(jìn)后的中斷管理模式可以降低當(dāng)前執(zhí)行任務(wù)的最大響應(yīng)時(shí)間。
仿真實(shí)驗(yàn)硬件平臺(tái)是STM 32芯片。STM 32芯片采用的是Cortex-M 3處理器,具有門數(shù)目少、中斷延遲斷、調(diào)試成本低的特點(diǎn),是為要求有快速中斷響應(yīng)能力的深度嵌入式應(yīng)用而設(shè)計(jì)的,該處理器采用的是ARM v7-M構(gòu)架[10]。本文仿真實(shí)驗(yàn)設(shè)置芯片的速度是72 MHz,通過(guò)修改μC/OS-Ⅲ內(nèi)核實(shí)現(xiàn)具體的功能。
為了便于觀察,仿真實(shí)驗(yàn)中斷采用STM 32的通用定時(shí)器2(TIMER2)產(chǎn)生的中斷,這樣就可以得到周期性中斷,中斷主要的工作是通過(guò)串口助手向終端發(fā)送數(shù)據(jù)。
實(shí)驗(yàn)為了模擬多個(gè)中斷,設(shè)置定時(shí)器2中斷周期小于當(dāng)前任務(wù),這樣當(dāng)前任務(wù)運(yùn)行時(shí)可以多次發(fā)生,類似于在任務(wù)一次運(yùn)行時(shí)發(fā)生多個(gè)中斷。內(nèi)核運(yùn)行的功能耗時(shí)如表1所示。
表1 功能耗時(shí)μs
對(duì)于情況(1)和情況(2)主要考慮中斷對(duì)任務(wù)截止期的影響,因此,給定任務(wù)執(zhí)行時(shí)間和周期而中斷執(zhí)行時(shí)間和周期變化,任意取任務(wù)執(zhí)行時(shí)間ci= 100 m s,周期Ti=1 000 m s,對(duì)于情況(1),中斷周期固定,執(zhí)行時(shí)間不定,任意取中斷周期30 m s(最好在100 m s內(nèi),這樣可以保證任務(wù)執(zhí)行時(shí)間內(nèi)中斷至少
因?yàn)楸疚闹攸c(diǎn)討論的是改進(jìn)的模式中低優(yōu)先級(jí)中斷對(duì)緊急任務(wù)截止期的影響同時(shí)也要考慮任務(wù)對(duì)中斷完成響應(yīng)時(shí)間的影響,之所以不考慮改進(jìn)的模式中高優(yōu)先級(jí)中斷是因?yàn)楦邇?yōu)先級(jí)中斷直接以ISR方式處理,這個(gè)傳統(tǒng)的模式?jīng)]有區(qū)別,因此實(shí)驗(yàn)主要分以下3種情況進(jìn)行:
(1)中斷執(zhí)行時(shí)間變化但是周期固定的情況下任務(wù)截止期是如何變化。此時(shí)任務(wù)執(zhí)行時(shí)間,周期和中斷周期是固定的。
(2)中斷執(zhí)行時(shí)間固定但是周期變化的情況下對(duì)應(yīng)任務(wù)截止期是如何變化。此時(shí)任務(wù)執(zhí)行時(shí)間,周期和中斷執(zhí)行時(shí)間是固定的。
(3)在任務(wù)執(zhí)行時(shí)間和周期變化的情況下,中斷完成響應(yīng)的時(shí)間是如何變化的。
在實(shí)時(shí)內(nèi)核中事件的可調(diào)度性首要條件是:發(fā)生一次),則根據(jù)式(6),中斷執(zhí)行時(shí)間在[0,27]之間,對(duì)應(yīng)在3種模式下理論和實(shí)際任務(wù)截止期如圖7所示。
圖7 任務(wù)截止期在不同中斷執(zhí)行時(shí)間下的值
由圖7可見,在3種模式中,直接模式和延時(shí)模式任務(wù)的截止期受中斷執(zhí)行時(shí)間影響比較大,任務(wù)截止期會(huì)隨著中斷執(zhí)行時(shí)間增加而增加,特別是中斷執(zhí)行時(shí)間比較長(zhǎng)時(shí)任務(wù)截止期會(huì)大大增加,這也就是傳統(tǒng)模式中為什么要求中斷盡可能短小的原因,而改進(jìn)的模式無(wú)論中斷實(shí)際工作需要多少時(shí)間,都不會(huì)影響當(dāng)前任務(wù)截止期,即當(dāng)前任務(wù)截止期不會(huì)受到中斷的影響,并且對(duì)于的任務(wù)截止期最小。
對(duì)于中斷執(zhí)行時(shí)間固定,周期變化的情況,任意取中斷處理時(shí)間是1 m s,根據(jù)式(6)中斷周期在大于10/9,同樣中斷周期最好小于100 m s,這樣可以保證任務(wù)執(zhí)行時(shí)可以發(fā)生多次中斷,對(duì)應(yīng)的任務(wù)截止期如圖8所示。
圖8 任務(wù)截止期在不同中斷周期下的值
由圖8可見,當(dāng)前任務(wù)截止期在3種模式下都是隨著中斷周期的變大截止期變小,這也很好理解,即中斷周期變大,在任務(wù)執(zhí)行時(shí)間內(nèi)中斷發(fā)生的次數(shù)變少,因此對(duì)任務(wù)影響也小。
對(duì)于情況(3),任務(wù)在不同執(zhí)行時(shí)間和周期下,直接模式和延時(shí)模式只要發(fā)生中斷都可以立即處理,而改進(jìn)的模式中對(duì)于低優(yōu)先級(jí)中斷是不處理的,直到當(dāng)前任務(wù)執(zhí)行結(jié)束之后才和其他任務(wù)一起處理,因此,在改進(jìn)德模式低優(yōu)先級(jí)中斷最快完成執(zhí)行也要等當(dāng)前任務(wù)處理結(jié)束之后,也就是改進(jìn)的模式中斷完成響應(yīng)的時(shí)間大大增加,這點(diǎn)遠(yuǎn)不如直接模式和延時(shí)模式。但是為了保證緊急事件的及時(shí)響應(yīng),犧牲低優(yōu)先級(jí)的事件響應(yīng)時(shí)間是值得的。
由理論和實(shí)驗(yàn)數(shù)據(jù)可知,在改進(jìn)后的中斷管理模式中,當(dāng)前中斷請(qǐng)求因?yàn)楹蛢?nèi)核普通任務(wù)共用一個(gè)優(yōu)先級(jí)空間并且沒(méi)有當(dāng)前執(zhí)行的任務(wù)ti優(yōu)先級(jí)高(即該類型中斷沒(méi)有當(dāng)前執(zhí)行的任務(wù)緊急),所以該類型中斷發(fā)生后并不立即處理,而是等ti結(jié)束后以任務(wù)方式處理。改進(jìn)后的中斷管理模式主要是延時(shí)處理當(dāng)前低優(yōu)先級(jí)中斷以節(jié)約時(shí)間用于高優(yōu)先級(jí)任務(wù)ti的處理,是犧牲低優(yōu)先級(jí)中斷的及時(shí)響應(yīng)來(lái)滿足高優(yōu)先任務(wù)對(duì)時(shí)間需求的。因此,在改進(jìn)后的中斷管理模式中,當(dāng)前任務(wù)ti執(zhí)行需要的最大響應(yīng)時(shí)間最小,即截止期最小。
在嵌入式實(shí)時(shí)內(nèi)核中,中斷和任務(wù)統(tǒng)一為事件,系統(tǒng)始終處理優(yōu)先級(jí)最高的事件,這樣無(wú)論是中斷還是任務(wù),始終以優(yōu)先級(jí)為處理依據(jù)最符合實(shí)際情況,傳統(tǒng)內(nèi)核中中斷優(yōu)先級(jí)由硬件分配并且高于任務(wù)優(yōu)先級(jí),在任務(wù)處理過(guò)程中只要發(fā)生中斷就立即處理ISR,這樣設(shè)計(jì)的目的是防止中斷丟失,但對(duì)于截止期很小的緊急任務(wù),在執(zhí)行過(guò)程中如果中斷頻繁發(fā)生會(huì)導(dǎo)致任務(wù)錯(cuò)過(guò)截止期。為保證任務(wù)對(duì)時(shí)間的需求,系統(tǒng)一般采用關(guān)中斷,這樣會(huì)造成優(yōu)先級(jí)中斷丟失。因此,目前對(duì)實(shí)時(shí)內(nèi)核的研究主要集中在提高緊急事件的處理時(shí)間和防止中斷丟失2個(gè)方面。
本文主要分析了傳統(tǒng)嵌入式實(shí)時(shí)內(nèi)核中斷管理的優(yōu)缺點(diǎn),在此基礎(chǔ)上提出了新的中斷管理框架,并通過(guò)實(shí)驗(yàn)驗(yàn)證在指定的環(huán)境中該框架比傳統(tǒng)的中斷管理具有更好的性能,在保證緊急中斷及時(shí)處理的情況下可以進(jìn)一步降低低優(yōu)先級(jí)中斷對(duì)緊急任務(wù)執(zhí)行的干擾。后續(xù)的工作主要是繼續(xù)優(yōu)化中斷對(duì)任務(wù)的影響,同時(shí)也將研究如何保證中斷的及時(shí)響應(yīng),降低中斷延時(shí)。
[1] 雷紅衛(wèi),桑 楠,熊光澤.嵌入式實(shí)時(shí)系統(tǒng)中斷管理技術(shù)研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004,(5):16-19.
[2] Leyva-del-Foyo L E,Mejia-Alvarez P.Custom Interrupt Management for Real-time and Embedded System Kernels[C]//Proceedings of ETRSI'04.Washington D.C.,USA:IEEE Press,2004.
[3] Leyva-del-Foyo L E,Mejia-Alvarez P,de Niz D. Predictable Interrupt Management for Real Time Kernels over Conventional PC Hardware[C]//Proceedings of the 12th IEEE Symposium on Real-time and Embedded Technology and Applications.Washington D.C.,USA:IEEE Press,2006:14-23.
[4] K leiman S,Eykholt J.Interrupts as Threads[J].ACM SIGOPS Operating System s Review,1995,29(2):21-26.
[5] K lein M H,Ralya T,Pollak B,et al.A Practitioner's Handbook for Real-time Analysis[M].Boston,USA:Kluwer Academic Publishers,1993.
[6] Liu C L,Layland J W.Scheduling Algorithm s for Multiprogramming in a Hard-real-time Environment[J]. Journal of the ACM,1973,20(1):46-61.
[7] Labrosse J J.μC/OS-Ⅲ,The Real-time Kernel[M].[S.l.]:Micrium Incorporated,2010.
[8] Lehoczky J,Sha L,Ding Y.The Rate Monotonic Scheduling Algorithm:Exact Characterization and Average Case Behavior[C]//Proceedings of IEEE Real Tim e System s Symposium.Washington D.C.,USA:IEEE Press,1989:166-171.
[9] Audsley N,Burns A,Richardson M,et al.Applying New Scheduling Theory to Static Priority Pre-emptive Scheduling[J].Software Engineering Journal,1993,8(5):284-292.
[10] Yiu J.Cortex-M 3權(quán)威指南[M].宋 巖,譯.北京:北京航空航天大學(xué)出版社,2009.
編輯 金胡考
Real-time Kernel Interrupt Management Mechanism Based on μC/OS-Ⅲ
YUAN Zhixiang,GAN Zhengliang
(School of Computing Science and Technology,Anhui University of Technology,Maanshan 243032,China)
Aiming at the problem that the low-priority interrupts have bad disturbance on high-priority tasks deadline in embedded real-time kernel,an improved interrupt management mechanism for μC/OS-Ⅲis proposed.Priority assignment is based on the importance of interrupts which occurs during execution of the tasks.If interrupt is more important,its priority is higher than tasks priority,otherwise its priority is lower than task priority.Interrupt Service Routine(ISR)deals with the high-priority interrupts and interrupt service task deals with the low-priority interrupts.The result of the experiment and analysis of theory show that the improved interrupt management mechanism can reduce the response time of task and ensure the schedulability and predictability of the task.
embedded real-time kernel;low-priority interrupt;common priority space;Interrupt Service Routine(ISR);schedulability;predictability
袁志祥,甘正良.基于μC/OS-Ⅲ的實(shí)時(shí)內(nèi)核中斷管理機(jī)制[J].計(jì)算機(jī)工程,2015,41(11):100-105.
英文引用格式:Yuan Zhixiang,Gan Zhengliang.Real-time Kernel Interrupt Management Mechanism Based on μC/OS-Ⅲ[J].Computing Engineering,2015,41(11):100-105.
1000-3428(2015)11-0100-06
A
TP311
10.3969/j.issn.1000-3428.2015.11.018
國(guó)家“十二五”科技支撐計(jì)劃基金資助項(xiàng)目(2012BAK 30B04-02)。
袁志祥(1973-),男,副教授,主研方向:Petri網(wǎng)理論,嵌入式系統(tǒng);甘正良,碩士研究生。
2014-09-01
2014-11-10 E-m ail:zxyuan@ahut.edu.cn