File Allocation Table 51385 29996002 2008-05-26T00:47:50Z Ecclecticus 38915 format gen et ajoût d'une intro {{Voir homonymes|FAT}} '''FAT''', [[Acronymie|acronyme]] anglais de ''file allocation table'' (table d'allocation de fichiers), est un [[système de fichiers]] conçu par Bill Gates et Marc McDonald pour le Microsoft Disk BASIC , puis réutilisé dans [[QDOS]] dont c'est le seul élément qui ne soit pas inspiré par [[CPM]] (QDOS est l'ancêtre de MS-DOS, écrit par [[Tim Paterson]]). Il fut ensuite utilisé sous [[MS-DOS]] puis dans la branche 9x de [[Microsoft Windows|Windows]] (Par oposition, la branche [[Windows NT|NT]] utilise le [[NTFS]]). = Historique = FAT a été conçu au départ pour des [[disquette]]s de 160 Ko, mais un de ses plus gros défauts était le nombre limité de caractères dans les noms des fichiers (le fameux ''8.3'') : 1 à 8 caractères, un point et 0 à 3 caractères, sans distinction de la casse. Ce défaut a été résolu dans MS-DOS 7 (le MS-DOS de [[Windows 95]]) grâce à une astuce préservant la compatibilité : le système [[VFAT]]. Mais il ne permet l'accès aux noms longs qu'à l'intérieur de Windows 95. Les versions ultérieures de MS-DOS n'ont pas corrigé ce problème en raison de la prépondérance de Windows. VFAT permet aussi d'utiliser les lettres minuscules et les caractères [[unicode]] dans les noms de fichiers. FAT a évolué en différentes versions, toutes supportées par les dernières versions de MS-DOS et les versions actuelles de Windows, qui ont été rendues nécessaires par l'évolution des capacités de stockage des disques : * [[FAT12]] : maximum de 2<sup>12</sup>, soit 4&nbsp;096 [[cluster]]s de taille fixe (choisie au départ entre 512 octets et 4 ko). Utilisé entre autres sur les disquettes. * [[FAT16]] : maximum de 2<sup>16</sup>, soit 65&nbsp;536 clusters de taille fixe (choisie au départ entre 2 ko et 32 ko). * [[VFAT]] : Une évolution de la FAT, permettant de gérer les noms longs dans [[Windows 95]] et les versions suivantes. Il s'applique à toutes les versions de [[FAT]] ([[FAT12]], [[FAT16]], [[FAT32]]...). * [[FAT32]] : apparu avec Windows 95 OSR2 (Windows 95B), il supporte un maximum de 2<sup>28</sup> (268 millions) de clusters de taille variable de 4 Ko à 32 Ko, avec reprise du système [[VFAT]]. La taille des fichiers ne peut dépasser 4 Go. Malgré son manque de résistances aux pannes par rapport à ses concurrents, FAT reste en [[2008]] très utilisé, notamment sur les cartes mémoires pour appareils photo numériques en raison de la simplicité de son implémentation permettant l'utilisation dans des systèmes embarqués ainsi que la compatibilité assurée avec Windows et beaucoup d'autres systèmes d'exploitation. [[Microsoft]] a tenté en décembre [[2003]] de déposer un [[Brevet logiciel|brevet]] sur FAT, de façon à pouvoir percevoir des droits sur les licences qui auraient été accordées aux fabricants d'appareils électroniques. Mais la demande a été rejetée en septembre [[2004]]. Elle a cependant été validée en janvier [[2006]], après que [[Microsoft]] eut complété son argumentaire. Le système de fichier [[FAT]] peut-être considéré comme universel, en effet, les systèmes d'exploitation actuellement développés [[FreeDOS]], [[Windows]], [[ReactOS]], [[Linux]] reconnaissent ce système de fichiers, et permet ainsi l'échange de fichier entre systèmes d'exploitation. = Aspect technique = Le système de fichier FAT est composé de 3 grandes sections : # Le "secteur de ''boot''" ou "BPB". #: C'est le premier secteur du disque. # Les "tables d'allocation" ou "FATs". #: C'est une ''carte'' du disque. # Le "répertoire racine" ou "Root directory". #: C'est une liste des fichiers présents à la ''racine'' du disque. == Le BPB == === Structure === Le secteur de boot a le format suivant : {| class="wikitable" !width="5%"|Position (octets) !width="5%"|Taille (octets) !width="40%"|Description |- |align="right"|0 |align="right"|3 |Saut vers un programme qui va charger le système d'exploitation |- |align="right"|3 |align="right"|8 |Nom du programme qui a formaté le disque ("MSWIN4.1" par exemple). |- |align="right"|11 |align="right"|2 |Nombre d'octets par secteur (512, 1024, 2048 ou 4096). |- |align="right"|13 |align="right"|1 |Nombre de secteurs par cluster (1, 2, 4, 8, 16, 32, 64 ou 128). |- |align="right"|14 |align="right"|2 |Nombre de secteur réservé en comptant le secteur de boot (32 par défaut pour FAT32, 1 par défaut pour FAT12/16). |- |align="right"|16 |align="right"|1 |Nombre de FATs sur le disque (2 par défaut) |- |align="right"|17 |align="right"|2 |Taille du répertoire racine (0 par défaut pour FAT32). |- |align="right"|19 |align="right"|2 |Nombre total de secteur 16-bit (0 par défaut pour FAT32). |- |align="right"|21 |align="right"|1 |Type de disque (0xF8 pour les disques durs, 0xF0 pour les disquettes). |- |align="right"|22 |align="right"|2 |Taille d'une FAT en secteurs (0 par défaut pour FAT32). |- |align="right"|24 |align="right"|2 |Nombre de secteurs par piste. |- |align="right"|26 |align="right"|2 |Nombre de têtes. |- |align="right"|28 |align="right"|4 |Secteurs cachés (0 par défaut si le disque n'est pas partitionné). |- |align="right"|32 |align="right"|4 |Nombre total de secteurs 32-bit (Contient une valeur si le nombre total de secteurs 16-bits est égale à 0) |} Le tableau suivant explique la suite du BPB pour les disques FAT12/16 (pour le FAT32 voir plus bas) : {| class="wikitable" !width="5%"|Position (octets) !width="5%"|Taille (octets) !width="40%"|Description |- |align="right"|36 |align="right"|1 |Identifiant du disque (à partir de 0x00 pour les disques amovibles et à partir de 0x80 pour les disques fixes). |- |align="right"|37 |align="right"|1 |Réservé pour usage ultérieur. |- |align="right"|38 |align="right"|1 |Signature (0x29 par défaut). |- |align="right"|39 |align="right"|4 |Numéro de série du disque. |- |align="right"|43 |align="right"|11 |Nom du disque sur 11 caractères ('NO NAME' si pas de nom). |- |align="right"|54 |align="right"|8 |Type de système de fichiers (FAT, FAT12, FAT16). |} Le tableau suivant explique la suite du BPB pour les disques FAT32 (pour FAT12/16 voir plus haut) : {| class="wikitable" !width="5%"|Position (octets) !width="5%"|Taille (octets) !width="40%"|Description |- |align="right"|36 |align="right"|4 |Taille d'une FAT en secteur (remplace l'équivalent cité au-dessus) |- |align="right"|40 |align="right"|2 |Attributs du disque. |- |align="right"|42 |align="right"|1 |Version majeur du système de fichier (0 par défaut). |- |align="right"|43 |align="right"|1 |Version mineur du système de fichier (0 par défaut). |- |align="right"|44 |align="right"|4 |Numéro du premier cluster du répertoire racine. |- |align="right"|48 |align="right"|2 |Informations supplémentaire sur le système de fichier (1 par défaut). |- |align="right"|50 |align="right"|2 |Numéro de secteur de la copie du secteur de boot. |- |align="right"|52 |align="right"|12 |Réservé pour des ajouts ultérieur (0 par défaut). |- |align="right"|64 |align="right"|1 |Identifiant du disque (à partir de 0x00 pour les disques amovibles et à partir de 0x80 pour les disques fixes). |- |align="right"|65 |align="right"|1 |Réservé pour usage ultérieur. |- |align="right"|66 |align="right"|1 |Signature (0x29 par défaut). |- |align="right"|67 |align="right"|4 |Numéro de série du disque. |- |align="right"|71 |align="right"|11 |Nom du disque sur 11 caractères ('NO NAME' si pas de nom). |- |align="right"|82 |align="right"|8 |Type de système de fichiers (FAT32). |} === Exemple === Pas d'exemple. == FAT == === Cluster === Un ''cluster'' est un groupe de secteurs. Il sert d'unité d'allocation aux fichiers. Chaque cluster stocke donc les données d'un fichier. Pour un fichier de 9000 octets par exemple, sur un disque utilisant des clusters de 8192 octets (soit 16 secteurs de 512 octets), 2 clusters sont utilisés, dont le dernier n'utilise que 808 octets ( 9000 - 8192 ). === Structure === Une table d'allocation est une carte où chaque nombre représente un cluster. Cette table est un tableau de nombres, indexé par un numéro de cluster. Le tableau suivant donne les valeurs possibles pour ces nombres : {| class="wikitable" !width="5%"|FAT12 !width="10%"|FAT16 !width="5%"|FAT32 !width="20%"|Description |- |0x000 |0x0000 |0x?0000000 |Cluster vide |- |0x001 |0x0001 |0x?0000001 |Cluster réservé |- |0x002 - 0xFEF |0x0002 - 0xFFEF |0x?0000002 - 0x?FFFFFEF |Cluster utilisé, pointeur vers le cluster suivant du fichier |- |0xFF0 - 0xFF6 |0xFFF0 - 0xFFF6 |0x?FFFFFF0 - 0x?FFFFFF6 |Valeurs réservées |- |0xFF7 |0xFFF7 |0x?FFFFFF7 |"Mauvais cluster" |- |0xFF8 - 0xFFF |0xFFF8 - 0xFFFF |0x?FFFFFF8 - 0x?FFFFFFF |Cluster utilisé, dernier cluster d'un fichier |} === Exemple === {| class="wikitable" !width="8%"|''Numéro'' !width="4%"|Cluster 1 !width="4%"|Cluster 2 !width="4%"|Cluster 3 !width="4%"|Cluster 4 !width="4%"|Cluster 5 !width="4%"|Cluster 6 !width="4%"|Cluster 7 !width="4%"|Cluster X |- |align="center"|''La valeur...'' |0000 |0003 |0004 |0006 |0001 |0007 |FFFF |.... |- |align="center"|''...correspond à'' |Vide |Utilisé |Utilisé |Utilisé |Réservé |Utilisé |Utilisé |} '''Remarque :''' Dans cet exemple un fichier utilise, dans l'ordre, les clusters 2, 3, 4, 6 et 7. == Root Directory == === Structure === Le répertoire racine est une liste d'entrée. Les entrées du répertoire racine ont le format suivant : <!-- traduit de http://en.wikipedia.org/wiki/File_Allocation_Table --> {| class="wikitable" !width="5%"|Offset !width="5%"|Taille !width="40%"|Description |- |align="right"|0x00 |align="right"|8 |Nom du fichier (rempli par des espaces) Le premier octet peut avoir l'une des valeurs spéciales suivantes : {| class="wikitable" |0x00 |Entrée disponible, marque également la fin du répertoire |- |0x05 |Le nom de fichier commence en fait par le caractère ASCII 0xE5 (valeur réservée) |- |0x2E |Entrée '.' ou '..' |- |0xE5 |Entrée supprimée. Les outils de recourvrement de fichiers supprimés remplace ce caractère par un autre pour restituer le fichier supprimé. |} |- |align="right"|0x08 |align="right"|3 |Extension (rempli par des espaces) |- |align="right"|0x0b |align="right"|1 |Attributs du fichier : {| class="wikitable" !width="5%"|Bit !width="5%"|Masque !width="40%"|Description |- |0 |0x01 |Lecture seule |- |1 |0x02 |Fichier caché |- |2 |0x04 |Fichier système |- |3 |0x08 |Nom du volume |- |4 |0x10 |Sous-répertoire |- |5 |0x20 |Archive |- |6 |0x40 |Device (utilisé en interne, jamais sur disque) |- |7 |0x80 |Inutilisé |} La valeur d'attributs 0x0F est utilisé pour désigner un nom de fichier long. |- |align="right"|0x0c |align="right"|1 |Reservé, utilisé par NT |- |align="right"|0x0d |align="right"|1 |Heure de création: par unité de 10ms (0 à 199). |- |align="right"|0x0e |align="right"|2 |Heure de création : {| class="wikitable" !width="5%"|Bits !width="40%"|Description |- |15-11 |Heures (0-23) |- |10-5 |Minutes (0-59) |- |4-0 |Secondes/2 (0-29) |} |- |align="right"|0x10 |align="right"|2 |Date de création : {| class="wikitable" !width="5%"|Bits !width="40%"|Description |- |15-9 |Année - 1980 (0 = 1980, 127 = 2107) |- |8-5 |Mois (1 = Janvier, 12 = Décembre) |- |4-0 |Jour (1 - 31) |} |- |align="right"|0x12 |align="right"|2 |Date du dernier accès ; voir offset 0x10 pour la description. |- |align="right"|0x14 |align="right"|2 |Index EA (utilisé par [[OS/2]] et NT) pour FAT12 et FAT16 ; 2 octets de poids fort du numéro du premier cluster pour FAT32 |- |align="right"|0x16 |align="right"|2 |Heure de dernière modification ; voir offset 0x0e pour la description. |- |align="right"|0x18 |align="right"|2 |Date de dernière modification ; voir offset 0x10 pour la description. |- |align="right"|0x1a |align="right"|2 |Numéro du premier cluster du fichier (FAT12 et FAT16) ; 2 octets de poids faible de ce numéro (FAT32). |- |align="right"|0x1c |align="right"|4 |Taille du fichier |} Quand le fichier est un répertoire (voir bits attributs), le contenu est une structure identique au format précédent, et commence par les deux entrées '.' et '..'. = Voir aussi = == Articles connexes == * [[Système de fichier]] * [[FAT12]] * [[FAT16]] * [[FAT32]] * [[NTFS]] * [[FATX]] * [[exFAT]] == Lien externe == *{{en}}[http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/Default.asp?url=/resources/documentation/Windows/XP/all/reskit/en-us/prkc_fil_ryhg.asp FAT File System (MSDN)] == Bibliographie == [[Catégorie:DOS]] [[Catégorie:Système de fichiers|FAT]] {{Lien BA|zh}} [[ar:جدول توزيع الملف]] [[ca:File Allocation Table]] [[cs:File Allocation Table]] [[da:FAT]] [[de:File Allocation Table]] [[el:File Allocation Table]] [[en:File Allocation Table]] [[eo:FAT]] [[es:Tabla de Asignación de Archivos]] [[eu:FAT]] [[fa:جدول تخصیص فایل]] [[fi:FAT]] [[gl:FAT]] [[he:File Allocation Table]] [[id:FAT]] [[it:File Allocation Table]] [[ja:File Allocation Table]] [[ko:파일 할당 테이블]] [[lt:FAT]] [[nl:File Allocation Table]] [[pl:File Allocation Table]] [[pt:FAT]] [[ro:File Allocation Table]] [[ru:File Allocation Table]] [[sk:File Allocation Table]] [[sv:FAT]] [[tr:Dosya Yerleşim Tablosu]] [[vi:FAT]] [[zh:FAT]]