File Allocation Table

Från Wikipedia
Hoppa till: navigering, sök

File Allocation Table, ofta förkortat FAT, är ett filsystem för DOS och Microsoft Windows.

FAT12 FAT16 FAT32
Utvecklare Microsoft
Fullständigt namn File Allocation Table
(12-bitars-version) (16-bitars-version) (32-bitars-version)
Introducerat 1977 (Microsoft Disk BASIC) Juli 1988 (MS-DOS 4.0) Augusti 1996 (Windows 95 OSR2)
Partitionsidentifierare 0x01 (MBR) 0x04, 0x06, 0x0E (MBR) 0x0B, 0x0C (MBR)
EBD0A0A2-B9E5-4433
-87C0-68B6B72699C7

(GPT; GUID Partition Table)
Strukturer
Mappinnehåll Tabell
"File allocation" Länkad lista
Korrupta block Kluster-tagging
Begränsningar
Max filstorlek 32 MB 2 GB 4 GB
Max antal filer 4 077 65 517 268 435 437
Max filnamnsstorlek 8.3, eller 255 tecken när man använder långa filnamn
Max volymsstorlek 32 MB 2 GB
4 GB med några implementeringar
8 TB
Finesser
Sparade datum skapad, ändrad, använd
Datumspann 1 januari 1980 - 31 december 2107
Attribut Endast läsning, Dold, System, volymetikett, undermapp, arkiv
Rättigheter Nej
Transparent komprimering Per volym, Stacker, DoubleSpace, DriveSpace Nej
Transparent kryptering Per volym endast med DR-DOS Nej

Fysisk struktur[redigera | redigera wikitext]

FAT-filsystemet består av en startsektor och ett index över var, rent fysiskt, på disken filerna finns. Olika filsystem disponerar hårddisken lite olika. I FAT ser strukturen ut så här:

Startsektorn[redigera | redigera wikitext]

Förutom Master Boot Record (MBR) finns en Secondary Boot sector placerad i partitionens första sektor. Den innehåller information om hur partitionen ser ut och var den slutar. Den innehåller en mediabeskrivande byte eller MDB (Media Description Byte) som även finns i MBR, och som anger typen av filsystem.

Filtabellen[redigera | redigera wikitext]

Själva filerna lagras på hårddisken i en kedja där filtabellen (File Allocation Table) är en lista över vilka block (utrymmen på hårddisken) som är lediga och i vilka block det finns filer. I pekarna (=ungefär som adresslappar) till de upptagna blocken finns också adressen till det block där filen fortsätter att lagras. I slutet på det sista blocket finns en kod som talar om att man nått slutet av filen. Koden heter EOF och står för End Of File. Lediga och reserverade (=skadade) block markeras även med speciella koder.

Efter FAT-tabellen har man ofta en kopia på densamma då den är så systemkritisk.

Rotkatalogen[redigera | redigera wikitext]

Efter detta följer rotkatalogen (root directory), som beskriver innehållet i filsystemets rot. I tidigare versioner av FAT var rotkatalogens storlek låst, en begränsning som kunde märkas på disketter med många filer i roten, samt ibland på hårddiskar där långa filnamn gjorde att långt fler poster började användas.

I FAT32 saknar rotkatalogen storleksbegränsning och har en fri placering på disken, precis som alla andra kataloger eller filer. Klusternumret (adressen) till rotkatalogen ligger då i bootsektorn.

Rotkatalogen och alla andra kataloger innehåller 32 byte med attribut för varje fil i katalogen. Dessa brukar kallas directory entry och anger det första blocket en fil finns lagrad på. Ett sådant entry börjar med 8 byte (läs tecken) för filnamnet och 3 för filändelsen.

Sedan följer 1 byte för filattributen samt 10 byte som är reserverade för framtida (?) bruk. Dessa byte används bland annat i hanteringen av långa filnamn, som också baseras på att flera "virtuella" katalogposter skapas per fil, med namnet uttryckt i unicode. Med "långa" menas här filnamn som inte uppfyller 8.3-teckenreglerna. Sedan följer 2 byte för tid och ytterligare 2 för datum då filen senast anropades. Sist av de 32 byten i directory entryt kommer dels 2 byte med adressen till det första blocket och 4 byte som anger filens totala storlek. I FAT32 är en sådan filangivelse 4, och inte 2, byte. Den maximala filstorleken är däremot fortfarande begränsad till 32 bitar.

