CN100547595C - 一种共享链表错误检测方法和系统 - Google Patents

一种共享链表错误检测方法和系统 Download PDF

Info

Publication number
CN100547595C
CN100547595C CNB200710178612XA CN200710178612A CN100547595C CN 100547595 C CN100547595 C CN 100547595C CN B200710178612X A CNB200710178612X A CN B200710178612XA CN 200710178612 A CN200710178612 A CN 200710178612A CN 100547595 C CN100547595 C CN 100547595C
Authority
CN
China
Prior art keywords
chained list
list item
list
magic number
item
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
CNB200710178612XA
Other languages
English (en)
Other versions
CN101169791A (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.)
Beijing Zhigu Tech Co Ltd
Original Assignee
Fujian Star Net Communication 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 Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CNB200710178612XA priority Critical patent/CN100547595C/zh
Publication of CN101169791A publication Critical patent/CN101169791A/zh
Application granted granted Critical
Publication of CN100547595C publication Critical patent/CN100547595C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种共享链表错误检测方法和系统。当释放链表表项时,该方法包括步骤:检测存储单元所释放的内存空间中是否有所述链表表项;若检测的结果为有所述链表表项,则报出错误。通过本发明,当释放链表表项时,通过检测该表项是否从链表上摘除来进行报错,从而可从根源上发现上述错误,无需后续查错,节省了时间和人力。

Description

