CN103577343A - 内存管理方法和装置 - Google Patents

内存管理方法和装置 Download PDF

Info

Publication number
CN103577343A
CN103577343A CN201310589521.0A CN201310589521A CN103577343A CN 103577343 A CN103577343 A CN 103577343A CN 201310589521 A CN201310589521 A CN 201310589521A CN 103577343 A CN103577343 A CN 103577343A
Authority
CN
China
Prior art keywords
physical memory
memory piece
piece
free
free physical
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.)
Granted
Application number
CN201310589521.0A
Other languages
English (en)
Other versions
CN103577343B (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.)
Shenzhen Shangge Intellectual Property Service Co ltd
Tongding Interconnection Information Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310589521.0A priority Critical patent/CN103577343B/zh
Publication of CN103577343A publication Critical patent/CN103577343A/zh
Application granted granted Critical
Publication of CN103577343B publication Critical patent/CN103577343B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例提供一种内存管理方法和装置,其中,该方法包括:将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,将第一可用虚拟内存块与第一可用物理内存块的映射关系更改为第一可用虚拟内存块与测试物理内存块的映射关系;将测试虚拟内存块与测试物理内存块的映射关系更改为测试虚拟内存块与第一可用物理内存块的映射关系;对第一可用物理内存块进行内存检测。通过修改映射关系,实现在单板运行的过程中对物理内存进行内存检测,从而可以避免或减少在单板重启的过程对物理内存进行内存检测,减少了单板重启时间,减轻了业务中断的严重性。

Description

