一種減少linux下多進(jìn)程間數(shù)據(jù)拷貝的方法
【專利摘要】本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用【技術(shù)領(lǐng)域】,具體地說是一種減少linux下多進(jìn)程間數(shù)據(jù)拷貝的方法。包括步驟1:申請共享內(nèi)存組織;步驟2:將該共享內(nèi)存組織劃分成不同大小的內(nèi)存池,內(nèi)存池劃分成多個內(nèi)存塊;步驟3:進(jìn)程A申請某一內(nèi)存塊,使用標(biāo)識為占用標(biāo)識,該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)計(jì)為1,步驟4:每多一個進(jìn)程使用該內(nèi)存塊a中的數(shù)據(jù),用戶計(jì)數(shù)根據(jù)累加1,步驟5:每少一個進(jìn)程使用該內(nèi)存塊a中的數(shù)據(jù),用戶計(jì)數(shù)根據(jù)累減1,直至該用戶計(jì)數(shù)為零,使用標(biāo)識置為空閑標(biāo)識,則該內(nèi)存塊a歸還內(nèi)存池中;本發(fā)明的方法能夠?qū)崿F(xiàn)進(jìn)程間零拷貝的數(shù)據(jù)通訊;并且實(shí)現(xiàn)了一次數(shù)據(jù)的組織,不需要進(jìn)行數(shù)據(jù)的多次拷貝,就能直接被多個進(jìn)程使用。
【專利說明】—種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用【技術(shù)領(lǐng)域】,具體地說是一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法。
【背景技術(shù)】
[0002]Linux系統(tǒng)是基于虛擬內(nèi)存的系統(tǒng),其進(jìn)程空間是獨(dú)立的,互相不可見的,每個進(jìn)程獨(dú)立管理自己的內(nèi)存空間。進(jìn)程間數(shù)據(jù)交互需要通過消息隊(duì)列、共享內(nèi)存、管道、文件等方式,這些方法要么需要進(jìn)行數(shù)據(jù)的拷貝如消息隊(duì)列、管道等,甚至要多次進(jìn)行數(shù)據(jù)拷貝才能使得在一個進(jìn)程中組織的數(shù)據(jù)在另外一個進(jìn)程中可見,而且每多一個進(jìn)程使用數(shù)據(jù)就需要多一次數(shù)據(jù)的拷貝,效率較低;要么只能兩個進(jìn)程間共享數(shù)據(jù),如普通的共享內(nèi)存,其通常的用方法是,為每兩個進(jìn)程開辟一個內(nèi)存段作為共享內(nèi)存空間,來完成這兩個進(jìn)程間的通訊,這塊共享內(nèi)存不能被多個進(jìn)程復(fù)用,資源浪費(fèi)嚴(yán)重。這就需要一種方法既能夠?qū)崿F(xiàn)進(jìn)程間數(shù)據(jù)的高效交互,又能夠使得這塊內(nèi)存能夠被各個進(jìn)程共享。
【發(fā)明內(nèi)容】
[0003]解決上述技術(shù)問題,本發(fā)明提供了一種組織和管理共享內(nèi)存的方式,針對LINUX操作系統(tǒng),能夠?qū)崿F(xiàn)進(jìn)程間零拷貝的數(shù)據(jù)通訊;并且實(shí)現(xiàn)了一次數(shù)據(jù)的組織,不需要進(jìn)行數(shù)據(jù)的多次拷貝,就能直接被多個進(jìn)程使用。該方法不僅能用于進(jìn)程間通訊,進(jìn)程內(nèi)部各線程的通訊一樣可以支持,非常靈活高效。
[0004]為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是,一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,包括以下步驟:
步驟1:根據(jù)系統(tǒng)對數(shù)據(jù)的實(shí)際使用情況確定使用系統(tǒng)共享內(nèi)存的大小,并調(diào)用系統(tǒng)接口申請足夠大的共享內(nèi)存,定義為共享內(nèi)存組織;
步驟2:將該共享內(nèi)存組織劃分成不同大小的內(nèi)存池,每一內(nèi)存池由一個內(nèi)存頭和N個大小相同的內(nèi)存塊構(gòu)成,N為正整數(shù),該內(nèi)存頭用于存放每一內(nèi)存塊的使用標(biāo)識,N個內(nèi)存塊以數(shù)組的形式線性排列在內(nèi)存頭后,每一內(nèi)存塊包括頭部域、數(shù)據(jù)域和尾域,頭部域用于存放用戶計(jì)數(shù)、內(nèi)存類型、內(nèi)存塊索引和界定標(biāo)識;用戶數(shù)據(jù)域用于保存需要交互的數(shù)據(jù);尾域用于存放內(nèi)存的界定標(biāo)識,內(nèi)存塊的尾域用來對內(nèi)存進(jìn)行界定;
步驟3:應(yīng)用程序的進(jìn)程A申請某一內(nèi)存塊時(shí),從小到大依次查詢各內(nèi)存池中的各內(nèi)存塊,找到大小符合需求的內(nèi)存塊a,設(shè)置內(nèi)存頭中對應(yīng)該內(nèi)存塊a的使用標(biāo)識為占用標(biāo)識,將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)計(jì)清零,并向內(nèi)存a塊寫入待交互的數(shù)據(jù);
步驟4:進(jìn)程A將該內(nèi)存塊a中頭部域的內(nèi)存類型和內(nèi)存塊索引傳遞給目標(biāo)進(jìn)程D[i], (i=l,2,3……n,n為正整數(shù)),每多發(fā)送一個目標(biāo)進(jìn)程,進(jìn)程A將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)累加I;
步驟5:目標(biāo)進(jìn)程D[i]通過該內(nèi)存類型和內(nèi)存塊索引訪問到該內(nèi)存塊a,
步驟6:目標(biāo)進(jìn)程D [i]中,每減少一個目標(biāo)進(jìn)程使用該內(nèi)存塊a中數(shù)據(jù)域中的數(shù)據(jù)時(shí),則將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)累減1,直至該用戶計(jì)數(shù)為零,當(dāng)用戶計(jì)數(shù)減為零時(shí),設(shè)置內(nèi)存頭對應(yīng)于該內(nèi)存塊a的使用標(biāo)識為空閑標(biāo)識,把內(nèi)存塊釋放到內(nèi)存池中,以供
重復(fù)使用。
[0005]進(jìn)一步的,所述用戶數(shù)據(jù)域的大小為給內(nèi)存池大小的累加和。
[0006]進(jìn)一步的,步驟2中,所述內(nèi)存池中各內(nèi)存塊的內(nèi)存頭、頭域、用戶數(shù)據(jù)域、尾域均為4n字節(jié),當(dāng)任意字段字節(jié)數(shù)不足4n字節(jié)時(shí),則補(bǔ)充填充字段,使得滿足4n字節(jié)的大小空間,最大程度上提聞內(nèi)存讀與的效率。更進(jìn)一步的,每一內(nèi)存塊的內(nèi)存頭的頭部域大小為4字節(jié),用戶數(shù)據(jù)域的字節(jié)數(shù)由內(nèi)存池的類型決定,尾域中的界定標(biāo)識為I個字節(jié),填充字段為3個字節(jié)。
[0007]進(jìn)一步的,步驟2中,內(nèi)存池中的內(nèi)存頭存放有N個內(nèi)存塊的使用標(biāo)識,當(dāng)內(nèi)存頭占用的字節(jié)數(shù)不足4的倍數(shù),則內(nèi)存頭補(bǔ)充填充字段。
[0008]進(jìn)一步的,所述用戶數(shù)據(jù)域的大小為給內(nèi)存池大小的累加和。
[0009]進(jìn)一步的,步驟3中,應(yīng)用程序的進(jìn)程A申請到內(nèi)存塊a時(shí),將內(nèi)存塊a的數(shù)據(jù)域的首地址返回給申請者。
[0010]進(jìn)一步的,步驟6中,當(dāng)進(jìn)程不再使用該內(nèi)存塊a時(shí),則通過把待釋放的指針減去一個固定的頭域大小,即可得到所使用內(nèi)存的信息——內(nèi)存所屬的內(nèi)存池、內(nèi)存的使用計(jì)數(shù),把內(nèi)存的使用計(jì)數(shù)減一,如果為零,則說明說有使用該內(nèi)存的用戶都已經(jīng)釋放了,則把該內(nèi)存塊歸還的內(nèi)存池中;否則,直接返回。
[0011]進(jìn)一步的,所述頭域和尾域中的界定標(biāo)識為特定的字符,在申請和釋放內(nèi)存時(shí)進(jìn)行內(nèi)存越界的檢查,以識別內(nèi)存操作問題。
[0012]本發(fā)明通過采用上述技術(shù)方案,與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn):
1、本發(fā)明充分考慮了數(shù)據(jù)操作的效率,設(shè)定該內(nèi)存頭、頭部域、數(shù)據(jù)域和尾域的大小滿足4n字節(jié),η為正整數(shù),保證申請內(nèi)存的4字節(jié)對齊,保證了操作系統(tǒng)對數(shù)據(jù)訪問的時(shí)候,實(shí)現(xiàn)地址的4字節(jié)對齊的,進(jìn)而實(shí)現(xiàn)對整型數(shù)據(jù)的快速訪問;
2、本發(fā)明使用數(shù)組的方式進(jìn)行內(nèi)存池的管理,每一內(nèi)存池由一個內(nèi)存頭和N個大小相同的內(nèi)存塊構(gòu)成,N為正整數(shù),內(nèi)存塊索引存放了該內(nèi)存塊在內(nèi)存池中數(shù)組中所排列的位置,即內(nèi)存塊索引為N,則表示該內(nèi)存塊為內(nèi)存池中的第N塊內(nèi)存,無需內(nèi)存塊鏈表式的插入和取出,快速便捷;
3、本發(fā)明對頭尾界定符使用固定的字符標(biāo)識越界情況,在申請和釋放時(shí)進(jìn)行判斷,防止內(nèi)存的越界;在申請的時(shí)候,把頭尾界定符設(shè)置為指定的字符,在釋放的時(shí)候?qū)Υ诉M(jìn)行檢查,如果界定符不是該字符,說明內(nèi)存越界了,能夠快速跟蹤分析到該系統(tǒng)異常問題;
4、本發(fā)明通過使用標(biāo)識,指示內(nèi)存的使用情況,實(shí)現(xiàn)單用戶申請,多用戶使用,特別適合于分發(fā)類數(shù)據(jù)傳遞情況;
5、本發(fā)明建立在共享內(nèi)存的基礎(chǔ)上,共享內(nèi)存本身是多進(jìn)程都可見的,采用內(nèi)存池劃分為同樣大小N個內(nèi)存塊的集合,在整個系統(tǒng)的運(yùn)行過程中形成了系統(tǒng)化,組織化和通用化,使得目標(biāo)進(jìn)程能夠靈活易用,滿足了多進(jìn)程頻繁大批量數(shù)據(jù)交互,無需各進(jìn)程之間進(jìn)行拷貝,極大地提高了系統(tǒng)的效率。
【專利附圖】
【附圖說明】[0013]圖1是本發(fā)明的實(shí)施例的共享內(nèi)存組織結(jié)構(gòu)圖;
圖2是本發(fā)明的實(shí)施例的應(yīng)用場景示意圖;
圖3是本發(fā)明的實(shí)施例的內(nèi)存申請示意圖;
圖4是本發(fā)明的實(shí)施例的內(nèi)存釋放示意圖;
圖5是本發(fā)明的實(shí)施例的內(nèi)存檢索示意圖。
【具體實(shí)施方式】
[0014]現(xiàn)結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明進(jìn)一步說明。
[0015]作為一個具體的實(shí)施例,本發(fā)明的一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,包括以下步驟:
步驟1:劃分共享內(nèi)存,定義為共享內(nèi)存組織;
步驟2:參考圖1所示,將該共享內(nèi)存組織劃分成不同大小的η個內(nèi)存池,每一內(nèi)存池由一個內(nèi)存頭和N個大小相同的內(nèi)存塊構(gòu)成,N為正整數(shù),不同內(nèi)存池間的內(nèi)存塊大小不同,該內(nèi)存頭用于存放每一內(nèi)存塊的使用標(biāo)識,N個內(nèi)存塊以數(shù)組的形式線性排列在內(nèi)存頭后,每一內(nèi)存塊包括頭部域、數(shù)據(jù)域和尾域,頭部域用于存放用戶計(jì)數(shù)、內(nèi)存類型、內(nèi)存塊索引和界定標(biāo)識;用戶數(shù)據(jù)域用于保存需要交互的數(shù)據(jù);尾域用于存放內(nèi)存的界定標(biāo)識,內(nèi)存塊的尾域用來對對內(nèi)存進(jìn)行界定,在申請和釋放時(shí)進(jìn)行檢查,防止內(nèi)存使用的越界,利于檢查內(nèi)存的泄露。所述內(nèi)存頭、頭部域、數(shù)據(jù)域和尾域的大小滿足4η字節(jié),η為正整數(shù)。所述用戶數(shù)據(jù)域的大小依據(jù)該內(nèi)存池的劃分的空間以及內(nèi)存池的類型來劃分,同一內(nèi)存池中的N個內(nèi)存塊的用戶數(shù)據(jù)域的大小相同。所述尾域中的界定標(biāo)識為I個字節(jié),填充字段為3個字節(jié)。每一內(nèi)存池中的內(nèi)存頭存放有N個內(nèi)存塊的使用標(biāo)識,當(dāng)內(nèi)存頭占用的字節(jié)數(shù)不足4η字節(jié),則在內(nèi)存頭中補(bǔ)充填充字段,使得滿足4η字節(jié)的大小空間。
[0016]步驟3:應(yīng)用程序的進(jìn)程A申請某一內(nèi)存塊時(shí),根據(jù)申請內(nèi)存的大小,從小到大查詢依次查詢各內(nèi)存池中的各內(nèi)存塊,找到大小符合需求的內(nèi)存塊a,該查詢方式包括:從小到大查詢依次查詢各內(nèi)存池,首先找到數(shù)據(jù)域大于該申請內(nèi)存大小的的內(nèi)存池,然后在該內(nèi)存池中找空閑的內(nèi)存塊,如果找不到則繼續(xù)輪詢下一個內(nèi)存池,直到找到大小符合需求的內(nèi)存塊a,該內(nèi)存塊a即為查找到的第一個滿足需求的最小的內(nèi)存塊,若找不到滿足需求的內(nèi)存塊,則返回失敗。
[0017]找到大小符合需求的內(nèi)存塊a后,設(shè)置內(nèi)存頭中對應(yīng)該內(nèi)存塊a的使用標(biāo)識為占用標(biāo)識,將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)計(jì)清零,并向內(nèi)存塊a的用戶數(shù)據(jù)域?qū)懭霐?shù)據(jù);
步驟4:進(jìn)程A將該內(nèi)存塊a頭部域內(nèi)存類型和內(nèi)存塊索引傳遞給目標(biāo)進(jìn)程D[i], (i=l,2,3……n,n為正整數(shù)),每多發(fā)送一個目標(biāo)進(jìn)程,進(jìn)程A將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)累加I ;
步驟5:目標(biāo)進(jìn)程D[i]通過該內(nèi)存類型和內(nèi)存塊索引訪問到該內(nèi)存塊a,再根據(jù)內(nèi)存塊a的構(gòu)成找到用戶數(shù)據(jù)的地址,通過該地址操作數(shù)據(jù)域,即可獲得進(jìn)程A存入內(nèi)存a的數(shù)據(jù),無需進(jìn)行進(jìn)程A與目標(biāo)進(jìn)程D[i]之間的數(shù)據(jù)拷貝,
步驟6:目標(biāo)進(jìn)程D[i]中,每減少一個目標(biāo)進(jìn)程使用該內(nèi)存塊a中數(shù)據(jù)域中的數(shù)據(jù)時(shí),則將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)累減1,直至該用戶計(jì)數(shù)為零,設(shè)置內(nèi)存頭對應(yīng)于該內(nèi)存塊a的使用標(biāo)識為空閑標(biāo)識,此時(shí)該內(nèi)存塊a成為了內(nèi)存池中空閑的內(nèi)存塊,可以供其它進(jìn)程使用。
[0018]本方案中使用數(shù)組的方式進(jìn)行內(nèi)存池的管理,無需內(nèi)存塊鏈表式的插入和取出;由于每一內(nèi)存池由一個內(nèi)存頭和N個大小相同的內(nèi)存塊構(gòu)成,N為正整數(shù),內(nèi)存塊索引存放了該內(nèi)存塊在內(nèi)存池中數(shù)組中所排列的位置,即內(nèi)存塊索引為N,則表示該內(nèi)存塊為內(nèi)存池中的第N塊內(nèi)存。
[0019]本實(shí)施例將頭尾界定符使用固定的字符標(biāo)識越界情況,在申請和釋放時(shí)進(jìn)行判斷,防止內(nèi)存的越界;頭尾界定符用來在申請內(nèi)存和釋放內(nèi)存的時(shí)候?qū)?nèi)存的頭部和尾部進(jìn)行界定,在申請的時(shí)候,把頭尾界定符設(shè)置為指定的字符‘M’,在釋放的時(shí)候?qū)Υ诉M(jìn)行檢查,如果界定符不是‘M’字符,說明內(nèi)存越界了,系統(tǒng)拋出異常,用戶可以據(jù)此分析出問題的點(diǎn)。由于內(nèi)存越界不是容易察覺的情況,一般內(nèi)存越界不會立即出現(xiàn)異常,等出現(xiàn)異常的時(shí)候,已經(jīng)很難知道什么時(shí)候出現(xiàn)的問題了,因此使用界定符,在釋放的時(shí)候?qū)Υ诉M(jìn)行檢查,使得用戶能夠及時(shí)的發(fā)現(xiàn)出問題的點(diǎn),可以據(jù)此來進(jìn)行跟蹤分析找到問題。
[0020]本實(shí)施例通過使用標(biāo)識,指示內(nèi)存的使用情況,實(shí)現(xiàn)單用戶申請,多用戶使用,特別適合于分發(fā)類數(shù)據(jù)傳遞情況;
本發(fā)明建立在共享內(nèi)存的基礎(chǔ)上,共享內(nèi)存本身是多進(jìn)程都可見的,采用內(nèi)存池劃分為同樣大小N個內(nèi)存塊的集合,在整個系統(tǒng)的運(yùn)行過程中形成了系統(tǒng)化,組織化和通用化,使得目標(biāo)進(jìn)程能夠靈活易用,滿足了多進(jìn)程頻繁大批量數(shù)據(jù)交互,無需各進(jìn)程之間進(jìn)行拷貝,極大地提高了系統(tǒng)的效率。
[0021]參考圖2和圖3所示,在一個【具體實(shí)施方式】中,預(yù)先建立4個內(nèi)存池共,各內(nèi)存池包含的內(nèi)存塊的大小和內(nèi)存塊的個數(shù)定義如下:第一內(nèi)存池,包含50個內(nèi)存塊,每個內(nèi)存塊的大小為100字節(jié);第二內(nèi)存池,包含50個內(nèi)存塊,每個內(nèi)存塊的大小為512字節(jié);第三內(nèi)存池,包含100個內(nèi)存塊,每個內(nèi)存塊的大小為1024字節(jié);第四內(nèi)存組,包含100個內(nèi)存塊,每個內(nèi)存塊的大小為10240字節(jié)。各內(nèi)存池按從小到大的順序排列在共享內(nèi)存中,那么需要申請的共享內(nèi)存大小為52 (內(nèi)存頭)+50* (100 (用戶數(shù)據(jù)字段)+ 4 (頭域)+ 4 (尾域))+52+50* (512+4+4)) +100+100* (1024+4+4) +100+100* (10240+4+4) =1159704 (字節(jié))。
[0022]數(shù)值和內(nèi)存池中用戶數(shù)據(jù)大小的映射關(guān)系如下
【權(quán)利要求】
1.一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,其特征在于:包括以下步驟: 步驟1:劃分共享內(nèi)存,定義為共享內(nèi)存組織; 步驟2:將該共享內(nèi)存組織劃分成不同大小的內(nèi)存池,每一內(nèi)存池由一個內(nèi)存頭和N個大小相同的內(nèi)存塊構(gòu)成,N為正整數(shù),該內(nèi)存頭用于存放每一內(nèi)存塊的使用標(biāo)識,N個內(nèi)存塊以數(shù)組的形式線性排列在內(nèi)存頭后,每一內(nèi)存塊包括頭部域、用戶數(shù)據(jù)域和尾域,頭部域用于存放用戶計(jì)數(shù)、內(nèi)存類型、內(nèi)存塊索引和界定標(biāo)識;用戶數(shù)據(jù)域用于保存需要交互的數(shù)據(jù);尾域用于存放內(nèi)存的界定標(biāo)識,內(nèi)存塊的尾域用來對內(nèi)存進(jìn)行界定; 步驟3:應(yīng)用程序的進(jìn)程A申請某一內(nèi)存塊時(shí),從小到大依次查詢各內(nèi)存池中的各內(nèi)存塊,找到大小符合需求的內(nèi)存塊a,設(shè)置內(nèi)存頭中對應(yīng)該內(nèi)存塊a的使用標(biāo)識為占用標(biāo)識,將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)計(jì)清零,并向內(nèi)存a塊寫入待交互的數(shù)據(jù); 步驟4:進(jìn)程A將該內(nèi)存塊a中頭部域的內(nèi)存類型和內(nèi)存塊索引傳遞給目標(biāo)進(jìn)程D[i], (i=l,2,3……n,n為正整數(shù)),每多發(fā)送一個目標(biāo)進(jìn)程,進(jìn)程A將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)累加I1; 步驟5:目標(biāo)進(jìn)程D[i]通過該內(nèi)存類型和內(nèi)存塊索引訪問到該內(nèi)存塊a, 步驟6:目標(biāo)進(jìn)程D [i]中,每減少一個目標(biāo)進(jìn)程使用該內(nèi)存塊a中數(shù)據(jù)域中的數(shù)據(jù)時(shí),則將該內(nèi)存塊a的頭部域中的用戶計(jì)數(shù)累減1,直至該用戶計(jì)數(shù)為零,當(dāng)用戶計(jì)數(shù)減為零時(shí),設(shè)置內(nèi)存頭對應(yīng)于該內(nèi)存塊a的使用標(biāo)識為空閑標(biāo)識,把內(nèi)存塊釋放到內(nèi)存池中,以供重復(fù)使用。
2.根據(jù)權(quán)利要求1所述的一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,其特征在于:步驟2中,N為正整數(shù)。
3.根據(jù)權(quán)利要求1所述的一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,其特征在于:步驟2中,所述內(nèi)存池中各內(nèi)存塊的內(nèi)存頭、頭域、用戶數(shù)據(jù)域、尾域均為4n字節(jié),當(dāng)任意字段字節(jié)數(shù)不足4n字節(jié)時(shí),則補(bǔ)充填充字段,使其滿足4n字節(jié)的大小空間。
4.根據(jù)權(quán)利要求3所述的一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,其特征在于:每一內(nèi)存塊的內(nèi)存頭的頭部域大小為4字節(jié),用戶數(shù)據(jù)字段的字節(jié)數(shù)由內(nèi)存池的類型決定,尾域中的界定標(biāo)識為I個字節(jié),填充字段為3個字節(jié)。
5.根據(jù)權(quán)利要求1所述的一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,其特征在于:步驟2中,內(nèi)存池中的內(nèi)存頭存放有N個內(nèi)存塊的使用標(biāo)識,當(dāng)內(nèi)存頭占用的字節(jié)數(shù)不足4的倍數(shù),則內(nèi)存頭補(bǔ)充填充字段。
6.根據(jù)權(quán)利要求1所述的一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,其特征在于:步驟3中,應(yīng)用程序的進(jìn)程A申請到內(nèi)存塊a時(shí),將內(nèi)存塊a的數(shù)據(jù)域的首地址返回給申請者。
7.根據(jù)權(quán)利要求1所述的一種減少Iinux下多進(jìn)程間數(shù)據(jù)拷貝的方法,其特征在于:步驟6中,當(dāng)進(jìn)程不再使用該內(nèi)存塊a時(shí),則通過把待釋放的指針減去一個固定的頭域大小,得到所使用內(nèi)存的信息,該信息包括:內(nèi)存所屬的內(nèi)存池和內(nèi)存的使用計(jì)數(shù),再將內(nèi)存的使用計(jì)數(shù)減一,如果該內(nèi)存的使用技術(shù)為零,則把該內(nèi)存塊歸還的內(nèi)存池中;否則,直接返回。
【文檔編號】G06F3/06GK103838859SQ201410100323
【公開日】2014年6月4日 申請日期:2014年3月19日 優(yōu)先權(quán)日:2014年3月19日
【發(fā)明者】任賦, 陳從華, 鄭福弟, 李培明, 黃杭星, 范少卓 申請人:廈門雅迅網(wǎng)絡(luò)股份有限公司