File Allocation Table

Transcript

File Allocation Table
File Allocation Table
Da Wikipedia, l'enciclopedia libera
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, aveva molte
limitazioni: non supportava directory gerarchiche (con struttura ad albero), gli indirizzi per i
cluster erano lunghi"solo" 12 bit (una lunghezza non standard, quindi manipolare il FAT
diventata un po' più complicato) e la dimensione del disco era limitata a 32MB, ma i
dischetti dell'epoca, grandi 5.25", contenevano meno di 160KB.
All'inizio del 1983, per supportare i nuovi computer IBM PC XT, con un hard disk da 10
MB, fu rilasciato l'MS-DOS 2.0 che introduceva le directory gerarchiche, anche se il
formato del FAT non cambiò.
Nel 1984 la IBM rilasciò i PC AT, con un hard disk di 20 MB. In parallelo Microsoft
introdusse l'MSDOS 3.0, gli indirizzi per i cluster vennero aumentati a 16 bit, permettendo
un numero maggiore di cluster (fino a 65,536) e conseguentemente un file system più
grande. 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. MS-DOS 3.0 introdusse
anche il supporto per i dischetti 5.25" ad alta densità da 1.2 MB, con 15 settori per traccia
e quindi ancora più spazio per il FAT.
FAT16
Nel 1987 arrivò il formato che ora viene chiamato FAT16, nel 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 quindi arrivarono a 64, dando
32 KB cluster con la solita dimensione di 512 byte per settore, fissando il limite "definitivo"
per una partizione con il FAT 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 di solito
generava una grande 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, spostando 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
FAT12
0x000
FAT16
0x0000
FAT32
0x00000000
Significato associato
Cluster non utilizzato
0xFF0-0xFF6 0xFFF0-0xFFF6 0xFFFFFFF0-0xFFFFFFF6
Cluster riservato
0xFF7
Cluster danneggiato
0xFFF7
0xFFFFFFF7
0xFF8-0xFFF 0xFFF8-0xFFFF 0xFFFFFFF8-0xFFFFFFFF
Ultimo cluster del file
(altri valori)
Cluster successivo del file
(altri valori)
(altri valori)
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).
0000
2
Allocazione dello spazio in base alla FAT
0006 0000 0000 0008 0000 FFFF
3
4
5
6
7
8
0000
9
Notiamo che 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.
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,...);
il suo sviluppo venne bloccato con l'arrivo del VFAT, ma è tutt'ora 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
driver USB e essendo molto limitato il supporto del NTFS nei sistemi operativi non
Microsoft, probabilmente questo file system verrà utilizzato ancora a lungo.
Ricavato da "http://it.wikipedia.org/wiki/File_Allocation_Table"
DrumiX Web