Замечание
Интересно то, что причиной подобной проблемы является вовсе не BIOS, а код файловой системы DOS/Win9x/Me, в котором количество секторов, приходящихся на каждую дорожку, сохраняется в виде 8-разрядного числа. Проблемы возникают при считывании числа 256, представляющего собой в двоичной записи выражение 100000000b, для хранения которого требуется 9-разрядное поле. Число 255 (или 11111111b в двоичной системе) является наибольшим значением, которое подходит 8-разрядному двоичному регистру и определяет максимальное число головок, поддерживаемое той или иной операционной системой.
Для решения этой проблемы CHS-трансляция со сдвигом разряда была переработана и дополнена правилом, согласно которому при наличии 16 физических головок и более чем 8 192 цилиндров (что привело бы к трансляции 256 головок) принимается количество головок P-CHS, равное 15 (вместо 16). Во избежание ошибок при вычислении число цилиндров P-CHS умножается на выражение 16/15. После этого выполняется трансляция скорректированного количества цилиндров и головок. Результаты вычислений показаны в следующем примере.
Физические параметры CHS |
Логические параметры CHS |
Логические параметры CHS со сдвигом разряда |
|
Цилиндров Головок Секторов на дорожке |
12 000 |
||
Итого секторов |
12 096 000 |
12 096 000 |
12 096 000 |
Итого байт Мегабайт |
6 193 152 000 |
6 193 152 000 |
6 193 152 000 |
6 193 |
6 193 |
6 193 |
|
Mebibytes (MiB) |
5 906 |
5 906 |
5 906 |
Гигабайт |
6,19 |
6,19 |
6,19 |
Gibibytes (GiB) |
5,77 |
5,77 |
5,77 |
Как показано в этом примере, жесткий диск, содержащий 12 000 цилиндров и 16 головок, с помощью стандартной схемы СНБ со сдвигом разряда преобразуется в логический диск с 750 цилиндрами и 256 головками. В данном случае в соответствии с правилом переработанной схемы СНБ со сдвигом разряда выполняется двойная трансляция, которая состоит в изменении числа физических головок (принимается число головок, равное 15, а не 16) и последующем умножении числа цилиндров (12 000) на выражение 16/15, в результате чего получается
количество цилиндров, равное 12 800. После этого новое число цилиндров, полученное при CHS-трансляции со сдвигом разряда, делится на 16, в результате чего получается 800 логических цилиндров. По аналогии с этим, при умножении количества головок (15) на число 16 получаем 240 логических головок. Вычисленное количество логических цилиндров, превышающее число 1 024, уменьшается до 1 024. В этом случае 12 000 физических цилиндров и 16 головок транслируются в 800 логических цилиндров и 240 головок (вместо 750 цилиндров и 256 головок), что позволяет не обращать внимания на ошибки, существующие в операционных системах DOS/Win9x/Me.
До сих пор все приводимые примеры были достаточно понятны, т.е. вычисленные логические параметры L-CHS и физические параметры P-CHS соответствовали одной и той же емкости жесткого диска. К сожалению, этот метод подходит далеко не всегда. Ниже приведен довольно типичный пример, взятый из реальной жизни. Накопители емкостью 8,4 Гбайт, созданные в компаниях Maxtor, Quantum, Seagate и др., содержат 16 383 физических цилиндра и 16 головок CHS. При трансляции будут получены следующие параметры этих дисков.