title: FAT16
text: # FAT16
  
  FAT16 (FAT pour File allocation table, soit « table d'allocation de fichiers » en français) est un système de fichiers.
  
  Ce système permet d'attribuer (théoriquement) $2^{16}$ numéros d'identification de bloc de système de fichiers. Autrement dit, il divise l'espace disponible sur un disque dur en 65536 blocs portant chacun un numéro propre. Si le nombre de blocs reste constant, leur taille varie en fonction de la taille du périphérique de stockage.
  
  Ce système de fichiers succéda à FAT12 et précéda FAT32 ; il a été introduit dans la version 3.0 MS-DOS en 1984 pour gérer des disques durs de plus de 16 Mio. À partir de Windows 95 OSR2, l'utilisateur a le choix entre FAT16 et FAT32. Ce système de fichiers est également utilisé sur les cartes SD de capacité inférieure à 4 Gio.
  
  À l'apparition de Windows 95, le système VFAT a été ajouté et permet de gérer les noms longs (Long File Names ou LFN).
  
  ## Caractéristiques techniques
  
  Comme son nom l'indique, FAT16 utilise des adresses d'unités d'allocation sur le disque codées sur 16 bits, ce qui fait $2^{16}$ possibilités, cependant la limite avec FAT16 se situe à 65 524 unités d'allocation voire encore moins car selon un ouvrage Microsoft assez ancien les numéros d'unité d'allocation 0xfff0 à 0xfff6 (soit 65 520 à 65 526) ne doivent pas être utilisés, menant le nombre maximal à 65 518 (certains encore citent 65 517 mais il pourrait s'agir d'une confusion entre numéro de cluster et nombre de clusters). En tout état de cause, un programme qui formate un disque a tout intérêt à rester loin de cette limite car beaucoup de code erroné a été écrit.
  
  En plus d'une taille maximale, les systèmes de fichier FAT16 ont une taille minimale, car il n'y a pas de différence entre une entête FAT12 et FAT16. Le seul moyen de différencier ces deux systèmes de fichiers est de calculer le nombre de clusters. Donc un système ou un programme utilisant l'un de ces deux types de FAT doit savoir utiliser l'autre type de manière transparente. Malheureusement plusieurs documents de Microsoft se contredisent sur la limite du nombre de clusters. Certains disent 4 084 (moins de $2^{12}$ = 4 096) unités d'allocation (appelées clusters en anglais). Ce nombre descend à 4 078 car selon un ouvrage Microsoft les numéros d'unité d'allocation 0xff0 à 0xff6 (soit 4 080 à 4 086) ne doivent pas être utilisés.
  
  Contrairement à FAT12 qui ne permettait pas d'avoir des partitions d'une taille supérieure à 16 mégaoctets, FAT16 permet d'avoir des partitions, selon la taille des clusters, occupant jusqu'à 2 Go, et exceptionnellement 4 Go :
  
  * clusters de 512 octets : partitions de 2 à 32 Mo ;
  * clusters de 1 Ko : partitions de 4 à 64 Mo ;
  * clusters de 2 Ko : partitions de 8 à 128 Mo ;
  * clusters de 4 Ko : partitions de 16 à 256 Mo ;
  * clusters de 8 Ko : partitions de 32 à 512 Mo ;
  * clusters de 16 Ko : partitions de 64 à 1 024 Mo, c'est-à-dire 1 Go ;
  * clusters de 32 Ko : partitions de 128 à 2 048 Mo, c'est-à-dire 2 Go ;
  * clusters de 64 Ko : partitions de 256 à 4 096 Mo, c'est-à-dire 4 Go : ces partitions sont créées et gérées uniquement par Windows NT 4.0 ou postérieur.
  
  Un cluster est la taille minimale allouable. Même si un fichier n'a pas exactement une taille qui est un multiple de la taille d'un cluster, il occupera un nombre entier de cluster. Ainsi l'espace inutilisé au-delà de la fin du fichier est perdu. Il est donc important de choisir un compromis entre la place gagnée en réduisant la table d'allocation dont la taille est proportionnelle au nombre de clusters, et la place perdue à la fin de chaque fichier et répertoire, qui dépend en moyenne du nombre de fichiers et répertoire et de la taille d'un cluster.
  
  Il existe deux versions de FAT16 en adresses CHS (dont les identifiants de partition sont 4 et 6) car à l'époque où FAT16 a été introduit, le système d'exploitation DOS des ordinateurs personnels n'utilisait jamais les instructions 32 bits des processeurs x86 (gardant ainsi le système d'exploitation compatible avec les processeurs les plus anciens comme le 8086), cependant un disque FAT16 de plus de 32 Mo contient un nombre de secteurs qui dépasse 65 535 $(2^{16}-1$ le plus grand nombre représentable avec 16 bits) secteurs ce qui exige donc de faire les calculs en 32 bits (tout en n'utilisant que des instructions 16 bits), le premier DOS à supporter cela fut le Compaq DOS 3.31.
  
  Les autres limitations de FAT16 sont les suivantes :
  
  * Taille maximale d'un fichier : 4 Go - 1 octet (soit exactement 4 294 967 295 octets) ;
  * Nombre maximal de fichiers par partition : 65 524 ;
  * La racine du disque est de plus limitée à 512 entrées ; une entrée est un fichier ou un dossier.
  
  La limite de 512 fichiers à la racine est revue à la baisse lors de l'utilisation de noms longs de fichier. Un nom long est morcelé sur plusieurs entrées de la racine. Un nom long est tout nom autorisé qui n'est pas un nom court. Un nom court a de un à huit caractères, éventuellement suivi d'un point et de un à trois caractères. Sur une clef de stockage USB, notamment les lecteurs de MP3, il est recommandé de ne pas mettre tous les fichiers à la racine, au risque d'être limité avant d'avoir utilisé tout l'espace libre pour les fichiers.
  
  