|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alexander Pevzner 2:5020/59.9 20 Jan 2001 06:22:06 To : "Evgenij M. Baldin" Subject : Re: Recovery record -------------------------------------------------------------------------------- Hello, Evgenij M Baldin! Fri, 19 Jan 01 15:39:02 +0300 you wrote: EMB> Я не спец, но можно реализовать например следующую схему: EMB> Бьём файл на N блоков - для каждого из блоков считаем контрольную EMB> сумму - например на все байты блока говорим XOR - получаем N байтов, EMB> то есть если какой-то из блоков попорчен, то мы это сможем узнать - EMB> вероятность, что попортится так, что XOR останется тем же 1/256 - EMB> можно для очистки совести взять четыре байта под контрольную сумму. Hа эту тему есть своя наука - всякое там кодирование с избыточностью, коды Рида-Соломона, и т.д. Вообще, на эти тему лучше какие-нибудь математические книжки читать, но если не найдешь, посмотри в сторону програмок, которые читают/пишут audio cd. Им там приходится со всем этим счастием разбираться. EMB> Если у нас испортилось не более одного блока (если сгинул весь файл, EMB> то это фатально - вопрос про не сильные потери - например замялась EMB> лента в магнитофоне), то мы с помощью контрольного байта узнаем этот К кодированию с избыточностью в случаях, когда есть вероятность порчи некоторого последовательного куска данных, обычно добавляют еще и interleaving. Это когда данные из некоторого количества соседних блоков перемешиваются между собой. Hапример, сначала идут, одним блоком, первые байты, затем вторые, третьи и т.д. Тогда если несколько последовательных записей сгинет, то ты не потеряешь несколько блоков целиком, а вместо этого в нескольких блоках потеряешь по несколько байт. Если у тебя достаточная степень избыточности при кодировании, то в итоге ты сможешь восстановить информацию. Именно так кодируются сидюки, и именно поэтому они выдерживают довольно значительные механические повреждения. -- Wishes, Alexander Pevzner (pzz@pzz.msk.ru) --- ifmail v.2.14-tx8.10 * Origin: Private Node of Alexander Pevzner (2:5020/59.9@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/8975a38f8579.html, оценка из 5, голосов 10
|