File Allocation Table

La File Allocation Table, in sigla FAT, è un file system sviluppato inizialmente da IBM e Digital Equipment Corporation prima, e poi da Bill Gates e Marc McDonald per il MS-DOS. È il file system primario per diversi sistemi operativi e Microsoft Windows fino alla versione Windows Me. Windows NT e le successive versioni hanno introdotto l'NTFS e mantenuto la compatibilità con la FAT così come molti altri sistemi operativi moderni.

Storia 
La FAT inizialmente debutta sul sistema CP/M della Digital e IBM per i floppy disk; l'idea fu presa da come la versione stand-alone di Microsoft BASIC utilizzava i floppy disk fino al 1976 copiata dalla IBM. Nel maggio del 1979, un anno prima di decidere di scrivere il QDOS, Tim Paterson aiutò Bob O'Rear a portare il loro linguaggio nella nuova architettura 8086. La FAT poi viene utilizzata nell'agosto del 1980 con la prima versione di QDOS (derivazione del modulo DOS del CP/M) di Tim Paterson, il predecessore del PC-DOS e di MS-DOS della Microsoft, anzi, il solo supporto FAT fu proprio la principale differenza tra il QDOS e il CP/M, di cui il QDOS era un clone.

Con l'annuncio della Microsoft del cessato supporto a MS-DOS nel 1994 e l'introduzione del NTFS in tutti i sistemi operativi prodotti, è improbabile che venga sviluppata una nuova versione del FAT. Vista però l'estrema diffusione del FAT nei floppy disk, nelle memorie flash o nei drive USB ed essendo molto limitato il supporto del NTFS nei sistemi operativi non Microsoft, probabilmente questo file system verrà utilizzato ancora a lungo. Con la commercializzazione di Windows Vista SP1 e Windows CE 6.0, la Microsoft presenta l'exFAT detta anche FAT64 utilizzato prevalentemente per memorie flash.

Cronologia delle versioni 
Esistono varie versioni di questo file system, in base a quanti bit sono allocati per numerare i cluster del disco: FAT12, FAT16, FAT32. Esiste anche una versione del FAT16 detta VFAT, che è virtuale cioè non registrato fisicamente sull'hard disk, ma gestito da un software specifico.

