История ограничений для BIOS и IDE
Спецификация (для IDE дисков) - ограничение в 137 ГБ
Не более чем 65536 цилиндров (нумерация 0-65535), 16 считывающих головок (нумерация 0-15), 255 секторов/дорожек (нумерация 1-255). Максимальная емкость: 267386880 секторов по 512 байт каждый, что составляет 136902082560 байт (137 ГБ). Сейчас (1999 год) это не является проблемой, но через несколько лет это станет проблемой.
BIOS Int 13 - ограничение в 8.5 ГБ
Не более чем 1024 цилиндров (нумерация 0-1024), 256 считывающих головок (нумерация 0-255), 63 сектора/дорожек (нумерация 1-63). Максимальная емкость: 8455716864 байт (8.5 ГБ). Сегодня это является серьезным ограничением на размер диска. А именно, DOS не в состоянии использовать большие диски.
Ограничение в 528 МБ
Если при обращению к диску использовать одни и те же значения c,h,s при обращении через Int 13 функции BIOS и через функции IDE интерфейса, то оба эти ограничения складываются так, что никто не может использовать больше чем 1024 цилиндра, 16 считывающих головок и 63 сектора/дорожки, что составляет 528482304 байт (528 МБ). Это и есть всем известная проблема ограничения в 504 Mб для DOS в комбинации со старыми BIOS. Это стало проблемой примерно в 1993 году. Для обхода этой проблемы использовались всевозможные трюки: железо (LBA), firmware (BIOS `translation'), программное обеспечение (disk managers). Концепция трансляции (`translation') была изобретена в 1994 году: BIOS использует одну геометрию диска, когда общается с диском и другую (фальшивую) при общении с DOS, и `переводит' одну нотацию в другую.
Ограничение в 2.1 ГБ (Апрель 1996)
В некоторых старых BIOS под число цилиндров в CMOS RAM резервируется только 12 бит. Следовательно число цилиндров не может быть больше 4096, что дает максимально доступную емкость диска в 4095*16*63*512=2113413120 байт. Если диск имел большую емкость, то в процессе загрузки это приводило к `зависанию' компьютера. Это привело к росту популярности дисков обладающих 4092/16/63 геометрией. До сих пор попадается довольно много больших дисков, которые с помощью переключателей можно заставить `прикинуться' диском с подобной геометрией. Более подробную информацию можно найти по адресу .
в процессе загрузки не `завешивают' компьютер, но видят диск меньшего размера. Например определяют, что диск размером в 2.5 ГБ имеет размер в 429 МБ.
Ограничение в 3.2 ГБ
В BIOS от Phoenix версий 4.03 и 4.04 был баг, который приводил к перезагрузке системы в случае наличии в компьютера диска с емкостью более 3277 МБ. Подробности ищите по адресу .
Ограничение в 4.2 ГБ (Февраль 1997)
Простая BIOS трансляция (ECHS=Extended (расширенный) CHS, иногда зовется как `Large disk support' или просто как `Large') работает путем увеличения числа считывающих головок и уменьшения числа цилиндров, выдаваемых для использования DOS, до тех пор, пока число цилиндров не сравняется с 1024. На данный момент и DOS, и Windows 95 не поддерживает 256 считывающих головок. Обычно, когда диск сообщает о 16 считывающих головках, простой механизм трансляции позволяет получить доступ к диска с емкостью не более чем 8192*16*63*512=4227858432 байт (с фальшивой геометрией диска в 1024 цилиндров, 128 считывающих головок, 63 сектора/дорожки). Обратите внимание, что ECHS не меняет число секторов на дорожке, поэтому, если число секторов меньше 63, то ограничение становится еще более жестким. Для получения более подробной информации смотрите .
Ограничение в 7.9 ГБ
Более продвинутые BIOS обходят, описанную выше проблему, путем приравнивание числа считывающих головок 15 (`Улучшеный ECHS'), поэтому фальшивая геометрия может состоять из 240 считывающих головок, что дает 1024*240*63*512=7927234560 байт.
Ограничение в 8.4 ГБ
Ну и наконец: если BIOS делает все возможное и невозможное для увеличения емкости диска - использует 256 считывающих головок и 63 сектора/дорожки (`assisted LBA' или просто `LBA'), то это дает 1024*255*63*512=8422686720 байт, немного меньше чем 8.5 ГБ, так как геометрии с 256 считывающими головками следует избегать.
Ограничение в 33.8 ГБ (Август 1999)
Следующий барьер на пути повышение емкости приходится на 33.8 ГБ. Дело в том, что при 16 считывающих головках и 63 секторах/дорожках требуется число цилиндров большее, нежели 65535 - не вмещается в short (2 байта). Большинство BIOS на сегодня не в состоянии поддерживать подобные диски. (Для решения этой проблемы смотрите, например для поиска новых прошивок для флэш памяти без этой проблемы.) Для решения этой проблемы ядру Linux версий ниже 2.2.14 / 2.3.21 требуется патч. Подробности смотрите в разделе .
Смотрите так же , и более детальное описание в статье .
Жесткие диски емкостью более чем 8.4 ГБ сообщают, что их геометрия равна 16383/16/63. Это означает, что понятие геометрии изжило себя и что полный размер диска не может быть подсчитан через геометрию.