T12, FAT16 і FAT32) проводиться ОС за кількістю кластерів у томі, яке в свою чергу визначається з полів BPB. Насамперед обчислюється кількість секторів кореневого каталогу: = (BPB_RootEntCnt * 32)/BPB_BytsPerSec
Далі визначається, які з полів BPB_FATSz16/32 і BPB_TotSec16/32 не рівні нулю, і вони використовуються при визначенні кількості секторів області даних томи:
DataSec = TotSec -
(_ResvdSecCnt +
(BPB_NumFATs * FATSz) +
RootDirSectors
) (1)
Нарешті, визначається кількість кластерів області даних: = DataSec/BPB_SecPerClus (2)
За кількістю кластерів проводиться однозначна відповідність з файловою системою:
- CountofClusters <4085 - FAT12
- CountofClusters = 4085 Г· 65524 - FAT16
- CountofClusters> 65524 - FAT32
Згідно офіційній специфікації, це єдиний допустимий спосіб визначення типу FAT. Штучне створення томи, що порушує зазначені правила відповідності, призведе до його некоректної обробці Windows. Тим не менш, рекомендується уникати значень CountofClusters, близьких до критичних (4085 і 65525), для вірного визначення типу файлової системи будь-якими, часто некоректно написаними драйверами. На дискеті при форматуванні завжди створюється FAT12. Що стосується жорстких і флеш-дисків, то при розмірі диска до 512 Мб (при 512-байтному секторі) за замовчуванням створюється FAT16, понад 512 Мб - FAT32. Розмір кластера визначається при форматуванні виходячи з файлової системи і розміру тому. p align="justify"> 1.3 Таблиця FAT
.3.1 Ланцюжки кластерів
Наступна важлива структура томи FAT - це сама таблиця FAT, що займає окрему логічну область. Вона визначає список (ланцюжок) кластерів, в яких розміщуються файли і папки томи. Між кластерами і індексними покажчиками таблиці мається взаємно однозначна відповідність - N-й покажчик відповідає кластеру з тим же номером. Першому кластеру області даних присвоюється номер 2. Значення індексного покажчика відповідає стану відповідного кластеру. Можливі наступні стани:
- кластер вільний - покажчик обнулений;
- кластер зайнятий файлом і не є останнім кластером файлу - значення покажчика - це номер наступного кластера файлу;
кластер є останнім кластером файлу - покажчик містить мітку EOC (End Of Clusterchain), значення якої залежить від версії FAT: для FAT12 міткою EOC вважається будь-яке значення, яка дорівнює або перевищує 0x0FF8 (за замовчуванням 0x0FFF); для FAT16 - ...