Tabel de alocare a fișierelor

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
GRAS
Date generale
Dezvoltator Microsoft
Numele complet Tabel de alocare a fișierelor
  • FAT12 (12 biți)
  • FAT16 (16 biți)
  • FAT32 (32 de biți)
Introducere
Identificator partiție
  • FAT12: 0x01 ( MBR )
  • FAT16: 0x04, 0x06, 0x0E ( MBR )
  • FAT32: 0x0B, 0x0C ( MBR )
    EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 ( GPT )
Structura
Structura conținutului directorului Mese
Alocarea fișierelor Listă legată
Blocuri deteriorate Etichetarea clusterelor
Limite
Dimensiunea maximă a unui fișier octeți (aproximativ 2 GB )
Numărul maxim de fișiere
  • FAT12: octeți (puțin sub 4 KiB )
  • FAT16: octeți (puțin sub 64 KiB )
  • FAT32: octeți (256 MiB )
Dimensiunea maximă a unui nume de fișier 255
Dimensiunea maximă a volumului
Caracterele permise într-un nume de fișier UTF-16
Caracteristici
Date stocate Crearea, modificarea, accesul
Date acceptate 1 ianuarie 1980 - 31 decembrie 2107
Furculiţă Nu nativ
Atribute Numai citire, Ascuns, Sistem, Etichetă volum, Subfolder, Arhivă, Executabil
Permisiuni de sistem de fișiere Nimeni
Compresie transparentă
Criptare transparentă
  • FAT12, FAT16: numai cu DR-DOS
  • FAT32: Nici unul

Tabelul de alocare a fișierelor , în acronim FAT , este un sistem de fișiere dezvoltat mai întâi de IBM și Digital Equipment Corporation mai întâi, apoi de Bill Gates și Marc McDonald pentru MS-DOS . Este sistemul de fișiere principal pentru diferite sisteme de operare și Microsoft Windows până la versiunea Windows Me . Windows NT și versiunile ulterioare au introdus NTFS și au menținut compatibilitatea cu FAT, precum și cu multe alte sisteme de operare moderne.

Istorie

FAT a debutat inițial pe sistemul CP / M Digital și IBM pentru dischete; ideea a fost preluată din modul în care versiunea autonomă a Microsoft BASIC a folosit dischetele până în 1976, a copiat de la IBM. În mai 1979, cu un an înainte de a decide să scrie QDOS, Tim Paterson l-a ajutat pe Bob O'Rear să-și aducă limba în noua arhitectură 8086 . FAT este apoi utilizat în august 1980 cu prima versiune de QDOS (derivarea modulului DOS al CP / M) de către Tim Paterson , predecesorul PC-DOS și MS-DOS al Microsoft , într-adevăr, singurul suport FAT a fost tocmai principala diferență între QDOS și CP / M , din care QDOS era o clonă.

Odată cu anunțul Microsoft privind întreruperea suportului pentru MS-DOS în 1994 și introducerea NTFS în toate sistemele de operare produse, este puțin probabil ca o nouă versiune a FAT să fie dezvoltată. Cu toate acestea, având în vedere difuziunea extremă a FAT în dischete , memorii flash sau unități USB și suportul NTFS fiind foarte limitat în sistemele de operare non-Microsoft, acest sistem de fișiere va fi folosit probabil pentru mult timp. Odată cu comercializarea Windows Vista SP1 și Windows CE 6.0, Microsoft introduce exFAT , cunoscut și sub numele de FAT64, utilizat în principal pentru memoriile flash.

Versiunea istorică

Există diferite versiuni ale acestui sistem de fișiere , bazate pe câți biți sunt alocați numărului de clustere de discuri: FAT12, FAT16, FAT32. Există, de asemenea, o versiune a FAT16 numită VFAT, care este virtuală, adică nu este înregistrată fizic pe hard disk , dar este gestionată de un software specific.

FAT12

Prima versiune a FAT a fost FAT12 , un sistem de fișiere pentru dischete ale căror adrese de cluster erau exact de 12 biți (lungime non-standard, astfel încât manipularea FAT a fost puțin mai complicată) și din acest motiv ar putea gestiona discuri mari la maximum 32 MiB. Dar, deoarece discurile vremii erau de cel mult 160 KB, aceste limite nu au fost niciodată resimțite. Prima versiune a FAT12 nu suporta directoare de copac, care au fost introduse cu dischete MS-DOS 2.0 și 360KB.

