FAT

FAT (iš ) – grupė failų sistemų, naudojamų DOS ir Windows operacinėse sistemose.

FAT sėkmingai naudojama nuo MS DOS (FAT-12, FAT-16) ir Windows 95 (FAT-32, FAT-LFN) laikų (pirmosios versijos ribojo skirsnio dydį). FAT patikimai dirba ir be vargo pasiekiama tiek iš Windows, tiek ir iš Linux, yra „standartinė“ failų sistema, naudojama diskeliuose, flash tipo laikmenose, įvairiuose specializuotuose įrenginiuose ir pan. Toks FAT universalumas labai patogus, jei su tuo pačiu duomenų saugojimo įrenginiu tenka dirbti kelioms skirtingoms OS sistemoms. FAT sistema „atvira“: kieno rankose diskas, to rankose ir visi duomenys, įprastose FAT realizacijose joks duomenų kodavimas nėra vykdomas. Kita vertus, rimtai sutrikus sistemai, taip lengviau vienaip ar kitaip atkurti normalų darbą neprarandant duomenų. Didelis FAT trūkumas – žurnalo nebuvimas. Jei kompiuteris buvo išjungtas staiga (ne per operacinės sistemos išjungimo procedūras), duomenų apie nebaigtas operacijas nelieka, todėl FAT sistemą naudojantį diską tenka gana ilgai tikrinti, kol jį vėl galima naudoti. Windows NT grupės operacinėse sistemose FAT gali būti nesunkiai konvertuota į NTFS, tačiau ši konversija negrįžtama.

Istorija 
Pirmieji FAT variantai palaikė tik visiškai minimalų rinkinį funkcijų darbui su failais bei failo atributų rinkinį, naujesnės (nuo FAT-12 MS-DOS-2.0 sistemoje) palaiko katalogus, nuo Windows 95 – ilgus failų vardus (FAT-LFN, kartais vadinama VFAT), kai kurios FAT versijos – ir naudotojų teisių kontrolę (DR-DOS sistemoje, taip pat – Linux naudotame UMS-DOS FAT išplėtime).

Sandara 
FAT yra vienos paprasčiausių failų sistemų, gerai demonstruojančių abstrakciją, kuri naudojama, failus išsaugant diske ar kitame įrenginyje. Paprasčiausia FAT sistema sudaryta iš trijų pagrindinių dalių, esančių griežtai apibrėžtose disko vietose:
 Failų alokavimo lentelės, kurioje yra visų klasterių sąrašas
 Šakninio katalogo, kuriame laikomas failų sąrašas
 Laisvos vietos, padalintos į apibrėžto ilgio (pvz., 512 baitų) klasterius

Veikimo principas 
Supaprastinta failų alokavimo lentelė gali atrodyti maždaug taip (pirma eilutė tik atvaizdavimo patogumui – ji žymi įrašų numerius, antra eilutė žymi įrašų reikšmes):
 Nr. 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
     00 03 04 06 08 07 FF 0A 00 FF 00 00 FF 00 00
Kiekvieno įrašo reikšmė gali reikšti vieną iš trijų dalykų:
 00 – klasteris yra laisvas
 FF – klasteris yra paskutinis faile
 kiti skaičiai reiškia kito eilės tvarka failui priklausančio klasterio numerį.
Su aukščiau pateikta lentele gali būti panaudotas šakninis katalogas, atrodantis maždaug taip:
 FILE     TXT 02
 FILE2    TXT 05
 UNKNOWN  DOC 0D
Pirmas įrašas (stulpelis) šiame kataloge žymi failo vardą, antras – plėtinį, trečias – pirmo failui priklausančio klasterio numerį. Norint perskaityti failą „FILE.TXT“, reiks skaityti klasterį „02“, kurio įrašas FAT lentelėje turi reikšmę „03“, žyminčią antrą klasterį, kurio įrašas, savo ruožtu, žymi „04“ ir t. t., kol pasiekiamas įrašas, kurio reikšmė „FF“, žyminti, kad tai paskutinis failui priklausantis klasteris. Tokiu būdu, vieną failą mes galime išdėstyti ne nuosekliame disko regione o išdalinti per skirtingas disko vietas. Minėtame pavyzdyje failai išdėstyti taip:
 FILE.TXT: 02,03,04,06,07
 FILE2.TXT: 05,08,0A
 UNKNOWN.DOC: 0D
Rašant failą į diską, OS renkasi pirmą laisvu FAT lentelėje pažymėtą klasterį ir atitinkamai keičia jo įrašus, kad jis žymėtų sekantį laisvą, kuris, savo ruožtu vėl žymimas ir t. t., tuo pat metu šakniniame kataloge sukuriamas failo įrašas, kuriame nurodomas pirmas failui priklausantis klasteris.

Failų sistemos