共享内存的管理方法技术

技术编号:39423027 阅读:7 留言:0更新日期:2023-11-19 16:11
本申请实施例提供了一种共享内存的管理方法

【技术实现步骤摘要】
共享内存的管理方法、装置、电子设备及存储介质


[0001]本申请属于通信
,特别是涉及一种共享内存的管理方法

装置

电子设备及存储介质


技术介绍

[0002]随着
Linux
系统的不断完善,基于
Linux
系统开发的嵌入式产品越来越多,
Linux
系统进程间的通信也越来越多,包括管道

消息队列

共享内存

信号量等等,其中共享内存是最快的一种进程间的通信方式
.
在相关技术中,通常为通过结构体成员的引用方式进行共享内存的使用

例如首先在工程中定义一个结构体,结构体中包含很多我们需要的业务数据,然后依据结构体的大小通过系统调用
shmget
()函数创建对应的共享内存,然后调用
shmat
()函数将共享内存映射到本进程空间,这样,当前进程就可以正常使用我们创建好的共享内存了

[0003]然而,上述通过结构体成员的直接引用相当于将共享内存的所有信息直接暴露了,一旦在引用或数据复制拷贝过程中出现内存越界的可能,则会造成其余内存数据的踩踏,影响进程运行的稳定性


技术实现思路

[0004]本申请提供一种共享内存的管理方法

装置

电子设备及存储介质,以便提高进程运行的稳定性

[0005]为了解决上述技术问题,本申请是这样实现的:第一方面,本申请实施例提出一种共享内存的管理方法,其中,所述共享内存包括数据区

偏移区和属性区;所述数据区用于存储业务数据,包括按照业务数据类型划分的业务数据块;所述属性区中包括与所述业务数据块一一对应的属性数据块,所述属性数据块用于记录业务数据块业务数据的结构体属性信息和所述业务数据块相对于共享内存首地址的偏移量;所述偏移区用于记录各个属性数据块相对于共享内存首地址的偏移量;所述方法应用于基板管理控制器,包括:接收第一操作指令,所述第一操作指令用于指示针对目标数据的目标操作;响应于所述第一操作指令,根据所述目标数据的类型从所述偏移区中读取所述目标数据对应的第一属性数据块的第一偏移量,并读取共享内存首地址,所述第一偏移量为所述第一属性数据块相对于所述共享内存首地址的偏移量;根据所述第一偏移量和所述共享内存首地址计算所述第一属性数据块的第一地址;基于所述第一地址读取所述第一属性数据块,并根据所述第一属性数据块计算所述目标数据的第二地址;根据所述第二地址对所述目标数据执行所述目标操作

[0006]可选的,所述基于所述第一地址读取所述第一属性数据块,并根据所述第一属性
数据块计算所述目标数据的第二地址,包括:在所述目标数据为基于数值型索引的数据的情况下,基于所述第一地址,从所述第一属性数据块中读取所述第一属性数据块对应的第一业务数据块的第一属性信息和所述第一业务数据块相对于共享内存首地址的第二偏移量;根据所述第一属性信息计算所述目标数据对应的目标参数在所述第一属性数据块中的第一相对位置;根据所述共享内存首地址

所述第二偏移量和所述第一相对位置,计算所述目标数据的第一地址

[0007]可选的,所述第一属性信息包括所述第一业务数据块对应的第一结构体中每个节点存储的参数大小和个数

所述目标数据对应的目标参数在所述第一结构体中的层级和所述目标数据的索引类型

[0008]可选的,所述第一相对位置包括所述目标参数所在节点与所述第一属性数据块的首地址之间的第三偏移量;所述根据所述第一属性信息计算所述目标数据对应的目标参数在所述第一属性数据块中的第一相对位置,包括:根据所述目标参数在所述第一结构体的层级,确定在所述目标参数所在节点与所述第一属性数据块首地址之间的第一节点;根据所述第一节点所存储的参数的大小和个数,计算所述目标参数所在节点与所述第一属性数据块首地址之间的第三偏移量

