一种管理共享内存的方法

文档序号:6522670阅读:961来源:国知局
一种管理共享内存的方法
【专利摘要】一种管理共享内存的方法,属于计算机内部共享内存管理【技术领域】。通过提供一种实现对共享内存的数据实现结构化的定义、访问以及可视化管理的方法,从而解决在大规模使用共享内存进行开发以及调试的过程中,对共享内存数据监控难度大、共享内存数据结构不统一、数据访问方式复杂的问题。共享内存查看器同时实现对内存数据的直观显示,同时提供了共享内存的读取、修改的方法,使得调试人员可以直观的对需要修改测试的参数进行直接修改,避免了通过编程语句在程序中逐步调试的方法进行数据的管理。
【专利说明】一种管理共享内存的方法
【技术领域】
[0001]本发明属于计算机内部共享内存管理【技术领域】,特别涉及一种在计算机中实现以嵌套表格结构的方式来管理和访问共享内存的方法。
【背景技术】
[0002]随着计算机技术的飞速发展和人们对应用程序的要求越来越高,单进程程序在许多场合已经不能满足人们的需求,编写多进程、多线程程序成为现代程序设计的一个重要的特点。在多进程程序设计中,进程间通信是不可避免的。进程间进行通讯,不可避免的需要进行大数据块的传递。在Windows程序中也是如此,各个进程之间常常需要交换数据,进行数据通讯。其中,win32API中共享内存就是其中一个重要的方式。但由于共享内存本身并没有固定的数据结构,访问共享内存一般只能通过计算数据相对于内存首地址的偏移量来进行访问,在调试的过程中,开发人员也都是通过逐步调试、输出成数据文件的形式对共享内存的数据进行跟踪和查看,造成诸多不便。
[0003]此外,由于共享内存本身并不具有数据结构,可以保存任何类型的数据,虽然带来了使用的灵活性,但在大规模的实际开发中,这种灵活性导致了各个进程在使用共享内存时产生了不便,并增加了程序开发时出错的概率。本发明首先通过内存结构定义对象将共享内存的数据结构定义成嵌套表格结构的形式,然后通过共享内存管理对象来管理共享内存的生命周期并提供安全的访问机制,从而规范了各个进程访问使用同一块共享内存时的数据结构,并实现了对共享内存的语句化操作以及可视化管理。

【发明内容】

[0004]本发明的目的在于提供一种实现对共享内存的数据实现结构化的定义、访问以及可视化管理的方法,从而解决在大规模使用共享内存进行开发以及调试的过程中,对共享内存数据监控难度大、共享内存数据结构不统一、数据访问方式复杂的问题,整体过程如图1所示。
[0005]本方法包含以下步骤:
[0006]步骤1,通过结构定义文件对共享内存所需要存储的数据按照设定表格的结构进行定义。
[0007]将无结构的内存视为一个由一个或若干个具有相同表格结构的基本数据单元组成的集合,并使用结构定义文件定义基本数据单元的数据结构以供内存结构定义访问对象使用。与关系数据库中定义表列的方式相似,结构定义文件以固定的格式来定义基本数据单元所存储的数据类型、数据名称、数据的维数、数据的最大值、最小值、缺省值及描述,并为该基本数据单元的结构命名。内存结构定义对象载入结构定义文件,读取基本数据单元的结构,构建成员定义列表,按照Win32程序的内存对齐规则计算单元结构体所占用的空间大小,从而确定内存中每个基本单元结构体的首地址,通过这些地址可以精确地访问到每个基本单元结构体的数据成员的值。在此基础之上,基本单元结构体成员可以是一个子单元结构体,其访问子成员的方式与上一级结构访问成员的方式类似,通过计算偏移地址访问子成员数据,从而支持嵌套结构。当将一个指定大小的共享内存首地址绑定到该内存结构定义对象时,则可以通过内存结构定义对象访问共享内存数据。
[0008]步骤2,通过共享内存配置文件设定需要开辟的共享内存的名称、以及内存大小等配置信息,并将该共享内存与一个基本数据单元的结构绑定起来,以确定共享内存的所对应的数据结构。共享内存管理对象可以根据该配置文件创建指定大小的共享内存,并可以将该共享内存的首地址绑定到一个指定内存结构的内存结构定义对象上,并提供对共享内存的锁定访问机制,以保证多个进程访问共享内存的安全性。
[0009]步骤3,通过基于共享内存管理对象和内存结构定义对象开发的载入模块加载共享内存配置文件,并提供对共享内存数据进行编辑的界面。该载入模块首先通过共享内存管理对象创建指定大小的共享内存,然后根据该共享内存的配置文件载入与之绑定的基本数据单元的结构定义文件,之后,该载入模块通过内存结构定义对象提供内存数据访问与查询方法将共享内存的结构以树视图的可视化形式展现出来,并提供对共享内存数据的显示与修改功能。由于共享内存管理对象和内存结构定义对象可以应用于多个程序进程之中,因此在通过载入模块打开共享内存的情况下,其他应用进程也可以通过共享内存管理对象提供的共享内存操作方法访问已经创建好的共享内存,然后通过内存结构定义模块载入基本数据单元结构定义文件,对共享内存进行查询以及修改等操作,以完成各应用程序的业务逻辑操作。如图2所示。
[0010]对共享内存数据的管理,我们的方法在于,通过下述两种形式操作共享内存数据:
[0011]方法I,通过共享内存管理模块与内存结构定义模块可以实现对共享内存数据的高效且安全的访问。
[0012]由于共享内存具有类似于表格的结构,因此在进行查询与更新操作时会更加方便,内存结构定义模块不仅能够载入内存定义文件,与共享内存管理模块绑定后,还可以对不包含嵌套结构的共享内存进行条件化的查询与更新。与数据库查询方法类似,本方法可以根据指定的条件返回共享内存中所有满足条件的数据单元,为访问共享内存的方式为应用程序的开发带来极大的便利。
[0013]除此以外,共享内存管理模块还对读写共享内存是提供了带有优先级的互斥资源锁定机制。与传统对数据的读写方法不同,当多个进程同时访问共享内存时,该方法提供不同的优先级对共享内存进行锁定和解锁,以保证在有并发访问同一块共享内存数据块的时候避免脏数据的产生。
[0014]方法2,通过通用的可视化工具实现对共享内存数据的查看、修改、保存等。如图3所示。
[0015]经由服务载入到共享内存的共享内存数据,通过内存查看器直观的实现对数据的查看、修改和保存。如图三所示,左侧为共享内存的数据结构显示图,右侧是具体的数据内容显示效果。共享内存查看器实现对内存数据的直观显示的同时,还提供了共享内存的读取、修改的方法,使调试人员可以直观的对需要修改测试的参数进行直接修改,避免了通过编程语句在程序中逐步调试的方法进行数据的管理。【专利附图】