În 1984 , IBM a lansat computerele AT, cu un hard disk de 20 MB. În paralel, Microsoft a introdus MS-DOS 3.0 și o versiune FAT cu adrese de cluster pe 16 biți , permițând până la 65.536 clustere și aducând limita teoretică de dimensiune la 512 MB. Cu toate acestea, numărul maxim de sectoare și dimensiunea maximă (a unei partiții , nu mai mult de un disc) nu s-au modificat și au rămas 32 MB.

FAT16

În 1987 a apărut formatul care acum se numește FAT16 : introdus de Compaq DOS 3.31, în 1988 au venit și îmbunătățiri cu MS-DOS 4.0. Dimensiunea partiției a fost limitată de dimensiunea de 8 biți a sectoarelor pe cluster, care ar putea avea până la 64 de sectoare, oferind clustere de 32 KB cu dimensiunea obișnuită de 512 octeți pe sector, stabilind limita „finală” pentru o partiție FAT16. la 2 GB. Mai târziu, Windows NT a mărit dimensiunea maximă a clusterului la 64K (considerând contorul ca nesemnat , nesemnat ), dar rezultatul nu a fost compatibil cu alte implementări FAT ale vremii, iar clusterele de această dimensiune au irosit mult spațiu pentru fragmentarea internă.

VFAT

Pentru a accepta nume de fișiere lungi, VFAT ( V irtual FAT ) a fost introdus în Windows 95 , numit după driverul de dispozitiv. Implementarea a schimbat modul în care sistemul de fișiere a organizat conținutul unui director . Utilizarea specificației VFAT vă permite să utilizați atât nume lungi (până la 255 caractere UTF-16 ), cât și nume scurte ( 8 + 3 caractere) în mod transparent pentru diferite versiuni de Windows.

FAT32

Pentru a depăși limitele de dimensiune a volumului impuse de FAT16, Microsoft a decis să creeze un nou FAT numit FAT32 , cu numere pentru clustere de 32 de biți, deși în realitate sunt utilizate doar 28.

În teorie, acest lucru ar trebui să permită 268 435 456 (2 28 ) cluster, adică o dimensiune totală de ordinul a 2 TiB cu cluster de 8 KiB, dar datorită limitărilor unor versiuni ale utilitarului scandisk, FAT nu este permis să depășească 4 177 920 (<2 22 ) clustere, reducând dimensiunea maximă la 124,55 gigaocteți . Utilitarele de formatare și partiționare Windows 2000 și XP au o limită de 32 GB pentru partițiile FAT32, [1] [2], dar este o limită arbitrară: pornirea unui computer cu o dischetă de pornire bazată pe sistemul de operare FAT32 (de exemplu: Windows 98 ) este de fapt posibil să partiționăm în FAT32 peste 32 de gigaocteți, de asemenea utilitățile terțe [3] pot crea și gestiona cu ușurință partiții FAT32 de până la 1 TB; pe piață există hard disk-uri externe de 1 TB formatate în FAT32. Cu FAT32 dimensiunea fișierului unic nu poate depăși 4 GB. Acest lucru se datorează faptului că există o intrare pe 32 de biți care indică dimensiunea fișierului în octeți.

Cea mai recentă versiune de Microsoft Windows care utilizează acest sistem de fișiere este Windows Me (Millennium Edition). Versiunile ulterioare îl acceptă în plus față de sistemul de fișiere NTFS , în special pentru formatarea pendrive, carduri de memorie și alte dispozitive mobile.

ExFAT

Pictogramă lupă mgx2.svg Același subiect în detaliu: exFAT .

ExFAT este un sistem de fișiere introdus de Microsoft în 2006 cu Windows Embedded CE 6.0 , conceput special pentru memorii flash și, în general, pentru dispozitive de stocare cu dimensiuni de până la 16 exabytes .

Descriere

FAT în sine ține evidența zonelor de disc disponibile și a celor utilizate deja de fișiere și directoare : diferența dintre FAT12, FAT16 și FAT32 constă tocmai în câți biți sunt alocați numerotării clusterelor de discuri. Cu 12 biți, sistemul de fișiere poate adresa maxim 2 12 = 4096 clustere, în timp ce cu 32 biți , 2 32 = 4.294.967.296 clustere pot fi gestionate; creșterea numărului de biți de adresă a clusterelor a fost necesară pentru a gestiona unități de disc din ce în ce mai mari și capabile.

FAT este relativ simplu și este susținut de multe sisteme de operare, deoarece este Open Source. Aceste caracteristici îl fac potrivit de exemplu pentru dischete și carduri de memorie . Poate fi, de asemenea, utilizat pentru a partaja date între două sisteme de operare diferite și multe altele. Cea mai mare problemă cu sistemul de fișiere FAT al Microsoft este fragmentarea . Când fișierele sunt șterse, create sau mutate, diferitele părți ale acestora se împrăștie pe unitate, încetinind progresiv citirea și scrierea. O soluție la aceasta este defragmentarea , un proces care reordonează fișierele de pe unitate. Această operație poate dura câteva ore și trebuie efectuată periodic pentru a menține performanța unității.

