В современных жестких дисках есть несколько пластин – они располагаются одна под другой. Между ними оставляют достаточное расстояние, чтобы разместить над каждой поверхностью одну или несколько головок чтения \ записи. Головки не касаются поверхности, а зазор между ними образуется за счет быстрого вращения.
Основным элементом головки чтения \ записи можно считать миниатюрный электромагнит.
Он представляет собой кольцо, обмотанное медной проволокой. Когда через эту обмотку проходит электрический ток, участок поверхности диска, расположенный под головкой, намагничивается. При чтении данных с диска используется встроенная в жесткий диск электрическая схема, которая воспринимает изменение тока в цепи. Изменение тока возникает в результате того, что головка движется над разными участками поверхности, которые отличаются своей намагниченностью. Таким образом, электрическая схема фиксирует изменение тока при изменении намагниченности различных участков.
Полученный сигнал представляет собой последовательность импульсов с разной амплитудой. Далее он преобразовывается в цифровой сигнал, т.е последовательность импульсов со строго заданной амплитудой. Амплитуда цифрового сигнала может принимать только два значения (вы уже знаете, каких???). Правильно: ноль и один. Это процесс считается одним из самых слабых звеньев в чтении данных с диска. Если поверхность диска не может хранить четкие в распознании данные (или попросту говоря, хреново намагничивается), то схема кодирования сигнала начинает давать сбои в работе.
Следующий этап состоит в том, чтобы отделить импульсы, содержащие нужные данные, от тактовых импульсов.
Далее контроллер диска сверяет адрес сектора с адресом, который нужен компьютеру. Если он совпадает - то обработка продолжается. Если нет, то контроллер просто игнорирует ту информацию, которая записана в этом секторе.
Но даже если сектор не поврежден, то ошибки все равно будут возникать. Задача любого интерфейса – не пропустить их. Для этого используется специальный алгоритм. Система вычисляет по этому алгоритму контрольную сумму, которая потом сравнивается с той суммой, которая изначально храниться в секторе. Если эти числа не совпадают. То контроллер пробует заново прочесть ту информацию, которая записана в том секторе.