FAT может быть сформирована либо с 12-битовыми, либо с 16-битовыми записями. Формат FAT с 12-битовыми записями используется для дискет и разделов фиксированных дисков, имеющих не более 4078 кластеров. (Таблица разделов фиксированного диска указывает на то, использует ли FAT Для раздела в DOS 12-битовые или 16-битовые записи.) К записям 12-битовой FAT труднее обращаться, так как их размер не вписывается ровно в 16-битовый размер слова семейства микропроцессоров 8086, однако, с другой стороны, 12-битовая FAT занимает меньше места на дискете. всегда наблюдается недостаток пространства.
Первые две записи в FAT зарезервированы для использования системой DOS. Первый байт FAT содержит то же самое значение описателя накопителя, которое присутствует в блоке параметров BIOS загрузочного сектора диска. Остальные байты первых двух записей заполнены величиной 0FFH. Поскольку номера первых двух кластеров (0 и 1) зарезервированы, то первому кластеру доступного дискового пространства в области файлов соответствует кластер с номером 2.
Чтение значений таблицы FAT достаточно просто для 16-битовых записей: чтобы найти смещение соответствующей записи в FAT, необходимо умножить заданный номер кластера на 2.
Для 12-битовых FAT подобные вычисления немного сложнее, так как каждая пара записей в FAT занимает 3 байта (0 и 1 занимают первые три байта, 2 и 3 занимают следующие три байта и т. д.). Имея любой номер кластера, можно найти соответствующую запись в FAT, умножая номера кластеров на 3, затем поделив на 2 и, наконец, используя целую часть результата в качестве смещения в FAT. Выделив слово по полученному адресу, вы будете иметь три шестнадцатеричные цифры записи FAT плюс одну постороннюю шестнадцатеричную цифру, которую вы можете удалить с помощью одной из нескольких быстровыполнимых машинных команд. Если номер кластера четный, вы должны отбросить старшую цифру; если номер кластера нечетный — должны отбросить младшую цифру.
Первые две записи FAT как 12-битового, так и 16-битового форматов не используются для указания статусов кластеров; вместо этого они выделены для того, чтобы самый первый байт таблицы FAT мог быть использован в качестве байта-описателя накопителя, который указывает формат диска (табл. 11).
Однако не следует считать, что данные идентификаторы диска однозначно определяют форматы: это необязательно так. Если вы исследуете каждый используемый формат диска, то обнаружите очень мало соответствий. Имейте это в виду.
В своих программах вы можете узнать формат диска с помощью чтения и проверки байта-описателя накопителя в FAT. Самое простое — использовать для этого функции DOS 1BH (или в десятичной нотации 27).
Таблица 11. Значения описателя накопителя в DOS
Тип накопителя |
Емкость |
Число головок |
Число секторов на дорожке |
Описатель накопителя |
5,25" - дискета 3, 5" - дискета Фиксированный диск |
160 КБ 320 КБ 180 КБ 360 КБ 1, 2 МБ 720 КБ 1, 44 МБ |
1 2 1 2 2 2 2 |
8 8 9 9 15 9 18 |
FEH FFH FCH FDH F9H F9H F0H F8H |
Специальные замечания о FAT
Обычно программы не просматривают и не изменяют FAT диска; они оставляют управление таблицей системе DOS. Исключением являются программы, которые выполняют функции по распределению пространства, не поддерживаемые DOS, например программа UnErase из набора программ Norton Utilities.
Имейте в виду, что FAT может быть логически повреждена; например, цепочка выделенного пространства может быть циклической, имея указатель на предыдущее звено цепочки; или же две цепочки могут пересекаться по какому-нибудь одному кластеру; либо может быть оставлен в одиночестве кластер, т.е. он может быть помечен как используемый, хотя не входит ни в одну конкретную цепочку выделенного пространства. Кроме того, может быть пропущен маркер конца файла (FFFH или FFFFH). Программы CHKDSK и RECOVER системы DOS предназначены для обнаружения и решения большинства таких проблем.
Заключение
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.