[發明專利]一種內存池管理方法及裝置有效
| 申請號: | 201110210425.1 | 申請日: | 2011-07-26 |
| 公開(公告)號: | CN102253897A | 公開(公告)日: | 2011-11-23 |
| 發明(設計)人: | 韓耕 | 申請(專利權)人: | 大唐移動通信設備有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02;G06F12/08 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 劉松 |
| 地址: | 100083*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 內存 管理 方法 裝置 | ||
1.一種內存池管理方法,其特征在于,包括:
需要在內存池中分配內存時,確定上次被分配的內存塊所在的子池內是否有空閑內存塊,其中內存池被劃分為多個子池,各子池包括數量相等個內存塊;
若有,則將所述子池內的空閑內存塊進行分配;
若無,則通過從上至下查找多級位圖逐級縮小查找范圍,查找一個空閑子池并分配內存塊,其中每級位圖包括多個比特值,最低級位圖的每個比特值指示內存塊的使用情況,上級位圖的每個比特值,對應地指示下級位圖中多個比特值所涉及的內存塊的整體使用情況;
根據所分配的內存塊的位置,對應更新所述多級位圖中的比特值。
2.如權利要求1所述的方法,其特征在于,內存池中內存塊的索引連續編號,定義一個全局索引Block_Index,通過Block_Index記錄上次所分配的內存塊在內存池中索引相關信息,根據Block_Index確定上次所分配的內存塊所在的子池是否有空閑內存塊。
3.如權利要求2所述的方法,其特征在于,內存池中第一個內存塊的索引為0,初始時,Block_Index初始化為零;
內存分配時,確定Block_Index1索引的內存塊不是子池的第一個內存塊時,確定上次被分配的內存塊所在的子池內有空閑內存塊,并將Block_Index1索引的內存塊進行分配,分配后將當前Block_Index加1;
確定Block_Index1索引的內存塊為子池的第一個內存塊時,通過從上至下查找多級位圖逐級縮小查找范圍,查找一個所有內存塊為空閑的空閑子池,并將空閑子池內的第一個內存塊進行分配,分配完內存塊之后,將所分配的內存塊在整個內存池中的索引加1并賦值給Block_Index。
4.如權利要求2所述的方法,其特征在于,所述各子池中內存塊的數量等于內存池管理執行主體的處理機位數N,同一上級位圖的每個比特值,對應地指示下級位圖中N個比特值所涉及的內存塊的整體使用情況。
5.如權利要求4所述的方法,其特征在于,每一級位圖中的比特值存儲在長度為N的數組中,在數組長度大于位圖中比特值個數時,將數組中除位圖中比特值外的其余比特值設置為無效。
6.如權利要求5所述的方法,其特征在于,所述N為32。
7.如權利要求5所述的方法,其特征在于,所述多級位圖為三級位圖,第一級位圖BITMAP1的每個比特值指示內存塊的使用情況,第二級位圖BITMAP2的每個比特值指示每個子池的整體使用情況,第三級位圖BITMAP3的每個比特值指示包括多個子池的子池群整體使用情況。
8.如權利要求7所述的方法,其特征在于,
內存塊被使用時,BITMAP1中對應的比特值指示占用,否則指示空閑;
子池中任一內存塊在BITMAP1中對應的比特值指示占用時,該子池在BITMAP2中對應的比特值指示占用,否則指示空閑;
子池群中所有子池在BITMAP2對應的比特值指示占用時,則該子池群在BITMAP3中對應的比特值指示占用,否則指示空閑。
9.如權利要求8所述的方法,其特征在于,確定上次被分配的內存塊所在的子池內沒有空閑內存塊,查找一個空閑子池,具體包括:
查找BITMAP3中第一個指示空閑的比特值,根據查找到的比特值在BITMAP3中的索引A1,查找存儲BITMAP2中比特值的第A1個數組;
查找第A1個數組中第一個指示空閑的比特值,根據查找到的比特值在BITMAP2中的索引A2,查找存儲BITMAP1中比特值的第A2個數組;
在第A2個數組中的所有比特值指示空閑時,確定找到空閑子池,將該子池的第一個空閑塊進行分配,并更新Block_Index的值。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于大唐移動通信設備有限公司,未經大唐移動通信設備有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110210425.1/1.html,轉載請聲明來源鉆瓜專利網。