Datadelen[redigera | redigera wikitext]

Allra sist kommer ett antal block där själva filerna lagras. Denna del är förstås den största rent omfångsmässigt.

Olika versioner[redigera | redigera wikitext]

Det är beroende på vilken FAT version man använder hur stora partitioner man kan adressera.

Den minsta storleken en fil tar upp på en hårddisk på 16 till 128 MB är 2 kB, På 128 till 256 MB är 4kB, 256 till 512 MB är 8kB, på 512 till 1 GB är 16 kB, 1 GB till 2 GB är 32 kB och i exempelvis VFAT 2 GB till 4 GB tar en fil minst 64 kB i utrymme.

FAT12[redigera | redigera wikitext]

Det första FAT-systemet, som fortfarande används på disketter. Siffran 12 står för hur många bitar (ettor och nollor) man anger adresser till filerna med. Exempelvis 000000000001 för att ange plats 2. Med 12 bitar kan man skriva (2^{12}=4096 olika tal och följaktligen kan man med FAT12 adressera 4096 olika block)

FAT16[redigera | redigera wikitext]

Med MS-DOS 4.0, 1988, kom FAT16. Den använder 16 bitar att adressera med. Det vill säga 2^{16}=65 536 block.

VFAT[redigera | redigera wikitext]

VFAT, eller Virtual FAT, skapades för att tillåta långa filnamn i Windows 95.

Ett problem med de tidigare versionerna av FAT var namnkonventionen på endast åtta tecken per filnamn. Detta har åtgärdats i viss mån genom VFAT (som fanns i tidiga versioner av Windows 95).

Eftersom långa filnamn lagras genom extraposter tar filer med längre namn upp flera katalogposter (se ovan). Detta hade säkert kunnat lösas på ett smidigare sätt, men Microsoft valde denna metod för att kunna behålla bakåtkompatibiliteten med tidigare versioner av FAT.

FAT32[redigera | redigera wikitext]

För att kunna använda ännu större partitioner på hårddiskarna skapades FAT32 som kan adressera med 32 bitar. Den introducerades i och med Windows 95 OSR2 och kom senare i Windows 98 och kan även användas i bl.a. Windows 2000 och XP.

Genom att slå ihop block i kluster har man på ett annat sätt lyckats adressera allt större hårddiskar. Nackdelen med kluster är att ju större hårddiskar desto större blir klustren och eftersom en fil alltid upptar ett helt antal kluster, förlorar man utrymme när filer inte fyller upp ett helt kluster.

exFAT[redigera | redigera wikitext]

För stora externa USB-medier har Microsoft introducerat exFAT, som löser en del brister i FAT32 med avseende på de ofta stora filer (musik, film och dylikt) som behöver lagras, utan att införa mer komplicerade filsystemsstrukturer eller exempelvis säkerhetsfunktioner.

Användning[redigera | redigera wikitext]

Förutom i datorer som fortfarande kör DOS används FAT på disketter, och på andra utbytbara media (USB-minnen, minneskort till digitalkameror, etc). Även Playstation 3 tillämpar FAT32. Dessutom har FAT16 ofta använts på datorer med flera olika installerade operativsystem för att dela data mellan de olika systemen, eftersom i stort sett alla operativsystem kan hantera FAT.

En svaghet med FAT är att alla sökningar inom filer sker linjärt i filallokeringstabellen vilket resulterar i att slumpvis sökning (random seek) blir relativt ineffektiv. Systemets struktur innebär även att både extern och intern fragmentering uppstår lättare än i många andra system, bland annat på grund av frånvaron av speciell lagringsmetod för mycket små filer, något som Microsoft exempelvis tillämpar i NTFS.

Se även[redigera | redigera wikitext]