專利名稱:任務(wù)間異步通信的處理方法及多任務(wù)異步通信處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)程序的多任務(wù)通信的實(shí)現(xiàn)方法,特別涉及嵌入式實(shí)時(shí)操作系統(tǒng)下多任務(wù)通信的實(shí)現(xiàn)方法。
背景技術(shù):
在計(jì)算機(jī)通信領(lǐng)域中一個(gè)復(fù)雜的多任務(wù)系統(tǒng)下,任務(wù)之間需要交互一些必要的信息,這涉及到任務(wù)間的通信技術(shù)。任務(wù)間信息交互通常采用異步的處理方式如內(nèi)存共享, socket (套接字)等方式。獨(dú)立采取任何一種方式都存在某些性能上的缺陷或者增加了實(shí)現(xiàn)的復(fù)雜性等。比如采用socket通信,需要任務(wù)之間建立socket連接并且定義通信的消息包,在某些系統(tǒng)上這個(gè)實(shí)現(xiàn)過于復(fù)雜。采用內(nèi)存共享的方式,存在對共享內(nèi)存的讀寫保護(hù)問題,會降低任務(wù)的實(shí)時(shí)性,影響性能,對于實(shí)時(shí)性要求很高的系統(tǒng)也不適合。任務(wù)間的異步信息交互,涉及到任務(wù)對公共資源的保護(hù)等操作,處理不當(dāng)往往造成任務(wù)間耦合性大,一個(gè)任務(wù)的異常狀態(tài)會導(dǎo)致其他關(guān)聯(lián)任務(wù)出現(xiàn)阻塞異常等問題;或者一個(gè)任務(wù)的運(yùn)行狀態(tài)會影響另外一個(gè)任務(wù)的運(yùn)行狀態(tài),比如一個(gè)任務(wù)在操作公共資源時(shí),導(dǎo)致另外一個(gè)任務(wù)因?yàn)榈貌坏焦操Y源的操作權(quán)限而長時(shí)間等待;或者出現(xiàn)由于多個(gè)任務(wù)對同一塊公共資源的訪問造成公共資源被破壞;或者出現(xiàn)由于對公共資源的不適當(dāng)保護(hù)造成死鎖等嚴(yán)重情況,給系統(tǒng)的穩(wěn)定運(yùn)行造成不良影響。所以,提供一套任務(wù)間異步通信的有效機(jī)制,降低任務(wù)間的耦合性、關(guān)聯(lián)性,是非常必要的。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是克服以上現(xiàn)有技術(shù)的不足,提供避免任務(wù)間相互影響的異步通信的處理方法及多任務(wù)異步通信處理系統(tǒng)。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是,任務(wù)間異步通信的處理方法, 包括以下步驟;a、通知任務(wù)的主體流程將信息存儲至被通知任務(wù)的外部信息結(jié)構(gòu)中;所述被通知任務(wù)的外部信息結(jié)構(gòu)僅用于存儲通知任務(wù)針對該被通知任務(wù)而發(fā)送的信息;b、被通知任務(wù)的主體流程讀取其外部信息結(jié)構(gòu),將外部信息結(jié)構(gòu)中的信息轉(zhuǎn)存至內(nèi)部信息結(jié)構(gòu)中;c、被通知任務(wù)的主體流程執(zhí)行、處理內(nèi)部信息結(jié)構(gòu)中的信息。被通知任務(wù)與通知任務(wù)的互操作僅局限在對被通知任務(wù)的外部信息結(jié)構(gòu)的讀寫上,不關(guān)聯(lián)各自任務(wù)的主體流程與內(nèi)部信息結(jié)構(gòu),減少了任務(wù)間的相互影響;由于不涉及類似內(nèi)存共享這樣多個(gè)被通知任務(wù)的信息存于一個(gè)物理內(nèi)存的情況,避免了多任務(wù)對公共資源不恰當(dāng)?shù)脑L問。主體流程在讀取外部信息模塊時(shí),不立即對信息進(jìn)行處理,而是先將信息轉(zhuǎn)存至內(nèi)部信息結(jié)構(gòu)中,減少對公共的外部信息結(jié)果的訪問占用時(shí)間。具體的,步驟a包括以下步驟
al、通知任務(wù)的主體流程獲取被通知任務(wù)的外部信息結(jié)構(gòu)的訪問權(quán)限;a2、通知任務(wù)的主體流程將信息打包,依次存儲至被通知任務(wù)的外部信息結(jié)構(gòu)的信息隊(duì)列中;a3、通知任務(wù)的主體流程采用被通知任務(wù)對應(yīng)的喚醒機(jī)制喚醒被通知任務(wù)的主體流程處理外部信息結(jié)構(gòu);a4、通知任務(wù)的主體流程釋放被通知任務(wù)的外部信息結(jié)構(gòu)的訪問權(quán)限。具體的,步驟b包括以下步驟bl、被通知任務(wù)的主體流程獲取被通知任務(wù)的外部信息結(jié)構(gòu)與內(nèi)部信息結(jié)構(gòu)的訪問權(quán)限;b2、被通知任務(wù)的主體流程從其外部信息結(jié)構(gòu)的信息隊(duì)列中依次取出信息并轉(zhuǎn)存至被通知任務(wù)的內(nèi)部信息結(jié)構(gòu)中;b3、被通知任務(wù)的主體流程釋放其外部信息結(jié)構(gòu)與內(nèi)部信息結(jié)構(gòu)的訪問權(quán)限。具體的,外部信息結(jié)構(gòu)屬于多任務(wù)操作的公共資源,需要采用有效的讀寫保護(hù)機(jī)制,可以采用系統(tǒng)提供的任何合適的保護(hù)機(jī)制,比如信號量,中斷鎖。外部信息結(jié)構(gòu)中的信息存儲方式,可以采用系統(tǒng)提供的任何存儲方式,比如先入先出隊(duì)列,動態(tài)鏈表。外部信息結(jié)構(gòu)中的任務(wù)喚醒機(jī)制,可以采用系統(tǒng)提供的任何合適的喚醒機(jī)制。外部信息結(jié)構(gòu)的任務(wù)喚醒機(jī)制,可以采用操作系統(tǒng)提供的任何任務(wù)喚醒機(jī)制,比如釋放通信二進(jìn)制信號量,管道通信。為實(shí)現(xiàn)上述方法,本發(fā)明還提供一種多任務(wù)異步通信處理系統(tǒng),包括若干任務(wù)模塊,所述任務(wù)模塊包括主體流程處理單元,所述主體流程處理單元中包括有內(nèi)部信息結(jié)構(gòu), 所述任務(wù)模塊包括還包括外部信息結(jié)構(gòu),所述外部信息結(jié)構(gòu)獨(dú)立于主體流程處理單元;所述外部信息結(jié)構(gòu),用于存儲其它任務(wù)模塊通知的信息;所述主體流程處理單元,用于當(dāng)其所在的任務(wù)模塊作為被通知任務(wù)模塊時(shí),讀取其外部信息結(jié)構(gòu),將外部信息結(jié)構(gòu)中的信息轉(zhuǎn)存至內(nèi)部信息結(jié)構(gòu)中,執(zhí)行、處理內(nèi)部信息結(jié)構(gòu)中的信息;當(dāng)其所在的任務(wù)模塊作為通知任務(wù)模塊時(shí),將信息存儲至被通知任務(wù)的外部信息結(jié)構(gòu)中;所述內(nèi)部信息結(jié)構(gòu),用于存儲從外部信息結(jié)構(gòu)中轉(zhuǎn)存的信息,供主體流程處理單元讀取。進(jìn)一步的,所述外部處理結(jié)構(gòu)包括信息隊(duì)列模塊、讀寫保護(hù)模塊、喚醒模塊;所述信息隊(duì)列模塊,用于存儲其它任務(wù)模塊通知的信息;所述讀寫保護(hù)模塊,用于當(dāng)信息隊(duì)列模塊被獲取訪問權(quán)限時(shí),對信息隊(duì)列進(jìn)行讀寫保護(hù);當(dāng)信息隊(duì)列模塊被釋放訪問權(quán)限時(shí),取消對信息隊(duì)列進(jìn)行讀寫保護(hù);所述喚醒模塊,用于喚醒主體流程處理單元處理信息隊(duì)列模塊中的信息。本發(fā)明的有益效果是,保證了任務(wù)間信息交互的及時(shí)準(zhǔn)確,降低任務(wù)模塊之間的耦合性,使得系統(tǒng)更加穩(wěn)定可靠。
圖1任務(wù)模塊B與任務(wù)模塊A的信息交互示意圖。
具體實(shí)施例方式下面結(jié)合具體實(shí)施方式
,詳細(xì)描述本發(fā)明的技術(shù)方案。將各任務(wù)單獨(dú)分離出一套通用的外部信息結(jié)構(gòu),任務(wù)間的信息交互主要通過對外部信息結(jié)構(gòu)的處理,不涉及任務(wù)的主體流程及任務(wù)的內(nèi)部信息結(jié)構(gòu)。多任務(wù)異步通信處理系統(tǒng)中,當(dāng)任務(wù)模塊A作為被通知任務(wù)模塊,任務(wù)模塊B作為通知任務(wù)模塊,任務(wù)模塊A與任務(wù)模塊B的結(jié)構(gòu)相同,包括主體流程處理單元、外部信息結(jié)構(gòu),所述主體流程處理單元中包括有內(nèi)部信息結(jié)構(gòu),外部信息結(jié)構(gòu)獨(dú)立于主體流程處理單元。主體流程處理單元需處理的信息存儲至內(nèi)部信息結(jié)構(gòu)中。外部信息結(jié)構(gòu)提供的外部交互信息。如圖1所示,作為被通知任務(wù)模塊的任務(wù)模塊A先通過其主體流程處理單元向作為通知任務(wù)模塊的任務(wù)模塊B 的外部信息結(jié)構(gòu)中存入信息(1);任務(wù)模塊B的主體流程處理單元將任務(wù)模塊B的外部信息結(jié)構(gòu)中的信息轉(zhuǎn)存在內(nèi)部信息結(jié)構(gòu)中O);任務(wù)模塊B的主體流程處理單元讀取內(nèi)部信息結(jié)構(gòu)中的信息(3),從而實(shí)現(xiàn)了兩個(gè)任務(wù)模塊之間的信息交互。任務(wù)模塊B向任務(wù)模塊A通知信息的具體實(shí)施步驟如下1.任務(wù)模塊A提供其外部信息結(jié)構(gòu)任務(wù)模塊A屬于被通知任務(wù)模塊。外部信息結(jié)構(gòu)包括三個(gè)組成部分存儲外部任務(wù)模塊通知信息的信息隊(duì)列模塊,比如先入先出隊(duì)列;對信息隊(duì)列模塊進(jìn)行訪問控制的讀寫保護(hù)模塊,讀寫保護(hù)模塊可采用互斥信號量機(jī)制;觸發(fā)任務(wù)模塊A的體處理外部信息結(jié)構(gòu)的喚醒模塊,喚醒模塊可采用管道機(jī)制。2.任務(wù)模塊B通知任務(wù)模塊A時(shí)只操作任務(wù)模塊A的外部信息結(jié)構(gòu)通知流程主要包括四個(gè)流程任務(wù)模塊B取到訪問任務(wù)模塊A的外部信息結(jié)構(gòu)的訪問權(quán)限;任務(wù)模塊B將信息打包存儲到任務(wù)模塊A的外部信息結(jié)構(gòu)中;任務(wù)模塊B采用任務(wù)模塊A的喚醒機(jī)制喚醒任務(wù)模塊A異步處理其外部信息結(jié)構(gòu);任務(wù)模塊B釋放任務(wù)模塊A的外部信息結(jié)構(gòu)的訪問權(quán)限。3.任務(wù)模塊A把其外部信息結(jié)構(gòu)中的信息轉(zhuǎn)換為內(nèi)部信息結(jié)構(gòu)中的信息任務(wù)模塊A被喚醒后,在任務(wù)模塊A的主體流程處理模塊需要將接收的外部信息轉(zhuǎn)換為內(nèi)部信息,主要包含五個(gè)流程任務(wù)模塊A取到其內(nèi)部信息結(jié)構(gòu)的訪問權(quán)限,比如取到內(nèi)部信息結(jié)構(gòu)的內(nèi)部信號量;任務(wù)模塊A取到其外部信息結(jié)構(gòu)的訪問權(quán)限,比如取到外部信息結(jié)構(gòu)的信號量;任務(wù)模塊A把存儲在信息隊(duì)列模塊中的信息節(jié)點(diǎn)依次取出,轉(zhuǎn)存在內(nèi)部信息隊(duì)列模塊中;任務(wù)模塊A釋放其外部信息結(jié)構(gòu)的訪問權(quán)限,比如釋放任務(wù)A的外部信號量;任務(wù)模塊A釋放其內(nèi)部信息結(jié)構(gòu)的訪問權(quán)限,比如釋放任務(wù)A的內(nèi)部信號量。4.任務(wù)模塊A的主體流程處理模塊異步處理轉(zhuǎn)換后的內(nèi)部信息任務(wù)模塊A的外部信息結(jié)構(gòu)中的信息轉(zhuǎn)存在內(nèi)部信息結(jié)構(gòu)后,任務(wù)模塊A的主體流程就可以異步處理內(nèi)部信息結(jié)構(gòu)中的信息。
整個(gè)通信流程中,任務(wù)模塊A和任務(wù)模塊B的主體流程不存在任何直接關(guān)聯(lián)關(guān)系。 任務(wù)模塊B有事件產(chǎn)生需要通知任務(wù)模塊A時(shí),只獲取到任務(wù)模塊A的外部信息結(jié)構(gòu)的操作權(quán)限,不操作任務(wù)模塊A的內(nèi)部信息結(jié)構(gòu),即不需要獲取到任務(wù)模塊A主流程處理單元中的內(nèi)部信息結(jié)構(gòu)的訪問權(quán)限。任務(wù)模塊A有一個(gè)外部事件轉(zhuǎn)換子流程,需要獲取到任務(wù)A主體流程處理單元的操作權(quán)限,比如獲取到內(nèi)部信號量,同時(shí)需要短暫的獲取到任務(wù)A外部信息結(jié)構(gòu)的操作權(quán)限,比如外部信號量,完成把外部信息結(jié)構(gòu)的內(nèi)容轉(zhuǎn)換為任務(wù)A的內(nèi)部信息結(jié)構(gòu)。內(nèi)部信息結(jié)構(gòu)屬于任務(wù)A主體流程處理單元的一部分。這里只是轉(zhuǎn)換,并不立即對轉(zhuǎn)換后的內(nèi)部信息結(jié)構(gòu)進(jìn)行處理。減少了對公共的外部信息結(jié)構(gòu)的訪問時(shí)間。任務(wù)A的主流程處理,不涉及操作任務(wù)A的外部信息結(jié)構(gòu),不需要取到任務(wù)A的外部信息結(jié)構(gòu)操作權(quán)限。任務(wù)A僅取得任務(wù)主體流程處理單元的操作權(quán)限,對轉(zhuǎn)換后的內(nèi)部信息結(jié)構(gòu)進(jìn)行處理,即異步處理任務(wù)B 通知的信息。
權(quán)利要求
1.任務(wù)間異步通信的處理方法,其特征在于,包括以下步驟;a、通知任務(wù)的主體流程將信息存儲至被通知任務(wù)的外部信息結(jié)構(gòu)中;所述外部信息結(jié)構(gòu)僅用于存儲通知任務(wù)針對該被通知任務(wù)而發(fā)送的信息;b、被通知任務(wù)的主體流程讀取其外部信息結(jié)構(gòu)的信息,轉(zhuǎn)存至其內(nèi)部信息結(jié)構(gòu)中;c、被通知任務(wù)的主體流程執(zhí)行、處理內(nèi)部信息結(jié)構(gòu)中的信息。
2.如權(quán)利要求1所述任務(wù)間異步通信的處理方法,其特征在于,步驟a包括 al、通知任務(wù)的主體流程獲取被通知任務(wù)的外部信息結(jié)構(gòu)的訪問權(quán)限;a2、通知任務(wù)的主體流程將信息打包,依次存儲至被通知任務(wù)的外部信息結(jié)構(gòu)的信息隊(duì)列中;a3、通知任務(wù)的主體流程采用被通知任務(wù)對應(yīng)的喚醒機(jī)制觸發(fā)被通知任務(wù)的主體流程處理外部信息結(jié)構(gòu);a4、通知任務(wù)的主體流程釋放被通知任務(wù)的外部信息結(jié)構(gòu)的訪問權(quán)限。
3.如權(quán)利要求2所述任務(wù)間異步通信的處理方法,其特征在于,所述喚醒機(jī)制通過釋放通信二進(jìn)制信號量或管道通信來實(shí)現(xiàn)。
4.如權(quán)利要求1所述任務(wù)間異步通信的處理方法,其特征在于,步驟b包括bl、被通知任務(wù)的主體流程獲取被通知任務(wù)的外部信息結(jié)構(gòu)與內(nèi)部信息結(jié)構(gòu)的訪問權(quán)限;b2、被通知任務(wù)的主體流程從其外部信息結(jié)構(gòu)的信息隊(duì)列中依次取出信息并轉(zhuǎn)存至被通知任務(wù)的內(nèi)部信息結(jié)構(gòu)中;b3、被通知任務(wù)的主體流程釋放其外部信息結(jié)構(gòu)與內(nèi)部信息結(jié)構(gòu)的訪問權(quán)限。
5.如權(quán)利要求2或4所述任務(wù)間異步通信的處理方法,其特征在于,對訪問權(quán)限的控制采用信號量機(jī)制或中斷鎖機(jī)制。
6.如權(quán)利要求2或4所述任務(wù)間異步通信的處理方法,其特征在于,外部信息結(jié)構(gòu)中的信息存儲采用先入先出隊(duì)列機(jī)制或動態(tài)鏈表機(jī)制。
7.多任務(wù)異步通信處理系統(tǒng),至少包括2個(gè)任務(wù)模塊,所述任務(wù)模塊包括主體流程處理單元,所述主體流程處理單元中包括有內(nèi)部信息結(jié)構(gòu),其特征在于,所述任務(wù)模塊還包括外部信息結(jié)構(gòu),所述外部信息結(jié)構(gòu)獨(dú)立于主體流程處理單元;所述外部信息結(jié)構(gòu),用于存儲其它任務(wù)模塊通知的信息;所述主體流程處理單元,當(dāng)其所在的任務(wù)模塊作為被通知任務(wù)模塊時(shí),用于讀取外部信息結(jié)構(gòu)并將外部信息結(jié)構(gòu)中的信息轉(zhuǎn)存至內(nèi)部信息結(jié)構(gòu)中,執(zhí)行、處理內(nèi)部信息結(jié)構(gòu)中的信息;當(dāng)其所在的任務(wù)模塊作為通知任務(wù)模塊時(shí),用于將信息存儲至被通知任務(wù)的外部信息結(jié)構(gòu)中;所述內(nèi)部信息結(jié)構(gòu),用于存儲從外部信息結(jié)構(gòu)中轉(zhuǎn)存的信息,供主體流程處理單元讀取。
8.如權(quán)利要求7所述多任務(wù)異步通信處理系統(tǒng),所述外部處理結(jié)構(gòu)包括信息隊(duì)列模塊、讀寫保護(hù)模塊、喚醒模塊;所述信息隊(duì)列模塊,用于存儲其它任務(wù)模塊通知的信息;所述讀寫保護(hù)模塊,用于當(dāng)信息隊(duì)列模塊被獲取訪問權(quán)限時(shí),對信息隊(duì)列進(jìn)行讀寫保護(hù);當(dāng)信息隊(duì)列模塊被釋放訪問權(quán)限時(shí),取消對信息隊(duì)列進(jìn)行讀寫保護(hù);所述喚醒模塊,用于喚醒主體流程處理單元處理信息隊(duì)列模塊中的信息。
全文摘要
本發(fā)明涉及嵌入式實(shí)時(shí)操作系統(tǒng)下多任務(wù)通信的實(shí)現(xiàn)方法。本發(fā)明提供一種避免任務(wù)間相互影響的異步通信的處理方法及多任務(wù)異步通信處理系統(tǒng)。通知任務(wù)的主體流程將信息存儲至被通知任務(wù)的外部信息結(jié)構(gòu)中;被通知任務(wù)的外部信息結(jié)構(gòu)僅用于存儲通知任務(wù)針對該被通知任務(wù)而發(fā)送的信息;被通知任務(wù)的主體流程讀取其外部信息結(jié)構(gòu),將外部信息結(jié)構(gòu)中的信息轉(zhuǎn)存至內(nèi)部信息結(jié)構(gòu)中;被通知任務(wù)的主體流程執(zhí)行、處理內(nèi)部信息結(jié)構(gòu)中的信息。保證了任務(wù)間信息交互的及時(shí)準(zhǔn)確,降低任務(wù)模塊之間的耦合性,使得系統(tǒng)更加穩(wěn)定可靠。
文檔編號G06F9/54GK102200929SQ201010133268
公開日2011年9月28日 申請日期2010年3月26日 優(yōu)先權(quán)日2010年3月26日
發(fā)明者徐海兵, 李永合, 胡祖松 申請人:邁普通信技術(shù)股份有限公司