накопителя равна восьми (2x2x2) секторам. Обратите внимание, что нумерация цилиндров и головок начинается с числа "0", а нумерация физических секторов, находящихся на дорожке, — с числа "1". При использовании адресации CHS расположение первого сектора накопителя определяется выражением "цилиндр 0, головка 0, сектор 1 (0,0,1)"; адресом второго сектора является 0,0,2; третьего — 0,1,1; четвертого ? 0,1,2 и т. д., пока мы не дойдем до последнего сектора, адрес которого 1,1,2.
Представьте теперь, что мы взяли восемь секторов и, не обращаясь непосредственно к физическим цилиндрам, головкам и секторам, пронумеровали все секторы от 0 до 7. Таким образом, если необходимо обратиться к четвертому сектору накопителя, мы можем сослаться на него как на сектор 0,1,2 в режиме CHS или как на сектор 3 в режиме LBA. Соотношение между номерами секторов воображаемого восьмисекторного накопителя в режимах CHS и LBA приведено в табл. 7.8.
Как видно из приведенного примера, использование нумерации LBA заметно облегчает и упрощает процесс обработки данных. Несмотря на это, при создании первых персональных компьютеров вся адресация BIOS и накопителей АТА была выполнена методом CHS.
Преобразования CHS/LBA и LBA/CHS
Адресация секторов может выполняться как в режиме CHS, так и в режиме LBA. Для данного накопителя существует определенное соответствие между адресациями CHS и LBA, которое, в частности, позволяет преобразовывать адреса CHS в адреса LBA и наоборот. Спецификация АТА-1 предлагает довольно простую формулу, с помощью которой можно преобразовывать параметры CHS в LBA:
■ LBA = (((С х НРС) + Н) х SPT) + S - 1.
Реверсирование этой формулы позволяет выполнить обратное преобразование, т. е. преобразовать параметры LBA в адрес CHS:
■ С = int(LBA/SPT/HPC),
■ Н = int((LBA/SPT) mod HPC),
■ S = (LBA mod SPT)+ 1.
В этих формулах использованы следующие выражения:
■ LBA — logical block address;
■ С — цилиндр (cylinder);
■ Н головка (head);
■ S — сектор (sector);