本发明专利技术公开了一种计算机存储器的维护方法,包括设置一个初始为空的检测链,一存存储管理模块和一个错误检测模块;存储管理模块为每一个存储块设置检测头,在检测头中设置合法标记,并建立检测链;错误检测模块按照检测链中的顺序检测每一个存储块的检测头,根据检测头中存储的值是否为合法标记来判断该存储块是否被合法操作;通过本发明专利技术所提供的计算机存储器的维护方法,能够用软件的方法,较为方便地检测计算机存储中发生“越界”的逻辑错误。
【技术实现步骤摘要】
本专利技术涉及计算机技术,具体地说,涉及。
技术介绍
在程序运行过程中,各程序段都可能会经常地申请一个或多个存储空间,以存储程序运行中需要和/或产生的中间数据和/或最终数据,在使用完毕后又释放该存储空间。这样,一个存储器就被划分出或干动态的存储块,每个存储块应该只由相应的程序段进行存取操作。但是,在某些情况下,向存储块存储数据会发生“越界”现象。也就是说,本来程序段A的数据应该存储在相应的存储块A'中,程序段B的数据应该存储在相应的存储块B'中,但是,由于程序员的误操作或者由于程序本身的错误,程序段A存储在存储块A'中的数据,被程序段B越界修改了,这一类非法存储的错误属于通常所说的逻辑错误。在现有技术中,也有许多关于存储器的错误检测和修正方法,例如在专利号为5291498,名称为“具有多位输出存储电路的计算机存储器的错误检测方法及装置”的美国专利中,就介绍了一种存储器错误的检测方法。该方法用一个检测电路,检测存储过程中发生的错误。该方法存在以下缺陷(I)检测的只是存储器中的物理错误,即存储器被物理破坏、存储的数据被物理改变而发生的错误等,不能检测上述逻辑错误;(2)需要设置一个检测电路,硬件上要改变,实现起来不方便、不灵活。
技术实现思路
本专利技术的目的,就是克服现有技术中的不足,提供一种用软件实现方法,能够方便、灵活地检测计算机存储中发生“越界”的逻辑错误。为此,由本专利技术提供的一种存储器的维护方法,设置了一个初始为空的检测链,一个存储管理模块和一个错误检测模块,存储管理模块为每一个存储块设置检测头,在检测头中设置合法标记,并建立检测链;错误检测模块按照检测链中的顺序检测每一个存储块的检测头,根据检测头中存储的值是否为合法标记来判断该存储块是否被合法操作。所述存储管理模块包括以下步骤(I)分配一个空闲存储块(2)设置检测头和合法标记;(3)添加检测链;(4)返回所述检测头的后一位的地址。其中步骤⑵与步骤(3)的顺序是可以互换的。所述错误检测模块包括以下步骤a、将所述检测链中的链头所指向的检测头定为待检检测头山、提取所述待检检测头中的数据;c、判断上述提取的数据是否与步骤(3)所设置的合法标记相一致;d、如果c的判断结果为不一致,则给出错告警信息和退出信号;e、如果c的判断结果为一致,则判断指向所述待检检测头的是否为所述检测链的链尾;f、如果e的判断结果为不是链尾,则将所述检测链中的下一个检测头置为待检检测头,执行步骤b ;g、如果e的判断结果为是链尾,则结束检测。本专利技术所称存储器,主要指计算机内存器,也可应用于计算机网络服务器的存储器、计算机硬盘,或者外部存储器,如U盘等,以及其它可用作存储功能的介质。通过本专利技术所提供的,无需增加任何硬件,也无需对现有硬件进行任何改造,就可以很方便地对存储器存储中的逻辑错误进行检测,能够及时地检测出编程和计算机程序运行过程中发生的存储越界错误,提示开发、维护人员进行跟踪解决,在一些需要连续运行程序的环境中,如程控交换机的维护管理中,具有很实际的意义和良好的效果。附图说明图1为实施本专利技术方法的总体过程示意2a为应用本专利技术方法中存储管理模块对存储器进行管理后存储器和存储块的结构示意2b为本专利技术所述的一个检测链结构示意3为实现本专利技术所述存储管理模块的程序流程4为实现本专利技术所述错误检测模块的程序流程5是实现对一个存储块进行错误检测的程序流程图具体实施例方式下面结合附图和实施例,进一步说明本专利技术的技术方案。图1说明了本专利技术具体实施中的整个过程。当程序段101申请一个存储块时,计算机的CPU102接受申请存储块的指令,调用存储管理模块103,分配、设置存储块106,添加检测链104 ;当需要检测存储器错误时,调 用错误检测模块105,根据检测链104提供的地址对存储块106进行错误检测,当检测到存储错误时,通知CPU,并由CPU发出告警提示和退出信息。在存储管理和错误检测之前,先建立一个初始检测链,其初始指针为空指针。如图2a、图2b和图3所示,在存储管理模块中,当有程序段申请一个存储块时,先执行步骤301,分配一个空闲的存储块Si (i = 1,2,…,Μ),然后在步骤302,将存储块的首地址210 (作为该存储块检测头的地址)接入检测链中。在步骤303中将该存储块前η位设为检测头,置为固定的字符串,例如可以将前4个字节(η = 32)设置为“CHCK”,作为合法标记。一般地说,所有存储块应设置相同的合法标记,但也可以根据需要,设置不同的合法标记。检测头201设置后,反回检测头之后一位即第33位地址211,作为对该存储块进行存取操作的入口地址,对该存储块的数据存储、读取,就从地址211开始。这样,整个带领块就分为两部分一部分为检测头201,是非自由存储区,在合法运行情况下不能往其中写入数据;另一部分为自由存储区202,需要存储的数据可自由地存入其中。每一闪申请存储块的结果,是分配这样由一个非自由存储区(检测头)201和一个自由存储区202组成的存储块,并在检测链中加入新的存储块检测头的地址。这样,经过多次申请之后,就形成一个的存储块组SI,S2,…SM和一张由所有检测头的地址组成的检测链。释放存储块时,将非自由存储区(201)和自由存储区202同时释放,非自由存储区重新成为可供自由使用的空间,同时从检测链中删除指向该存储块检测头的地址。建立初始检测链、存储管理模块、释放存储块的操作,由计算机的操作系统级的程序来实现。当需要对存储块进行错误检测时,调用错误检测模块,在步骤401,将图2中检测链的检测指针220指向检测链中的链头,对链头地址所指向的检测头进行检测。图5是图4中步骤402的具体实现,即对某一特定的存储块判断其是否被合法使用。在合法存储的情况下,数据的存储是从检测头的后一位即图2a中的地址211开始的,检测头中存储的内容应保持为预设的、固定的合法标记,当数据非法存储时,本应存储在其它存储块中的数据可能发生越界而存储到当存存储块中,而非法存储则是从存储块起始地址(图2a中的210)开始存储,从而覆盖检测头中原先存储的内容,破坏合法标记,使得检测头中当前存储的内容与预设的合法标记不一致。因此,检测某一个存储块是否发生此类错误的步骤如下首先执行501,提取该存储块检测头中当前存储的内容,执行502,将所提取的内容与预定的合法标记“CHCK”相比较;如果两者一致,则表明未被破坏,当前存储块使用合法,否则如果两者不一致,表明当前存储块出现越界错误,则显示出告警信息,退出程序,程序员再根据提示,进行跟踪,·发现、修改出错程序。检测完当前存储块后,在步骤403,检查是否有退出信号,如果有退出信号,则退出错误检测模块,否则,执行404.退出信号可以是程序员输入的强制退出命令,也可以是检测出错误后在步骤503产生的退出信号。如果当前检测指针不是检测链的链尾,则检测指针指向下一个检测头,检测下一个存储块;否则,将检测指针指向检测链的链头,开始新的一轮循环的检测。本专利技术中错误检测的步骤可以在线运行,实时地进行错误检测,即在其它程序运行的同时运行,通过CPU设定在一定时间内执行该错误检测步骤若干次;也可以在其它程序执行完毕后,调用该错误检测步骤,及时地发现程序中的错误;也可以根据需要在其本文档来自技高网...
【技术保护点】
一种计算机存储器的维护方法,其特征在于,包括设置一个初始为空的检测链(104),一个存储管理模块(103)和一个错误检测模块(105);存储管理模块(103)为每一个存储块(106)设置检测头,在检测头中设置合法标记,并建立检测链(104);错误检测模块(105)按照检测链(104)中的顺序检测每一个存储块(106)的检测头,根据检测头中存储的值是否为合法标记来判断该存储块是否被非法操作。
【技术特征摘要】
1.一种计算机存储器的维护方法,其特征在于,包括设置一个初始为空的检测链(104),一个存储管理模块(103)和一个错误检测模块(105);存储管理模块(103)为每一个存储块(106)设置检测头,在检测头中设置合法标记,并建立检测链(104);错误检测模块(105)按照检测链(104)中的顺序检测每一个存储块(106)的检测头,根据检测头中存储的值是否为合法标记来判断该存储块是否被非法操作。2.如权利要求1所述的计算机存储器的维护方法,其特征在于,所述存储管理模块(103)包括以下步骤(I)分配一个空闲存储块;(2)设置检测头和合法标记;(3)添加检测链;(4)返回所述检测头的后一位的地址。其中步骤(2)与步骤(3)的顺序是可以互换的。3.如权利要求1所述的计算机存储器的维护方法,其特征在于,所述错误检测模块(105)包括以下步骤a、将所述检测链(104)中的链头所指向的检测头定为待检检测头;b、提取所述待检检测头中的数据;c、判断上述提取的数据是否与步骤(3)所设置的合法标记相一致;d、如果c的判断结果为不一致,则给出错告警信息和退出信号;e、如果c的判断结果为一致,则判断指向所述待检检测头的是否为所述检测链的链尾;f、如果e的判断结果为不是链尾,则将所述检测链中的下一个检测头置为待检检测头,执行步骤b ;g、如果e的...
【专利技术属性】
技术研发人员:葛冠男,
申请(专利权)人:葛冠男,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。