共享内存管理方法及装置制造方法及图纸

技术编号:2911438 阅读:307 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种共享内存管理方法及装置,其中该方法包括:创建内存双向链表,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;读取相应的节点信息;根据所述节点信息,删除相应内存块。本发明专利技术克服了现有技术创建内存链表后无法有效管理共享内存管理缺陷,提供了一种有效的共享内存保护机制,使得应用程序有效地管理共享内存空间。

【技术实现步骤摘要】

本专利技术属于计算机领域,尤其属于一种共享内存管理方法及装置
技术介绍
在软件编程领域中,指针和动态内存是一个非常重要的概念,利用指针和动态内存的特性,进行相关软件编程,提供了其他软件编程方式难以实现的特性和高效,给开发人员提供了极大的编程灵活性。指针和动态内存带来灵活性的好处的同时,也带来了一些使用不当造成的泄漏及其他问题,而且此类问题有时很隐蔽,排查非常困难。特别是在创建内存空间和删除内存空间时,通过创建命令(new)直接创建、或者通过删除命令(delete)直接删除,缺乏必要的保护机制,从而使得应用程序不能有效地管理内存空间,并经常会出现内存泄漏、过删或过写等问题,导致系统错误。
技术实现思路
本专利技术实施例提供一种共享内存管理方法及装置,克服了现有技术缺少内存保护机制的缺陷,从而实现了对共享内存有效进行管理。本专利技术实施例提供了一种共享内存管理方法,包括:创建内存双向链表,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存-->块的地址;读取相应的节点信息;根据所述节点信息,删除相应内存块。本专利技术实施例还提供了一种共享内存管理方法,包括:启动主进程;判断与所述主进程相应的创建子进程指令值是否为需要生成子进程;若是需要生成子进程,生成一空栈,所述子进程对应一个内存双向链表,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;将所述内存双向链表推入所述空栈,再次判断与所述主进程相应的创建子进程指令值是否为需要生成子进程,并根据判断结果循环。本专利技术实施例还提供了一种共享内存管理方法,包括:子进程执行完毕,与所述子进程对应的内存双向链表位于一栈内,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;检查所述内存双向链表是否存在未释放的数据区;若存在未释放的数据区,执行回收内存块,若不存在未释放的数据区,将所述内存双向链表从所述栈内推出。本专利技术实施例还提供了一种共享内存管理方法,包括:主进程执行完毕;所述主进程对应至少一个子进程,与所述子进程对应的内存双向链表位于一栈内,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;检查一栈是否为空;若不为空,检查所述栈内的内存双向链表是否存在未释放的数据区;若存在未释放的数据区,执行回收内存块,-->若不存在未释放的数据区,将所述内存双向链表从所述栈内推出;结束与所述栈内双向链表对应的子进程,继续检查下一栈是否为空。本专利技术实施例还提供了一种共享内存管理装置,包括:创建单元,用于创建链表,所述链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;读取单元,用于读取相应的节点信息;删除单元,用于根据所述节点信息,删除相应内存块。本专利技术实施例还提供了一种共享内存管理装置,包括:启动模块,用于启动主进程;判断模块,用于判断与所述主进程相应的创建子进程指令值是否为需要生成子进程;若是需要生成子进程,生成一空栈,所述子进程对应一个内存双向链表,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;入栈模块,用于将所述内存双向链表推入所述空栈,再次判断与所述主进程相应的创建子进程指令值是否为需要生成子进程;并根据判断结果循环。本专利技术实施例还提供了一种共享内存管理装置,包括:检查模块,当子进程执行完毕时,检查所述内存双向链表是否存在未释放的数据区,与所述子进程对应的内存双向链表位于一栈内,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;内存块回收模块,当-->检查模块的检查出存在未释放的数据区时,用于执行回收内存块;出栈模块,当检查模块的检查出不存在未释放的数据区时,将所述内存双向链表从所述栈内推出。本专利技术实施例还提供了一种共享内存管理装置,包括:第一检查模块,当子进程执行完毕时,用于检查一栈是否为空,所述主进程对应至少一个子进程,与所述子进程对应的内存双向链表位于一栈内,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;第二检查模块,当第一检查模块的检查结果不为空时,用于检查所述栈内的内存双向链表是否存在未释放的数据区;第三检查模块,当第二检查模块检查出存在未释放的数据区时,用于执行回收内存块,当第二检查模块检查出不存在未释放的数据区时,用于将所述内存双向链表从所述栈内推出;结束模块,用于结束与所述栈内双向链表对应的子进程,继续检查下一栈是否为空。上述方案中的一个技术方案,通过创建及删除包含有与每个内存块对应的节点信息和边缘边界标记信息的内存双向链表,实现了共享内存管理,克服了现有技术创建内存链表后无法有效管理共享内存管理缺陷,提供了一种有效的共享内存保护机制,使得应用程序有效地管理共享内存空间。上述方案中的一个技术方案,通过将与子进程对应的内存双向链表推入栈内方法,使得每一个生成的内存双向链表全部位于不同的栈内,以此实现了共享内存管理,从而有效克服了现有技术没有共享内存管理机制的缺陷,使得应用程序有效地管理共享内存空间,进而杜绝了后续管理中出现多个内存双向链表无法与子进程一一对应的问题。上述方案中的一个技术方案,在子进程执行完毕时,通过检查与所述子进程对应的内存双向链表所在的栈,获知所述栈里是否还残留内存双向链表,-->并且对该本文档来自技高网...

【技术保护点】
一种共享内存管理方法,其特征在于包括: 创建内存双向链表,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少 包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址; 读取相应的节点信息; 根据所述节点信息,删除相应内存块。

