失序查找还原
2016-11-18 15:51:23 0 举报
失序查找还原是一种数据恢复技术,主要用于从损坏或丢失的数据中恢复信息。这种技术通常用于硬盘驱动器、闪存驱动器和其他存储设备上。在失序查找还原过程中,首先会对损坏的存储设备进行完全扫描,以确定哪些部分的数据仍然可用。然后,通过复杂的算法和计算,将这些可用的数据片段重新组合成完整的文件或数据块。这个过程可能需要大量的时间和计算资源,但对于许多用户来说,它是恢复丢失数据的唯一希望。虽然失序查找还原不能保证100%的成功,但在许多情况下,它可以成功地恢复大部分甚至全部的丢失数据。
作者其他创作
大纲/内容
1000|100
800|100
900 |100
y
900|100
乱序队列1
1300|100
来包,1100|100
如果当前包的序列号小于乱序队列中的最小序列号
内
800|200
表示,没有重传包的情形。当前队列首包就是当前包的下一个包。
非首包add
分段包重传
1100|100|尾
1100|100
首包已来(800|100)
1000 |da
替换
900 |da
结束
退出查找函数
=
若800 900 + 100说明 此节点不是要找的节点,,退出查找。如果有节点 1000 == 900 + 100,,,则此时继续,然后 找到 1100,,将乱序包全部重组后退出。
获得还原buf
遍历乱序表
乱序链表不变
大的重传包覆盖原来小的
800 |da
1100|200
首包重传
800 |100
800+100 1000
来首包,遍历
来重传包1100|200
程序将该乱序重传包舍弃。
乱序队列
1100 = 1000 + 100
首包已来
baseseq == 0
FindSuitablePktinList
起始包没来
顺序
正常包
清空乱序队列
重传包特点:seq相同,但与上一相同seq包大小不同
开始
1000 |100
while(phead)
可以看出,,如果来的是已经正确填充的中间包的重传大包,,将会覆盖原来已经填充好的数据。程序是,通过判断当前重传包的offset,与其数据长度之和,跟 当前数据总长度进行比较,如果小于就,,退出。大于就copy,,这里,可以看出,重传包必须为最后一个包,不然会将原来的数据覆盖,程序的处理是退出。
重组完成后
乱序
重传包处理
乱序链表
0 条评论
回复 删除
下一页