一种可配置式内存管理方法

文档序号:6526587阅读:341来源:国知局
一种可配置式内存管理方法
【专利摘要】一种可配置式内存管理方法,属于信息【技术领域】。将内存区结构划分到创建、管理零代码化。在服务器安装配置数据库,各客户端内存区划分情况均从配置数据库读取。各客户端安装:内存配置获取模块、内存创建模块、内存监控模块。由以上模块读取配置信息,创建、监控内存区。根据配置数据库中各数据结构之间的关联关系,客户端内存获取模块在本地将其转换为非关系数据结构,转换成大量直观的内存配置数据。内存创建模块根据配置创建内存后,再由内存监控模块显示、更改、监测内存区变量值,省略对关系数据库查询时间,大大提高了内存管理响应速度。本发明还可自动生成定义文件,以方便在工程上的应用,大大节省了编程人员消耗在内存管理上的时间。
【专利说明】—种可配置式内存管理方法
【技术领域】
[0001]本发明属于信息【技术领域】,特别涉及一种可配置式内存管理方法。是一种集内存配置、创建、维护为一体的管理方法。
【背景技术】
[0002]在热连轧工程开发中,采用星型拓扑网络。粗轧、精轧、层冷、数据中心各客户端与服务器通过TCP/IP协议进行通讯。各客户端中既有相同结构的内存区(这些内存区结构应始终保持一致,以下称“通用内存区”),也有各自结构不同的内存区(以下称“专用内存区”)。在开发中发现以下问题:为保持通用内存区划分同步,某客户端更改相同结构内存区的划分时,需在其他客户端同步更新,工作繁复,易出错;实现内存区划分、创建、管理需要大量代码,易出错;内存管理往往都是在后台程序进行,不直观。

【发明内容】

