[发明专利]一种周期性大数据处理的内存管理方法及装置有效
申请号: | 201410338967.0 | 申请日: | 2014-07-16 |
公开(公告)号: | CN104090848B | 公开(公告)日: | 2017-03-08 |
发明(设计)人: | 郑家亮 | 申请(专利权)人: | 云南大学 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 昆明科阳知识产权代理事务所53111 | 代理人: | 李行健 |
地址: | 650000*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种周期性大数据处理的内存管理方法及装置,属计算机内存管理技术领域。其中内存分配管理包括正序分配、逆序分配以及静态内存管理与动态分配相结合,内存整理是将所管理的静态内存保持前段完全连续可用,未释放的数据逆序连续存放于末段。每个数据处理周期都保持完整、连续可用的大内存段。使用本发明装置的周期性操作的大数据处理软件系统,不会出现因为运行时间长而由于内存管理方面的原因,导致性能下降、稳定性下降的情况。本发明内存分配还考虑了大数据处理中内存需求很大的问题,以静态高性能的内存完全、有效使用为主,同时支持操作系统动态内存分配、虚拟内存应用等能力,保证最大化内存需求供给。 | ||
搜索关键词: | 一种 周期性 数据处理 内存 管理 方法 装置 | ||
【主权项】:
一种周期性大数据处理的内存管理方法,其特征在于其中内存分配管理包括正序分配、逆序分配以及静态内存管理与动态分配相结合,内存整理是将所管理的静态内存保持前段完全连续可用,未释放的数据逆序连续存放于末段,并且按以下步骤执行:步骤S10:向操作系统申请分配一块容量为Capacity_StaticMemory的内存,该内存称为静态内存,然后建立内存分配记录表并初始化,初始化正向静态内存分配指针为S103、正向分配当前位置指针为S105、逆序分配指针为S104、逆序分配当前位置指针为S106,Capacity_StaticMemory数值的确定方法如下:基数CapacityBase=计算机系统可用内存AvailableMemory/2,如果计算机系统同时运行多个大型应用软件,修正为CapacityBase=AvailableMemory/3,Capacity_StaticMemory=CapacityBase×(0.5+RevisionCo_Requiring/10)×(1+RevisionCo_Statistics),其中RevisionCo_Requiring为应用需求修正系数,由应用程序配置,取值范围为1‑10;RevisionCo_Statistics为历史分配修正系数:RevisionCo_Statitics=Capacity_Excess/Capacity_StaticMemory,其中Capacity_Excess为每个操作周期动态分配内存的平均值,从上一次修改Capacity_StaticMemory值以后的计数平均值,Capacity_StaticMemory最终值不能大于AvailableMemory×2/3,进一步创建内存管理结构,这是连续的大块静态内存,包括四个部分,分别是(A)顺序已分配静态内存区从S103开始到S105‑1、(B)顺序可分配静态内存区S105开始到S106‑1、(C)逆序已分配内存区S104开始到S106‑1、(D)内存分配记录表,从S104开始到静态内存块末尾,内存分配记录表同样采用静态内存顺序排列的方式,内存分配记录表结构包含三个部分:分别是(A)S152有效性检测区,共是12个字节,其读出值用于判定内存分配记录表的有效性,MAListVerification初始化后不会再次修改,每次访问时检测该值是否正常,如果异常要通知应用系统结束处理过程,查找原因,(B)第二部分包含两个值,当前顺序分配指针为S153,用于采用循环首次适应法分配内存,另一个值S154表示最大内存分配记录表单元数,S10初始化时S153置为0,S154是最大可分配内存次数,(C)第三部分是数据结构,连续存放内存分配记录表单元,每个单元包括不重复的分配ID、所分配的内存物理地址/或静态内存区相对地址、分配长度、内存共享者数据、类型,内存分配记录单元内容为:Alloc_ID:4个字节,整个运行期不会重复,是所分配内存使用的关键标识,该值为0时表示该记录分配记录单元未使用,后面Alloc_Addr、Alloc_Len等值均无效,Alloc_Addr:物理地址或相对地址,如果分配静态内存,该值为相对地址,即所管理的内存地址,如果由操作系统所分配的动态地址,该值为物理内存地址,Alloc_Len:分配长度,Alloc_Share:该内存块共享计数,Alloc_Type:静态内存分配标志为1,操作系统动态内存分配标志为十六进制FF,S10初始化时内存分配记录表全部置为空,S10初始化还包括初始化设置参数:逆序分配最大空间、内存分配增长期判定参数、一个周期性操作结束判断参数,步骤S20:应用系统内存需求上升期申请的内存,或由应用系统申请内存,申请容量为RequiredMemory,流程如下:如果RequiredMemory+S105<S106,则内存分配记录表中创建新的Alloc_ID,记录Alloc_Addr=S105,Alloc_Len=RequiredMemory,Alloc_Share=1,Alloc_Type=1,然后S105=S105+RequiredMemory,如果RequiredMemory+S105>S106,则内存分配记录表中创建新的Alloc_ID,从操作系统申请RequiredMemory大小的内存,记录Alloc_Addr=从操作系统获得的地址,Alloc_Len=RequiredMemory,Alloc_Share=1,Alloc_Type=FF,应用系统内存释放期申请的内存,或碎片整理期申请内存,申请容量为RequiredMemory,采用逆序分配方法,流程如下:从S104开始分配,如果S124内存区已被占用,则把占用的数据先移到动态内存区,如果S106‑RequiredMemory<S105,按上述方法向操作系统申请动态内存,并记录内存分配记录表,S106不变,如果S106‑RequiredMemory>S105,然后S106=S106–RequiredMemory,创建新的Alloc_ID,记录Alloc_Addr=S106,Alloc_Len=RequiredMemory,Alloc_Share=1,Alloc_Type=1,步骤S30:动态碎片整理,一个大数据处理周期结果后进入碎片整理期,以备下一周期有连续的静态内存空间可供使用,残留内存数据向静态内存区末端移动,步骤S301首先对S124内存区进行整理,S124内存区内所有未释放的内存块均向后移动,形成整片连续已分配的逆序分配内存区,S106为目前逆序分配指针,修改相应的内存分配记录表S112,步骤S302对所有内存分配记录表中Alloc_Type=1,并且Alloc_ID>10000,并且不在逆序分配区S124的项目,执行步骤S303和S304、S305,步骤S303对Alloc_Addr指向静态内存区的项目执行步骤S304,否则执行步骤S305,步骤S304逆序分配长度为Alloc_Len的内存,新地址为Alloc_Addr,将源地址Alloc_Addr长度为Alloc_Len的数据移动到新地址Alloc_Addr,更新内存分配记录表Alloc_Addr的值,步骤S30有一个进一步的补充步骤:一个操作周期后如果残留数据大小RemainedDataSize大于静态内存总量的1/3时,在S30执行完成后,如果能成功向操作系统申请到RemainedDataSize的动态内存,就将S124逆序分配区的数据整块移动到新申请的动态内存中,然后修改内存分配记录表、以及S106=S104,这样整个静态内存区用于下一个操作周期内存分配需求,内存释放有两种情况,根据内存记录表的记录类型,选择内存释放操作:(A)在静态内存区的释放操作Alloc_Type=1,仅需修改使用状态标志,即Alloc_ID=0;(B)由操作系统动态分配的内存Alloc_Type=FF,修改标志并通知操作系统释放相应的内存,内存动态整理期发生在一个操作周期结束以后,动态碎片整理期间处于加锁状态,数据访问和新的分配内存、释放都处于等待状态。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于云南大学,未经云南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410338967.0/,转载请声明来源钻瓜专利网。
- 上一篇:一种基于多值逻辑电路的地址译码方法
- 下一篇:生成测试用例的方法