[發(fā)明專利]一種基于共享內(nèi)存池的通用數(shù)據(jù)存儲(chǔ)方法在審
| 申請(qǐng)?zhí)枺?/td> | 202010051558.8 | 申請(qǐng)日: | 2020-01-17 |
| 公開(kāi)(公告)號(hào): | CN113138859A | 公開(kāi)(公告)日: | 2021-07-20 |
| 發(fā)明(設(shè)計(jì))人: | 杜潛;秦樹(shù)睿;李美貴;趙興文 | 申請(qǐng)(專利權(quán))人: | 北京中軟萬(wàn)維網(wǎng)絡(luò)技術(shù)有限公司 |
| 主分類號(hào): | G06F9/54 | 分類號(hào): | G06F9/54;G06F3/06;G06F16/22 |
| 代理公司: | 北京君尚知識(shí)產(chǎn)權(quán)代理有限公司 11200 | 代理人: | 司立彬 |
| 地址: | 102200*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 共享 內(nèi)存 通用 數(shù)據(jù) 存儲(chǔ) 方法 | ||
1.一種基于共享內(nèi)存池的通用數(shù)據(jù)存儲(chǔ)方法,其步驟包括:
1)為目標(biāo)應(yīng)用申請(qǐng)一塊共享內(nèi)存,根據(jù)該目標(biāo)應(yīng)用要存儲(chǔ)內(nèi)容類別的不同將該共享內(nèi)存分為m個(gè)內(nèi)存塊;其中,每一個(gè)內(nèi)存塊的頭部存儲(chǔ)該內(nèi)存塊的管理者結(jié)構(gòu),內(nèi)存塊剩余空間分為n個(gè)內(nèi)存單元,在每一內(nèi)存塊中構(gòu)建一個(gè)共享內(nèi)存池;
2)在每一內(nèi)存塊里構(gòu)建兩個(gè)雙向循環(huán)鏈表,即空閑鏈表和繁忙鏈表;其中空閑鏈表用于維護(hù)內(nèi)存塊的空閑內(nèi)存單元,繁忙鏈表用于維護(hù)內(nèi)存塊的繁忙內(nèi)存單元;初始化時(shí)所有內(nèi)存單元屬于空閑鏈表,繁忙鏈表為空,管理者結(jié)構(gòu)的空閑鏈表索引iFree指向當(dāng)前內(nèi)存塊的空閑鏈表頭節(jié)點(diǎn),繁忙鏈表索引iBusy指向繁忙鏈表頭節(jié)點(diǎn)索引;
3)當(dāng)該目標(biāo)應(yīng)用每次存儲(chǔ)數(shù)據(jù)時(shí),調(diào)用一次存儲(chǔ)接口;在存儲(chǔ)接口內(nèi)根據(jù)待存儲(chǔ)數(shù)據(jù)大小從該共享內(nèi)存中進(jìn)行若干次內(nèi)存單元申請(qǐng)直至本次數(shù)據(jù)存儲(chǔ)完成,并將本次申請(qǐng)到的內(nèi)存單元形成單鏈表,將本次申請(qǐng)到的第一個(gè)內(nèi)存單元作為首節(jié)點(diǎn)加入繁忙鏈表,后續(xù)申請(qǐng)到的內(nèi)存單元作為子節(jié)點(diǎn),掛在首節(jié)點(diǎn)后形成單鏈表,將單鏈表中的節(jié)點(diǎn)通過(guò)子索引串聯(lián)起來(lái)。
2.如權(quán)利要求1所述的方法,其特征在于,所述管理者結(jié)構(gòu)記錄當(dāng)前內(nèi)存塊內(nèi)存單元總數(shù)totalNum、空閑單元數(shù)freeNum、繁忙單元數(shù)busyNum、空閑鏈表頭索引iFree、繁忙鏈表頭索引iBusy和內(nèi)存塊編號(hào)信息;每一所述內(nèi)存單元中具有一內(nèi)存單元結(jié)構(gòu),用于記錄內(nèi)存單元在當(dāng)前內(nèi)存塊中的索引值index、內(nèi)存單元的前驅(qū)節(jié)點(diǎn)索引pre、內(nèi)存單元的后繼節(jié)點(diǎn)索引next、存儲(chǔ)數(shù)據(jù)的key值、key值長(zhǎng)度、數(shù)據(jù)內(nèi)容、數(shù)據(jù)內(nèi)容長(zhǎng)度、寫(xiě)入時(shí)間、子節(jié)點(diǎn)個(gè)數(shù)subCnt、節(jié)點(diǎn)子索引subIndex以及子節(jié)點(diǎn)后繼索引值subNextIndex;節(jié)點(diǎn)子索引subIndex是指節(jié)點(diǎn)在單鏈表中的索引。
3.如權(quán)利要求2所述的方法,其特征在于,步驟3)中,每次存儲(chǔ)數(shù)據(jù)時(shí),先根據(jù)待存儲(chǔ)數(shù)據(jù)大小和內(nèi)存單元數(shù)據(jù)區(qū)大小計(jì)算此次存儲(chǔ)所需內(nèi)存單元數(shù),如果所需內(nèi)存單元數(shù)超過(guò)空閑單元數(shù),則此次申請(qǐng)失敗;若申請(qǐng)的內(nèi)存單元數(shù)小于或等于空閑單元數(shù),則根據(jù)內(nèi)存單元的需求數(shù)量循環(huán)申請(qǐng)空閑單元,每次申請(qǐng)時(shí)直接取管理者結(jié)構(gòu)空閑鏈表頭索引iFree指向的節(jié)點(diǎn),如果是存儲(chǔ)接口第一次申請(qǐng)空閑單元,則將取到的節(jié)點(diǎn)插入到繁忙鏈表頭索引iBusy指向的節(jié)點(diǎn)之前作為新的頭節(jié)點(diǎn);通過(guò)雙向循環(huán)鏈表增刪操作,使加入新單元的繁忙鏈表和摘掉iFree節(jié)點(diǎn)的空閑鏈表重新形成雙向循環(huán)鏈表;如果存儲(chǔ)接口不是第一次申請(qǐng)空閑單元,則把申請(qǐng)到的內(nèi)存單元依次掛到單鏈表首節(jié)點(diǎn)后面;每次申請(qǐng)空閑單元后修改管理者結(jié)構(gòu)的空閑單元數(shù)freeNum減一,繁忙單元數(shù)busyNum數(shù)量加一;然后向申請(qǐng)到的內(nèi)存單元寫(xiě)入數(shù)據(jù)key值和key長(zhǎng)度,向數(shù)據(jù)區(qū)寫(xiě)入數(shù)據(jù)片段,如果當(dāng)前所申請(qǐng)的內(nèi)存單元是此次申請(qǐng)所需的最后一個(gè)內(nèi)存單元,則數(shù)據(jù)長(zhǎng)度為剩余的數(shù)據(jù)長(zhǎng)度,否則數(shù)據(jù)長(zhǎng)度為內(nèi)存單元數(shù)據(jù)區(qū)長(zhǎng)度。
4.如權(quán)利要求3所述的方法,其特征在于,存儲(chǔ)數(shù)據(jù)時(shí)更新對(duì)應(yīng)內(nèi)存單元的內(nèi)存單元結(jié)構(gòu)的子節(jié)點(diǎn)個(gè)數(shù)subCnt和子節(jié)點(diǎn)索引subIndex,同時(shí)將內(nèi)存單元的索引值記錄到數(shù)組中,直到申請(qǐng)完本次存儲(chǔ)全部所需內(nèi)存單元。
5.如權(quán)利要求1所述的方法,其特征在于,將內(nèi)存塊的編號(hào)作為該內(nèi)存塊對(duì)應(yīng)的內(nèi)存池編號(hào),各內(nèi)存池共用信號(hào)量編號(hào)semid,將內(nèi)存池編號(hào)作為對(duì)應(yīng)內(nèi)存池的信號(hào)量數(shù)組索引sem_num值。
6.如權(quán)利要求1所述的方法,其特征在于,當(dāng)進(jìn)行檢索數(shù)據(jù)時(shí),根據(jù)輸入的內(nèi)存塊編號(hào)、key值和查找順序搜索繁忙鏈表,匹配到存儲(chǔ)數(shù)據(jù)的首節(jié)點(diǎn)后,依靠該首節(jié)點(diǎn)中記錄的后繼節(jié)點(diǎn)信息找到下一個(gè)數(shù)據(jù)片段的存儲(chǔ)位置,再把不同片段連接起來(lái)返回。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京中軟萬(wàn)維網(wǎng)絡(luò)技術(shù)有限公司,未經(jīng)北京中軟萬(wàn)維網(wǎng)絡(luò)技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010051558.8/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 服務(wù)器、系統(tǒng)及信息共享方法
- 一種信息共享系統(tǒng)及信息共享方法
- 一種移動(dòng)終端的數(shù)據(jù)無(wú)線共享方法及該移動(dòng)終端
- 一種桌面共享系統(tǒng)及方法
- 一種用于共享移動(dòng)汽車電池的方法
- 一種基于物聯(lián)網(wǎng)的移動(dòng)共享方法及移動(dòng)共享系統(tǒng)
- 一種數(shù)據(jù)共享方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 基于云平臺(tái)的數(shù)據(jù)共享方法、裝置、共享平臺(tái)及存儲(chǔ)介質(zhì)
- 確定共享乘坐度量
- 設(shè)備功能共享方法、裝置、終端及存儲(chǔ)介質(zhì)





