Проводите ежегодное тестирование средств (часть 2)
Имеются две проблемы, связанные с этим подходом. Во-первых, DiskTcst и подобные программы не только имеют собственные дефекты, но и пропускают большинство дисковых проблем, пока не случится несчастье, и во-вторых — способ, которым они отмечают плохие области (в FAT) слишком неустойчивый. Рассмотрим картинку.

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