專利名稱:通信設(shè)備中數(shù)據(jù)包的存儲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),特別涉及通信設(shè)備中數(shù)據(jù)的存儲技術(shù)。
背景技術(shù):
多任務(wù)環(huán)境中的應(yīng)用由一系列互相獨(dú)立又協(xié)同工作的任務(wù)組成。系統(tǒng)中任務(wù)之間的通信主要通過發(fā)送消息來完成。消息傳送的載體是消息包,這里所述的消息包是指系統(tǒng)中用于存儲待發(fā)送的消息的內(nèi)存單元。為了適應(yīng)多個任務(wù)的要求,系統(tǒng)要提供消息包的管理功能,如消息包的配置、申請、釋放等。
具體來說,上述消息包是通信系統(tǒng)中必須仔細(xì)管理的重要資源。雖然現(xiàn)在通信設(shè)備系統(tǒng)中的內(nèi)存容量越來越大,甚至達(dá)到60年代早期全世界最大的計(jì)算機(jī)內(nèi)存容量的數(shù)倍,但是程序長度的增長速度和內(nèi)存容量的增長一樣快,而且系統(tǒng)中各任務(wù)間須發(fā)送的消息也越來越多。因而,在一個系統(tǒng)中,通常都需要進(jìn)行消息包的管理。這些管理算法的任務(wù)是跟蹤正在使用那些內(nèi)存單元、哪些內(nèi)存單元空閑、在需要時為任務(wù)分配消息包、使用結(jié)束后釋放消息包等。
上述管理方法的優(yōu)劣將直接影響整個系統(tǒng)-特別是實(shí)時系統(tǒng)的性能。在一個實(shí)時系統(tǒng)中,如果需要通信時卻不能快速有效的申請到消息包,則會很大的影響實(shí)時性能,甚至引發(fā)通信中斷。
另一方面,目前對存儲器的管理可以分為兩類在運(yùn)行期間將數(shù)據(jù)在內(nèi)存與磁盤之間進(jìn)行移動的系統(tǒng)和不進(jìn)行移動的系統(tǒng)。之所以進(jìn)行移動,在很大程度上是由于缺少足夠的內(nèi)存存儲相應(yīng)的數(shù)據(jù)。而本發(fā)明所針對的主要是通信設(shè)備系統(tǒng)中,任務(wù)間發(fā)送消息時的內(nèi)存分配問題。由于此應(yīng)用一般對內(nèi)存需求不大,所以無須在內(nèi)存和磁盤間進(jìn)行移動。
現(xiàn)有技術(shù)中,為了在通信設(shè)備系統(tǒng)中實(shí)現(xiàn)任務(wù)間消息發(fā)送而進(jìn)行的消息包分配方法,通常采用單一的管理方法消息單元(UNIT)管理方法。在此方法中,用很多固定大小-通常為128字節(jié)-的內(nèi)存單元組成單元池,申請和釋放操作都是以能滿足用戶大小的連續(xù)多個內(nèi)存單元為單位進(jìn)行的。例如,假設(shè)系統(tǒng)內(nèi)要發(fā)送大小為256字節(jié)的消息,則系統(tǒng)須在其內(nèi)存中搜索出連續(xù)兩個內(nèi)存單元,然后分配給此消息。此方法最大的優(yōu)勢是實(shí)現(xiàn)簡單,只需要極少的操作和系統(tǒng)開銷。
在實(shí)際應(yīng)用中,上述方案存在以下問題一方面,內(nèi)存單元的大小固定為單一值,很難兼顧各種不同應(yīng)用的時間和空間效率;另一方面,系統(tǒng)長期運(yùn)行后,大消息包和小消息包交叉在一起,不斷的申請釋放,會導(dǎo)致申請時搜索合適的連續(xù)多個內(nèi)存單元效率降低,而且容易產(chǎn)生碎片,導(dǎo)致一些資源很難再利用。
造成這種情況的主要原因在于,方法單一,只能提供單一固定大小的內(nèi)存單元;在此情況下,所提供的搜索和釋放方法效率低下,并導(dǎo)致資源浪費(fèi)和性能不穩(wěn)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種通信設(shè)備中數(shù)據(jù)包的存儲方法,使得系統(tǒng)能充分利用內(nèi)存資源,提高系統(tǒng)的穩(wěn)定性和抗沖擊性。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種通信設(shè)備中數(shù)據(jù)包的存儲方法,包含以下步驟A在所述通信設(shè)備的內(nèi)存中預(yù)留第一空間和第二空間,并將所述第一空間分解為多種固定大小的內(nèi)存塊,將所述第二空間分解為一種相同大小的內(nèi)存塊;
B當(dāng)所述通信設(shè)備收到數(shù)據(jù)包時,判斷該數(shù)據(jù)包的大小是否超過門限,如果是則進(jìn)入步驟C,否則進(jìn)入步驟D;C在所述第二空間里,分配總體大小大于或等于所述數(shù)據(jù)包大小的一個或連續(xù)多個空閑狀態(tài)內(nèi)存塊給所述數(shù)據(jù)包;D在所述第一空間里,分配一個大于或等于所述數(shù)據(jù)包大小的空閑狀態(tài)內(nèi)存塊給所述數(shù)據(jù)包。
其中,所述第二空間里內(nèi)存塊比所述第一空間里內(nèi)存塊的大。
還包含以下步驟E所述通信設(shè)備處理完所述數(shù)據(jù)包后,將分配給該數(shù)據(jù)包的內(nèi)存塊重新設(shè)置為空閑狀態(tài)。
所述步驟A還進(jìn)一步包含以下子步驟對每一種大小的內(nèi)存塊,將所有內(nèi)存塊都設(shè)置為空閑狀態(tài),使用一個鏈表保存處于空閑狀態(tài)的所有內(nèi)存塊的位置;所述步驟C和D還進(jìn)一步包含以下子步驟當(dāng)為所述數(shù)據(jù)包分配了內(nèi)存塊后,將被分配的內(nèi)存塊設(shè)置為非空閑狀態(tài),并從所述鏈表中刪除該內(nèi)存塊的位置;所述步驟E還進(jìn)一步包含以下子步驟當(dāng)所述內(nèi)存塊被重新設(shè)置為空閑狀態(tài)以后,將這些內(nèi)存塊的位置加入所述鏈表。
所述步驟D中,被分配的所述內(nèi)存塊是大小最接近所述數(shù)據(jù)包的內(nèi)存塊。
所述第一空間里每一種大小的內(nèi)存塊數(shù)目可以根據(jù)所述通信設(shè)備收到各類數(shù)據(jù)包數(shù)量的理論模擬值或?qū)嶋H統(tǒng)計(jì)值設(shè)置。
所述第二空間里內(nèi)存塊的大小等于或大于所述門限的數(shù)據(jù)包中使用頻率最高的數(shù)據(jù)包大小。
通過比較可以發(fā)現(xiàn),本發(fā)明的技術(shù)方案與現(xiàn)有技術(shù)的區(qū)別在于,使用了混合方法,對小消息包采用區(qū)塊管理方法,根據(jù)單向鏈表,對號入座;對大消息包采用單元管理方法,申請和釋放操作都是以能滿足用戶大小的連續(xù)多個消息單元為單位進(jìn)行。
這種技術(shù)方案上的區(qū)別,帶來了較為明顯的有益效果,即充分利用內(nèi)存資源,防止了碎片產(chǎn)生;同時增強(qiáng)了系統(tǒng)穩(wěn)定性和長期運(yùn)行的抗沖擊性。
圖1是根據(jù)本發(fā)明的一個實(shí)施例的消息包分配方法中區(qū)塊管理方法流程;圖2是根據(jù)本發(fā)明的一個實(shí)施例的消息包分配方法中單元管理方法流程;圖3是根據(jù)本發(fā)明的一個實(shí)施例的消息包分配方法中混合方法的工作流程。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步地詳細(xì)描述。
總體而言,本發(fā)明的原理是采用一種混合的消息內(nèi)存管理方法,即混合了區(qū)塊管理(BLK_MANAGE)方法和單元管理(UNIT_MANAGE)方法。兩種方法針對不同大小類型的消息包實(shí)現(xiàn)分配管理。
下面先分別說明兩種方法的實(shí)現(xiàn),然后再說明本發(fā)明如何綜合運(yùn)用兩種方法,從而得出一種消息包分配方法。
首先,在BLK_MANAGE方法中,消息包申請及釋放操作都是以單個區(qū)塊(BLK)為單位進(jìn)行的,每個BLK塊獨(dú)自構(gòu)成為一個消息包,所有相同大小的BLK塊類型用索引工具來管理,把空閑BLK塊串成一個單向鏈表,這樣在分配和釋放時,只需要一次操作就可以了。在該鏈表中,如果一個BLK塊被分配出去,它將被標(biāo)記為非空閑狀態(tài),并從鏈表中刪除;如果一個BLK塊被釋放,則將被標(biāo)記為空閑狀態(tài),并重新進(jìn)入鏈表。
值得說明的是,這種方法得以實(shí)現(xiàn)的前提是一個BLK塊就可以滿足用戶一次申請消息時的大小需求,即BLK塊應(yīng)大于或等于消息大小,所以通常適合于小消息包的申請;此外,被分配的BLK塊應(yīng)是大小最接近待發(fā)消息的BLK塊。各個系統(tǒng)可以根據(jù)實(shí)際情況預(yù)先配置多種大小的BLK塊以及每一種BLK塊的數(shù)量。一般情況下,所設(shè)置的BLK塊大小與系統(tǒng)常用消息大小相當(dāng)。作為本發(fā)明的一個較佳實(shí)施例,表一所表示的系統(tǒng)中設(shè)置了大小分別為64字節(jié)、128字節(jié)、256字節(jié)、512字節(jié)和1024字節(jié)的BLK塊,每種BLK塊的數(shù)量分別為500個、100個、100個、100個和100個。熟悉本領(lǐng)域的技術(shù)人員可以理解,所設(shè)置BLK塊的大小及其相應(yīng)個數(shù)的多少并不影響本發(fā)明的實(shí)質(zhì)和范圍。
表一
下面結(jié)合附圖1說明BLK_MANAGE算法模塊10的實(shí)現(xiàn)首先,在步驟101中,系統(tǒng)預(yù)先分配不同大小的內(nèi)存BLK塊及其相應(yīng)個數(shù)。如前所述,內(nèi)存BLK塊的大小及其數(shù)量的多少,將根據(jù)不同的系統(tǒng)應(yīng)用而有所不同。
接著進(jìn)入步驟102,系統(tǒng)為每一種BLK塊建立一個指向空閑區(qū)塊的單向鏈表,在本步驟中,系統(tǒng)預(yù)設(shè)了多少種大小的BLK塊就應(yīng)建立多少個單向鏈表。
最后進(jìn)入步驟103,系統(tǒng)根據(jù)消息的尺寸大小,通過查詢相應(yīng)鏈表,直接對號入座。這樣,節(jié)省了搜索空閑包的操作并防止了碎片的產(chǎn)生,從而大大提高了系統(tǒng),特別是實(shí)時系統(tǒng)的效率和實(shí)時性。
接著說明UNIT_MANAGE方法,它與原來的UNIT消息單元管理方法類似。它以消息單元池為基礎(chǔ),消息包的分配和釋放都是以連續(xù)的消息單元為基礎(chǔ)的。但它須根據(jù)實(shí)際需要對消息單元大小進(jìn)行重新配置。
值得說明的是,該方法主要是當(dāng)用戶申請大消息包時用到,由于小消息包用BLK塊的方式可以優(yōu)先申請到,所以這里把最常用到的大的消息包大小作為消息單元大小,使得大部分情況一個消息單元就構(gòu)成一個消息包,特殊大包才由多個連續(xù)消息單元構(gòu)成。這樣可以大大提高大包的申請效率。
下面結(jié)合附圖2說明UNIT_MANAGE算法模塊20的實(shí)現(xiàn)首先,進(jìn)入步驟201,系統(tǒng)預(yù)設(shè)消息單元的大小及其數(shù)量。如上所述,系統(tǒng)把最常用到的大的消息包大小作為消息單元大小,使得大部分情況一個消息單元就構(gòu)成一個消息包。
然后進(jìn)入步驟202,搜索能滿足用戶大小的一個或連續(xù)多個消息單元分配給消息包。消息包的申請和釋放都是以能滿足用戶需求的一個或連續(xù)多個消息單元為單位的。這與現(xiàn)有技術(shù)的操作相類似。
需要指出的是,消息包大小的分類可以通過真實(shí)環(huán)境測試數(shù)據(jù),也可以通過應(yīng)用模型進(jìn)行理論分析,從而綜合兩者獲取一個最佳的分類方式,包括類別的個數(shù)、每類塊內(nèi)存的大小和個數(shù)。它們數(shù)值的不同,不會影響本發(fā)明的實(shí)質(zhì)和范圍。
下面結(jié)合附圖3說明本發(fā)明如何綜合運(yùn)用兩種方法,從而實(shí)現(xiàn)消息包分配。
首先,進(jìn)入步驟301,系統(tǒng)預(yù)分配兩個內(nèi)存空間,分別用于BLK_MANAGE方法和UNIT_MANAGE方法。其中,在用于BLK_MANAGE方法的內(nèi)存空間中,系統(tǒng)將根據(jù)實(shí)際應(yīng)用分配不同大小的BLK塊及其相應(yīng)數(shù)量;在用于UNIT_MANAGE方法的內(nèi)存空間中,系統(tǒng)將預(yù)設(shè)消息單元的大小及其相應(yīng)數(shù)量。
接著,進(jìn)入步驟302,當(dāng)一個系統(tǒng)發(fā)送信息時,它先判斷消息大小是否小于預(yù)設(shè)門限,如果是,則進(jìn)入步驟303,否則進(jìn)入步驟304。該門限的數(shù)值為BLK_MANAGE方法中所預(yù)設(shè)的最大BLK塊大小。
在步驟303中,進(jìn)入BLK_MANAGE算法模塊10,調(diào)用BLK_MANAGE方法。具體步驟如前面附圖1所述。
在步驟304中,進(jìn)入U(xiǎn)NIT_MANAGE算法模塊20,調(diào)用UNIT_MANAGE方法。具體步驟如前面附圖2所述。
作為本發(fā)明的一個較佳實(shí)施例,表一所列出的系統(tǒng)中,如果需要發(fā)送大小為256字節(jié)的消息,則系統(tǒng)將調(diào)用BLK_MANAGE方法,根據(jù)消息包的尺寸大小,找到256字節(jié)消息包所對應(yīng)的鏈表,通過查詢相應(yīng)鏈表,直接將消息放入空閑消息包中;如果所述系統(tǒng)需要發(fā)送大小為4096字節(jié)的消息,則系統(tǒng)將調(diào)用UNIT_MANAGE方法,搜索出兩個連續(xù)的消息單元,并將其分配給所述消息。
雖然通過參照本發(fā)明的某些優(yōu)選實(shí)施例,已經(jīng)對本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種各樣的改變,而不偏離所附權(quán)利要求書所限定的本發(fā)明的精神和范圍。
權(quán)利要求
1.一種通信設(shè)備中數(shù)據(jù)包的存儲方法,其特征在于,包含以下步驟A在所述通信設(shè)備的內(nèi)存中預(yù)留第一空間和第二空間,并將所述第一空間分解為多種固定大小的內(nèi)存塊,將所述第二空間分解為一種相同大小的內(nèi)存塊;B當(dāng)所述通信設(shè)備收到數(shù)據(jù)包時,判斷該數(shù)據(jù)包的大小是否超過門限,如果是則進(jìn)入步驟C,否則進(jìn)入步驟D;C在所述第二空間里,分配總體大小大于或等于所述數(shù)據(jù)包大小的一個或連續(xù)多個空閑狀態(tài)內(nèi)存塊給所述數(shù)據(jù)包;D在所述第一空間里,分配一個大于或等于所述數(shù)據(jù)包大小的空閑狀態(tài)內(nèi)存塊給所述數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的通信設(shè)備中數(shù)據(jù)包的存儲方法,其特征在于,所述第二空間里內(nèi)存塊比所述第一空間里內(nèi)存塊的大。
3.根據(jù)權(quán)利要求1所述的通信設(shè)備中數(shù)據(jù)包的存儲方法,其特征在于,還包含以下步驟E所述通信設(shè)備處理完所述數(shù)據(jù)包后,將分配給該數(shù)據(jù)包的內(nèi)存塊重新設(shè)置為空閑狀態(tài)。
4.根據(jù)權(quán)利要求1所述的通信設(shè)備中數(shù)據(jù)包的存儲方法,其特征在于,所述步驟A還進(jìn)一步包含以下子步驟對每一種大小的內(nèi)存塊,將所有內(nèi)存塊都設(shè)置為空閑狀態(tài),使用一個鏈表保存處于空閑狀態(tài)的所有內(nèi)存塊的位置;所述步驟C和D還進(jìn)一步包含以下子步驟當(dāng)為所述數(shù)據(jù)包分配了內(nèi)存塊后,將被分配的內(nèi)存塊設(shè)置為非空閑狀態(tài),并從所述鏈表中刪除該內(nèi)存塊的位置;所述步驟E還進(jìn)一步包含以下子步驟當(dāng)所述內(nèi)存塊被重新設(shè)置為空閑狀態(tài)以后,將這些內(nèi)存塊的位置加入所述鏈表。
5.根據(jù)權(quán)利要求1所述的通信設(shè)備中數(shù)據(jù)包的存儲方法,其特征在于,所述步驟D中,被分配的所述內(nèi)存塊是大小最接近所述數(shù)據(jù)包的內(nèi)存塊。
6.根據(jù)權(quán)利要求1所述的通信設(shè)備中數(shù)據(jù)包的存儲方法,其特征在于,所述第一空間里每一種大小的內(nèi)存塊數(shù)目可以根據(jù)所述通信設(shè)備收到各類數(shù)據(jù)包數(shù)量的理論模擬值或?qū)嶋H統(tǒng)計(jì)值設(shè)置。
7.根據(jù)權(quán)利要求1至6中任意一條所述的通信設(shè)備中數(shù)據(jù)包的存儲方法,其特征在于,所述第二空間里內(nèi)存塊的大小等于或大于所述門限的數(shù)據(jù)包中使用頻率最高的數(shù)據(jù)包大小。
全文摘要
本發(fā)明涉及通信技術(shù),公開了一種通信設(shè)備中數(shù)據(jù)包的存儲方法,使得系統(tǒng)能充分利用內(nèi)存資源,提高系統(tǒng)的穩(wěn)定性和抗沖擊性。這種通信設(shè)備中數(shù)據(jù)包的存儲方法包含以下步驟A在通信設(shè)備的內(nèi)存中預(yù)留第一空間和第二空間,并將第一空間分解為多種固定大小的內(nèi)存塊,將第二空間分解為一種相同大小的內(nèi)存塊;B當(dāng)通信設(shè)備收到數(shù)據(jù)包時,判斷該數(shù)據(jù)包的大小是否超過門限,如果是則進(jìn)入步驟C,否則進(jìn)入步驟D;C在第二空間里,分配總體大小大于或等于數(shù)據(jù)包大小的一個或連續(xù)多個空閑狀態(tài)內(nèi)存塊給數(shù)據(jù)包;D在第一空間里,分配一個大于或等于數(shù)據(jù)包大小的空閑狀態(tài)內(nèi)存塊給數(shù)據(jù)包。
文檔編號H04L12/56GK1691637SQ20041003495
公開日2005年11月2日 申請日期2004年4月27日 優(yōu)先權(quán)日2004年4月27日
發(fā)明者何華 申請人:華為技術(shù)有限公司