一种检测内存单元的方法及设备的制作方法

文档序号:6367492阅读:132来源:国知局
专利名称:一种检测内存单元的方法及设备的制作方法
技术领域
本发明涉及计算机及通信领域,特别涉及一种检测内存单元的方法及设备。
背景技术
随着网络中的信息容量的 増加,网络设备在处理数据的过程中,会将大量的数据缓存在外部缓存中,并且在处理数据的过程中对外部缓存进行有效的管理来充分利用外部缓存的带宽和容量。网络设备通过存储访问模块和内存管理模块来对外部缓存进行管理,其中,外部缓存被划分成多个内存単元,内存管理模块中包括外部缓存中空闲的内存单元的MMU(Memory Management Unit,内存管理单元)地址;存储访问模块当需要将数据缓存到外部缓存中时,向内存管理模块申请内存単元,内存管理模块分配空闲的内存单元的MMU地址并将该内存単元的MMU地址发送给内存访问模块,内存访问模块根据该内存单元的MMU地址将该数据存储在外部缓存中对应的内存单元中;内存访问模块当需要释放申请的内存单元的MMU地址时,将该内存单元的MMU地址发送给存储管理模块,以请求内存管理模块释放该内存单元的MMU地址。在实现本发明的过程中,发明人发现现有技术至少存在以下问题存储访问模块在向内存管理模块释放内存单元的MMU地址时,可能会出现同一内存单元的MMU地址被重复释放;以及,存储访问模块向内存管理模块申请内存単元吋,内存管理模块可能会出同一内存单元的MMU地址被重复分配,从而可能引起系统瘫痪。

发明内容
为了避免引起系统瘫痪,本发明提供了一种检测内存单元的方法及设备。所述技术方案如下一种检测内存单元的方法,所述方法包括获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元;根据所述内存单元的地址获取所述内存单元的内存状态;根据所述内存单元的内存状态检测所述内存单元的地址的合法性; 如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存単元的地址分配给所述存储访问模块。一种检测内存单元的设备,所述设备包括第一获取模块,用于获得内存单元的地址,所述内存単元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存単元为外部缓存中的内存单元;第二获取模块,用于根据所述内存单元的地址获取所述内存单元的内存状态;检测模块,用于根据所述内存单元的内存状态检测所述内存单元的地址的合法性,如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存単元的地址分配给所述存储访问模块。在本发明实施例中,当存储访问模块需要释 放内存单元的地址或者内存管理模块分配内存单元的地址时,获得该内存単元的地址,检测该内存単元的地址的合法性;如果该内存单元的地址合法且该内存单元的地址为存储访问模块需要释放的内存单元的地址,控制内存管理模块回收该内存单元的地址,如果该内存单元的地址合法且该内存单元的地址为内存管理模块分配的内存单元的地址,把该内存単元的地址分配给存储访问模块。其中,内存访问模块重复释放同一内存单元的地址为不合法的内存单元的地址,以及内存管理模块重复分配同一内存单元的地址为不合法的内存单元的地址,如此能够防止内存访问模块重复向内存管理模块释放同一内存单元的地址,以及能够防止内存管理模块重复分配同一内存单元的地址,从而避免引起系统瘫痪。


图I是本发明实施例提供的一种检测内存单元的方法流程图;图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分别计算出在内存信息表中存储第一内存单元的内存状态的地址al,第二内存单元的内存状态的地址a2、第三内存单元的内存状态的地址a3、第四内存单元的内存状态的地址a4以及第五内存单元的内存状态的地址a5 ;并根据存储第一内存单元的内存状态的地址al,第二内存单元的内存状态的地址a2、第三内存单元的内存状态的地址a3、第四内存单元的内存状态的地址a4以及第五内存单元的内存状态的地址a5分别将第一内存单元的内存状态、第二内存单元的内存状态、第三内存单元的内存状态、第四内存单元的内存状态和第五内存单元的内存状态存储在如表I所示的内存信息表中。表I