一种共享链表错误检测方法和系统
技术领域
本发明关于设备管理技术,特别关于一种共享链表错误检测方法和系统。
背景技术
目前,随着通信及计算机网络的发展,各企业购买和使用越来越多的设备,例如,计算机网络服务器、网络交换机工作站、路由器、终端服务器;电话交换机、电话终端设备;通信传输设备如PCM复用设备,光端机,载波机,微波机等。
同时需要对这些设备进行管理。设备管理就是指对各种设备运行状况、各种工作环境进行监控,让管理平台来处理许多中间环节,简化工作、减少管理人员工作量,减少设备故障反应时间,提高设备运行效率。
目前,现有技术中通过管理平台的服务器对设备进行管理,如可通过服务器中的处理器调用储存在存储器中的管理软件系统进行设备管理。并且,在模块化的管理软件系统中,经常有模块之间共享数据结构,特别是在嵌入式领域,系统性能很重要,为了实现高性能,有时会将几个模块融合在一起,共享内存空间,以获得更快的速度。因此,各个模块需要共享数据结构,而链表就是一个很常用的数据结构。下面以使用链表为例来进行说明。
例如,在设备管理中:管理单元1管理所有设备,建立一个设备链表,负责遍历检查所有设备。管理单元2管理类别为a的设备,在增加一个a类设备时将该设备加入设备链表中,在删除某个a类设备时将该a类设备从设备链表中删除。管理单元3管理类别为b的设备,在增加一个b类设备时将该设备加入设备链表中,在删除某个b类设备时将该b类设备从设备链表中删除。
若上述设备链表为双向链表,如图1所示为双向链表示意图。其中,双向链表头100,表项1、表项2、表项3、表项4、表项5,上述各表项存储于同一个存储器中。在图1中,链表的每个表项有前导和后续,如图1所示,实线指向该表项的后续,虚线指向该表项的前导。例如,表项2的前导是表项1,后续是表项3。链表的遍历操作就是从双向链表头100开始,依次访问其后续。如图1中遍历则是依次访问表项1->表项2->表项3->表项4->表项5。
下面以图1所示的链表来说明现有技术中存在的问题。在图1中,假设第一管理单元管理所有表项,包括表项1、表项2、表项3、表项4和表项5,主要负责遍历访问这些表项,第二管理单元控制表项1、表项2,第三管理单元控制表项3,第四管理单元控制表项4、表项5。此时,如果第三管理单元释放表项3,这样表项3对应的内存空间已不属于该第三管理单元控制,但此时由于各种可能的原因,使得该表项3还存在于链表中,仍归第一管理单元管理,此时,链表中拥有一个已释放的表项。
如图2所示,表项3的内存空间由于被释放,可能用做它用,造成其前导和后续混乱。这时,如果第一管理单元对链表进行遍历操作,访问完表项2后会继续访问其后续,即表项3,但是由于表项3已被释放,该表项3是错误的(则称表项3为故障产生点),访问完该表项3后无法继续访问表项4,此时遍历则会混乱,会导致整个软件系统崩溃,这样会造成整个管理设备死掉,需要复位,该管理设备当时处理的内容也将全部丢失。
上述软件系统崩溃虽然是由第三管理单元导致,但其崩溃却是在遍历操作中产生(这个操作是由第一管理单元发起),此时无法知道这个错误的表项3原来属于哪个管理单元,因为第一管理单元负责遍历访问,不负责其错误操作,且有可能是第二管理单元、第三管理单元或第四管理单元的误操作,因此不能从故障中直接找到原因。这样,就需要花大量时间去走读第二、第三和第四管理单元的相关代码(因为该链表由这3个管理单元共享),需要在这3个管理单元中增加调试代码,重现故障,找出根源,要花费大量人力和时间。
发明内容
本发明的主要目的在于提供一种共享链表错误检测方法,在释放链表表项时,通过检测链表表项是否从链表上摘除来进行报错,无需后续的查错,节省时间和人力。
本发明的目的还在于提供一种设备管理系统,在释放链表表项时,该系统可检测该链表表项是否从链表上摘除来进行报错,解决了现有技术中存在的问题。
为了实现上述目的,本发明提供一种共享链表错误检测方法,在释放链表表项时,该方法包括步骤:检测该存储单元所释放的内存空间中是否有所述链表表项,包括:根据插入所述链表表项的魔数和记录表中记录的所述链表表项对应的魔数的内存地址或者与所述魔数的内存地址相关的信息来检测所述存储单元所释放的内存空间中是否有所述链表表项;若检测的结果为有所述链表表项,则报出错误,以获知出错的链表表项。
为了实现上述目的,本发明还提供一种设备管理系统,该系统包括:存储单元,用于储存链表表项;管理单元,与所述存储单元连接,当释放链表表项时,所述管理单元用于检测所述存储单元所释放的内存空间中是否有所述链表表项,包括:根据插入所述链表表项的魔数和预建记录表中记录的魔数的内存地址来检测所述存储单元所释放的空间中是否有所述链表表项;若检测的结果为有所述链表表项,则报出错误,以获知出错的链表表项。
本发明的有益效果在于,当释放链表表项时,通过检测链表表项是否从链表上摘除来进行报错,从而可从根源上发现上述错误,无需后续查错,节省了时间和人力。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是现有技术中双向链表示意图;
图2是图1中的表项3被释放后遍历操作示意图;
图3是本发明设备管理系统结构示意图;
图4是本发明共享链表错误检测方法流程图;
图5A是本发明实施方式页表结构示意图;
图5B是页、页表和位图相互关联示意图;
图6是采用图4的记录表时链表表项插入流程图;
图7是采用图4的记录表时链表表项释放流程图;
图8为采用图4的记录表时链表表项删除流程图;
图9是采用图5A的页表结构时链表表项插入流程图;
图10是采用图5A的页表结构时链表表项释放流程图;
图11是采用图5A的页表结构时链表表项删除流程图;
图12是本发明一个实施例的链表示意图;
图13是进行检测时的一个记录表示意图;
图14是进行检测时的另一个记录表示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明实施方式做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
以下结合附图对本发明的实施方式进行详细说明。
本发明提供一种设备管理系统。如图3所示,是本发明设备管理系统结构示意图,如图3所示,该系统包括:存储单元302,用于储存链表表项(图中未示出);管理单元301,与存储单元302连接,当释放链表表项时,管理单元301用于检测存储单元302所释放的内存空间中是否有该链表表项,若检测的结果为有链表表项,则报出错误,这样,即可获知出错的链表表项。
由上述可知,当释放链表表项时,通过检测该表项是否从链表上摘除来进行报错,从而可从根源上发现哪个链表出现上述错误,无需后续查错,可节省时间和人力。并且,在本发明实施方式中,报出错误是指抛出断言,让软件停止运行,以方便检错。
在本发明实施方式中,管理单元301可根据插入链表表项的魔数和记录表中记录的该链表表项对应的魔数的内存地址来检测存储单元302所释放的内存空间中是否有该链表表项。
当在链表中插入链表表项时,设置该链表表项的魔数。另外,在存储单元302中建立记录表(图中未示出),来记录该链表表项的魔数的内存地址。这样,在存储单元302中还储存有记录表(图中未示出),该记录表中记录该链表表项对应的魔数内存地址。
在本发明的实施方式中,魔数可为任意值,如为32bit,即可为4个字节的值,也可为8个字节的值等等。
此外,还可将魔数设置一定的内容,例如,链表中的链表表项的魔数与该链表的魔数一致。这样,当有多个链表时,预先在链表上加入魔数,魔数按链表来分,每个链表有特定的魔数,以便在获知出错的链表表项之后,可将魔数从存储单元302中读出,快速定位出错链表。但不限于此,还可根据具体的情况在魔数中设置相应的内容。
在本发明的一个实施方式中,记录表可采用图4所示的结构,直接记录所有插入到链表的表项上的魔数的内存地址。例如,插入表项1时,首先对该表项1设置魔数,且在记录表里增加一项,其值为表项1魔数的内存地址;同理,插入表项2时,对该表项2设置魔数,在记录表里再增加一项,其值为表项2魔数的内存地址等等。这样,当释放链表表项时,首先检索记录表,判断该记录表中所记录的魔数的内存地址是否在存储单元302所释放的内存空间内;若判断的结果为是,则存储单元302所释放的内存空间有该链表表项,则报错,这样可获知出错的链表表项。
当链表表项的魔数与链表的魔数一致时,在报错获知出错的链表表项后,可根据魔数的内存地址找到该链表表项对应的魔数,再根据该魔数报错,以获知出错的链表,从而可快速定位出错链表。
在本发明的另一个实施方式中,当存储单元302的内存空间按照页划分时,如图5A所示的页表结构,内存地址与页对应,此时,记录表可采用与该页相关联的位图,该位图记录有与魔数的内存地址相关的信息,如图5A所示。
例如32M的内存空间,可分割成8192个页面。一般一个页面大小为4KByte,每一页可有1024个魔数,使用一个1024bit的位图表示,如图5A所示,位图上的每个位对应页上的32bit,该32bit如果有魔数,则位图置1,如果没有,则位图置0。
按照上述方式划分内存空间时,内存的每个地址自然属于某个页中。例如,0x100004为1M再多4个字节,1M有256个页,则0x100004地址就在第256页上(按照软件编程习惯,首页一般称为第0页,因为数组索引一般是0开始)。
这样,当链表表项插入时,设置链表表项的魔数,根据该链表表项的魔数的内存地址在位图上对应的位置上置1。当释放该链表表项时,检索所释放的内存空间对应的魔数的内存地址所对应的位图范围;判断该位图范围内的位中是否有置位;若判断的结果为有,则存储单元302所释放的内存空间有该链表表项。此时,报出错误,以获知出错的链表表项。
若多个链表同时存在时,在报出错误获知出错的链表表项之后,可根据有置位的位找到魔数的内存地址,然后根据魔数内存地址找到对应的魔数,再根据该魔数报错,从而可快速定位出错链表。
在本发明的实施方式中,如图5A、5B所示,可采用页表将页和位图关联起来,页表和页一一对应,一般情况下,页表的位置预先设定好为已知,根据页地址可以找到对应的页表,然后根据页表中储存的位图地址找到相应的位图。如图5A和图5B所示,其中,图5B为本发明实施方式中页、页表和位图相互关联示意图(以6页为例)。
因此,根据内存地址找出其所在页,然后通过页表再找到与该页关联的位图,该位图记录有与魔数的内存地址相关的信息。其中,页表可为连续的数组,其位置可以设定好,为已知。页表中的每个项对应一个页,如图5B所示,页表项0对应页0,页表项1对应页1,……。并且该页表内还保存与上述页关联的位图地址,根据该位图地址找到相应的位图,例如,对于页5,可找到页表项5,且读取记录在页表中的位图地址找到该页5对应的页5的位图。
下面以图3所示的设备管理系统为例对本发明的共享链表错误检测方法进行说明。
本发明提供一种共享链表错误检测方法,当释放链表表项时,该方法包括步骤:检测该存储单元302所释放的内存空间中是否有该链表表项;若检测的结果为有该链表表项,则报出错误,以获知出错的链表表项。
因此,当释放链表表项时,通过检测该表项是否从链表上摘除来进行报错,从而可从根源上发现上述错误,无需后续查错,节省了时间和人力。
在上述实施方式中,检测该存储单元302所释放的内存空间中是否有该链表表项可采用如下方式:根据插入链表表项的魔数和记录表中记录的魔数的内存地址或者与所述魔数的内存地址相关的信息来检测存储单元302所释放的内存空间中是否有链表表项。
以下分别针对图4、图5A所示的记录表为例对本发明的检测方法进行详细说明。
第一、采用如图4所示的记录表。
图6为采用图4的记录表时链表表项插入流程图;图7是采用图4的记录表时链表表项释放流程图;图8是采用图4的记录表时删除链表表项流程图。
如图6所示,当插入链表表项时,可采用如下方式:
步骤601,插入链表表项至链表,设置该链表表项的魔数;该魔数值可为一个32bit,即4个字节的值,但不限于此;
步骤602,将对应的魔数的内存地址记录到记录表中,即在记录表中增加一个项,其值为魔数的内存地址。
在插入链表表项后,若在卸载时由于种种原因没有删除该链表表项,而直接释放了含有该链表表项的内存空间,则可通过下述方式进行检测。
如图7所示,步骤701,检索记录表;
步骤702,判断记录表中所记录的魔数的内存地址是否在所释放的内存空间内;
步骤703,若步骤702中判断的结果为是,说明释放的内存空间内有链表表项,则报错,以获知该出错的链表表项。
若多个链表同时存在时,在报出错误获知出错的链表表项之后,还可通过以下步骤获知哪个链表出错,如图7所示:
步骤704,根据该魔数的内存地址获取对应的魔数;
步骤705,根据该魔数报错,即将该链表表项对应的魔数读出来报错,这样,可根据该魔数知道哪个链表出错。
因此,在插入链表表项后,若在卸载时由于种种原因没有删除该链表表项,而直接释放了含有该链表表项的内存空间,则可通过上述方式检测到出错的链表表项,并且根据设置的魔数可知道哪个链表出错。
此外,还包括步骤706,若步骤702中判断的结果为否,说明在卸载时已经删除了该链表表项,则内存释放结束。
采用上述方式插入链表表项时,当删除该链表表项时,如图8所示,可采用如下方式:
步骤801,删除链表表项,设置该链表表项的魔数为0;
步骤802,查找记录表,将对应的该魔数的内存地址从记录表中删除。
由上述可知,采用图4所示的记录表进行检测时,方法简单、有效。
第二、采用如图5A所示的页表结构。
图9是采用图5A的页表结构时链表表项插入流程图;图10是采用图5A的页表结构时链表表项释放流程图;图11是采用图5A的页表结构时删除链表表项流程图。
如图9所示,当插入链表表项时,可采用如下方式:
步骤901,插入链表表项至链表,设置该链表表项魔数;
步骤902,找到与该魔数的内存地址对应的页;
步骤903,判断与该页关联的位图是否存在;
步骤904,若步骤903中判断的结果为存在,则在位图中该魔数的内存地址所对应的位置上置位,本实施例中置1;其中,如图5A、5B所示,采用页表将页和位图关联起来,根据页地址可以找到对应的页表项,然后根据页表中储存的位图的地址找到相应的位图,最后在位图中置位;
此外,还可包括步骤905,若步骤903中判断的结果为不存在位图,则申请位图空间,然后在位图中该魔数的内存地址所属的位置上置位,这样,可以节省存储单元302的内存空间。当然,在本发明实施方式中也可直接设置位图而不需要进行如上判断、申请过程。
在插入链表表项后,若在卸载时由于种种原因没有删除该链表表项,而直接释放了含有该链表表项的内存空间,则可通过下述方式进行检测。
如图10所示,步骤1001,将魔数的内存地址以整型大小对齐;对齐后,使得该地址和位图容易一一对应;例如,本发明实施方式中,整型假定32位,则页上的第一个整型对应位图第0位、第2个整型对应位图第1位、……、最后一个整型对应位图第1023位,但不限于此,还可采用其他方式;
步骤1002,检索所释放内存空间对应的位图范围;其中,根据页地址可以找到对应的页表项,然后根据页表中储存的位图的地址找到相应的位图;步骤1003,判断该位图范围中的位上是否有置位,即置1;
步骤1004,在步骤1003中,若判断结果为有置位,则报错,以获知出错的链表表项。
若多个链表同时存在时,在报出错误获知出错的链表表项之后,还可通过以下步骤获知哪个链表出错,如图10所示:
步骤1005,则找到置1的位所对应的魔数的内存地址;
步骤1006,根据找到的魔数的内存地址找到对应的魔数;
步骤1007,根据该魔数报错,以获知出错的链表。
此外,还包括步骤1008,在步骤1003中,若判断结果位无置位,则说明内存释放结束。
采用图9所示的方式插入链表表项后,当删除链表表项时,如图11所示,可采用如下方式:
步骤1101,删除链表表项,设置该链表表项魔数为0;
步骤1102,找到该魔数的内存地址对应的页;
步骤1103,根据页表找到对应的位图,然后在位图中该魔数的内存地址所对应的位置清零。其中,通过页表找到对应的位图已在上述内容中进行说明,在此处不再赘述。
由上述可知,当释放链表表项时,通过检测该表项是否从链表上摘除来进行报错,从而可从根源上发现上述错误,无需后续查错,可节省时间和人力。
本发明可适用于所有与链表类似,多模块共享的全局数据结构,如树、哈希表等,检查节点空间释放时尚未从全局结构中移除的问题。
下面以定时器处理为例,参考附图12、13、14对本发明的方法和系统进行说明。图12是本发明一个实施例的链表示意图;图13是进行检测时的一个记录表示意图;图14是进行检测时的另一个记录表示意图。
如图12所示,管理单元A(图中未示出):定时器单元,本身维护一个定时器链,每隔10毫秒,遍历一次链表中到期的定时器,把到期的定时器取出来,执行到期定时器关联的函数。该管理单元A控制表项a,表项a为链表表头,管理整个链表。
管理单元B(图中未示出):自己申请定时器(内存申请),然后将申请的定时器挂到管理单元A管理的链中,让它每隔1分钟执行一次。该管理单元B管理表项b。
管理单元C(图中未示出):自己申请定时器(内存申请),然后将申请的定时器挂到管理单元A管理的链中,让它每隔10分钟执行一次。该管理单元C管理表项c。
管理单元D(图中未示出):自己申请定时器(内存申请),然后将申请的定时器挂到管理单元A管理的链中,让它每隔1小时执行一次。该管理单元D管理表项d。
以上述4个管理单元为例:
管理单元D在开机10分钟加载,加入自身的定时器到管理单元A的链表中,这样其定时器在开机1小时10分钟触发。如果管理单元D在开机半小时后被卸载,卸载前没有删除这个定时器,直接释放了内存空间。这样一来,在开机1小时10分钟时,若采用现有技术,管理单元A遍历当时到期的定时器链表,遍历到管理单元D残留的定时器时,由于该定时器已删除,内存空间上的值已经不正常,则导致了系统崩溃。
这种情况要在管理单元D添加的定时器1个小时候才能出现,故障很隐蔽,普通的测试很难发现这种问题。如果在用户现场出现这类故障,根本无从查起,只能在代码中增加调试,搭环境重现故障,期望能够重现故障进行解决,这样一来需要花费大量人力物力。
如果使用了本发明的方法,在定时器里面加入一个魔数成员,在本实施方式中,魔数可放在首部,该魔数为定时器的首个成员,因为定时器地址就是首个成员的地址,因此,魔数的内存地址和定时器地址值相同。例如,定时器是[100,120),占用20个字节,魔数是[100,104),占4个字节,魔数在定时器里面,两个地址相同。但不限于此种情况,魔数还可设置在定时器中间,这样,魔数的内存地址和定时器地址值可不同。
在管理单元D将定时器挂到定时器链表时,按照本发明的方法,将魔数的内存地址加入记录表中。当管理单元D在卸载中释放定时器内存空间时,会在释放函数里面检测该内存空间,很容易就找到了错误。
如以图13所示的记录表为例,此时管理单元B,C,D各加入了一个定时器到链表,这3个定时器的地址分别为0,64,4064,即也是魔数的内存地址,3个定时器里面的魔数的内存地址都记录在了记录表中。
此时管理单元D卸载,没有将定时器从链表里面删除,直接将其管理的内存空间[4032,4095]释放掉,定时器正好在这个内存空间内。在释放这块内存空间时,内存释放函数遍历了记录表,发现记录表的第3项记录的地址4064在这个空间范围内,则说明所释放的内存空间中有链表表项,于是就会报出错误。
如以图14所示的页表结构为例,3个定时器里面的魔数的内存地址都记录在页中。如图14,3个定时器都在同一个页中,且例如是在内存的首页,即第0页,位图中每一行具有8位,共有1024位。定时器b在地址0,对应位图的位(第0位)值1;定时器c在地址64,对应位图位(第16位)也置1;定时器d在地址4064(第1016位),对应的位图位也置1。
此时管理单元D卸载,没有将定时器从链表里面删除,直接将其管理的空间4032到4095释放掉,定时器正好在这个空间内。在释放这块空间时,内存释放函数检查了该内存区的地址对应的位图的第1008到1023位,发现记录表的第1016位值为1,说明该第1016位对应的页地址4064有个魔数(用阴影示出),读取地址4064对应的魔数,可以知道这个是一个定时器,因此报出错误。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种共享链表错误检测方法,其特征在于,当释放链表表项时,该方法包括步骤:
检测存储单元所释放的内存空间中是否有所述链表表项,包括:根据插入所述链表表项的魔数和记录表中记录的所述链表表项对应的魔数的内存地址或者与所述魔数的内存地址相关的信息来检测所述存储单元所释放的内存空间中是否有所述链表表项;
若检测的结果为有所述链表表项,则报出错误,以获知出错的链表表项。
2.根据权利要求1所述的方法,其特征在于,所述检测存储单元所释放的内存空间是否有所述链表表项,包括步骤:
检索所述记录表;
判断所述记录表中所记录的魔数的内存地址是否在所述存储单元所释放的内存空间内;
若判断的结果为是,则所述存储单元所释放的内存空间有所述链表表项。
3.根据权利要求2所述的方法,其特征在于,在释放存储单元中的内存空间之前,还包括插入所述链表表项至相应的链表中的步骤,其中包括:
插入所述链表表项至所述链表;
对所述链表表项设置魔数;
将所述链表表项对应的魔数的内存地址记录在所述记录表中。
4.根据权利要求3所述的方法,其特征在于,所述链表表项的魔数与所述链表上预先设置的魔数一致。
5.根据权利要求4所述的方法,其特征在于,在报出错误获知出错的链表表项之后,还包括步骤:
根据所述魔数的内存地址找到该链表表项对应的魔数;
根据所述魔数报错,以获知出错的链表。
6.根据权利要求1所述的方法,其特征在于,所述存储单元的内存空间按照页划分时,内存地址与所述页对应,所述记录表包括与所述页相关联的位图,该位图记录有与所述魔数的内存地址相关的信息;
所述检测存储单元所释放的内存空间中是否有所述链表表项是指:根据插入所述链表表项的魔数、以及记录的与所述魔数的内存地址相关的信息来检测所述存储单元所释放的内存空间中是否有所述链表表项。
7.根据权利要求6所述的方法,其特征在于,所述检测存储单元所释放的内存空间是否有所述链表表项,包括步骤:
检索所释放的内存空间所对应的位图范围;
判断所述位图范围内的位中是否有置位;
若判断的结果为有,则所述存储单元所释放的内存空间有所述链表表项。
8.根据权利要求7所述的方法,其特征在于,在释放存储单元中的链表表项之前,还包括插入所述链表表项至相应的链表中的步骤,其中包括:
插入所述链表表项至所述链表;
对所述链表表项设置魔数;
找到该魔数的内存地址所对应的页;
判断与该页关联的位图是否存在;
若判断的结果为存在,则在位图中该魔数的内存地址所对应的位上置位。
9.根据权利要求8所述的方法,其特征在于,所述判断与该页关联的位图是否存在的判断结果为所述位图不存在,则申请位图空间,然后在该位图中该魔数的内存地址所对应的位上置位。
10.根据权利要求8所述的方法,其特征在于,所述链表表项的魔数与所述链表上预先设置的魔数一致。
11.根据权利要求10所述的方法,其特征在于,在报出错误获知出错的链表表项之后,还包括步骤:
找到置位的位所对应的所述魔数的内存地址;
根据所述魔数的内存地址找到该链表表项对应的魔数;
根据所述魔数报错,以获知出错的链表。
12.一种设备管理系统,其特征在于,该系统包括:
存储单元,用于储存链表表项;
管理单元,与所述存储单元连接,当释放链表表项时,所述管理单元用于检测所述存储单元所释放的内存空间中是否有所述链表表项,包括:根据插入所述链表表项的魔数和预建记录表中记录的魔数的内存地址来检测所述存储单元所释放的空间中是否有所述链表表项;若检测的结果为有所述链表表项,则报出错误,以获知出错的链表表项;
所述存储单元还储存所述记录表,该记录表中记录所述链表表项对应的魔数的内存地址。
13.根据权利要求12所述的系统,其特征在于,所述管理单元检测存储单元所释放的内存空间中是否有所述链表表项,还包括:根据插入所述链表表项的魔数和预建记录表中记录的与魔数的内存地址相关的信息来检测所述存储单元所释放的空间中是否有所述链表表项;
所述存储单元还储存所述记录表,该记录表中记录与所述魔数的内存地址相关的信息。
CNB200710178612XA 2007-12-03 2007-12-03 一种共享链表错误检测方法和系统 Active CN100547595C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB200710178612XA CN100547595C (zh) 2007-12-03 2007-12-03 一种共享链表错误检测方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB200710178612XA CN100547595C (zh) 2007-12-03 2007-12-03 一种共享链表错误检测方法和系统

