File Allocation Table

Da Wikipedia, l'enciclopedia libera.

(Reindirizzamento da FAT32)

La File Allocation Table, in sigla FAT, è un file system sviluppato inizialmente da Bill Gates e Marc McDonald. È il file system primario per diversi sistemi operativi DOS 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 (Unix, Linux, Mac, ecc.).

La FAT è relativamente semplice ed è supportata da moltissimi sistemi operativi. 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.

Il più grande problema del File System FAT è 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 può durare anche diverse ore e deve essere eseguita regolarmente per mantenere le prestazioni dell'unità.

Esistono varie versioni di questo file system, in base a 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.

Indice

[modifica] 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.

[modifica] 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 MB. 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 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.

[modifica] 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.

[modifica] 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.

[modifica] 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 (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: altre utility di terze parti [1] 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. L'ultima versione di Microsoft Windows che usa questo file system è Windows ME (Millennium Edition)

[modifica] 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 qui 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.

[modifica] 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 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 Mac OS X può utilizzare il FAT per i volumi non avviabili oppure per il volume di Bootcamp nei MacIntel.

[modifica] 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. 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.

[modifica] Note

  1. ^ http://www.ridgecrop.demon.co.uk/index.htm?fat32format.htm


[modifica] Collegamenti esterni

Strumenti personali