【技术实现步骤摘要】
一种内存诊断方法和装置
本专利技术涉及安全计算机系统
,尤其涉及一种内存诊断方法和装置。
技术介绍
安全关键系统是指对组成系统的软件、硬件安全性级别要求极高的系统,安全关键系统的运行直接关系着人员生命和财产的安全。自诊断是指系统通过设置诊断功能对故障或失效事件进行自我检测并处理的技术,是提高系统安全性和可靠性的重要手段。数据段是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读。栈(stack)又称堆栈,由操作系统自动分配释放,用于存放函数的参数值、局部变量、返回值等数据的内存空间。由于栈的先进先出特点,栈被用来保存/恢复调用现场。内存是计算机中重要的部件之一,计算机中所有程序的运行都是在内存中进行的,其对于计算机的性能、安全性有至关重要的影响。其中,不可变内存是指系统运行时,数据内容不可以修改的内存区域,如代码段。可变内存是指系统运行时,数据内容可以被动态修改的内存区域,如数据段、栈等。因此在安全关键系统中,对内存进行重点诊断必不可少。目前存在的内存诊断方法包括通过硬件实现和通过软件实现两种技术手段。其中,采用硬件实现的内存诊断方法中,系统内建自测试(Built-inSelfTest,BIST)技术是在芯片电路内部建立测试控制结构,通过硬件功能对计算机存储器进行全面的检测。虽然内建自测试技术可以简化测试步骤,但却增加了芯片的设计复杂度,且该方法大多为固定程序,只能检测存储器件本身读写能力,不能根据实际应用测试只读区域 ...
【技术保护点】
1.一种内存诊断方法,其特征在于,预先将内存区划分为可变内存区和不可变内存区,并将所述可变内存区中的第一区域作为第一栈区,第二区域作为第二栈区,其中当一个栈区在执行内存诊断时,另一个栈区作为系统正常运行时的堆栈区;所述方法包括:对于所述不可变内存区,通过计算所述不可变内存区中数据的实际校验码,将所述实际校验码与源校验码进行比较来实现对所述不可变内存区的诊断;其中,所述源校验码为初始化不可变内存区后,计算初始化不可变内存区中的数据时得到的校验码;对于所述可变内存区,判断当前待诊断的内存区是否是堆栈区,如果是,将所述堆栈区切换到另一栈区,并在将所述堆栈区成功切换到另一栈区后,调用预设的内存诊断算法对所述当前待诊断的内存区进行诊断;如果否,直接调用预设的内存诊断算法对所述当前待诊断的内存区进行诊断。
【技术特征摘要】
1.一种内存诊断方法,其特征在于,预先将内存区划分为可变内存区和不可变内存区,并将所述可变内存区中的第一区域作为第一栈区,第二区域作为第二栈区,其中当一个栈区在执行内存诊断时,另一个栈区作为系统正常运行时的堆栈区;所述方法包括:对于所述不可变内存区,通过计算所述不可变内存区中数据的实际校验码,将所述实际校验码与源校验码进行比较来实现对所述不可变内存区的诊断;其中,所述源校验码为初始化不可变内存区后,计算初始化不可变内存区中的数据时得到的校验码;对于所述可变内存区,判断当前待诊断的内存区是否是堆栈区,如果是,将所述堆栈区切换到另一栈区,并在将所述堆栈区成功切换到另一栈区后,调用预设的内存诊断算法对所述当前待诊断的内存区进行诊断;如果否,直接调用预设的内存诊断算法对所述当前待诊断的内存区进行诊断。2.根据权利要求1所述的方法,其特征在于,所述第一区域和所述第二区域大小相等。3.根据权利要求1所述的方法,其特征在于,所述将所述堆栈区切换到另一栈区包括:将所述堆栈区中存储的堆栈数据备份到另一栈区;其中,当所述堆栈区为所述第一栈区时,所述另一栈区为所述第二栈区;当所述堆栈区为所述第二栈区时,所述另一栈区为所述第一栈区。4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:预先将所述可变内存区按可配置的容量划分为第一数量个第一内存块,当对所述可变内存区进行诊断时,每周期以所述第一内存块为单位依次进行诊断;预先将所述不可变内存区按可配置的容量划分为第二数量个第二内存块,且分别计算每个所述第二内存块的源校验码,并将每个所述第二内存块的源校验码存储于所述不可变内存区;当对所述不可变内存区进行诊断时,每周期以所述第二内存块为单位依次进行诊断。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:建立全内存管理表,所述全内存管理表用于保存所述可变内存区中各个第一内存块、所述不可变内存区中各个第二内存块及其源校验码,分别与系统实际的内存分配区之间的对应关系。6.根据权利要求1所述的方法,其特征在于,所述通过计算所述不可变内存区中数据的实际校验码,将所述实际校验码与源校验码进行比较来实现对所述不可变内存区的诊断包括:计算所述不可变内存区中数据的实际校验码;将所述实际校验码与源校验码进行比较;当所述实际校验码与源校验码不一致时,确定所述不可变内存区出错。7.根据权利要求1-3任一项所述的方法,其特征在于,所述计算所述不可变内存区中数据的实际校验码包括:采用32位循环冗余校验算法计算所述不可变内存区中数据的实际校验码;所述预设的内存诊断算法包括:March-C算法。8.根据权利要求7所述的方法,其特征在于,调用所述March-C算法进行诊断包括:从安全的可变内存区中选出一部分可变内存区作为备份可变内存区;将待诊断的可变内存区中的数据备份至所述备份可变内存区;当所述待诊断的可变内存区诊断结束后,将所述备份可变内存区中的数据写入所述待诊断的可变内存区中。9.一种内存诊断装置,其特征在于,所述装置包括:...
【专利技术属性】
技术研发人员:吕晓昱,姚琥,张虎,
申请(专利权)人:中国农业银行股份有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。