BASH Programming - Введение


Доступ к диску через BIOS и ограничение в 1024 цилиндра


Linux не использует при своей работе BIOS, но другие операционные системы могут использовать BIOS. Старые BIOS, которые были сделаны перед внедрением LBA, используют для доступа к диску функции INT13, которые используют 3D нотацию (c,h,s). (Точнее: AH - выбор операции, CH - младшие 8 бит номера цилиндра, CL - 7-6 биты соответствуют старшим битам номера цилиндра, 5-0 биты соответствуют номеру сектора, DH - номер считывающей головки и DL - номер диска (80h или 81h). Это объясняет схему построения таблицы разделов.)

В результате мы имеем номер в CHS нотации, укладывающийся в 3 байта: 10 бит на номер цилиндра, 8 бит на номер считывающей головки и 6 бит на номер сектора (от 1 до 63). Следствием этого является ограничение на количество цилиндров (от 0 до 1024), которое может поддерживать BIOS.

Когда появились IDE диски с поддержкой LBA, программное обеспечение для DOS и Windows не изменилось. И DOS, и Windows хотят знать геометрию диска, даже если она им не нужна для операция чтения/записи, им требуется это для обращения к BIOS. OS Linux требуется знание физической геометрии диска, если от нее требуется общаться с BIOS или с другими операционными системами, даже при работе с современными дисками.

Такое состояние дел продолжалось около 4ех лет, или около того, а затем на рынке появились диски, которые нельзя читать через функции INT13 (потому что 10+8+6=24 бит, следовательно обращаться только к 8.5 ГБ - для большего не хватает адресного пространства). Был создан новый интерфейс для BIOS - так называемые расширенные INT13 (Extended INT13) функции, где DS:SI указывает на 16 байтовый Адресное Дисковое Пространство (Disk Address Packet), которое содержит 8-ми байтовый абсолютный номер блока.

Очень медленно Microsoft ползет в сторону использования расширенных INT13 функций. Вероятно, через несколько лет никому больше не понадобятся знания о физической геометрии диска.



Содержание раздела