[發明專利]一種嵌入式系統內存管理方法有效
| 申請號: | 201711379808.5 | 申請日: | 2017-12-20 |
| 公開(公告)號: | CN108121603B | 公開(公告)日: | 2021-11-02 |
| 發明(設計)人: | 劉東棟 | 申請(專利權)人: | 安徽皖通郵電股份有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 北京科億知識產權代理事務所(普通合伙) 11350 | 代理人: | 湯東鳳 |
| 地址: | 230000 *** | 國省代碼: | 安徽;34 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 嵌入式 系統 內存 管理 方法 | ||
1.一種嵌入式系統內存管理方法,其特征在于:包括如下步驟:
步驟1:集中申請、集中釋放;每次集中申請一個批量的大小相等的小片內存給協議進程使用,同樣,協議進程需要釋放內存時也是一個批量集中釋放回動態內存,同時通過建立一個索引號與管理結構一一對應的索引表的方式實現多個協議進程能夠同時批量申請內存;
步驟2:通過配置生成一個內存緩沖池,防止管理結構直接從動態內存中去申請小塊內存;批量內存申請方式申請內存池POOL并不是從動態內存中直接申請,而是先從動態內存中申請一個大塊內存池BLOCK,大小為64K或者更大,一個BLOCK有若干個大小相等的小內存池POOL,一個POOL包含了若干個小片內存UINT,這樣一個POOL就是一批內存,作為一個整體被內存批量申請管理結構申請和釋放,由于每個POOL的大小是一致的,不同index類型的批量內存申請應用都可以從這個大塊內存中申請POOL;初始化的時候從動態內存中申請一大塊地址連續的內存,專門供批量內存申請使用,這N個BLOCK稱之為靜態的BLOCK,靜態的BLOCK永遠不釋放到動態內存中去;當靜態的內存使用完了才會從動態內存中去申請一個BLOCK,稱為動態的BLOCK,動態的BLOCK在整個都空閑的時候會釋放回動態內存,這樣相當于在批量內存申請管理結構和動態內存之間作了一個緩沖;BLOCK內存池之間通過雙向鏈表的方式連接在一起,并定義一個塊管理結構來管理,塊管理結構用于管理BLOCK的申請、釋放和統計工作;
步驟3:對批量內存池采用隊列化的管理;
步驟4:對程序異常導致的內存壞塊做容錯處理,對被破壞的內存塊進行隔離,避免錯誤的內存影響正常的內存申請和釋放,被隔離的壞塊最終能夠被釋放會緩沖池,繼續利用。
2.根據權利要求1所述的嵌入式系統內存管理方法,其特征在于:所述步驟1還包括:
步驟11:根據各個業務內存使用大小類和數量別初始化批量內存管理索引結構;
步驟12:批量內存管理索引結構下初始化定制大小的內存塊,內存塊的大小可以根據實際使用需求確定,通過初始化參數傳入。
3.根據權利要求2所述的嵌入式系統內存管理方法,其特征在于:所述步驟2還包括:
步驟21:根據業務使用內存大小,在內存塊中劃分確定大小的內存池,內存池的劃分要根據業務批量申請和釋放的特點來進行,盡量避免塊內碎片和內存浪費。
4.根據權利要求3所述的嵌入式系統內存管理方法,其特征在于:所述步驟3還包括:
步驟31:當業務需要申請內存時,就根據業務初始化時得到的內存管理索引句柄,從內存池中劃分出內存單元塊返回給使用者,內存池使用隊列管理這些內存單元,分為空閑和使用狀態兩個隊列,當所有的內存單元都處于空閑狀態時,所屬的內存池就處于空閑狀態,可以釋放回所屬內存塊隊列中,當動態內存塊中所有的內存池都空閑時就釋放回系統內存池中,如果是靜態內存塊,就處于空閑狀態,等待其他業務初始化批量內存時使用。
5.根據權利要求4所述的嵌入式系統內存管理方法,其特征在于:所述步驟21中內存池分為三種狀態:滿隊列、可用隊列和空隊列,根據步驟4中的內存單元使用情況使內存池處于某種狀態的隊列中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于安徽皖通郵電股份有限公司,未經安徽皖通郵電股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711379808.5/1.html,轉載請聲明來源鉆瓜專利網。