权利要求
1.一种检测内存单元的方法,其特征在于,所述方法包括 获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元; 根据所述内存单元的地址获取所述内存単元的内存状态; 根据所述内存单元的内存状态检测所述内存单元的地址的合法性; 如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址; 如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存単元的地址分配给所述存储访问模块。
2.如权利要求I所述的方法,其特征在于,所述根据所述内存単元的地址获取所述内存单元的内存状态,包括 根据所述内存单元的地址计算出在内存信息表中存储所述内存单元的内存状态的地址,所述内存信息表用于存储所述外部缓存中的内存单元的内存状态; 根据所述计算出的在所述内存信息表中存储所述内存単元的内存状态的地址,从所述内存信息表中读取所述内存単元的内存状态。
3.如权利要求I所述的方法,其特征在于,所述根据所述内存単元的地址获取所述内存单元的内存状态,包括 根据所述内存单元的地址从内存信息表中查找所述内存単元的内存状态,所述内存信息表用于存储所述外部缓存中的内存单元的地址和内存状态。
4.如果权利要求I至3任一项权利要求所述的方法,其特征在于,所述获得内存单元的地址,包括 接收所述内存访问模块发送的释放请求消息,所述释放请求消息携帯所述内存访问模块需要释放的内存单元的地址; 相应地,所述根据所述内存単元的内存状态检测所述内存単元的地址的合法性,包括 如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址合法,如果所述内存単元的内存状态为空闲状态,则检测出所述内存単元的地址不合法。
5.如权利要求4所述的方法,其特征在于,所述检测出所述内存単元的地址合法之后,还包括 在内存信息表中将所述内存单元的内存状态修改为空闲状态。
6.如权利要求4或5所述的方法,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳为所述内存単元被所述内存访问模块申请时的时间; 相应地,所述检测出所述内存単元的地址合法之后,还包括 在内存信息表中将所述内存单元的时间戳清空。
7.如权利要求I至3任一项权利要求所述的方法,其特征在于,所述获得内存单元的地址,包括 接收所述内存管理模块发送的申请响应消息,所述申请响应消息携帯所述内存管理模块为所述内存访问模块分配的内存单元的地址;相应地,所述根据所述内存単元的内存状态检测所述内存単元的地址的合法性,包括 如果所述内存单元的内存状态为忙碌状态,则检测出所述内存单元的地址不合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存単元的地址合法。
8.如权利要求7所述的方法,其特征在于,所述检测出所述内存単元的地址合法之后,还包括 在内存信息表中将所述内存单元的内存状态修改为忙碌状态。
9.如权利要求7或8所述的方法,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳用于存储所述内存単元被所述内存访问模块申请时的时间; 所述检测出所述内存単元的地址合法之后,还包括 根据所述内存单元被申请的时间获取所述内存単元的时间戳,并在内存信息表中存储所述内存単元的时间戳。
10.如权利要求9所述的方法,其特征在于,所述方法还包括 对所述内存信息表中状态为忙碌状态的内存单元的时间戳进行监控; 当监控出在预设时间之前的时间戳,获得所述时间戳对应的内存单元的地址,回收所述内存单元的地址。
11.一种检测内存单元的设备,其特征在于,所述设备包括 第一获取模块,用于获得内存单元的地址,所述内存単元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址,且所述内存单元为外部缓存中的内存单元; 第二获取模块,用于根据所述内存単元的地址获取所述内存単元的内存状态; 检测模块,用于根据所述内存単元的内存状态检测所述内存単元的地址的合法性,如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。
12.如权利要求11所述的设备,其特征在于,所述获取模块包括 计算单元,用于根据所述内存単元的地址计算出在内存信息表中存储所述内存単元的内存状态的地址,所述内存信息表用于存储所述外部缓存中的内存单元的内存状态; 读取单元,用于根据所述计算出的在所述内存信息表中存储所述内存単元的内存状态的地址从所述内存信息表中读取所述内存单元的内存状态。
13.如权利要求11所述的设备,其特征在干, 所述第二获取模块,具体用于根据所述内存単元的地址从内存信息表中查找所述内存单元的内存状态,所述内存信息表用于存储所述外部缓存中的内存单元的地址和内存状态。
14.如果权利要求11至13任一项权利要求所述的设备,其特征在干, 所述第一获取模块,具体用于接收所述内存访问模块发送的释放请求消息,所述释放请求消息携帯所述内存访问模块需要释放的内存单元的地址; 相应地,所述检测模块,具体用于如果所述内存単元的内存状态为忙碌状态,则检测出所述内存単元的地址合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存単元的地址不合法,如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存単元的地址分配给所述存储访问模块。
15.如权利要求14所述的设备,其特征在于,所述设备还包括 第一修改模块,用于在内存信息表中将所述内存単元的内存状态修改为空闲状态。
16.如权利要求14或15所述的设备,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳为所述内存単元被所述内存访问模块申请时的时间戳; 相应地,所述设备还包括 清空模块,用于在内存信息表中将所述内存単元的时间戳清空。
17.如权利要求11至13任一项权利要求所述的设备,其特征在干, 所述第一获取模块,具体用于接收所述内存管理模块发送的申请响应消息,所述申请响应消息携帯所述内存管理模块为所述内存访问模块分配的内存单元的地址; 相应地,所述检测模块,具体用于如果所述内存単元的内存状态为忙碌状态,则检测出所述内存単元的地址不合法,如果所述内存单元的内存状态为空闲状态,则检测出所述内存单元的地址合法,如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存単元的地址分配给所述存储访问模块。
18.如权利要求17所述的设备,其特征在于,所述设备还包括 第二修改模块,用于在内存信息表中将所述内存単元的内存状态修改为忙碌状态。
19.如权利要求17或18所述的设备,其特征在于,所述内存信息表还用于存储所述内存单元的时间戳,所述时间戳用于存储所述内存単元被所述内存访问模块申请时的时间; 所述设备还包括 存储模块,用于根据所述内存単元被申请的时间获取所述内存単元的时间戳,并在内存信息表中存储所述内存単元的时间戳。
20.如权利要求19所述的设备,其特征在于,所述设备还包括 回收模块,用于对所述内存信息表中状态为忙碌状态的内存单元的时间戳进行监控;当监控出在预设时间之前的时间戳,获得所述时间戳对应的内存单元的地址,回收所述内存单元的地址。
全文摘要
本发明公开了一种检测内存单元的方法及设备,属于计算机领域。所述方法包括获得内存单元的地址,所述内存单元的地址为存储访问模块需要释放的内存单元的地址或者为内存管理模块分配的内存单元的地址;根据所述内存单元的地址获取所述内存单元的内存状态;根据所述内存单元的内存状态检测所述内存单元的地址的合法性;如果所述内存单元的内存状态合法且所述内存单元的地址为所述存储访问模块需要释放的内存单元的地址,控制所述内存管理模块回收所述内存单元的地址;如果所述内存单元的内存状态合法且所述内存单元的地址为所述内存管理模块分配的内存单元的地址,把所述内存单元的地址分配给所述存储访问模块。本发明能够避免引起系统瘫痪。
文档编号G06F12/02GK102650959SQ20121009328
公开日2012年8月29日 申请日期2012年3月31日 优先权日2012年3月31日
发明者张朋, 戴崇经, 江龙 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1