緩存管理方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例提供了本發(fā)明實(shí)施例提供了一種緩存管理方法,通過(guò)第一用戶(hù)在第一用戶(hù)的私有隊(duì)列中的報(bào)文緩存中對(duì)所述待處理報(bào)文進(jìn)行第一處理之后,將所述報(bào)文緩存的地址通知給第二用戶(hù),將所述報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn);第二用戶(hù)訪(fǎng)問(wèn)所述報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。通過(guò)本發(fā)明實(shí)施例,避免了在緩存共享時(shí),需要通過(guò)內(nèi)存復(fù)制粘貼的方式進(jìn)行緩存共享,能夠?qū)崿F(xiàn)統(tǒng)一鎖管理機(jī)制下,不同用戶(hù)共享緩存空間,提高各用戶(hù)自建的緩存通信性能。
【專(zhuān)利說(shuō)明】緩存管理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體涉及一種緩存管理方法及服務(wù)器。
【背景技術(shù)】
[0002]接入路由(英文:access router,縮寫(xiě):AR)設(shè)備的各功能模塊之間需要進(jìn)行統(tǒng)一的緩存(英文:buffer)管理,例如接收模塊的接收進(jìn)程在接收?qǐng)?bào)文時(shí)申請(qǐng)一段內(nèi)存空間作為報(bào)文緩存(英文:packet buffer,縮寫(xiě):PBUF),PBUF是被設(shè)置成用來(lái)存儲(chǔ)網(wǎng)絡(luò)中接收到的等待傳輸?shù)膱?bào)文的空間,轉(zhuǎn)發(fā)模塊的轉(zhuǎn)發(fā)進(jìn)程在轉(zhuǎn)發(fā)報(bào)文時(shí)申請(qǐng)另一段內(nèi)存空間作為轉(zhuǎn)發(fā)報(bào)文的報(bào)文緩存,操作系統(tǒng)的核心態(tài)(英文:kernel mode)進(jìn)程與用戶(hù)態(tài)(英文:usermode)進(jìn)程之間進(jìn)行報(bào)文傳遞之間快速通信時(shí)也需要申請(qǐng)內(nèi)存空間作為報(bào)文緩存。通常的,不同的進(jìn)程在進(jìn)行報(bào)文傳遞時(shí),多使用共享內(nèi)存。共享內(nèi)存(sharedmemory)是Unix或Linux下的多進(jìn)程之間的通信方法,這種方法通常用于一個(gè)程序的多進(jìn)程間通信,實(shí)際上多個(gè)程序間也可以通過(guò)共享內(nèi)存來(lái)傳遞信息。共享內(nèi)存通過(guò)鎖機(jī)制來(lái)防止多個(gè)進(jìn)程之間內(nèi)存使用沖突。例如,在Linux操作系統(tǒng)下,內(nèi)核態(tài)進(jìn)程與用戶(hù)態(tài)進(jìn)程的報(bào)文傳遞,需要用鎖機(jī)制來(lái)解決共享內(nèi)存并發(fā),例如兩個(gè)或兩個(gè)以上的進(jìn)程在同一時(shí)刻發(fā)生調(diào)用同一段內(nèi)存空間的問(wèn)題,但是內(nèi)核態(tài)進(jìn)程和用戶(hù)態(tài)進(jìn)程無(wú)法使用一套鎖機(jī)制。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供一種緩存管理方法,以實(shí)現(xiàn)多子系統(tǒng)公用一種鎖機(jī)制下的統(tǒng)一緩存管理。
[0004]本發(fā)明的第一方面提供了一種緩存管理方法,所述方法包括:
[0005]第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存;
[0006]所述第一用戶(hù)對(duì)所述待處理報(bào)文進(jìn)行第一處理;
[0007]第一用戶(hù)將被第一處理后的所述待處理報(bào)文所在的所述報(bào)文緩存的地址通知給第二用戶(hù),將所述地址對(duì)應(yīng)的報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn);
[0008]第二用戶(hù)訪(fǎng)問(wèn)所述地址對(duì)應(yīng)的報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。
[0009]基于第一方面,在第一方面的第一種可能的實(shí)施方式中,所述第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,之前,還包括:
[0010]在所述第一用戶(hù)的私有隊(duì)列中的所有地址對(duì)應(yīng)的報(bào)文緩存被耗盡的情況下,向所述第一用戶(hù)的第一資源池申請(qǐng)報(bào)文緩存,所述第一資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第一用戶(hù)優(yōu)先使用的內(nèi)存空間;
[0011]在所述第一用戶(hù)的第一資源池中的所有地址對(duì)應(yīng)的報(bào)文緩存耗盡的情況下,與第二用戶(hù)的第二資源池進(jìn)行報(bào)文緩存交換,將所述第一資源池中的全部地址對(duì)應(yīng)的報(bào)文緩存空間和所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存空間進(jìn)行交換,所述第二用戶(hù)的第二資源池中的全部地址對(duì)應(yīng)的全部緩存處于可用狀態(tài)的,所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第二用戶(hù)優(yōu)先使用的內(nèi)存空間;
[0012]在不存在資源池中的全部報(bào)文緩存處于可用狀態(tài)的第二用戶(hù)的情況下,將所述待處理報(bào)文存儲(chǔ)在共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,所述共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存為全部用戶(hù)都能訪(fǎng)問(wèn)的無(wú)鎖隊(duì)列。
[0013]基于第一方面或第一方面的第一種可能的實(shí)施方式,在第一方面的第二種可能的實(shí)施方式中,所述方法還包括,在所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定閾值時(shí),將存放所述待處理報(bào)文的所述報(bào)文緩存釋放。
[0014]基于第一方面的第二種可能的實(shí)施方式,本發(fā)明實(shí)施例還提供了第三種可能的實(shí)施方式,在所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定閾值時(shí),將存放所述待處理報(bào)文的所述報(bào)文緩存釋放,具體為:
[0015]若所述第一用戶(hù)的私有隊(duì)列未達(dá)到設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的私有隊(duì)列;
[0016]若所述第一用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且第一用戶(hù)的資源池未達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的資源池中;
[0017]若所述第二用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且所述第一用戶(hù)的資源池已達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述共享隊(duì)列中。
[0018]基于第一方面以及第一方面的第一種可能的實(shí)施方式至第三種可能的實(shí)施方式中的任意一個(gè),在第一方面的第四種可能的實(shí)施方式中,第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,之前,還包括:
[0019]創(chuàng)建共享隊(duì)列,并保存所述共享隊(duì)列的地址信息;
[0020]創(chuàng)建多個(gè)與每個(gè)用戶(hù)對(duì)應(yīng)的私有隊(duì)列,所述私有隊(duì)列根據(jù)所述共享隊(duì)列的地址信息和設(shè)定的私有隊(duì)列大小創(chuàng)建;
[0021]創(chuàng)建資源,所述資源池在所述共享隊(duì)列和所述私有隊(duì)列外的內(nèi)存空間中,與每個(gè)用戶(hù)對(duì)應(yīng)。
[0022]本發(fā)明的第二方面提供了一種緩存管理裝置,所述裝置包括:
[0023]存儲(chǔ)單元,用于第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存;
[0024]第一處理單元,用于所述第一用戶(hù)對(duì)所述待處理報(bào)文進(jìn)行第一處理;
[0025]控制單元,用于第一用戶(hù)將被第一處理后的所述待處理報(bào)文所在的所述報(bào)文緩存的地址通知給第二用戶(hù),將所述地址對(duì)應(yīng)的報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn);
[0026]第二處理單元,用于第二用戶(hù)訪(fǎng)問(wèn)所述地址對(duì)應(yīng)的報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。
[0027]基于第二方面,在第二方面的第一種可能的實(shí)施方式中,所述存儲(chǔ)單元還用于:
[0028]在所述第一用戶(hù)的私有隊(duì)列中的所有地址對(duì)應(yīng)的報(bào)文緩存被耗盡的情況下,向所述第一用戶(hù)的第一資源池申請(qǐng)報(bào)文緩存,所述第一資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第一用戶(hù)優(yōu)先使用的內(nèi)存空間;
[0029]在所述第一用戶(hù)的第一資源池中的所有地址對(duì)應(yīng)的報(bào)文緩存耗盡的情況下,與第二用戶(hù)的第二資源池進(jìn)行報(bào)文緩存交換,將所述第一資源池中的全部地址對(duì)應(yīng)的報(bào)文緩存空間和所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存空間進(jìn)行交換,所述第二用戶(hù)的第二資源池中的全部地址對(duì)應(yīng)的全部緩存處于可用狀態(tài)的,所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第二用戶(hù)優(yōu)先使用的內(nèi)存空間;
[0030]在不存在資源池中的全部報(bào)文緩存處于可用狀態(tài)的第二用戶(hù)的情況下,將所述待處理報(bào)文存儲(chǔ)在共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,所述共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存為全部用戶(hù)都能訪(fǎng)問(wèn)的無(wú)鎖隊(duì)列。
[0031]基于第二方面活第二方面的第一種可能的實(shí)施方式,在第二方面的第二種可能的實(shí)施方式中,所述裝置還包括,釋放單元,用于在所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定閾值時(shí),將存放所述待處理報(bào)文的所述報(bào)文緩存釋放。
[0032]基于第二方面的第二種可能的實(shí)施方式,本發(fā)明實(shí)施例還提供了第三種可能的實(shí)施方式,所述釋放單元,具體用于:
[0033]若所述第一用戶(hù)的私有隊(duì)列未達(dá)到設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的私有隊(duì)列;
[0034]若所述第一用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且第一用戶(hù)的資源池未達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的資源池中;
[0035]若所述第二用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且所述第一用戶(hù)的資源池已達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述共享隊(duì)列中。
[0036]基于第二方面以及第二方面的第一種可能的實(shí)施方式至第三種可能的實(shí)施方式中的任意一個(gè),在第二方面的第四種可能的實(shí)施方式中,還包括創(chuàng)建單元,用于:
[0037]創(chuàng)建共享隊(duì)列,并保存所述共享隊(duì)列的地址信息;
[0038]創(chuàng)建多個(gè)與每個(gè)用戶(hù)對(duì)應(yīng)的私有隊(duì)列,所述私有隊(duì)列根據(jù)所述共享隊(duì)列的地址信息和設(shè)定的私有隊(duì)列大小創(chuàng)建;
[0039]創(chuàng)建資源,所述資源池在所述共享隊(duì)列和所述私有隊(duì)列外的內(nèi)存空間中,與每個(gè)用戶(hù)對(duì)應(yīng)。
[0040]本發(fā)明實(shí)施例提供了一種緩存管理方法,通過(guò)第一用戶(hù)在第一用戶(hù)的私有隊(duì)列中的報(bào)文緩存中對(duì)所述待處理報(bào)文進(jìn)行第一處理之后,將所述報(bào)文緩存的地址通知給第二用戶(hù),中央處理器將所述報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn);第二用戶(hù)訪(fǎng)問(wèn)所述報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。通過(guò)本發(fā)明實(shí)施例,避免了在緩存共享時(shí),需要通過(guò)內(nèi)存復(fù)制粘貼的方式進(jìn)行緩存共享,能夠?qū)崿F(xiàn)統(tǒng)一鎖管理機(jī)制下,不同用戶(hù)共享緩存空間,提高各用戶(hù)自建的緩存通信性能?!緦?zhuān)利附圖】
【附圖說(shuō)明】
[0041]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0042]圖1為本發(fā)明實(shí)施例創(chuàng)建的緩存空間的不意圖;
[0043]圖2為本發(fā)明實(shí)施例提供的緩存管理方法一種實(shí)施例的流程圖;
[0044]圖3為本發(fā)明實(shí)施例提供的緩存管理裝置一種實(shí)施例的結(jié)構(gòu)圖;
[0045]圖4為本發(fā)明實(shí)施例提供的緩存管理裝置另一種實(shí)施例的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0046]下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
[0047]本發(fā)明實(shí)施例的核心思想是,將系統(tǒng)的緩存(buffer)空間劃分劃分為私有空間和共享空間,私有空間是特定用戶(hù)能夠訪(fǎng)問(wèn)的用來(lái)存儲(chǔ)待處理報(bào)文的緩存空間。共享空間是所有用戶(hù)都能夠訪(fǎng)問(wèn)的用來(lái)存儲(chǔ)待處理報(bào)文的緩存空間。將指向私有空間中存儲(chǔ)報(bào)文的各個(gè)報(bào)文緩存對(duì)應(yīng)的地址的指針和每個(gè)指針前的節(jié)點(diǎn)值所述組成的隊(duì)列稱(chēng)為私有隊(duì)列,指向共享空間中存儲(chǔ)報(bào)文的各個(gè)報(bào)文緩存對(duì)應(yīng)的地址的指針和每個(gè)指針前的節(jié)點(diǎn)值組成的隊(duì)列稱(chēng)為共享隊(duì)列,每個(gè)節(jié)點(diǎn)值存儲(chǔ)在前一個(gè)節(jié)點(diǎn)的指針指向的首地址開(kāi)始的一段報(bào)文緩存空間內(nèi)。每個(gè)功能模塊可以根據(jù)不同的情況選擇將需要處理的報(bào)文存放在私有隊(duì)列中的指針對(duì)應(yīng)的地址所對(duì)應(yīng)的報(bào)文緩存中或者共享隊(duì)列中的指針對(duì)應(yīng)的地址所對(duì)應(yīng)的報(bào)文緩存中。
[0048]本發(fā)明實(shí)施例中,首先CPU將系統(tǒng)的緩存空間進(jìn)行劃分,劃分為共享隊(duì)列和私有隊(duì)列,首先在內(nèi)存中,CPU根據(jù)預(yù)設(shè)的大小創(chuàng)建共享隊(duì)列,將內(nèi)存中的部分地址作為隊(duì)列中的指針指向的地址,作為共享隊(duì)列,并保存共享隊(duì)列的地址信息,所述共享隊(duì)列可用被多個(gè)用戶(hù)共享,也就是說(shuō)所有的用戶(hù)都能夠訪(fǎng)問(wèn)共享隊(duì)列中的編址對(duì)應(yīng)的報(bào)文緩存;之后,CPU為每個(gè)用戶(hù)創(chuàng)建一個(gè)私有隊(duì)列,所述私有隊(duì)列為僅允許一個(gè)用戶(hù)訪(fǎng)問(wèn)的隊(duì)列,所述私有隊(duì)列根據(jù)所述共享隊(duì)列的地址和預(yù)設(shè)的私有隊(duì)列大小創(chuàng)建;之后CPU為每個(gè)私有隊(duì)列創(chuàng)建資源池,每個(gè)用戶(hù)的資源池為該用戶(hù)優(yōu)先使用的,可交換的內(nèi)存空間,同樣是由多個(gè)報(bào)文緩存地址組成的隊(duì)列,如圖1所示。
[0049]如圖2所示,本發(fā)明實(shí)施例提供了一種緩存管理方法,所述方法包括:
[0050]201,第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存;
[0051]具體而言,在CPU中,不同的功能模塊需要對(duì)不同的報(bào)文做不同的處理,例如壓縮、加密、編碼/解碼、轉(zhuǎn)發(fā)等處理,因此在對(duì)這些待處理報(bào)文進(jìn)行處理時(shí),完成對(duì)待處理報(bào)文的處理的模塊可以稱(chēng)之為用戶(hù),每個(gè)用戶(hù)在對(duì)待處理報(bào)文進(jìn)行處理時(shí),都需要相應(yīng)的報(bào)文緩存來(lái)存儲(chǔ)需要該用戶(hù)處理的待處理報(bào)文。
[0052]因此,在多個(gè)用戶(hù)中的第一用戶(hù)需要對(duì)待處理報(bào)文進(jìn)行處理時(shí)第一用戶(hù)將相應(yīng)的報(bào)文存儲(chǔ)在第一用戶(hù)的私有隊(duì)列中的某個(gè)地址對(duì)應(yīng)的報(bào)文緩存中,只有第一用戶(hù)能夠訪(fǎng)問(wèn)第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存。
[0053]在對(duì)待處理報(bào)文進(jìn)行第一處理之前,為了使待處理報(bào)文占用的報(bào)文緩存空間不能被第一用戶(hù)中的其他進(jìn)程占用,第一用戶(hù)將此報(bào)文緩存對(duì)應(yīng)的地址從第一用戶(hù)的私有隊(duì)列中移出,這樣第一用戶(hù)的私有隊(duì)列中的某個(gè)節(jié)點(diǎn)中的指向所述報(bào)文緩存的首地址的指針不再指向所述報(bào)文緩存的首地址,相當(dāng)于私有隊(duì)列中的地址相應(yīng)減少,相應(yīng)的第一用戶(hù)的私有隊(duì)列大小也減少。
[0054]其中,私有隊(duì)列可以是多個(gè)節(jié)點(diǎn)組成的單向鏈表,通過(guò)指針指向不同的內(nèi)存空間對(duì)應(yīng)的地址,隊(duì)列中前一個(gè)節(jié)點(diǎn)的指針指向第二個(gè)節(jié)點(diǎn)的首地址,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)從首地址開(kāi)始的一段內(nèi)存空間,依次類(lèi)推。
[0055]202,所述第一用戶(hù)對(duì)所述待處理報(bào)文進(jìn)行第一處理;
[0056]具體而言,第一用戶(hù)在其私有隊(duì)列中的報(bào)文緩存中對(duì)待處理報(bào)文進(jìn)行子很能夠進(jìn)行的處理,例如壓縮、編碼等處理。
[0057]在對(duì)待處理報(bào)文進(jìn)行第一處理之后,如果所述報(bào)文還需要其他的用戶(hù)進(jìn)行其他處理,則執(zhí)行步驟203。
[0058]203,第一用戶(hù)將所述報(bào)文緩存的地址通知給第二用戶(hù),將所述地址對(duì)應(yīng)的報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn);
[0059]具體而言,可以是第一用戶(hù)將步驟202中存儲(chǔ)待處理報(bào)文的報(bào)文緩存的地址通知給第二用戶(hù),也可以是由CPU中的負(fù)責(zé)執(zhí)行地址通知功能的一個(gè)地址通知模塊負(fù)責(zé)將第一用戶(hù)的私有隊(duì)列中存儲(chǔ)待處理報(bào)文的報(bào)文緩存的地址通知給第二用戶(hù)。但是由于前述的私有隊(duì)列為第一用戶(hù)才能訪(fǎng)問(wèn)的隊(duì)列,因此,CPU需要更改該段報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限,將該段報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn)。
[0060]當(dāng)然,在完成上述調(diào)整之后,第一用戶(hù)的私有隊(duì)列大小會(huì)變小,而第二用戶(hù)的私有隊(duì)列的大小會(huì)變大。
[0061]此外,第一用戶(hù)也可能會(huì)接受第三用戶(hù)處理完某一段報(bào)文之后,從第三用戶(hù)的私有隊(duì)列劃歸到第一用戶(hù)的私有隊(duì)列中的報(bào)文緩存。
[0062]204、第二用戶(hù)訪(fǎng)問(wèn)所述報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。
[0063]具體而言,CPU在將第一用戶(hù)的私有隊(duì)列中存儲(chǔ)需要第二用戶(hù)處理的待處理報(bào)文的報(bào)文緩存劃分給第二用戶(hù)之后,第二用戶(hù)訪(fǎng)問(wèn)此報(bào)文緩存,并對(duì)待處理報(bào)文進(jìn)行第二處理,第二處理與第一用戶(hù)對(duì)待處理報(bào)文進(jìn)行的第一處理不同,例如可以是轉(zhuǎn)發(fā)處理或者加密處理。
[0064]在第二用戶(hù)處理完待處理報(bào)文后,可以將報(bào)文緩存的地址釋放到第二用戶(hù)的私有隊(duì)列中,相當(dāng)于將第一用戶(hù)的私有隊(duì)列中的一段報(bào)文緩存劃分給第二用戶(hù)。
[0065]此時(shí),可以通過(guò)調(diào)整私有隊(duì)列中的單向鏈表指針指向?qū)崿F(xiàn),例如步驟202中的報(bào)文緩存為第一用戶(hù)的私有隊(duì)列中的第102個(gè)節(jié)點(diǎn)的緩存空間,第101個(gè)節(jié)點(diǎn)的指針指向第102個(gè)節(jié)點(diǎn)的首地址,第102個(gè)節(jié)點(diǎn)的指針指向第103個(gè)節(jié)點(diǎn)的首地址。在需要將第102個(gè)節(jié)點(diǎn)中的緩存空間劃歸第二用戶(hù)時(shí),只要將第101個(gè)節(jié)點(diǎn)中的指針指向第103個(gè)節(jié)點(diǎn)中緩存空間的首地址。第二用戶(hù)的私有隊(duì)列中的最后一個(gè)節(jié)點(diǎn)中的指針原第一用戶(hù)的第102個(gè)節(jié)點(diǎn)的緩存空間的首地址,即可完成私有隊(duì)列的調(diào)整。
[0066]通過(guò)上述的方式,在進(jìn)行緩存共享時(shí),第一用戶(hù)只需要通過(guò)消息告知第二用戶(hù)報(bào)文緩存的地址即可,而不需要內(nèi)存拷貝,達(dá)到節(jié)省耗時(shí)的效果。
[0067]在第二用戶(hù)對(duì)待處理報(bào)文進(jìn)行第二處理之后,如果所述待處理報(bào)文仍然需要第三用戶(hù)處理,或者需要第一用戶(hù)進(jìn)行處理,則第二用戶(hù)將報(bào)文緩存的地址通知給第三用戶(hù)或者第一用戶(hù),實(shí)現(xiàn)緩存共享。
[0068]在步驟201中,第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,但是如果第一用戶(hù)的私有隊(duì)列中的報(bào)文緩存已經(jīng)被耗盡,也就是說(shuō)第一用戶(hù)中的私有隊(duì)列對(duì)應(yīng)的報(bào)文緩存已經(jīng)全部被劃給其他用戶(hù)或者被占用,那么第一用戶(hù)向的第一資源池申請(qǐng)報(bào)文緩存,所述第一資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第一用戶(hù)優(yōu)先使用的內(nèi)存空間;
[0069]如果第一用戶(hù)的第一資源池對(duì)應(yīng)的報(bào)文緩存并未被全部占用,則CPU將第一資源池中的部分報(bào)文緩存對(duì)應(yīng)的地址劃分到第一用戶(hù)的私有隊(duì)列中,例如,將第一用戶(hù)的私有隊(duì)列中的最后一個(gè)節(jié)點(diǎn)的指針指向第一資源池中的第一個(gè)報(bào)文緩存的首地址。
[0070]如果所述第一用戶(hù)的第一資源池中的報(bào)文緩存已經(jīng)耗盡,則第一用戶(hù)與第二用戶(hù)的第二資源池進(jìn)行報(bào)文緩存交換,也就是將所述第一資源池對(duì)應(yīng)的報(bào)文緩存空間和所述第二資源池對(duì)應(yīng)的報(bào)文緩存空間進(jìn)行交換,所述第二用戶(hù)的第二資源池中的全部緩存處于可用狀態(tài)的,第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第二用戶(hù)優(yōu)先使用的內(nèi)存空間;第二用戶(hù)的第二資源池中的全部緩存可用是指,第二資源池中的所有可用報(bào)文緩存空間都沒(méi)有被第二用戶(hù)占用。
[0071]其中,緩存交換的實(shí)現(xiàn)方式可以是將所述第一用戶(hù)的私有隊(duì)列中最后一個(gè)節(jié)點(diǎn)的指針指向所述第二用戶(hù)的第二資源池的首地址;將所述第二用戶(hù)的私有隊(duì)列中最后一個(gè)節(jié)點(diǎn)的指針指向所述第一用戶(hù)的第一資源池的首地址。
[0072]如果全部用戶(hù)的資源池都被占用,也就是說(shuō)不存在資源池中的全部報(bào)文緩存處于可用狀態(tài)的第二用戶(hù),則第一用戶(hù)將所述待處理報(bào)文存儲(chǔ)在共享隊(duì)列中的報(bào)文緩存,所述共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存為全部用戶(hù)都能訪(fǎng)問(wèn)的無(wú)鎖隊(duì)列,第一用戶(hù)在共享隊(duì)列中的某個(gè)地址對(duì)應(yīng)的報(bào)文緩存中對(duì)待處理報(bào)文進(jìn)行第一處理。
[0073]在一種可能的實(shí)施方式中,在步驟203中,第一用戶(hù)不斷將私有隊(duì)列中的報(bào)文緩存劃給第二隊(duì)列,或者第一用戶(hù)不斷接收第三用戶(hù)或者第四用戶(hù)劃出的報(bào)文緩存,因此可能存在第一用戶(hù)的私有隊(duì)列中可用的報(bào)文緩存不足的情況,以及第一用戶(hù)的私有隊(duì)列不斷增大的情況。
[0074]第一用戶(hù)的在對(duì)待處理報(bào)文進(jìn)行完第一處理之后,如果所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值,或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定值,第一用戶(hù)將存放所述待處理報(bào)文的所述報(bào)文緩存釋放,所述的釋放是指將報(bào)文緩存對(duì)應(yīng)的地址,釋放到私有隊(duì)列中或資源池或共享隊(duì)列中,使用戶(hù)能夠再次使用該地址對(duì)應(yīng)的報(bào)文緩存,例如將私有隊(duì)列中最后一個(gè)節(jié)點(diǎn)的指針指向所述的報(bào)文緩存的首地址,所述的設(shè)定閾值例如可用是在創(chuàng)建私有隊(duì)列時(shí)的私有隊(duì)列大小值。
[0075]具體而言,若所述第一用戶(hù)的私有隊(duì)列未達(dá)到設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定值,則將所述報(bào)文緩存釋放到所述第一用戶(hù)的私有隊(duì)列,也就是將報(bào)文緩存對(duì)應(yīng)的地址釋放到第一用戶(hù)的私有隊(duì)列;
[0076]也就是說(shuō)私有隊(duì)列中預(yù)定的空間不足,則將緩存隊(duì)列的報(bào)文緩存地址釋放到所述第一用戶(hù)的私有隊(duì)列,使得第一用戶(hù)的私有隊(duì)列滿(mǎn)足設(shè)定大小。
[0077]若所述第一用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且第一用戶(hù)的資源池未達(dá)到設(shè)定閾值,則將所述報(bào)文緩存釋放到所述第一用戶(hù)的資源池中,將釋放的報(bào)文緩存的地址鏈接到第一用戶(hù)的第一資源池的尾地址指針;
[0078]若所述第二用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且所述第一用戶(hù)的資源池已達(dá)到設(shè)定閾值,則將所述報(bào)文緩存釋放到所述共享隊(duì)列中。
[0079]上述處理的原因在于,如果第一用戶(hù)將buff直接釋放到共享隊(duì)列,那第一用戶(hù)再次申請(qǐng)的時(shí)候,又會(huì)發(fā)現(xiàn)私有隊(duì)列沒(méi)有可用報(bào)文緩存,再判斷資源池又沒(méi)可用的報(bào)文緩存,那第一用戶(hù)又到共享隊(duì)列中申請(qǐng),結(jié)果是用戶(hù)很難將待處理報(bào)文存儲(chǔ)在私有隊(duì)列中的報(bào)文緩存。
[0080]相應(yīng)的,本發(fā)明實(shí)施例還提供一種緩存管理裝置300,其包括:
[0081]存儲(chǔ)單元301,用于第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存;
[0082]第一處理單元302,用于第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存;
[0083]控制單元303,用于第一用戶(hù)將被第一處理后的所述待處理報(bào)文所在的所述報(bào)文緩存的地址通知給第二用戶(hù),將所述地址對(duì)應(yīng)的報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn);
[0084]第二處理單元304,用于第二用戶(hù)訪(fǎng)問(wèn)所述地址對(duì)應(yīng)的報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。
[0085]優(yōu)選的,所述存儲(chǔ)單元301還用于:
[0086]在所述第一用戶(hù)的私有隊(duì)列中的報(bào)文緩存被耗盡的情況下,向所述第一用戶(hù)的第一資源池申請(qǐng)報(bào)文緩存,所述第一資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第一用戶(hù)優(yōu)先使用的內(nèi)存空間;
[0087]在所述第一用戶(hù)的第一資源池中的所有地址對(duì)應(yīng)的報(bào)文緩存耗盡的情況下,與第二用戶(hù)的第二資源池進(jìn)行報(bào)文緩存交換,將所述第一資源池中的全部地址對(duì)應(yīng)的報(bào)文緩存空間和所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存空間進(jìn)行交換,所述第二用戶(hù)的第二資源池中的全部地址對(duì)應(yīng)的全部緩存處于可用狀態(tài)的,所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第二用戶(hù)優(yōu)先使用的內(nèi)存空間;
[0088]在不存在資源池中的全部報(bào)文緩存處于可用狀態(tài)的第二用戶(hù)的情況下,將所述待處理報(bào)文存儲(chǔ)在共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,所述共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存為全部用戶(hù)都能訪(fǎng)問(wèn)的無(wú)鎖隊(duì)列。
[0089]優(yōu)選的,所述緩存管理裝置還包括:釋放單元,用于在所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定閾值時(shí),將存放所述待處理報(bào)文的所述報(bào)文緩存釋放。
[0090]所述釋放單元,具體用于:
[0091]若所述第一用戶(hù)的私有隊(duì)列未達(dá)到設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的私有隊(duì)列;[0092]若所述第一用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且第一用戶(hù)的資源池未達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的資源池中;
[0093]若所述第二用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且所述第一用戶(hù)的資源池已達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述共享隊(duì)列中。
[0094]所述緩存管理裝置300還可包括創(chuàng)建單元,用于:創(chuàng)建共享隊(duì)列,并保存共享隊(duì)列的地址信息;創(chuàng)建多個(gè)與每個(gè)用戶(hù)對(duì)應(yīng)的私有隊(duì)列,所述私有隊(duì)列根據(jù)所述共享隊(duì)列的地址信息和設(shè)定的私有隊(duì)列大小創(chuàng)建;創(chuàng)建池,所述資源池在所述共享隊(duì)列和所述私有隊(duì)列外的內(nèi)存空間中,與每個(gè)用戶(hù)對(duì)應(yīng)。
[0095]相應(yīng)的,本發(fā)明實(shí)施例還提供一種緩存管理裝置,圖4為本發(fā)明實(shí)施例緩存管理裝置的示意圖,如圖所示,本實(shí)施例包括網(wǎng)絡(luò)接口 41、處理器42和存儲(chǔ)器43。系統(tǒng)總線(xiàn)44用于連接網(wǎng)絡(luò)接口 41、處理器42和存儲(chǔ)器43。
[0096]網(wǎng)絡(luò)接口 41用于與其他設(shè)備通信。
[0097]存儲(chǔ)器43可以是永久存儲(chǔ)器,例如硬盤(pán)驅(qū)動(dòng)器和閃存,存儲(chǔ)器43中具有軟件模塊和設(shè)備驅(qū)動(dòng)程序。軟件模塊能夠執(zhí)行本發(fā)明上述方法的各種功能模塊;設(shè)備驅(qū)動(dòng)程序可以是網(wǎng)絡(luò)和接口驅(qū)動(dòng)程序。
[0098]在啟動(dòng)時(shí),這些軟件模塊被加載到存儲(chǔ)器43中,然后被處理器42訪(fǎng)問(wèn)并執(zhí)行如下指令:
[0099]第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存;
[0100]所述第一用戶(hù)對(duì)所述待處理報(bào)文進(jìn)行第一處理;
[0101]第一用戶(hù)將被第一處理后的所述待處理報(bào)文所在的所述報(bào)文緩存的地址通知給第二用戶(hù),將所述地址對(duì)應(yīng)的報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn);
[0102]第二用戶(hù)訪(fǎng)問(wèn)所述地址對(duì)應(yīng)的報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。
[0103]專(zhuān)業(yè)人員應(yīng)該還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0104]結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(英文random accessmemory,縮寫(xiě):RAM)、內(nèi)存、只讀存儲(chǔ)器(英文:read only memory,縮寫(xiě):ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤(pán)、可移動(dòng)磁盤(pán)、只讀光盤(pán)(英文:Compact DiscRead-Only Memory,縮寫(xiě):⑶-ROM)、或【技術(shù)領(lǐng)域】?jī)?nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
[0105]以上所述的【具體實(shí)施方式】,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的【具體實(shí)施方式】而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的技術(shù)基礎(chǔ)上,所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種緩存管理方法,其特征在于,所述方法包括: 第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存; 所述第一用戶(hù)對(duì)所述待處理報(bào)文進(jìn)行第一處理; 第一用戶(hù)將被第一處理后的所述待處理報(bào)文所在的所述報(bào)文緩存的地址通知給第二用戶(hù),將所述地址對(duì)應(yīng)的報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn); 第二用戶(hù)訪(fǎng)問(wèn)所述地址對(duì)應(yīng)的報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。
2.如權(quán)利要求1所述的緩存管理方法,其特征在于,第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,之前,還包括: 在所述第一用戶(hù)的私有隊(duì)列中的所有地址對(duì)應(yīng)的報(bào)文緩存被耗盡的情況下,向所述第一用戶(hù)的第一資源池申請(qǐng)報(bào)文緩存,所述第一資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第一用戶(hù)優(yōu)先使用的內(nèi)存空間; 在所述第一用戶(hù)的第一資源池中的所有地址對(duì)應(yīng)的報(bào)文緩存耗盡的情況下,與第二用戶(hù)的第二資源池進(jìn)行報(bào)文緩存交換,將所述第一資源池中的全部地址對(duì)應(yīng)的報(bào)文緩存空間和所述第二資源池中的 地址對(duì)應(yīng)的報(bào)文緩存空間進(jìn)行交換,所述第二用戶(hù)的第二資源池中的全部地址對(duì)應(yīng)的全部緩存處于可用狀態(tài)的,所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第二用戶(hù)優(yōu)先使用的內(nèi)存空間; 在不存在資源池中的全部報(bào)文緩存處于可用狀態(tài)的第二用戶(hù)的情況下,將所述待處理報(bào)文存儲(chǔ)在共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,所述共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存為全部用戶(hù)都能訪(fǎng)問(wèn)的無(wú)鎖隊(duì)列。
3.如權(quán)利要求1或2所述的緩存管理方法,其特征在于,還包括,在所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定閾值時(shí),將存放所述待處理報(bào)文的所述報(bào)文緩存釋放。
4.如權(quán)利要求3所述的緩存管理方法,其特征在于,在所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定閾值時(shí),將存放所述待處理報(bào)文的所述報(bào)文緩存釋放,具體為: 若所述第一用戶(hù)的私有隊(duì)列未達(dá)到設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的私有隊(duì)列; 若所述第一用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且第一用戶(hù)的資源池未達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的資源池中; 若所述第二用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且所述第一用戶(hù)的資源池已達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述共享隊(duì)列中。
5.如權(quán)利要求1至4中任意一項(xiàng)所述的緩存管理方法,其特征在于,第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,之前,還包括:創(chuàng)建共享隊(duì)列,并保存所述共享隊(duì)列的地址信息; 創(chuàng)建多個(gè)與每個(gè)用戶(hù)對(duì)應(yīng)的私有隊(duì)列,所述私有隊(duì)列根據(jù)所述共享隊(duì)列的地址信息和設(shè)定的私有隊(duì)列大小創(chuàng)建; 創(chuàng)建資源,所述資源池在所述共享隊(duì)列和所述私有隊(duì)列外的內(nèi)存空間中,與每個(gè)用戶(hù)對(duì)應(yīng)。
6.一種緩存管理裝置,其特征在于,所述裝置包括: 存儲(chǔ)單元,用于第一用戶(hù)將待處理報(bào)文存儲(chǔ)在分配給所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存中,并將所述地址移出所述私有隊(duì)列,只有第一用戶(hù)能夠訪(fǎng)問(wèn)所述第一用戶(hù)的私有隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存; 第一處理單元,用于所述第一用戶(hù)對(duì)所述待處理報(bào)文進(jìn)行第一處理; 控制單元,用于第一用戶(hù)將被第一處理后的所述待處理報(bào)文所在的所述報(bào)文緩存的地址通知給第二用戶(hù),將所述地址對(duì)應(yīng)的報(bào)文緩存的訪(fǎng)問(wèn)權(quán)限更改為只有第二用戶(hù)能夠訪(fǎng)問(wèn); 第二處理單元,用于第二用戶(hù)訪(fǎng)問(wèn)所述地址對(duì)應(yīng)的報(bào)文緩存,對(duì)所述待處理報(bào)文進(jìn)行第二處理。
7.如權(quán)利要求6所述的緩存管理裝置,其特征在于,所述存儲(chǔ)單元還用于: 在所述第一用戶(hù)的私有隊(duì)列中的所有地址對(duì)應(yīng)的報(bào)文緩存被耗盡的情況下,向所述第一用戶(hù)的第一資源池申請(qǐng)報(bào)文緩存,所述第一資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第一用戶(hù)優(yōu)先使用的內(nèi)存空間; 在所述第一用戶(hù)的第一資源池中的所有地址對(duì)應(yīng)的報(bào)文緩存耗盡的情況下,與第二用戶(hù)的第二資源池進(jìn)行報(bào)文緩存交換,將所述第一資源池中的全部地址對(duì)應(yīng)的報(bào)文緩存空間和所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存空間進(jìn)行交換,所述第二用戶(hù)的第二資源池中的全部地址對(duì)應(yīng)的全部緩存處于可用狀態(tài)的,所述第二資源池中的地址對(duì)應(yīng)的報(bào)文緩存為第二用戶(hù)優(yōu)先使用的內(nèi)存空間; 在不存在資源池中的全部報(bào)文緩存處于可用狀態(tài)的第二用戶(hù)的情況下,將所述待處理報(bào)文存儲(chǔ)在共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存,所述共享隊(duì)列中的地址對(duì)應(yīng)的報(bào)文緩存為全部用戶(hù)都能訪(fǎng)問(wèn)的無(wú)鎖隊(duì)列。
8.如權(quán)利要求6所述的緩存管理裝置,其特征在于,還包括,釋放單元,用于在所述第一用戶(hù)的私有隊(duì)列大小超過(guò)設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定閾值時(shí),將存放所述待處理報(bào)文的所述報(bào)文緩存釋放。
9.如權(quán)利要求8所述的緩存管理方法,其特征在于,所述釋放單元,具體用于: 若所述第一用戶(hù)的私有隊(duì)列未達(dá)到設(shè)定閾值或所述私有隊(duì)列中的可用報(bào)文緩存空間小于設(shè)定值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的私有隊(duì)列; 若所述第一用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且第一用戶(hù)的資源池未達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述第一用戶(hù)的資源池中; 若所述第二用戶(hù)的私有隊(duì)列已經(jīng)達(dá)到設(shè)定閾值,并且所述第一用戶(hù)的資源池已達(dá)到設(shè)定閾值,則將所述報(bào)文緩存的地址釋放到所述共享隊(duì)列中。
10.如權(quán)利要求6所述的緩存管理裝置,其特征在于,還包括創(chuàng)建單元,用于: 創(chuàng)建共享隊(duì)列,并保存所述共享隊(duì)列的地址信息;創(chuàng)建多個(gè)與每個(gè)用戶(hù)對(duì)應(yīng)的私有隊(duì)列,所述私有隊(duì)列根據(jù)所述共享隊(duì)列的地址信息和設(shè)定的私有隊(duì)列大小創(chuàng)建; 創(chuàng)建資源,所述資源池在所述共享隊(duì)列和所述私有隊(duì)列外的內(nèi)存空間中,與每個(gè)用戶(hù)對(duì)應(yīng)。
【文檔編號(hào)】G06F3/06GK103927123SQ201310013751
【公開(kāi)日】2014年7月16日 申請(qǐng)日期:2013年1月15日 優(yōu)先權(quán)日:2013年1月15日
【發(fā)明者】鄧軍軍, 徐永新 申請(qǐng)人:華為技術(shù)有限公司