[0009]可选的,所述共享内存还包括有效性标志区,所述有效性标志区用于标识所述数据区中数据的有效性;所述有效性标志区中包括用于标识所述目标数据的有效性的第一字段,所述第一字段相对于有效性标志区首地址的偏移量与所述目标数据相对于数据区首地址的偏移量相同

[0010]可选的,所述根据所述第二地址对所述目标数据执行所述目标操作,包括:根据所述第一地址从所述有效性标志区中读取所述第一字段,得到所述目标数据的有效性标识;根据所述有效性标识和所述第一地址对所述目标数据执行所述目标操作

[0011]可选的,在所述业务数据块中存储的业务数据为基于字符串索引的数据的情况下,所述业务数据块中设置有头节点,所述头节点用于记录所述业务数据块对应的索引字符串

上级链表索引和下级链表索引

[0012]可选的,所述基于所述第一地址读取所述第一属性数据块,并根据所述第一属性数据块计算所述目标数据的第二地址,包括:在所述目标数据为基于字符串索引的数据的情况下,基于所述第一地址,从所述第一属性数据块中读取所述第一属性数据块对应的第一业务数据块的第四偏移量,并计算所述目标数据对应的第一字符串的第一哈希值;其中,所述第四偏移量为所述第一业务数据块相对于所述共享内存首地址的偏移量;根据所述共享内存首地址

所述第四偏移量和所述第一哈希值计算所述目标数据对应的第一业务数据块的第二地址

[0013]可选的,所述根据所述第二地址对所述目标数据执行所述目标操作,包括:在所述第一业务数据块是空数据块且所述目标操作为写入操作的情况下,将包含
所述目标数据的数据块写入所述第二地址;在所述第一业务数据块是空业务数据块且所述目标操作为查询操作的情况下,则提示查询失败

[0014]可选的,所述根据所述第二地址对所述目标数据执行所述目标操作,包括:若所述第一业务数据块不是空数据块,则读取所述第一业务数据块对应的第二字符串,并计算所述第二字符串的第二哈希值;若所述第一哈希值与所述第二哈希值相同,则基于所述第一业务数据块中的上级索引节点和下级索引节点遍历所述第一业务数据块的链表,并基于所述链表执行所述目标操作;若所述第一哈希值与所述第二哈希值不相同,则在所述数据区中查找一个空位置,将所述第一业务数据块中的数据转移到所述空位置,并将所述目标数据写入所述第一业务数据块

[0015]可选的,所述若所述第一哈希值与所述第二哈希值相同,则基于所述第一业务数据块中的上级索引节点和下级索引节点遍历所述第一业务数据块的链表,并基于所述链表执行所述目标操作,包括:在所述第一哈希值与所述第二哈希值相同且所述目标操作为查询操作的情况下,基于所述第一业务数据块中的上级索引节点和下级索引节点遍历所述第一业务数据块的链表,并从本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种共享内存的管理方法,其特征在于,所述共享内存包括数据区

偏移区和属性区;所述数据区用于存储业务数据,包括按照业务数据类型划分的业务数据块;所述属性区中包括与所述业务数据块一一对应的属性数据块,所述属性数据块用于记录业务数据块业务数据的结构体属性信息和所述业务数据块相对于共享内存首地址的偏移量;所述偏移区用于记录各个属性数据块相对于共享内存首地址的偏移量;所述方法应用于基板管理控制器,包括:接收第一操作指令,所述第一操作指令用于指示针对目标数据的目标操作;响应于所述第一操作指令,根据所述目标数据的类型从所述偏移区中读取所述目标数据对应的第一属性数据块的第一偏移量,并读取共享内存首地址,所述第一偏移量为所述第一属性数据块相对于所述共享内存首地址的偏移量;根据所述第一偏移量和所述共享内存首地址计算所述第一属性数据块的第一地址;基于所述第一地址读取所述第一属性数据块,并根据所述第一属性数据块计算所述目标数据的第二地址;根据所述第二地址对所述目标数据执行所述目标操作
。2.
根据权利要求1所述的方法,其特征在于,所述基于所述第一地址读取所述第一属性数据块,并根据所述第一属性数据块计算所述目标数据的第二地址,包括:在所述目标数据为基于数值型索引的数据的情况下,基于所述第一地址,从所述第一属性数据块中读取所述第一属性数据块对应的第一业务数据块的第一属性信息和所述第一业务数据块相对于共享内存首地址的第二偏移量;根据所述第一属性信息计算所述目标数据对应的目标参数在所述第一属性数据块中的第一相对位置;根据所述共享内存首地址