[0003]本发明的目的在于提供一种可配置式内存管理方法,将内存区结构划分方式存储于服务器关系数据库,根据各数据结构之间的关联关系,客户端通过内存获取模块在本地将其转换为非关系数据结构,转换成大量直观的内存配置数据。由客户端内存创建模块根据配置创建内存,再由客户端内存监控模块显示、更改、监测内存区变量值,省略对关系数据库查询时间,大大提高了内存管理响应速度。如图1,当某客户端修改通用内存区时,只需更新服务器上数据库,在各客户端运行三个模块(内存获取模块、内存创建模块、内存监控模块)即可。
[0004]在服务器一多个客户端网络工程开发中,多客户端需采用相同内存区结构划分时,可采用该方法进行同步管理。
[0005]本发明将内存区结构划分到创建、管理零代码化;并采用自动生成代码技术生成内存定义头文件,以方便在工程上的应用,大大节省了编程人员消耗在内存管理上的时间。
[0006]以下将详细介绍本发明实现步骤(包括内存获取模块、内存创建模块、内存监控模块的实现方法等):
[0007]步骤1、在服务器上安装配置数据,各客户端配置监听。各客户端都通过对服务器配置数据库的配置,对内存区结构进行划分。
[0008]由于内存定义中可能出现多层数据结构、结构体嵌套等情况,本发明对配置数据库进行了规范化管理:各类表的名称、各表结构,相互引用的表之间外键联系。
[0009]根据需求在服务器配置数据库上创建表、及填写数据如下:
[0010]
【权利要求】
1.一种可配置式内存管理方法,将内存区结构划分方式存储于服务器关系数据库,根据各数据结构之间的关联关系,客户端通过内存获取模块在本地将其转换为非关系数据结构,转换成大量直观的内存配置数据;由客户端内存创建模块根据配置创建内存,再由客户端内存监控模块显示、更改、监测内存区变量值,省略对关系数据库查询时间,当某客户端修改通用内存区时,只需更新服务器上数据库,在各客户端运行三个模块;工艺步骤如下: 步骤1、在服务器上安装配置数据,各客户端配置监听。各客户端都通过对服务器配置数据库的配置,对内存区结构进行划分; 对配置数据库进行了规范化管理,各表以内存名或变量名字段为主键,确保输入内存名或变量名的唯一性;各表间外键依赖关系预防了逻辑错误; 步骤2、实现内存配置获取模块: 客户端上内存配置获取模块读服务器数据库表;从内存信息汇总表获取与该客户端相关的内存信息,包括通用内存区及与该客户端相关的专用内存区,内存配置获取模块根据与该客户端相关的内存信息,在本地创建中间数据文件,供内存创建模块、内存监控模块使用; 内存监控模块根据内存块中各成员偏移地址来管理内存成员,需在中间数据文件中将偏移地址准备好,以备内存管理使用; 计算内存成员偏移地址,需将各类型长度包括自定义结构体长度准备好;内存配置获取模块从数据库表中调取结构体信息,通过结构体成员维数及长度乘以类型长度,计算用户定义结构体大小,有嵌套结构体时,递归调用; 内存配置获取模块将配置数据库从关系型数据解析成非关系型数据,存储到中间数据文件中;每一块内存区对应生成一个中间数据文件,其中内容包括内存块内每一最底层变量的名称、类型、长度、偏移地址; 步骤3、实现内存配置获取模块: 客户端内存配置获取模块根据服务器上配置数据库,根据该客户端内存信息,为每一块内存、及结构体、常数表都生成一个定义文件,当有嵌套结构体时,定义文件代码中包含该嵌套结构体定义的头文件; 步骤4、实现内存创建模块: 客户端内存创建模块根据内存配置获取模块生成的本地中间数据文件,根据各个内存块的大小,创建内存。将内存块名称、子区数、子区长度、内存块数,存入程序内存信息列表;内存监控模块进行内存管理时,只需映射内存;当不使用内存时,也需从内存创建模块释放空间; 步骤5、实现内存监控模块: 步骤6、每个客户端上安装以上内存配置获取模块、内存创建模块、内存监控模块; 顺序运行以上三个模块,即自动创建适合该客户端的内存,并从内存监控模块监测、修改内存区的值。
2.根据权利要求1所述的方法,其特征在于:偏移地址的计算重在计算结构体大小,计算结构体s_A的大小,具体步骤如下: (I)读结构体表,将结构体成员名、类型、各维长度存储于[结构体数组列表]。首位成员在结构体中的偏移地址记为O ;(2)根据结构体成员类型,从基础类型表中查询该类型长度。如果查询到,则结构体成员是基础类型,则根据其位数计算字节数;反之,结构体成员类型是结构体类型s_B即结构体内嵌套结构体,在[结构体数组列表]中查找;如果没有找到,则进行递归调用,计算结构体s_B的大小;计算完成后,返回结构体s_B的值; 如果找到该结构体,则从[结构体数组列表]中获取结构体大小; (3)根据结构体成员类型长度及各维长度,计算该成员所占字节大小,与其偏移地址累加,即下一成员偏移地;。 (4)如该成员是结构体最后一员,则下一成员的偏移地址即为结构体s_A的大小,至此计算结构体大小完成;如该成员不是结构体最后一员,则循环以上过程(2)~(4),直至结构体大小计算完毕,并将结构体相应信息存入类型数组列表。
3.根据权利要求1所述的方法,其特征在于:以表名+.h作为定义文件名称,根据配置表中内存名称、内存变量、变量类型制作内存定义头文件;根据配置表中结构体名称、结构体变量、变量类型制作结构体定义头文件;根据配置表中常量、常量值制作宏定义头文件; 生成定义文件保存在统一路径文件夹中,文件夹命名方式“ Include」+YYYYMMDD型生成日期作为后缀,保存多版本生成的头文件,定期按生成时间进行删除。
4.根据权利要求1所述的方法,其特征在于:实现内存监控模块的步骤如下: (O当打开客户 端内存监控模块内存管理程序时,自动映射共享内存,并显示共享内存连接状;。当共享内存连接失败时,可手动连接共享内存; (2)实现内存区变量显示:在显示参数区域列出由内存创建模块创建的本地共享内存名称,根据用户选择的共享内存名称、子区号、变量数显示内存区变量;在变量显示区显示:序号、变量类型、变量值、偏移地址、注释;内存监控模块定时刷新内存数据,将新内存数据更新至画面; (3)实现内存区变量修改:内存连接成功、监测画面显示变量后,修改、提交变量值;内存监控模块程序将修改后值写入内存,并刷新画面显示; (4)实现曲线实时监控:以曲线形式实时监控内存中变量的变化情况,以内存区变量值为纵坐标,以时间为横坐标节点向前绘制曲线,折线显示多个记录点,实现实时观测数据变化趋势功能。
【文档编号】G06F9/44GK103729443SQ201310744572
【公开日】2014年4月16日 申请日期:2013年12月30日 优先权日:2013年12月30日
【发明者】龚彩军, 赵强, 刘畅 申请人:北京首钢自动化信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1