Publications (2)

Publication Number Publication Date
CN101169791A CN101169791A (zh) 2008-04-30
CN100547595C true CN100547595C (zh) 2009-10-07

Family

ID=39390417

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200710178612XA Active CN100547595C (zh) 2007-12-03 2007-12-03 一种共享链表错误检测方法和系统

Country Status (1)

Country Link
CN (1) CN100547595C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101676906B (zh) * 2008-09-18 2013-06-05 中兴通讯股份有限公司 一种利用位图对内存数据库空间进行管理的方法
CN110069418B (zh) * 2011-12-29 2023-07-18 英特尔公司 聚集页错误信令和处理
US10397365B2 (en) 2015-11-06 2019-08-27 International Business Machines Corporation Method to reduce reactivation time of cloud based services

Also Published As

Publication number Publication date
CN101169791A (zh) 2008-04-30

Similar Documents

Publication Publication Date Title
CN102541529B (zh) 一种查询页面生成装置和方法
CN103067433B (zh) 一种分布式存储系统的数据迁移方法、设备和系统
EP0586550A4 (en) Relational data base memory utilization analyzer
CN100590620C (zh) 用于使记录在分区之间移动的系统和方法
US20040078457A1 (en) System and method for managing network-device configurations
JP2006526226A (ja) ツリーベースメモリ構造
CN102739622A (zh) 一种可扩展的数据存储系统
CN100378663C (zh) 将应用程序动态下载到用户识别模块的方法、系统及模块
CN102253991A (zh) Url存储方法、网页过滤方法、装置及系统
CN100547595C (zh) 一种共享链表错误检测方法和系统
CN110109931B (zh) 一种用于防止rac实例间数据访问发生冲突的方法及系统
CN109254981A (zh) 一种分布式缓存系统的数据管理方法和装置
CN102426601B (zh) 数据删除方法和装置
CN104580428A (zh) 一种数据路由方法、数据管理装置和分布式存储系统
CN105939402A (zh) Mac表项的获取方法及装置
CN104394518B (zh) 一种短信发送方法及短信平台
CN103425684A (zh) 数据库的操作方法及装置
CN103051478B (zh) 一种大容量电信网管系统及其设置和应用方法
CN102708195B (zh) 一种表单数据共享方法及装置
CN104536784B (zh) 实时系统更新方法及装置
CN106603727A (zh) 一种系统数据集成、访问方法及装置
JPH0392942A (ja) ファイルの格納方法およびアクセス方法
CN106649584A (zh) 一种主从式数据库系统中的索引处理方法和装置
CN101959092A (zh) 波长交换光网络节点的路径获取方法和装置
CN109309576B (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
ASS Succession or assignment of patent right

Owner name: BEIJING Z-GOOD TECHNOLOGY SERVICE CO., LTD.

Free format text: FORMER OWNER: FUJIAN XINGWANGRUIJIE NETWORK CO., LTD.

Effective date: 20141222

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 350015 FUZHOU, FUJIAN PROVINCE TO: 100085 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20141222

Address after: 100085 Beijing city Haidian District No. 33 Xiaoying Road 1 1F06 room

Patentee after: BEIJING ZHIGU TECHNOLOGY SERVICES CO., LTD.

Address before: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou

Patentee before: Fujian Xingwangruijie Network Co., Ltd.

EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20080430

Assignee: Fujian Xingwangruijie Network Co., Ltd.

Assignor: BEIJING ZHIGU TECHNOLOGY SERVICES CO., LTD.

Contract record no.: 2015990000029

Denomination of invention: Sharing chained list error detection method and system

Granted publication date: 20091007

License type: Common License

Record date: 20150116

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model