所述第二偏移量和所述第一相对位置,计算所述目标数据的第一地址
。3.
根据权利要求2所述的方法,其特征在于,所述第一属性信息包括所述第一业务数据块对应的第一结构体中每个节点存储的参数大小和个数

所述目标数据对应的目标参数在所述第一结构体中的层级和所述目标数据的索引类型
。4.
根据权利要求3所述的方法,其特征在于,所述第一相对位置包括所述目标参数所在节点与所述第一属性数据块的首地址之间的第三偏移量;所述根据所述第一属性信息计算所述目标数据对应的目标参数在所述第一属性数据块中的第一相对位置,包括:根据所述目标参数在所述第一结构体的层级,确定在所述目标参数所在节点与所述第一属性数据块首地址之间的第一节点;根据所述第一节点所存储的参数的大小和个数,计算所述目标参数所在节点与所述第一属性数据块首地址之间的第三偏移量
。5.
根据权利要求2所述的方法,其特征在于,所述共享内存还包括有效性标志区,所述有效性标志区用于标识所述数据区中数据的有效性;所述有效性标志区中包括用于标识所述目标数据的有效性的第一字段,所述第一字段相对于有效性标志区首地址的偏移量与所述目标数据相对于数据区首地址的偏移量相同
。6.
根据权利要求5所述的方法,其特征在于,所述根据所述第二地址对所述目标数据执行所述目标操作,包括:
根据所述第一地址从所述有效性标志区中读取所述第一字段,得到所述目标数据的有效性标识;根据所述有效性标识和所述第一地址对所述目标数据执行所述目标操作
。7.
根据权利要求1所述的方法,其特征在于,在所述业务数据块中存储的业务数据为基于字符串索引的数据的情况下,所述业务数据块中设置有头节点,所述头节点用于记录所述业务数据块对应的索引字符串

上级链表索引和下级链表索引
。8.
根据权利要求7所述的方法,其特征在于,所述基于所述第一地址读取所述第一属性数据块,并根据所述第一属性数据块计算所述目标数据的第二地址,包括:在所述目标数据为基于字符串索引的数据的情况下,基于所述第一地址,从所述第一属性数据块中读取所述第一属性数据块对应的第一业务数据块的第四偏移量,并计算所述目标数据对应的第一字符串的第一哈希值;其中,所述第四偏移量为所述第一业务数据块相对于所述共享内存首地址的偏移量;根据所述共享内存首地址

所述第四偏移量和所述第一哈希值计算所述目标数据对应的第一业务数据块的第二地址
。9.
根据权利要求8所述的方法,其特征在于,所述根据所述第二地址对所述目标数据执行所述目标操作,包括:在所述第一业务数据块是空数据块且所述目标操作为写入操作的情况下,将包含所述目标数据的数据块写入所述第二地址;在所述第一业务数据块是空业务数据块且所述目标操作为查询操作的情况下,则提示查询失败
。10.
根据权利要求8所述的方法,其特征在于,所述根据所述第二地址对所述目标数据执行所述目标操作,包括:若所述第一业务数据块不是空数据块,则读取所述第一业务数据块对应的第二字符串,并计算所述第二字符串的第二哈希值;若所述第一哈希值与所述第二哈希值相同,则基于所述第一业务数据块中的上级索引节点和下级索引节点遍历所述第一业务数据块的链表,并基于所...

【专利技术属性】
技术研发人员:候志立张秀波王相宇周璐
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1