lecture 4 校验
重点
数据的差错
-
硬故障,软故障
- 硬故障,永久性的物理故障,受影响的存储单元可能成为固定的0/1定值
- 软故障,随机非破坏性事件,改变了某些存储单元的内容,但是机器还能用,电源问题,alpha粒子等原因
-
解决方案:
-
硬件方案,计算机硬件可靠性
-
软件方案,采取数据检错和矫正措施,(这也是一种权衡,通过增加数据的存储数量,提升数据的可恢复性,这仍然没有打破二进制k位2^k的定律),自动发现并纠正错误
-
-
纠错:想法是,存储额外的信息进行检错和校正;
- 这里基本的想法是,校验码的存储也有机会发生差错
- 这里基本的想法是,校验码的存储也有机会发生差错
奇偶校验码
- 奇偶校验,只会输出一个数字,奇校验码会多一个1来进行异或
- 两次取出的C进行异或,得到0就是正常的
- 缺点
- 不能发现出错位数为偶数的情况
- 发现错误后不能校正
- 可以短长度数据检错
海明码
- 基本思想:(我们假设数据和校验码加起来只有一位会出错)
- 将数据分成几组,对每一组都是用奇偶校验码进行纠错
关键是,这些分组具有足够的特殊性,保证能涵盖所有一个位数出错的情况 - 两次校验码异或,得到故障字,标识了所有可能的出错情况
- 将数据分成几组,对每一组都是用奇偶校验码进行纠错
- 校验码长度计算
- 一般是用不到的,一般会考8位数字,4位校验,特殊情况会考
- 差错情况:
- 数据某一位错误:M个可能,数据长度
- 校验码某一位错误:K个可能,校验码长度
- 没有出现错误:1种可能性
- 校验码长度: 2 K ≥ M + K + 1 2^K \ge M+K+1 2K≥M+K+1
- 如果故障字全是0,表示没问题
一个为1,表示故障字出错
多个为1,表示数据出错,需要按照*(分组)*情况纠正 - 建议手算,如何进行分组的情况,
D 8 D 7 D 6 D 5 C 4 D 4 D 3 D 2 C 3 D 1 C 2 C 1 D_8D_7D_6D_5\;C_4D_4D_3D_2\;C_3D_1C_2C_1 D8D7D6D5C4D4D3D2C3D1C2C1
循环冗余校验
- 奇偶校验,额外成本较大,要求将数据分成字节
- 循环冗余校验:
- 适用于用流格式存储和传输大量数据
- 用数学函数,生成数据和校验码之间关系
- 一般不会考计算,但是最好还是知道步骤
考点
- 奇偶校验码,为什么使奇数偶数?
- 校验码存储,我们也要考虑校验码本身出错的可能性,于是就有了:
海明码;(海明码计算怎么操作?) - 循环冗余校验,CRC 码,那么磁盘中也会出现 CRC