[发明专利]一种基于共享内存池的通用数据存储方法在审
申请号: | 202010051558.8 | 申请日: | 2020-01-17 |
公开(公告)号: | CN113138859A | 公开(公告)日: | 2021-07-20 |
发明(设计)人: | 杜潜;秦树睿;李美贵;赵兴文 | 申请(专利权)人: | 北京中软万维网络技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F3/06;G06F16/22 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 102200*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 共享 内存 通用 数据 存储 方法 | ||
1.一种基于共享内存池的通用数据存储方法,其步骤包括:
1)为目标应用申请一块共享内存,根据该目标应用要存储内容类别的不同将该共享内存分为m个内存块;其中,每一个内存块的头部存储该内存块的管理者结构,内存块剩余空间分为n个内存单元,在每一内存块中构建一个共享内存池;
2)在每一内存块里构建两个双向循环链表,即空闲链表和繁忙链表;其中空闲链表用于维护内存块的空闲内存单元,繁忙链表用于维护内存块的繁忙内存单元;初始化时所有内存单元属于空闲链表,繁忙链表为空,管理者结构的空闲链表索引iFree指向当前内存块的空闲链表头节点,繁忙链表索引iBusy指向繁忙链表头节点索引;
3)当该目标应用每次存储数据时,调用一次存储接口;在存储接口内根据待存储数据大小从该共享内存中进行若干次内存单元申请直至本次数据存储完成,并将本次申请到的内存单元形成单链表,将本次申请到的第一个内存单元作为首节点加入繁忙链表,后续申请到的内存单元作为子节点,挂在首节点后形成单链表,将单链表中的节点通过子索引串联起来。
2.如权利要求1所述的方法,其特征在于,所述管理者结构记录当前内存块内存单元总数totalNum、空闲单元数freeNum、繁忙单元数busyNum、空闲链表头索引iFree、繁忙链表头索引iBusy和内存块编号信息;每一所述内存单元中具有一内存单元结构,用于记录内存单元在当前内存块中的索引值index、内存单元的前驱节点索引pre、内存单元的后继节点索引next、存储数据的key值、key值长度、数据内容、数据内容长度、写入时间、子节点个数subCnt、节点子索引subIndex以及子节点后继索引值subNextIndex;节点子索引subIndex是指节点在单链表中的索引。
3.如权利要求2所述的方法,其特征在于,步骤3)中,每次存储数据时,先根据待存储数据大小和内存单元数据区大小计算此次存储所需内存单元数,如果所需内存单元数超过空闲单元数,则此次申请失败;若申请的内存单元数小于或等于空闲单元数,则根据内存单元的需求数量循环申请空闲单元,每次申请时直接取管理者结构空闲链表头索引iFree指向的节点,如果是存储接口第一次申请空闲单元,则将取到的节点插入到繁忙链表头索引iBusy指向的节点之前作为新的头节点;通过双向循环链表增删操作,使加入新单元的繁忙链表和摘掉iFree节点的空闲链表重新形成双向循环链表;如果存储接口不是第一次申请空闲单元,则把申请到的内存单元依次挂到单链表首节点后面;每次申请空闲单元后修改管理者结构的空闲单元数freeNum减一,繁忙单元数busyNum数量加一;然后向申请到的内存单元写入数据key值和key长度,向数据区写入数据片段,如果当前所申请的内存单元是此次申请所需的最后一个内存单元,则数据长度为剩余的数据长度,否则数据长度为内存单元数据区长度。
4.如权利要求3所述的方法,其特征在于,存储数据时更新对应内存单元的内存单元结构的子节点个数subCnt和子节点索引subIndex,同时将内存单元的索引值记录到数组中,直到申请完本次存储全部所需内存单元。
5.如权利要求1所述的方法,其特征在于,将内存块的编号作为该内存块对应的内存池编号,各内存池共用信号量编号semid,将内存池编号作为对应内存池的信号量数组索引sem_num值。
6.如权利要求1所述的方法,其特征在于,当进行检索数据时,根据输入的内存块编号、key值和查找顺序搜索繁忙链表,匹配到存储数据的首节点后,依靠该首节点中记录的后继节点信息找到下一个数据片段的存储位置,再把不同片段连接起来返回。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中软万维网络技术有限公司,未经北京中软万维网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010051558.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种消息处理方法、装置及电子设备
- 下一篇:应用程序控制方法、装置及存储介质