FAT12 
La prima versione del FAT fu la FAT12, un file system per floppy disk i cui indirizzi per i cluster erano appunto a 12 bit (lunghezza non standard, quindi manipolare il FAT era un po' più complicato) e per questo poteva gestire dischi grandi al massimo 32 MiB. Ma visto che i dischi dell'epoca erano grandi al massimo 160 KB questi limiti non vennero mai sentiti. La prima versione del FAT12 non supportava le directory ad albero, che vennero introdotte con l'MS-DOS 2.0 e i dischetti da 360KB.

Nel 1984 la IBM mise sul mercato i PC AT, con un hard disk di 20 MB. In parallelo Microsoft introdusse l'MS-DOS 3.0 ed una versione del FAT con indirizzi per i cluster a 16 bit, permettendo fino a 65.536 cluster e portando il limite di grandezza teorico a 512MB. Comunque il numero massimo di settori e la dimensione massima (di una partizione, non più di un disco) non cambiò e rimase di 32 MB.

FAT16 
Nel 1987 arrivò il formato che ora viene chiamato FAT16: introdotti dal Compaq DOS 3.31, nel 1988 i miglioramenti arrivarono anche con l'MS-DOS 4.0. La dimensione delle partizione venne limitata dalla dimensione di 8-bit dei settori per cluster, che potevano avere fino a 64 settori, dando cluster di 32 KB con la solita dimensione di 512 byte per settore, fissando il limite "definitivo" per una partizione FAT16 a 2 GB. Più tardi, Windows NT aumentò la dimensione massima dei cluster a 64K (considerando il contatore come unsigned, senza segno), ma il risultato non era compatibile con le altre implementazioni del FAT del tempo, e cluster di tale grandezza portavano a sprecare molto spazio per la frammentazione interna.

VFAT 
Per supportare i nomi dei file lunghi, venne introdotto in Windows 95 il VFAT (Virtual FAT), che prende il nome dal driver della periferica. L'implementazione modificava il modo in cui il file system organizzava i contenuti di una directory. L'uso delle specifiche VFAT permette di usare sia nomi lunghi (fino a 255 caratteri UTF-16) che nomi brevi (8+3 caratteri) in maniera trasparente alle diverse versioni di Windows.

FAT32 
Per superare i limiti sulla dimensione dei volumi imposta dal FAT16, Microsoft decise di creare un nuovo FAT chiamato FAT32, con numeri per i cluster da 32 bit, anche se in realtà ne vengono utilizzati solo 28.

In teoria questo dovrebbe permettere  (228) cluster, cioè una dimensione totale dell'ordine dei 2 TiB con cluster di 8 KiB, ma a causa delle limitazioni da alcune versioni dell'utility scandisk non è permesso al FAT di superare i  (< 222) cluster, riducendo la dimensione massima a 124,55 gigabyte. Le utility di formattazione e partizionamento di Windows 2000 e XP hanno un limite di 32 GB per le partizioni FAT32, ma è un limite arbitrario: avviando un computer con un floppy disc di boot basato su sistema operativo FAT32 (es.: windows 98) è infatti possibile partizionare in FAT32 oltre i 32 gigabyte, inoltre utility di terze parti possono tranquillamente creare e gestire partizioni FAT32 fino a 1 TB; esistono in commercio hard disk esterni di 1 TB formattati in FAT32. Con il FAT32 la dimensione del singolo file non può essere superiore ai 4 GB. Questo perché esiste una voce a 32 bit che indica la grandezza del file in byte.

L'ultima versione di Microsoft Windows che usa questo file system è Windows Me (Millennium Edition). Le versioni successive lo supportano in aggiunta al file system NTFS, più che altro per la formattazione di pendrive, schede di memoria e altri dispositivi mobili.

ExFAT 

ExFAT è un file system introdotto da Microsoft nel 2006 con Windows Embedded CE 6.0, pensato appositamente per memorie flash e, in generale, per dispositivi di archiviazione dalle dimensioni fino a 16 exabytes.

Descrizione 
La FAT in sé mantiene la traccia delle aree del disco disponibili e di quelle già usate dai file e dalle directory: la differenza fra FAT12, FAT16 e FAT32 consiste appunto in quanti bit sono allocati per numerare i cluster del disco. Con 12 bit, il file system può indirizzare al massimo 212 = 4096 cluster, mentre con 32 bit si possono gestire 232 = 4.294.967.296 cluster; l'aumento del numero di bit di indirizzo dei cluster si è reso necessario per gestire unità a disco sempre più grandi e capienti.

La FAT è relativamente semplice ed è supportata da moltissimi sistemi operativi dato che è Open Source. Queste caratteristiche la rendono adatta ad esempio per i Floppy Disk e le Memory Card. Può anche essere utilizzata per condividere dati tra due sistemi operativi diversi e molto altro. Il più grande problema del File System FAT della Microsoft è la frammentazione. Quando i file vengono eliminati, creati o spostati, le loro varie parti si disperdono sull'unità, rallentandone progressivamente la lettura e la scrittura. Una soluzione a questo inconveniente è la deframmentazione, un processo che riordina i file sull'unità. Questa operazione può durare anche diverse ore e deve essere eseguita periodicamente per mantenere le prestazioni dell'unità.

Supporto nei sistemi operativi 
Data la grande diffusione del FAT file system, praticamente tutti i sistemi operativi non Microsoft hanno supportato sia il FAT16, che il VFAT ed infine il FAT32 (questo con meno limitazioni di quelle previste ufficialmente). 

Con le prime distribuzioni GNU/Linux venne creato un file system chiamato UMSDOS, un FAT con gli attributi Unix (permessi, proprietario ecc.), che altrimenti non sono supportati in FAT; il suo sviluppo si fermò con l'arrivo del VFAT, ma è tuttora supportato. Il sistema operativo macOS può utilizzare il FAT per i volumi non avviabili oppure per il volume di Bootcamp nei MacIntel.

Struttura 
Il file system FAT è un file system classificato tra quelli con allocazione concatenata. Una partizione FAT è strutturata in quattro sezioni diverse:

 I settori riservati, che si trovano proprio all'inizio. Il primo settore riservato (settore zero) è il settore di avvio, seguito dal BIOS Parameter Block (con alcune informazioni di base del FS, in particolare il suo tipo, e puntatori alla posizione delle altre sezioni). Contiene di solito il codice del boot loader del sistema operativo. La dimensione dei settori riservati è indicata in un campo all'interno del settore di avvio. Nel FAT32 le informazioni si trovano nel settore 1, mentre nel settore 6 vi è una copia di backup del settore di avvio.
 La Regione FAT: Contiene almeno due copie della FAT (per motivi di sicurezza). Rappresentano la mappa della regione dati.
 La Regione della ROOT directory: è una tabella che memorizza le cartelle e i file presenti nella directory di root. È presente solo nella FAT12 e nella FAT16 ed impone una dimensione massima prefissata per la root; nella FAT32 ciò è fatto direttamente nella regione dati, eliminando così il vincolo dimensionale sulla root.
 L'area dati: è dove file e cartelle sono realmente memorizzati e occupa la maggior parte della partizione

FAT utilizza il formato little endian per le voci nell'intestazione e la/le FAT.

Settore di avvio 
È importante notare che il primo settore su un dispositivo non necessariamente è il settore di avvio. Per i dispositivi partizionati (per es. gli hard disk), il primo settore è detto Master Boot Record (abbreviato: MBR); nei dispositivi non partizionati (come i floppy disk) il primo settore è il Volume Boot Record (abbreviato: VBR). Tutte le versioni FAT hanno in comune i primi 36 bytes:

Settore informazioni FS 
Introdotto con la FAT32 per accelerare i tempi di accesso di alcune operazioni (i.e. la quantità di spazio libero), occupa generalmente il settore 1, nel record di avvio 0x30. Ha dimensione pari a 512 byte.

Tabella dei files 
Una partizione è divisa in cluster contigui dalle dimensioni variabili tra 2 e 32 KB. Ogni file è strutturato sul disco come una lista concatenata di cluster non necessariamente contigui: questa è la ragione principale per cui si parla di frammentazione del disco nei filesystem FAT.

Ogni record della FAT è composto da 5 campi:

 il numero del cluster successivo
 una speciale EOC (end of clusterchain), che indica la fine di una catena
 cluster danneggiato
 cluster riservato
 cluster libero

I valori possibili sono:

Da notare che nella FAT32 sono disponibili solo 28 dei 32 bit disponibili; il bit più significativo è riservato. La regione dati parte dal cluster #2; le altre voci sono riservate alla FAT ed a utilizzo interno.

Tabella delle directory 
È un tipo speciale di file che rappresenta una directory; ogni file o cartella memorizzata all'interno è rappresentato da una voce nella tabella secondo il seguente schema:

Nel caso in cui si tratta di un file di tipo etichetta di volume o directory padre (..) i 6 byte all'offset 0x1A sono impostati a zero.

Note

Voci correlate
 MS-DOS

Collegamenti esterni 
 
 
 
 

File system
9293