[發明專利]一種基于共享內存的內存碎片分配方法和裝置在審
| 申請號: | 201410401240.2 | 申請日: | 2014-08-14 |
| 公開(公告)號: | CN104199781A | 公開(公告)日: | 2014-12-10 |
| 發明(設計)人: | 熊劍 | 申請(專利權)人: | 深圳百科信息技術有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02 |
| 代理公司: | 無 | 代理人: | 無 |
| 地址: | 518057 廣東省深圳市南山*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 共享 內存 碎片 分配 方法 裝置 | ||
1.一種基于共享內存的內存碎片分配方法,其特征在于,所述方法包括以下步驟:
根據待存儲消息的消息長L,從頭至尾遍歷空閑碎片鏈表,查找碎片總長大于“碎片頭長度+L”的空閑內存碎片;
判斷是否找到碎片總長大于“碎片頭長度+L”的空閑內存碎片,若沒有找到碎片總長大于“碎片頭長度+L”的空閑內存碎片,則將相鄰空閑內存碎片進行重組,返回步驟“根據待存儲消息的消息長L,從頭至尾遍歷空閑碎片鏈表,查找碎片總長大于“碎片頭長度+L”的空閑內存碎片”;
若找到碎片總長大于“碎片頭長度+L”的空閑內存碎片,則
判斷是否所述空閑內存碎片的碎片總長大于“L+兩個碎片頭長”,若是,則將所述空閑內存碎片從空閑鏈表中移除,將其分裂成兩個內存碎片,前一長度為“碎片頭長度+L”的內存碎片,在更新碎片頭結構后設為待分配內存碎片,將其插入到已用碎片鏈表的鏈尾;后一長度為“所述碎片總長-碎片頭長度-L”的內存碎片,在設置碎片頭結構后插入空閑碎片鏈表尾部;否則直接將所述空閑碎片從空閑碎片鏈表中移除,并將其插入到已用碎片鏈表尾部。
2.如權利要求1所述的基于共享內存的內存碎片分配方法,其特征在于,所述將相鄰空閑內存碎片進行重組的方法具體為
將內容區的首地址設置為遍歷的開始地址;
遍歷內容區,查找相鄰的兩個空閑內存碎片;
若找到相鄰的兩個空閑內存碎片,則將所述相鄰的兩個空閑內存碎片從空閑內存鏈表中移除,然后合并,再添加到空閑碎片鏈表的表頭,接著將遍歷的開始地址設置為合并后的空閑內存碎片的下一物理地址,返回步驟“遍歷內容區,查找相鄰的兩個空閑內存碎片”;否則返回步驟“將內容區的首地址設置為遍歷的開始地址”。
3.如權利要求2所述的基于共享內存的內存碎片分配方法,其特征在于,
合并所述相鄰的兩個空閑內存碎片的方法為:
首先,將相鄰空閑內存碎片中的“前一內存碎片的碎片實體+后一內存碎片的碎片頭+后一內存碎片的碎片實體”作為合并后的空閑內存碎片的碎片實體;
然后,相應修改前一內存碎片的碎片頭中的碎片長度、前一碎片指針、后一碎片指針字段;
最后,將修改后的前一內存碎片的碎片頭和合并后的空閑內存碎片的碎片實體相結合,形成合并后的空閑內存碎片。
4.如權利要求2所述的基于共享內存的內存碎片分配方法,其特征在于,
所述分裂成兩個內存碎片的方法具體為:
將分裂后的前一內存碎片的碎片實體長度設置為L,其碎片實體承載所述待存儲消息,相應修改分裂后的前一內存碎片的碎片頭中的碎片總長、已用長度、前一碎片指針、后一碎片指針、使用狀態字段,將修改后的分裂后的前一內存碎片的碎片頭和碎片實體相結合,形成新的已用內存碎片。
將分裂后的后一內存碎片的碎片實體長度為設置為“分裂前的碎片總長-碎片頭長度-L”,其碎片實體承載內容為空,相應設置分裂后的后一內存碎片的碎片頭中的碎片總長、已用長度、前一碎片指針、后一碎片指針、使用狀態字段,將修改后的分裂后的后一內存碎片的碎片頭和碎片實體相結合,形成新的空閑內存碎片。
5.如權利要求1-4中任意一項權利要求所述的基于共享內存的內存碎片分配方法,其特征在于,
內存碎片包括碎片頭和碎片實體;
碎片實體為實際分配的內存,是消息存儲的載體,一個碎片實體中承載一個消息;
碎片頭包含碎片總長、已用長度、前一碎片指針、后一碎片指針、使用狀態5個字段;
碎片總長為每個內存碎片的“碎片頭長度+碎片實體的長度”;
已用長度為每個內存碎片中的“消息頭的長度+消息體的長度”;
使用狀態包括空閑和已用兩種狀態;
前一碎片指針用于指明在所屬的碎片鏈表中,當前內存碎片的前一個內存碎片,若當前內存碎片為鏈表的表頭,則前一碎片指針指向其本身;
后一碎片指針用于指明在所屬的碎片鏈表中,當前內存碎片的后一個內存碎片,若當前內存碎片為鏈表的表尾,則后一碎片指針指向其本身;
消息包括消息頭和消息體;消息頭包括消息長、和IO句柄字段,所述IO句柄用于指引消息的回游;消息體是消息的具體內容。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳百科信息技術有限公司;,未經深圳百科信息技術有限公司;許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410401240.2/1.html,轉載請聲明來源鉆瓜專利網。





