[发明专利]一种内存诊断方法和装置有效
申请号: | 201810929296.3 | 申请日: | 2018-08-15 |
公开(公告)号: | CN109086162B | 公开(公告)日: | 2021-12-24 |
发明(设计)人: | 吕晓昱;姚琥;张虎 | 申请(专利权)人: | 中国农业银行股份有限公司 |
主分类号: | G06F11/10 | 分类号: | G06F11/10 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
地址: | 100005 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 诊断 方法 装置 | ||
1.一种内存诊断方法,其特征在于,预先将内存区划分为可变内存区和不可变内存区,并将所述可变内存区中的第一区域作为第一栈区,第二区域作为第二栈区,其中当一个栈区在执行内存诊断时,另一个栈区作为系统正常运行时的堆栈区;所述方法包括:
对于所述不可变内存区,通过计算所述不可变内存区中数据的实际校验码,将所述实际校验码与源校验码进行比较来实现对所述不可变内存区的诊断;其中,所述源校验码为初始化不可变内存区后,计算初始化不可变内存区中的数据时得到的校验码;
对于所述可变内存区,判断当前待诊断的内存区是否是堆栈区,如果是,将所述堆栈区切换到另一栈区,并在将所述堆栈区成功切换到另一栈区后,调用预设的内存诊断算法对所述当前待诊断的内存区进行诊断;如果否,直接调用预设的内存诊断算法对所述当前待诊断的内存区进行诊断。
2.根据权利要求1所述的方法,其特征在于,所述第一区域和所述第二区域大小相等。
3.根据权利要求1所述的方法,其特征在于,所述将所述堆栈区切换到另一栈区包括:
将所述堆栈区中存储的堆栈数据备份到另一栈区;
其中,当所述堆栈区为所述第一栈区时,所述另一栈区为所述第二栈区;当所述堆栈区为所述第二栈区时,所述另一栈区为所述第一栈区。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
预先将所述可变内存区按可配置的容量划分为第一数量个第一内存块,当对所述可变内存区进行诊断时,每周期以所述第一内存块为单位依次进行诊断;
预先将所述不可变内存区按可配置的容量划分为第二数量个第二内存块,且分别计算每个所述第二内存块的源校验码,并将每个所述第二内存块的源校验码存储于所述不可变内存区;当对所述不可变内存区进行诊断时,每周期以所述第二内存块为单位依次进行诊断。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
建立全内存管理表,所述全内存管理表用于保存所述可变内存区中各个第一内存块与系统实际的内存分配区之间的对应关系,所述全内存管理表还用于保存所述不可变内存区中各个第二内存块及其源校验码与系统实际的内存分配区之间的对应关系。
6.根据权利要求1所述的方法,其特征在于,所述通过计算所述不可变内存区中数据的实际校验码,将所述实际校验码与源校验码进行比较来实现对所述不可变内存区的诊断包括:
计算所述不可变内存区中数据的实际校验码;
将所述实际校验码与源校验码进行比较;
当所述实际校验码与源校验码不一致时,确定所述不可变内存区出错。
7.根据权利要求1-3任一项所述的方法,其特征在于,
所述计算所述不可变内存区中数据的实际校验码包括:采用32位循环冗余校验算法计算所述不可变内存区中数据的实际校验码;
所述预设的内存诊断算法包括:March-C算法。
8.根据权利要求7所述的方法,其特征在于,调用所述March-C算法进行诊断包括:
从安全的可变内存区中选出一部分可变内存区作为备份可变内存区;
将待诊断的可变内存区中的数据备份至所述备份可变内存区;
当所述待诊断的可变内存区诊断结束后,将所述备份可变内存区中的数据写入所述待诊断的可变内存区中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国农业银行股份有限公司,未经中国农业银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810929296.3/1.html,转载请声明来源钻瓜专利网。