FAT16FAT16 (16-bits File Allocation Table) is een bestandssysteem dat gebruikt wordt door onder andere MS-DOS en Microsoft Windows. Zoals de naam al suggereert werkt FAT met een tabel die op een vaste plek op de schijf opgeslagen is en waarin wordt bijgehouden welke stukken van de schijf door welke bestanden gebruikt worden. De tabel is maximaal 216 (65536) posities groot en bestaat uit 16-bits getallen. In het oorspronkelijk ontwerp kwam iedere positie in de tabel overeen met een enkele sector van 512 bytes, waarmee de grootte van een FAT16-partitie maximaal 32 mebibyte (MiB) kon bedragen. In MS-DOS versie 3.0 werd het mogelijk sectoren samen te voegen in zogenaamde clusters, waardoor harde schijven tot 2 GB gebruikt konden worden (onder Windows NT tot 4 GB). GebruikFAT16 wordt gebruikt door MS-DOS en Windows op harde schijven en USB-sticks tot 2 GB. Omdat harde schijven tegenwoordig veel groter zijn dan 2 GB, wordt daarvoor geen FAT16 meer gebruikt, maar wel FAT32 of NTFS. Hoe werkt het?Het FAT16-systeem bestaat uit 3 delen:
FATDe File Allocation Table, waarnaar het bestandssysteem genoemd is, volgt onmiddellijk op de bootsector. Meestal staan er twee identieke FAT's vlak achter elkaar, zodat er bij beschadiging van een FAT altijd een reservekopie beschikbaar is. De FAT-tabel bevat maximaal 65.536 (216) getallen van twee bytes elk (totaal 128 KiB). Elk getal komt overeen met een cluster op de harde schijf, en geeft met een gereserveerde code aan wat de status van de bijbehorende sector of cluster is. Voor een vers geformatteerde schijf is dit voornamelijk de code "leeg" of eventueel "bad". Het laatste betekent dat de cluster beschadigd is en niet gebruikt mag worden. Bij het aanmaken van een bestand wordt het nummer van de eerste positie bij de informatie over het bestand in de directory opgeslagen. Als het bestand groter is dan één cluster zal in de aangewezen positie het nummer staan van de cluster waar het bestand verdergaat, daar staat weer het nummer van het derde stuk enzovoorts, totdat met een code aangegeven wordt dat het eind van het bestand bereikt is. Als een bestand verwijderd wordt worden alle posities weer als beschikbaar gemarkeerd. Vereenvoudigd voorbeeld, code 0 is leeg en 99 is "laatste sector". Een cluster is slechts 1 sector groot. De schijf is eerst leeg. Plaats 1 2 3 4 5 6 7 8 9 -------------------------------------------- Waarde 0 0 0 0 0 0 0 0 0 Na het toevoegen van een bestand dat op cluster 1 begint en drie sectoren lang is: Plaats 1 2 3 4 5 6 7 8 9 -------------------------------------------- Waarde 2 3 99 0 0 0 0 0 0 Positie 1 bevat dus het getal "2", dat is het nummer van de volgende cluster waar het bestand verdergaat. Positie 2 bevat het getal "3", en positie 3 bevat de eindcode "99". Na het toevoegen van nog een bestand dat op 4 begint en twee sectoren lang is: Plaats 1 2 3 4 5 6 7 8 9 -------------------------------------------- Waarde 2 3 99 5 99 0 0 0 0 Na het uitbreiden van bestand 1 met twee sectoren: Plaats 1 2 3 4 5 6 7 8 9 -------------------------------------------- Waarde 2 3 6 5 99 7 99 0 0 In de werkelijkheid wordt voor de "laatste sector" in FAT16 in de plaats van 99 een hexadecimale code gebruikt tussen FFF8h en FFFFh. Directory'sAlle directory's hebben dezelfde vorm. Simpel gesteld is een directory een lijst (de directory-ingangen) van bestandsnamen met het start-clusternummer van dat bestand. Alle directory-entry’s in FAT16 zijn 32 bytes groot. Er is een verschil tussen de hoofddirectory en alle andere (sub)directory's. Als overblijfsel van MS-DOS versie 1 heeft de hoofddirectory een vaste omvang en staat ze op een vaste plek op de schijf, in tegenstelling tot de latere subdirectory's die door MS-DOS als gewone bestanden worden behandeld die clusters kunnen toewijzen (allocate) en vrijmaken. Bovendien kan de hoofddirectory slechts 512 ingangen bevatten, terwijl andere directory's onbeperkt uitgebreid kunnen worden. Bij FAT32 is deze beperking voor de hoofddirectory opgeheven, omdat door lange bestandsnamen de hoofddirectory snel vol dreigde te raken. Alleen een speciale bit in de attribuut-byte bepaalt of een ingang een subdirectory is of een bestand. Directory-ingangen zien er verder gelijk uit voor subdirectory's en voor gewone bestanden, behalve dat van een subdirectory de grootte niet wordt bijgehouden (deze staat op nul). De hoofddirectory begint direct achter (de tweede kopie van) de FAT. Een subdirectory kent twee speciale ingangen. Dit zijn de huidige directory (current directory), aangeduid met punt (".") en de hogere directory (parent directory), aangeduid met punt-punt (..). De ingang voor de hogere directory staat de gebruiker toe omhoog in de directory-boom te bewegen doordat het besturingssysteem, net als bij bestanden, in de directory-entry het start-clusternummer vindt waar de hogere directory staat opgeslagen. Als de hogere directory de hoofddirectory is dan is zijn clusternummer 0. Directory-ingangenEen directory-ingang is 32 bytes groot en er passen 512 / 32 = 16 directory-ingangen in een blok van 512 bytes. Elke directory-ingang verwijst naar een bestand op de schijf, of naar een andere directory op de schijf. Een directory-ingang ziet er als volgt uit:
Bestandsnaam en extensieDe bestandsnaam en extensie staan links uitgelijnd in het naamveld en worden naar rechts opgevuld met spaties. De eerste byte van een bestandsnaam heeft een speciale betekenis en geeft de status van de directory-ingang weer. Van een verwijderd bestand krijgt alleen de eerste byte van de directory-ingang een speciale waarde (E5h). Alle andere informatie in de directory-ingang blijft ongewijzigd en de informatie in de clusters op de schijf wordt niet gewist. Problemen
Een aantal van deze problemen werd opgelost met de opvolger van FAT16: FAT32. Zie ook |
Portal di Ensiklopedia Dunia