專(zhuān)利名稱(chēng):多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)多任務(wù)操作系統(tǒng)領(lǐng)域,特別涉及一種在基于任務(wù)優(yōu)先級(jí)調(diào)度的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng)及方法。
背景技術(shù):
在vxWorks多任務(wù)操作系統(tǒng)中,一個(gè)低優(yōu)先級(jí)任務(wù)獲取某個(gè)互斥信號(hào)量后,可能被高優(yōu)先級(jí)任務(wù)搶占,發(fā)生任務(wù)切換。為了解決該問(wèn)題,當(dāng)某個(gè)高優(yōu)先級(jí)任務(wù)也欲獲取該信號(hào)量時(shí),操作系統(tǒng)將把低優(yōu)先級(jí)任務(wù)的優(yōu)先級(jí)反轉(zhuǎn)提高到與等待該信號(hào)量的任務(wù)中最高優(yōu)先級(jí)相等,從而保證占用互斥信號(hào)量的低優(yōu)先級(jí)任務(wù)優(yōu)先執(zhí)行,以盡快釋放資源。為了防止多個(gè)任務(wù)搶占同一個(gè)資源而導(dǎo)致系統(tǒng)崩潰,在基于優(yōu)先級(jí)調(diào)度的操作系統(tǒng)中,這樣的任務(wù)優(yōu)先級(jí)的反轉(zhuǎn)是必要的,但某些時(shí)候,操作系統(tǒng)中發(fā)生任務(wù)優(yōu)先級(jí)反轉(zhuǎn)后,可能會(huì)帶來(lái)一些問(wèn)題,例如某些低優(yōu)先級(jí)任務(wù)由于運(yùn)行時(shí)間長(zhǎng),如果這類(lèi)低優(yōu)先級(jí)任務(wù)的優(yōu)先級(jí)被反轉(zhuǎn),就不能被高優(yōu)先級(jí)任務(wù)搶占,導(dǎo)致高優(yōu)先任務(wù)得不到及時(shí)調(diào)度。因此,我們有必要知道低優(yōu)先級(jí)任務(wù)反轉(zhuǎn)的相關(guān)信息:低優(yōu)先級(jí)任務(wù)獲取了哪個(gè)互斥信號(hào)量后,該信號(hào)量阻塞了哪個(gè)高優(yōu)先級(jí)任務(wù)導(dǎo)致低優(yōu)先級(jí)任務(wù)的優(yōu)先級(jí)反轉(zhuǎn),對(duì)于某些優(yōu)先級(jí)不能被反轉(zhuǎn)的低優(yōu)先級(jí)任務(wù),在軟件實(shí)現(xiàn)時(shí)需要與高優(yōu)先級(jí)任務(wù)盡量減少資源共享,避免低優(yōu)先級(jí)任務(wù)的優(yōu)先級(jí)被反轉(zhuǎn)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是:提出一種多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng)及方法,快速定位任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的相關(guān)信息。本發(fā)明解決上述技術(shù)問(wèn)題所采用的方案是:多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng),包括:任務(wù)切換記錄模塊,用于對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄,并接受優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊注冊(cè)鉤子函數(shù)的通知,在此后發(fā)生任務(wù)切換時(shí),調(diào)用鉤子函數(shù);優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊,用于根據(jù)用戶(hù)接口命令向操作系統(tǒng)注冊(cè)或注銷(xiāo)鉤子函數(shù),在注冊(cè)鉤子函數(shù)時(shí)通知任務(wù)切換記錄模塊,所述鉤子函數(shù)在操作系統(tǒng)中任務(wù)發(fā)生切換時(shí)被調(diào)用,以檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)及發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信肩、O進(jìn)一步,所述任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄包括:通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡,同時(shí)使用任務(wù)切換次數(shù)變量來(lái)記錄任務(wù)切換次數(shù);所述環(huán)形隊(duì)列中的元素對(duì)應(yīng)操作系統(tǒng)中任務(wù)切換時(shí)被調(diào)度任務(wù)的任務(wù)控制塊。進(jìn)一步,所述通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡的方法是:在發(fā)生任務(wù)切換時(shí),依據(jù)任務(wù)切換變量記錄的當(dāng)前任務(wù)切換次數(shù)將當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊記錄在環(huán)形隊(duì)列中對(duì)應(yīng)的位置。進(jìn)一步,所述鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)的方法是:檢測(cè)當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊中運(yùn)行優(yōu)先級(jí)字段與配置優(yōu)先級(jí)字段值是否相同,如果不同,則判定該任務(wù)的優(yōu)先級(jí)發(fā)生了反轉(zhuǎn)。進(jìn)一步,所述發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息包括:被反轉(zhuǎn)任務(wù)獲取的信號(hào)量及其阻塞的高優(yōu)先級(jí)任務(wù)。此外,本發(fā)明還提出了一種多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法,該方法包括以下步驟:a.當(dāng)需要檢測(cè)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)時(shí),優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊根據(jù)用戶(hù)接口命令向操作系統(tǒng)注冊(cè)鉤子函數(shù),并通知任務(wù)切換記錄模塊;b.任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄,并接受優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊注冊(cè)鉤子函數(shù)的通知,在此后發(fā)生任務(wù)切換時(shí),調(diào)用鉤子函數(shù);c.鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)以及發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息。進(jìn)一步,步驟b中,所述任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄包括:通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡,同時(shí)使用任務(wù)切換次數(shù)變量來(lái)記錄任務(wù)切換次數(shù);所述環(huán)形隊(duì)列中的元素對(duì)應(yīng)操作系統(tǒng)中任務(wù)切換時(shí)被調(diào)度任務(wù)的任務(wù)控制塊。具體的,所述通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡的方法是:在發(fā)生任務(wù)切換時(shí),依據(jù)任務(wù)切換變量記錄的當(dāng)前任務(wù)切換次數(shù)將當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊記錄在環(huán)形隊(duì)列中對(duì)應(yīng)的位置。進(jìn)一步,步驟c中,所述鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)的方法是:檢測(cè)當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊中運(yùn)行優(yōu)先級(jí)字段與配置優(yōu)先級(jí)字段值是否相同,如果不同,則判定該任務(wù)的優(yōu)先級(jí)發(fā)生了反轉(zhuǎn)。進(jìn)一步,所述發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息包括:被反轉(zhuǎn)任務(wù)獲取的信號(hào)量及其阻塞的高優(yōu)先級(jí)任務(wù),所述鉤子函數(shù)檢測(cè)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息的具體方法是:鉤子函數(shù)執(zhí)行時(shí)若檢測(cè)到當(dāng)前被調(diào)度任務(wù)的優(yōu)先級(jí)反轉(zhuǎn),則在任務(wù)切換軌跡中檢測(cè)此前被調(diào)度的任務(wù):若在任務(wù)切換軌跡中,某高優(yōu)先級(jí)任務(wù)被阻塞信號(hào)量的所有者為當(dāng)前被調(diào)度任務(wù),且該高優(yōu)先級(jí)任務(wù)的運(yùn)行優(yōu)先級(jí)等于當(dāng)前被調(diào)度任務(wù)的運(yùn)行優(yōu)先級(jí),則判定出該高優(yōu)先級(jí)任務(wù)被阻塞在某互斥信號(hào)量上,且該互斥信號(hào)量被當(dāng)前被調(diào)度任務(wù)獲取,操作系統(tǒng)將當(dāng)前被調(diào)度任務(wù)的優(yōu)先級(jí)進(jìn)行了反轉(zhuǎn)。本發(fā)明的有益效果是:檢測(cè)方法簡(jiǎn)單,不需要修改操作內(nèi)核代碼,實(shí)現(xiàn)快速定位任務(wù)優(yōu)先級(jí)反轉(zhuǎn)及其相關(guān)信息,進(jìn)而解決由任務(wù)優(yōu)先級(jí)反轉(zhuǎn)帶來(lái)的問(wèn)題:例如某些低優(yōu)先級(jí)任務(wù)由于運(yùn)行時(shí)間長(zhǎng),就不能被高優(yōu)先級(jí)任務(wù)搶占,導(dǎo)致高優(yōu)先任務(wù)得不到及時(shí)調(diào)度。
圖1為本發(fā)明中多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng)示意圖;圖2為任務(wù)切換軌跡示意圖;圖3為實(shí)施例中任務(wù)優(yōu)先級(jí)被一次反轉(zhuǎn)的示意圖;圖4為實(shí)施例中任務(wù)優(yōu)先級(jí)被多次反轉(zhuǎn)的示意圖5為本發(fā)明中多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法流程圖。
具體實(shí)施例方式參見(jiàn)圖1,本發(fā)明中多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng)包括任務(wù)切換記錄模塊及優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊;其中,任務(wù)切換記錄模塊,用于對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄,并接受優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊注冊(cè)鉤子函數(shù)的通知,在此后發(fā)生任務(wù)切換時(shí),調(diào)用鉤子函數(shù)。優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊,用于根據(jù)用戶(hù)接口命令向操作系統(tǒng)注冊(cè)或注銷(xiāo)鉤子函數(shù),在注冊(cè)鉤子函數(shù)時(shí)通知任務(wù)切換記錄模塊,所述鉤子函數(shù)在操作系統(tǒng)中任務(wù)發(fā)生切換時(shí)被調(diào)用,以檢 測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)及發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信 O實(shí)施例:以vxWorks操作系統(tǒng)為例,在vxWorks操作系統(tǒng)中,使用一個(gè)結(jié)構(gòu)體來(lái)管理任務(wù),可以稱(chēng)此結(jié)構(gòu)體為任務(wù)控制塊,任務(wù)控制塊和任務(wù)一一對(duì)應(yīng),任務(wù)控制塊中有任務(wù)運(yùn)行的各項(xiàng)信息字段,包括:任務(wù)運(yùn)行優(yōu)先級(jí)字段、配置優(yōu)先級(jí)字段和被阻塞互斥信號(hào)量字段,配置優(yōu)先級(jí)在系統(tǒng)運(yùn)行過(guò)程不變,除非用戶(hù)強(qiáng)制修改,而運(yùn)行優(yōu)先級(jí)在系統(tǒng)運(yùn)行過(guò)程中可以被系統(tǒng)反轉(zhuǎn),在任務(wù)的運(yùn)行優(yōu)先級(jí)沒(méi)有被反轉(zhuǎn)的情形下,運(yùn)行優(yōu)先級(jí)與配置優(yōu)先級(jí)相等;被阻塞互斥信號(hào)量字段表示此任務(wù)由于取不到某互斥信號(hào)量而阻塞在此互斥信號(hào)量上。并且,在vxWorks操作系統(tǒng)中,也使用一個(gè)結(jié)構(gòu)體來(lái)管理信號(hào)量,可以稱(chēng)此結(jié)構(gòu)體為信號(hào)量控制塊。對(duì)于互斥信號(hào)量來(lái)說(shuō),信號(hào)量控制塊中,所有者字段表示已經(jīng)獲取該信號(hào)量的任務(wù)的任務(wù)控制塊。本實(shí)施例中采用一個(gè)元素個(gè)數(shù)為n的環(huán)形隊(duì)列T={T
,T [I],"^TQ1-1]}記錄操作系統(tǒng)最近n次任務(wù)切換軌跡。其中隊(duì)列的元素T[i] (i=0, I, 2,…n_l)表示操作系統(tǒng)某次調(diào)度的任務(wù)的任務(wù)控制塊。此外,本實(shí)施例還使用一個(gè)全局變量j記錄鉤子函數(shù)被注冊(cè)后任務(wù)切換的次數(shù)。鉤子函數(shù)執(zhí)行時(shí)根據(jù)j值在環(huán)形隊(duì)列中對(duì)應(yīng)位置記錄當(dāng)前調(diào)度任務(wù)的控制塊,設(shè)置鉤子函數(shù)執(zhí)行時(shí)的當(dāng)前任務(wù)控制塊為T(mén)j,則T[j%n]=Tj,接著更新j的值:j=j+l。如此,經(jīng)過(guò)操作系統(tǒng)的任務(wù)多次切換后,便形成了如圖2所示的任務(wù)切換軌跡:即操作系統(tǒng)第0次任務(wù)切換時(shí),當(dāng)前調(diào)度任務(wù)控制塊為T(mén)tl,則TM=Ttl ;第I次任務(wù)切換時(shí),當(dāng)前調(diào)度任務(wù)的控制塊T1, T [I] =T1 ;…;第n-1次調(diào)度時(shí),當(dāng)前調(diào)度任務(wù)控制塊為T(mén)lri, Ttn-l]=!^ ;第n次任務(wù)切換時(shí),當(dāng)前調(diào)度任務(wù)控制塊1'11,1'[(11)%11]=1'
=1'11 ;第11+1次任務(wù)切換時(shí),當(dāng)前調(diào)度任務(wù)的控制塊1;+1,T[(n+l)%n]=T[l]=Tn+1 ;以此類(lèi)推;鉤子函數(shù)在發(fā)生任務(wù)切換時(shí)被調(diào)用,檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn):檢測(cè)當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊中運(yùn)行優(yōu)先級(jí)字段與配置優(yōu)先級(jí)字段值是否相同,如果不同,則判定該任務(wù)的優(yōu)先級(jí)發(fā)生了反轉(zhuǎn);若檢測(cè)到當(dāng)前被調(diào)度任務(wù)發(fā)生了優(yōu)先級(jí)反轉(zhuǎn),則在任務(wù)切換軌跡中檢測(cè)此前被調(diào)度的任務(wù):若在任務(wù)切換軌跡中,某高優(yōu)先級(jí)任務(wù)被阻塞信號(hào)量的所有者為當(dāng)前被調(diào)度任務(wù),且該高優(yōu)先級(jí)任務(wù)的運(yùn)行優(yōu)先級(jí)等于當(dāng)前被調(diào)度任務(wù)的運(yùn)行優(yōu)先級(jí),則判定出該高優(yōu)先級(jí)任務(wù)被阻塞在某互斥信號(hào)量上,且該互斥信號(hào)量被當(dāng)前被調(diào)度任務(wù)獲取,操作系統(tǒng)將當(dāng)前被調(diào)度任務(wù)的優(yōu)先級(jí)進(jìn)行了反轉(zhuǎn)。圖3給出了任務(wù)優(yōu)先級(jí)被一次反轉(zhuǎn)的情形,如圖3所示,操作系統(tǒng)第n次任務(wù)切換時(shí),被調(diào)度任務(wù)為低優(yōu)先級(jí)任務(wù)taskO,其控制塊為tcbO,則T [n%n] =T
=tcbO, taskO獲取信號(hào)量SEM_XXX后,SEM_XXX的所有者為T(mén)askO ;接著操作系統(tǒng)發(fā)生第n+1次任務(wù)切換,此時(shí)被調(diào)度任務(wù)Taskl的控制塊為tcbl,T[(n+l)%n]=T[l]=tcbl,任務(wù)Taskl欲取信號(hào)量SEM_XXX,但取不到,把任務(wù)TaskO的優(yōu)先級(jí)進(jìn)行反轉(zhuǎn),阻塞在信號(hào)量SEM_XXX上;接著發(fā)生第n+2次,n+3, n+4次任務(wù)切換;其中在n+4次任務(wù)切換時(shí),被調(diào)度任務(wù)為T(mén)askO,顯然,T[(n+4)%n]=T[4]=tcbO,此時(shí)TaskO的優(yōu)先級(jí)已經(jīng)被反轉(zhuǎn);在鉤子函數(shù)檢測(cè)到當(dāng)前任務(wù)TaskO的優(yōu)先級(jí)發(fā)生了反轉(zhuǎn)時(shí),則逆向依次檢測(cè)任務(wù)控制塊T [3],T [2],T [I];則會(huì)檢測(cè)到任務(wù)Taskl被阻塞信號(hào)量SEM_XXX的所有者為T(mén)askO,且Taskl的運(yùn)行優(yōu)先級(jí)與任務(wù)TaskO的運(yùn)行優(yōu)先級(jí)相等,則說(shuō)明:高優(yōu)先級(jí)任務(wù)Taskl欲獲取信號(hào)量SEM_XXX,但SEM_XXX時(shí)已經(jīng)被任務(wù)TaskO獲取,操作系統(tǒng)將當(dāng)前TaskO的優(yōu)先級(jí)進(jìn)行了反轉(zhuǎn)。圖4給出了任務(wù)優(yōu)先級(jí)被多次反轉(zhuǎn)的情形,如圖4所示,在第n次任務(wù)切換時(shí),被調(diào)度任務(wù)為低優(yōu)先級(jí)任務(wù)TaskO,其任務(wù)控制塊為tcbO,T[(n)%n]=T
=tcb0 ;Task0獲取信號(hào)量SEM_XXX后,SEM_XXX的所有者為T(mén)askO ;接著發(fā)生第n+1次任務(wù)切換,被調(diào)度任務(wù)為T(mén)askl,其它任務(wù)控制塊為tcbl,T [ (n+1) %n] =T [I] =tcbl,Taskl獲取信號(hào)量SEM_YYY后,SEM_YYY的所有者為T(mén)askl,Taskl欲獲取信號(hào)量SEM_XXX,將taskO的優(yōu)先級(jí)反轉(zhuǎn),并阻塞在信號(hào)量SEM_XXX上;接著發(fā)生第n+2次任務(wù)切換,被調(diào)度任務(wù)為T(mén)ask2,其任務(wù)控制塊為tcb2,T[(n+2)%n]=T[2]=tcb2 ;Task2欲取信號(hào)量SEM_YYY,將Taskl的任務(wù)優(yōu)先級(jí)進(jìn)行反轉(zhuǎn),還要將TaskO的優(yōu)先級(jí)進(jìn)行反轉(zhuǎn),并被阻塞在信號(hào)量SEM_YYY上;第n+3次任務(wù)切換時(shí),被調(diào)度任務(wù)為T(mén)askO, T [ (n+3) %n] =T [3] =tcb0, TaskO的優(yōu)先級(jí)已經(jīng)被反轉(zhuǎn);第n+4次任務(wù)切換時(shí),被調(diào)度任務(wù)為taskl, T[ (n+4)%n] =T[4] =tcbI, Taskl的任務(wù)優(yōu)先級(jí)已經(jīng)被反轉(zhuǎn)。在鉤子函數(shù)檢測(cè)到TaskO的優(yōu)先級(jí)已經(jīng)反轉(zhuǎn)時(shí),則逆向依次檢測(cè)任務(wù)控制塊T [2],T[l]。則會(huì)檢測(cè)到任務(wù)Taskl的被阻塞信號(hào)量SEM_XXX的所有者為T(mén)askO,且Taskl的運(yùn)行優(yōu)先級(jí)與任務(wù)TaskO的運(yùn)行優(yōu)先級(jí)相等,則說(shuō)明:高優(yōu)先級(jí)任務(wù)Taskl欲獲取信號(hào)量SEM_XXX,但SEM_XXX時(shí)已經(jīng)被任務(wù)TaskO獲取,操作系統(tǒng)將當(dāng)前TaskO的優(yōu)先級(jí)進(jìn)行了反轉(zhuǎn)。在鉤子函數(shù)檢測(cè)到Taskl的優(yōu)先級(jí)已經(jīng)反轉(zhuǎn)時(shí),則逆向依次檢測(cè)任務(wù)控制塊T [3],T[2]。則會(huì)檢測(cè)到任務(wù)Task2的被阻塞信號(hào)量SEM_YYY的所有者為T(mén)askl,且Task2的運(yùn)行優(yōu)先級(jí)與任務(wù)Taskl的運(yùn)行優(yōu)先級(jí)相等,則說(shuō)明:高優(yōu)先級(jí)任務(wù)Task2欲獲取信號(hào)量SEM_YYY,但SEM_YYY時(shí)已經(jīng)被任務(wù)Taskl獲取,操作系統(tǒng)將當(dāng)前Taskl的優(yōu)先級(jí)進(jìn)行了反轉(zhuǎn)。本發(fā)明中的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法流程如圖5所示,其包括:501.當(dāng)需要檢測(cè)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)時(shí),優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊根據(jù)用戶(hù)接口命令向操作系統(tǒng)注冊(cè)鉤子函數(shù),并通知任務(wù)切換記錄模塊;502.任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄,并接受優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊注冊(cè)鉤子函數(shù)的通知,在此后發(fā)生任務(wù)切換時(shí),調(diào)用鉤子函數(shù);503.鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)以及發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息。
在步驟502中,所述任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄包括:通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡,同時(shí)使用任務(wù)切換次數(shù)變量來(lái)記錄任務(wù)切換次數(shù);所述環(huán)形隊(duì)列中的元素對(duì)應(yīng)操作系統(tǒng)中任務(wù)切換時(shí)被調(diào)度任務(wù)的任務(wù)控制塊。具體的,所述通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡的方法是:在發(fā)生任務(wù)切換時(shí),依據(jù)任務(wù)切換變量記錄的當(dāng)前任務(wù)切換次數(shù)將當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊記錄在環(huán)形隊(duì)列中對(duì)應(yīng)的位置。在步驟503中,所述鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)的方法是:檢測(cè)當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊中運(yùn)行優(yōu)先級(jí)字段與配置優(yōu)先級(jí)字段值是否相同,如果不同,則判定該任務(wù)的優(yōu)先級(jí)發(fā)生了反轉(zhuǎn)。在步驟503中,所述發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息包括:被反轉(zhuǎn)任務(wù)獲取的信號(hào)量及其阻塞的高優(yōu)先級(jí)任務(wù),所述鉤子函數(shù)檢測(cè)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息的具體方法是:鉤子函數(shù)執(zhí)行時(shí)若檢測(cè)到當(dāng)前被調(diào)度任務(wù)的優(yōu)先級(jí)反轉(zhuǎn),則在任務(wù)切換軌跡中檢測(cè)此前被調(diào)度的任務(wù):若在任務(wù)切換軌跡中,某高優(yōu)先級(jí)任務(wù)被阻塞信號(hào)量的所有者為當(dāng)前被調(diào)度任務(wù),且該高優(yōu)先級(jí)任務(wù)的運(yùn)行優(yōu)先級(jí)等于當(dāng)前被調(diào)度任務(wù)的運(yùn)行優(yōu)先級(jí),則判定出該高優(yōu)先級(jí)任務(wù)被阻塞在某互斥信號(hào)量上,且該互斥信號(hào)量被當(dāng)前被調(diào)度任務(wù)獲取,操作系統(tǒng)將當(dāng)前被調(diào)度任務(wù)的優(yōu)先級(jí)進(jìn)行了反轉(zhuǎn)。
權(quán)利要求
1.多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng),其特征在于,包括: 任務(wù)切換記錄模塊,用于對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄,并接受優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊注冊(cè)鉤子函數(shù)的通知,在此后發(fā)生任務(wù)切換時(shí),調(diào)用鉤子函數(shù); 優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊,用于根據(jù)用戶(hù)接口命令向操作系統(tǒng)注冊(cè)或注銷(xiāo)鉤子函數(shù),在注冊(cè)鉤子函數(shù)時(shí)通知任務(wù)切換記錄模塊,所述鉤子函數(shù)在操作系統(tǒng)中任務(wù)發(fā)生切換時(shí)被調(diào)用,以檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)及發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息。
2.如權(quán)利要求1所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng),其特征在于,所述任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄包括:通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡,同時(shí)使用任務(wù)切換次數(shù)變量來(lái)記錄任務(wù)切換次數(shù);所述環(huán)形隊(duì)列中的每個(gè)元素對(duì)應(yīng)操作系統(tǒng)中任務(wù)切換時(shí)被調(diào)度任務(wù)的任務(wù)控制塊。
3.如權(quán)利要求2所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng),其特征在于,所述通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡的方法是:在發(fā)生任務(wù)切換時(shí),依據(jù)任務(wù)切換變量記錄的當(dāng)前任務(wù)切換次數(shù)將當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊記錄在環(huán)形隊(duì)列中對(duì)應(yīng)的位置。
4.如權(quán)利要求1-3任意一項(xiàng)所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng),其特征在于,所述鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)的方法是:檢測(cè)當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊中運(yùn)行優(yōu)先級(jí)字段與配置優(yōu)先級(jí)字段值是否相同,如果不同,則判定該任務(wù)的優(yōu)先級(jí)發(fā)生了反轉(zhuǎn)。
5.如權(quán)利要求1-3任意一項(xiàng)所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)系統(tǒng),其特征在于,所述發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息包括:被反轉(zhuǎn)任務(wù)獲取的信號(hào)量及其阻塞的高優(yōu)先級(jí)任務(wù)。
6.多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法,其特征在于,該方法包括以下步驟: a.當(dāng)需要檢測(cè)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)時(shí),優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊根據(jù)用戶(hù)接口命令向操作系統(tǒng)注冊(cè)鉤子函數(shù),并通知任務(wù)切換記錄模塊; b.任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄,并接受優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊注冊(cè)鉤子函數(shù)的通知,在此后發(fā)生任務(wù)切換時(shí),調(diào)用鉤子函數(shù); c.鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)以及發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息。
7.如權(quán)利要求6所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法,其特征在于,步驟b中,所述任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄包括:通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡,同時(shí)使用任務(wù)切換次數(shù)變量來(lái)記錄任務(wù)切換次數(shù);所述環(huán)形隊(duì)列中的元素對(duì)應(yīng)操作系統(tǒng)中任務(wù)切換時(shí)被調(diào)度任務(wù)的任務(wù)控制塊。
8.如權(quán)利要求7所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法,其特征在于,所述通過(guò)建立環(huán)形隊(duì)列記錄操作系統(tǒng)中的任務(wù)切換軌跡的方法是:在發(fā)生任務(wù)切換時(shí),依據(jù)任務(wù)切換變量記錄的當(dāng)前任務(wù)切換次數(shù)將當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊記錄在環(huán)形隊(duì)列中對(duì)應(yīng)的位置。
9.如權(quán)利要求6-8任意一項(xiàng)所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法,其特征在于,步驟c中 ,所述鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)的方法是:檢測(cè)當(dāng)前被調(diào)度任務(wù)的任務(wù)控制塊中運(yùn)行優(yōu)先級(jí)字段與配置優(yōu)先級(jí)字段值是否相同,如果不同,則判定該任務(wù)的優(yōu)先級(jí)發(fā)生了反轉(zhuǎn)。
10.如權(quán)利要求6-8任意一項(xiàng)所述的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法,其特征在于,所述發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息包括:被反轉(zhuǎn)任務(wù)獲取的信號(hào)量及其阻塞的高優(yōu)先級(jí)任務(wù),所述鉤子函數(shù)檢測(cè)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息的具體方法是: 鉤子函數(shù)執(zhí)行時(shí)若檢測(cè)到當(dāng) 前被調(diào)度任務(wù)的優(yōu)先級(jí)反轉(zhuǎn),則在任務(wù)切換軌跡中檢測(cè)此前被調(diào)度的任務(wù):若在任務(wù)切換軌跡中,某高優(yōu)先級(jí)任務(wù)被阻塞信號(hào)量的所有者為當(dāng)前被調(diào)度任務(wù),且該高優(yōu)先級(jí)任務(wù)的運(yùn)行優(yōu)先級(jí)等于當(dāng)前被調(diào)度任務(wù)的運(yùn)行優(yōu)先級(jí),則判定出該高優(yōu)先級(jí)任務(wù)被阻塞在某互斥信號(hào)量上,且該互斥信號(hào)量被當(dāng)前被調(diào)度任務(wù)獲取,操作系統(tǒng)將當(dāng)前被調(diào)度任務(wù)的優(yōu)先級(jí)進(jìn)行了反轉(zhuǎn)。
全文摘要
本發(fā)明涉及計(jì)算機(jī)多任務(wù)操作系統(tǒng)領(lǐng)域,其公開(kāi)了一種在基于任務(wù)優(yōu)先級(jí)調(diào)度的多任務(wù)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的檢測(cè)方法,快速定位任務(wù)優(yōu)先級(jí)反轉(zhuǎn)的相關(guān)信息;該方法包括a.當(dāng)需要檢測(cè)操作系統(tǒng)中任務(wù)優(yōu)先級(jí)反轉(zhuǎn)時(shí),優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊根據(jù)用戶(hù)接口命令向操作系統(tǒng)注冊(cè)鉤子函數(shù),并通知任務(wù)切換記錄模塊;b.任務(wù)切換記錄模塊對(duì)操作系統(tǒng)中任務(wù)切換信息進(jìn)行記錄,并接受優(yōu)先級(jí)反轉(zhuǎn)檢測(cè)管理模塊注冊(cè)鉤子函數(shù)的通知,在此后發(fā)生任務(wù)切換時(shí),調(diào)用鉤子函數(shù);c.鉤子函數(shù)檢測(cè)當(dāng)前被調(diào)度任務(wù)是否發(fā)生優(yōu)先級(jí)反轉(zhuǎn)以及發(fā)生優(yōu)先級(jí)反轉(zhuǎn)任務(wù)的相關(guān)信息。此外,本發(fā)明還公開(kāi)了相應(yīng)的檢測(cè)系統(tǒng),適用于計(jì)算機(jī)多任務(wù)操作系統(tǒng)。
文檔編號(hào)G06F9/48GK103106111SQ201310034828
公開(kāi)日2013年5月15日 申請(qǐng)日期2013年1月30日 優(yōu)先權(quán)日2013年1月30日
發(fā)明者何三波, 許鋒 申請(qǐng)人:邁普通信技術(shù)股份有限公司