CN102650959B - 一种检测内存单元的方法及设备 - Google Patents
一种检测内存单元的方法及设备 Download PDFInfo
- Publication number
- CN102650959B CN102650959B CN201210093284.4A CN201210093284A CN102650959B CN 102650959 B CN102650959 B CN 102650959B CN 201210093284 A CN201210093284 A CN 201210093284A CN 102650959 B CN102650959 B CN 102650959B
- Authority
- CN
- China
- Prior art keywords
- internal storage
- storage location
- address
- described 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种检测内存单元的方法及设备,属于计算机领域。所述方法包括:获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址;根据所述内存单元的地址获取所述内存单元的内存状态;根据所述内存单元的内存状态检测所述内存单元的地址的合法性;如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。本发明能够避免引起系统瘫痪。
Description
技术领域
本发明涉及计算机及通信领域,特别涉及一种检测内存单元的方法及设备。
背景技术
随着网络中的信息容量的增加,网络设备在处理数据的过程中,会将大量的数据缓存在外部缓存中,并且在处理数据的过程中对外部缓存进行有效的管理来充分利用外部缓存的带宽和容量。
网络设备通过存储访问模块和内存管理模块来对外部缓存进行管理,其中,外部缓存被划分成多个内存单元,内存管理模块中包括外部缓存中空闲的内存单元的MMU(MemoryManagement 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 (20)
1.一种检测内存单元的方法,其特征在于,所述方法包括:
获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元;
根据所述内存单元的地址获取所述内存单元的内存状态;
根据所述内存单元的内存状态检测所述内存单元的地址的合法性;
如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;
如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。
2.如权利要求1所述的方法,其特征在于,所述根据所述内存单元的地址获取所述内存单元的内存状态,包括:
根据所述内存单元的地址计算出在内存信息表中存储所述内存单元的内存状态的地址,所述内存信息表用于存储所述外部缓存中的内存单元的内存状态;
根据所述计算出的在所述内存信息表中存储所述内存单元的内存状态的地址,从所述内存信息表中读取所述内存单元的内存状态。
3.如权利要求1所述的方法,其特征在于,所述根据所述内存单元的地址获取所述内存单元的内存状态,包括:
根据所述内存单元的地址从内存信息表中查找所述内存单元的内存状态,所述内存信息表用于存储所述外部缓存中的内存单元的地址和内存状态。
4.如果权利要求1至3任一项权利要求所述的方法,其特征在于,所述获得内存单元的地址,包括:
接收所述内存访问模块发送的释放请求消息,所述释放请求消息携带所述内存访问模块需要释放的内存单元的地址;
相应地,所述根据所述内存单元的内存状态检测所述内存单元的地址的合法性,包括:
如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址不合法。
5.如权利要求4所述的方法,其特征在于,所述检测出所述内存单元的地址合法之后,还包括:
在内存信息表中将所述内存单元的内存状态修改为空闲状态。
6.如权利要求4所述的方法,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳为所述内存单元被所述内存访问模块申请时的时间;
相应地,所述检测出所述内存单元的地址合法之后,还包括:
在内存信息表中将所述内存单元的时间戳清空。
7.如权利要求1至3任一项权利要求所述的方法,其特征在于,所述获得内存单元的地址,包括:
接收所述内存管理模块发送的申请响应消息,所述申请响应消息携带所述内存管理模块为所述内存访问模块分配的内存单元的地址;
相应地,所述根据所述内存单元的内存状态检测所述内存单元的地址的合法性,包括:
如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址不合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址合法。
8.如权利要求7所述的方法,其特征在于,所述检测出所述内存单元的地址合法之后,还包括:
在内存信息表中将所述内存单元的内存状态修改为忙碌状态。
9.如权利要求7所述的方法,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳用于存储所述内存单元被所述内存访问模块申请时的时间;
所述检测出所述内存单元的地址合法之后,还包括:
根据所述内存单元被申请的时间获取所述内存单元的时间戳,并在内存信息表中存储所述内存单元的时间戳。
10.如权利要求9所述的方法,其特征在于,所述方法还包括:
对所述内存信息表中状态为忙碌状态的内存单元的时间戳进行监控;
当监控出在预设时间之前的时间戳,获得所述时间戳对应的内存单元的地址,回收所述内存单元的地址。
11.一种检测内存单元的设备,其特征在于,所述设备包括:
第一获取模块,用于获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元;
第二获取模块,用于根据所述内存单元的地址获取所述内存单元的内存状态;
检测模块,用于根据所述内存单元的内存状态检测所述内存单元的地址的合法性,如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。
12.如权利要求11所述的设备,其特征在于,所述获取模块包括:
计算单元,用于根据所述内存单元的地址计算出在内存信息表中存储所述内存单元的内存状态的地址,所述内存信息表用于存储所述外部缓存中的内存单元的内存状态;
读取单元,用于根据所述计算出的在所述内存信息表中存储所述内存单元的内存状态的地址从所述内存信息表中读取所述内存单元的内存状态。
13.如权利要求11所述的设备,其特征在于,
所述第二获取模块,具体用于根据所述内存单元的地址从内存信息表中查找所述内存单元的内存状态,所述内存信息表用于存储所述外部缓存中的内存单元的地址和内存状态。
14.如果权利要求11至13任一项权利要求所述的设备,其特征在于,
所述第一获取模块,具体用于接收所述内存访问模块发送的释放请求消息,所述释放请求消息携带所述内存访问模块需要释放的内存单元的地址;
相应地,所述检测模块,具体用于如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址不合法,如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。
15.如权利要求14所述的设备,其特征在于,所述设备还包括:
第一修改模块,用于在内存信息表中将所述内存单元的内存状态修改为空闲状态。
16.如权利要求14所述的设备,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳为所述内存单元被所述内存访问模块申请时的时间戳;
相应地,所述设备还包括:
清空模块,用于在内存信息表中将所述内存单元的时间戳清空。
17.如权利要求11至13任一项权利要求所述的设备,其特征在于,
所述第一获取模块,具体用于接收所述内存管理模块发送的申请响应消息,所述申请响应消息携带所述内存管理模块为所述内存访问模块分配的内存单元的地址;
相应地,所述检测模块,具体用于如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址不合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址合法,如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。
18.如权利要求17所述的设备,其特征在于,所述设备还包括:
第二修改模块,用于在内存信息表中将所述内存单元的内存状态修改为忙碌状态。
19.如权利要求17所述的设备,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳用于存储所述内存单元被所述内存访问模块申请时的时间;
所述设备还包括:
存储模块,用于根据所述内存单元被申请的时间获取所述内存单元的时间戳,并在内存信息表中存储所述内存单元的时间戳。
20.如权利要求19所述的设备,其特征在于,所述设备还包括:
回收模块,用于对所述内存信息表中状态为忙碌状态的内存单元的时间戳进行监控;当监控出在预设时间之前的时间戳,获得所述时间戳对应的内存单元的地址,回收所述内存单元的地址。
Priority Applications (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 | 一种检测内存单元的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210093284.4A CN102650959B (zh) | 2012-03-31 | 2012-03-31 | 一种检测内存单元的方法及设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410193185.2A Division CN103984603B (zh) | 2012-03-31 | 2012-03-31 | 一种检测内存单元的方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102650959A CN102650959A (zh) | 2012-08-29 |
CN102650959B true CN102650959B (zh) | 2014-06-04 |
Family
ID=46692967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210093284.4A Expired - Fee Related CN102650959B (zh) | 2012-03-31 | 2012-03-31 | 一种检测内存单元的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102650959B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984603B (zh) * | 2012-03-31 | 2017-12-05 | 华为技术有限公司 | 一种检测内存单元的方法及设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714016B (zh) * | 2014-01-14 | 2017-10-27 | 北京猎豹移动科技有限公司 | 缓存的清理方法、装置及客户端 |
CN105373488A (zh) | 2014-08-08 | 2016-03-02 | 中兴通讯股份有限公司 | 合法内存访问的探测方法及装置 |
CN106201851A (zh) * | 2015-04-29 | 2016-12-07 | 中兴通讯股份有限公司 | 堆内存操作的检测方法及装置 |
CN111488215A (zh) * | 2019-01-28 | 2020-08-04 | 普天信息技术有限公司 | 一种检测内存重复释放的方法 |
CN110971481B (zh) * | 2019-11-05 | 2021-11-05 | 天津芯海创科技有限公司 | 一种缓存地址管理逻辑的测试方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0259859B1 (en) * | 1986-09-10 | 1992-12-02 | Nec Corporation | Information processing system capable of reducing invalid memory operations by detecting an error in a main memory |
JP2008090442A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | メモリ制御装置 |
CN1996258A (zh) * | 2006-12-28 | 2007-07-11 | 武汉虹旭信息技术有限责任公司 | 一种动态内存池的实现方法 |
CN101470665B (zh) * | 2007-12-27 | 2011-05-11 | Tcl集团股份有限公司 | 一种无mmu平台的应用系统内存管理的方法及系统 |
CN102004701B (zh) * | 2009-08-28 | 2013-01-09 | 炬才微电子(深圳)有限公司 | 一种次级内存的分配方法和装置 |
-
2012
- 2012-03-31 CN CN201210093284.4A patent/CN102650959B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984603B (zh) * | 2012-03-31 | 2017-12-05 | 华为技术有限公司 | 一种检测内存单元的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102650959A (zh) | 2012-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102650959B (zh) | 一种检测内存单元的方法及设备 | |
EP2657844B1 (en) | Method for tracking memory usages of a data processing system | |
JP6014925B2 (ja) | メモリ回収方法および装置 | |
CN103139255B (zh) | 分配资源标识和标识段的方法 | |
CN103984603A (zh) | 一种检测内存单元的方法及设备 | |
CN103778149A (zh) | 文件系统及其对文件进行存储管理的方法 | |
CN109583222A (zh) | 分布式文件系统元数据服务器回收客户端权限方法及装置 | |
CN105095495A (zh) | 一种分布式文件系统缓存管理方法和系统 | |
CN109815005A (zh) | 一种管理内存的方法、装置和存储系统 | |
CN102253854A (zh) | 业务处理方法和Java虚拟机 | |
CN103823807A (zh) | 一种去除重复数据的方法、装置及系统 | |
CN105183399A (zh) | 一种基于弹性块存储的数据写、读方法及装置 | |
CN101827120A (zh) | 一种集群存储方法及系统 | |
CN107077399A (zh) | 确定针对垃圾收集的去重复存储区中的未引用页面 | |
CN109756429A (zh) | 带宽分配方法及设备 | |
CN104899157A (zh) | 一种内存溢出检测方法和系统 | |
CN105335367A (zh) | 确定与文件目录关联的应用程序的方法、装置及服务器 | |
CN104951370B (zh) | 一种内存管理方法及装置 | |
CN104965793A (zh) | 一种云存储数据节点装置 | |
CN106021026B (zh) | 一种备份方法及装置 | |
CN109286532B (zh) | 云计算系统中告警信息的管理方法和装置 | |
CN103714059A (zh) | 一种更新数据的方法及装置 | |
CN103064793B (zh) | 精简配置容量回收方法和系统 | |
CN109308245A (zh) | 一种服务器资源预警方法、装置、设备及可读存储介质 | |
CN103106246A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140604 Termination date: 20190331 |