[發明專利]一種多進程系統中的內存管理方法及裝置有效
| 申請號: | 201310338075.6 | 申請日: | 2013-08-05 |
| 公開(公告)號: | CN103425592A | 公開(公告)日: | 2013-12-04 |
| 發明(設計)人: | 楊煥軍;王雪平 | 申請(專利權)人: | 大唐移動通信設備有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02;G06F9/44 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 朱佳 |
| 地址: | 100083*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 進程 系統 中的 內存 管理 方法 裝置 | ||
技術領域
本發明涉及內存管理技術,特別涉及一種多進程系統中的內存管理方法及裝置。
背景技術
在操作系統中,當運行軟件產品時,通常會涉及對內存的操作。早期的操作系統中,由軟件模塊直接對操作系統進行內存的申請和釋放,這樣長期運行會在操作系統內產生內存碎片從而導致后續申請內存失敗。為了避免這種情況,添加了內存管理模塊,內存管理模塊在操作系統之上封裝一層內存管理,內存管理模塊初始化時根據配置的內存塊規格、內存塊數量從操作系統申請內存創建內存池(即內存塊的管理集合)。軟件模塊申請內存時直接從內存池申請,軟件模塊釋放內存時將內存釋放到內存池。
采用內存池方式,是通過預先配置一定數目的內存塊,并對這些內存塊進行管理,解決了頻繁向系統申請、釋放內存的問題。具體實現方式如下。
參閱圖1所示,圖1中介紹的是通用的內存管理模式,每個單板部署多個進程,每個進程部署一個內存管理模塊,每一個內存管理模塊均會針對自身管理的進程建立相應的內存池。
參閱圖2所示,以任意一個內存管理模塊為例,內存管理模塊根據配置的內存塊的規格以及內存塊的數量從操作系統申請內存,創建內存空間形成內存池,每種內存塊在內存池中的結構如圖2所示,其實現方式如下:
如圖2所示,每個內存塊分為管理區,內存區(即buffer區)和隔離區,其中,內存區為有效的內存存放空間。內存管理模塊可以通過空閑鏈表和忙鏈表對內存塊進行管理,例如,內存管理模塊在初始化時將內存塊插入空閑鏈表中,應用模塊申請內存時,將分配的內存塊從空閑鏈表中刪除,插入忙鏈表中;相應的,當應用模塊釋放內存時,將釋放的內存塊從忙鏈表中刪除,并插入空閑鏈表中。
然而,現有技術下,采用上述方式進行內存管理卻會存在以下問題:
(1)每一個內存管理模塊均會根據初始配置的內存塊的規格和內存塊的數量創建相應的內存池,但是,由于系統整體內存有限,因此,在每一個內存池中,內存塊的規格不能窮舉,那么,在某一個內存池中,如果沒有配置某個內存塊的規格,那么軟件模塊在申請內存時會申請失敗。
(2)由于系統內存是在多個內存池之間分配,因此,每一個內存池中分配到的內存塊的規格和數量均有限,而當內存池中的內存塊數量不足時,還需要繼續從操作系統中申請內存,而從操作系統中申請內存還需調用相應的函數,此過程更為復雜和費時。
(3)軟件模塊在內存塊使用完成后會將內存塊釋放,釋放后的內存塊存在于內存池中并不會釋放到操作系統中。這樣,若某一軟件模塊申請了很多內存塊,并在使用完成后將這些內存塊均釋放到自身的內存池中,那么,會令操作系統可使用的內存變少,從而令其他進程無內存塊可使用,進而造成各進程之間忙閑不均的問題。
(4)對于支持多進程的操作系統(如Linux,Unix等等),每個進程都有一套內存管理機制,即每個進程均對應一個內存管理模塊,每一個內存管理針對自身管理的進程分別建立和維護相應的內存池;而每個進程的功能不同,每個進程使用內存塊的規格、內存塊的數量不盡相同,各個內存管理模塊需要針對相應進程分別在對應的內存池中配置內存塊,這一過程非常繁瑣,需要分別考慮每一個進程需要使用哪種規格的內存塊,并分別進行申請,還需要考慮配置的內存總量不能超過系統總的物理內存。
(5)某一個進程申請的內存塊被釋放后,如果釋放的內存塊在這個進程的空閑鏈表中長期不使用,那么,其他進程便無法使用此內存塊,這將會造成空閑內存塊的浪費。
(6)某一個進程出現故障并重啟后,如果按照內存配置信息申請內存塊,可能存在其他進程申請內存塊過多從而導致本進程申請內存塊失敗的情況。
發明內容
本發明實施例提供一種多進程系統中的內存管理方法及裝置,用以優化系統內的內存管理方式,提高內存利用率以及提高內存分配成功率。
本發明實施例提供的具體技術方案如下:
一種多進程系統中的內存管理方法,包括:
在初始配置階段,創建共享內存池,并按照預設的內存配置信息在所述共享內存池中進行內存塊規劃;
接收到內存調用指令時,選取一進程,并通過所述一進程在所述共享內存池中申請符合內存調用指令的相應規格的內存塊,以及對應所述相應規格的內存塊記錄所述一進程的標識信息和互斥信號量,其中,所述互斥信號量用于表示某一規格的內存塊當前已被占用且不能再被其他進程申請。
優選的,創建共享內存池,并按照預設的內存配置信息在所述共享內存池中進行內存塊規劃,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于大唐移動通信設備有限公司,未經大唐移動通信設備有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310338075.6/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:離體眼球固定器
- 下一篇:具有溫度報警功能的冷卻液可循環醫用冰枕





