[發(fā)明專利]一種共享內(nèi)存空間的管理方法有效
| 申請?zhí)枺?/td> | 201610097234.1 | 申請日: | 2016-02-22 |
| 公開(公告)號: | CN107102900B | 公開(公告)日: | 2020-02-07 |
| 發(fā)明(設(shè)計)人: | 李永海;廖軍;沈凱立 | 申請(專利權(quán))人: | 上海大唐移動通信設(shè)備有限公司;大唐移動通信設(shè)備有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 11002 北京路浩知識產(chǎn)權(quán)代理有限公司 | 代理人: | 王瑩 |
| 地址: | 200233 上海市*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 共享 內(nèi)存空間 管理 方法 | ||
本發(fā)明公開一種共享內(nèi)存空間的管理方法,包括:基于預(yù)設(shè)的鏈表模式,將待管理的共享內(nèi)存空間初始化為公共區(qū)和私有區(qū),且在私有區(qū)中初始化一塊屬性區(qū),并將鏈表模式對應(yīng)的鏈表結(jié)點的屬性存放到屬性區(qū);在接收到一條待寫入的數(shù)據(jù)時,從私有區(qū)的非屬性區(qū)為該條數(shù)據(jù)申請一個鏈表結(jié)點空間;將該條數(shù)據(jù)寫入到該鏈表結(jié)點的數(shù)據(jù)域,并在該鏈表結(jié)點的指針域記錄與該鏈表結(jié)點相關(guān)的鏈表結(jié)點相對共享內(nèi)存空間的首地址的地址偏移量。相比現(xiàn)有技術(shù),本發(fā)明公開的共享內(nèi)存空間的管理方法,利用鏈表結(jié)點的指針域記錄相對共享內(nèi)存空間首地址的地址偏移量,用以模擬鏈表結(jié)構(gòu),對共享內(nèi)存空間實現(xiàn)靈活、高效的管理。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體涉及一種共享內(nèi)存空間的管理方法。
背景技術(shù)
進程是計算機進行資源分配和調(diào)度的基本單位,進程是一個實體。共享內(nèi)存(shared memory,shm)是被多個進程共享的邏輯內(nèi)存區(qū)域。每個進程將共享內(nèi)存空間地址映射到各自的邏輯地址空間中,一個進程向共享內(nèi)存空間寫入了數(shù)據(jù),使用共享內(nèi)存空間的其他進程就可以看到該數(shù)據(jù),從而實現(xiàn)進程間通信(Inter Process Communication,IPC)。由于進程可以直接讀寫內(nèi)存,不需要復(fù)制數(shù)據(jù),因此使用共享內(nèi)存空間通信是進程間通信(Inter Process Communication,IPC)最有效的方式;此外,共享內(nèi)存空間還可以緩存大數(shù)據(jù)。
由于共享內(nèi)存空間在各進程的地址空間中的地址不同,因此,共享內(nèi)存空間中只能存放數(shù)據(jù),不能存放指針。在共享內(nèi)存空間中使用相對共享內(nèi)存空間首地址的地址偏移量來模擬指針。
共享內(nèi)存空間的使用有如下幾個特點:可以被多個進程打開訪問;讀寫操作的進程在執(zhí)行讀寫操作時其他進程不能進行讀寫操作;多個進程可以交替對共享內(nèi)存空間執(zhí)行寫操作;一個進程執(zhí)行了共享內(nèi)存空間的寫操作后,不影響其他進程對該共享內(nèi)存空間的訪問,同時其他進程對更新后的內(nèi)存具有可見性。共享內(nèi)存空間的使用需要通過信號量、全局鎖通過、管道消息或IPC消息等來保證讀寫之間的同步。
傳統(tǒng)的共享內(nèi)存空間的管理方法只是單純停留在地址偏移量的移動,來存儲和讀取數(shù)據(jù),不僅使用上不靈活,多次讀寫后,地址偏移量的大小不好控制,因此很難發(fā)揮共享內(nèi)存空間的作用。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種共享內(nèi)存空間的管理方法及系統(tǒng),以解決現(xiàn)有共享內(nèi)存空間管理技術(shù)單純停留在偏移量的移動來存儲和讀取數(shù)據(jù),不僅使用上不靈活,多次讀寫后,偏移量的大小不好控制,很難發(fā)揮共享內(nèi)存空間的作用的技術(shù)問題。
為此目的,本發(fā)明提出一種共享內(nèi)存空間的管理方法,包括:
基于預(yù)設(shè)的鏈表模式,將待管理的共享內(nèi)存空間初始化為公共區(qū)和私有區(qū),且在所述私有區(qū)中初始化一塊屬性區(qū),并將所述鏈表模式對應(yīng)的鏈表結(jié)點的屬性存放到所述屬性區(qū);
在接收到一條待寫入的數(shù)據(jù)時,從所述私有區(qū)的非屬性區(qū)為該條數(shù)據(jù)申請一個鏈表結(jié)點;
將該條數(shù)據(jù)寫入到該鏈表結(jié)點的數(shù)據(jù)域,并在該鏈表結(jié)點的指針域記錄與該鏈表結(jié)點相關(guān)的鏈表結(jié)點相對所述共享內(nèi)存空間的首地址的地址偏移量。
可選的,所述鏈表模式為容器vector;
相應(yīng)地,所述將所述鏈表模式對應(yīng)的鏈表結(jié)點屬性存放到所述屬性區(qū),包括:
將鏈表結(jié)點的數(shù)據(jù)域預(yù)設(shè)的數(shù)據(jù)條數(shù)、每條數(shù)據(jù)預(yù)設(shè)的最大長度、第一個鏈表結(jié)點的指針域相對于共享內(nèi)存空間的首地址的地址偏移量以及當(dāng)前使用的鏈表結(jié)點的指針域相對于共享內(nèi)存空間的首地址的地址偏移量存放到所述屬性區(qū)。
可選的,所述從所述私有區(qū)的非屬性區(qū)為該條數(shù)據(jù)申請一個鏈表結(jié)點空間,包括:
從所述私有區(qū)的非屬性區(qū)為該條數(shù)據(jù)申請一個數(shù)據(jù)域大小為預(yù)設(shè)頁大小的鏈表結(jié)點空間,所述預(yù)設(shè)頁大小由所述鏈表結(jié)點的數(shù)據(jù)域預(yù)設(shè)的數(shù)據(jù)條數(shù)以及每條數(shù)據(jù)預(yù)設(shè)的最大長度確定。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海大唐移動通信設(shè)備有限公司;大唐移動通信設(shè)備有限公司,未經(jīng)上海大唐移動通信設(shè)備有限公司;大唐移動通信設(shè)備有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610097234.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





