[發(fā)明專利]共享內存管理方法及裝置無效
| 申請?zhí)枺?/td> | 200710304000.0 | 申請日: | 2007-12-24 |
| 公開(公告)號: | CN101470632A | 公開(公告)日: | 2009-07-01 |
| 發(fā)明(設計)人: | 姜琰祥;房厚波 | 申請(專利權)人: | 華為軟件技術有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 | 代理人: | 劉 芳 |
| 地址: | 210012江蘇省南*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 共享 內存 管理 方法 裝置 | ||
技術領域
本發(fā)明屬于計算機領域,尤其屬于一種共享內存管理方法及裝置。
背景技術
在軟件編程領域中,指針和動態(tài)內存是一個非常重要的概念,利用指針 和動態(tài)內存的特性,進行相關軟件編程,提供了其他軟件編程方式難以實現 的特性和高效,給開發(fā)人員提供了極大的編程靈活性。指針和動態(tài)內存帶來 靈活性的好處的同時,也帶來了一些使用不當造成的泄漏及其他問題,而且此 類問題有時很隱蔽,排查非常困難。
特別是在創(chuàng)建內存空間和刪除內存空間時,通過創(chuàng)建命令(new)直接創(chuàng) 建、或者通過刪除命令(delete)直接刪除,缺乏必要的保護機制,從而使 得應用程序不能有效地管理內存空間,并經常會出現內存泄漏、過刪或過寫 等問題,導致系統(tǒng)錯誤。
發(fā)明內容
本發(fā)明實施例提供一種共享內存管理方法及裝置,克服了現有技術缺少 內存保護機制的缺陷,從而實現了對共享內存有效進行管理。
本發(fā)明實施例提供了一種共享內存管理方法,包括:創(chuàng)建內存雙向鏈表, 所述內存雙向鏈表中包含有與每個內存塊對應的節(jié)點信息、數據信息和邊緣 邊界標記信息,所述節(jié)點信息位于節(jié)點區(qū)、所述數據信息位于數據區(qū)、所述 邊緣邊界標記信息位于標記區(qū),所述節(jié)點信息至少包含有所述數據區(qū)的大小、 用于表示數據區(qū)是否有數據信息的狀態(tài)標記、前向內存塊的地址和后向內存 塊的地址;讀取相應的節(jié)點信息;根據所述節(jié)點信息,刪除相應內存塊。
本發(fā)明實施例還提供了一種共享內存管理方法,包括:啟動主進程;判 斷與所述主進程相應的創(chuàng)建子進程指令值是否為需要生成子進程;若是需要 生成子進程,生成一空棧,所述子進程對應一個內存雙向鏈表,所述內存雙 向鏈表中包含有與每個內存塊對應的節(jié)點信息、數據信息和邊緣邊界標記信 息,所述節(jié)點信息位于節(jié)點區(qū)、所述數據信息位于數據區(qū)、所述邊緣邊界標 記信息位于標記區(qū),所述節(jié)點信息至少包含有所述數據區(qū)的大小、用于表示 數據區(qū)是否有數據信息的狀態(tài)標記、前向內存塊的地址和后向內存塊的地址; 將所述內存雙向鏈表推入所述空棧,再次判斷與所述主進程相應的創(chuàng)建子進 程指令值是否為需要生成子進程,并根據判斷結果循環(huán)。
本發(fā)明實施例還提供了一種共享內存管理方法,包括:子進程執(zhí)行完畢, 與所述子進程對應的內存雙向鏈表位于一棧內,所述內存雙向鏈表中包含有 與每個內存塊對應的節(jié)點信息、數據信息和邊緣邊界標記信息,所述節(jié)點信 息位于節(jié)點區(qū)、所述數據信息位于數據區(qū)、所述邊緣邊界標記信息位于標記 區(qū),所述節(jié)點信息至少包含有所述數據區(qū)的大小、用于表示數據區(qū)是否有數 據信息的狀態(tài)標記、前向內存塊的地址和后向內存塊的地址;檢查所述內存 雙向鏈表是否存在未釋放的數據區(qū);若存在未釋放的數據區(qū),執(zhí)行回收內存 塊,若不存在未釋放的數據區(qū),將所述內存雙向鏈表從所述棧內推出。
本發(fā)明實施例還提供了一種共享內存管理方法,包括:主進程執(zhí)行完畢; 所述主進程對應至少一個子進程,與所述子進程對應的內存雙向鏈表位于一 棧內,所述內存雙向鏈表中包含有與每個內存塊對應的節(jié)點信息、數據信息 和邊緣邊界標記信息,所述節(jié)點信息位于節(jié)點區(qū)、所述數據信息位于數據區(qū)、 所述邊緣邊界標記信息位于標記區(qū),所述節(jié)點信息至少包含有所述數據區(qū)的 大小、用于表示數據區(qū)是否有數據信息的狀態(tài)標記、前向內存塊的地址和后 向內存塊的地址;檢查一棧是否為空;若不為空,檢查所述棧內的內存雙向 鏈表是否存在未釋放的數據區(qū);若存在未釋放的數據區(qū),執(zhí)行回收內存塊, 若不存在未釋放的數據區(qū),將所述內存雙向鏈表從所述棧內推出;結束與所 述棧內雙向鏈表對應的子進程,繼續(xù)檢查下一棧是否為空。
本發(fā)明實施例還提供了一種共享內存管理裝置,包括:創(chuàng)建單元,用于 創(chuàng)建鏈表,所述鏈表中包含有與每個內存塊對應的節(jié)點信息、數據信息和邊 緣邊界標記信息,所述節(jié)點信息位于節(jié)點區(qū)、所述數據信息位于數據區(qū)、所 述邊緣邊界標記信息位于標記區(qū),所述節(jié)點信息至少包含有所述數據區(qū)的大 小、用于表示數據區(qū)是否有數據信息的狀態(tài)標記、前向內存塊的地址和后向 內存塊的地址;讀取單元,用于讀取相應的節(jié)點信息;刪除單元,用于根據 所述節(jié)點信息,刪除相應內存塊。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為軟件技術有限公司,未經華為軟件技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710304000.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種豎向編輯軌道布局的新聞制作方法
- 下一篇:給藥的發(fā)射體





