CN114428700A - 一种内存自检方法及装置 - Google Patents
一种内存自检方法及装置 Download PDFInfo
- Publication number
- CN114428700A CN114428700A CN202111499067.0A CN202111499067A CN114428700A CN 114428700 A CN114428700 A CN 114428700A CN 202111499067 A CN202111499067 A CN 202111499067A CN 114428700 A CN114428700 A CN 114428700A
- Authority
- CN
- China
- Prior art keywords
- memory
- self
- partition
- authority
- tested
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供一种内存自检方法、装置、电子设备及计算机程序产品,方法包括:利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。本申请通过预定义编译器变量来获取虚拟内存地址对应的确切物理内存地址,并基于虚拟‑物理地址的映射关系,对具有不同用户态权限的内存分区采用不同的自检策略进行内存自检,能够针对安全操作系统的用户态场景进行内存自检,从而能够确保该系统内存的安全性和可靠性。
Description
技术领域
本申请涉及内存检测技术领域,具体涉及一种内存自检方法、装置、电子设备及计算机程序产品。
背景技术
目前,在轨道交通等系统领域中,各种控制系统和设备功能复杂、实时性强、安全性可靠性要求高,系统任何部件的错误或者故障都可能导致灾难性后果。因此对核心控制系统的内存自检也变得越来越重要。
现有的内存自检技术主要适用于嵌入式裸机(无操作系统)和操作系统内核态,通过对全部物理内存进行读写测试的方式进行。
然而对于安全操作系统(如QNX)的用户态程序,由于安全操作系统自身的安全防护功能,用户态程序只能访问本程序进程空间内的内存,不再能够直接访问全部物理内存。且针对本进程空间内的内存,也有部分区域被安全操作系统定义为只读,无法进行传统的内存读写测试。
综上,现有技术无法针对安全操作系统的用户态场景实现内存自检。
发明内容
本申请实施例提供一种内存自检方法、装置、电子设备及计算机程序产品,能够针对安全操作系统的用户态场景实现内存自检。
第一方面,本申请实施例提供一种内存自检方法,包括:
利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;
基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
在一个实施例中,所述用户态权限为只读权限或可读写权限;
所述基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检,包括:
当识别所述待测内存分区的用户态权限为只读权限时,基于所述内存映射关系,采用预设的第一自检策略对所述待测内存分区进行内存自检;
当识别所述待测内存分区的用户态权限为可读写权限时,基于所述内存映射关系,采用预设的第二自检策略对所述待测内存分区进行内存自检。
在一个实施例中,所述待测内存分区包括用户态权限为只读权限的第一待测内存分区和用户态权限为可读写权限的第二待测内存分区;
所述基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检,包括:
基于所述内存映射关系,采用预设的第一自检策略对所述第一待测内存分区进行内存自检;
基于所述内存映射关系,采用预设的第二自检策略对所述第二待测内存分区进行内存自检。
在一个实施例中,在所述利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系之前,还包括:
利用预设的内存锁定函数对所述待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系进行锁定。
在一个实施例中,在所述利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系之前,还包括:
利用预设的识别函数对各个内存分区进行用户态权限识别,将用户态权限具有可读权限的内存分区确定为所述待测内存分区。
在一个实施例中,所述用户态权限为只读权限的待测内存分区包括代码段区;所述用户态权限为可读写权限的待测内存分区包括堆区、数据段区和栈区中的一种或多种。
在一个实施例中,所述自检策略包括MD5校验法和Abraham内存读写测试法。
第二方面,本申请实施例提供一种内存自检装置,包括:
地址获取模块,用于利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;
内存自检模块,用于基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
第三方面,本申请实施例提供一种电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述的内存自检方法的步骤。
第四方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面所述的内存自检方法的步骤。
本申请实施例提供的内存自检方法、装置、电子设备及计算机程序产品,通过预定义编译器变量来获取虚拟内存地址对应的确切物理内存地址,并基于虚拟-物理地址的映射关系,对具有不同用户态权限的内存分区采用不同的自检策略进行内存自检,能够针对安全操作系统的用户态场景进行内存自检,从而能够确保该系统内存的安全性和可靠性。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的内存自检方法的流程示意图之一;
图2是本申请实施例提供的内存自检方法的流程示意图之二;
图3是本申请实施例提供的内存自检装置的结构示意图;
图4是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为内存自检方法的流程示意图。参照图1,本申请实施例提供一种内存自检方法,可以包括步骤:
S1、利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;
S2、基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
本申请实施例提供了一种针对安全操作系统的用户态内存空间的内存自检方法,本申请实施例以QNX安全操作系统作为举例进行说明。
首先利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系。需要说明的是,对于用户进程空间内的虚拟内存,被QNX操作系统细分成若干个区域,其中仅栈区、代码段、数据段、堆区是用户可见的。而这些用户态可见区域的虚拟内存地址范围是在程序编译链接过程中确定的,为了得到这些确切地址,需要用到编译器预定义变量,也就是在编译器编译期间直接定义一些变量用来保存这些编译参数,这些变量不显式定义在源代码中,但在源代码中可以调用、读写。通过在编译链接期间设置编译器变量,并在程序执行期间读取,就可以在用户态程序运行期间取得本用户进程空间各虚拟内存分段的确切地址。
然后,基于获取到的确切地址(根据内存映射关系确定),根据针对不同虚拟内存分段的不同用户态权限,采用不同自检策略进行内存自检。
本申请实施例提供的内存自检方法,通过预定义编译器变量来获取虚拟内存地址对应的确切物理内存地址,并基于虚拟-物理地址的映射关系,对具有不同用户态权限的内存分区采用不同的自检策略进行内存自检,能够针对安全操作系统的用户态场景进行内存自检,从而能够确保该系统内存的安全性和可靠性。
在一个实施例中,所述用户态权限为只读权限或可读写权限;
步骤S2可以包括:
S201、当识别所述待测内存分区的用户态权限为只读权限时,基于所述内存映射关系,采用预设的第一自检策略对所述待测内存分区进行内存自检;
S202、当识别所述待测内存分区的用户态权限为可读写权限时,基于所述内存映射关系,采用预设的第二自检策略对所述待测内存分区进行内存自检。
所述自检策略包括MD5校验法和Abraham内存读写测试法,其中,第一自检策略包括MD5校验法,第二自检策略包括Abraham内存读写测试法。
在本申请实施例中,可以是对单个待测内存分区进行内存自检,在实际应用中,可以不对所有的内存分区进行内存自检,而只对指定的某个内存分区进行内存自检。其中,该指定的待测内存分区的用户态权限可以是只读权限或可读写权限。相应地,当该待测内存分区的用户态权限为只读权限时,则采用预设的第一自检策略(如MD5校验、CRC校验等)对该待测内存分区进行内存自检;当该待测内存分区的用户态权限为可读写权限时,则采用预设的第二自检策略(如基于Abraham算法的内存读写测试等)对该待测内存分区进行内存自检。
可以理解的是,待测内存分区的用户态权限分为只读权限和可读写权限两种;其中,用户态权限为只读权限的待测内存分区包括代码段区;用户态权限为可读写权限的待测内存分区包括堆区、数据段区和栈区中的一种或多种。
需要说明的是,由于现有技术中内存自检技术主要适用于嵌入式裸机(无操作系统)和操作系统内核态,通过对全部物理内存进行读写测试的方式进行,而对于安全操作系统(如QNX)的用户态程序,由于安全操作系统自身的安全防护功能,用户态程序只能访问本程序进程空间内的内存,不再能够直接访问全部物理内存。且针对本进程空间内的内存,也有部分区域被安全操作系统定义为只读,无法进行传统的内存读写测试。
本申请实施例提供的内存自检方法,通过针对待测内存分区的用户态权限的不同,采用不同的自检策略进行内存自检,对于安全操作系统用户态场景的内存自检需求,能够可行地、有针对性地实现内存自检,把该场景的内存自检从不可行变为可行,有效提高了内存自检的针对性和可行性,从而进一步确保系统内存的安全性和可靠性。
在一个实施例中,所述待测内存分区包括用户态权限为只读权限的第一待测内存分区和用户态权限为可读写权限的第二待测内存分区;
步骤S2可以包括:
S211、基于所述内存映射关系,采用预设的第一自检策略对所述第一待测内存分区进行内存自检;其中,第一自检策略包括MD5校验法;
S212、基于所述内存映射关系,采用预设的第二自检策略对所述第二待测内存分区进行内存自检;其中,第二自检策略包括Abraham内存读写测试法。
需要说明的是,相对于上一实施例中对单个待测内存分区进行内存自检的方案,本申请实施例可以是同时对多个待测内存分区分别进行内存自检。具体地,多个待测内存分区中既包括用户态权限为只读权限的第一待测内存分区,又包括用户态权限为可读写权限的第二待测内存分区。
对于用户态权限为只读权限的第一待测内存分区,采用相应的第一自检策略(如MD5校验、CRC校验等)进行内存自检;对于用户态权限为可读写权限的第二待测内存分区,采用相应的第二自检策略(如基于Abraham算法的内存读写测试等)进行内存自检。
可以理解的是,与上一实施例相同的是,待测内存分区的用户态权限分为只读权限和可读写权限两种;其中,用户态权限为只读权限的待测内存分区包括代码段区;用户态权限为可读写权限的待测内存分区包括堆区、数据段区和栈区中的一种或多种。
本申请实施例提供的内存自检方法,能够同时对多个待测内存分区分别进行内存自检,通过针对待测内存分区的用户态权限的不同,采用不同的自检策略进行内存自检,对于安全操作系统用户态场景的内存自检需求,能够可行地、全面地、有针对性地实现内存自检,把该场景的内存自检从不可行变为可行,有效提高了内存自检的针对性和可行性,从而进一步确保系统内存的安全性和可靠性。
在一个实施例中,在所述利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系之前,还包括:
利用预设的内存锁定函数对所述待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系进行锁定。
需要说明的是,在用户态进程空间,用户程序可见的内存地址均为虚拟地址,不代表真实物理内存,而虚拟地址与真实物理内存间的映射由操作系统管理,这里实际有两种管理方式:
方式1:物理内存一经分配即固定不变,虚拟地址与物理内存之间的映射也保持不变;
方式2:物理内存的分配可以被操作系统动态调整,虚拟地址对应的物理内存可能被改变。
在本申请实施例中,可以利用预设的内存锁定函数对所述待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系进行锁定。具体地,可以使用QNX提供的API函数mlockall()来显式地锁定用户进程空间对应的物理内存,即强制要求按照方式1处理,进程空间对应的物理内存一经分配即固定不变。这样做的好处是用户程序总是运行在这些固定的物理内存上,则只要定期对这些物理内存执行自检算法,就能够确保用户程序所在的内存是健康的,不必关心用户进程以外的物理内存的情况。
本申请实施例提供的内存自检方法,通过利用预设的内存锁定函数对所述待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系进行锁定,在内存检测时只需要对固定的物理内存空间进行内存自检,而无需关心用户进行以外的物理内存的情况,即可保证用户程序所在的内存是健康的。从而本申请实施例缩小了内存自检的范围,提高了内存自检的效率,进而能够进一步确保系统内存的安全性和可靠性。
在一个实施例中,在所述利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系之前,还包括:
利用预设的识别函数对各个内存分区进行用户态权限识别,将用户态权限具有可读权限的内存分区确定为所述待测内存分区。
需要说明的是,对于安全操作系统(如QNX)的用户态程序,由于安全操作系统自身的安全防护功能,用户态程序只能访问本程序进程空间内的内存,不再能够直接访问全部物理内存。且针对本进程空间内的内存,也有部分区域被安全操作系统定义为只读,无法进行传统的内存读写测试。为了实现QNX等安全操作系统的用户态场景的内存自检,需要提前分析该安全操作系统的用户态内存排布方式和保护机制。
在本申请实施例中,利用预设的识别函数对各个内存分区进行用户态权限识别,将用户态权限具有可读权限的内存分区确定为所述待测内存分区。具体地,通过识别函数识别得到的QNX用户态进程内存空间的情况如下:
操作系统保留区:用户态不可读写,无需自检。
对象区(设备映射):外部设备在内存中的映射,驱动、进程间共享内存使用,用户态不可读写。操作系统管理并保证隔离,无需自检。
动态库区:与动态库接口的内存映射,用户态不可读写。操作系统管理并保证隔离,无需自检。
堆区:用户态可读写,需要进行读写测试。
数据段区:用户态可读写,需要进行读写测试。
代码段区:用户态只读,需要进行读校验。
栈区:用户态可读写,需要进行读写测试。
低地址保留区:用户态不可读写,无需自检。
由上述分析可以得知,在用户态进程空间,实际只有栈区、代码段区、数据段区、堆区是用户态可见(具有可读权限)的。其中代码段区是在程序被加载后即固定不变,用户态只读,无法写入和修改的(只读权限);其它三个区域可以随用户程序的执行被读取和写入(可读写权限)。需要说明的是,上述用户态权限中,只读权限和可读写权限均为具有可读权限。
本申请提供的内存自检方法,通过预先利用识别函数对各个内存分区进行用户态权限识别,将用户态权限具有可读权限的内存分区确定为所述待测内存分区,能够识别得到各个内存分区的用户态权限情况,继而根据用户态权限识别结果有针对性地实现内存自检功能。从而对于安全操作系统用户态场景的内存自检需求,能够可行地、有针对性地实现内存自检,把该场景的内存自检从不可行变为可行,有效提高了内存自检的针对性和可行性,从而进一步确保系统内存的安全性和可靠性。
请参见图2,基于上述方案,为便于更好的理解本申请实施例提供的内存自检方法,以下进行具体说明:
首先分析QNX用户态进程内存空间情况:
操作系统保留区:用户态不可读写,无需自检。
对象区(设备映射):外部设备在内存中的映射,驱动、进程间共享内存使用,用户态不可读写。操作系统管理并保证隔离,无需自检。
动态库区:与动态库接口的内存映射,用户态不可读写。操作系统管理并保证隔离,无需自检。
堆区:用户态可读写,需要进行读写测试。
数据段区:用户态可读写,需要进行读写测试。
代码段区:用户态只读,需要进行读校验。
栈区:用户态可读写,需要进行读写测试。
低地址保留区:用户态不可读写,无需自检。
由上述分析可以知道,在用户态进程空间,实际只有栈区、代码段区、数据段区、堆区是用户态可见的。其中代码段区是在程序被加载后即固定不变,用户态只读,无法写入和修改的;其它三个区域可以随用户程序的执行被读取和写入。
在用户态进程空间,用户程序可见的内存地址均为虚拟地址,不代表真实物理内存,而虚拟地址与真实物理内存间的映射由操作系统管理,有以下两种管理方式:
方式1:物理内存一经分配即固定不变,虚拟地址与物理内存之间的映射也保持不变;
方式2:物理内存的分配可以被操作系统动态调整,虚拟地址对应的物理内存可能被改变。
可以使用QNX提供的API函数mlockall()来显式地锁定用户进程空间对应的物理内存,即强制要求按照方式1处理,进程空间对应的物理内存一经分配即固定不变。这样做的好处是用户程序总是运行在这些固定的物理内存上,则只要定期对这些物理内存执行自检算法,就能够确保用户程序所在的内存是健康的,不必关心用户进程以外的物理内存的情况。
当然,对于方式2,不锁定物理内存,而是交由操作系统动态分配物理内存,这样做可以得到更好的程序执行效率,但由于用户进程可能频繁更换实际的物理内存位置,这就要求用户程序在每次新分配物理内存时都需要对新分配的物理内存执行自检算法,以确保新分配的物理内存是健康的。
另外,对于用户进程空间内的虚拟内存,被QNX操作系统细分成若干个区域,其中仅栈区、代码段区、数据段区、堆区是用户可见的。而这些用户态可见区域的虚拟内存地址范围是在程序编译链接过程中确定的,为了得到这些确切地址,需要用到编译器预定义变量,也就是在编译器编译期间直接定义一些变量用来保存这些编译参数,这些变量不显式定义在源代码中,但在源代码中可以调用、读写。并且全部这些内存分区的地址范围可以通过编译器预定义变量来确定。用户进程空间虚拟内存分段相关典型的编译器预定义变量可以如下:
__executable_start:用户空间起始地址,其后为栈区;
_btext:代码段起始地址,其后为代码段;
_etext:代码段结束地址,其后为数据段;
_edata:数据段结束地址,其后为堆区;
_end:用户空间结束地址;
通过在编译链接期间合理设置这些编译器变量,并在程序执行期间读取,就可以在用户态程序运行期间取得本用户进程空间各虚拟内存分段的确切地址,再针对不同虚拟内存分段的不同用户态权限,进行不同方式的内存自检。
其中由于代码段是只读且运行期间无法改变的,所以对代码段的自检方式可以采用MD5校验,即在自检时计算代码段的MD5校验值,检查MD5校验值是否与预期一致。
由于栈区、数据段、堆区都是用户态可读写的,所以可以采用传统的内存读写测试的方式验证其正确性,即通过执行特定的内存读取、写入序列,可以检测出大部分内存硬件错误,例如可以选用经典的Abraham算法实现,具体内存读写测试算法不再展开描述。
下面对本申请实施例提供的内存自检装置进行描述,下文描述的内存自检装置与上文描述的内存自检方法可相互对应参照。
请参见图3,本申请实施例提供一种内存自检装置,包括:
地址获取模块1,用于利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;
内存自检模块2,用于基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
在一个实施例中,所述用户态权限为只读权限或可读写权限;
所述内存自检模块2具体用于:
当识别所述待测内存分区的用户态权限为只读权限时,基于所述内存映射关系,采用预设的第一自检策略对所述待测内存分区进行内存自检;
当识别所述待测内存分区的用户态权限为可读写权限时,基于所述内存映射关系,采用预设的第二自检策略对所述待测内存分区进行内存自检。
在一个实施例中,所述待测内存分区包括用户态权限为只读权限的第一待测内存分区和用户态权限为可读写权限的第二待测内存分区;
所述内存自检模块2具体用于:
基于所述内存映射关系,采用预设的第一自检策略对所述第一待测内存分区进行内存自检;
基于所述内存映射关系,采用预设的第二自检策略对所述第二待测内存分区进行内存自检。
在一个实施例中,所述内存自检装置还包括:
内存绑定模块,用于利用预设的内存锁定函数对所述待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系进行锁定。
在一个实施例中,所述内存自检装置还包括:
分区识别模块,用于利用预设的识别函数对各个内存分区进行用户态权限识别,将用户态权限具有可读权限的内存分区确定为所述待测内存分区。
在一个实施例中,所述用户态权限为只读权限的待测内存分区包括代码段区;所述用户态权限为可读写权限的待测内存分区包括堆区、数据段区和栈区中的一种或多种。
在一个实施例中,所述自检策略包括MD5校验法和Abraham内存读写测试法。
可以理解的是上述装置项实施例,是与本申请方法项实施例相对应的,本申请实施例提供的内存自检装置,可以实现本申请任意一项方法项实施例提供的内存自检方法。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communication Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的计算机程序,以执行内存自检方法的步骤,例如包括:利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各实施例所提供的内存自检方法的步骤,例如包括:利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
另一方面,本申请实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行上述各实施例提供的方法的步骤,例如包括:利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种内存自检方法,其特征在于,包括:
利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;
基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
2.根据权利要求1所述的内存自检方法,其特征在于,所述用户态权限为只读权限或可读写权限;
所述基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检,包括:
当识别所述待测内存分区的用户态权限为只读权限时,基于所述内存映射关系,采用预设的第一自检策略对所述待测内存分区进行内存自检;
当识别所述待测内存分区的用户态权限为可读写权限时,基于所述内存映射关系,采用预设的第二自检策略对所述待测内存分区进行内存自检。
3.根据权利要求1所述的内存自检方法,其特征在于,所述待测内存分区包括用户态权限为只读权限的第一待测内存分区和用户态权限为可读写权限的第二待测内存分区;
所述基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检,包括:
基于所述内存映射关系,采用预设的第一自检策略对所述第一待测内存分区进行内存自检;
基于所述内存映射关系,采用预设的第二自检策略对所述第二待测内存分区进行内存自检。
4.根据权利要求1所述的内存自检方法,其特征在于,在所述利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系之前,还包括:
利用预设的内存锁定函数对所述待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系进行锁定。
5.根据权利要求1所述的内存自检方法,其特征在于,在所述利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系之前,还包括:
利用预设的识别函数对各个内存分区进行用户态权限识别,将用户态权限具有可读权限的内存分区确定为所述待测内存分区。
6.根据权利要求2或3所述的内存自检方法,其特征在于,所述用户态权限为只读权限的待测内存分区包括代码段区;所述用户态权限为可读写权限的待测内存分区包括堆区、数据段区和栈区中的一种或多种。
7.根据权利要求1所述的内存自检方法,其特征在于,所述自检策略包括MD5校验法和Abraham内存读写测试法。
8.一种内存自检装置,其特征在于,包括:
地址获取模块,用于利用预定义的编译器变量获取待测内存分区的虚拟内存地址与物理内存绑定的内存映射关系;
内存自检模块,用于基于所述内存映射关系,采用与所述待测内存分区的用户态权限相匹配的自检策略对所述待测内存分区进行内存自检。
9.一种电子设备,包括处理器和存储有计算机程序的存储器,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的内存自检方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的内存自检方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111499067.0A CN114428700A (zh) | 2021-12-09 | 2021-12-09 | 一种内存自检方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111499067.0A CN114428700A (zh) | 2021-12-09 | 2021-12-09 | 一种内存自检方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114428700A true CN114428700A (zh) | 2022-05-03 |
Family
ID=81310991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111499067.0A Pending CN114428700A (zh) | 2021-12-09 | 2021-12-09 | 一种内存自检方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114428700A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382785A (zh) * | 2023-06-01 | 2023-07-04 | 紫光同芯微电子有限公司 | 用于数据处理的方法及装置、计算设备及存储介质 |
-
2021
- 2021-12-09 CN CN202111499067.0A patent/CN114428700A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382785A (zh) * | 2023-06-01 | 2023-07-04 | 紫光同芯微电子有限公司 | 用于数据处理的方法及装置、计算设备及存储介质 |
CN116382785B (zh) * | 2023-06-01 | 2023-09-12 | 紫光同芯微电子有限公司 | 用于数据处理的方法及装置、计算设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8918678B2 (en) | Functional testing of a processor design | |
EP3506104B1 (en) | Coverage test support device and coverage test support method | |
US9098616B2 (en) | Analyzing computer programs to identify errors | |
US8397104B2 (en) | Creation of test plans | |
US10289536B2 (en) | Distinguishing public and private code in testing environments | |
CN109189405A (zh) | 一种验证程序Flash数据一致性的方法及系统 | |
CN103208313B (zh) | 一种检测方法及系统 | |
US9443613B2 (en) | Advanced memory test diagnostics | |
CN104217139A (zh) | 处理系统 | |
CN114428700A (zh) | 一种内存自检方法及装置 | |
CN112925524A (zh) | 一种检测驱动程序中不安全直接存储器访问的方法及装置 | |
CN110674500A (zh) | 存储介质病毒查杀方法、装置、计算机设备和存储介质 | |
KR102254159B1 (ko) | 운영체제 커널 메모리의 실시간 오류 검출 방법 | |
CN110222501B (zh) | 一种运行时代码的检查方法、存储介质 | |
Jianming et al. | PVDF: An automatic patch-based vulnerability description and fuzzing method | |
CN110826114B (zh) | 基于ssd安全擦除后的用户数据测试方法和装置 | |
US20160124840A1 (en) | Memory error tracking in a multiple-user development environment | |
CN115080426A (zh) | 程序文件的检测方法及装置、存储介质和电子设备 | |
US10997060B2 (en) | Device, system, and method for detecting a defect in a computer program by generating and testing semantically equivalent computer program variants | |
CN113820649A (zh) | 一种电能表固件的寿命可靠性测试方法和装置 | |
CN113094221B (zh) | 故障注入方法、装置、计算机设备以及可读存储介质 | |
CN113377613B (zh) | 基于Windows系统的硬盘测试监控方法、装置及计算机设备 | |
CN109656580B (zh) | 串口型nand flash数据清零处理方法及系统 | |
CN117931540A (zh) | 预留指令处理方法、装置、电子设备和存储介质 | |
CN116521246A (zh) | 基于c6678芯片的软件加载方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |