2011-01-11 21 views
14

Non sto cercando una soluzione alternativa; Mi piacerebbe una spiegazione La maggior parte dei link che ho trovato tramite Google mi dicono che il limite del file è 4 GB, ma non perché.Perché i dischi FAT32 sono limitati a file da 4 GB?

sono consapevole della spiegazione da Wikipedia: http://en.wikipedia.org/wiki/File_Allocation_Table#FAT32

Ma questo ancora non va nel dettaglio sul perché. (Cosa c'entra SCANDISK?)

Forse poi capirò se è possibile superare il limite di dimensioni del file di 4 GB.

risposta

5

di estendere tale risposta, FAT32 è derivato da FAT16 e FAT12. Quando è stato introdotto FAT12, i PC eseguivano un sistema operativo a 16 bit e non c'erano unità più grandi di dieci megabyte. Non credo che nessuno si aspettasse che qualcuno su un PC avrebbe mai avuto bisogno di un file che fosse 400 volte la dimensione della più grande unità disponibile. Inoltre, anche se Microsoft avesse la lungimiranza di allocare un byte in più per ogni voce della directory per contenere i bit 32-39 della dimensione del file (consentendo file fino a un terabyte ciascuno) è dubbio che qualsiasi programmatore di applicazioni lo avrebbe usato. Nessun linguaggio ha fornito un supporto pratico per la matematica intera maggiore di 32 bit; anche la matematica a 32 bit era considerata piuttosto stravagante.

Una domanda più importante nella mia mente è il motivo per cui non sono a conoscenza di alcuno sforzo per passare a un'interfaccia di archiviazione non FAT32 standard che non sia basata su settori numerati in sequenza. Sia le unità flash che i dischi rigidi potrebbero trarre vantaggio dalla conoscenza del significato logico delle varie scritture di settore (nel caso del flash, perché eliminerebbe la necessità di copiare i settori eliminati durante la gestione dell'usura, nel caso dei dischi rigidi, perché consentirebbe scrive di essere riscritto in modi che non violano i requisiti di coerenza dei dati).

21

Poiché FAT32 memorizza le dimensioni dei file a 32 bit e il massimo che è possibile memorizzare in 32 bit è 2^32-1 ~ = 4.29e9. 2^32-1 byte = 4 GB - 1 byte.

(Questo è, infatti, ha spiegato in questo articolo di Wikipedia.)

+0

Sì, lo so, ma * perché * lo fa? Con alcune convenzioni casuali? Sicuramente le persone che hanno progettato il filesystem sapevano che quello sarebbe stato il limite, quindi perché accontentarsi di quel limite? Era a causa dell'hardware disponibile al momento? – user5243421

+12

FAT32 è stato implementato su hardware a 32 bit per un sistema operativo a 32 bit con un compilatore a 32 bit, quindi è una scelta ovvia e qualsiasi cosa oltre i 32 bit sarebbe costata preziosi cicli del processore, spazio su disco e tempo di programmazione. (A quei tempi, pensavamo che 4GB fossero abbastanza grandi per un HD, figuriamoci per un singolo * file *.) –

+0

Ah, molto interessante. Questo è esattamente quello che stavo chiedendo. Grazie! – user5243421

0

Ho lo stesso dubbio e alla fine ho realizzato che ogni file ha i propri metadati e contiene 4 byte per la dimensione del file. Quindi, la dimensione massima del file è 4G - 1 byte.