一种共享内存数据的映射方法与流程

文档序号:17586217发布日期:2019-05-03 21:20阅读:753来源:国知局
一种共享内存数据的映射方法与流程

本发明涉及计算机数据共享领域,尤其涉及一种共享内存数据的映射方法。



背景技术:

通常,保存数据的主要方式是使用各类外置存储介质,如:磁盘、存储卡、可读写存储器等,这些存储方式可以满足大数据量情况下的存储时间和存储空间要求,技术成熟,可多次使用,寿命长;但相较于内部存储装置而言,外置式存储存取速度普遍较慢。在很多对相应速度(或反馈、反应速度)较高的系统中,内置存储器被广泛使用。一方面,内置式的存储多是同计算单元直接沟通的桥梁,运算数据、交换数据或临时数据多保存在内置存储中;另一方面,内存是计算单元可以直接寻址的存储空间,存取响应速率更快。

现在常用的外置存储存取数据响应速率慢,执行效率低。



技术实现要素:

有鉴于此,本发明要为了解决外置存储存取数据响应速率慢,执行效率低的问题,从而提供一种共享内存数据的映射方法。

本发明的技术方案是这样实现的:

一种共享内存数据的映射方法,包括以下步骤:

(1)由系统中第一系统应用发起共享内存要求,提交至系统组件,所述系统组件创建共享区域;

(2)所述系统组件将所述内存区域打开,将所述内存区域进行共享,同时所述反馈校验码给所述系统应用;

(3)所述第一系统应用获得所述校验码后,将共享的所述内存区域的地址映射到所述第一系统应用的内存空间地址表中,同时按照所述第一系统应用的具体功能要求,向共享的所述内存区域中写入共享数据;

(4)当所述第二系统应用需要所述共享数据时,所述系统组件检查所述内存区域的共享标识,将所述内存区域中的数据地址显示给符合共享标识的所述第二系统应用,所述第二系统应用使用内存地址直接访问所述内存区域;

(5)结束共享后,所述系统组件撤销所述内存区域空间地址表,撤销所述共享数据,删除所述内存区域。

优选地,所述内存区域是以数据共享为目的,不是所述第一系统应用只要分配了内存就会开放共享功能,应用在启用“内存共享”时,所述内存区域进行共享,否则所述第一系统应用分配的所述内存区域仍然是只有自己可用的“私有内存”区域。

优选地,应用共享内存时,需要指定所述内存区域的空间大小;所述内存区域的空间大小由所述第一系统应用提交的实际数据集大小自动定义。

优选地,所述第一系统应用显示的模式与所述第二系统应用显示的模式对应并且统一,即所述第一系统应用的模式是可读可写或只读时,所述第二系统应用也是可读可写或只读。

有益效果:

本发明共享原理本质上时一段特殊的内存区域,需要共享的数据被放在该共享区域中,当某个应用需要访问该共享区域的数据时,通过系统组件将该共享区域的地址映射到本应用的地址空间中。通过读写地址映射的方式,应用之间不需要任何的数据的复制,而仅仅是内存地址的交互,从而大大提高应用的执行效率。

附图说明

图1为本发明一种共享内存数据的映射方法运行原理图;

图2为本发明一种共享内存数据传输、外置数据传输比较图;

图3为本发明一种共享内存数据的映射方法的运行过程原理图;

图4为本发明一种共享内存数据的映射方法的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1-3所示,本发明实施例提出了是在系统应用框架下,通过smembuffer组件将该共享区域的地址映射到本应用的内存地址空间中。

具体的,一种共享内存数据的映射方法,包括以下步骤:

(1)由系统中第一系统应用发起共享内存要求,提交至系统组件,系统组件创建内存区域;本实施例的系统组件采用smembuffer组件,第一系统应用提交请求中包含配置参数,如:空间大小,smembuffer组件按照请求开辟内存区域,否则按照系统应用框架中的公共参数的默认值给与创建。

(2)系统组件将内存区域打开,将分配的内存区域进行共享,同时反馈校验码给系统应用;

(3)第一系统应用获得校验码后,将共享的内存区域的地址映射到第一系统应用的内存空间地址表中,同时按照第一系统应用的具体功能要求,向共享的内存区域中写入共享数据;

(4)当第二系统应用需要共享数据时,系统组件检查内存区域的共享标识(如:读写权限、应用列表、用户名称等),将内存区域中的共享数据地址显示给符合共享标识的第二系统应用,第二系统应用使用内存地址直接访问已共享的内存区域;

(5)需要共享内存数据的第三系统、第四系统等执行操作过程以此类推;

(6)结束共享后,系统组件撤销内存区域空间地址表,撤销共享数据,删除共享区域。

内存区域是以数据共享为目的,不是第一系统应用只要分配了内存就会开放共享功能,应用在启用“内存共享”时,内存区域进行共享,否则第一系统应用分配的内存区域仍然是只有自己可用的“私有内存”区域。

应用共享内存时,需要指定共享区域的空间大小;内存区域的空间大小由第一系统应用提交的实际数据集大小自动定义。

第一系统应用显示的模式与第二系统应用显示的模式对应,即第一系统应用的模式是可读可写或只读时,第二系统应用也是可读可写或只读。

在传统的数据操作过程中,大多数应用都使用系统本身提供的底层标准i/o系统调用实际存储中的数据。smembuffer组件不同于传统的仅从外置存储中读写数据的方式,而是采用:一次读取存储,一次映射内存,多次使用映射内存数据,再一次写入存储的数据处理方式。

使用smembuffer组件,由应用将相应的数据集合读取至共享内存缓冲区中,应用获取内存中共享出来的数据集合的映射地址表,使用实际的内存地址直接操作内存中的数据,当本次数据操作结束后,再将内存中的数据写入磁盘存储。由于内存中的数据读写速度较传统外置存储设备的速度快很多,使用共享内存缓冲区映射的方式,数据的处理效率可大幅度提高。smembuffer组件的基本执行过程如下:

(1)smembuffer组件将虚拟内存空间地址转换为实际i/o物理地址;

(2)系统应用框架下的应用使用(读或写)地址空间中的一个内存地址之前,会查询smembuffer组件生成的线性地址表,判断对应的物理地址;

上述二个过程对使用者而言是透明的,换句话说,系统应用框架下不会注意到数据是在实际在i/o设备中,还是在内存中,而只有smembuffer组件知道。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。



技术特征:

技术总结
本发明提供了一种共享内存数据的映射方法,包括以下步骤:第一系统应用发起数据共享内存映射要求,提交至系统组件,系统组件创建内存区域并分配空间;系统组件将上述分配的内存区域打开,将内存区域进行映射地址共享,同时反馈校验码给第一系统应用;第一系统应用获得校验码后,将共享的内存区域的地址映射到第一系统应用的内存空间地址表中,在共享的映射内存区域中写入共享数据;当第二系统应用需要获取共享数据时,系统组件检查内存区域的已分配的共享标识,将内存区域中的数据地址显示给符合共享标识的第二系统应用,第二系统应用使用内存地址直接访问已共享分配的内存区域;结束共享。本发明大大提高应用的执行效率。

技术研发人员:李晨;叶静萍
受保护的技术使用者:安徽典典科技发展有限责任公司
技术研发日:2018.12.29
技术公布日:2019.05.03
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1