web-dev-qa-db-fra.com

Pourquoi FAT16 ne peut-il pas stocker plus de 2 Go?

Tous les sites où je vais chercher des informations sur FAT16 déclarent simplement qu'il ne peut pas allouer plus de 2 Go. D'ACCORD. Génial. Je te crois. Mais comment en êtes-vous arrivé à cette conclusion (autre que de simplement la tester)?

Existe-t-il une sorte de formule que l'on peut utiliser pour déterminer combien un système FAT16 peut contenir?

26
SangoProductions

FAT16 utilise 16 bits pour identifier les clusters. Ainsi, il y a un maximum de 65536 clusters avant de manquer d'identifiants, et certains identifiants sont réservés à des utilisations autres que des fichiers. Chaque fichier occupe au moins un cluster. Des clusters plus grands augmentent l'allocation minimale par fichier, augmentant la surcharge des petits fichiers.

La taille du cluster vous indique ensuite le volume identifiable maximum. Pour les clusters de 32 Ko, c'est 32 * 1024 * 65536 B = 2 Go.

Vous pourriez augmenter la taille du cluster indéfiniment, en augmentant la taille de vos secteurs sur disque, mais vous restez limité au nombre maximum de fichiers. Vous rencontreriez également des problèmes avec un logiciel qui supposait la taille de secteur par défaut (512B)

Au moment où il y avait des volumes physiques d'environ 2 Go disponibles, les processeurs et les systèmes d'exploitation étaient à 32 bits, donc passer à FAT32 était un choix judicieux, permettant beaucoup plus de fichiers dans de petits clusters.

66
Caleth

Il y avait en fait plusieurs variantes de "FAT16" au fil des ans avec des limites différentes, mais considérons la version qui persistait de "compaq DOS 3.31" à Windows 95.

Les volumes FAT sont divisés en grappes. Chaque cluster est composé d'une puissance de deux nombres de secteurs. Le nombre de secteurs par cluster sur FAT16 est stocké sous la forme d'un numéro signé 8 bits. Ainsi, le nombre maximum de secteurs possibles par cluster est de 64.

Les numéros de cluster ont été stockés sous la forme d'une valeur non signée 16 bits. Limiter le nombre total de clusters à 65536. Multipliez cela par le nombre maximum de secteurs par clusters et vous obtenez une limite de 4194304 secteurs.

La taille (logique) du secteur des disques durs est de 512 octets. Multipliez cela par la limite du nombre de secteurs mentionnés ci-dessus et vous obtenez votre limite de 2 Go. En principe, un support avec des secteurs plus grands peut supporter un plus grand volume FAT16 mais je ne pense pas que cela se soit produit dans la pratique.

Windows NT a modifié l'interprétation du champ "secteurs par cluster" pour être non signé 8 bits. Cela a permis une partition 4GiB FAT16 avec des secteurs de 512 octets (et théoriquement plus grande sur les disques avec des secteurs plus grands). AIUI windows 98 a ajouté la prise en charge de la lecture et de l'écriture de telles partitions, mais il n'a pas pu les créer et ses utilitaires de disque n'ont pas pu les réparer.


Il aurait certainement été possible d'apporter des modifications relativement mineures au format du système de fichiers pour prendre en charge des clusters plus importants et donc des volumes plus importants. Cependant, MS a décidé d'opter pour l'option la plus radicale de passer à un index de cluster 32 bits avec Windows 95 OSR2 produisant FAT32.

Je crois que la raison pour laquelle l'option la plus radicale a été choisie était l'efficacité de l'espace. Étant donné les tailles de fichiers typiques à l'époque, les grappes de 32 Ko étaient déjà assez inutiles et les plus grandes auraient même été déplacées.

12
Peter Green