免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2323 | 回复: 2
打印 上一主题 下一主题

关于‘读改写’新校验值计算公式的一些理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-21 16:22 |只看该作者 |倒序浏览
今天研究冬瓜哥哥的《大话存储》里面[读改写]那一段时,看到冬瓜哥哥给出的新校验数据的计算公式是这样的:新数据的校验数据=[ 老数据 EOR 新数据 ] EOR 老校验位(这里的老数据是指需要修改的那部分老数据)。 我刚看到这个公式时不解为什么要把新、老数据和老校验位拿来异或运算,因为我的第一反应是应该先把不需要修改的Segment上的老数据读出来,再用新数据与之异或运算,得到新校验数据。 但经过思考,发现此公式确实有点道理。  
   首先,老数据的校验数据=老的需要修改数据 EOR 老的不需要修改的数据 ; 之后把这个公式放进冬瓜哥哥的公式,就可以得到 新数据的校验数据= 老数据 EOR 新数据 EOR 老数据 EOR 老的不需要修改的数据 ; 由于异或运算的特点,可以得到 老数据EOR老数据= 0;于是公式可以简化为新数据的校验数据=新数据 EOR 老的不需要修改的数据 EOR 0 ;由于异或运算的特性是相同为0,相异为1,所以可以推断出任何东西与0进行异或运算得到的结果都是其本身。所以又可以推出 新数据的校验数据=新数据 EOR 老的不需要修改的数据 。这个公式与我的第一反应是相同的,但是实际的做法却绕了一个弯。 因为读改写是在要写入的磁盘数目不足阵列磁盘数目一半时发生的,所以只把要修改的老数据和老校验数据读出来肯定要比把不修改的老数据全读出来要省事。
   以上是我的理解,欢迎同志们拍砖,要是哪理解错了,欢迎纠正。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:49:45IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
2 [报告]
发表于 2010-03-21 22:28 |只看该作者
EOR是同或,XOR是疑惑,我没有仔细看你的推导过程,但是从一个同或都没提的前提判断,你的推导过程可能有误,请重新推导。

论坛徽章:
0
3 [报告]
发表于 2010-03-21 23:05 |只看该作者
EOR是同或,XOR是疑惑,我没有仔细看你的推导过程,但是从一个同或都没提的前提判断,你的推导过程可能有误 ...
冬瓜头 发表于 2010-03-21 22:28



    感谢冬瓜哥哥的纠正。之前不知道EOR是同或,所以就当他是异或在算。现在知道了,他跟异或是相反的运算,即相同为1,相异为0. 那就可以推出一段数据与自身进行同或运算,得到的结果肯定是全1;任何数据与全1进行同或运算得到的结果肯定是其本身。 把这两个东西放入之前的公式 新数据的校验数据= 老数据 EOR 新数据 EOR 老数据 XOR 老的不需要修改的数据,得到的是新数据的校验数据=新数据 XOR 老的不需要修改的数据。 转了几个弯还是转回来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP