Rambler's Top100



2.3.2. Лучшее решение — исправление ошибок

Жесткие диски сохраняют значительно больше данных и с большей скоростью, чем гибкие диски, поэтому вероятность ошибок возрастает. Без средств обнаружения и исправления ошибок в процессе считывания появится недопустимо высокая частота ошибок, например несколько раз в день. К счастью, математики и инженеры разработали так называемые коды с исправлением ошибок (Error Correction Codes — ЕСС). Во всех современных контроллерах жестких дисков есть специальные схемы для формирования и использования этих ЕСС-чисел. Большую часть времени пользователь даже не знает о появлении дисковых ошибок; контроллер диска благодаря ЕСС просто автоматически исправляет ошибки. "Садовая" модель ЕСС. Для понимания некоего "волшебства" ЕСС требуется немного терпения. До обсуждения работы ЕСС в контроллере жесткого диска полезно обратиться к более простои для понимания модели. Предположим, что вы хотите защищать 16 бит информации Выстроим эти единицы и нули, как деревья в саду, в четыре строки и четыре столбца. Для каждой строки и столбца при наличии в них четного числа единиц добавим дополнительный единичный бит; при наличии нечетного числа единиц в строке или столбце добавим нулевой бит; наконец, введем последний бит в месте пересечения дополнительных строки и столбца, поместив в него 1 или 0 так, чтобы сделать нечетным число единиц в нижней строке (рис. 2 9). При такой организации каждые строка и столбец имеют нечетный паритет. Если искажается любой бит, его можно найти, потому что содержащие его строка и столбец больше не имеют нечетного паритета. Можно не только обнаружить ошибочный бит, но и исправить его! Такая возможность представляется почти волшебной. Многие люди, сталкиваясь с необходимостью правильного хранения данных, полагают, что, как минимум, необходимо хранить дополнительную копню каждого бита. При расхождении двух копий можно наверняка сказать, что одна из них содержит ошибку. Разумеется, такой подход недостаточен для исправления ошибки, так как невозможно узнать, какая копия правильная. Идея возможности обнаруживать и исправлять ошибки, применяя умеренный объем избыточной информации (меньше полной копии оригинальных данных), представляется удивительной и неожиданной. Но именно благодаря ей ЕСС позволяет компьютеру обнаруживать и исправлять ошибки "Садовая" модель обладает такими замечательными свойствами, но только для однобитных ошибок; поэтому она хорошо показывает сущность ЕСС Отметим, что для защиты от однобитных ошибок 16 бит данных потребовались дополнительные 9 бит. Эффективность защиты значительно возрастает, если выбрать большее число защищаемых битов. Предположим, что необходимо защитить от ошибок один сектор информации на жестком диске. Сектор содержит 512 байт или 4096 бит. Такой размер означает, что можно создать "сад", имеющий 64 строки и 64 столбца. Для завершения "сада" потребуется 129 бит, обеспечивающих защиту от всех однобитных ошибок.

Несмотря на то, чго рассмотренный "садовый" подход на практике не применяется, он все же наглядно иллюстрирует принципы всех практических ЕСС. В этой модели отсутствуют дне вещи. Во-первых, данный способ не справляется с многошинными ошибками. Во-вторых, несмотря на приемлемую эффективность, "садовая" модель не обеспечивает максимальной эффективности. "Садовая" модель полета и в том отношении, что она помогает вывести явные формулы для каждого из защитных битов. Эти формулы представляют собой суммы групп битов, причем для каждой группы выбираются свои биты. (При вычислении сумм переносы игнорируются. Подобные манипуляции математики называют модульной арифметикой.) Реальный ЕСС похож ця рассмотренный, но в нем применяется больше групп битов, они комбинируются более сложным способом, а сами группы выбираются довольно таинственным образом.

Реальный ЕСС. Фирмы-производители включают схемы ЕСС в контроллеры жестких дисков по-разному Они считаются собственностью фирм, поэтому практически подробно разобраться в них и понять отличия друг от друга невозможно По-видимому, это одна из причин того, чго новый контроллер часто не может считать данные с жесткого диска форматированною другим контроллером. Из-за записи другим способом секторы в накопителе выглядят странными для второго контроллера и он считает жесткий диск неформатированным. Обычно схемы ЕСС контроллера могут обнаружить и исправить любой набор ошибок во всем секторе из 512 байт (4096 бит) данных, если все ошибки содержатся в одном пакете, длина которого не превышает некоторого конкретного значения В стандарте фирмы IBM для первого MFM-накопителя в IBM PC/XT исправление гарантировалось, если длина пакета не превышала 11 бит Для этою в конце каждого сектора приходилось хранить всего А байта ЕСС Это же количество байт ЕСС обеспечивает высокую вероятность обнаружения более длинною пакета или группы пакетов, но такие ошибки исправить нельзя. Плохо, конечно, если у вас в пределах одного сектора несколько дефектных участков; в »том случае ЕСС может казаться достаточным для исправления ошибок, но его исправления могут быть неправильными Имеется несколько способов борьбы с такими ошибками (но, к сожалению, ни один из них пока не получил распространения в накопителях и.) жестких дисках для персональных компь югеров). В наиболее совершенных дисковых накопителях больших компьютеров применяется многоуровневый способ обнаружения и исправления ошибок Каждая защищаемая область на диске (обычно целая дорожка) подразделяется на несколько подо бластем", а каждая подобласть делится на меньшие секции, каждая из которых защищается своим ЕСС Вся область защищается гпкже встроенными значениями CRC. Если при считывании облает окажется, что некоторые меньшие секции содержат ошибки, они исправляюкя с привлечением пх ЕСС Значения CRC защищают подо бласти и всю область и, rein окажется, чго исправления ЕСС неправильные, это можно обнаружить на уровне С КС В этом способе не исправляются такие ошибки, но они почти наверняка обнаруживаются и проблема неправильных исправлении снимается Возможно, в будущих разработках дисковых накопителей для персональных компьютеров этот способ будет применяться, но сейчас просто приходится надеяться на то, что подобные ошибки встречаются редко.

Что делает DOS при действии ЕСС. Когда контроллер диска пытается считать сектор данных с жесткой' диска, могут произойти три события- вычисленный ЕСС соответствует ЕСС на диске; контроллер обнаруживает, что данные не согласуются с ЕСС, но ЕСС определяет, какими должны быть данные (это исправимая ошибка считывания), ошибка в данных сто и» велика, что ЕСС недостаточно для определе пня искаженных битов ( но неисправимая ошибка). Когда при считывании данных обнаруживаются ошибки, контроллер диска может привлечь ЕСС для исправления воспринятых данных и перичп к с н'дующему сектору, но он может попытаться вновь и вновь считывать подозрительный сектор, определяя, нельзя лн иолучпть правильные данные Попытки повторного считывания данных зависят не только oi имеющегося контроллера, но и от BIOS на материнской плате компьютера, и, возможно, от версии DOS и выполняемой при кладной программы.

    После этого контролер посылает данные в компьютер с такими соответствующими сообщениями
  1. "Вот данные Они считаны без ошибок
  2. "Вот данные Я не смог считать их, но определил, какими они должны быть
  3. "Вот то, что я считал, но я уверен, что это не то, что требуется.

DOS управляет дисками и не отвлекает пользователя больше чем необходимо. Например, вы не можете приказать DOS, где на диске сохранить информацию; это она определяет сама Когда вам нужна хранимая информация, вы просто сообщаете DOS имя файла, а она сама находит данные. Благодаря такому подходу компьютерами пользоваться проще, но один аспект здесь довольно интересен. Сообщения контроллера диска поступают в компьютер и принимаются BIOS (базовой системой ввода-вывода), представляющей набор процедур очень низкого уровня для управления аппаратными средствами После этого BIOS передает данные и сообщение о состоянии программе более высокого уровня, обычно операционной системе (которой в большинстве случаев является DOS) Когда DOS получает одно из трех приведенных ранее сообщений, она предпринимает одно из двух действии [в случае сообщений 1 или 2 (успешное считывание или ошибка при считывании, которая почт наверняка исправлена ЕСС) DOS просто воспринимает данные и без комментариев передает их прикладной программе Только если контроллер диска не может считать или восстановить данные, DOS сообщает вам (или вашей прикладной программе) о возникшей проблеме Однако к этому моменту проблема настолько серьезна, что часть данных потеряна Такая ситуация неблагоприятна, гак как часто дисковые ошибки начинают прогрессировать Исправимая сейчас ошибка может со временем превратиться в непоправимую Сели бы DOS информировала вас об исправимых ошибках, вы смогли бы перемостить данные в более безопасное место на диске или как-то еще заранее отреагировать на ожидаемую потерю данных.



 


ГЛАВНАЯ

Copyright 2003 © FormatCenter
All Rights Reserved