【技术特征摘要】
1、一种共享内存管理方法,其特征在于包括:创建内存双向链表,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;读取相应的节点信息;根据所述节点信息,删除相应内存块。2、根据权利要求1所述的共享内存管理方法,其特征在于创建内存双向链表之后还包括创建内存块流程,具体为:根据创建指令,申请创建内存块;根据所述创建指令,设置节点信息和边缘边界标记信息;判断在所述内存双向链表中与当前内存块对应的前向内存块地址和后向内存块地址和当前内存块地址是否相同,若是相同,根据已设置的节点信息,将所述内存块设置为首内存块;若不是相同,根据已设置的节点信息,将所述内存设置为当前内存块,并联入所述内存双向链表。3、根据权利要求2所述的共享内存管理方法,其特征在于根据所述创建指令,设置节点信息具体为:根据所述创建指令,在节点区中,设置所述创建指令所在的文件名、所述创建指令所在的行号、状态标记、数据区大小、前向内存块的地址和后向内存块的地址。4、根据权利要求2所述的共享内存管理方法,其特征在于根据所述创建指令,设置边缘边界标记信息中所述边缘边界标记信息用于表示写入的数据信息是否超出数据区的大小。5、根据权利要求1所述的共享内存管理方法,其特征在于根据所述节点信息,删除相应内存块具体为:根据释放指令,申请释放内存块;根据释放指令,读取与所述内存块对应的节点信息;判断所述节点信息中的状态标记是否为已删除;若是已删除,结束申请,若不是已删除,修改所述状态标记为已删除,释放相应数据区,删除双向链表中所述内存块。6、根据权利要求1所述的共享内存管理方法,其特征在于还包括回收内存块流程,具体为:根据回收指令,申请回收内存块;根据回收指令,指针移至所述内存块的位置;判断与所述内存块对应的状态标记是否为已删除;若是已删除,判断与所述内存块对应的数据区域是否有数据信息,若有数据信息则结束申请,若没有数据信息,设置告警级别,并输出所述告警级别;若不是已删除,判断与所述内存块对应的数据区域是否有数据信息,若有数据信息,释放与所述内存块对应的数据区,在内存双向链表中删除所述内存块,若没有数据信息,结束申请。7、根据权利要求6所述的共享内存管理方法,其特征在于在内存双向链表中删除所述内存块之后还包括:设置告警信息,并输出所述告警信息。8、根据权利要求1所述的共享内存管理方法,其特征在于还包括过写保护流程,具体为:根据过写保护指令,申请对内存块的过写保护;根据过写保护指令,指针移至所述内存块的位置;判断与所述内存块对应的边缘边界标记信息是否为正常;若是正常,完成操作,若不是正常,设置告警信息,输出对所述内存块进行内存释放操作的释放指令所在的文件名、行号和所述告警信息,并释放与所述内存块对应的数据区、在内存双向链表中删除所述内存块。9、一种共享内存管理方法,其特征在于包括:启动主进程;判断与所述主进程相应的创建子进程指令值是否为需要生成子进程;若是需要生成子进程,生成一空栈,所述子进程对应一个内存双向链表,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;将所述内存双向链表推入所述空栈,再次判断与所述主进程相应的创建子进程指令值是否为需要生成子进程,并根据判断结果循环。10、一种共享内存管理方法,其特征在于包括:子进程执行完毕,与所述子进程对应的内存双向链表位于一栈内,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;检查所述内存双向链表是否存在未释放的数据区;若存在未释放的数据区,执行回收内存块,若不存在未释放的数据区,将所述内存双向链表从所述栈内推出。11、根据权利要求10所述的共享内存管理方法,其特征在于执行回收内存块具体为:根据回收指令,申请回收内存块;根据回收指令,指针移至所述内存块的位置;判断与所述内存块对应的状态标记是否为已删除;若是已删除,判断与所述内存块对应的数据区域是否有数据信息;若有数据信息则结束申请,若没有数据信息,设置告警级别,并输出所述告警级别;若不是已删除,判断与所述内存块对应的数据区域是否有数据信息,若有数据信息,释放与所述内存块对应的数据区,在内存双向链表中删除所述内存块,若没有数据信息,结束申请。12、一种共享内存管理方法,其特征在于包括:主进程执行完毕;所述主进程对应至少一个子进程,与所述子进程对应的内存双向链表位于一栈内,所述内存双向链表中包含有与每个内存块对应的节点信息、数据信息和边缘边界标记信息,所述节点信息位于节点区、所述数据信息位于数据区、所述边缘边界标记信息位于标记区,所述节点信息至少包含有所述数据区的大小、用于表示数据区是否有数据信息的状态标记、前向内存块的地址和后向内存块的地址;检查一栈是否为空;若不为空,检查所述栈内的内存双向链表是否存在未释放的数据区;若存在未释放的数据区,执行回收内存块,若不存在未释放的数据区,将所述内存双向链表从所述栈内推出;结束与所述栈内双向链表对应的子进程,继续检查下一栈是否为空。13、根据权利要求12所述的共享内存管理方法,其特征在于,在检查所述一栈是否为空之后还包括:判断所述一栈是否为最后一栈;若是最后一栈,结束与所述栈内双向链表对应的子进程之后,结束所述主进程。14、根据权利要求12所述的共享内存管理方法,其特征在于若是执行回收内存块具...

【专利技术属性】
技术研发人员:房厚波姜琰祥
申请(专利权)人:华为软件技术有限公司
类型:发明
国别省市:84[中国|南京]

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

1