Системное программное обеспечение персональных ЭВМ


10.3. Логическая структура диска - часть 2


Неиспользуемые сектора называются скрытыми.

Поле SysCode для MS-DOS может принимать значения: 1 - логический диск объема менее 32 Мбайт, 12-битная FAT; 4 - логический диск объема менее 32 Мбайт, 16-битная FAT; 6 - логический диск объема более 32 Мбайт; 5 - расширенный раздел DOS.

Последнее значение SysCode означает, что сектор, задаваемый адресом начала раздела в свою очередь содержит MBR (без программы загрузки, но с таблицей разделов по смещению 446), в этой таблице в свою очередь может содержаться описатель расширенного раздела и т.д. Системная утилита FDISK, производящая разбиение физического диска на логические, использует только два элемента в каждой таблице разделов, позволяя создать один первичный (соответствующий логическому диску) и один расширенный раздел DOS.

Поле RelSect содержит номер начального сектора (логический адрес) относительно начала раздела внешнего по отношению к данному.

Программист не может прочитать MBR средствами DOS. Для прерывания 0x25 задается логический адрес - номер сектора внутри данного логического диска, а сама MBR не принадлежит никакому логическому диску.

Пример 10.2 демонстрирует разбиение логического диска. Начальный адрес для чтения задается : 0,0,1. При помощи прерывания 0x13 программа считывает сектор по заданному адресу, далее происходит поэлементный анализ таблицы разделов - пока не встретится признак конца таблицы или раздел нулевого размера. Значения полей элемента таблицы выводятся на экран. Манипуляции, описываемые макросами TRK и SECT, опеспечивают распаковку номера дорожки и сектора. Если поле SysCode содержит признак расширенного раздела, то устанавливается новый дисковый адрес, считывается новый сектор и анализируется новая таблица.




- Начало -  - Назад -  - Вперед -