File Allocation Table
Z Wikipedii
FAT (akronim z ang. File Allocation Table) – system plików powstały pod koniec lat 70., zastosowany w systemach operacyjnych, m.in. DOS i Windows. Podobnie jak sam DOS, wywodzi się z systemów CP/M. Określa on rozmieszczenie plików, katalogów i wolnej przestrzeni na takich nośnikach danych jak dyskietki i twarde dyski. Najważniejszym elementem systemu jest tablica informująca o rozmieszczeniu plików na partycji (FAT) - od nazwy tej tablicy pochodzi nazwa systemu.
Spis treści |
[edytuj] Typy FAT
W czasach gdy projektowane nośniki danych miały niewielką pojemność (dyskietka 180KiB), z biegiem czasu obsługiwane były coraz większe nośniki. Aktualnie istnieją trzy rodzaje FAT: FAT12, FAT16 i FAT32. Podstawowa różnica między nimi to liczba bitów, na których koduje się numery jednostek alokacji plików zwanych klastrami. Liczbę tę podaje się jako wyróżnik w nazwie systemu w FAT (podana w nazwie).
[edytuj] Sektor
Nośniki danych typu dyskietka, dysk itp. przechowują informacje w porcjach zwanych sektorami. Sektor jest zawsze w całości odczytywany i zapisywany. Większość urządzeń posiada sektory o wielkości 512 bajtów (0,5kB).
[edytuj] Klaster
W formacie FAT partycja (poza początkowymi zarezerwowanymi sektorami) jest podzielona na klastry (jednostki alokacji pliku). Każdy klaster składa się z jednego lub kilku sektorów, klastry są numerowane. System operacyjny na podstawie numeru klastra oblicza numer logiczny sektora (numer sektora od początku partycji), a na tej podstawie numer ścieżki, głowicy i sektora na ścieżce (dawniej fizyczne położenie na dysku), identyfikując jednoznacznie sektor i dokonując odczytu lub zapisu wybranego sektora.
Klaster w całości jest przydzielony jednemu plikowi. Plik w katalogu zawiera numer pierwszego klastra pliku, gdzie znajdują się dalsze części pliku opisuje wpis w FAT. W tablicy FAT pod numerem odpowiadającym numerowi pierwszej części pliku jest umieszczony numer kolejnego klastra przydzielonego plikowi lub liczba z zakresu FFF8h-FFFFh, jeśli to jest ostatni klaster pliku. Jeżeli dany klaster jest wolny, to w FAT odpowiada mu wpis 0000h, a FFF7h oznacza uszkodzony klaster.
- Przykład
- Wielkość klastra zależy od maksymalnego numeru klastra zależnego od wersji FAT, czyli 12, 16 albo 32, jednak ta nie określa bezpośrednio liczby dostępnych klastrów. Np. w FAT12 będzie ich mniej niż 4096 (212), ponieważ niektóre z nich mają znaczenie wyłącznie systemowe i nie są dostępne dla użytkownika. Liczba dostępnych klastrów jest jednocześnie maksymalną liczbą możliwych do zapisania plików na partycji. FAT12 użyjemy dla dysku o pojemności 20MiB – dysk ten ma 40960 sektorów, więc klaster musi zawierać 10 sektorów, co odpowiada 5KiB.
[edytuj] Zalety i wady tablicy alokacji
Tablica FAT umożliwia szybkie odszukanie miejsca dla nowego pliku lub dalszej części, łatwe odszukiwanie kolejnych części plików. Wadą systemu FAT jest to, że dla partycji o dużej pojemności klaster jest równie duży i znaczna część pozostaje pusta (średnio pół klastra na plik), w trakcie zapisywania i kasowania plików ulegają one fragmentacji (kolejne fragmenty pliku mogą leżeć w znacznej odległości od siebie), a przestawianie głowic dysku zajmuje czas. Inną wadą jest to, że każde założenie, skasowanie, każda zmiana wielkości pliku pociąga za sobą konieczność zmiany tablicy FAT, co przy niepoprawnym działaniu komputera może doprowadzić do utraty wszystkich danych na partycji.
[edytuj] Regiony partycji FAT
Partycja systemu FAT składa się z 4 regionów:
- zarezerwowany (z boot sectorem) – a w nim tablica BPB (Bios Parameter Block) oraz program ładujący system operacyjny (boot sector) dla partycji systemowej. Blok BPB zawiera informacje potrzebne do wyliczenia położenia i rozmiaru pozostałych regionów.
- tablica alokacji (tablica FAT) – przechowywana zaraz za boot sektorem struktura, zajmująca kilka sektorów, która zawiera informacje dla systemu operacyjnego na temat klastrów. Każda pozycja w tablicy FAT odpowiada jednemu klastrowi. Sposób kodowania informacji opisano wyżej. Na partycji może być kilka kopii tablicy FAT, zazwyczaj dwie.
- katalog główny (w FAT32 nie istnieje w tej formie) – katalog główny (root directory) i jego podkatalogi zawierają nazwę pliku, atrybuty, informacje o czasie utworzenie i modyfikacji, wskaźnik na pierwszy klaster z danymi.
- region danych – zajmowany przez podkatalogi i wszystkie pliki; podzielony na logiczne bloki zwane klastrami.
[edytuj] Historia systemu FAT
System plików FAT został pierwszy raz zastosowany w sierpniu 1980 roku razem z pierwszą wersją QDOS-a, czyli poprzednika systemów PC-DOS oraz MS-DOS. Pierwsza wersja FAT oznaczana jest jako FAT12. Jako system plików przeznaczony dla dyskietek miał on wiele ograniczeń. Brakowało w nim wsparcia dla katalogów. Adresy klastrów miały tylko 12 bitów, co ograniczało rozmiar partycji do ok 2MiB. W tym czasie dyskietki miały 360KiB.
W roku 1983 Microsoft wprowadził nową wersję FAT razem z MS-DOS w wersji 2. Nowy system plików powstał z myślą o dyskach twardych i pozwala już na tworzenie katalogów. Adresy klastrów były 16-bitowe, co dawało teoretycznie 65536 numerów. Dla rozmiaru klastra 512 bajtów można było uzyskać całe 32MiB pojemności. FAT16 doskonale nadaje się do 10-20MiB dysków z komputerów XT. Pliki identyfikowano za pomocą 8-literowej nazwy oraz 3-literowego rozszerzenia, np. plik1234.txt. Nazwa mogła zawierać tylko znaki alfanumeryczne, _ i -. W samym systemie plików kropka (.) nie jest częścią nazwy, jednak używa się jej w systemie w celu odróżnienia nazwy podstawowej od rozszerzenia.
Kiedy rozmiary dysków się zwiększyły, za nimi podążył rozmiar klastra, który powiększono do 8192 bajtów. W efekcie można było stworzyć system plików o „zawrotnym” rozmiarze 512MiB. Niestety taki zabieg spowodował pojawienie się bardzo silnej fragmentacji. Jeżeli ktoś zapisał plik o rozmiarze 1 bajta, to w systemie FAT16 zajmował on cały 8192-bajtowy klaster. W ten sposób marnowało się 8191 bajtów miejsca na dysku.
Z drugiej strony użytkownicy komputerów chcieli nadawać plikom dłuższe nazwy zawierające znaki narodowe. W Windows 95 wprowadzono nakładkę na system plików nazwaną VFAT (Virtual FAT). Wsparcie dla nakładki zawarto też w systemie Windows NT 4.0.
W roku 1997 rozmiar partycji FAT16 stał się zbyt mały. Klaster nie mógł być większy niż 32KiB, co dawało partycje o pojemności do 2GiB. Microsoft wprowadził nową wersję FAT32, zawierającą teoretycznie 32-bitowe numery klastrów. W rzeczywistości tylko 28-bitów było dostępnych dla numeracji. Oznaczało to możliwość adresowania do 268.435.438 klastrów. Partycje tego typu mogłyby mieć rozmiar wielu TiB, jednak ograniczenia napisanego przez Microsoft programu ScanDisk spowodowały wprowadzenie ograniczenia do 4.177.920 klastrów, co dawało partycje o rozmiarze ok. 124.55GiB (więcej informacji na ten temat). FAT32 jest obsługiwany przez systemy od wersji Windows 95 OSR 2 wzwyż (z wyjątkiem NT4).
Inne systemy operacyjne, jak OS/2, Linux, FreeBSD, oraz BeOS też zostały wyposażone w obsługę FAT, FAT32 oraz VFAT. System Mac OS X w komputerach Apple również obsługuje FAT, ale nie na partycji startującej.
Obecnie system FAT jest zastępowany w produktach Microsoft przez NTFS, który jest wydajniejszy i pewniejszy (jednak nie pozbawiony wad w stosunku do FAT). Systemy operacyjne pochodzące z innych źródeł również wykorzystują własne systemy plików (np. Ext3 w Linuksie). Mimo to FAT jest nadal powszechnie używany w związku z jego dostępnością i prostotą. Używa się go na dyskach o małej pojemności, dyskietkach, kartach pamięci flash używanych np. w kamerach i napędach USB oraz wszędzie tam, gdzie z powodów technicznych nie można zastosować bardziej zaawansowanego systemu bądź użytkownikowi zależy na kompatybilności (NTFS nie jest obsługiwany w starszych wersjach Windows).