File Allocation Table

FAT

Tomasz Wysocki

Wstęp

Określenie FAT jest używane w dwóch kontekstach: jako nazwa systemu plików - części systemu operacyjnego odpowiedzialnej za zachowanie danych na nośnikach i administrację urządzeniami pamięci masowej, albo bezpośrednio jako skrót od File Allocation Table - nazwy jednokierunkowej listy alokacji plików na której wykorzystaniu opiera się tenże filesystem. Na systemie FAT opierał się DOS oraz starsze wersje systemów operacyjnych z rodziny Windows.

W rodzinie FAT wyróżniamy trzy systemy: FAT12, FAT16 i FAT32 ze względu na wielkość wpisu w tablicy FAT. Idea działania każdego z nich jest taka sama, jednakże są pewne różnice techniczne między nimi, a także w zakresie ich funkcjonalności, zastosowań i niektórych możliwości.

Dane są przechowywane w 512-bajtowych sektorach, jednakże niepraktyczne byłoby zarządzanie bezpośrednio tak małymi jednostkami. Dlatego za podstawową jednostkę alokacji uważa się klaster. Każdy klaster ma określoną ilość sektorów. Zazwyczaj od 4 do 64, co odpowiada rozmiarowi od 2048 do 32768 bajtów.

Najstarszy FAT12 był wykorzystywany we wczesnych wersjach DOS'a. Wpisy w tablicy w FAT12 są 12-bitowe więc zaadresować można 2^12,  czyli 4096 klastrów, co przy rozmiarze klastra od 0,5 do 4 kB daje maksymalny rozmiar partycji 16MB. FAT12 ma zastosowanie do dyskietek i b.małych dysków.

Nowszy FAT16 stosowany w DOS'ie od wersji 3.3 używa do adresowania 16-bitowej tablicy FAT, co daje możliwość zaadresowania 65256 klastrów, o rozmiarze od 2 do 32 kB. Czyli największy możliwy do obsłużenia rozmiar partycji to 2GB. FAT16 stosowany jest przy dyskach twardych małych i średnich rozmiarów.

Najnowszy FAT32 stosowany od Windows 95 używa do adresowania 28-bitowych tablic co przy klastrze rozmiaru 8kB daje maksymalny rozmiar partycji 2TB!

Struktura partycji FAT

Strukturę partycji FAT przedstawia schemat:

Struktura katalogu

Każdy plik na dysku znajduje się w jakimś katalogu. Katalog także jest plikiem, tyle, że posiada specjalną strukturę i posiada szczególne znaczenie z punktu widzenia systemu operacyjnego. Katalog jest tablicą zawierającą informacje o plikach i podkatalogach wewnątrz oraz wskaźniki do początków ich danych na dysku.

Każdy zapis w pliku katalogu składa się z 32 bajtów i zawiera następujące informacje (w tej kolejności):

Ponadto:

Każdy zwykły katalog posiada dwa specjalne zapisy:

Pliki

W systemie FAT pliki mają nazwy w klasycznej postaci składającej się z ustalonego dwuczęściowego formatu:

Rozszerzenia pełnią rolę oznaczeń typów plików i są w związku z tym pewne konwencje nazewnicze. Z drugiej jednak strony nie ma formalnych przeszkód do nazywania plików w dowolny inny sposób, byle prawidłowy.

W systemie Windows95  wprowadzono nazwy o długości do 255 znaków. Założeniem tej innowacji było nie tylko zniesienie ograniczenia do formatu 8.3, lecz także, aby z "nowych" nazw mogły korzystać "stare" aplikacje i żeby te nazwy dawało się zapisać na dosowych partycjach. Długie nazwy były częścią Virtual FAT (VFAT) stworzonego na potrzeby Widows95. Ponadto dopuszczone do stosowania w nazwach zostały kolejne znaki: + , ; = [ ]. Żeby zachować kompatybilność ze starymi programami wprowadzono automatyczne aliasowanie długich nazw. Odbywa się ono następująco:

  1. rozszerzenie nazwy długiego pliku staje się rozszerzeniem nazwy aliasu

  2. pierwsze sześć znaków nie będących spacjami w długiej nazwie jest analizowane, jeśli są niedozwolone w krótkim formacie, to w aliasie są zamieniane na znaki podkreślenia; wszystkie znaki małych liter są zamieniane na znaki wielkich liter; te sześć znaków staje się pierwszymi sześcioma znakami nazwy aliasu

  3.  pozostałe dwa znaki nazwy aliasu zostają określone jako ~1, w przypadku, gdy taki plik już istnieje ~2 itd.

Długie nazwy są zapisywane przy użyciu kilku sztuczek:

Struktura rozwinięcia nazwy (dla kawałka 13 kolejnych znaków):

Problemy z długimi nazwami:

Opis atrybutów przedstawia poniższa tabelka:

Atrybut

Opis

Kod bitowy

Read-Only

większość aplikacji nie pozwoli modyfikować, ani kasować tego pliku

00000001

Hidden

w normalnych warunkach nie jest wyświetlany przy listowaniu katalogu, chyba że podano odpowiedni parametr

00000010

System

pliki systemowe, które nie powinny być zmieniane, ani usuwane (może to mieć przykre konsekwencje)

00000100

Volume Label

etykieta dysku - przechowywana w katalogu głównym w postaci zapisu jako nazwa pliku w którym ustawiono ten atrybut

00001000

Directory

ten atrybut odróżnia pliki od katalogów

00010000

Archive

plik archiwalny - atrybut ten jest używany do metakomunikacji między aplikacjami, oznacza starszą wersję pliku, który może być backupowany

00100000


Lokalne systemy plików