File Allocation Table

file system
Versione del 30 mag 2006 alle 13:42 di Ines (discussione | contributi) (disambiguato link)

La File Allocation Table, detta anche FAT, è un File system sviluppato per MS-DOS e utilizzato nei sistemi operativi Microsoft Windows fino alla versione Windows ME. È considerato relativamente semplice, per questo è supportato da praticamente tutti i sistemi operativi moderni.

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

Storia

Il FAT ha debuttato nell'Agosto del 1980 con la prima versione di QDOS di Tim Paterson, il predecessore del PC-DOS e di MS-DOS della Microsoft, anzi, fu proprio la principale differenza tra il QDOS e il CP/M, di cui il QDOS era un clone.

L'idea fu presa da come la versione stand-alone di Microsoft BASIC utilizzava i floppy disk fino al 1976. 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 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.

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 32MB. Ma visto che i dischi dell'epoca erano grandi al massimo 160KB 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 rilasciò 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), un FAT virtuale gestito dal driver della periferica. L'implementazione modificava il modo in cui il file system organizzava i contenuti di una directory.

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 268.435.438 (228) cluster, cioè una dimensione totale dell'ordine dei 2 terabyte, ma a causa delle limitazioni dell'utility scandisk non è permesso al FAT di superare i 4.177.920 (224) cluster, riducendo la dimensione massima a 124.55 gigabyte. Le utilities di formattazione e partizionamento di Windows 2000 e XP hanno un limite di 32 GB per le partizioni FAT32, ma è un limite arbitrario: altre utility di terze parti possono tranquillamente creare e gestire partizioni FAT32 fino a 124.55 GB.

In dettaglio

Il file system FAT è un file system classificato tra quelli con allocazione concatenata. Una unità FAT può essere divisa in quattro aree: Area riservata, Tabella di Allocazione dei File, Directory radice ed Area dei File. L'area riservata parte dal settore logico zero e contiene il boot sector con le informazioni utili per la gestione dell'unità. Ogni voce della Tabella di Allocazione dei File (in sigla FAT, appunto), che chiameremo record, corrisponde ad un cluster dell'area dei file. In questa tabella il valore delle voci indica se quel cluster è libero, riservato, danneggiato o utilizzato da qualche file. I valori standard per le voci delle FAT sono riportati in tabella.

I valori delle FAT
VALORI POSSIBILI Significato associato
FAT 12 FAT 16 FAT 32
0x000 0x0000 0x00000000 Cluster non utilizzato
0xFF0-0xFF6 0xFFF0-0xFFF6 0xFFFFFFF0-0xFFFFFFF6 Cluster riservato
0xFF7 0xFFF7 0xFFFFFFF7 Cluster danneggiato
0xFF8-0xFFF 0xFFF8-0xFFFF 0xFFFFFFF8-0xFFFFFFFF Ultimo cluster del file
(altri valori) (altri valori) (altri valori) Cluster successivo del file

Se una voce della FAT dovesse contenere un valore non descritto nella tabella quì sopra, allora vuol dire che il cluster è occupato da un file e, allo stesso tempo, indica quale è il prossimo cluster occupato in sequenza dal file. La figura seguente mostra la catena di voci della FAT per un immaginario file "ALPHA.TXT" su un'unità FAT16. Nel cluster della directory è registrato il nome del file ed il suo primo cluster:

Voce del file ALPHA.TXT nella file directory
Nome del file Estensione Cluster iniziale
ALPHA TXT 0003

Il file ALPHA.TXT è indirizzato a partire dal cluster 3 (il valore è in esadecimale).

Allocazione dello spazio in base alla FAT
 0000   0006   0000   0000   0008   0000   FFFF   0000 
2 3 4 5 6 7 8 9

Il cluster 3 ci rimanda al cluster 6, dal quale andiamo all'8, dove troviamo il marcatore di fine file FFFF (65535 in decimale) della FAT16: perciò per recuperare i contenuti del file dovremo leggere in sequenza i cluster 3, 6 e 8.

Supporti esterni

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 di Linux venne creato un file system chiamato UMSDOS, un FAT con gli attributi Unix (permessi, proprietario ecc.); il suo sviluppo si fermò con l'arrivo del VFAT, ma è tuttora supportato. Il sistema operativo Mac OS X utilizzava il FAT per i volumi non avviabili.

La fine

Con l'annuncio della Microsoft del cessato supporto a MS-DOS 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 e essendo molto limitato il supporto del NTFS nei sistemi operativi non Microsoft, probabilmente questo file system verrà utilizzato ancora a lungo.