專利名稱:光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及以太網(wǎng)無源光網(wǎng)絡(luò)(EP0N)領(lǐng)域,特別涉及光網(wǎng)絡(luò)接入終端技術(shù)領(lǐng)域, 具體是指一種光接入多用戶居住單元(Multiple Dwelling Unit, MDU)嵌入式設(shè)備多任務(wù) 通信系統(tǒng)及方法。
背景技術(shù):
隨著國內(nèi)的信息化建設(shè)的推進(jìn),用戶的帶寬需求越來越大,光進(jìn)銅退成了接入網(wǎng) 發(fā)展的必然趨勢(shì)。光接入設(shè)備已經(jīng)逐步替代傳統(tǒng)的電話接入設(shè)備成為寬帶接入的主流設(shè) 備。 目前中國電信已經(jīng)廣泛的使用了 EP0N技術(shù),由于中國城市的居住模式, FTTB (Fiber toThe Building)是電信最常用的布網(wǎng)模式,關(guān)于EP0N MDU組網(wǎng)方式,請(qǐng)參閱 圖l所示。 其中,MDU作為光信號(hào)的終結(jié)設(shè)備往往安置在樓道內(nèi),為多個(gè)用戶提供語音和數(shù)據(jù)
業(yè)務(wù)。因此MDU都具有多端口多業(yè)務(wù)的特點(diǎn),比如16個(gè)FE端口 (以太網(wǎng)業(yè)務(wù))和16個(gè)
P0TS端口 (V0IP業(yè)務(wù))。同時(shí)由于MDU設(shè)備同時(shí)為多個(gè)用戶提供服務(wù),因此需要比較高的
可靠性。這些特點(diǎn)使得MDU設(shè)備在軟件設(shè)計(jì)上存在比較大的復(fù)雜性,主要表現(xiàn)在 (1)設(shè)備往往存在多個(gè)CPU ; (2)功能復(fù)雜,需要較多的任務(wù)分別實(shí)現(xiàn); (3)各任務(wù)之間的交互較多。 另外,由于MDU設(shè)備往往使用LINUX作為操作系統(tǒng),該系統(tǒng)提供了多任務(wù)的運(yùn)行模
式(包括進(jìn)程和線程),以及多種任務(wù)通信模式。如何合理的規(guī)劃和使用這些通信方式,對(duì)
整個(gè)MDU的軟件架構(gòu)以及軟件穩(wěn)定性和后期維護(hù)性都具有比較重要的意義。 同時(shí),MDU設(shè)備具有多功能的特點(diǎn),軟件實(shí)現(xiàn)帶有較大的邏輯復(fù)雜性。因此獨(dú)立各
功能模塊對(duì)軟件的開發(fā)和維護(hù)都非常的重要。 在軟件設(shè)計(jì)中,一個(gè)功能往往由一個(gè)任務(wù)來實(shí)現(xiàn),為了讓個(gè)功能正常運(yùn)行,這就必
須有一套完整穩(wěn)定的任務(wù)間通信機(jī)制。而在現(xiàn)有技術(shù)中,就以LINUX操作系統(tǒng)為例,目前系
統(tǒng)提供的任務(wù)之間的通信機(jī)制主要有以下幾種 參共享內(nèi)存 參管道 參消息 參套接字(SOCKET) 以上幾種方式都可以實(shí)現(xiàn)任務(wù)之間的通信,但也都存在明顯的不足 (1)缺少統(tǒng)一的管理機(jī)制,多任務(wù)的情況下往往造成通信混亂,而且使得功能模塊
過多的依賴與操作系統(tǒng); (2)由于MDU設(shè)備不同任務(wù)之間的信息交互較多,使用這些方式無法保證通信的 高效率。
發(fā)明內(nèi)容
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種能夠?qū)崿F(xiàn)穩(wěn)定的跨平臺(tái) 通信機(jī)制、信息交互簡(jiǎn)單高效、工作性能穩(wěn)定可靠、適用范圍較為廣泛的光接入多用戶居住 單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)及方法。 為了實(shí)現(xiàn)上述的目的,本發(fā)明的光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系 統(tǒng)及方法如下 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),所述的嵌入式設(shè)備中 具有至少二塊板卡,其主要特點(diǎn)是,所述的每塊板卡上均具有一個(gè)消息守候進(jìn)程模塊和至 少一個(gè)功能進(jìn)程模塊,所述的各個(gè)板卡上的消息守候進(jìn)程模塊之間均建立有板間消息通信 鏈路,且每個(gè)板卡上的消息守候進(jìn)程模塊與所在的相應(yīng)板卡上的各個(gè)消息進(jìn)程模塊之間均 建立有進(jìn)程間消息通信鏈路,所述的每個(gè)功能進(jìn)程模塊中均具有一個(gè)消息線程單元、消息 模塊和至少一個(gè)功能線程單元,所述的消息線程單元通過消息模塊與所述的各個(gè)功能線程 單元相連接。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息模塊包括
消息槽,為進(jìn)程內(nèi)存儲(chǔ)消息內(nèi)容的內(nèi)存單元,且進(jìn)程內(nèi)所有線程共享該消息槽;
消息槽表,存儲(chǔ)所述的各個(gè)消息槽所對(duì)應(yīng)的消息槽號(hào),統(tǒng)一管理進(jìn)程內(nèi)所有的消 息槽;消息管道表,為緩存容納消息實(shí)體所存儲(chǔ)的消息槽信息的列表; 消息隊(duì)列表,為進(jìn)程內(nèi)所有消息隊(duì)列的集合,且每個(gè)消息隊(duì)列均與一個(gè)消息管道
表相對(duì)應(yīng)。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息槽表為堆棧, 且通過對(duì)消息槽號(hào)的壓棧操作釋放該消息槽號(hào)所對(duì)應(yīng)的消息槽,通過對(duì)消息槽號(hào)的出棧操 作來占用該消息槽號(hào)所對(duì)應(yīng)的消息槽。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息管道表為循
環(huán)隊(duì)列,且該循環(huán)隊(duì)列的每個(gè)節(jié)點(diǎn)中均存儲(chǔ)有消息槽號(hào),記錄消息的實(shí)際存儲(chǔ)位置。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息隊(duì)列表中每
個(gè)節(jié)點(diǎn)中存儲(chǔ)有消息隊(duì)列類型信息和消息隊(duì)列句柄信息。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息隊(duì)列類型包 括板間消息隊(duì)列ICC、進(jìn)程間消息隊(duì)列IPC和線程間消息隊(duì)列ITC。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息隊(duì)列句柄信 息為指示消息隊(duì)列的關(guān)鍵字。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息隊(duì)列表的長(zhǎng) 度不小于進(jìn)程內(nèi)最大線程數(shù)的兩倍,且該消息隊(duì)列表的前半部分對(duì)應(yīng)異步消息隊(duì)列,后半 部分對(duì)應(yīng)同步消息隊(duì)列。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的板間消息通信鏈 路為套接字socket通信鏈路。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的進(jìn)程間消息通信 鏈路為進(jìn)程間通信IPC消息通道。
該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的進(jìn)程間通信IPC 消息通道可以為進(jìn)程間共享內(nèi)存或者進(jìn)程間有名文件管道。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的各個(gè)功能線程單 元均具有全局唯一標(biāo)識(shí)。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的全局唯一標(biāo)識(shí)中 包括板卡標(biāo)識(shí)CID、進(jìn)程標(biāo)識(shí)PID和線程標(biāo)識(shí)TID。 該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的板卡標(biāo)識(shí)CID的 位長(zhǎng)為4進(jìn)程標(biāo)識(shí)PID的位長(zhǎng)為12位,線程標(biāo)識(shí)TID的位長(zhǎng)為16位。 該基于上述的系統(tǒng)實(shí)現(xiàn)光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信方法, 其主要特點(diǎn)是,所述的方法包括消息發(fā)送處理操作和消息接收處理操作,所述的消息發(fā)送 處理操作,包括以下步驟 (1)發(fā)送消息的第一功能線程單元通過所述的消息槽表申請(qǐng)未使用的消息槽;
(2)該第一功能線程單元將需要發(fā)送的消息存儲(chǔ)于所申請(qǐng)得到的消息槽中;
(3)系統(tǒng)判斷第一功能線程單元的板卡標(biāo)識(shí)CID與接收消息的第二功能線程單元 的板卡標(biāo)識(shí)CID是否一致; (4)如果否,則通過該第一功能線程單元所在板卡上的第一消息守候進(jìn)程模塊和
板間消息通信鏈路將該消息發(fā)送至第二功能線程單元所在板卡上的第二消息守候進(jìn)程模
塊;且所述的第二消息守候進(jìn)程模塊將該消息通過所述的進(jìn)程間消息通信鏈路發(fā)送至該第
二功能線程單元所在進(jìn)程中的第二消息線程單元中;并執(zhí)行以下步驟(8); (5)如果是,則系統(tǒng)判斷第一功能線程單元的進(jìn)程標(biāo)識(shí)PID與所述的第二功能線
程單元的進(jìn)程標(biāo)識(shí)PID是否一致; (6)如果一致,則第一功能線程單元通過所述的消息線程單元根據(jù)第二功能線程 單元的線程標(biāo)識(shí)TID找到第二功能線程單元所對(duì)應(yīng)的消息隊(duì)列,并將該消息存入與該消息 隊(duì)列所對(duì)應(yīng)的消息管道表中,完成消息發(fā)送處理操作; (7)如果不一致,則通過該第一功能線程單元所進(jìn)程中的第一消息線程單元和進(jìn) 程間消息通信鏈路發(fā)送至該第二功能線程單元所在進(jìn)程中的第二消息線程單元中;并執(zhí)行 以下步驟(8) (8)所述的第二消息線程單元根據(jù)第二功能線程單元的線程標(biāo)識(shí)TID找到第二功 能線程單元所對(duì)應(yīng)的消息隊(duì)列,并將該消息存入與該消息隊(duì)列所對(duì)應(yīng)的消息管道表中,完 成消息發(fā)送處理操作; 所述的消息接收處理操作,包括以下步驟 (11)所述的第二功能線程單元持續(xù)檢測(cè)所述的消息管道表中是否有消息;
(12)如果否,則重復(fù)上述步驟(11);
(13)如果是,則取出該消息中的消息槽號(hào); (14)所述的第二功能線程單元根據(jù)所述的消息槽號(hào)從所述的消息槽中讀取對(duì)應(yīng) 的消息內(nèi)容; (15)所述的第二功能線程單元通過所述的消息槽表釋放所述的消息槽號(hào)所對(duì)應(yīng) 的消息槽,完成消息接收處理操作。 采用了該發(fā)明的光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)及方法,由于其中綜合考慮了 MDU設(shè)備的功能要求,采用了包含CPU號(hào)、進(jìn)程號(hào)以及線程號(hào)的全局任務(wù)號(hào)(APPLID),并給出了利用APPL ID的相應(yīng)跨平臺(tái)的任務(wù)通信機(jī)制,從而能夠?yàn)楦鱾€(gè)功能模塊提供統(tǒng)一的消息收發(fā)接口,實(shí)現(xiàn)了任務(wù)通信與模塊功能實(shí)現(xiàn)的分離,同時(shí)也充分考慮任務(wù)間通信的效率,在實(shí)現(xiàn)功能的基礎(chǔ)上(包括同步消息和異步消息)盡可能的減少系統(tǒng)負(fù)荷,提高了系統(tǒng)性能,不僅信息交互簡(jiǎn)單高效,而且工作性能穩(wěn)定可靠,適用范圍較為廣泛,為以太網(wǎng)無源光網(wǎng)絡(luò)接入技術(shù)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
圖1為現(xiàn)有技術(shù)中的EPON系統(tǒng)的MDU組網(wǎng)方式示意圖。 圖2為本發(fā)明的光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)的工作原理示意圖。 圖3為本發(fā)明的光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)中的消息池邏輯結(jié)構(gòu)示意圖。 圖4為本發(fā)明的光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)的全局唯一標(biāo)識(shí)的組成示意圖。 圖5為本發(fā)明的實(shí)現(xiàn)光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信方法的消息發(fā)送處理操作的流程圖。 圖6為本發(fā)明的實(shí)現(xiàn)光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信方法的消息接收處理操作的流程圖
具體實(shí)施例方式
為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說明。 請(qǐng)參閱圖2至圖4所示,該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系
統(tǒng),所述的嵌入式設(shè)備中具有至少二塊板卡,其中,所述的每塊板卡上均具有一個(gè)消息守候
進(jìn)程模塊和至少一個(gè)功能進(jìn)程模塊,所述的各個(gè)板卡上的消息守候進(jìn)程模塊之間均建立有
板間消息通信鏈路,且每個(gè)板卡上的消息守候進(jìn)程模塊與所在的相應(yīng)板卡上的各個(gè)消息進(jìn)
程模塊之間均建立有進(jìn)程間消息通信鏈路,所述的每個(gè)功能進(jìn)程模塊中均具有一個(gè)消息線
程單元、消息模塊和至少一個(gè)功能線程單元,所述的消息線程單元通過消息模塊與所述的
各個(gè)功能線程單元相連接。 其中,該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息模塊包括 參消息槽,為進(jìn)程內(nèi)存儲(chǔ)消息內(nèi)容的內(nèi)存單元,且進(jìn)程內(nèi)所有線程共享該消息槽; 參消息槽表,存儲(chǔ)所述的各個(gè)消息槽所對(duì)應(yīng)的消息槽號(hào),統(tǒng)一管理進(jìn)程內(nèi)所有的
消息槽;所述的消息槽表為堆棧,且通過對(duì)消息槽號(hào)的壓棧操作釋放該消息槽號(hào)所對(duì)應(yīng)的
消息槽,通過對(duì)消息槽號(hào)的出棧操作來占用該消息槽號(hào)所對(duì)應(yīng)的消息槽; 參消息管道表,為緩存容納消息實(shí)體所存儲(chǔ)的消息槽信息的列表;所述的消息管
道表為循環(huán)隊(duì)列,且該循環(huán)隊(duì)列的每個(gè)節(jié)點(diǎn)中均存儲(chǔ)有消息槽號(hào),記錄消息的實(shí)際存儲(chǔ)位
置;
參消息隊(duì)列表,為進(jìn)程內(nèi)所有消息隊(duì)列的集合,且每個(gè)消息隊(duì)列均與一個(gè)消息管
道表 相對(duì)應(yīng);所述的消息隊(duì)列表中每個(gè)節(jié)點(diǎn)中存儲(chǔ)有消息隊(duì)列類型信息和消息隊(duì)列句柄信息,所述的消息隊(duì)列類型包括板間消息隊(duì)列ICC、進(jìn)程間消息隊(duì)列IPC和線程間消息隊(duì)列ITC,所述的多任務(wù)通信系統(tǒng)中的消息隊(duì)列句柄信息為指示消息隊(duì)列的關(guān)鍵字;同時(shí),該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的消息隊(duì)列表的長(zhǎng)度不小于進(jìn)程內(nèi)最大線程數(shù)的兩倍,且該消息隊(duì)列表的前半部分對(duì)應(yīng)異步消息隊(duì)列,后半部分對(duì)應(yīng)同步消息隊(duì)列。 同時(shí),該光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng)中的板間消息通信鏈路為套接字socket通信鏈路;所述的進(jìn)程間消息通信鏈路為進(jìn)程間通信IPC消息通道;所述的進(jìn)程間通信IPC消息通道可以為進(jìn)程間共享內(nèi)存或者進(jìn)程間有名文件管道;所述的各個(gè)功能線程單元均具有全局唯一標(biāo)識(shí);所述的全局唯一標(biāo)識(shí)中包括板卡標(biāo)識(shí)CID、進(jìn)程標(biāo)識(shí)PID和線程標(biāo)識(shí)TID ;所述的板卡標(biāo)識(shí)CID的位長(zhǎng)為4,進(jìn)程標(biāo)識(shí)PID的位長(zhǎng)為12位,線程標(biāo)識(shí)TID的位長(zhǎng)為16位。 再請(qǐng)參閱圖5和圖6所示,該基于上述的系統(tǒng)實(shí)現(xiàn)光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信方法,其中包括消息發(fā)送處理操作和消息接收處理操作,所述的消息發(fā)送處理操作,包括以下步驟 (1)發(fā)送消息的第一功能線程單元通過所述的消息槽表申請(qǐng)未使用的消息槽;
(2)該第一功能線程單元將需要發(fā)送的消息存儲(chǔ)于所申請(qǐng)得到的消息槽中;
(3)系統(tǒng)判斷第一功能線程單元的板卡標(biāo)識(shí)CID與接收消息的第二功能線程單元的板卡標(biāo)識(shí)CID是否一致; (4)如果否,則通過該第一功能線程單元所在板卡上的第一消息守候進(jìn)程模塊和
板間消息通信鏈路將該消息發(fā)送至第二功能線程單元所在板卡上的第二消息守候進(jìn)程模
塊;且所述的第二消息守候進(jìn)程模塊將該消息通過所述的進(jìn)程間消息通信鏈路發(fā)送至該第
二功能線程單元所在進(jìn)程中的第二消息線程單元中;并執(zhí)行以下步驟(8); (5)如果是,則系統(tǒng)判斷第一功能線程單元的進(jìn)程標(biāo)識(shí)PID與所述的第二功能線
程單元的進(jìn)程標(biāo)識(shí)PID是否一致; (6)如果一致,則第一功能線程單元通過所述的消息線程單元根據(jù)第二功能線程單元的線程標(biāo)識(shí)TID找到第二功能線程單元所對(duì)應(yīng)的消息隊(duì)列,并將該消息存入與該消息隊(duì)列所對(duì)應(yīng)的消息管道表中,完成消息發(fā)送處理操作; (7)如果不一致,則通過該第一功能線程單元所進(jìn)程中的第一消息線程單元和進(jìn)程間消息通信鏈路發(fā)送至該第二功能線程單元所在進(jìn)程中的第二消息線程單元中;并執(zhí)行以下步驟(8) (8)所述的第二消息線程單元根據(jù)第二功能線程單元的線程標(biāo)識(shí)TID找到第二功能線程單元所對(duì)應(yīng)的消息隊(duì)列,并將該消息存入與該消息隊(duì)列所對(duì)應(yīng)的消息管道表中,完成消息發(fā)送處理操作; 所述的消息接收處理操作,包括以下步驟 (11)所述的第二功能線程單元持續(xù)檢測(cè)所述的消息管道表中是否有消息;
(12)如果否,則重復(fù)上述步驟(11);
(13)如果是,則取出該消息中的消息槽號(hào); (14)所述的第二功能線程單元根據(jù)所述的消息槽號(hào)從所述的消息槽中讀取對(duì)應(yīng)的消息內(nèi)容; (15)所述的第二功能線程單元通過所述的消息槽表釋放所述的消息槽號(hào)所對(duì)應(yīng)的消息槽,完成消息接收處理操作。 在實(shí)際使用當(dāng)中,本發(fā)明的前提是在MDU設(shè)備中,主要的功能模塊是基于線程而不是基于進(jìn)程的。 對(duì)于常用的操作系統(tǒng)(LINUX和VXWORKS),與本發(fā)明的前提是相符合的。比如MDU設(shè)備主要功能包括數(shù)據(jù)業(yè)務(wù),VOIP業(yè)務(wù)以及系統(tǒng)監(jiān)測(cè)(watchdog)功能。這三種功能都可以對(duì)應(yīng)三個(gè)不同的進(jìn)程(對(duì)于VXWORKS即為各板卡上的多線程),而內(nèi)部的功能模塊均對(duì)應(yīng)不同的線程。任務(wù)通信大部分發(fā)生在進(jìn)程內(nèi)部。
全局唯一標(biāo)識(shí)(APPLID)的構(gòu)成 在這個(gè)前提下,系統(tǒng)中的所有任務(wù)(線程)都有唯一的全局標(biāo)識(shí),稱為APPL ID。APPLID為一個(gè)四字節(jié)無符號(hào)數(shù)。由CID (Card ID) 、PID (Process ID)、以及TID (Thread ID)組成,具體請(qǐng)參閱圖4所示,其中
參CID為4位,取值為0 15
參PID為12位,取值為0 4095
參TID為16為,取值為0 65535 考慮到MDU設(shè)備為用戶側(cè)的接入設(shè)備,以上的取值可以滿足設(shè)備的使用需求。 對(duì)于通信機(jī)制的功能,多任務(wù)通信機(jī)制主要有以下兩大功能 參實(shí)現(xiàn)不同板卡(CPU)間,不同進(jìn)程以及不同線程間的消息通訊; 參實(shí)現(xiàn)同步消息(任務(wù)在發(fā)送同步消息后阻塞,收到消息回應(yīng)后再度運(yùn)行),異步
消息(任務(wù)發(fā)送消息后不等待回應(yīng),繼續(xù)運(yùn)行)。
實(shí)現(xiàn)機(jī)制如下 線程為收發(fā)消息的主體。在每個(gè)板卡上都有唯一進(jìn)程(任務(wù)PID為O)負(fù)責(zé)收取屬于本板卡的消息,收到消息后再根據(jù)PID分發(fā)給本板卡上的不同進(jìn)程;每個(gè)進(jìn)程內(nèi)也都有唯一線程(任務(wù)TID為O)來負(fù)責(zé)收取屬于該進(jìn)程的消息,收到消息后再把消息根據(jù)(TID)分發(fā)給不同線程。這種機(jī)制的設(shè)計(jì)主要基于系統(tǒng)多線程考慮的,前提假設(shè)是主要功能由少數(shù)進(jìn)程內(nèi)的眾多線程實(shí)現(xiàn),消息主要在同一進(jìn)程里的不同線程間傳遞。該機(jī)制的具體結(jié)構(gòu)請(qǐng)參閱圖2所示。 對(duì)于LINUX,板間消息用socket實(shí)現(xiàn),進(jìn)程間用LINUX IPC消息,線程間用pthread線程信號(hào)量和條件變量實(shí)現(xiàn)。 消息模塊主要由三部分組成消息隊(duì)列表(Queue Table),消息管道表(PipeTable)和消息槽(Message Slot)。三者關(guān)系請(qǐng)參閱圖3所示。 (1)消息隊(duì)列表(Queue Table)是一個(gè)特定進(jìn)程中所有任務(wù)消息隊(duì)列的集合,其
長(zhǎng)度是最大任務(wù)數(shù)的兩倍,前半部為異步消息隊(duì)列,后半部為同步消息隊(duì)列,每一個(gè)任務(wù)都
會(huì)配置同步和異步各一個(gè)消息隊(duì)列。每一個(gè)消息隊(duì)列都會(huì)指向一個(gè)消息管道表。 消息隊(duì)列表的每個(gè)節(jié)點(diǎn)主要消息隊(duì)列的類型和使用的句柄。消息隊(duì)列類型有三種
ICC(板間消息隊(duì)列),IPC(進(jìn)程間消息隊(duì)列),ITC(線程間消息隊(duì)列)。句柄指示消息隊(duì)列的關(guān)鍵字。對(duì)ICC,句柄指示板卡IP地址和端口號(hào),對(duì)于IPC,句柄為msg key (LINUX系統(tǒng)消息隊(duì)列),對(duì)于ITC指示Pipe Table的索引。為了處理簡(jiǎn)單,消息隊(duì)列的索引(數(shù)組下標(biāo))對(duì)應(yīng)任務(wù)的TID, Pipe Table也使用TID為索引。消息隊(duì)列的長(zhǎng)度是最大任務(wù)數(shù)的兩倍,前半部為異步消息隊(duì)列,后半部為同步消息隊(duì)列。后同步消息隊(duì)列的索引于異步消息索引相差最大任務(wù)數(shù)。 (2)消息管道表(Pipe Table)是每一個(gè)消息隊(duì)列容納消息實(shí)體的列表。在多任務(wù)系統(tǒng)下,并不是每一個(gè)任務(wù)收到消息就可以立刻處理,消息管道表可以對(duì)來不及處理的消息進(jìn)行緩存,其深度也決定了該任務(wù)緩存消息的數(shù)量。 消息管道表由循環(huán)的隊(duì)列組成,用數(shù)組實(shí)現(xiàn)。read指針表示隊(duì)首,write指針表示對(duì)尾。每個(gè)節(jié)點(diǎn)都含有消息槽號(hào),記錄消息的實(shí)際存儲(chǔ)位置。消息槽的獲取和釋放都通過消息槽表(empty slot list)實(shí)現(xiàn)。 (3)消息槽(Message Slot)是存儲(chǔ)消息內(nèi)容的單元。進(jìn)程內(nèi)所有任務(wù)共享的消息槽。在收發(fā)消息時(shí)傳遞消息槽號(hào)。這樣可以避免過多的消息拷貝,提高系統(tǒng)效率。
消息槽表由棧實(shí)現(xiàn),釋放槽號(hào)通過壓棧,獲取消息槽通過出棧實(shí)現(xiàn)。Tail指針指示消息槽的棧頂。消息槽表統(tǒng)一管理進(jìn)程可用的所有消息內(nèi)存。消息內(nèi)存在系統(tǒng)初始化時(shí)被創(chuàng)建,被根據(jù)消息的最大長(zhǎng)度和最多數(shù)量被分隔開。消息處理模塊屏蔽消息槽細(xì)節(jié)。這樣設(shè)計(jì)是避免過多的動(dòng)態(tài)內(nèi)存分配。 關(guān)于消息通訊流程,消息通訊主要分為消息發(fā)送和消息接收兩個(gè)部分,圖5和圖6分別表示了任務(wù)A直接通信的任務(wù)B發(fā)送和接收流程。 采用了上述的光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)及方法,由于其中綜合考慮了MDU設(shè)備的功能要求,采用了包含CPU號(hào)、進(jìn)程號(hào)以及線程號(hào)的全局任務(wù)號(hào)(APPLID),并給出了利用APPL ID的相應(yīng)跨平臺(tái)的任務(wù)通信機(jī)制,從而能夠?yàn)楦鱾€(gè)功能模塊提供統(tǒng)一的消息收發(fā)接口,實(shí)現(xiàn)了任務(wù)通信與模塊功能實(shí)現(xiàn)的分離,同時(shí)也充分考慮任務(wù)間通信的效率,在實(shí)現(xiàn)功能的基礎(chǔ)上(包括同步消息和異步消息)盡可能的減少系統(tǒng)負(fù)荷,提高了系統(tǒng)性能,不僅信息交互簡(jiǎn)單高效,而且工作性能穩(wěn)定可靠,適用范圍較為廣泛,為以太網(wǎng)無源光網(wǎng)絡(luò)接入技術(shù)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。 在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限制性的。
權(quán)利要求
一種光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),所述的嵌入式設(shè)備中具有至少二塊板卡,其特征在于,所述的每塊板卡上均具有一個(gè)消息守候進(jìn)程模塊和至少一個(gè)功能進(jìn)程模塊,所述的各個(gè)板卡上的消息守候進(jìn)程模塊之間均建立有板間消息通信鏈路,且每個(gè)板卡上的消息守候進(jìn)程模塊與所在的相應(yīng)板卡上的各個(gè)消息進(jìn)程模塊之間均建立有進(jìn)程間消息通信鏈路,所述的每個(gè)功能進(jìn)程模塊中均具有一個(gè)消息線程單元、消息模塊和至少一個(gè)功能線程單元,所述的消息線程單元通過消息模塊與所述的各個(gè)功能線程單元相連接。
2. 根據(jù)權(quán)利要求1所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),其 特征在于,所述的消息模塊包括消息槽,為進(jìn)程內(nèi)存儲(chǔ)消息內(nèi)容的內(nèi)存單元,且進(jìn)程內(nèi)所有線程共享該消息槽; 消息槽表,存儲(chǔ)所述的各個(gè)消息槽所對(duì)應(yīng)的消息槽號(hào),統(tǒng)一管理進(jìn)程內(nèi)所有的消息槽;消息管道表,為緩存容納消息實(shí)體所存儲(chǔ)的消息槽信息的列表;消息隊(duì)列表,為進(jìn)程內(nèi)所有消息隊(duì)列的集合,且每個(gè)消息隊(duì)列均與一個(gè)消息管道表相 對(duì)應(yīng)。
3. 根據(jù)權(quán)利要求2所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),其 特征在于,所述的消息槽表為堆棧,且通過對(duì)消息槽號(hào)的壓棧操作釋放該消息槽號(hào)所對(duì)應(yīng) 的消息槽,通過對(duì)消息槽號(hào)的出棧操作來占用該消息槽號(hào)所對(duì)應(yīng)的消息槽。
4. 根據(jù)權(quán)利要求2所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),其 特征在于,所述的消息管道表為循環(huán)隊(duì)列,且該循環(huán)隊(duì)列的每個(gè)節(jié)點(diǎn)中均存儲(chǔ)有消息槽號(hào), 記錄消息的實(shí)際存儲(chǔ)位置。
5. 根據(jù)權(quán)利要求2所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng), 其特征在于,所述的消息隊(duì)列表中每個(gè)節(jié)點(diǎn)中存儲(chǔ)有消息隊(duì)列類型信息和消息隊(duì)列句柄信 息。
6. 根據(jù)權(quán)利要求5所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),其 特征在于,所述的消息隊(duì)列類型包括板間消息隊(duì)列ICC、進(jìn)程間消息隊(duì)列IPC和線程間消息 隊(duì)列ITC。
7. 根據(jù)權(quán)利要求5所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),其 特征在于,所述的消息隊(duì)列句柄信息為指示消息隊(duì)列的關(guān)鍵字。
8. 根據(jù)權(quán)利要求2所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),其 特征在于,所述的消息隊(duì)列表的長(zhǎng)度不小于進(jìn)程內(nèi)最大線程數(shù)的兩倍,且該消息隊(duì)列表的 前半部分對(duì)應(yīng)異步消息隊(duì)列,后半部分對(duì)應(yīng)同步消息隊(duì)列。
9. 根據(jù)權(quán)利要求1至8中任一項(xiàng)所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù) 通信系統(tǒng),其特征在于,所述的板間消息通信鏈路為套接字socket通信鏈路。
10. 根據(jù)權(quán)利要求1至8中任一項(xiàng)所述的光接入多用戶居住單元嵌入式設(shè)備中的多任 務(wù)通信系統(tǒng),其特征在于,所述的進(jìn)程間消息通信鏈路為進(jìn)程間通信IPC消息通道。
11. 根據(jù)權(quán)利要求10所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng), 其特征在于,所述的進(jìn)程間通信IPC消息通道為進(jìn)程間共享內(nèi)存或者進(jìn)程間有名文件管 道。
12. 根據(jù)權(quán)利要求1至8中任一項(xiàng)所述的光接入多用戶居住單元嵌入式設(shè)備中的多任 務(wù)通信系統(tǒng),其特征在于,所述的各個(gè)功能線程單元均具有全局唯一標(biāo)識(shí)。
13. 根據(jù)權(quán)利要求12所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng), 其特征在于,所述的全局唯一標(biāo)識(shí)中包括板卡標(biāo)識(shí)CID、進(jìn)程標(biāo)識(shí)PID和線程標(biāo)識(shí)TID。
14. 根據(jù)權(quán)利要求13所述的光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng), 其特征在于,所述的板卡標(biāo)識(shí)CID的位長(zhǎng)為4,進(jìn)程標(biāo)識(shí)PID的位長(zhǎng)為12位,線程標(biāo)識(shí)TID 的位長(zhǎng)為16位。
15. —種基于權(quán)利要求1所述的系統(tǒng)實(shí)現(xiàn)光接入多用戶居住單元嵌入式設(shè)備中的多任 務(wù)通信方法,所述的系統(tǒng)中的消息模塊包括消息槽,為進(jìn)程內(nèi)存儲(chǔ)消息內(nèi)容的內(nèi)存單元,且進(jìn)程內(nèi)所有線程共享該消息槽; 消息槽表,存儲(chǔ)所述的各個(gè)消息槽所對(duì)應(yīng)的消息槽號(hào),統(tǒng)一管理進(jìn)程內(nèi)所有的消息槽;消息管道表,為緩存容納消息實(shí)體所存儲(chǔ)的消息槽信息的列表;消息隊(duì)列表,為進(jìn)程內(nèi)所有消息隊(duì)列的集合,且每個(gè)消息隊(duì)列均與一個(gè)消息管道表相 對(duì)應(yīng);所述的各個(gè)功能線程單元均具有全局唯一標(biāo)識(shí),所述的全局唯一標(biāo)識(shí)中包括板卡標(biāo)識(shí) CID、進(jìn)程標(biāo)識(shí)PID和線程標(biāo)識(shí)TID ;其特征在于,所述的方法包括消息發(fā)送處理操作和消息接收處理操作,所述的消息發(fā)送處理操作,包括以下步驟(1) 發(fā)送消息的第一功能線程單元通過所述的消息槽表申請(qǐng)未使用的消息槽;(2) 該第一功能線程單元將需要發(fā)送的消息存儲(chǔ)于所申請(qǐng)得到的消息槽中;(3) 系統(tǒng)判斷第一功能線程單元的板卡標(biāo)識(shí)CID與接收消息的第二功能線程單元的板卡標(biāo)識(shí)CID是否一致;(4) 如果否,則通過該第一功能線程單元所在板卡上的第一消息守候進(jìn)程模塊和板間 消息通信鏈路將該消息發(fā)送至第二功能線程單元所在板卡上的第二消息守候進(jìn)程模塊;且 所述的第二消息守候進(jìn)程模塊將該消息通過所述的進(jìn)程間消息通信鏈路發(fā)送至該第二功 能線程單元所在進(jìn)程中的第二消息線程單元中;并執(zhí)行以下步驟(8);(5) 如果是,則系統(tǒng)判斷第一功能線程單元的進(jìn)程標(biāo)識(shí)PID與所述的第二功能線程單 元的進(jìn)程標(biāo)識(shí)PID是否一致;(6) 如果一致,則第一功能線程單元通過所述的消息線程單元根據(jù)第二功能線程單元 的線程標(biāo)識(shí)TID找到第二功能線程單元所對(duì)應(yīng)的消息隊(duì)列,并將該消息存入與該消息隊(duì)列 所對(duì)應(yīng)的消息管道表中,完成消息發(fā)送處理操作;(7) 如果不一致,則通過該第一功能線程單元所進(jìn)程中的第一消息線程單元和進(jìn)程間 消息通信鏈路發(fā)送至該第二功能線程單元所在進(jìn)程中的第二消息線程單元中;并執(zhí)行以下 步驟(8);(8) 所述的第二消息線程單元根據(jù)第二功能線程單元的線程標(biāo)識(shí)TID找到第二功能線 程單元所對(duì)應(yīng)的消息隊(duì)列,并將該消息存入與該消息隊(duì)列所對(duì)應(yīng)的消息管道表中,完成消 息發(fā)送處理操作;所述的消息接收處理操作,包括以下步驟(11) 所述的第二功能線程單元持續(xù)檢測(cè)所述的消息管道表中是否有消息;(12) 如果否,則重復(fù)上述步驟(11);(13) 如果是,則取出該消息中的消息槽號(hào);(14) 所述的第二功能線程單元根據(jù)所述的消息槽號(hào)從所述的消息槽中讀取對(duì)應(yīng)的消 息內(nèi)容;(15) 所述的第二功能線程單元通過所述的消息槽表釋放所述的消息槽號(hào)所對(duì)應(yīng)的消 息槽,完成消息接收處理操作。
全文摘要
本發(fā)明涉及一種光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信系統(tǒng),其中每塊板卡上均具有一消息守候進(jìn)程模塊和至少一功能進(jìn)程模塊,各板卡上的消息守候進(jìn)程模塊間建立有板間消息通信鏈路,每個(gè)板卡上的消息守候進(jìn)程模塊與所在板卡上的各消息進(jìn)程模塊間建立有進(jìn)程間消息通信鏈路,每個(gè)功能進(jìn)程模塊中均具有一消息線程單元、消息模塊和至少一功能線程單元,消息線程單元通過消息模塊與各功能線程單元連接。本發(fā)明還涉及一種基于該系統(tǒng)實(shí)現(xiàn)光接入多用戶居住單元嵌入式設(shè)備中的多任務(wù)通信方法。采用該種光接入多用戶居住單元嵌入式設(shè)備多任務(wù)通信系統(tǒng)及方法,減少了系統(tǒng)負(fù)荷,提高了系統(tǒng)性能,信息交互簡(jiǎn)單高效,工作性能穩(wěn)定可靠,適用范圍較廣泛。
文檔編號(hào)H04Q11/00GK101702784SQ20091019899
公開日2010年5月5日 申請(qǐng)日期2009年11月18日 優(yōu)先權(quán)日2009年11月18日
發(fā)明者劉東明, 易萬春, 李新志, 蔡溯源 申請(qǐng)人:上海市共進(jìn)通信技術(shù)有限公司