一种方法,用于在包括存储器单元(M↓[i])的一个存储区域(MA)计算一个M位校验和(CS),其特征在于以下步骤: -在计算之前给该校验和(CS)一个预定的初始值, -在存储区域(MA)的每个存储器单元(M↓[i])处计算校验和(CS),作为一个逐位求和(异或),逐位求和的第一因子在该单元(M↓[i])的基础上形成,逐位求和的第二因子在前一个单元(M↓[i-1])处计算的校验和(CS)值的基础上形成; -在计算和之前,将第二因子的位循环一个预定的数。(*该技术在2016年保护过期,可自由使用*)
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及检查计算机中存储器内容的完整。附图说明图1显示一台计算机中与本专利技术有关的基本的部分。在初始阶段,在电源开启之后,主存储器RAM的内容处于一个不明确的状态。常规计算机的初始装载发生,使得电源开启产生一个初始信号INIT,它使得,例如,一个处理器CPU跳进一个预定的地址。在一个只读存储器ROM中,这个存储器具有一个初始装载的程序,它的执行包括从一个HD磁盘驱动器中的一个预定位置装载操作系统(OS)的基本部分。这样装载的OS基本部分包括更多高级的装载程序,不仅从ROM中的为HD预定的位置装载一部分OS,还从其它地方也装载一部分OS。这些更高级的装载程序依次装载其它软件模块等。这些软件模块不必位于HD磁盘驱动器的相邻区域。在读HD时,通常情况是位于HD不同区域的信息必须接连读取。一个建议的指标值为可能从磁盘驱动器以约1MB/s的速度读相邻区域的数据。但实际上读的速度只是这个速度的一半。例如,装载30MB的软件可能花大约一分钟的时间在控制计算机的过程中,如开关交换,可以证明解决故障花费很大。解决软件缺陷尤其困难。硬件缺陷常常可以通过与另一个已知处于正常工作状态的仪器比较而发现。软件缺陷通常无法用这种方式发现,因为通常不存在已知处于正常工作的参考软件。多数情况下,通常遇到的进一步的缺点是根据征兆通常不可能迅速推断出缺陷是在硬件还是软件。在特定存储区域的未受控制的变化,可能由两种原因中的任意一个造成。如果问题发生,重要的是尽快直接维修正确的目标。破坏者和“黑客”构成了威胁。如果用于远程维修的选项合并于计算机中,那么误用的危险将相应地增加。为了发现存储器问题,已经开发了几个不同的解决方案。现有技术已知一个所谓的校验位,依靠它可能在存储位置有偶数个一位(或者,如果需要,奇数个)。正如众所周知,通过在存储位置的偶数个位,使用校验不能发现状态的同时变化。另一个一般使用的工具是循环冗余校验CRC。CRC和是发现串行模式数据,如位于磁盘驱动器中和数据链的数据,中的错误的一个有用的工具。关于矩阵数据,CRC和面临两个问题。第一是CRC和不能用于可靠地发现在由计算CRC和的方法所引起的间隔时发生的缺陷。第二个问题与如果仅一个存储位置的内容改变就必须重新计算CRC和这个事实有关。由以上可得出结论,开发一种方法和仪器,利用它们,计算机的存储器问题能被发现并且上述的问题能够被解决,这是本专利技术的一个目的。一方面,本专利技术是基于一种方法,根据最新收集的经验,该方法对于发现存储器中所有可能的未受控制的变化是足够广泛的,而且另一方面,本专利技术是基于在计算机的各种操作中均可使用本方法。首先,根据本专利技术的方法和系统有可靠地发现存储器问题的优点。这因此导致第二个优点,即通过省略在现有技术系统中执行的“仅仅是以防万一”的一些指令,加速计算机的重新启动。以下,将参考附图,利用本专利技术首选的实施例更详尽地描述本专利技术,其中图1显示一台计算机中与本专利技术有关的基本的部分;图2说明使用校验和监视存储器内容;图3是说明保持校验和的一个流程图;以及图4说明根据本专利技术计算校验和。关于图2的流程图,该校验和在一个特定存储区域计算,它与先前计算的校验和比较,如果这两个校验和不同,就会发出一条错误消息。在图2的流程图中,重要的问题是正在计算的校验和被初始化的方法。根据本专利技术的一个实施例,这种计算发生在有规律的间隔。根据另一个实施例,是结合特定的事件,例如,打开计算机、修改程序等,来计算校验和。图3的流程图说明写入存储器是如何发生的。一旦一个存储区域的内容变化,将通过(i)从先前的校验和中删除变化的存储区域的部分,以及(ii)向这样变化了的校验和增加与变化了的存储区域的新内容对应的部分,来修正校验和。图3中的流程图的简单使得计算校验和的现有技术的方法无法用于从一个计算过的校验和中删除变化的存储区域的先前部分,并且用一个与该相同存储区域的新内容对应的部分来代替。下面,参考图4,描述用于计算校验和的根据本专利技术的一种新方法。将在计算机的整个存储器MEM中的被监视的一个存储区域MA内计算校验和。校验和(CS)的宽度M是任意的,但是宽度M的合适值等于计算机的字长W。在计算之前,给校验和一个初始值,例如0。进行计算,使得在一个存储区域MA的具有M位的每个单元Mi(其中i表示单元在存储区域内的序号)与校验和CS逐位求和(通过一个异或运算),使得在求和之前,单元Mi向右循环k位(向最低位的方向)。循环的位数k由下式获得k=Σj=0∞INT(i/Mj)-----(1)]]>其中INT表示一个整数。实际上,求和不必永远继续,只要达到当Mj小于或等于单元序号i时的j的最大值(或可能的最大的序号值)。利用以下的快速方法能够得到同样的结果。存储区域MA的单元与校验和CS进行逐位求和(异或)。每次求和以后,校验和向左(向最高位的方向)循环一位。如果i+1被M整除则重复循环,然后如果i+1被M2整除则同样循环,等等,直到M的所有可能的整数次幂都进行一遍。一旦所有的单元都求和完毕,校验和向右循环,位数与求和时校验和向左循环的位数相同。本方法值得一提的优点是这样计算的校验和可能容易被更新。这种更新如以下发生(1)变化的单元的数据与该单元的旧数据求和。(2)根据变化的单元的序号,推断,当计算原始校验和时在该单元共循环了多少位。(3)将和向右循环相同程度。(4)将这样得到的循环的和与原始的校验和求和。这样得到的结果是根据变化的存储区域更新的新的校验和。如果一个具有任意尺寸的存储区域发生变化,将通过每个单元仅计算两个和来更新校验和。这样,新的校验和不必在整个存储区域计算,那将是循环冗余校验(CRC)的事。通过单元序号i除以M的可能的整数次幂,然后根据方程(1)对这些商取整求和,可以计算出在变化的单元循环的位数。参考表1,现在将描述根据本专利技术的方法的校验和的一个示范计算。为简化起见,假定存储区域包括16个能够通过一个4位序号寻址的位置。在本例中,存储位置的数据也具有4位的宽度。同样,校验和的初始值置为0。作所有这些假定都是为了说明本专利技术,它们并不以任何方式限定本专利技术。存储位置0的内容1001与初始值0000逐位求和,然后因为0+1不能被校验和的宽度(4)整除,所以和向左循环一位。得到的新的校验和是0011。在这个和上加上存储位置1的内容1011,这样得到的和向左循环一位,因为1+1不能被校验和的宽度整除。这样以后,新的校验和为0001。这个过程以这种方式继续,直到整个存储区域进行一遍。在存储位置3、7和11,校验和循环两位,因为这些序号加1后能够被校验和的宽度整除。在存储位置15,将循环三位,因为15+1既可以被校验和的宽度整除,也可以被校验和的宽度的平方整除。在所有其它位置,校验和仅循环一位。最后,校验和向相反方向,即向右循环21位。最终得到的校验和为0111。计算的逐步过程如表1所示。表1 下面,假定存储位置例如0101的内容从1010变为0110。新旧内容的逐位求和将为1100。根据序号0101(=5),逐位求和1100向右循环5+1=6位,由此得到的结果为0011。当它加到旧的校验和上时,得到的新的校验和为1110。通过从开始就重复结合表本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】
【专利技术属性】
技术研发人员:贾莫·林尼,凯里·帕桑宁,
申请(专利权)人:诺基亚电信公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。