【附图说明】
[0016]本发明取得了以下效果:实现了对需要写入内存数据的结构化管理和表结构化定义与查询,大大提高了对共享内存数据进行修改和调试的效率,解决了传统的通过设置断点、逐步修改而导致调试过程长、方法复杂、效率低等问题。
[0017]图1整体使用过程
[0018]图2共享内存结构定义以及调用过程
[0019]图3通过嵌套表结构对共享内存进行可视化的管理
[0020]图4共享内存单元结构体的子结构定义文件
[0021]图5共享内存单元结构体定义文件
【具体实施方式】
[0022]以开辟一块共享内存用于传递下述数据为例,该块共享内存需要存放若干以下结构的数据:
[0023]
【权利要求】
1.一种管理共享内存的方法,其特征在于: 步骤一、通过结构定义文件对共享内存所需要存储的数据按照设定表格的结构进行定义;将无结构的内存视为由一个或若干个具有相同表格结构的基本数据单元组成的集合,并使用结构定义文件定义基本数据单元的数据结构以供内存结构定义访问对象使用;结构定义文件以固定的格式来定义基本数据单元所存储的数据类型、数据名称、数据的维数、数据的最大值、最小值、缺省值及描述,并为该基本数据单元的结构命名;内存结构定义对象载入结构定义文件,读取基本数据单元的结构,构建成员定义列表,按照Win32程序的内存对齐规则计算单元结构体所占用的空间大小,从而确定内存中每个基本单元结构体的首地址;通过这些地址访问到每个基本单元结构体的数据成员的值;基本单元结构体成员是一个子单元结构体,通过计算偏移地址访问子成员数据;当将一个指定大小的共享内存首地址绑定到该内存结构定义对象时,则通过内存结构定义对象访问共享内存数据; 步骤二、通过共享内存配置文件设定需要开辟的共享内存的名称、以及内存大小配置信息,并将该共享内存与一个基本数据单元的结构绑定起来,以确定共享内存所对应的数据结构;共享内存管理对象根据该配置文件创建指定大小的共享内存,将该共享内存的首地址绑定到一个指定内存结构的内存结构定义对象上,并提供对共享内存的锁定访问机制,以保证多个进程访问共享内存的安全性; 步骤三、通过基于共享内存管理对象和内存结构定义对象开发的载入模块加载共享内存配置文件,提供对共享内存进行编辑的界面;该载入模块首先通过共享内存管理对象创建指定大小的共享内存,根据该共享内存的配置文件载入与之绑定的基本数据单元的结构定义文件,该载入模块通过内存结构定义对象提供内存数据访问与查询方法将共享内存的结构以树视图的可视化形式展现了出来,并提供对共享内存数据的显示与修改功能;由于共享内存管理对象和内存结构定义对象应用于多个程序进程之中,因此在通过载入模块打开共享内存的情况下,其他应用进程也可以通过共享内存管理对象提供的共享内存操作方法访问已经创建好的共享内存,然后通过内存结构定义模块载入基本数据单元结构定义文件,对共享内存进行查询以及修改操作,以完成各应用程序的业务逻辑操作。
【文档编号】G06F17/30GK103631936SQ201310657058
【公开日】2014年3月12日 申请日期:2013年12月6日 优先权日:2013年12月6日
【发明者】李彦斌, 周月杰, 高雷, 李亮举, 彭会军 申请人:北京首钢自动化信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1