CN106021014B - 一种内存管理方法及装置 - Google Patents

一种内存管理方法及装置 Download PDF

Info

Publication number
CN106021014B
CN106021014B CN201610318337.6A CN201610318337A CN106021014B CN 106021014 B CN106021014 B CN 106021014B CN 201610318337 A CN201610318337 A CN 201610318337A CN 106021014 B CN106021014 B CN 106021014B
Authority
CN
China
Prior art keywords
adjacent cell
internal storage
storage location
cell
break down
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.)
Active
Application number
CN201610318337.6A
Other languages
English (en)
Other versions
CN106021014A (zh
Inventor
周茂庸
刘胜
庞潇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201610318337.6A priority Critical patent/CN106021014B/zh
Publication of CN106021014A publication Critical patent/CN106021014A/zh
Application granted granted Critical
Publication of CN106021014B publication Critical patent/CN106021014B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供了一种内存管理方法及装置,其中,方法包括:在启动计算机的操作系统后,获取对应操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构;获取携带目标地址信息的错误检查和纠正ECC错误信息;根据多个内存单元分别对应的地址信息及目标地址信息确定目标内存单元;根据多个内存单元之间的排列结构,确定与目标内存单元相邻的至少一个相邻内存单元;分别检测每一个相邻内存单元是否发生故障;当存在发生故障的相邻内存单元时,隔离目标内存单元和每一个发生故障的相邻内存单元,以使操作系统不再利用目标内存单元和发生故障的相邻内存单元存储业务数据。通过本发明的技术方案,可确保计算机能够正常工作。

Description

一种内存管理方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种内存管理方法及装置。
背景技术
内存是计算机的重要组件,当内存中的相应内存模块出现故障时,操作系统则无法利用故障内存模块正确读写业务数据,需要对内存进行相应的管理。
目前,对计算机的内存进行管理时,主要通过在计算机的操作系统中设置ECC(Error Checking and Correction,错误检查和纠正)功能模块,在操作系统运行时,如果操作系统无法利用当前内存模块正确读写业务数据,即当前内存模块出现故障时,产生对应该故障内存模块的ECC错误信息,ECC功能模块根据ECC错误信息对故障内存模块进行临时屏蔽,并修复故障内存模块。
但是,由于内存模块的集成度越来越高,在当前内存模块出现故障时,可能导致与其相邻的其他内存模块也出现故障,当操作系统无法在其相邻的内存模块上正确读写业务数据时,将产生更多的ECC错误信息,而过多的ECC错误信息,可能导致操作系统崩溃,进而使计算机无法正常工作。
发明内容
本发明实施例提供了一种内存管理方法及装置,可确保计算机能够正常工作。
第一方面,本发明实施例提供了一种内存管理方法,包括:
S0:在启动计算机的操作系统后,获取对应所述操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构;
S1:获取携带目标地址信息的错误检查和纠正ECC错误信息;
S2:根据所述多个内存单元分别对应的地址信息及所述目标地址信息确定目标内存单元;
S3:根据所述多个内存单元之间的排列结构,确定与所述目标内存单元相邻的至少一个相邻内存单元;
S4:分别检测每一个所述相邻内存单元是否发生故障;
S5:当存在发生故障的相邻内存单元时,隔离所述目标内存单元和每一个所述发生故障的相邻内存单元,以使所述操作系统不再利用所述目标内存单元和每一个所述发生故障的相邻内存单元存储业务数据。
进一步的,在所述在启动计算机的操作系统后之前,还包括:
预先在计算机的基本输出输出系统中设置内存管理模块;
在启动计算机的基本输入输出系统时,利用所述内存管理模块分别检测对应当前计算机的每一个内存单元是否发生故障;当检测到至少一个内存单元发生故障时,获取每一个发生故障的内存单元的地址信息,并将每一个发生故障的内存单元的地址信息存储至非易失性存储介质;根据所述非易失性存储介质中存储的每一个发生故障的内存单元的地址信息,隔离每一个发生故障的内存单元,以将当前未隔离的内存单元作为对应所述操作系统的多个内存单元。
进一步的,在所述隔离所述目标内存单元和每一个所述发生故障的相邻内存单元之后,还包括:
将每一个所述发生故障的相邻内存单元和所述目标内存单元分别对应的地址信息存储至所述非易失性存储介质。
进一步的,
还包括:预先设置测试参数n和故障阈值,其中,n为不小于3的整数;
所述分别检测每一个所述相邻内存单元是否发生故障,包括:
分别在每一个所述相邻内存单元上读写n次测试数据;
检测每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数;
根据测试参数n及每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数计算当前相邻内存单元的非故障概率;
分别比较每一个相邻内存单元对应的非故障概率和所述故障阈值,在当前相邻内存单元对应的非故障概率小于所述故障阈值时,确定当前相邻内存单元发生故障。
进一步的,在所述确定与所述目标内存单元相邻的至少一个相邻内存单元之后,在所述分别在每一个所述相邻内存单元上读写n次测试数据之前,进一步包括:
分别检测每一个所述相邻内存单元是否处于空闲状态,当每一个所述相邻内存单元均处于空闲状态时,执行所述分别在每一个所述相邻内存单元上读写n次测试数据。
第二方面,本发明实施例提供了一种内存管理装置,包括:
第一获取模块,用于在启动计算机的操作系统后,获取对应所述操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构;
第二获取模块,用于获取携带目标地址信息的错误检查和纠正ECC错误信息;
第一确定模块,用于根据所述多个内存单元分别对应的地址信息及所述目标地址信息确定目标内存单元;
第二确定模块,用于根据所述多个内存单元之间的排列结构,确定与所述目标内存单元相邻的至少一个相邻内存单元;
故障检测模块,用于分别检测每一个所述相邻内存单元是否发生故障;
隔离处理模块,用于当存在发生故障的相邻内存单元时,隔离所述目标内存单元和每一个所述发生故障的相邻内存单元,以使所述操作系统不再利用所述目标内存单元和每一个所述发生故障的相邻内存单元存储业务数据。
进一步的,还包括:
第一设置模块,用于预先在计算机的基本输出输出系统中设置内存管理模块;
所述内存管理模块,用于在启动计算机的基本输入输出系统时,分别检测对应当前计算机的每一个内存单元是否发生故障;当检测到至少一个内存单元发生故障时,获取每一个发生故障的内存单元的地址信息,并将每一个发生故障的内存单元的地址信息存储至非易失性存储介质;根据所述非易失性存储介质中存储的每一个发生故障的内存单元的地址信息,隔离每一个发生故障的内存单元,以将当前未隔离的内存单元作为对应所述操作系统的多个内存单元。
进一步的,还包括:
存储处理模块,用于将每一个所述发生故障的相邻内存单元和所述目标内存单元分别对应的地址信息存储至所述非易失性存储介质。
进一步的,
还包括:第二设置模块,用于预先设置测试参数n和故障阈值,其中,n为不小于3的整数;
所述故障检测模块,包括:
读写控制子单元,用于分别在每一个所述相邻内存单元上读写n次测试数据;
读写检测子单元,用于检测每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数;
计算子单元,用于根据测试参数n及每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数计算当前相邻内存单元的非故障概率;
处理子单元,用于分别比较每一个相邻内存单元对应的非故障概率和所述故障阈值,在当前相邻内存单元对应的非故障概率小于所述故障阈值时,确定当前相邻内存单元发生故障。
进一步的,还包括:
状态检测模块,用于分别检测每一个所述相邻内存单元是否处于空闲状态,当每一个所述相邻内存单元均处于空闲状态时,执行所述分别在每一个所述相邻内存单元上读写n次测试数据。
本发明实施例提供了一种内存管理方法及装置,在启动计算机的操作系统后,首先获取对应操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构,以及,获取操作系统在运行过程中因存在内存单元出现故障而产生的ECC错误信息,进而确定ECC错误信息对应的目标内存单元,即可根据多个内存单元之间的排列结构,针对与目标内存单元相邻的每一个相邻内存单元进行故障检测,对每一个发生故障的相邻内存单元和目标内存单元进行隔离,以使运行中的操作系统再使用已经发生故障的相邻内存单元,即不会再产生对应已经发生故障的相邻内存单元的ECC错误信息,减少ECC错误信息的数量,确保计算机能够正常工作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种内存管理方法的流程图;
图2是本发明一实施例提供的另一种内存管理方法的流程图;
图3是本发明一实施例提供的一个内存中集成的多个内存模块之间的排列结构示意图;
图4是本发明一实施例提供的一种内存管理装置的结构图;
图5是本发明一实施例提供的另一种内存管理装置的结构图;
图6是本发明一实施例提供的又一种内存管理装置的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种内存管理方法,包括:
S0:在启动计算机的操作系统后,获取对应所述操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构;
S1:获取携带目标地址信息的错误检查和纠正ECC错误信息;
S2:根据所述多个内存单元分别对应的地址信息及所述目标地址信息确定目标内存单元;
S3:根据所述多个内存单元之间的排列结构,确定与所述目标内存单元相邻的至少一个相邻内存单元;
S4:分别检测每一个所述相邻内存单元是否发生故障;
S5:当存在发生故障的相邻内存单元时,隔离所述目标内存单元和每一个所述发生故障的相邻内存单元,以使所述操作系统不再利用所述目标内存单元和每一个所述发生故障的相邻内存单元存储业务数据。
本发明上述实施例中,在启动计算机的操作系统后,首先获取对应操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构,以及,获取操作系统在运行过程中因存在内存单元出现故障而产生的ECC错误信息,进而确定ECC错误信息对应的目标内存单元,即可根据多个内存单元之间的排列结构,针对与目标内存单元相邻的每一个相邻内存单元进行故障检测,对每一个发生故障的相邻内存单元和目标内存单元进行隔离,以使运行中的操作系统再使用已经发生故障的相邻内存单元,即不会再产生对应已经发生故障的相邻内存单元的ECC错误信息,减少ECC错误信息的数量,确保计算机能够正常工作。
为了进一步减少ECC错误信息的数量,本发明一个优选实施例中,还包括:
预先在计算机的基本输出输出系统中设置内存管理模块;
在启动计算机的基本输入输出系统时,利用所述内存管理模块分别检测对应当前计算机的每一个内存单元是否发生故障;当检测到至少一个内存单元发生故障时,获取每一个发生故障的内存单元的地址信息,并将每一个发生故障的内存单元的地址信息存储至非易失性存储介质;根据所述非易失性存储介质中存储的每一个发生故障的内存单元的地址信息,隔离每一个发生故障的内存单元,以将当前未隔离的内存单元作为对应所述操作系统的多个内存单元。
本发明上述实施例中,在计算机开机过程中,启动操作系统之前,首先需要启动计算机的基本输入输出系统,通过集成在基本输入输出系统中的内存管理模块对计算机的每一个内存单元分别进行检测,检测到故障内存单元,可根据内存对应的SPD(SerialPresence Detect,内存资料)读取故障内存单元的地址信息,进而将故障内存单元的地址信息存储至非易失性存储介质,故障内存单元在基本输入输出系统阶段被永久隔离,被隔离的故障内存单元不再属于操作系统对应的可用内存区域。
需要说明的是,一台计算机内可能安装多个内存,因此,内存单元的地址信息这里应包括内存单元在当前内存中的物理地址以及当前内存的内存序列号。
进一步的,由于基本输入输出系统阶段依赖于非易失性存储介质中存储的故障内存单元的地址信息对故障内存单元进行永久隔离,为了实现对本次操作系统运行过程中出现故障的内存单元在下次启动操作系统时不再进入操作系统的可用内存区域,对本次操作系统运行过程中出现故障的内存单元进行永久隔离,本发明一个优选实施例中,在所述隔离所述目标内存单元和每一个所述发生故障的相邻内存单元之后,还包括:
将每一个所述发生故障的相邻内存单元和所述目标内存单元分别对应的地址信息存储至所述非易失性存储介质。
进一步的,由于内存单元的集成度较高,运行中的操作系统频繁在一个内存单元上读写业务数据时,可能导致当前内存单元出现故障,甚至导致与当前内存单元相邻的相邻内存单元出现故障,为了准确检测出相邻内存单元是否发生故障,本发明一个优选实施例中,还包括:预先设置测试参数n和故障阈值,其中,n为不小于3的整数;
所述分别检测每一个所述相邻内存单元是否发生故障,包括:
分别在每一个所述相邻内存单元上读写n次测试数据;
检测每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数;
根据测试参数n及每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数计算当前相邻内存单元的非故障概率;
分别比较每一个相邻内存单元对应的非故障概率和所述故障阈值,在当前相邻内存单元对应的非故障概率小于所述故障阈值时,确定当前相邻内存单元发生故障。
需要说明的是,这里还可以对目标内存单元进行强制检测,即通过与上述实施例中相似的方法准确检测目标内存单元是否发生故障,避免目标内存单元因偶发性错误而产生了ECC错误信息时,被错误的隔离,相应的,当检测出目标内存单元为偶发性错误时,释放目标内存单元,可增大操作系统的可用内存空间。
本发明一实施例中,针对目标内存单元和发生故障的相邻内存单元进行隔离时,可利用操作系统的页隔离技术,在目标内存单元和发生故障的相邻内存单元为空闲状态时,隔离目标内存单元和发生故障的相邻内存单元,暂时离开操作系统对应的可用内存区域,对目标内存单元和发生故障的相邻内存单元进行临时屏蔽。
进一步的,为了防止相邻内存单元处于工作状态,即操作系统正在使用相邻内存单元存储业务数据时,因改写相邻内存单元上的业务数据而影响操作系统的正常运行,本发明一个优选实施例中,在所述确定与所述目标内存单元相邻的至少一个相邻内存单元之后,在所述分别在每一个所述相邻内存单元上读写n次测试数据之前,进一步包括:
分别检测每一个所述相邻内存单元是否处于空闲状态,当每一个所述相邻内存单元均处于空闲状态时,执行所述分别在每一个所述相邻内存单元上读写n次测试数据。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
如图2所示,本发明实施例提供了一种内存管理方法,包括:
步骤201,在计算机的基本输入输出系统中设置内存管理模块,以及设置测试参数n和故障阈值。
这里,测试参数n为不小于3的整数。
步骤202,在启动基本输入输出系统时,利用内存管理模块分别检测对应当前计算机的每一个内存单元是否发生故障。
举例来说,如图3所示的一个内存,该内存包括内存单元A、B、C、D、E、F、G、H、I,这里即分别检测内存单元A、B、C、D、E、F、G、H、I是否发生故障。
步骤203,获取每一个发生故障的内存单元的地址信息,将每一个发生故障的内存单元的地址信息存储至非易失性存储介质。
本发明一实施例中,一台计算机可对应多个内存,因此,内存单元的地址信息的地址信息可以包括当前内存单元对应的内存序列号以及当前内存单元在对应的内存中的物理地址。
举例来说,当步骤202中检测到内存单元F和内存单元H发生故障时,则将内存单元F和内存单元H分别对应的地址信息存储至非易失性存储介质。
步骤204,根据非易失性存储介质中存储的每一个发生故障的内存单元的地址信息,隔离每一个发生故障的内存单元。
这里,在基本输入输出系统阶段隔离发生故障的内存单元,使得计算机的操作系统在启动后不能再使用发生故障的内存单元,即被隔离的发生故障的内存单元不再进入启动后的操作系统的可用内存区域,实现对发生故障的内存单元进行永久隔离。
本发明一实施例中,内存单元F和内存单元H不再进入启动后的操作系统的可用内存区域,以将内存单元A、B、C、D、E、G、I作为对应操作系统的内存单元,即启动后的操作系统对应的可用内存区域包括内存单元A、B、C、D、E、G、I。
步骤205,在启动计算机的操作系统后,获取对应操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构。
需要说明的是,多个内存单元之间的排列结构指的是多个内存单元之间在物理意义上的排列结构,多个内存单元可以位于计算机内多个不同的内存中,同一个内存中的多个内存单元以相应的行列矩阵结构排列,本发明实施例仅以当前计算机对应如图3所示的一个内存为例,内存单元A、B、C、D、E、F、G、H、I在内存中构成三行三列的排列结构。
步骤206,获取携带目标地址信息的ECC错误信息。
本发明一实施例中,可通过监控操作系统中的ECC功能模块,获取操作系统在使用其可用内存区域的内存单元时,因当前内存单元无法正确读写业务数据而产生的ECC错误信息。
步骤207,根据多个内存单元分别对应的地址信息及目标地址信息确定目标内存单元。
步骤208,根据多个内存单元之间的排列结构,确定与目标内存单元相邻的至少一个相邻内存单元。
举例来说,如图3所示,当目标内存单元为E时,由于内存单元F和H在步骤204中已经被隔离,因此,相邻内存单元包括内存单元A、B、C、D、G、I。
步骤209,分别检测每一个相邻内存单元是否处于空闲状态。
这里,应确保每一个相邻内存单元均处于空闲状态时,才能执行步骤210。
步骤210,分别在每一个相邻内存单元上读写n次测试数据。
步骤211,检测每一个相邻内存单元分别对应的能够正确读写测试数据的次数。
步骤212,根据测试参数n及每一个相邻内存单元分别对应的能够正确读写测试数据的次数计算当前相邻内存单元的非故障概率。
步骤213,分别比较每一个相邻内存单元对应的非故障概率和故障阈值,在当前相邻内存单元对应的非故障概率小于故障阈值时,确定当前相邻内存单元发生故障。
本发明一实施例中,测试参数和故障阈值可以是结合实际业务场景设置的经验值,比如,可以将测试参数n设置为100,故障阈值设置为0.02。
步骤210至步骤213中,当相邻内存单元A、B、C、D、G、I分别对应的能够正确读写测试数据的次数为100、100、99、98、0、1时,则相邻内存单元A、B、C、D、G、I分别对应的非故障概率分别为:1、1、0.99、0.98、0、0.01,相应的,即可确定相邻内存单元G和I发生故障。
步骤214,隔离目标内存单元和每一个发生故障的相邻内存单元。
这里,可利用操作系统的页隔离技术对发生故障的相邻内存单元G和I进行临时屏蔽,使得运行中的操作系统不再使用相邻内存单元G和I存储业务数据,相应的,即不会再触发对应相邻内存单元G和I的ECC错误信息,减少ECC错误信息的数量,确保计算机能够正常工作。
步骤215,将每一个发生故障的相邻内存单元和目标内存单元分别对应的地址信息存储至非易失性存储介质。
这里,即将相邻内存单元G和I分别对应的地址信息存储至非易失性存储介质,在下次启动操作系统时,内存单元F、H、G、I都不会再进入下次启动的操作系统的可用内存区域,实现对内存单元F、H、G、I进行永久隔离。
如图4所示,本发明实施例提供了一种内存管理装置,包括:
第一获取模块401,用于在启动计算机的操作系统后,获取对应所述操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构;
第二获取模块402,用于获取携带目标地址信息的错误检查和纠正ECC错误信息;
第一确定模块403,用于根据所述多个内存单元分别对应的地址信息及所述目标地址信息确定目标内存单元;
第二确定模块404,用于根据所述多个内存单元之间的排列结构,确定与所述目标内存单元相邻的至少一个相邻内存单元;
故障检测模块405,用于分别检测每一个所述相邻内存单元是否发生故障;
隔离处理模块406,用于当存在发生故障的相邻内存单元时,隔离所述目标内存单元和每一个所述发生故障的相邻内存单元,以使所述操作系统不再利用所述目标内存单元和每一个所述发生故障的相邻内存单元存储业务数据。
进一步的,为了进一步减少ECC错误信息的数量,如图5所示,本发明一个优选实施例中,还包括:
第一设置模块501,用于预先在计算机的基本输出输出系统中设置内存管理模块502;
所述内存管理模块502,用于在启动计算机的基本输入输出系统时,分别检测对应当前计算机的每一个内存单元是否发生故障;当检测到至少一个内存单元发生故障时,获取每一个发生故障的内存单元的地址信息,并将每一个发生故障的内存单元的地址信息存储至非易失性存储介质;根据所述非易失性存储介质中存储的每一个发生故障的内存单元的地址信息,隔离每一个发生故障的内存单元,以将当前未隔离的内存单元作为对应所述操作系统的多个内存单元。
进一步的,为了实现对本次操作系统运行过程中出现故障的内存单元在下次启动操作系统时进行永久隔离,如图5所示,本发明一个优选实施例中,还包括:
存储处理模块503,用于将每一个所述发生故障的相邻内存单元和所述目标内存单元分别对应的地址信息存储至所述非易失性存储介质。
进一步的,为了准确检测出相邻内存单元是否发生故障,如图6所示,本发明一个优选实施例中,还包括:
第二设置模块601,用于预先设置测试参数n和故障阈值,其中,n为不小于3的整数;
所述故障检测模块405,包括:
读写控制子单元(附图中未示出),用于分别在每一个所述相邻内存单元上读写n次测试数据;
读写检测子单元(附图中未示出),用于检测每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数;
计算子单元(附图中未示出),用于根据测试参数n及每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数计算当前相邻内存单元的非故障概率;
处理子单元(附图中未示出),用于分别比较每一个相邻内存单元对应的非故障概率和所述故障阈值,在当前相邻内存单元对应的非故障概率小于所述故障阈值时,确定当前相邻内存单元发生故障。
进一步的,为了防止相邻内存单元处于工作状态,即操作系统正在使用相邻内存单元存储业务数据时,因改写相邻内存单元上的业务数据而影响操作系统的正常运行,如图6所示,本发明一个优选实施例中,还包括:
状态检测模块602,用于分别检测每一个所述相邻内存单元是否处于空闲状态,当每一个所述相邻内存单元均处于空闲状态时,执行所述分别在每一个所述相邻内存单元上读写n次测试数据。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明各个实施例至少具有如下有益效果:
1、在启动计算机的操作系统后,首先获取对应操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构,以及,获取操作系统在运行过程中因存在内存单元出现故障而产生的ECC错误信息,进而确定ECC错误信息对应的目标内存单元,即可根据多个内存单元之间的排列结构,针对与目标内存单元相邻的每一个相邻内存单元进行故障检测,对每一个发生故障的相邻内存单元和目标内存单元进行隔离,以使运行中的操作系统再使用已经发生故障的相邻内存单元,即不会再产生对应已经发生故障的相邻内存单元的ECC错误信息,减少ECC错误信息的数量,确保计算机能够正常工作。
2、通过集成在基本输入输出系统中的内存管理模块,针对对应计算机的每一个内存单元分别进行检测,检测到故障内存单元时,可根据内存对应的SPD读取故障内存单元的地址信息,进而将故障内存单元的地址信息存储至非易失性存储介质,故障内存单元在基本输入输出系统阶段被永久隔离,不再进入启动后的操作系统对应的可用内存区域,进一步减少ECC错误信息的数量。
3、将每一个发生故障的相邻内存单元和目标内存单元分别对应的地址信息存储至非易失性存储介质,可以实现对本次操作系统运行过程中出现故障的目标内存单元和相邻内存单元在下次启动操作系统时进行永久隔离。
4、对目标内存单元和相邻内存单元分别进行强制检测,提高检测结果的准确性,避免目标内存单元因偶发性错误而产生了ECC错误信息时,被错误的隔离,相应的,当检测出目标内存单元为偶发性错误时,释放目标内存单元,可增大操作系统的可用内存空间。
5、只有在相邻内存单元处于空闲状态时,才对目标内存单元和相邻内存单元进行强制检测,防止相邻内存单元处于工作状态,即操作系统正在使用相邻内存单元存储业务数据时,因改写相邻内存单元上的业务数据而影响操作系统的正常运行。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (8)

1.一种内存管理方法,其特征在于,包括:
在启动计算机的操作系统后,获取对应所述操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构;
获取携带目标地址信息的错误检查和纠正ECC错误信息;
根据所述多个内存单元分别对应的地址信息及所述目标地址信息确定目标内存单元;
根据所述多个内存单元之间的排列结构,确定与所述目标内存单元相邻的至少一个相邻内存单元;
分别检测每一个所述相邻内存单元是否发生故障;
当存在发生故障的相邻内存单元时,隔离所述目标内存单元和每一个所述发生故障的相邻内存单元,以使所述操作系统不再利用所述目标内存单元和每一个所述发生故障的相邻内存单元存储业务数据;
还包括:
预先在计算机的基本输入输出系统中设置内存管理模块;
在启动计算机的基本输入输出系统时,利用所述内存管理模块分别检测对应当前计算机的每一个内存单元是否发生故障;当检测到至少一个内存单元发生故障时,获取每一个发生故障的内存单元的地址信息,并将每一个发生故障的内存单元的地址信息存储至非易失性存储介质;根据所述非易失性存储介质中存储的每一个发生故障的内存单元的地址信息,隔离每一个发生故障的内存单元,以将当前未隔离的内存单元作为对应所述操作系统的多个内存单元。
2.根据权利要求1所述的内存管理方法,其特征在于,在所述隔离所述目标内存单元和每一个所述发生故障的相邻内存单元之后,还包括:
将每一个所述发生故障的相邻内存单元和所述目标内存单元分别对应的地址信息存储至所述非易失性存储介质。
3.根据权利要求1至2中任一所述的内存管理方法,其特征在于,
还包括:预先设置测试参数n和故障阈值,其中,n为不小于3的整数;
所述分别检测每一个所述相邻内存单元是否发生故障,包括:
分别在每一个所述相邻内存单元上读写n次测试数据;
检测每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数;
根据测试参数n及每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数计算当前相邻内存单元的非故障概率;
分别比较每一个相邻内存单元对应的非故障概率和所述故障阈值,在当前相邻内存单元对应的非故障概率小于所述故障阈值时,确定当前相邻内存单元发生故障。
4.根据权利要求3所述的内存管理方法,其特征在于,在所述确定与所述目标内存单元相邻的至少一个相邻内存单元之后,在所述分别在每一个所述相邻内存单元上读写n次测试数据之前,进一步包括:
分别检测每一个所述相邻内存单元是否处于空闲状态,当每一个所述相邻内存单元均处于空闲状态时,执行所述分别在每一个所述相邻内存单元上读写n次测试数据。
5.一种内存管理装置,其特征在于,包括:
第一获取模块,用于在启动计算机的操作系统后,获取对应所述操作系统的多个内存单元分别对应的地址信息以及多个内存单元之间的排列结构;
第二获取模块,用于获取携带目标地址信息的错误检查和纠正ECC错误信息;
第一确定模块,用于根据所述多个内存单元分别对应的地址信息及所述目标地址信息确定目标内存单元;
第二确定模块,用于根据所述多个内存单元之间的排列结构,确定与所述目标内存单元相邻的至少一个相邻内存单元;
故障检测模块,用于分别检测每一个所述相邻内存单元是否发生故障;
隔离处理模块,用于当存在发生故障的相邻内存单元时,隔离所述目标内存单元和每一个所述发生故障的相邻内存单元,以使所述操作系统不再利用所述目标内存单元和每一个所述发生故障的相邻内存单元存储业务数据;
还包括:
第一设置模块,用于预先在计算机的基本输入输出系统中设置内存管理模块;
所述内存管理模块,用于在启动计算机的基本输入输出系统时,分别检测对应当前计算机的每一个内存单元是否发生故障;当检测到至少一个内存单元发生故障时,获取每一个发生故障的内存单元的地址信息,并将每一个发生故障的内存单元的地址信息存储至非易失性存储介质;根据所述非易失性存储介质中存储的每一个发生故障的内存单元的地址信息,隔离每一个发生故障的内存单元,以将当前未隔离的内存单元作为对应所述操作系统的多个内存单元。
6.根据权利要求5所述的内存管理装置,其特征在于,还包括:
存储处理模块,用于将每一个所述发生故障的相邻内存单元和所述目标内存单元分别对应的地址信息存储至所述非易失性存储介质。
7.根据权利要求5至6中任一所述的内存管理装置,其特征在于,
还包括:第二设置模块,用于预先设置测试参数n和故障阈值,其中,n为不小于3的整数;
所述故障检测模块,包括:
读写控制子单元,用于分别在每一个所述相邻内存单元上读写n次测试数据;
读写检测子单元,用于检测每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数;
计算子单元,用于根据测试参数n及每一个所述相邻内存单元分别对应的能够正确读写测试数据的次数计算当前相邻内存单元的非故障概率;
处理子单元,用于分别比较每一个相邻内存单元对应的非故障概率和所述故障阈值,在当前相邻内存单元对应的非故障概率小于所述故障阈值时,确定当前相邻内存单元发生故障。
8.根据权利要求7所述的内存管理装置,其特征在于,还包括:
状态检测模块,用于分别检测每一个所述相邻内存单元是否处于空闲状态,当每一个所述相邻内存单元均处于空闲状态时,执行所述分别在每一个所述相邻内存单元上读写n次测试数据。
CN201610318337.6A 2016-05-12 2016-05-12 一种内存管理方法及装置 Active CN106021014B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610318337.6A CN106021014B (zh) 2016-05-12 2016-05-12 一种内存管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610318337.6A CN106021014B (zh) 2016-05-12 2016-05-12 一种内存管理方法及装置

Publications (2)

Publication Number Publication Date
CN106021014A CN106021014A (zh) 2016-10-12
CN106021014B true CN106021014B (zh) 2018-12-14

Family

ID=57099604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610318337.6A Active CN106021014B (zh) 2016-05-12 2016-05-12 一种内存管理方法及装置

Country Status (1)

Country Link
CN (1) CN106021014B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109086151A (zh) * 2017-06-13 2018-12-25 中兴通讯股份有限公司 一种服务器上隔离内存故障的方法及装置
CN109343986B (zh) * 2018-08-17 2020-12-22 华为技术有限公司 处理内存故障的方法与计算机系统
CN110858167B (zh) * 2018-08-22 2023-06-27 阿里巴巴集团控股有限公司 一种内存故障隔离方法、装置及设备
CN109753378A (zh) * 2019-01-02 2019-05-14 浪潮商用机器有限公司 一种内存故障的隔离方法、装置、系统及可读存储介质
CN110955549B (zh) * 2019-11-08 2023-05-02 北京字节跳动网络技术有限公司 故障内存判定方法、装置及电子设备
CN113495799B (zh) * 2020-03-20 2024-04-12 华为技术有限公司 一种内存故障处理方法及相关设备
CN112102875B (zh) * 2020-09-23 2023-04-11 深圳佰维存储科技股份有限公司 Lpddr测试方法、装置、可读存储介质及电子设备
CN115495301A (zh) * 2021-06-18 2022-12-20 华为技术有限公司 一种故障处理方法、装置、设备及系统
CN113900843A (zh) * 2021-09-08 2022-01-07 联想(北京)有限公司 一种检测修复方法、装置、设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222025A (zh) * 2011-06-17 2011-10-19 华为数字技术有限公司 一种消除内存故障的方法及装置
CN105975377A (zh) * 2016-04-29 2016-09-28 浪潮电子信息产业股份有限公司 一种监控内存的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877485B2 (en) * 2005-12-02 2011-01-25 International Business Machines Corporation Maintaining session states within virtual machine environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222025A (zh) * 2011-06-17 2011-10-19 华为数字技术有限公司 一种消除内存故障的方法及装置
CN105975377A (zh) * 2016-04-29 2016-09-28 浪潮电子信息产业股份有限公司 一种监控内存的方法及装置

Also Published As

Publication number Publication date
CN106021014A (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
CN106021014B (zh) 一种内存管理方法及装置
US7675776B2 (en) Bit map control of erase block defect list in a memory
US9405612B2 (en) Fault repair apparatus, fault repair method and storage medium storing fault repair program
US20070192754A1 (en) Method for treating design errors of a layout of an integrated circuit
WO2018118837A1 (en) Method to dynamically inject errors in a repairable memory on silicon and a method to validate built-in-self-repair logic
JP2016540288A (ja) 不揮発性ram誤りリマッピングのための方法および装置
CN111078459B (zh) 半导体芯片的测试方法、装置及系统
CN104685474B (zh) 用于处理不可纠正的内存错误的方法及非瞬态处理器可读介质
CN109901956A (zh) 内存整体测试的系统及其方法
CN102650984A (zh) 测试报告生成系统及方法
JP2007220284A (ja) 改善された冗長性分析のためのメモリデバイスの欠陥サマリデータの削減
CN107479823A (zh) 随机读写文件测试中的数据校验方法和装置
CN104658609B (zh) 用于存储器系统的纠错码分布的方法和系统
US5666368A (en) System and method for testing the operation of registers in digital electronic systems
CN105225698B (zh) 一种列修复方法和装置
CN107273159A (zh) 适于嵌入式系统的差量式补丁升级方法及装置
US8086985B2 (en) Automatic alignment of macro cells
CN107341074B (zh) 一种升级异常修复方法、升级异常修复装置及智能终端
CN109634919A (zh) 一种文件管理系统
CN106920576A (zh) 一种检验Nand Flash质量的方法及系统
KR101563494B1 (ko) 파일 변경에 따른 실시간 소스코드 보안 약점 탐지 장치 및 방법
CN108665941A (zh) 基于nand闪存的列修复方法、装置和nand存储设备
CN101470666B (zh) 一种数据存储方法
CN106971757A (zh) 一种检验Nand Flash质量的方法及系统
CN110968456A (zh) 分布式存储系统中故障磁盘的处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant