CN103984603B - 一种检测内存单元的方法及设备 - Google Patents

一种检测内存单元的方法及设备 Download PDF

Info

Publication number
CN103984603B
CN103984603B CN201410193185.2A CN201410193185A CN103984603B CN 103984603 B CN103984603 B CN 103984603B CN 201410193185 A CN201410193185 A CN 201410193185A CN 103984603 B CN103984603 B CN 103984603B
Authority
CN
China
Prior art keywords
internal storage
storage location
address
internal
state
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.)
Expired - Fee Related
Application number
CN201410193185.2A
Other languages
English (en)
Other versions
CN103984603A (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.)
Huawei Technologies 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 CN201410193185.2A priority Critical patent/CN103984603B/zh
Priority claimed from CN201210093284.4A external-priority patent/CN102650959B/zh
Publication of CN103984603A publication Critical patent/CN103984603A/zh
Application granted granted Critical
Publication of CN103984603B publication Critical patent/CN103984603B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种检测内存单元的方法及设备,属于计算机领域。所述方法包括:获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址;根据所述内存单元的地址获取所述内存单元的内存状态;根据所述内存单元的内存状态检测所述内存单元的地址的合法性;如果所述内存单元的地址合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的地址合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。本发明能够避免引起系统瘫痪。

Description

一种检测内存单元的方法及设备
技术领域
本发明涉及计算机及通信领域,特别涉及一种检测内存单元的方法及设备。
背景技术
随着网络中的信息容量的增加,网络设备在处理数据的过程中,会将大量的数据缓存在外部缓存中,并且在处理数据的过程中对外部缓存进行有效的管理来充分利用外部缓存的带宽和容量。
网络设备通过存储访问模块和内存管理模块来对外部缓存进行管理,其中,外部缓存被划分成多个内存单元,内存管理模块中包括外部缓存中空闲的内存单元的MMU(Memory Management Unit,内存管理单元)地址;存储访问模块当需要将数据缓存到外部缓存中时,向内存管理模块申请内存单元,内存管理模块分配空闲的内存单元的MMU地址并将该内存单元的MMU地址发送给内存访问模块,内存访问模块根据该内存单元的MMU地址将该数据存储在外部缓存中对应的内存单元中;内存访问模块当需要释放申请的内存单元的MMU地址时,将该内存单元的MMU地址发送给存储管理模块,以请求内存管理模块释放该内存单元的MMU地址。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
存储访问模块在向内存管理模块释放内存单元的MMU地址时,可能会出现同一内存单元的MMU地址被重复释放;以及,存储访问模块向内存管理模块申请内存单元时,内存管理模块可能会出同一内存单元的MMU地址被重复分配,从而可能引起系统瘫痪。
发明内容
为了避免引起系统瘫痪,本发明提供了一种检测内存单元的方法及设备。所述技术方案如下:
一种检测内存单元的方法,所述方法包括:
获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元;
根据所述内存单元的地址获取所述内存单元的内存状态;
根据所述内存单元的内存状态检测所述内存单元的地址的合法性;
如果所述内存单元的地址合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;
如果所述内存单元的地址合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。
一种检测内存单元的设备,所述设备包括:
第一获取模块,用于获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元;
第二获取模块,用于根据所述内存单元的地址获取所述内存单元的内存状态;
检测模块,用于根据所述内存单元的内存状态检测所述内存单元的地址的合法性,如果所述内存单元的地址合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的地址合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。
在本发明实施例中,当存储访问模块需要释放内存单元的地址或者内存管理模块分配内存单元的地址时,获得该内存单元的地址,检测该内存单元的地址的合法性;如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收该内存单元的地址,如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。其中,内存访问模块重复释放同一内存单元的地址为不合法的内存单元的地址,以及内存管理模块重复分配同一内存单元的地址为不合法的内存单元的地址,如此能够防止内存访问模块重复向内存管理模块释放同一内存单元的地址,以及能够防止内存管理模块重复分配同一内存单元的地址,从而避免引起系统瘫痪。
附图说明
图1是本发明实施例提供的一种检测内存单元的方法流程图;
图2是本发明另一实施例提供的一种检测内存单元的方法流程图;
图3是本发明另一实施例应用的系统架构;
图4是本发明另一实施例提供的外部缓存的结构示意图;
图5是本发明另一实施例提供的一种检测内存单元的设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
参见图1,本发明实施例提供了一种检测内存单元的方法,包括:
步骤101:获得内存单元的地址,该内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且该内存单元为外部缓存中的内存单元;
步骤102:根据该内存单元的地址获取该内存单元的内存状态;
步骤103:根据该内存单元的内存状态检测该内存单元的地址的合法性;
步骤104:如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收内存单元的地址;
步骤105:如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。
在本发明实施例中,当存储访问模块需要释放内存单元的地址或者内存管理模块分配内存单元的地址时,获得该内存单元的地址,检测该内存单元的地址的合法性;如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收该内存单元的地址,如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。其中,内存访问模块重复释放同一内存单元的地址为不合法的内存单元的地址,以及内存管理模块重复分配同一内存单元的地址为不合法的内存单元的地址,如此能够防止内存访问模块重复向内存管理模块释放同一内存单元的地址,以及能够防止内存管理模块重复分配同一内存单元的地址,从而避免引起系统瘫痪。
本发明实施例提供了一种检测内存单元的方法。其中,在本发明实施例中,通过检测设备来检测存储访问模块释放的内存单元的地址的合法性以及检测内存管理模块分配的内存单元的地址的合法性,参见图2,该方法包括:
步骤201:检测设备接收存储访问模块发送的释放请求消息,且该释放请求消息携带存储访问模块需要释放的内存单元的地址;
其中,本实施例应用如图3所示的系统架构,该系统架构包括外部缓存、存储访问模块、内存管理模块和检测设备;外部缓存包括多个内存单元,每个内存单元对应一个地址,内存管理模块包括外部缓存中空闲的内存单元的地址,例如,参见图4所示的外部缓存,该外部缓存包括5个内存单元,分别为第一内存单元、第二内存单元、第三内存单元、第四内存单元和第五内存单元,且第一内存单元的地址、第二内存单元的地址、第三内存单元的地址、第四内存单元的址址和第五内存单元的地址分别为0000、0001、0002、0003和0004。
其中,当存储访问模块需要从外部缓存中读取数据时,根据存储该数据的内存单元的地址,从外部缓存对应的内存单元中读取该数据,当从该内存单元中读取完数据,则需要释放该内存单元的地址,并发送释放请求消息给检测设备,且该释放请求消息携带该内存单元的地址,以请求释放该内存单元的地址。
其中,内存单元的地址可以为内存单元的MMU地址等。
其中,检测设备中包括内存信息表,且内存信息表包括以下两种形式:
第一种形式、内存信息表用于存储外部缓存中的每个内存单元的内存状态;
其中,事先根据外部缓存中的每个内存单元的地址计算出在内存信息表中存储每个内存单元的内存状态的地址,根据存储每个内存单元的内存状态的地址将每个内存单元的内存状态存储在内存信息表中。
进一步地,如果外部缓存中的某个内存单元的被存储访问模块申请占用,则在内存信息表中存储该内存单元的内存状态的地址对应的空间中除了存储该内存单元的内存状态,还可以存储该内存单元的时间戳,该内存单元的时间戳为内存访问模块申请该内存单元的时间戳。
例如,对于如图3所示的外部缓存包括的5个内存单元,事先根据第一内存单元的地址0000、第二内存单元的地址0001、第三内存单元的地址0002、第四内存单元的地址0003和第五内存单元的地址0004分别计算出在内存信息表中存储第一内存单元的内存状态的地址a1,第二内存单元的内存状态的地址a2、第三内存单元的内存状态的地址a3、第四内存单元的内存状态的地址a4以及第五内存单元的内存状态的地址a5;并根据存储第一内存单元的内存状态的地址a1,第二内存单元的内存状态的地址a2、第三内存单元的内存状态的地址a3、第四内存单元的内存状态的地址a4以及第五内存单元的内存状态的地址a5分别将第一内存单元的内存状态、第二内存单元的内存状态、第三内存单元的内存状态、第四内存单元的内存状态和第五内存单元的内存状态存储在如表1所示的内存信息表中。
表1
第二种形式、内存信息表用于存储外部缓存中的每个内存单元的地址与内存状态;
其中,如果外部缓存中的某个内存单元的被存储访问模块申请占用,则在内存信息表中还可以存储该内存单元的时间戳,该内存单元的时间戳为该内存单元被申请时的时间戳。
例如,参见图2所示的内存信息表,且该内存信息表包括图4所示的外部缓存中的每个内存单元的地址与内存状态。
表2
内存单元的地址 内存单元的内存状态 内存单元的时间戳
0000 空闲状态
0001 空闲状态
0002 忙碌状态 Time1
0003 忙碌状态 Time2
0004 忙碌状态 Time3
步骤202:检测设备根据该内存单元的地址,获取该内存单元的内存状态;
具体地,本步骤可以包括如下两种实现形式:
第一、如果内存信息表采用第一种形式,则检测设备根据该内存单元的地址,计算出在内存信息表中存储该内存单元的内存状态的地址,根据计算出的存储该内存单元的内存状态的地址从内存信息表中读取该内存单元的内存状态。
第二、如果内存信息表采用第二种形式,则检测设备根据该内存单元的地址,从内存信息表中查找出该内存单元的内存状态。
步骤203:检测设备根据该内存单元的内存状态检测该内存单元的地址的合法性;如果合法,则执行步骤204;
具体地,检测设备对该内存单元的内存状态进行判断,如果该内存单元的内存状态为空闲状态,则检测出该内存单元的地址不合法,如果该内存单元的内存状态为忙碌状态,则检测出该内存单元的地址合法。
其中,如果检测出该内存单元的地址不合法,则检测设备丢弃该内存单元的地址并向管理员发出告警通知。
其中,存储访问模块需要释放该内存单元的地址,表明该内存单元应该已被申请占用,且在内存信息表中该内存单元的内存状态应为忙碌状态。如果从内存信息表中获取到该内存单元的内存状态为空闲状态,则检测设备据此检测出该内存单元的地址早已被存储访问模块申请释放,且存储访问模块重复释放该内存单元的地址,如果从内存信息表中获取到该内存单元的内存状态为忙碌状态,则检测设备据此检测出存储访问模块申请该内存单元的地址后首次请求释放该内存单元的地址。
步骤204:检测设备将携带该内存单元的地址的释放请求消息发送给内存管理模块,以实现释放该内存单元的地址;
其中,内存管理模块接收检测设备发送的释放请求消息,且该释放请求消息携带该内存单元的地址,然后将该内存单元作为空闲的内存单元并存储该内存单元的地址,以实现释放该内存单元的地址。
进一步地,检测设备在内存信息表中将该内存单元的内存状态修改为空闲状态。
进一步地,如果内存信息表中还存储该内存单元的时间戳,则在内存信息表中将该内存单元的时间戳清空。
其中,在本实施例中,存储访问模块当需要存储数据时,可以发送申请请求消息给内存管理模块,内存管理模块接收该申请请求消息,并分配一个空闲的内存单元的地址,然后发送申请响应消息给检测设备,且该申请响应消息携带内存管理模块分配的内存单元的地址,然后检测设备可以通过如下205至208的步骤检测内存管理模块分配的内存单元的地址的合法性,包括:
步骤205:检测设备接收内存管理模块发送的申请响应消息,且该申请响应消息携带内存管理模块分配的内存单元的地址;
步骤206:检测设备根据该内存单元的地址,获取该内存单元的内存状态;
具体地,本步骤可以包括如下两种实现形式:
第一、如果内存信息表采用第一种形式,则检测设备根据该内存单元的地址,计算出在内存信息表中存储该内存单元的内存状态的地址,根据计算出的存储该内存单元的内存状态的地址从内存信息表中读取该内存单元的内存状态。
第二、如果内存信息表采用第二种形式,则检测设备根据该内存单元的地址,从内存信息表中查找出该存单元的内存状态。
步骤207:检测设备根据该内存单元的内存状态检测该内存单元的地址的合法性;如果合法,则执行步骤208;
具体地,检测设备对该内存单元的内存状态进行判断,如果该内存单元的内存状态为忙碌状态,则检测出该内存单元的地址不合法,如果该内存单元的内存状态为空闲状态,则检测出该内存单元的地址合法。
其中,如果检测出该内存单元的地址不合法,则检测设备丢弃该内存单元的地址并向管理员发出告警通知。
进一步地,检测设备在内存信息表中将该内存单元的内存状态修改为忙碌状态。
进一步地,检测设备获取该内存单元的时间戳,在内存信息表中存储该内存单元的时间戳。
其中,检测设备可以获取当前时间,并将当前时间作为该内存单元的时间戳。
其中,内存管理模块分配内存单元的地址,表明在内存管理模块中该内存单元地址应为空闲的内存单元地址,且在内存信息表中该内存单元的内存状态应为空闲状态。如果从内存信息表中获取到该内存单元的内存状态为忙碌状态,则检测设备据此检测出该内存单元的地址早已被分配,且内存管理模块重复分配内存单元的地址,如果从内存信息表中获取到该内存单元的内存状态为空闲状态,则检测设备据此检测出内存管理模块没有重复分配该内存单元的地址。
步骤208:检测设备将携带该内存单元的地址的申请响应消息发送给内存访问模块,以完成内存访问模块申请内存单元的地址;
其中,内存访问模块接收该申请响应消息,根据该申请响应消息携带该内存单元的地址,将需要存储的数据存储在外部缓存中对应的内存单元中。
进一步地,在本实施例中,如果内存信息表中还存储内存单元的时间戳,则检测设备还可以检测出存储访问模块申请内存单元后且在预设时间之内没有释放该内存单元,并回收该内存单元的地址,具体包括如下209和210的步骤:
步骤209:检测设备对内存信息表中每个状态为忙碌状态的内存单元的时间戳进行监控,如果监控出在预设时间之前的内存单元的时间戳,则执行步骤210:
具体地,检测设备周期性的扫描内存信息表中的状态为忙碌状态的内存单元的时间戳,计算当前时间与扫描的内存单元的时间戳之间的时间差,如果计算出的时间差超过预设时间,则判断出扫描的内存单元的时间戳在预设时间之前。
其中,时间戳在预设时间之前的内存单元为存储访问模块申请后且在预设时间之内没有释放的内存单元。
步骤210:检测设备获取监控出的时间戳对应的内存单元的地址,并回收该内存单元的地址。
其中,检测设备获取监控出的时间戳对应的内存单元的地址的操作,可以包括如下两种方式:
第一、如果内存信息表为第一种形式的内存信息表,则检测设备获取在内存信息表中存储监控出的时间戳的地址,根据获取的地址计算出在外部缓存中监控出的时间戳对应的内存单元的地址;
第二、如果内存信息表为第二种形式的内存信息表,则检测设备根据监控出的时间戳从内存信息表中获取监控出的时间戳对应的内存单元的地址。
其中,检测设备回收该内存单元的地址的操作可以具体为:检测设备发送释放请求消息给内存管理模块,且该释放请求消息携带该内存单元的地址;内存管理模块接收该释放请求消息,将该释放请求消息携带该内存单元的地址作为空闲的内存单元的地址并存储该内存单元的地址,以实现释放该内存单元的地址。
进一步地,在内存信息表中,将监控出的时间戳对应的内存单元的内存状态修改为空闲状态,以及清空监控出的时间戳。
在本发明实施例中,当存储访问模块需要释放内存单元的地址或者内存管理模块分配内存单元的地址时,接收该内存单元的地址,检测该内存单元的地址的合法性,如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,使内存管理模块回收该内存单元的地址,如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。其中,内存访问模块重复释放同一内存单元的地址为不合法的内存单元的地址,以及内存管理模块重复分配同一内存单元的地址为不合法的内存单元的地址,如此能够防止内存访问模块重复向内存管理模块释放同一内存单元的地址,以及能够防止内存管理模块重复分配同一内存单元的地址,从而避免引起系统瘫痪。
如图5所示,本发明实施例提供了一种检测内存单元的设备,包括:
第一获取模块301,用于获得内存单元的地址,该内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且该内存单元为外部缓存中的内存单元;
第二获取模块302,用于根据该内存单元的地址获取该内存单元的内存状态;
检测模块303,用于根据该内存单元的内存状态检测该内存单元的地址的合法性,如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收该内存单元的地址;如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。
其中,第二获取模块302包括:
计算单元,用于根据该内存单元的地址计算出在内存信息表中存储该内存单元的内存状态的地址,内存信息表用于存储外部缓存中的内存单元的内存状态;
读取单元,用于根据计算出的内存信息表中存储该内存单元的内存状态的地址从内存信息表中读取该内存单元的内存状态。
其中,第二获取模块302,具体用于根据该内存单元的地址从内存信息表中查找该内存单元的内存状态,内存信息表用于存储外部缓存中的内存单元的地址和内存状态。
其中,第一获取模块301,具体用于接收内存访问模块发送的释放请求消息,该释放请求消息携带内存访问模块需要释放的内存单元的地址;
相应地,检测模块303,具体用于如果该内存单元的内存状态为忙碌状态,则检测出该内存单元的地址合法,如果该内存单元的内存状态为空闲状态,则检测出该内存单元的地址不合法,如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收该内存单元的地址;如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。
进一步地,该设备还包括:
第一修改模块,用于在内存信息表中将该内存单元的内存状态修改为空闲状态。
其中,该内存信息表还用于存储该内存单元的时间戳,该时间戳为该内存单元被内存访问模块申请时的时间戳;
相应地,该设备还包括:
清空模块,用于在内存信息表中将该内存单元的时间戳清空。
其中,第一获取模块301,具体用于接收内存管理模块发送的申请响应消息,申请响应消息携带内存管理模块为内存访问模块分配的内存单元的地址;
相应地,检测模块303,具体用于如果该内存单元的内存状态为忙碌状态,则检测出该内存单元的地址不合法,如果该内存单元的内存状态为空闲状态,则检测出该内存单元的地址合法,如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收该内存单元的地址;如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。
进一步地,该设备还包括:
第二修改模块,用于在内存信息表中将该内存单元的内存状态修改为忙碌状态。
进一步地,该设备还包括:
存储模块,用于根据该内存单元被申请的时间获取该内存单元的时间戳,并在内存信息表中存储该内存单元的时间戳。
进一步地,该设备还包括:
回收模块,用于对内存信息表中状态为忙碌状态的内存单元的时间戳进行监控;当监控出在预设时间之前的时间戳,获得监控的时间戳对应的内存单元的地址,回收该内存单元的地址。
在本发明实施例中,当存储访问模块需要释放的内存单元的地址或者内存管理模块分配的内存单元的地址时,获得该内存单元的地址,检测该内存单元的地址的合法性;如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收该内存单元的地址,如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存单元的地址分配给存储访问模块。其中,内存访问模块重复释放同一内存单元的地址为不合法的内存单元的地址,以及内存管理模块重复分配同一内存单元的地址为不合法的内存单元的地址,如此能够防止内存访问模块重复向内存管理模块释放同一内存单元的地址,以及能够防止内存管理模块重复分配同一内存单元的地址,从而避免引起系统瘫痪。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种检测内存单元的方法,其特征在于,所述方法包括:
获得内存单元的地址,所述内存单元的地址为内存访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元,所述内存单元的地址包括内存单元的MMU地址;
根据所述内存单元的地址获取所述内存单元的内存状态;
根据所述内存单元的内存状态检测所述内存单元的地址的合法性;
如果所述内存单元的地址合法且所述内存单元的地址为所述内存访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;
如果所述内存单元的地址合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述内存访问模块;
所述获得内存单元的地址,包括:
接收内存访问模块发送的释放请求消息,所述释放请求消息携带内存访问模块需要释放的内存单元的地址,其中,所述内存访问模块重复释放同一内存单元的地址为不合法的内存单元的地址,所述内存管理模块重复分配同一内存单元的地址为不合法的内存单元的地址;
所述根据所述内存单元的内存状态检测所述内存单元的地址的合法性,包括:
对于所述内存管理模块重复分配同一内存单元的地址的情况,如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址不合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址合法;
对于所述内存访问模块重复释放同一内存单元的地址的情况,如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址不合法。
2.如权利要求1所述的方法,其特征在于,所述根据所述内存单元的地址获取所述内存单元的内存状态,包括:
根据所述内存单元的地址计算出在内存信息表中存储所述内存单元的内存状态的地址,所述内存信息表用于存储所述外部缓存中的内存单元的内存状态;
根据所述计算出的在所述内存信息表中存储所述内存单元的内存状态的地址,从所述内存信息表中读取所述内存单元的内存状态。
3.如权利要求1所述的方法,其特征在于,所述根据所述内存单元的地址获取所述内存单元的内存状态,包括:
根据所述内存单元的地址从内存信息表中查找所述内存单元的内存状态,所述内存信息表用于存储所述外部缓存中的内存单元的地址和内存状态。
4.如权利要求1所述的方法,其特征在于,检测出所述内存访问模块释放的内存单元的地址合法之后,还包括:
在内存信息表中将所述内存单元的内存状态修改为空闲状态。
5.如权利要求4所述的方法,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳为所述内存单元被所述内存访问模块申请时的时间;
相应地,检测出所述内存访问模块释放的内存单元的地址合法之后,还包括:
在内存信息表中将所述内存单元的时间戳清空。
6.如权利要求1所述的方法,其特征在于,检测出所述内存管理模块分配的内存单元的地址合法之后,还包括:
在内存信息表中将所述内存单元的内存状态修改为忙碌状态。
7.如权利要求6所述的方法,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳用于存储所述内存单元被所述内存访问模块申请时的时间;
检测出所述内存管理模块分配的内存单元的地址合法之后,还包括:
根据所述内存单元被申请的时间获取所述内存单元的时间戳,并在内存信息表中存储所述内存单元的时间戳。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
对所述内存信息表中状态为忙碌状态的内存单元的时间戳进行监控;
当监控出在预设时间之前的时间戳,获得所述时间戳对应的内存单元的地址,回收所述内存单元的地址。
9.一种检测内存单元的设备,其特征在于,所述设备包括:
第一获取模块,用于获得内存单元的地址,所述内存单元的地址为内存访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元,所述内存单元的地址包括内存单元的MMU地址;
第二获取模块,用于根据所述内存单元的地址获取所述内存单元的内存状态;
检测模块,用于根据所述内存单元的内存状态检测所述内存单元的地址的合法性,如果所述内存单元的地址合法且所述内存单元的地址为所述内存访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的地址合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述内存访问模块;
所述第一获取模块,具体用于接收内存访问模块发送的释放请求消息,所述释放请求消息携带内存访问模块需要释放的内存单元的地址,其中,所述内存访问模块重复释放同一内存单元的地址为不合法的内存单元的地址,所述内存管理模块重复分配同一内存单元的地址为不合法的内存单元的地址;
所述检测模块,具体用于:
对于所述内存管理模块重复分配同一内存单元的地址的情况,如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址不合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址合法;
对于所述内存访问模块重复释放同一内存单元的地址的情况,如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址不合法。
10.如权利要求9所述的设备,其特征在于,所述第二获取模块包括:
计算单元,用于根据所述内存单元的地址计算出在内存信息表中存储所述内存单元的内存状态的地址,所述内存信息表用于存储所述外部缓存中的内存单元的内存状态;
读取单元,用于根据所述计算出的在所述内存信息表中存储所述内存单元的内存状态的地址从所述内存信息表中读取所述内存单元的内存状态。
11.如权利要求9所述的设备,其特征在于,
所述第二获取模块,具体用于根据所述内存单元的地址从内存信息表中查找所述内存单元的内存状态,所述内存信息表用于存储所述外部缓存中的内存单元的地址和内存状态。
12.如权利要求9所述的设备,其特征在于,所述设备还包括:
第一修改模块,用于在检测出所述内存访问模块释放的内存单元的地址合法之后,在内存信息表中将所述内存单元的内存状态修改为空闲状态。
13.如权利要求12所述的设备,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳为所述内存单元被所述内存访问模块申请时的时间;
相应地,所述设备还包括:
清空模块,用于在检测出所述内存访问模块释放的内存单元的地址合法之后,在内存信息表中将所述内存单元的时间戳清空。
14.如权利要求9所述的设备,其特征在于,所述设备还包括:
第二修改模块,用于在检测出所述内存管理模块分配的内存单元的地址合法之后,在内存信息表中将所述内存单元的内存状态修改为忙碌状态。
15.如权利要求14所述的设备,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳用于存储所述内存单元被所述内存访问模块申请时的时间;
所述设备还包括:
存储模块,用于在检测出所述内存管理模块分配的内存单元的地址合法之后,根据所述内存单元被申请的时间获取所述内存单元的时间戳,并在内存信息表中存储所述内存单元的时间戳。
16.如权利要求15所述的设备,其特征在于,所述设备还包括:
回收模块,用于对所述内存信息表中状态为忙碌状态的内存单元的时间戳进行监控;当监控出在预设时间之前的时间戳,获得所述时间戳对应的内存单元的地址,回收所述内存单元的地址。
CN201410193185.2A 2012-03-31 2012-03-31 一种检测内存单元的方法及设备 Expired - Fee Related CN103984603B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410193185.2A CN103984603B (zh) 2012-03-31 2012-03-31 一种检测内存单元的方法及设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201210093284.4A CN102650959B (zh) 2012-03-31 2012-03-31 一种检测内存单元的方法及设备
CN201410193185.2A CN103984603B (zh) 2012-03-31 2012-03-31 一种检测内存单元的方法及设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201210093284.4A Division CN102650959B (zh) 2012-03-31 2012-03-31 一种检测内存单元的方法及设备

Publications (2)

Publication Number Publication Date
CN103984603A CN103984603A (zh) 2014-08-13
CN103984603B true CN103984603B (zh) 2017-12-05

Family

ID=51276594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410193185.2A Expired - Fee Related CN103984603B (zh) 2012-03-31 2012-03-31 一种检测内存单元的方法及设备

Country Status (1)

Country Link
CN (1) CN103984603B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739645A (zh) * 2018-12-25 2019-05-10 新华三技术有限公司成都分公司 内存管理方法、装置及存储介质
CN111488215A (zh) * 2019-01-28 2020-08-04 普天信息技术有限公司 一种检测内存重复释放的方法
CN109932997B (zh) * 2019-03-01 2021-09-28 中安智联未来有限公司 一种可编程逻辑控制器内核系统
CN110971481B (zh) * 2019-11-05 2021-11-05 天津芯海创科技有限公司 一种缓存地址管理逻辑的测试方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4872166A (en) * 1986-09-10 1989-10-03 Nec Corporation Information processing system capable of reducing invalid memory operations by detecting an error in a main memory
CN1752941A (zh) * 2004-09-20 2006-03-29 华为技术有限公司 一种内存监控的装置及方法
CN101414272A (zh) * 2008-10-17 2009-04-22 上海华为技术有限公司 内存泄漏的检测方法和装置
CN102004701A (zh) * 2009-08-28 2011-04-06 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
CN102650959B (zh) * 2012-03-31 2014-06-04 华为技术有限公司 一种检测内存单元的方法及设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4872166A (en) * 1986-09-10 1989-10-03 Nec Corporation Information processing system capable of reducing invalid memory operations by detecting an error in a main memory
CN1752941A (zh) * 2004-09-20 2006-03-29 华为技术有限公司 一种内存监控的装置及方法
CN101414272A (zh) * 2008-10-17 2009-04-22 上海华为技术有限公司 内存泄漏的检测方法和装置
CN102004701A (zh) * 2009-08-28 2011-04-06 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
CN102650959B (zh) * 2012-03-31 2014-06-04 华为技术有限公司 一种检测内存单元的方法及设备

Also Published As

Publication number Publication date
CN103984603A (zh) 2014-08-13

Similar Documents

Publication Publication Date Title
CN102650959B (zh) 一种检测内存单元的方法及设备
CN103984603B (zh) 一种检测内存单元的方法及设备
CN104239225B (zh) 一种管理异构混合内存的方法及装置
CN103577335B (zh) 一种内存垃圾回收系统及方法
CN103823807B (zh) 一种去除重复数据的方法、装置及系统
CN107391280A (zh) 一种小文件的接收和存储方法及装置
CN103593376A (zh) 一种采集用户行为数据的方法及装置
CN106741015B (zh) 一种基于大数据的地铁信号设备状态修分析方法
CN103914363B (zh) 一种内存监控方法及相关装置
CN107665146A (zh) 内存管理装置和方法
CN104081364A (zh) 合作高速缓存
CN106202581A (zh) 一种数据搜索方法及装置
CN108259426A (zh) 一种DDoS攻击检测方法及设备
CN107645502A (zh) 一种报文检测方法及装置
CN107426055A (zh) 异常流量监测方法、装置及计算机可读存储介质
CN114356576A (zh) 一种基于大数据的云服务分析管理系统
CN109815005A (zh) 一种管理内存的方法、装置和存储系统
CN104951370B (zh) 一种内存管理方法及装置
CN109408416B (zh) 一种地址映射表项页管理方法及装置
CN107784463A (zh) 库存信息处理方法、系统及设备
CN108228342A (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN109522299B (zh) 数据处理方法、装置、系统及存储介质
CN115334013B (zh) 一种流量统计方法、网卡及电子设备
CN104572494A (zh) 存储系统及标记存储器
CN111461630A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171205

Termination date: 20200331

CF01 Termination of patent right due to non-payment of annual fee