内存管理方法和装置
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种内存管理方法和装置。
背景技术
内存是通信设备最重要的部件之一,通信设备中所有程序的运行都在在内存中进行的。鉴于内存的重要性,通信设备在运行过程中必须要保证内存可靠。
现有技术中,通信设备中的单板启动之后,物理内存与虚拟内存具有对应关系,虚拟内存都会被统一编址和管理,因此物理内存可以通过与之对应的虚拟内存的虚拟地址访问。当一段物理内存损坏时,由于该物理内存所对应的虚拟内存已经被统一管理,这段物理内存还会被继续使用,造成单板异常,然后单板自动重启,在自动重启的过程中检测出损坏的物理内存,然后再进行隔离,然后将剩下的未损坏物理内存重新建立与虚拟内存的对应关系,以避免不再使用该损坏的物理内存,保证单板的正常运行。
然而,现有技术中在单板重启的过程中检测损坏的物理内存所需时间较长,造成单板重启时长较长,从而造成业务中断严重。
发明内容
本发明实施例提供一种内存管理方法和装置,用于减少了单板重启时间,减轻了业务中断的严重性。
第一方面,本发明实施例提供一种内存管理方法,包括:将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,所述测试虚拟内存块所映射的物理内存块为测试物理内存块,所述第一可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,所述可用物理内存块组包括至少一个可用物理内存块,所述测试虚拟内存块为不可用的虚拟内存块;将所述第一可用虚拟内存块与所述第一可用物理内存块的映射关系更改为所述第一可用虚拟内存块与所述测试物理内存块的映射关系;将所述测试虚拟内存块与所述测试物理内存块的映射关系更改为所述测试虚拟内存块与所述第一可用物理内存块的映射关系;对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测。
在第一方面的第一种可能的实现方式中,所述可用物理内存块组中的一个当前未检测的可用物理内存块为所述可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测之后,还包括:若检测出所述第一可用物理内存未损坏,则将第二可用物理内存块更新为所述第一可用物理内存块,所述第二可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述对所述测试虚拟内存块所映射的所述第一可用物理内存块进行检测之后,还包括:若检测出所述第一可用物理内存块已损坏,则将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块为所述预留物理内存块组中根据第二预设顺序位于最前面的当前不可用并且未损坏的预留物理内存块。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
结合第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式或第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之后,还包括:将第三可用物理内存块更新为所述第一可用物理内存块,所述第三可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
结合第一方面或第一方面的第一到第七种实现方式的任意一种可能的实现方式,在第一方面的第八种可能的实现方式中,所述将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中之前,包括:建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块;所述将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,包括:将所述第一可用物理内存块中存储的数据拷贝至所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块中。
结合第一方面的第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之前,还包括:将物理内存划分为所述至少一个可用物理内存块和所述至少一个预留物理内存块,所述至少一个可用物理内存块构成所述可用物理内存块组,所述至少一个预留物理内存块构成所述可用预留物理内存块组。
结合第一方面的第九种可能的实现方式,在第一方面的第十种可能的实现方式中,每个物理内存块的大小为N倍的4K字节,所述N为大于或等于1的整数。
结合第一方面或第一方面的第一到第十种实现方式的任意一种可能的实现方式,在第一方面的第十一种可能的实现方式中,对所述第一物理内存块进行检测之后,还包括:锁定与所述物理内存通信的中央处理器CPU的外部中断。
结合第一方面的第十一种可能的实现方式,在第一方面的第十二种可能的实现方式中,对所述第一物理内存块进行检测之前,还包括:解锁所述CPU的外部中断。
第二方面,本发明实施例提供一种内存管理装置,包括:备份单元,用于将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,所述测试虚拟内存块所映射的物理内存块为测试物理内存块,所述第一可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,所述可用物理内存块组包括至少一个可用物理内存块,所述测试虚拟内存块为不可用的虚拟内存块;更改单元,用于将所述第一可用虚拟内存块与所述第一可用物理内存块的映射关系更改为所述第一可用虚拟内存块与所述测试物理内存块的映射关系;以及将所述测试虚拟内存块与所述测试物理内存块的映射关系更改为所述测试虚拟内存块与所述第一可用物理内存块的映射关系;检测单元,用于对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测。
在第二方面的第一种可能的实现方式中,所述可用物理内存块组中的一个当前未检测的可用物理内存块为所述可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括:第一更新单元,用于若所述检测单元检测出所述第一可用物理内存未损坏,则将第二可用物理内存块更新为所述第一可用物理内存块,所述第二可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,所述更改单元还用于若所述检测单元检测出所述第一可用物理内存块已损坏,则将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块为所述预留物理内存块组中根据第二预设顺序位于最前面的当前不可用并且未损坏的预留物理内存块。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
结合第二方面的第四种可能的实现方式或第二方面的第五种可能的实现方式或第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,还包括:第二更新单元,用于所述更改单元将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之后,将第三可用物理内存块更新为所述第一可用物理内存块,所述第三可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
结合第二方面或第二方面的第一到第七种实现方式的任意一种可能的实现方式,在第二方面的第八种可能的实现方式中,还包括:建立单元,用于所述备份单元将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中之前,建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块;所述备份单元具体用于将所述第一可用物理内存块中存储的数据拷贝至所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块中。
结合第二方面的第八种可能的实现方式,在第二方面的第九种可能的实现方式中,还包括:划分单元,用于所述建立单元建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之前,将物理内存划分为所述至少一个可用物理内存块和所述至少一个预留物理内存块,所述至少一个可用物理内存块构成所述可用物理内存块组,所述至少一个预留物理内存块构成所述可用预留物理内存块组。
结合第二方面的第九种可能的实现方式,在第二方面的第十种可能的实现方式中,每个物理内存块的大小为N倍的4K字节,所述N为大于或等于1的整数。
结合第二方面或第二方面的第一到第十种实现方式的任意一种可能的实现方式,在第二方面的第十一种可能的实现方式中,还包括:处理单元,用于所述检测单元对所述第一物理内存块进行检测之后,锁定与所述物理内存通信的中央处理器CPU的外部中断。
结合第二方面的第十一种可能的实现方式,在第二方面的第十二种可能的实现方式中,所述处理单元还用于所述检测单元对所述第一物理内存块进行检测之前,解锁所述CPU的外部中断。
本发明实施例提供的内存管理方法和装置,通过更改映射关系,将第一可用物理内存块更改为测试虚拟内存块所映射的物理内存块,对测试虚拟内存块所映射的第一可用物理内存块进行内存检测。实现在单板运行的过程中对物理内存进行内存检测,从而可以避免或减少在单板重启的过程对物理内存进行内存检测,减少了单板重启时间,减轻了业务中断的严重性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明内存管理方法实施例一的流程图;
图2为本发明内存管理方法实施例三的流程图;
图3为本发明内存管理方法实施例四的流程图;
图4为本发明内存管理方法实施例五的流程图;
图5为图4所示实施例中建立的物理内存块与虚拟内存块的映射关系示意图;
图6为图4所示实施例中第一次更改的物理内存块与虚拟内存块的映射关系示意图;
图7为图4所示实施例中第二次更改的物理内存块与虚拟内存块的映射关系示意图;
图8为图4所示实施例中第三次更改的物理内存块与虚拟内存块的映射关系示意图;
图9为本发明内存管理装置实施例一的结构示意图;
图10为本发明内存管理装置实施例二的结构示意图;
图11为本发明内存管理装置实施例三的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明内存管理方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
S101、将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中。
本实施例中,单板中的物理内存中包括可用物理内存块组,可用物理内存块组包括至少一个可用物理内存块,第一可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,第一可用物理内存块与第一虚拟内存块存在映射关系,即第一可用物理内存块为第一虚拟内存块所映射的物理内存块,可用物理内存块为当前可以为应用程序可用的物理内存块,测试虚拟内存块与一物理内存块存在映射关系,该测试虚拟内存块所映射的物理内存块为测试物理内存块,该测试物理内存块可以为预留物理内存块,预留物理内存块可以是在物理内存中预先划分出的一个物理内存块,并且该物理内存块先不与可用虚拟内存块建立映射关系,其中,测试虚拟内存块为不可用的虚拟内存块,即为应用程序不可用的虚拟内存块,那么测试虚拟内存块所映射的物理内存块为不可用的物理内存块。需要说明的是,一个虚拟内存块在一时间与一个物理内存块存在映射关系。
在单板不重启的状态下,需要对第一可用物理内存块进行检测,由于单板处于工作状态,所以第一可用物理内存块中存储的数据随时会被访问,也即会随时访问第一可用虚拟内存块,那么可以将第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中。
S102、将第一可用虚拟内存块与第一可用物理内存块的映射关系更改为第一可用虚拟内存块与测试物理内存块的映射关系。
本实施例中,在将第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块组之后,可以将第一可用虚拟内存块所映射的物理内存更改为测试物理内存块,那么在单板处于工作状态时,此时第一可用虚拟内存块所映射的物理内存中存储有数据,因此可以随时对第一可用虚拟内存块进行访问,并且访问的数据与映射关系更改之前一样,将第一可用虚拟内存块与第一可用物理内存块的映射关系更改为第一可用虚拟内存块与测试物理内存块的映射关系,也即将第一可用虚拟内存块与第一可用物理内存块的映射关系删除并建立第一可用虚拟内存块与测试物理内存块的映射关系,例如:将第一可用虚拟内存块的指针由第一可用虚拟内存块指向测试物理内存块。
S103、将测试虚拟内存块与测试物理内存块的映射关系更改为测试虚拟内存块与第一可用物理内存块的映射关系。
本实施例中,可以将测试虚拟内存块所映射的物理内存更改为第一可用物理内存块,那么在单板处于工作状态时,可以对测试虚拟内存块所映射的物理内存块进行内存检测,将将测试虚拟内存块与测试物理内存块的映射关系更改为测试虚拟内存块与第一可用物理内存块的映射关系,也即将测试虚拟内存块与上述的测试物理内存块的映射关系删除并建立测试虚拟内存块与第一可用物理内存块的映射关系,例如:将测试虚拟内存块的指针由测试虚拟块指向第一可用物理内存块。
需要说明的是,S102与S103的执行顺序可以不分先后,本发明实施例在此不做限定。
S104、对测试虚拟内存块所映射的第一可用物理内存块进行内存检测。
本实施例中,可以对测试虚拟内存块所映射的物理内存块进行内存检测,也就是在映射关系发生更改之后,对测试虚拟内存块所映射的第一可用物理内存块进行内存检测,需要说明的是,如何对物理内存块进行内存检测与现有技术类似,本发明实施例在此不再赘述。由于已经将第一可用物理内存块中存储的数据拷贝至测试物理内存块中,然后可以第一虚拟内存块可以访问测试内存块中存储的上述数据,因此在单板运行的过程中对物理内存进行内存检测,从而可以避免或减少在单板重启的过程对物理内存进行内存检测,减少了单板重启时间,减轻了业务中断的严重性。
本发明实施例一提供的内存管理方法,通过将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,将第一可用虚拟内存块与第一可用物理内存块的映射关系更改为第一可用虚拟内存块与测试物理内存块的映射关系,将测试虚拟内存块与测试物理内存块的映射关系更改为测试虚拟内存块与第一可用物理内存块的映射关系,对测试虚拟内存块所映射的第一可用物理内存块进行内存检测。通过修改映射关系,实现待检测的物理内存块映射到测试虚拟内存块,可以在单板运行的过程中对物理内存进行内存检测,从而可以避免或减少在单板重启的过程对物理内存进行内存检测,减少了单板重启时间,减轻了业务中断的严重性。
在本发明上述实施例的基础上,可选地,可用物理内存块组中的一个当前未检测的可用物理内存块为可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块,即第一可用物理内存块为可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。可选地,第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
在本发明内存管理方法实施例二中,在本发明上述方法实施例的基础上,可选地,对测试虚拟内存块所映射的第一可用物理内存块进行内存检测之后,还包括:若检测出第一可用物理内存未损坏,则将第二物理内存块更新为第一可用物理内存块,也就是将第二可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块(第一可用物理内存块)中,此时测试虚拟内存块变更为第一可用物理内存块,将第二可用虚拟内存块与第二可用物理内存块的映射关系更改为第二可用虚拟内存块与第一可用物理内存块的映射关系,将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与第二可用物理内存块的映射关系,然后对第二可用物理内存块进行内存检测,若检测出第二可用物理内存未损坏,则循环上述步骤,因此,通过上述步骤可以通过修改映射关系,实现待检测的物理内存块逐步映射到测试虚拟内存块,可以在单板工作的状态下对物理内存的所有可用物理内存进行内存检测,从而可以减少单板重启时间。第二可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,可选地,第二可理物再内存为可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。可选地,第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
图2为本发明内存管理方法实施例三的流程图,如图2所示,本实施例的方法在本发明上述方法实施例的基础上,进一步地,在对测试虚拟内存块所映射的第一可用物理内存块进行检测之后,本实施例的方法还可以包括:
S201、若检测出第一可用物理内存块已损坏,则将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系。
本实施例中,若检测出第一可用物理内存块已损坏,则不能将第一可用物理内存块让应用程序访问到,则需要将第一可用物理内存块进行隔离,那么可以将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,也即删除测试虚拟内存块与第一可用物理内存块的映射关系,并建立测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,那么损坏的第一可用物理内存块未与任何的虚拟内存块建立映射关系,从而将第一可用物理内存块进行隔离,第一可用物理内存块上存储的数据也将不会被访问到,因此可以实现在对损坏的物理内存块进行隔离的时候不需要单板重启,避免了业务的中断。
将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系的一种实现过程可以为:将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系,然后对测试虚拟内存块所映射的预留物理内存块进行内存检测,若检测出该预留物理内存块未损坏,则执行S202;若检测出该预留物理内存块已损坏,则将测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中下一个当前不可用的预留物理内存块的映射关系,直到检测出测试虚拟内存块所映射的预留物理内存块未损坏,再执行S202。
可选地,预留物理内存块组中的一个当前不可用的预留物理内存块为预留物理内存块组中根据第二预设顺序位于最前面的当前不可用的预留物理内存块。
可选地,第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
进一步地,本实施例的方法还可以包括:
S202、将第三可用物理内存块更新为第一可用物理内存块。
本实施例中,将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系之后可以将第三可用物理内存块更新为第一可用物理内存块,也就是将第三可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块(一预留物理内存块)中,此时测试虚拟内存块由第一可用物理内存块变更为一预留物理内存块,将第三可用虚拟内存块与第三可用物理内存块的映射关系更改为第三可用虚拟内存块与该一预留物理内存块的映射关系,将测试虚拟内存块与该一预留物理内存块的映射关系更改为测试虚拟内存块与第三可用物理内存块的映射关系,然后对第三可用物理内存块进行内存检测,若检测出第三可用物理内存已损坏,则循环上述步骤,因此,通过上述步骤可以实现在单板工作的状态下对物理内存的所有损坏的物理内存块进行隔离,从而可以避免了因为内存损坏而导致的单板重启,保证单板的正常运行,避免的业务中断。第三可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,可选地,第三可用物理内存为可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。可选地,第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
本发明实施例三提供的内存管理方法,进一步地,若检测出第一可用物理内存块已损坏,则将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系,将第三可用物理内存块更新为第一可用物理内存块,从而可以在单板运行的过程中通过修改映射关系对损坏的物理内存块进行隔离,从而可以避免了因为内存损坏而导致的单板重启,保证单板的正常运行,避免了业务的中断。
图3为本发明内存管理方法实施例四的流程图,如图3所示,本实施例的方法可以包括:
S301、将物理内存划分为至少一个可用物理内存块和至少一个预留物理内存块。
本实施例中,可选地,可以将一个物理内存划分为至少一个可用物理内存块和至少一个预留物理内存块。或者,物理内存在出厂时已经划分为至少一个可用物理内存块和至少一个预留物理内存块,至少一个可用物理内存块构成可用物理内存块组,至少一个预留物理内存块构成预留物理内存块组,可选地,每个物理内存块的大小为N倍的4K字节,N为大于或等于1的整数,其中,1K字节等于1024字节。
S302、建立测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系。
本实施例中,可以在需要对可用物理内存块进行检测的时候,建立测虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系,该预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系为预留物理内存块组中根据第二预设顺序位于最前面的当前不可用的预留物理内存块,第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
建立测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系的一种实现过程可以为:建立测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系,然后对测试虚拟内存块所映射的预留物理内存块进行内存检测,若检测出该预留物理内存块未损坏,则执行S302;若检测出该预留物理内存块已损坏,则将测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中下一个当前不可用的预留物理内存块的映射关系,直到检测出测试虚拟内存块所映射的预留物理内存块未损坏,再执行S303。
S303、将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中。
本实施例中,测试虚拟内存块所映射的物理内存可以称为测试物理内存块。也就是第一可用物理内存块中存储的数据拷贝至预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块(此时可以称为测试物理内存块)中。
S304、将第一可用虚拟内存块与第一可用物理内存块的映射关系更改为第一可用虚拟内存块与测试物理内存块的映射关系。
S305、将测试虚拟内存块与测试物理内存块的映射关系更改为测试虚拟内存块与第一可用物理内存块的映射关系。
S306、对第一可用虚拟内存块所映射的第一可用物理内存块进行内存检测。若检测出第一可用物理内存块未损坏,则执行S307;若检测出第一可用物理内存块已损坏,则执行S308和S309。
可选地,在对第一可用物理内存块进行内存检测之后,可以锁定与所述物理内存通信的中央处理器(Central Processing Unit,简称为CPU)的外部中断,以保证在搬移数据和更改映射关系的过程物理内存不会被外界所操作。在搬移数据和更改映射关系之后,也即对第一可用物理内存块进行内存检测之前,还可以包括:解锁CPU的外部中断。
S307、将第二可用物理内存块更新为第一可用物理内存块。
本实施例中,S307的具体实现过程可以参见本发明方法实施例二中相关的记载,本发明实施例在此不再赘述。
S308、将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系。
S309、将第三可用物理内存块更新为第一可用物理内存块。
本实施例中,S308和S309的具体实现过程与本发明方法实施例三中的S201和S202的具体实现过程类似,详细可以参见本发明上述方法实施例中的相关记载,本发明实施例在此不再赘述。
需要说明的是,执行S307也即将第二可用物理内存块更新为第一可用物理内存块再执行S303-S306,执行S309也即将第三可用物再内存块更新为第一可用物理内存块再执行S303-S306。以此循环操作,可以在单板运行的状态下,对物理内存的所有可用物理内存块进行内存检测并隔离损坏的物理内存块,即实现在线内存检测和隔离,从而可以避免了因为内存损坏而导致的单板重启,保证单板的正常运行,避免了业务的中断。
需要说明的是,并不是每次执行S302-S309均需要执行S301。
本发明实施例四提供的内存管理方法,通过将物理内存划分为至少一个可用物理内存块和至少一个预留物理内存块,建立测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系,将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,将第一可用虚拟内存块与第一可用物理内存块的映射关系更改为第一可用虚拟内存块与测试物理内存块的映射关系,将测试虚拟内存块与测试物理内存块的映射关系更改为测试虚拟内存块与第一可用物理内存块的映射关系,对第一可用虚拟内存块所映射的第一可用物理内存块进行内存检测,若检测出第一可用物理内存块未损坏,则将第二可用物理内存块更新为第一可用物理内存块;若检测出第一可用物理内存块已损坏,则将测试虚拟内存块与第一可用物理内存块的映射关系更改为测试虚拟内存块与预留物理内存块组中的一个当前不可用的预留物理内存块的映射关系,将第三可用物理内存块更新为第一可用物理内存块。通过修改映射关系,实现待检测的物理内存块逐步映射到测试虚拟内存块,可以在单板运行的状态下,对物理内存的所有可用物理内存块进行内存检测并隔离损坏的物理内存块,即实现在线内存检测和隔离,从而可以避免了因为内存损坏而导致的单板重启,提高单板运行的可靠性,避免了业务的中断。
图4为本发明内存管理方法实施例五的流程图,如图4所示,本实施例以一个具体的实现方式进行详细描述,本实施例的方法可以包括:
S401、将物理内存划分为18个可用物理内存块和3个预留物理内存块。
本实施例中,可以将物理内存划分为21个大小为4K字节的物理内存块,按照物理地址从小到大的顺序将前18个物理内存块作为可用物理内存块,后3个物理内存块作为预留物理内存块,按照物理地址从小到大的顺序排序该18个可用物理内存块的编号依次为:P0、P1、P2、P3、P4、P5、P6、P7、P8、P9、P10、P11、P12、P13、P14、P15、P16和P17,按照物理地址从小到大的顺序排序该3个预留物理内存块的编号依次为:P18、P19和P20。然后将18个可用物理内存块进行虚拟内存映射,可以得到18个可用虚拟内存块,按照所映射的物理内存块的物理地址从小到大的顺序排序该18个可用虚拟内存块的编号依次为:V0、V1、V2、V3、V4、V5、V6、V7、V8、V9、V10、V11、V12、V13、V14、V15、V16和V17。3个预留物理内存块先不进行虚拟内存映射,因此这部分保留物理内存块是无法被系统进程所使用的。
S402、建立测试虚拟内存块V18与预留物理内存块P18的映射关系。
本实施例中,在需要对可用物理内存块进行内存检测的时候,可以分配一个测试虚拟内存块,该测试虚拟内存块的编号为V18,根据物理内存地址从小到大的顺序,建立测试虚拟内存块V18与预留物理内存块P18的映射关系,如图5所示,然后对测试虚拟内存块V18所映射的物理内存块(预留物理内存块P18)进行内存检测,以保证与测试虚拟内存块映射的预留物理内存块未损坏,若预留物理内存块P18已损坏,则将测试虚拟内存块V18与预留物理内存块P18的映射关系更改为测试虚拟内存块V18与预留物理内存块P18的下一个预留物理内存块(即预留物理内存块P19)的映射关系,若预留物理内存块P18未损坏,则执行S403。本实施例中预留物理内存块P18未损坏。
S403、将可用虚拟内存块V0所映射的可用物理内存块P0中存储的数据拷贝至测试虚拟内存V18所映射的预留物理内存块P18中。
本实施例中,根据物理内存地址从小到大的顺序,可以将可用虚拟内存块V0中的数据拷贝至测试虚拟内存块V18中,实际上是将可用虚拟内存块V0所映射的可用物理内存块P0中存储的数据拷贝至测试虚拟内存V18所映射击的预留物理内存块P18中。
可选地,在将可用虚拟内存块V0所映射的可用物理内存块P0中存储的数据拷贝至测试虚拟内存块V18所映射击的预留物理内存块P18中之前,还包括:锁定CPU的外部中断。
S404、将可用虚拟内存块V0与可用物理内存块P0的映射关系更改为可用虚拟内存块V0与预留物理内存块P18的映射关系,并将测试虚拟内存块V18与预留物理内存块P18的映射关系更改为测试虚拟内存块V18与可用物理内存块P0的映射关系。
本实施例中,在将数据拷贝之后,还要对映射关系进行修改,将可用物理内存块P0映射到测试虚拟内存块V18,测试虚拟内存块V18的所映射的物理内存块为测试物理内存块,可用物理内存块P0成为测试物理内存块。将预留物理内存块P18映射到可用虚拟内存块V0使用。更改之后的物理内存块与虚拟内存块的映射关系如图6所示。
S405、对测试虚拟内存块V18所映射的可用物理内存块P0进行内存检测。
本实施例中,对测试虚拟内存块V18进行内存检测,实际上是对测试虚拟内存块V18所映射的可用物理内存块P0进行内存检测,本发明实施例中可用物理内存块P0未损坏,那么经过内存检测后,可以检测出可用物理内存块P0未损坏。
可选地,在对测试虚拟内存块V18所映射的可用物理内存块P0进行内存检测之前还可以包括:解锁CPU的外部中断。
可选地,在对测试虚拟内存块V18所映射的可用物理内存块P0进行内存检测之后还可以包括:锁定CPU的外部中断。
S406、检测出可用物理内存块P0未损坏,将可用虚拟内存块V1所映射的可用物理内存块P1中存储的数据拷贝至测试虚拟内存V18所映射击的可用物理内存块P0中。
本实施例中,在检测出可用物理内存块P0未损坏,根据物理内存地址从小到大的顺序,可以将可用虚拟内存块V1中的数据拷贝至测试虚拟内存块V18中,实际上是将可用虚拟内存块V1所映射的可用物理内存块P1中存储的数据拷贝至测试虚拟内存V18所映射击的可用物理内存块P0中。
S407、将可用虚拟内存块V1与可用物理内存块P1的映射关系更改为可用虚拟内存块V1与可用物理内存块P0的映射关系,并将测试虚拟内存块V18与可用物理内存块P0的映射关系更改为测试虚拟内存块V18与可用物理内存块P1的映射关系。
本实施例中,在将数据拷贝之后,还要对映射关系进行修改,将可用物理内存块P1映射到测试虚拟内存块V18,测试虚拟内存块V18的所映射的物理内存块为测试物理内存块,可用物理内存块P1成为测试物理内存块。将可用物理内存块P0映射到可用虚拟内存块V1使用。更改之后的物理内存块与虚拟内存块的映射关系如图7所示。
S408、对测试虚拟内存块V18所映射的可用物理内存块P1进行内存检测。
本实施例中,对测试虚拟内存块V18进行内存检测,实际上是对测试虚拟内存块V18所映射的可用物理内存块P1进行内存检测,本发明实施例中可用物理内存块P0已损坏,那么经过内存检测后,可以检测出可用物理内存块P1已损坏。
可选地,在对测试虚拟内存块V18所映射的可用物理内存块P1进行内存检测之前还可以包括:解锁CPU的外部中断。
可选地,在对测试虚拟内存块V18所映射的可用物理内存块P1进行内存检测之后还可以包括:锁定CPU的外部中断。
S409、检测出可用物理内存块P1已损坏,将测试虚拟内存块V18与可用物理内存块P1的映射关系更改为测试虚拟内存块V18与预留物理内存块P19的映射关系。
本实施例中,在检测出可用物理内存块P1已损坏,那么需要将可用物理内存P1进行隔离,可以将测试虚拟内存块V18与可用物理内存块P1的映射关系更改为测试虚拟内存块V18与预留物理内存块P19的映射关系,更改后的虚拟内存块与物理内存块的映射关系如图8所示,从而使得已损坏的可用物理内存块P1没有与可用虚拟内存块存在映射关系,那么也就不会使用已损坏的可用物理内存块P1,从而实现在线对损坏的物理内存进行隔离。
需要说明的是,执行S409之后可以对可用虚拟内存块V2所映射的可用物理内存块P2进行内存检测,具体实现过程与S403-S405的具体实现过程类似,详细可以参见本发明实施例上述的相关记载,以此循环,本发明实施例可以对可用物理内存块:P3-P17进行内存检测,并隔离出损坏的物理内存块,从而大大提高单板运行的可靠性。从而实现对物理内存的在线检测和故障内存的隔离。而且本发明实施例可以在备份数据和更改映射关系的时候独占CPU,内存测试的时候释放CPU,因此独占CPU的时间非常短,对CPU利用率的影响非常小,不影响单板业务的正常运行。
图9为本发明内存管理装置实施例一的结构示意图,如图9所示,本实施例的装置可以包括:备份单元11、更改单元12和检测单元13,其中,备份单元11用于将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,所述测试虚拟内存块所映射的物理内存块为测试物理内存块,所述第一可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,所述可用物理内存块组包括至少一个可用物理内存块,所述测试虚拟内存块为不可用的虚拟内存块。更改单元12用于将所述第一可用虚拟内存块与所述第一可用物理内存块的映射关系更改为所述第一可用虚拟内存块与所述测试物理内存块的映射关系;以及将所述测试虚拟内存块与所述测试物理内存块的映射关系更改为所述测试虚拟内存块与所述第一可用物理内存块的映射关系。检测单元13用于对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测。
本实施例的装置,可以用于执行本发明上述方法实施例的技术方案,其实现原理和技术效果类似,详细可以参见本发明上述方法实施例中的相关记载,此处不再赘述。
图10为本发明内存管理装置实施例二的结构示意图,如图10所示,本实施例的装置在图9所示装置结构的基础上,可选地,所述可用物理内存块组中的一个当前未检测的可用物理内存块为所述可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。
可选地,所述第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
可选地,本实施例的装置还可以包括:第一更新单元14,该第一更新单元14用于若检测单元13检测出所述第一可用物理内存未损坏,则将第二可用物理内存块更新为所述第一可用物理内存块,所述第二可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
可选地,上述的更改单元12还用于若检测单元13检测出所述第一可用物理内存块已损坏,则将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块。
可选地,所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块为所述预留物理内存块组中根据第二预设顺序位于最前面的当前不可用并且未损坏的预留物理内存块。
可选地,所述第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
可选地,本实施例的装置还可以包括:第二更新单元15,第二更新单元15用于更改单元12将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之后,将第三可用物理内存块更新为所述第一可用物理内存块,所述第三可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
可选地,本实施例的装置还可以包括:建立单元16,建立单元16用于备份单元11将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中之前,建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块;备份单元11具体用于将所述第一可用物理内存块中存储的数据拷贝至所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块中。
可选地,本实施例的装置还可以包括:划分单元17,划分单元17用于建立单元16建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之前,将物理内存划分为所述至少一个可用物理内存块和所述至少一个预留物理内存块,所述至少一个可用物理内存块构成所述可用物理内存块组,所述至少一个预留物理内存块构成所述可用预留物理内存块组。
可选地,每个物理内存块的大小为N倍的4K字节,所述N为大于或等于1的整数。
可选地,本实施例的装置还可以包括:处理单元18,处理单元18用于检测单元13对所述第一物理内存块进行检测之后,锁定与所述物理内存通信的中央处理器CPU的外部中断。
可选地,处理单元18还用于检测单元13对所述第一物理内存块进行检测之前,解锁所述CPU的外部中断。
本实施例的装置,可以用于执行本发明上述方法实施例的技术方案,其实现原理和技术效果类似,详细可以参见本发明上述方法实施例中的相关记载,此处不再赘述。
图11为本发明内存管理装置实施例三的结构示意图,如图11所示,本实施例的装置包括存储器21和与存储器21连接的处理器22,其中,存储器21中存储一组程序代码,存储器21可以包括非易失性存储器(Non-volatileMemory)。处理器22可以是一个CPU,或者是特定集成电路(ApplicationSpecific Integrated Circuit,简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。处理器22用于调用存储器21中存储的程序代码,用于执行如下操作:
将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,所述测试虚拟内存块所映射的物理内存块为测试物理内存块,所述第一可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,所述可用物理内存块组包括至少一个可用物理内存块,所述测试虚拟内存块为不可用的虚拟内存块;将所述第一可用虚拟内存块与所述第一可用物理内存块的映射关系更改为所述第一可用虚拟内存块与所述测试物理内存块的映射关系;将所述测试虚拟内存块与所述测试物理内存块的映射关系更改为所述测试虚拟内存块与所述第一可用物理内存块的映射关系;对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测。
可选地,所述可用物理内存块组中的一个当前未检测的可用物理内存块为所述可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。
可选地,所述第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
可选地,所述对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测之后,还包括:若检测出所述第一可用物理内存未损坏,则将第二可用物理内存块更新为所述第一可用物理内存块,所述第二可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
可选地,所述对所述测试虚拟内存块所映射的所述第一可用物理内存块进行检测之后,还包括:若检测出所述第一可用物理内存块已损坏,则将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块。
可选地,所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块为所述预留物理内存块组中根据第二预设顺序位于最前面的当前不可用并且未损坏的预留物理内存块。
可选地,所述第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
可选地,所述将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之后,还包括:将第三可用物理内存块更新为所述第一可用物理内存块,所述第三可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
可选地,所述将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中之前,包括:建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块;所述将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,包括:将所述第一可用物理内存块中存储的数据拷贝至所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块中。
可选地,所述建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之前,还包括:将物理内存划分为所述至少一个可用物理内存块和所述至少一个预留物理内存块,所述至少一个可用物理内存块构成所述可用物理内存块组,所述至少一个预留物理内存块构成所述可用预留物理内存块组。
可选地,每个物理内存块的大小为N倍的4K字节,所述N为大于或等于1的整数。
可选地,对所述第一物理内存块进行检测之后,还包括:锁定与所述物理内存通信的中央处理器CPU的外部中断。
可选地,对所述第一物理内存块进行检测之前,还包括:解锁所述CPU的外部中断。
需要说明的是,处理器22通过调用存储器21中存储的程序代码具体实现的技术方案可以参见本发明内存管理方法的上述实施例,其实现原理和技术效果类似,详细可以参见上述实施例中的相关记载,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (26)

1.一种内存管理方法,其特征在于,包括:
将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,所述测试虚拟内存块所映射的物理内存块为测试物理内存块,所述第一可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,所述可用物理内存块组包括至少一个可用物理内存块,所述测试虚拟内存块为不可用的虚拟内存块;
将所述第一可用虚拟内存块与所述第一可用物理内存块的映射关系更改为所述第一可用虚拟内存块与所述测试物理内存块的映射关系;
将所述测试虚拟内存块与所述测试物理内存块的映射关系更改为所述测试虚拟内存块与所述第一可用物理内存块的映射关系;
对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测。
2.根据权利要求1所述的方法,其特征在于,所述可用物理内存块组中的一个当前未检测的可用物理内存块为所述可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。
3.根据权利要求2所述的方法,其特征在于,所述第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测之后,还包括:
若检测出所述第一可用物理内存未损坏,则将第二可用物理内存块更新为所述第一可用物理内存块,所述第二可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
5.根据权利要求1-3任意一项所述的方法,其特征在于,所述对所述测试虚拟内存块所映射的所述第一可用物理内存块进行检测之后,还包括:
若检测出所述第一可用物理内存块已损坏,则将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块。
6.根据权利要求5所述的方法,其特征在于,所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块为所述预留物理内存块组中根据第二预设顺序位于最前面的当前不可用并且未损坏的预留物理内存块。
7.根据权利要求6所述的方法,其特征在于,所述第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
8.根据权利要求5-7任意一项所述的方法,其特征在于,所述将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之后,还包括:
将第三可用物理内存块更新为所述第一可用物理内存块,所述第三可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
9.根据权利要求1-8任意一项所述的方法,其特征在于,所述将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中之前,包括:
建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块;
所述将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,包括:
将所述第一可用物理内存块中存储的数据拷贝至所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块中。
10.根据权利要求9所述的方法,其特征在于,所述建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之前,还包括:
将物理内存划分为所述至少一个可用物理内存块和所述至少一个预留物理内存块,所述至少一个可用物理内存块构成所述可用物理内存块组,所述至少一个预留物理内存块构成所述可用预留物理内存块组。
11.根据权利要求10所述的方法,其特征在于,每个物理内存块的大小为N倍的4K字节,所述N为大于或等于1的整数。
12.根据权利要求1-11任意一项所述的方法,其特征在于,对所述第一物理内存块进行检测之后,还包括:锁定与所述物理内存通信的中央处理器CPU的外部中断。
13.根据权利要求12所述的方法,其特征在于,对所述第一物理内存块进行检测之前,还包括:解锁所述CPU的外部中断。
14.一种内存管理装置,其特征在于,包括:
备份单元,用于将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中,所述测试虚拟内存块所映射的物理内存块为测试物理内存块,所述第一可用物理内存块为可用物理内存块组中的一个当前未检测的可用物理内存块,所述可用物理内存块组包括至少一个可用物理内存块,所述测试虚拟内存块为不可用的虚拟内存块;
更改单元,用于将所述第一可用虚拟内存块与所述第一可用物理内存块的映射关系更改为所述第一可用虚拟内存块与所述测试物理内存块的映射关系;以及将所述测试虚拟内存块与所述测试物理内存块的映射关系更改为所述测试虚拟内存块与所述第一可用物理内存块的映射关系;
检测单元,用于对所述测试虚拟内存块所映射的所述第一可用物理内存块进行内存检测。
15.根据权利要求14所述的装置,其特征在于,所述可用物理内存块组中的一个当前未检测的可用物理内存块为所述可用物理内存块组中根据第一预设顺序位于最前面的一个当前未检测的可用物理内存块。
16.根据权利要求15所述的装置,其特征在于,所述第一预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
17.根据权利要求14-16任意一项所述的装置,其特征在于,还包括:
第一更新单元,用于若所述检测单元检测出所述第一可用物理内存未损坏,则将第二可用物理内存块更新为所述第一可用物理内存块,所述第二可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
18.根据权利要求14-16任意一项所述的装置,其特征在于,所述更改单元还用于若所述检测单元检测出所述第一可用物理内存块已损坏,则将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块。
19.根据权利要求18所述的装置,其特征在于,所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块为所述预留物理内存块组中根据第二预设顺序位于最前面的当前不可用并且未损坏的预留物理内存块。
20.根据权利要求19所述的装置,其特征在于,所述第二预设顺序为物理内存地址从大到小的顺序或者物理内存地址从小到大的顺序。
21.根据权利要求18-20任意一项所述的装置,其特征在于,还包括:
第二更新单元,用于所述更改单元将所述测试虚拟内存块与第一可用物理内存块的映射关系更改为所述测试虚拟内存块与预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之后,将第三可用物理内存块更新为所述第一可用物理内存块,所述第三可用物理内存块为所述可用物理内存块组中的一个当前未检测的可用物理内存块。
22.根据权利要求14-21任意一项所述的装置,其特征在于,还包括:
建立单元,用于所述备份单元将第一可用虚拟内存块所映射的第一可用物理内存块中存储的数据拷贝至测试虚拟内存块所映射的物理内存块中之前,建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系,所述预留物理内存块组包括至少一个预留物理内存块;
所述备份单元具体用于将所述第一可用物理内存块中存储的数据拷贝至所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块中。
23.根据权利要求22所述的装置,其特征在于,还包括:
划分单元,用于所述建立单元建立所述测试虚拟内存块与所述预留物理内存块组中的一个当前不可用并且未损坏的预留物理内存块的映射关系之前,将物理内存划分为所述至少一个可用物理内存块和所述至少一个预留物理内存块,所述至少一个可用物理内存块构成所述可用物理内存块组,所述至少一个预留物理内存块构成所述可用预留物理内存块组。
24.根据权利要求23所述的装置,其特征在于,每个物理内存块的大小为N倍的4K字节,所述N为大于或等于1的整数。
25.根据权利要求14-24任意一项所述的装置,其特征在于,还包括:
处理单元,用于所述检测单元对所述第一物理内存块进行检测之后,锁定与所述物理内存通信的中央处理器CPU的外部中断。
26.根据权利要求25所述的装置,其特征在于,所述处理单元还用于所述检测单元对所述第一物理内存块进行检测之前,解锁所述CPU的外部中断。
CN201310589521.0A 2013-11-20 2013-11-20 内存管理方法和装置 Active CN103577343B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310589521.0A CN103577343B (zh) 2013-11-20 2013-11-20 内存管理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310589521.0A CN103577343B (zh) 2013-11-20 2013-11-20 内存管理方法和装置

Publications (2)

Publication Number Publication Date
CN103577343A true CN103577343A (zh) 2014-02-12
CN103577343B CN103577343B (zh) 2016-04-06

Family

ID=50049162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310589521.0A Active CN103577343B (zh) 2013-11-20 2013-11-20 内存管理方法和装置

Country Status (1)

Country Link
CN (1) CN103577343B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111108488A (zh) * 2017-11-07 2020-05-05 华为技术有限公司 内存块回收方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581108A (zh) * 2003-07-31 2005-02-16 深圳市中兴通讯股份有限公司南京分公司 一种具有内存保护功能的内存管理方法
JP2012169016A (ja) * 2011-02-15 2012-09-06 Yokogawa Electric Corp 半導体メモリ試験装置
US8271450B2 (en) * 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
CN102999409A (zh) * 2012-12-20 2013-03-27 迈普通信技术股份有限公司 一种内存测试方法及嵌入式设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581108A (zh) * 2003-07-31 2005-02-16 深圳市中兴通讯股份有限公司南京分公司 一种具有内存保护功能的内存管理方法
US8271450B2 (en) * 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
JP2012169016A (ja) * 2011-02-15 2012-09-06 Yokogawa Electric Corp 半導体メモリ試験装置
CN102999409A (zh) * 2012-12-20 2013-03-27 迈普通信技术股份有限公司 一种内存测试方法及嵌入式设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111108488A (zh) * 2017-11-07 2020-05-05 华为技术有限公司 内存块回收方法和装置
CN111108488B (zh) * 2017-11-07 2022-05-10 华为技术有限公司 内存块回收方法和装置
US11886333B2 (en) 2017-11-07 2024-01-30 Huawei Technologies Co., Ltd. Memory block reclamation method and apparatus

Also Published As

Publication number Publication date
CN103577343B (zh) 2016-04-06

Similar Documents

Publication Publication Date Title
CN105224478B (zh) 一种映射表的形成、更新和恢复方法及电子设备
US9292434B2 (en) Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device
CN104750565B (zh) Nand坏块处理方法及nand闪存设备
US10949342B2 (en) Persistent memory garbage collection
CN109783017B (zh) 一种存储设备坏块的处理方法、装置及存储设备
CN109710317B (zh) 系统启动方法、装置、电子设备及存储介质
TWI448891B (zh) 資料儲存裝置與快閃記憶體控制方法
CN103946814A (zh) 计算机系统中的非易失性随机存取存储器的自主初始化
CN108874298B (zh) 一种数据存储的方法及装置
TWI720246B (zh) 資料儲存裝置以及其操作方法
US8417902B2 (en) One-time-programmable memory emulation
CN112328354A (zh) 虚拟机热迁移方法、装置、电子设备及计算机存储介质
CN110442473A (zh) 一种非易失性数据存储方法、装置、电子设备及介质
CN103246484A (zh) 一种数据存储方法、装置及系统
CN103176920A (zh) Nor flash掉电保护方法及装置
CN103902419A (zh) 一种缓存测试方法及装置
CN103577343A (zh) 内存管理方法和装置
GB2550903B (en) Context data control
CN102855162B (zh) 一种数据更新方法、数据更新系统及存储器
KR20150094292A (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치
CN104575605B (zh) 存储器装置及使用非易失性存储器对系统进行开机的方法
CN107422987B (zh) 一种在非易失性存储器中存储数据的方法及装置
CN112216333B (zh) 芯片测试方法及装置
KR101041710B1 (ko) 비휘발성 메모리의 섹터 관리 방법
KR20210038834A (ko) 레지스터 데이터 백업 및 복구

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201028

Address after: No.8, Xiaoping Avenue, Badu Economic Development Zone, Zhenze Town, Wujiang District, Suzhou City, Jiangsu Province

Patentee after: TONGDING INTERCONNECTION INFORMATION Co.,Ltd.

Address before: 625, room 269, Connaught platinum Plaza, No. 518101, Qianjin Road, Xin'an street, Shenzhen, Guangdong, Baoan District

Patentee before: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Effective date of registration: 20201028

Address after: 625, room 269, Connaught platinum Plaza, No. 518101, Qianjin Road, Xin'an street, Shenzhen, Guangdong, Baoan District

Patentee after: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right