Suport în sisteme de operare

Având în vedere utilizarea pe scară largă a FAT sistemul de fișiere , practic , toate non - Microsoft sistemele de operare au sprijinit atât FAT16, vfat și în cele din urmă FAT32 (acest lucru cu mai puține limitări decât cele oficial prevede acest lucru ).

Odată cu primele distribuții GNU / Linux , a fost creat un sistem de fișiere numit UMSDOS , un FAT cu atribute Unix (permisiuni, proprietar etc.), care altfel nu sunt acceptate în FAT; dezvoltarea sa sa oprit odată cu venirea VFAT, dar este încă susținută. Sistemul de operare macOS poate utiliza FAT pentru volumele care nu pot fi pornite sau pentru volumul Bootcamp pe MacIntel.

Structura

Sistemul de fișiere FAT este un sistem de fișiere clasificat printre cele cu alocare în lanț . O partiție FAT este structurată în patru secțiuni diferite:

Zona rezervată GRAS Directorul rădăcină
( numai FAT12 / 16 )
Regiunea de date
Sectorul de încărcare Informații FS
( Numai FAT32 )
Rezervat
( opțional )
FAT # 1 FAT # 2
Mărimea în sectoare Variabil (# FAT) * (sectoare pentru FAT) 32 * (# intrări rădăcină) / octeți pe sector (# cluster) * (sectoare pe cluster)
  • Sectoarele rezervate, care se află la început. Primul sector rezervat (sectorul zero) este sectorul de boot , urmat de blocul de parametri BIOS (cu câteva informații de bază despre FS, în special tipul acestuia, și indicatori către poziția celorlalte secțiuni). De obicei conține codul de încărcare a sistemului de operare. Mărimea sectoarelor rezervate este indicată într-un câmp din sectorul de încărcare. În FAT32 informațiile sunt în sectorul 1, în timp ce în sectorul 6 există o copie de rezervă a sectorului de încărcare.
  • Regiunea FAT: Conține cel puțin două copii ale FAT (din motive de securitate). Ele reprezintă harta regiunii de date.
  • Regiunea directorului ROOT: este un tabel care stochează folderele și fișierele prezente în directorul rădăcină. Este prezent doar în FAT12 și FAT16 și impune o dimensiune maximă fixă ​​pentru rădăcină; în FAT32 acest lucru se face direct în regiunea de date, eliminând astfel constrângerea dimensională de pe rădăcină.
  • Zona de date: este locul în care fișierele și folderele sunt într-adevăr stocate și ocupă cea mai mare parte a partiției

FAT folosește un format endian mic pentru intrările de antet și FAT (e).

Sectorul de încărcare

Este important să rețineți că primul sector al unui dispozitiv nu este neapărat sectorul de încărcare. Pentru dispozitivele partiționate (de exemplu, hard disk-uri), primul sector se numește Master Boot Record (prescurtat: MBR ); în dispozitivele nepartitionate (cum ar fi dischetele) primul sector este Volume Boot Record (prescurtat: VBR ). Toate versiunile FAT au primii 36 de octeți în comun:

Octet Offset Lungime (octeți) Descriere
0x00 3 Săriți instrucțiunile. Această declarație se va executa și va sari peste restul antetului (neexecutabil) dacă partiția este bootabilă (vezi VBR ). Dacă saltul este de doi octeți, instrucțiunea JMP vecină este urmată de o instrucțiune NOP
0x03 8 Numele OEM (completat cu spații). Determinați modul în care a fost formatat discul. MS-DOS verifică acest câmp pentru a determina ce alte părți ale înregistrării de încărcare trebuie evaluate. Valorile comune sunt IBM 3.3" (cu două spații între ele), MSDOS5.0 , MSWIN4.1 și mkdosfs .
0x0B 2 Octeți pe sector. De obicei valoarea este 512. Acesta este începutul blocului de parametri BIOS .
0x0D 1 Sectoare pe cluster. Valorile permise sunt puteri de două de la 1 la 128. Cu toate acestea, numărul total de octeți pe cluster trebuie să fie mai mic de 32 KiB .
0x0E 2 Numărul de sectoare rezervate. Acesta este numărul de sectoare înainte de primul FAT din imaginea sistemului de fișiere. De obicei 1 pentru FAT12 / 16, 32 pentru FAT32.
0x10 1 Numărul de tabele de alocare a fișierelor. De obicei merită două.
0x11 2 Numărul maxim de intrări în directorul rădăcină. Pentru FAT12 / 16 această valoare trebuie să fie un multiplu al mărimii unui sector. Pentru FAT32 este 0.
0x13 2 Total sectoare. Dacă este 0 atunci cei 4 octeți sunt menționați la offset 0x20.
0x15 1 Tipul descriptorului. De obicei, acesta este 0xF8 pentru un hard disk.
0x16 2 Sectoare pentru FAT (pentru FAT12 / 16)
0x18 2 Sectoare pe pistă.
0x1A 2 Numărul de capete.
0x1C 4 Sectoare ascunse.
0x20 4 Total sectoare. Dacă este mai mic de 65.535, se aplică conținutul de la offset 0x13.

Sectorul informațional FS

Introdus cu FAT32 pentru a accelera timpul de acces al unor operațiuni (adică cantitatea de spațiu liber), acesta ocupă în general sectorul 1, în înregistrarea de boot 0x30. Are o dimensiune de 512 octeți.

Tabel de fișiere

O partiție este împărțită în clustere adiacente cu dimensiuni cuprinse între 2 și 32 KB. Fiecare fișier este structurat pe disc ca o listă legată de clustere care nu sunt neapărat contigue: acesta este principalul motiv pentru care vorbim despre fragmentarea discului în sistemele de fișiere FAT.

Fiecare înregistrare FAT constă din 5 câmpuri:

  • numărul următorului cluster
  • un EOC special (sfârșitul lanțului cluster), care indică sfârșitul unui lanț
  • grup rău
  • cluster rezervat
  • cluster gratuit

Valorile posibile sunt:

FAT12 FAT16 FAT32 Descriere
0x000 0x0000 0x00000000 Cluster gratuit
0x001 0x0001 0x00000001 Valoare rezervată
0x002-0xFEF 0x0002-0xFFEF 0x00000002-0x0FFFFFEF Cluster de date
0xFF0-0xFF6 0xFFF0-0xFFF6 0x0FFFFFF0-0x0FFFFFF6 Valori rezervate
0xFF7 0xFFF7 0x0FFFFFF7 Cluster prost
0xFF8-0xFFF 0xFFF8-0xFFFF 0x0FFFFFF8-0x0FFFFFFF Ultimul cluster

Rețineți că doar 28 din cei 32 de biți disponibili sunt disponibili în FAT32; cel mai semnificativ bit este rezervat. Regiunea de date începe de la cluster-ul 2; celelalte articole sunt rezervate pentru FAT și pentru uz intern.

Tabel director

Este un tip special de fișier care reprezintă un director; fiecare fișier sau folder stocat în interior este reprezentat de o intrare în tabel conform următoarei scheme:

Decalaj de octeți Lungime Descriere
0x00 8 Numele fișierului (completat cu spații). Dacă primul octet este 0, înseamnă că elementul este disponibil, valoarea 0x05 este rezervată pentru codificarea kanji , valoarea 0x2E indică „.” sau „..”
0x08 3 Extensie de fișier (completată cu spații)
0x0B 1 Atributele fișierului. Urmează următoarea schemă:
Pic Masca Descriere
0 0x01 Numai citire
1 0x02 Ascuns
2 0x04 Sistem
3 0x08 Etichetă de volum
4 0x10 Subdirectoare
5 0x20 Arhiva
6 0x40 Dispozitiv (numai pentru uz intern, nu de fapt pe disc)
7 0x80 Nefolosit
0x0C 1 Rezervat, în general 0 (cu excepția Windows NT și versiuni ulterioare)
0x0D 1 Timpul creației. Rezoluție: 10 ms, valori de la 0 la 199.
0x0E 2 Timp de creație în ore, minute și secunde. Orele sunt codificate în biți 15-11, minute în biți 10-5, secunde în biți 4-0
0x10 2 Data crearii. Anul este codificat în biții 15-9, luna în biții 8-5, zilele în biții 4-0. Anul este calculat începând cu anul 1980.
0x12 2 Data ultimei accesări
0x14 2 EA-Index în OS / 2 și NT pentru FAT12 / 16; în FAT32 sunt raportați cei 2 octeți mari ai primului cluster
0x16 2 Ultima oră modificată
0x18 2 Data ultimei modificări
0x1A 2 Pointer către primul cluster din FAT12 / 16; în FAT32 sunt raportați cei 2 octeți reduși ai primului cluster.
0x1C 4 Dimensiunea fișierului în octeți

În cazul în care este un volum părinte sau un fișier de etichetă de director (..) cei 6 octeți la offset 0x1A sunt setați la zero.

Notă

Elemente conexe

linkuri externe