Perché FAT16 non può memorizzare più di 2 GB?

25

Tutti i siti su cui vado a cercare informazioni su FAT16 dichiarano solo che non è possibile allocare più di 2 GB. OK. Grande. Ti credo. Ma come si arriva a questa conclusione (oltre a provarlo solo)?

Esiste una sorta di formula che si può usare per determinare quanto può mantenere un sistema FAT16?

    
posta SangoProductions 30.04.2018 - 12:12
fonte

2 risposte

66

FAT16 utilizza 16 bit per identificare i cluster. Quindi ci sono un massimo di 65536 cluster prima di esaurire gli identificatori, e alcuni identificatori sono riservati per usi diversi da file. Ogni file occupa almeno un cluster. I cluster più grandi aumentano l'allocazione minima per file, aumentando il sovraccarico di file di piccole dimensioni.

Le dimensioni del cluster indicano quindi il volume massimo identificabile. Per i cluster da 32 KiB, vale 32 * 1024 * 65536 B = 2GiB.

potresti aumentare la dimensione del cluster indefinitamente, aumentando la dimensione dei tuoi settori su disco, ma rimani limitato al numero massimo di file. Avresti anche problemi con il software che ha assunto la dimensione predefinita del settore (512B)

Nel punto in cui erano disponibili volumi fisici di ~ 2GiB prontamente disponibili, processori e sistemi operativi erano a 32 bit, quindi passare a FAT32 era una scelta sensata, consentendo un numero enorme di file in piccoli cluster

    
risposta data 30.04.2018 - 12:45
fonte
12

Nel corso degli anni c'erano diverse varianti di "FAT16" con limiti diversi, ma consideriamo la versione che persisteva da "compaq DOS 3.31" a Windows 95.

I volumi FAT sono suddivisi in cluster. Ogni cluster è costituito da una potenza di due numeri di settori. Il numero di settori per cluster su FAT16 è memorizzato come un numero con segno a 8 bit. Quindi il massimo di settori possibili per cluster è 64.

I numeri di cluster sono stati memorizzati come valore senza segno a 16 bit. Limitare i cluster totali a 65536. Moltiplicare quello per il massimo di settori per cluster e si ottiene un limite di 4194304 settori.

La dimensione del settore (logico) dei dischi rigidi è 512 byte. Moltiplicare quello per il limite sul numero di settori menzionati sopra e ottieni il tuo limite di 2GiB. In via di principio un mezzo con dimensioni di settore più grandi può supportare un volume FAT16 più grande, ma non penso che ciò sia avvenuto nella pratica.

Windows NT ha cambiato l'interpretazione del campo "settori per cluster" per essere senza segno a 8 bit. Ciò ha permesso una partizione FAT16 4GiB con settori a 512 byte (e teoricamente più grande su unità con settori più grandi). AIUI Windows 98 ha aggiunto il supporto per la lettura e la scrittura di tali partizioni ma non è stato in grado di crearle e le sue utilità del disco non potrebbero ripararle.

Sarebbe stato certamente possibile apportare modifiche relativamente minori al formato del filesystem per supportare cluster più grandi e quindi volumi più grandi. Tuttavia MS ha deciso di optare per l'opzione più radicale di passare a un indice cluster a 32 bit con Windows 95 OSR2 che produce FAT32.

Credo che la ragione per cui optare per l'opzione più radicale sia stata l'efficienza dello spazio. Dato i filesystem tipici al momento i cluster 32kiB erano già abbastanza dispendiosi e quelli più grandi sarebbero stati persino spostati così.

    
risposta data 30.04.2018 - 18:54
fonte

Leggi altre domande sui tag