Адресация секторов
Жесткий диск, как и всякое другое блочное устройство,
хранит информацию фиксированными порциями, которые называются блоками. Блок
является наименьше к порцией данных, имеющей уникальный адрес на жестком диске.
Для того чтобы прочесть или записать нужную информацию в нужное место,
необходимо представить адрес блока в качестве параметра команды, выдаваемой
контроллеру жесткого диска. Размер блока уже с давних пор является
стандартным для всех жестких дисков — 512 байт. К сожалению, достаточно часто
происходит путаница между такими понятиям -, как «сектор», «кластер» и
«блок». Фактически между «блоком» и «сектором» разницы нет. Правда, одно
понятие логическое, а второе — топологическое. «Кластер» — это несколько
секторов, рассматриваемых операционной системой как одно целое.
Почему же отказались от простой работы с секторами?
Переход к кластерам произошел потому, что размер таблицы размещения файлов
был ограничен, а размер ^иска увеличивался. В случае файловой системы FAT16
для диска объемом 512 МБ кластер будет составлять 8 КБ, до 1 ГБ — 16 КБ, до 2
ГБ — 32 КБ и т. д. Для того чтобы однозначно адресовать блок данных,
необходимо указать все три числа (номер цилиндра, номер сектора на дорожке,
номер головки). Та'кой способ адресации диска был широко распространен и
получил впоследствии обозначение аббревиатурой CHS ^cylinder, head, sector).
Именно этот способ был первоначально реализован в BIOS, поэтому впоследствии
возникли огранитения, связанные с ним. Дело в том, что BIOS определил
разрядную сетку адресов на 63 сектора, 1024 цилиндра и 255 головок. Однако
развитие жестких дисков в то время ограничилось использованием лишь 16
головок в связи со сложностью изготовления. Отсюда появилось первое
ограничение на. максимально допустимую для адресации емкость жесткого диска:
1024x16x63x512 - 504 Мб.
Со временем производители стали делать HDD большего
размера. Соответственно, число цилиндров на них превысило 1024, максимально
допустимое число цилиндров (с точки зрения старых BIOS). Однако адресуемая
часть диска продолжала равняться 504 Мб при условии, что обращение к диску белось
средствами BIOS. Это ограничение со временем было снято введением так
называемого механизма трансляции адрес лв.
Проблемы, возникшие с ограниченностью BIOS по части
физической геометрии дисков, привели в конце концов к появлению нового
способа адресации блоков на диске. Этот способ довольно прост. Блоки на диске
описываются одним параметром — линейным адресом блока. Адресация диска
линейно получила аббревиатуру LBA (logical block addressing). Линейный адрес
блока однозначно связан с его CHS-адресом: lba = (Цилиндр х ВсегоГоловок +
Головка) х х Секторов + (Сектор-1).
Введение поддержки линейной адресации в контроллеры
жестких дисков дало возможность BIOS заняться трансляцией адресов. Суть этого
метода состоит в том, что если в приведенной выше формуле увеличить параметр ВсегоГоловок,
то потребуется меньше цилиндров, чтобы адресовать то же самое количество
блоков диска. Но зато потребуется больше головок. Однако головок-то как раз
использовалось всего 16 из 255. Поэтому BIOS стали переводить избыточные
цилиндры в головки, уменьшая число одних и увеличивая число других. Это
позволило им использовать разрядную сетку головок целиком и отодвинуло
границу адресуемого устройством BIOS дискового пространства до 8 ГБ.
Нельзя не сказать несколько слов и о Large Mode. Этот
режим работы предназначен для работы жестких дисков объемом до 1 ГБ. В Large Mode
количество логических головок увеличивается до 32, а количество логических
цилиндров уменьшается вдвое. При этом обращения к логическим головкам 0.. F
транслируются в четные физические цилиндры, а обращения к головкам 10.. IF —
в нечетные. Винчестер, размеченный в режиме LBA, несовместим с режимом Large,
и наоборот.
Дальнейшее увеличение адресуемых объемов диска с
использованием прежних сервисов BIOS стало принципиально невозможным.
Действительно, все параметры задействованы максимально (63 сектора, 1024
цилиндра и 255 головок). Тогда был разработан новый расширенный интерфейс
BIOS, учитывающий возможность очень больших адресов блоков. Однако этот
интерфейс уже не совместим с прежним, вследствие чего старые операционные
системы, такие, как DOS, которые пользуются старыми интерфейсами BIOS, не
смогли и не смогут переступить границы в 8 ГБ.
Практически все современные системы уже не пользуются
BIOS, а используют собственные драйверы для работы с дисками. Поэтому данное
ограничение на них не распространяется. Но следует понимать, что прежде, чем
система сможет использовать собственный драйвер, она должна его загрузить.
Поэтому на этапе начальной загрузки любая система вынуждена пользоваться
BIOS. Это и вызывает ограничения на размещение многих систем за пределами 8
ГБ, они не могут оттуда загружаться, но могут читать и писать информацию
(например, DOS, который работает с диском через BIOS).
|