Articulo de referencia

Diseño del sistema de archivos FAT

FAT12 (12-bit version), FAT16 (16-bit versions), FAT32 (32-bit version with 28 bits used), exFAT (64-bit versions)"},"introduction_date":{"wt":"1977 ([[...

El sistema de archivos FAT es un sistema de archivos utilizado en los sistemas operativos MS-DOS y la familia Windows 9x . [ 3 ] Continúa utilizándose en dispositivos móviles y sistemas embebidos , por lo que es un sistema de archivos muy adecuado para el intercambio de datos entre ordenadores y dispositivos de casi cualquier tipo y antigüedad desde 1981 hasta la actualidad.

Estructura

Un sistema de archivos FAT se compone de cuatro regiones:

FAT utiliza el formato little-endian para todas las entradas en el encabezado (excepto, donde se menciona explícitamente, algunas entradas en los sectores de arranque de Atari ST) y las FAT. [ 5 ] Es posible asignar más sectores FAT de los necesarios para el número de clústeres. El final del último sector de cada copia FAT puede quedar sin usar si no hay clústeres correspondientes. El número total de sectores (como se indica en el registro de arranque) puede ser mayor que el número de sectores utilizados por los datos (clústeres × sectores por clúster), las FAT (número de FAT × sectores por FAT), el directorio raíz (n/a para FAT32) y los sectores ocultos, incluido el sector de arranque: esto daría como resultado sectores sin usar al final del volumen. Si una partición contiene más sectores que el número total de sectores ocupados por el sistema de archivos, también daría como resultado sectores sin usar, al final de la partición, después del volumen.

Área de sectores reservados

Sector de arranque

En dispositivos de almacenamiento no particionados , como los disquetes , el sector de arranque ( VBR ) es el primer sector (sector lógico 0 con dirección física CHS 0/0/1 o dirección LBA 0). En dispositivos de almacenamiento particionados, como los discos duros, el sector de arranque es el primer sector de una partición, tal como se especifica en la tabla de particiones del dispositivo.

Bloque de parámetros del BIOS

DOS 3.0 BPB:

Las siguientes extensiones se documentaron desde DOS 3.0, sin embargo, ya eran compatibles con algunos problemas de DOS 2.11. [ 28 ] MS-DOS 3.10 aún era compatible con el formato DOS 2.0, pero también podía usar el formato DOS 3.0.

DOS 3.2 BPB:

Oficialmente, MS-DOS 3.20 seguía utilizando el formato de DOS 3.0, pero SYSse FORMATadaptaron para admitir un formato 6 bytes más largo (del cual no se utilizaron todas las entradas).

DOS 3.31 BPB:

Introducido oficialmente con DOS 3.31 y no utilizado por DOS 3.2, algunas utilidades de DOS 3.2 fueron diseñadas para reconocer este nuevo formato. La documentación oficial recomienda confiar en estos valores solo si la entrada de sectores lógicos en el desplazamiento 0x013 es cero .

Una fórmula simple traduce el número de clúster dado de un volumen CNa un número de sector lógico LSN: [ 24 ] [ 25 ] [ 26 ]

  1. Determinar (una vez) dónde se almacena el recuento de sectores reservados en el desplazamiento 0x00E , el número de FAT en el desplazamiento 0x010 , los sectores por FAT en el desplazamiento 0x016 (FAT12/FAT16) o 0x024 (FAT32), las entradas del directorio raíz en el desplazamiento 0x011 , el tamaño del sector en el desplazamiento 0x00B y redondear al número entero más cercano.SSA=RSC+FN×SF+ceil((32×RDE)/SS)RSCFNSFRDESSceil(x)
  2. Determinar dónde se almacenan los sectores por clúster en el desplazamiento 0x00D .LSN=SSA+(CN−2)×SCSC

En medios no particionados, el número de sectores ocultos del volumen es cero y, por lo tanto, LSNlas LBAdirecciones se vuelven iguales siempre que el tamaño del sector lógico de un volumen sea idéntico al tamaño del sector físico del medio subyacente. En estas condiciones, también es sencillo traducir entre CHSdirecciones y LSNstambién:

LSN=SPT×(HN+(NOS×TN))+SN−1donde los sectores por pista SPTse almacenan en el desplazamiento 0x018 y el número de lados en el desplazamiento 0x01A . El número de pista , el número de cabezal y el número de sector corresponden al sector de cabezal de cilindro : la fórmula proporciona la traducción conocida de CHS a LBA .NOSTNHNSN

Bloque de parámetros extendidos del BIOS

Estructura adicional utilizada por FAT12 y FAT16 desde OS/2 1.0 y DOS 4.0, también conocida como Bloque de Parámetros BIOS Extendido (EBPB) (los bytes por debajo del desplazamiento de sector 0x024 son los mismos que para el BPB de DOS 3.31):

Bloque de parámetros BIOS extendido FAT32

En esencia, FAT32 inserta 28 bytes en el EBPB, seguidos de los 26 (o a veces solo 7) bytes restantes del EBPB , como se muestra arriba para FAT12 y FAT16. Los sistemas operativos de Microsoft e IBM determinan el tipo de sistema de archivos FAT utilizado en un volumen únicamente por el número de clústeres, no por el formato BPB utilizado o el tipo de sistema de archivos indicado, es decir, es técnicamente posible utilizar un "EBPB FAT32" también para volúmenes FAT12 y FAT16, así como un EBPB DOS 4.0 para pequeños volúmenes FAT32. Dado que se descubrió que tales volúmenes eran creados por sistemas operativos Windows en algunas condiciones extrañas, [ nb 7 ] los sistemas operativos deberían estar preparados para manejar estas formas híbridas.

Excepciones

Las versiones de DOS anteriores a la 3.2 dependían total o parcialmente del byte descriptor del medio en el BPB o del byte de ID de FAT en el clúster 0 de la primera FAT para determinar los formatos de disquete FAT12, incluso si había un BPB presente. Dependiendo del ID de FAT encontrado y del tipo de unidad detectado, utilizaban por defecto uno de los siguientes prototipos de BPB en lugar de los valores almacenados realmente en el BPB. [ nb 1 ]

Originalmente, el FAT ID estaba pensado para ser un indicador de bits con todos los bits activados excepto el bit 2 desactivado para indicar un formato de 80 pistas (frente a 40 pistas), el bit 1 desactivado para indicar un formato de 9 sectores (frente a 8 sectores) y el bit 0 desactivado para indicar un formato de una sola cara (frente a doble cara), [ 7 ] pero este esquema no fue seguido por todos los fabricantes de equipos originales y quedó obsoleto con la introducción de los discos duros y los formatos de alta densidad. Además, los diversos formatos de 8 pulgadas compatibles con 86-DOS y MS-DOS no se ajustan a este esquema.

Microsoft recomienda distinguir entre los dos formatos de 8 pulgadas para FAT ID 0xFE intentando leer una marca de dirección de densidad simple. Si esto produce un error, el medio debe ser de doble densidad. [ 23 ]

La tabla no incluye una serie de formatos de disquete FAT12 incompatibles de 8 y 5,25 pulgadas compatibles con 86-DOS , que difieren en el tamaño de las entradas del directorio (16 bytes frente a 32 bytes) o en la extensión del área de sectores reservados (varias pistas completas frente a un solo sector lógico).

La implementación de un formato FAT12 de una sola cara de 315 KB utilizado en MS-DOS para Apricot PC y F1e [ 34 ] tenía una disposición diferente del sector de arranque, para adaptarse a la BIOS no compatible con IBM de ese ordenador. Se omitieron la instrucción de salto y el nombre del fabricante, y los parámetros BPB de MS-DOS (desplazamientos 0x00B - 0x017 en el sector de arranque estándar) se ubicaron en el desplazamiento 0x050 . Los portátiles , F1 , PC duo y Xi FD admitían un formato FAT12 de doble cara no estándar de 720 KB. [ 34 ] Las diferencias en la disposición del sector de arranque y los identificadores de medios hicieron que estos formatos fueran incompatibles con muchos otros sistemas operativos. Los parámetros geométricos para estos formatos son:

  • 315 KB: Bytes por sector lógico: 512 bytes, sectores lógicos por clúster: 1, sectores lógicos reservados: 1, número de FAT: 2, entradas del directorio raíz: 128, total de sectores lógicos: 630, ID de FAT: 0xFC , sectores lógicos por FAT: 2, sectores físicos por pista: 9, número de cabezales: 1. [ 34 ] [ 35 ]
  • 720 KB: Bytes por sector lógico: 512 bytes, sectores lógicos por clúster: 2, sectores lógicos reservados: 1, número de FAT: 2, entradas del directorio raíz: 176, total de sectores lógicos: 1440, ID de FAT: 0xFE , sectores lógicos por FAT: 3, sectores físicos por pista: 9, número de cabezales: 2. [ 34 ]

Las versiones posteriores de Apricot MS-DOS adquirieron la capacidad de leer y escribir discos con el sector de arranque estándar, además de aquellos con el sector de arranque de Apricot. Estos formatos también eran compatibles con DOS Plus 2.1e/g para la serie Apricot ACT.

La adaptación DOS Plus para el BBC Master 512 admitía dos formatos FAT12 en unidades de 5,25" de doble cara y doble densidad con 80 pistas, que no utilizaban sectores de arranque convencionales. Los discos de datos de 800 KB omitían un sector de arranque y comenzaban con una sola copia de la FAT. [ 35 ] El primer byte de la FAT reubicada en el sector lógico 0 se utilizaba para determinar la capacidad del disco. Los discos de arranque de 640 KB comenzaban con un sistema de archivos ADFS en miniatura que contenía el cargador de arranque, seguido de una sola FAT. [ 35 ] [ 36 ] Además, el formato de 640 KB se diferenciaba por utilizar números de sector CHS físicos que comenzaban con 0 (no con 1, como es habitual) e incrementaban los sectores en el orden sector-pista-cabezal (no sector-cabezal-pista, como es habitual). [ 36 ] La FAT comenzaba al principio de la siguiente pista. Estas diferencias hacen que estos formatos sean irreconocibles para otros sistemas operativos. Los parámetros geométricos para estos formatos son:

  • 800 KB: Bytes por sector lógico: 1024 bytes, sectores lógicos por clúster: 1, sectores lógicos reservados: 0, número de FAT: 1, entradas del directorio raíz: 192 , total de sectores lógicos: 800, ID de FAT: 0xFD , sectores lógicos por FAT: 2, sectores físicos por pista: 5, número de cabezales: 2. [ 35 ] [ 36 ]
  • 640 KB: Bytes por sector lógico: 256 bytes, sectores lógicos por clúster: 8, sectores lógicos reservados: 16 , número de FAT: 1, entradas del directorio raíz: 112, total de sectores lógicos: 2560, ID de FAT: 0xFF , sectores lógicos por FAT: 2, sectores físicos por pista: 16, número de cabezales: 2. [ 35 ] [ 36 ]

DOS Plus para el Master 512 también podía acceder a discos de PC estándar formateados a 180 KB o 360 KB , utilizando el primer byte de la FAT en el sector lógico 1 para determinar la capacidad.

El DEC Rainbow 100 (todas las variantes) admitía un formato FAT12 en unidades de 5,25" de 80 pistas, de una sola cara y densidad cuádruple. Las dos primeras pistas estaban reservadas para el cargador de arranque, pero no contenían un MBR ni un BPB (MS-DOS utilizaba un BPB estático en memoria). El sector de arranque (pista 0, cara 0, sector 1) era código Z80 que comenzaba con DI 0xF3 . El Z80 cargaba el bootstrap 8088. La pista 1, cara 0, sector 2 comienza con el byte de ID de medio/FAT 0xFA . Los discos sin formato utilizan 0xE5 en su lugar. El sistema de archivos comienza en la pista 2, cara 0, sector 1. Hay 2 copias de la FAT y 96 entradas en el directorio raíz. Además, hay una asignación de pistas físicas a lógicas para efectuar un entrelazado de sectores 2:1. Los discos se formateaban con los sectores físicos en orden numerado. del 1 al 10 en cada pista después de las pistas reservadas, pero los sectores lógicos del 1 al 10 se almacenaron en los sectores físicos 1, 6, 2, 7, 3, 8, 4, 9, 5, 10. [ 37 ]

Sector de información de FS

El "Sector de Información del Sistema de Archivos" se introdujo en FAT32 [ 38 ] para acelerar los tiempos de acceso de ciertas operaciones (en particular, la obtención de la cantidad de espacio libre). Se encuentra en un número de sector lógico especificado en el registro de arranque EBPB de FAT32 en la posición 0x030 (normalmente el sector lógico 1, inmediatamente después del propio registro de arranque).

Los datos del sector pueden estar desactualizados y no reflejar el contenido actual del medio, ya que no todos los sistemas operativos actualizan o utilizan este sector, e incluso si lo hacen, el contenido no es válido cuando el medio se ha expulsado sin desmontar correctamente el volumen o después de un fallo de alimentación. Por lo tanto, los sistemas operativos deben inspeccionar primero los indicadores de estado de apagado opcionales de un volumen que residen en la entrada FAT del clúster 1 o el EBPB FAT32 en el desplazamiento 0x041 e ignorar los datos almacenados en el sector de información FS, si estos indicadores de estado de apagado indican que el volumen no se desmontó correctamente antes. Esto no causa ningún problema más allá de una posible penalización de velocidad para la primera consulta de espacio libre o asignación de clúster de datos; consulte fragmentación .

Si este sector está presente en un volumen FAT32, el tamaño mínimo permitido del sector lógico es de 512  bytes, mientras que de lo contrario sería de 128  bytes. Algunas implementaciones de FAT32 admiten una ligera variación de la especificación de Microsoft al hacer que el sector de información del sistema de archivos sea opcional al especificar un valor de 0xFFFF [ 19 ] (o 0x0000 ) en la entrada en el desplazamiento 0x030 .

región GRASA

Tabla de asignación de archivos

Mapa de clústeres

El área de datos de un volumen se divide en clústeres de tamaño idéntico : pequeños bloques de espacio contiguo. El tamaño de los clústeres varía según el tipo de sistema de archivos FAT utilizado y el tamaño de la unidad; los tamaños típicos de los clústeres oscilan entre 2 y 32 KiB . [ 39 ]

Each file may occupy one or more clusters depending on its size. Thus, a file is represented in the FAT by a singly linked list. The FAT is made up of entries that are 12, 16, or 32 bits long, depending on whether it's FAT12, FAT16, or FAT32. The consecutive entries correspond to consecutive clusters, and the value of the entry is a link telling what the next cluster in the particular file is. Looking at the entry corresponding to that cluster tells where the next one is, and so on, until there's an entry that indicates that it corresponds to the last cluster in the cluster chain holding that file. The clusters are not necessarily adjacent to one another on the disk's surface but are often instead fragmented throughout the Data Region.

Each version of the FAT file system uses a different size for FAT entries. Smaller numbers result in a smaller FAT, but waste space in large partitions by needing to allocate in large clusters.

The FAT12 file system uses 12 bits per FAT entry, thus two entries span 3 bytes. It is consistently little-endian: if those three bytes are considered as one little-endian 24-bit number, the 12 least significant bits represent the first entry (e.g. cluster 0) and the 12 most significant bits the second (e.g. cluster 1). In other words, while the low eight bits of the first cluster in the row are stored in the first byte, the top four bits are stored in the low nibble of the second byte, whereas the low four bits of the subsequent cluster in the row are stored in the high nibble of the second byte and its higher eight bits in the third byte.

  • FAT ID / endianness marker (in reserved cluster #0), with 0xF0 indicating a volume on a non-partitioned superfloppy drive (must be 0xF8 for partitioned disks)
  • End of chain indicator / maintenance flags (in reserved cluster #1)
  • Second chain (7 clusters) for a non-fragmented file (here: #2, #3, #4, #5, #6, #7, #8)
  • Third chain (7 clusters) for a fragmented, possibly grown file (here: #9, #A, #14, #15, #16, #19, #1A)
  • Fourth chain (7 clusters) for a non-fragmented, possibly truncated file (here: #B, #C, #D, #E, #F, #10, #11)
  • Empty clusters (here: #12, #1B, #1C, #1E, #1F)
  • Fifth chain (1 cluster) for a sub-directory (here: #13)
  • Bad clusters (3 clusters) (here: #17, #18, #1D)

The FAT16 file system uses 16 bits per FAT entry, thus one entry spans two bytes in little-endian byte order:

El sistema de archivos FAT32 utiliza 32 bits por entrada FAT, por lo que cada entrada ocupa cuatro bytes en orden little-endian. Los cuatro bits superiores de cada entrada están reservados para otros fines; se borran durante el formateo y no deben modificarse de otro modo. Deben enmascararse antes de interpretar la entrada como una dirección de clúster de 28 bits.

  • Primera cadena (1 clúster) para el directorio raíz, apuntada por una entrada en el BPB de FAT32 (aquí: #2)
  • Segunda cadena (6 clústeres) para un archivo no fragmentado (aquí: #3, #4, #5, #6, #7, #8)

La tabla de asignación de archivos ( FAT ) es una serie contigua de sectores que siguen inmediatamente al área de sectores reservados. Representa una lista de entradas que se asignan a cada clúster del volumen. Cada entrada registra una de cuatro cosas:

  • el número de clúster del siguiente clúster en una cadena
  • una entrada especial de fin de cadena de clúster ( EOC ) que indica el final de una cadena
  • una entrada especial para marcar un grupo malo
  • un cero para indicar que el clúster no está en uso.

Para que las primeras versiones de DOS reconozcan el sistema de archivos, este debe haber arrancado desde el volumen o la FAT del volumen debe comenzar con el segundo sector del volumen (sector lógico 1 con dirección física CHS 0/0/2 o dirección LBA 1), es decir, inmediatamente después del sector de arranque. Los sistemas operativos asumen esta ubicación fija de la FAT para encontrar el ID de la FAT en la entrada del clúster 0 de la FAT en los disquetes FAT de DOS 1.0-1.1, donde no se encuentra ningún BPB válido.

Entradas especiales

Las dos primeras entradas en una tienda FAT tienen valores especiales:

La primera entrada (clúster 0 en la FAT) contiene el ID de la FAT desde MS-DOS 1.20 y PC DOS 1.1 (valores permitidos 0xF0 - 0xFF con 0xF1 - 0xF7 reservados) en los bits 7-0, que también se copia en el BPB del sector de arranque, desplazamiento 0x015 desde DOS 2.0. Los 4 bits restantes (si es FAT12), 8 bits (si es FAT16) o 20 bits (si es FAT32, los 4 bits MSB son cero) de esta entrada siempre son 1. Estos valores se dispusieron de manera que la entrada también funcionara como un marcador de fin de cadena "capturar todo" para todos los clústeres de datos que contengan un valor de cero. Además, para los ID de FAT distintos de 0xFF (y 0x00 ) es posible determinar el orden correcto de nibble y byte que debe usar el controlador del sistema de archivos; sin embargo, el sistema de archivos FAT usa oficialmente solo una representación little-endian y no se conocen implementaciones de variantes que usen valores big-endian . 86-DOS 0.42 hasta MS-DOS 1.14 usaban perfiles de unidad cableados en lugar de un ID de FAT, pero usaban este byte para distinguir entre medios formateados con entradas de directorio de 32 o 16 bytes, como se usaban antes de 86-DOS 0.42.

La segunda entrada (clúster 1 en la FAT) almacena nominalmente el marcador de fin de cadena de clúster utilizado por el formateador, pero normalmente siempre contiene 0xFFF / 0xFFFF / 0x0FFFFFFF ; es decir, con la excepción de los bits 31-28 en los volúmenes FAT32, estos bits normalmente siempre están activados. Sin embargo, algunos sistemas operativos de Microsoft activan estos bits si el volumen no es el que contiene el sistema operativo en ejecución (es decir, utilizan 0xFFFFFFFF en lugar de 0x0FFFFFFF ). [ 40 ] (En conjunto con marcadores de fin de cadena alternativos, los bits más bajos 2-0 pueden convertirse en cero para el marcador de fin de cadena permitido más bajo 0xFF8 / 0xFFF8 / 0x?FFFFFF8 ; el bit 3 también debe reservarse dado que los clústeres 0xFF0 / 0xFFF0 / 0x?FFFFFF0 y superiores están oficialmente reservados. Algunos sistemas operativos pueden no poder montar algunos volúmenes si alguno de estos bits no está configurado, por lo tanto, el marcador de fin de cadena predeterminado no debe cambiarse ). Para DOS 1 y 2, la entrada se documentó como reservada para uso futuro.

Desde DOS 7.1, los dos bits más significativos de esta entrada de clúster pueden contener dos indicadores de bits opcionales que representan el estado actual del volumen en FAT16 y FAT32, pero no en volúmenes FAT12. Estos indicadores de bits no son compatibles con todos los sistemas operativos, pero los sistemas operativos que admiten esta función establecerían estos bits al apagar y borrarían el bit más significativo al iniciar: Si el bit 15 (en FAT16) o el bit 27 (en FAT32) [ 41 ] no está establecido al montar el volumen, el volumen no se desmontó correctamente antes del apagado o la expulsión y, por lo tanto, se encuentra en un estado desconocido y posiblemente "sucio". [ 27 ] En volúmenes FAT32, el sector de información del sistema de archivos puede contener datos obsoletos y, por lo tanto, no debe utilizarse. El sistema operativo normalmente ejecutaría SCANDISK o CHKDSK en el siguiente inicio [ nb 10 ] [ 41 ] (pero no al insertar medios extraíbles ) para garantizar y posiblemente restablecer la integridad del volumen. Si el bit 14 (en FAT16) o el bit 26 (en FAT32) [ 41 ] está desactivado, el sistema operativo ha encontrado errores de E/S de disco al arrancar, [ 41 ] una posible indicación de sectores defectuosos. Los sistemas operativos que conocen esta extensión lo interpretarán como una recomendación para realizar un escaneo de superficie ( SCANDISK ) en el siguiente arranque. [ 27 ] [ 41 ] (Existe un conjunto similar de indicadores de bits en el EBPB de FAT12/FAT16 en el desplazamiento 0x1A o en el EBPB de FAT32 en el desplazamiento 0x36 . Si bien los controladores del sistema de archivos pueden acceder a la entrada del clúster 1 una vez que han montado el volumen, la entrada del EBPB está disponible incluso cuando el volumen no está montado y, por lo tanto, es más fácil de usar para los controladores de dispositivos de bloques de disco o las herramientas de particionamiento).

Si el número de FAT en el BPB no está configurado en 2 , la segunda entrada del clúster en la primera FAT (clúster 1) también puede reflejar el estado de un volumen TFAT para sistemas operativos compatibles con TFAT. Si la entrada del clúster 1 en esa FAT tiene el valor 0, esto puede indicar que la segunda FAT representa el último estado de transacción válido conocido y debe copiarse sobre la primera FAT, mientras que la primera FAT debe copiarse sobre la segunda FAT si todos los bits están activados.

Algunas implementaciones no estándar de FAT12/FAT16 utilizan la entrada del clúster 1 para almacenar el clúster inicial de un directorio raíz de tamaño variable (normalmente 2 [ 33 ] ). Esto puede ocurrir cuando el número de entradas del directorio raíz en el BPB tiene un valor de 0 y no se encuentra ningún EBPB de FAT32 (sin firma 0x29 o 0x28 en el desplazamiento 0x042 ). [ 20 ] Sin embargo, esta extensión no es compatible con los sistemas operativos convencionales, [ 20 ] ya que entra en conflicto con otros posibles usos de la entrada del clúster 1. La mayoría de los conflictos pueden descartarse si esta extensión solo se permite para volúmenes FAT12 con menos de 0xFEF y FAT16 con menos de 0x3FEF clústeres y 2 FAT.

Debido a que estas dos primeras entradas FAT almacenan valores especiales, no hay clústeres de datos 0 o 1. El primer clúster de datos (después del directorio raíz si FAT12/FAT16) es el clúster 2, [ 33 ] que marca el comienzo del área de datos.

Valores de clúster

Valores de entrada FAT:

FAT32 utiliza 28 bits para los números de clúster. Los 4 bits restantes en la entrada FAT de 32 bits suelen ser cero, pero están reservados y deben dejarse intactos. Un controlador o herramienta de mantenimiento de sistema de archivos FAT32 estándar no debe depender de que los 4 bits superiores sean cero y debe eliminarlos antes de evaluar el número de clúster para poder gestionar posibles expansiones futuras donde estos bits podrían utilizarse para otros fines. El controlador del sistema de archivos no debe borrarlos al asignar nuevos clústeres, pero sí debe borrarlos durante un formateo.

Región del directorio raíz

La tabla del directorio raíz en los sistemas de archivos FAT12 y FAT16 ocupa la ubicación especial de la Región del Directorio Raíz .

Región de datos

A excepción de la tabla del directorio raíz en los sistemas de archivos FAT12 y FAT16, que ocupa la ubicación especial de la Región del Directorio Raíz , todas las tablas de directorios se almacenan en la región de datos. El número real de entradas en un directorio almacenado en la región de datos puede aumentar añadiendo otro clúster a la cadena en la FAT.

Tabla de directorio

Una tabla de directorio es un tipo especial de archivo que representa un directorio (también conocido como carpeta). Desde 86-DOS 0.42 , [ 46 ] cada archivo o (desde MS-DOS 1.40 y PC  DOS 2.0) subdirectorio almacenado en él está representado por una entrada de 32 bytes en la tabla. Cada entrada registra el nombre, la extensión, los atributos ( archivo , directorio, oculto, solo lectura, sistema y volumen ), la dirección del primer clúster de los datos del archivo/directorio, el tamaño del archivo/directorio y la fecha [ 46 ] y (desde PC  DOS 1.1) también la hora de la última modificación. Las versiones anteriores de 86-DOS solo usaban entradas de directorio de 16 bytes, sin admitir archivos mayores de 16 MB ni hora de la última modificación. [ 46 ]

El sistema de archivos FAT en sí no impone ningún límite a la profundidad de un árbol de subdirectorios mientras haya clústeres libres disponibles para asignar los subdirectorios, sin embargo, la Estructura de Directorio Actual (CDS) interna en MS-DOS/PC  DOS limita la ruta absoluta de un directorio a 66 caracteres (incluida la letra de la unidad, pero excluyendo el delimitador de byte NUL), [ 24 ] [ 25 ] [ 26 ] limitando así la profundidad máxima admitida de subdirectorios a 32 , lo que ocurra primero. Concurrent DOS, Multiuser  DOS y DR  DOS  3.31 a 6.0 (hasta incluidas las actualizaciones de 1992-11) no almacenan rutas absolutas a directorios de trabajo internamente y por lo tanto no muestran esta limitación. [ 47 ] Lo mismo se aplica a Atari GEMDOS, pero Atari Desktop no admite más de 8 niveles de subdirectorios. La mayoría de las aplicaciones que conocen esta extensión admiten rutas de hasta al menos 127  bytes. FlexOS, 4680  OS y 4690 OS también  admiten una longitud de hasta 127 bytes, lo que permite profundidades de hasta 60 niveles. [ 48 ] PalmDOS, DR DOS 6.0 (desde BDOS 7.1) y superior, Novell DOS y OpenDOS cuentan con un CDS compatible con MS-DOS y, por lo tanto, tienen los mismos límites de longitud que MS-DOS/PC DOS.      

Cada entrada puede ir precedida de "entradas falsas" para admitir un nombre de archivo largo (LFN) de VFAT; véase más abajo.

Los caracteres válidos para nombres de archivo cortos de DOS incluyen los siguientes:

  • Letras mayúsculas AZ
  • Números 09
  • Espacio (aunque los espacios finales en el nombre base o la extensión se consideran relleno y no parte del nombre del archivo; además, los nombres de archivo con espacios no se podían usar fácilmente en la línea de comandos de DOS antes de Windows  95 debido a la falta de un sistema de escape adecuado ). Otra excepción son los comandos internos MKDIR/ MDy RMDIR/ RDen DR-DOS que aceptan argumentos únicos y, por lo tanto, permiten ingresar espacios.
  • ! # $ % & ' ( ) - @ ^ _ ` { } ~
  • Caracteres 128–228
  • Caracteres 230–255

Esto excluye los siguientes caracteres ASCII :

  • " * / : < > ? \ | Windows/MS-DOS no tiene carácter de escape de shell.
  • + , . ; = [ ]Solo se permite en nombres de archivo largos.
  • Letras minúsculas azAlmacenadas como AZ; permitidas en nombres de archivo largos
  • Caracteres de control 0–31
  • Carácter 127 (DEL)

El carácter 229 ( 0xE5 ) no estaba permitido como primer carácter en un nombre de archivo en DOS 1 y 2 debido a su uso como marcador de entrada libre. Se añadió un caso especial para sortear esta limitación en DOS 3.0 y versiones posteriores.

Los siguientes caracteres adicionales están permitidos en GEMDOS de Atari, pero deben evitarse para garantizar la compatibilidad con MS-DOS/PC  DOS:

  • " + , ; < = > [ ] |

;Se debe evitar el punto y coma ( ) en los nombres de archivo en DR  DOS 3.31 y versiones posteriores, PalmDOS, Novell  DOS, OpenDOS, Concurrent  DOS , Multiuser  DOS, System  Manager y REAL/32 , ya que puede entrar en conflicto con la sintaxis para especificar contraseñas de archivos y directorios: " ...\DIRSPEC.EXT;DIRPWD\FILESPEC.EXT;FILEPWD". El sistema operativo eliminará un [ 47 ] (y también dos , desde DR-DOS 7.02) punto y coma y las contraseñas pendientes de los nombres de archivo antes de almacenarlos en el disco. (El procesador de comandos 4DOS usa punto y coma para las listas de inclusión y requiere que el punto y coma se duplique para los archivos protegidos con contraseña con cualquier comando que admita comodines. [ 47 ] )

El carácter arroba ( @) se utiliza para listas de archivos en muchos comandos de DR-DOS, PalmDOS, Novell DOS, OpenDOS y Multiuser DOS, System Manager y REAL/32, así como en 4DOS, y por lo tanto, a veces puede ser difícil de usar en nombres de archivo. [ 47 ]

En Multiuser DOS y REAL/32, el signo de exclamación (!) no es un carácter válido para nombres de archivo, ya que se utiliza para separar varios comandos en una sola línea de comandos. [ 47 ]

En los sistemas operativos IBM 4680  y 4690  , los siguientes caracteres no están permitidos en los nombres de archivo:

  • ? * : . ; , [ ] ! + = < > " - / \ |

Además, los siguientes caracteres especiales no están permitidos en el primer, cuarto, quinto y octavo carácter de un nombre de archivo, ya que entran en conflicto con los nombres de archivo del procesador de comandos del host (HCP) y de la tabla de secuencias de entrada:

  • @ # ( ) { } $ &

Los nombres de archivo de DOS están en el conjunto de caracteres OEM actual : esto puede tener efectos sorprendentes si los caracteres que se manejan de una manera para una página de códigos determinada se interpretan de manera diferente para otra página de códigos (comando de DOS CHCP) con respecto a mayúsculas y minúsculas, ordenación o validez como carácter de nombre de archivo.

Entrada de directorio

Antes de que Microsoft añadiera compatibilidad con nombres de archivo largos y marcas de tiempo de creación/acceso, otros sistemas operativos utilizaban los bytes 0x0C a 0x15 de la entrada del directorio para almacenar metadatos adicionales; en particular, los sistemas operativos de la familia Digital Research almacenaban allí contraseñas de archivos, derechos de acceso, identificadores de propietario y datos de eliminación de archivos. Si bien las extensiones más recientes de Microsoft no son totalmente compatibles con estas extensiones de forma predeterminada, la mayoría de ellas pueden coexistir en implementaciones FAT de terceros (al menos en volúmenes FAT12 y FAT16).

Las entradas de directorio de 32 bytes, tanto en la región del directorio raíz como en los subdirectorios, tienen el siguiente formato (véase también 8.3 nombre de archivo ):

Los sistemas operativos basados ​​en FlexOS , IBM 4680 OS e IBM 4690 OS, admiten atributos de distribución únicos almacenados en algunos bits de las áreas previamente reservadas en las entradas del directorio: [ 62 ]

  1. Local: No distribuya el archivo, manténgalo solo en el controlador local. [ nb 15 ]
  2. Duplicar el archivo al actualizar: Distribuir el archivo al servidor solo cuando se haya actualizado.
  3. Replicar el archivo al cerrarlo: Distribuir el archivo al servidor solo cuando se haya cerrado.
  4. Compuesto de archivos al actualizar: Distribuir el archivo a todos los controladores cuando se actualice.
  5. Componer archivo al cerrar: Distribuir el archivo a todos los controladores cuando se cierre el archivo. [ 63 ]

Algunas extensiones incompatibles que se encuentran en algunos sistemas operativos incluyen:

Límites de tamaño

Las variantes FAT12, FAT16, FAT16B y FAT32 de los sistemas de archivos FAT tienen límites claros basados ​​en el número de clústeres y el número de sectores por clúster (1, 2, 4, ..., 128). Para el valor típico de 512 bytes por sector:

Requisitos de FAT12  : 3 sectores en cada copia de FAT por cada 1024 clústeres Requisitos de FAT16  : 1 sector en cada copia de FAT por cada 256 clústeres Requisitos de FAT32  : 1 sector en cada copia de FAT por cada 128 clústeres Rango de FAT12  : 1 a 4084 clústeres  : 1 a 12 sectores por copia de FAT Rango de FAT16  : 4085 a 65524 clústeres  : 16 a 256 sectores por copia de FAT Rango de FAT32  : 65525 a 268435444 clústeres  : 512 a 2097152 sectores por copia de FAT Mínimo de FAT12  : 1 sector por clúster × 1 clúster = 512 bytes (0,5 KiB) Mínimo de FAT16  : 1 sector por clúster × 4.085 clústeres = 2.091.520 bytes (2.042,5 KB) FAT32 mínimo  : 1 sector por clúster × 65.525 clústeres = 33.548.800 bytes (32.762,5 KB) FAT12 máximo  : 64 sectores por clúster × 4.084 clústeres = 133.824.512 bytes (≈ 127 MB) [FAT12 máximo  : 128 sectores por clúster × 4.084 clústeres = 267.694.024 bytes (≈ 255 MB)] FAT16 máximo  : 64 sectores por clúster × 65.524 clústeres = 2.147.090.432 bytes (≈2.047 MB) [FAT16 máximo  : 128 sectores por clúster × 65.524 clústeres = 4.294.180.864 bytes (≈4.095 MB)] Máximo FAT32  : 8 sectores por clúster × 268.435.444 clústeres = 1.099.511.578.624 bytes (≈1.024 GB) Máximo FAT32  : 16 sectores por clúster × 268.173.557 clústeres = 2.196.877.778.944 bytes (≈2.046 GB) [Máximo FAT32  : 32 sectores por clúster × 134.152.181 clústeres = 2.197.949.333.504 bytes (≈2.047 GB)] [Máximo FAT32  : 64 [sectores por clúster × 67.092.469 clústeres = 2.198.486.024.192 bytes (≈2.047 GB)] [FAT32 máximo  : 128 sectores por clúster × 33.550.325 clústeres = 2.198.754.099.200 bytes (≈2.047 GB)]

Legend: 268435444+3 is 0x0FFFFFF7, because FAT32 version 0 uses only 28 bits in the 32-bit cluster numbers, cluster numbers 0x0FFFFFF7 up to 0x0FFFFFFF flag bad clusters or the end of a file, cluster number 0 flags a free cluster, and cluster number 1 is not used.[33] Likewise 65524+3 is 0xFFF7 for FAT16, and 4084+3 is 0xFF7 for FAT12. The number of sectors per cluster is a power of 2 fitting in a single byte, the smallest value is 1 (0x01), the biggest value is 128 (0x80). Lines in square brackets indicate the unusual cluster size 128, and for FAT32 the bigger than necessary cluster sizes 32 or 64.[64]

Because each FAT32 entry occupies 32 bits (4 bytes) the maximal number of clusters (268435444) requires 2097152 FAT sectors for a sector size of 512 bytes. 2097152 is 0x200000, and storing this value needs more than two bytes. Therefore, FAT32 introduced a new 32-bit value in the FAT32 boot sector immediately following the 32-bit value for the total number of sectors introduced in the FAT16B variant.

The boot record extensions introduced with DOS 4.0 start with a magic 40 (0x28) or 41 (0x29). Typically FAT drivers look only at the number of clusters to distinguish FAT12, FAT16, and FAT32: the human readable strings identifying the FAT variant in the boot record are ignored, because they exist only for media formatted with DOS 4.0 or later.

Determining the number of directory entries per cluster is straightforward. Each entry occupies 32 bytes; this results in 16 entries per sector for a sector size of 512 bytes. The DOS 5 RMDIR/RD command removes the initial "." (this directory) and ".." (parent directory) entries in subdirectories directly, therefore sector size 32 on a RAM disk is possible for FAT12, but requires 2 or more sectors per cluster. A FAT12 boot sector without the DOS 4 extensions needs 29 bytes before the first unnecessary FAT16B 32-bit number of hidden sectors, this leaves three bytes for the (on a RAM disk unused) boot code and the magic 0x55 0xAA at the end of all boot sectors. On Windows NT the smallest supported sector size is 128.

On Windows NT operating systems the FORMAT command options /A:128K and /A:256K correspond to the maximal cluster size 0x80 (128) with a sector size 1024 and 2048, respectively. For the common sector size 512 /A:64K yields 128 sectors per cluster.

Ambas ediciones de cada ECMA-107 [ 24 ] e ISO/IEC 9293 [ 25 ] [ 26 ] especifican un número máximo de clústerMAX determinado por la fórmula , y reservan números de clúster hasta 4086 ( 0xFF6 , FAT12) y posteriormente 65526 ​​( 0xFFF6 , FAT16) para una estandarización futura.MAX=1+trunc((TS-SSA)/SC)MAX+1

La especificación EFI FAT32 de Microsoft [ 4 ] establece que cualquier sistema de archivos FAT con menos de 4085 clústeres es FAT12, de lo contrario, cualquier sistema de archivos FAT con menos de 65 525 clústeres es FAT16, y en caso contrario es FAT32. La entrada para el clúster 0 al principio de la FAT debe ser idéntica al byte descriptor de medios que se encuentra en el BPB, mientras que la entrada para el clúster 1 refleja el valor de fin de cadena utilizado por el formateador para las cadenas de clústeres ( 0xFFF , 0xFFFF o 0x0FFFFFFF ). Las entradas para los números de clúster 0 y 1 terminan en un límite de byte incluso para FAT12, por ejemplo, 0xF9FFFF para el descriptor de medios 0xF9 .

El primer clúster de datos es 2, [ 33 ] y, en consecuencia, el último clúster MAXobtiene el número MAX+1. Esto da como resultado los números de clúster de datos 2...4085 ( 0xFF5 ) para FAT12, 2...65525 ( 0xFFF5 ) para FAT16 y 2...268435445 ( 0x0FFFFFF5 ) para FAT32.

Por lo tanto, los únicos valores disponibles reservados para la estandarización futura son 0xFF6 (FAT12) y 0xFFF6 (FAT16). Como se indica a continuación, "menor que 4085" también se utiliza para las implementaciones de Linux, [ 44 ] o como lo indica la especificación FAT de Microsoft : [ 4 ]

Cuando aparece < , no significa < =. Nótese también que los números son correctos. El primer número para FAT12 es 4085; el segundo para FAT16 es 65525. Estos números y los signos " < " no son erróneos.

Fragmentación

El sistema de archivos FAT no contiene mecanismos integrados que impidan que los archivos recién escritos se dispersen por la partición. [ 65 ] En volúmenes donde los archivos se crean y eliminan con frecuencia o sus longitudes cambian a menudo, el medio se fragmentará cada vez más con el tiempo.

Si bien el diseño del sistema de archivos FAT no genera ninguna sobrecarga organizativa en las estructuras de disco ni reduce la cantidad de espacio de almacenamiento libre con el aumento de la fragmentación , como ocurre con la fragmentación externa , el tiempo necesario para leer y escribir archivos fragmentados aumentará, ya que el sistema operativo tendrá que seguir las cadenas de clústeres en el FAT (con partes que deben cargarse primero en la memoria, especialmente en volúmenes grandes) y leer los datos correspondientes físicamente dispersos por todo el medio, lo que reduce las posibilidades de que el controlador de dispositivo de bloque de bajo nivel realice E/S de disco multisectorial o inicie transferencias DMA más grandes, aumentando así la sobrecarga del protocolo de E/S, así como los tiempos de movimiento del brazo y de estabilización del cabezal dentro de la unidad de disco. Además, las operaciones de archivo se volverán más lentas con el aumento de la fragmentación, ya que el sistema operativo tardará cada vez más en encontrar archivos o clústeres libres.

Otros sistemas de archivos, como HPFS o exFAT , utilizan mapas de bits de espacio libre que indican los clústeres usados ​​y disponibles, los cuales se pueden consultar rápidamente para encontrar áreas contiguas libres. Otra solución consiste en agrupar todos los clústeres libres en una o varias listas (como se hace en los sistemas de archivos Unix ). En cambio, la FAT debe escanearse como una matriz para encontrar clústeres libres, lo que puede generar problemas de rendimiento con discos de gran capacidad.

De hecho, buscar archivos en subdirectorios grandes o calcular el espacio libre en disco en volúmenes FAT es una de las operaciones que más recursos consume, ya que requiere leer las tablas de directorios o incluso todo el FAT de forma lineal. Dado que la cantidad total de clústeres y el tamaño de sus entradas en el FAT seguía siendo pequeña en los volúmenes FAT12 y FAT16, esto aún podía tolerarse en la mayoría de los casos, considerando que la introducción de estructuras de disco más sofisticadas también habría aumentado la complejidad y el consumo de memoria de los sistemas operativos en modo real con sus requisitos mínimos de memoria total de 128 KB o menos (como DOS), para los cuales FAT fue diseñado y optimizado originalmente.

Con la introducción de FAT32, los largos tiempos de búsqueda y escaneo se hicieron más evidentes, particularmente en volúmenes muy grandes. Una posible justificación sugerida por Raymond Chen de Microsoft para limitar el tamaño máximo de las particiones FAT32 creadas en Windows fue el tiempo requerido para realizar una DIRoperación " ", que siempre muestra el espacio libre en disco como la última línea. [ 66 ] Mostrar esta línea tomaba cada vez más tiempo a medida que aumentaba el número de clústeres. Por lo tanto, FAT32 introdujo un sector de información del sistema de archivos especial donde la cantidad de espacio libre calculada previamente se conserva durante los ciclos de encendido, de modo que el contador de espacio libre necesita ser recalculado solo cuando se expulsa un medio extraíble formateado en FAT32 sin desmontarlo primero o si el sistema se apaga sin apagar correctamente el sistema operativo, un problema más visible con PC de estilo pre- ATX , en sistemas DOS simples y algunos productos de consumo alimentados por batería.

Debido a los enormes tamaños de clúster (16 KB, 32 KB, 64 KB) impuestos por las particiones FAT más grandes, la fragmentación interna en forma de desperdicio de espacio en disco por la holgura de archivos debido al exceso de clúster (ya que los archivos rara vez son múltiplos exactos del tamaño del clúster) también comienza a ser un problema, especialmente cuando hay una gran cantidad de archivos pequeños.

Se han ideado varias optimizaciones y ajustes para la implementación de controladores de sistemas de archivos FAT, controladores de dispositivos de bloques y herramientas de disco para superar la mayoría de los cuellos de botella de rendimiento en el diseño inherente del sistema de archivos sin tener que cambiar la disposición de las estructuras en disco. [ 67 ] [ 68 ] Se pueden dividir en métodos en línea y fuera de línea y funcionan tratando de evitar la fragmentación en el sistema de archivos en primer lugar, implementando métodos para manejar mejor la fragmentación existente y reordenando y optimizando las estructuras en disco. Con las optimizaciones implementadas, el rendimiento en volúmenes FAT a menudo puede alcanzar el de sistemas de archivos más sofisticados en escenarios prácticos, al tiempo que conserva la ventaja de ser accesible incluso en sistemas muy pequeños o antiguos.

DOS 3.0 y versiones posteriores no reutilizarán inmediatamente el espacio en disco de los archivos eliminados para nuevas asignaciones, sino que buscarán espacio previamente no utilizado antes de comenzar a usar también el espacio en disco de los archivos previamente eliminados. Esto no solo ayuda a mantener la integridad de los archivos eliminados durante el mayor tiempo posible, sino que también acelera las asignaciones de archivos y evita la fragmentación, ya que el espacio en disco nunca antes asignado siempre está sin fragmentar. DOS logra esto manteniendo un puntero al último clúster asignado en cada volumen montado en memoria y comienza a buscar espacio libre desde esta ubicación hacia arriba en lugar de en el principio de la FAT, como todavía lo hacía DOS 2.x. [ 13 ] Si se llega al final de la FAT, volvería al principio para continuar la búsqueda hasta que se haya encontrado espacio libre o se haya llegado de nuevo a la posición original sin haber encontrado espacio libre. [ 13 ] Estos punteros se inicializan para apuntar al inicio de las FAT después del arranque, [ 13 ] pero en volúmenes FAT32, DOS 7.1 y superiores intentarán recuperar la última posición del sector de información del sistema de archivos . Sin embargo, este mecanismo se ve frustrado si una aplicación elimina y recrea archivos temporales con frecuencia, ya que el sistema operativo intentaría entonces mantener la integridad de los datos vacíos, lo que en última instancia causaría una mayor fragmentación. [ 13 ] En algunas versiones de DOS, se puede utilizar una función API especial para crear archivos temporales para evitar este problema.

Además, las entradas de directorio de archivos eliminados se marcarán como 0xE5 desde DOS 3.0. [ 42 ] DOS 5.0 y versiones posteriores comenzarán a reutilizar estas entradas solo cuando se hayan agotado las entradas de directorio previamente no utilizadas en la tabla y, de lo contrario, el sistema tendría que expandir la tabla por sí mismo. [ 6 ]

Desde DOS 3.3, el sistema operativo ofrece herramientas para mejorar el rendimiento de las operaciones con archivos, FASTOPENmanteniendo un registro de la posición de los archivos o directorios abiertos recientemente mediante listas (MS-DOS/PC  DOS) o tablas hash (DR-DOS) , lo que reduce significativamente los tiempos de búsqueda y apertura de archivos. Antes de DOS 5.0, se debe tener especial cuidado al utilizar estos mecanismos junto con software de desfragmentación de disco que omite el sistema de archivos o los controladores de disco.

Windows NT asignará espacio en disco a los archivos en FAT con antelación, seleccionando grandes áreas contiguas, pero en caso de fallo, los archivos que se estaban añadiendo aparecerán más grandes de lo que realmente fueron escritos, con una gran cantidad de datos aleatorios al final.

Otros mecanismos de alto nivel pueden leer y procesar partes más grandes o la FAT completa al inicio o bajo demanda cuando sea necesario y construir dinámicamente representaciones de árbol en memoria de las estructuras de archivos del volumen diferentes de las estructuras en disco. [ 67 ] [ 68 ] Esto puede, en volúmenes con muchos clústeres libres, ocupar incluso menos memoria que una imagen de la FAT misma. En particular, en volúmenes muy fragmentados o llenos, las búsquedas se vuelven mucho más rápidas que con escaneos lineales sobre la FAT real, incluso si una imagen de la FAT se almacenara en memoria. Además, al operar en el nivel lógico alto de archivos y cadenas de clústeres en lugar de en el nivel de sector o pista, es posible evitar cierto grado de fragmentación de archivos en primer lugar o realizar la desfragmentación local de archivos y la reordenación de entradas de directorio en función de sus nombres o patrones de acceso en segundo plano.

Algunos de los problemas percibidos con la fragmentación de los sistemas de archivos FAT también resultan de las limitaciones de rendimiento de los controladores de dispositivos de bloques subyacentes , lo cual se hace más evidente cuanto menor sea la memoria disponible para el almacenamiento en búfer de sectores y el bloqueo/desbloqueo de pistas:

Si bien el DOS monotarea contaba con disposiciones para lecturas de múltiples sectores y bloqueo/desbloqueo de pistas, el sistema operativo y la arquitectura tradicional del disco duro de la PC ( solo una solicitud de entrada/salida pendiente a la vez y sin transferencias DMA ) originalmente no contenían mecanismos que pudieran aliviar la fragmentación mediante la precarga asíncrona de los siguientes datos mientras la aplicación procesaba los bloques anteriores. Dichas características estuvieron disponibles más adelante. Las versiones posteriores de DOS también proporcionaron soporte integrado para el almacenamiento en búfer de sectores con anticipación e incluyeron programas de almacenamiento en caché de disco de carga dinámica que funcionaban a nivel de sector físico o lógico, a menudo utilizando memoria EMS o XMS y, en ocasiones, proporcionando estrategias de almacenamiento en caché adaptativas o incluso ejecutándose en modo protegido a través de DPMS o Cloaking para aumentar el rendimiento al obtener acceso directo a los datos almacenados en caché en la memoria lineal en lugar de a través de las API convencionales de DOS.

El almacenamiento en caché diferido a menudo no estaba habilitado de forma predeterminada en el software de Microsoft (si estaba presente) debido al problema de la pérdida de datos en caso de un corte de energía o un fallo del sistema, un problema que se veía facilitado por la falta de protección de hardware entre las aplicaciones y el sistema.

Nombres de archivos largos VFAT

Estructura de directorio FAT32 con tres archivos, dos de los cuales utilizan nombres de archivo largos VFAT.

Los nombres de archivo largos (LFN) de VFAT se almacenan en un sistema de archivos FAT mediante un truco: se añaden entradas adicionales al directorio antes de la entrada de archivo normal. Estas entradas adicionales se marcan con los atributos Etiqueta de volumen, Sistema, Oculto y Solo lectura (que dan como resultado 0x0F ), una combinación inesperada en el entorno MS-DOS, por lo que los programas MS-DOS y las utilidades de terceros la ignoran. Cabe destacar que un directorio que contiene solo etiquetas de volumen se considera vacío y se puede eliminar; esta situación se produce si se eliminan archivos con nombres largos desde DOS. Este método es muy similar al método DELWATCH, que utiliza el atributo de volumen para ocultar archivos pendientes de eliminación y permitir su recuperación futura desde DR DOS 6.0 (1991) y versiones posteriores. También es similar a un método que se debatió públicamente para almacenar nombres de archivo largos en Atari y Linux en 1992. [ 69 ] [ 70 ]  

Debido a que las versiones antiguas de DOS podían confundir los nombres LFN en el directorio raíz con la etiqueta de volumen, VFAT se diseñó para crear una etiqueta de volumen en blanco en el directorio raíz antes de agregar cualquier entrada de nombre LFN (si no existía ya una etiqueta de volumen). [ nb 14 ]

Cada entrada falsa puede contener hasta 13 caracteres UCS-2 (26 bytes) mediante el uso de campos en el registro que contienen el tamaño del archivo o marcas de tiempo (pero no el campo de clúster inicial; para compatibilidad con utilidades de disco, el campo de clúster inicial se establece en un valor de 0. Consulte la sección 8.3 Nombre de archivo para obtener explicaciones adicionales). Se pueden encadenar hasta 20 de estas entradas de 13 caracteres, lo que admite una longitud máxima de 255 caracteres UCS-2. [ 55 ]

Si la posición del último carácter del LFN no coincide con el límite de una entrada de directorio (13, 26, 39, ...), se añade un terminador 0x0000 en la siguiente posición. Si dicho terminador tampoco coincide con el límite, las posiciones restantes se rellenan con 0xFFFF . No existirá ninguna entrada de directorio que contenga un único terminador.

Las entradas LFN utilizan el siguiente formato:

Si se requieren varias entradas LFN para representar un nombre de archivo, la que representa el final del nombre de archivo aparece primero. El bit 6 ( 0x40 ) de esta entrada tiene el número de secuencia más alto, lo que indica que es la última entrada LFN lógica. El número de secuencia disminuye en las entradas siguientes. La entrada que representa el inicio del nombre de archivo tiene el número de secuencia 1. El valor 0xE5 indica que la entrada se ha eliminado.

En volúmenes FAT12 y FAT16, se puede utilizar la comprobación de que los valores en 0x1A sean cero y en 0x1C no sean cero para distinguir entre LFN de VFAT y archivos pendientes de eliminación en DELWATCH.

Por ejemplo, un nombre de archivo como "Archivo con nombre de archivo muy largo.ext" se formatearía de esta manera:

Una suma de verificación también permite comprobar si un nombre de archivo largo coincide con el nombre 8.3; tal discrepancia podría ocurrir si un archivo se eliminó y se volvió a crear usando DOS en la misma posición del directorio. La suma de verificación se calcula utilizando el siguiente algoritmo. (pFCBName es un puntero al nombre tal como aparece en una entrada de directorio normal, es decir, los primeros ocho caracteres son el nombre del archivo y los últimos tres son la extensión. El punto es implícito. Cualquier espacio no utilizado en el nombre del archivo se rellena con caracteres de espacio (ASCII 0x20 ). Por ejemplo, "Readme.txt" sería " ".)README␠␠TXT

unsigned char lfn_checksum ( const unsigned char * pFCBName ) { int i ; unsigned char sum = 0 ;para ( i = 11 ; i ; i -- ) suma = (( suma & 1 ) << 7 ) + ( suma >> 1 ) + * pFCBName ++ ;devolver suma ; }

Si un nombre de archivo contiene solo letras minúsculas, o es una combinación de un nombre base en minúsculas con una extensión en mayúsculas , o viceversa; y no tiene caracteres especiales, y se ajusta a los límites de 8.3, no se crea una entrada VFAT en Windows NT y versiones posteriores de Windows como XP. En su lugar, se utilizan dos bits en el byte 0x0C de la entrada del directorio para indicar que el nombre de archivo debe considerarse total o parcialmente en minúsculas. Específicamente, el bit 4 significa extensión en minúsculas y el bit 3 nombre base en minúsculas , lo que permite combinaciones como " " o " " pero no " ". Pocos otros sistemas operativos lo admiten. Esto crea un problema de retrocompatibilidad con versiones anteriores de Windows (Windows 95 / 98 / 98 SE / ME) que ven nombres de archivo en mayúsculas si se ha utilizado esta extensión, y por lo tanto pueden cambiar el nombre de un archivo cuando se transporta entre sistemas operativos, como en una unidad flash USB. Las versiones actuales 2.6.x de Linux reconocerán esta extensión al leer (fuente: kernel 2.6.18 y ); la opción de montaje determina si esta característica se utiliza al escribir. [ 71 ]example.TXTHELLO.txtMixed.txt/fs/fat/dir.cfs/vfat/namei.cshortname

Véase también

Notas

  1. 1 2 3 Para una compatibilidad máxima con MS-DOS/PC DOS y DR-DOS, los sistemas operativos que intentan determinar el formato de un disquete deben probar todas las secuencias de código de operación mencionadas en el desplazamiento de sector 0x000 además de buscar un byte descriptor de medio válido en el desplazamiento de sector 0x015 antes de asumir la presencia de un BPB . Aunque los disquetes de PCDOS1.0 no contienen un BPB, también comienzan con 0xEB , pero no muestran un 0x90 en el desplazamiento 0x002 .Los disquetesDOS 1.10 incluso comienzan con 0xEB 0x?? 0x90 , aunque todavía no presentan un BPB. En ambos casos, una prueba para un descriptor de medio válido en el desplazamiento 0x015 fallaría (valor 0x00 en lugar de descriptores de medio válidos 0xF0 y superiores). Si estas pruebas fallan, DOS comprueba la presencia de un byte descriptor de medio en el primer byte de la primera FAT en el sector que sigue al sector de arranque (sector lógico 1 en disquetes FAT12/FAT16).      
  2. 1 2 3 4 5 La firma en el desplazamiento 0x1FE en los sectores de arranque es 0x55 0xAA , es decir , 0x55 en el desplazamiento 0x1FE y 0xAA en el desplazamiento 0x1FF . Dado que se debe asumir la representación little-endian en el contexto de las máquinas compatibles con IBM PC , esto se puede escribir como la palabra de 16 bits 0xAA55 en programas para procesadores x86 (nótese el orden intercambiado), mientras que tendría que escribirse como 0x55AA en programas para otras arquitecturas de CPU que utilizan una representación big-endian . Dado que esto se ha confundido numerosas veces en libros e incluso en documentos de referencia originales de Microsoft,este artículo utiliza la representación en disco byte a byte basada en desplazamiento para evitar cualquier posible interpretación errónea.
  3. 1 2 3 La entrada de suma de comprobación en los sectores de arranque de Atari contiene el valor de alineación, no el valor mágico en sí. El valor mágico 0x1234 no se almacena en ningún lugar del disco. A diferencia de los procesadores Intel x86 , los procesadores Motorola 680x0 utilizados en las máquinas Atari utilizan una representación de memoria big-endian y, por lo tanto, debe asumirse una representación big-endian al calcular la suma de comprobación. Como consecuencia de esto, para el código de verificación de suma de comprobación que se ejecuta en máquinas x86, los pares de bytes deben intercambiarse antes de la suma de 16 bits.
  4. Los bytes en el desplazamiento de sector 0x00B a 0x017 se almacenan desde DOS 2.0, pero no siempre se usan antes de DOS 3.2, los valores en 0x018 a 0x01B se usan desde DOS 3.0.
  5. DR-DOS puede arrancar desde medios con sectores lógicos FAT12/FAT16 con tamaños de sector lógico de hasta 1024 bytes.
  6. 1 2 Las siguientes funciones de DOS devuelven estos valores de registro: INT 21h/AH=2Ah "Obtener fecha del sistema" devolvió los siguientes valores: CX = año ( 1980 .. 2099 ), DH = mes (1..12), DL = día (1..31). INT 21h/AH=2Ch "Obtener hora del sistema" devolvió los siguientes valores: CH = hora (0..23), CL = minuto (0..59), DH = segundo (0..59), DL = 1/100 segundos (0..99).
  7. Se ha observado que Windows XP crea discos híbridos al reformatear discos ZIP-100 con formato FAT16B a formato FAT32. Los volúmenes resultantes tenían formato FAT32, pero seguían utilizando el EBPB de FAT16B. (No está claro cómo determina Windows la ubicación del directorio raíz en volúmenes FAT32 si solo se utilizó un EBPB de FAT16).
  8. 1 2 Una utilidad que permite especificar el valor de relleno de formato deseado para discos duros es DR-DOS FDISK R2.31 con su parámetro opcional wipe/W:246. A diferencia de otras utilidades FDISK , DR-DOS FDISK no solo es una herramienta de particionamiento, sino que también puede formatear particiones recién creadas como FAT12 , FAT16 o FAT32 . Esto reduce el riesgo de formatear accidentalmente volúmenes incorrectos.
  9. Para admitir la coexistencia de DR-DOS con PC DOS y múltiples instalaciones paralelas de DR-DOS, la extensión delIBMBIO␠␠COMnombre de archivo de arranque predeterminado " " se puede cambiar usando laSYS /DR:extopción, donde ext representa la nueva extensión. Otros posibles nombres de archivo de arranque de DR-DOS que se pueden esperar en escenarios especiales son "DRBIOS␠␠SYS", "DRDOS␠␠␠SYS", "IO␠␠␠␠␠␠SYS", "JO␠␠␠␠␠␠SYS".
  10. Si el indicador de apagado defectuoso de un volumen permanece borrado al iniciar, significa que el volumen no se desmontó correctamente. Esto provocaría, por ejemplo, que Windows 98 WIN.COM iniciara SCANDISK para comprobar y reparar posibles errores lógicos del sistema de archivos. Si el indicador de sectores defectuosos está borrado, también se realizará un análisis de superficie. Esto se puede desactivar configurando AUTOSCAN=0 en la sección [OPTIONS] delarchivo MSDOS.SYS .
  11. 1 2 3 4 Consulte otros enlaces para obtener precauciones especiales con respecto a las ocurrencias de un valor de clúster de 0xFF0 en volúmenes FAT12 bajo MS-DOS/PC DOS 3.3 y superior.
  12. 1 2 Algunas versiones de FORMAT desde MS-DOS 1.25 y PC DOS 2.0 admitían una opción/O(para versiones antiguas ) para rellenar el primer byte de todas las entradas de directorio con 0xE5 en lugar de utilizar el marcador de fin 0x00 . Por lo tanto, el volumen seguía siendo accesible en PC DOS 1.0 - 1.1 , mientras que el formateo tardaba algo más y las versiones más recientes de DOS no podían aprovechar la considerable aceleración causada por el uso del marcador de fin 0x00 .
  13. Esta es la razón por la que 0xE5 tenía un significado especial en las entradas del directorio.
  14. 1 2 Para evitar posibles interpretaciones erróneas de las etiquetas de volumen de directorio con entradas VFAT LFN por parte de sistemas operativos que no admiten VFAT, se sabe que las herramientas DR-DOS 7.07 FDISK y FORMAT escriben explícitamenteNO␠NAME␠␠␠␠etiquetas de volumen de directorio ficticias " " si el usuario omite ingresar una etiqueta de volumen. El sistema operativo internamente devolvería por defecto la misma cadena si no se pudiera encontrar ninguna etiqueta de volumen de directorio en la raíz de un volumen, pero sin una etiqueta de volumen real almacenada como la primera entrada (después de las entradas de directorio), los sistemas operativos más antiguos podrían tomar erróneamente entradas VFAT LFN en su lugar.
  15. Este tipo de atributo de distribución de IBM 4680 OS y 4690 OS debe tener un valor de bit en disco de 0, ya que los archivos recurren a este tipo cuando los atributos se pierden accidentalmente.

    Referencias

    1. "Sistemas de archivos" . technet.microsoft.com . Microsoft TechNet. 2001. Archivado del original el 12 de agosto de 2011. Consultado el 31 de julio de 2011 .
    2. 1 2 (15/11/2006). Archivo CONFIG.TXT del CD-ROM de Windows 95 , Microsoft. Enlace obsoleto archivado el 28/01/2013 en archive.today Artículo 135481, Revisión: 1.1, recuperado el 22/12/2011: "Para cada disco duro, especifica si se debe registrar la fecha del último acceso a los archivos. Las fechas de último acceso se desactivan para todas las unidades cuando el equipo se inicia en modo seguro y no se mantienen para los disquetes de forma predeterminada. Sintaxis:ACCDATE=drive1+|- [drive2+|-]..."
    3. Bhat, WA (2010). "Revisión de la estructura de datos FAT del sistema de archivos FAT32". S2CID 58178285 . 
    4. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 "Especificación del sistema de archivos FAT32 de la Iniciativa de Firmware Extensible de Microsoft, FAT: Descripción general del formato en disco" . Microsoft . 6 de diciembre de 2000. Archivado del original el 23 de julio de 2021. Consultado el 3 de julio de 2011 .
    5. 1 2 3 4 Haaf, Wilfried; Middel, Frank (noviembre de 1987). "Daten auf Scheiben - Estructuras de archivos y disquetes según CP/M, MSDOS y TOS: Dateiverwaltung unter TOS". c't-magazin für computertechnik . c't Kartei (en alemán). vol. 1987, núm. 11. Verlag Heinz Heise GmbH & Co. KG . págs. 241–246 [246]. ISSN 0724-8679 .    
    6. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Chappell, Geoff (enero de 1994). Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals . The Andrew Schulman Programming Series (1.ª impresión, 1.ª ed.). Addison Wesley Publishing Company . ISBN  978-0-201-60835-9.(xxvi+738+iv páginas, disquete de 3,5")) Erratas:
    7. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Microsoft MS - DOS 3.1 Programmierhandbuch en inglés Sprache [ Manual de referencia del programador de Microsoft MS-DOS 3.1 en inglés ] . Múnich: Markt & Technik Verlag (publicado en 1986). 1984.ISBN 3-89090-368-18411-310-02, 036-014-012. Con respecto a la instrucción de salto al inicio de un sector de arranque: "Determinar si el primer byte del sector de arranque es un E9H o EBIT (el primer byte de un salto NEAR de 3 bytes o un salto corto de 2 bytes) o un EBH (el primer byte de un salto de 2 bytes seguido de una NOP). Si es así, se encuentra un BPB a partir del desplazamiento 3."(Nota: Este libro contiene muchos errores.)
    8. 1 2 Sedory, Daniel B. (1981). El sector de arranque de IBM Personal Computer DOS (versión 1.00 ). Archivado del original el 21 de mayo de 2014. Recuperado el 2 de agosto de 2005 a través de thestarman.narod.ru. 
    9. 1 2 Sedory, Daniel B. (1982). El sector de arranque de IBM Personal Computer DOS (versión 1.10 ). Archivado del original el 21 de mayo de 2014. Recuperado el 29 de julio de 2005 a través de thestarman.narod.ru. ).
    10. 1 2 Caldera OpenDOS Machine Readable Source Kit 7.01 . Caldera. 1997.El archivo DISK.ASM del kit de código fuente legible por máquina muestra que DR-DOS también realiza pruebas con el valor 0x69 .
    11. Paul, Matthias R. (2002-02-20). "Necesito DOS 6.22 (no OEM)" . Grupo de noticias : alt.msdos.programmer . Recuperado el 14 de octubre de 2006 . {{cite newsgroup}}: CS1 maint: servicio de archivado obsoleto ( enlace )
    12. Bass, Wally (14 de febrero de 1994). "Tamaño del clúster" . Grupo de noticias : comp.os.msdos.programmer . Consultado el 14 de octubre de 2006 . {{cite newsgroup}}: CS1 maint: servicio de archivado obsoleto ( enlace )
    13. 1 2 3 4 5 6 7 8 Williams, Dave (1992). Programmer's Technical Reference for MSDOS and the IBM PC . DOSREF, edición shareware. ISBN 1-878830-02-3Archivado del original el 20 de mayo de 2014. Consultado el 8 de enero de 2012 a través de o3one.org.El autor menciona que DOS 4.0 comprueba la etiqueta del fabricante, pero niega que DOS 3.2 también lo haga (aunque sí lo hace).
    14. Paul, Matthias R. (25 de agosto de 2004). "NOVOLTRK.REG" . drdos.org. Archivado del original el 4 de marzo de 2016. Recuperado el 17 de diciembre de 2011 a través de ibiblio.org.Ver otro archivo aquí
    15. 1 2 "Solución de problemas de discos y sistemas de archivos" . technet.microsoft.com . Microsoft TechNet . 5 de noviembre de 2005. Archivado del original el 7 de junio de 2014. Consultado el 15 de junio de 2014 .
    16. Manual de referencia técnica de IBM PC . IBM. 1983.Incluye una lista completa del código fuente de la ROM BIOS del IBM PC original.
    17. ^ Hans - Dieter Jankowski, Dietmar Rabich; Reschke, Julián F. (1992). Atari Profibuch ST-STE-TT (4ª ed.). 12º lote. Síbex. ISBN  978-3-88745-888-1.
    18. "La transición a discos duros de sector 4K de formato avanzado" (PDF) . seagate.com . Seagate Technologies. 2010. Archivado del original (PDF) el 2 de septiembre de 2011. Consultado el 12 de enero de 2026 .
    19. 1 2 3 4 Brown, Ralf D. (2002-12-29). "La lista de interrupciones x86" . Archivado del original el 16-06-2016 . Recuperado el 14-10-2011 .
    20. 1 2 3 4 de Boyne Pollard, Jonathan (2010) [2006]. "Todo sobre los bloques de parámetros de BIOS" . Respuestas frecuentes . Archivado del original el 26 de agosto de 2016. Recuperado el 2 de junio de 2014 .
    21. 1 2 3 Referencia del programador de Microsoft MS-DOS: versión 5.0 . Microsoft Press. 1991. ISBN 1-55615-329-5.
    22. 1234567891011"Standard Floppy Disk Formats Supported by MS-DOS". Microsoft Help and Support. 2003-05-12. Archived from the original on 2015-01-09. Retrieved 2012-09-11.
    23. 123MS-DOS 3.3 Programmer's Reference. Microsoft. July 1987.
    24. 12345678910"Volume and File Structure of Disk Cartridges for Information Interchange". Standard ECMA-107 (2nd ed.). ECMA. June 1995. Archived from the original on 2018-10-07. Retrieved 2011-07-30.{{cite web}}: CS1 maint: date and year (link)
    25. 12345678910"Information technology -- Volume and file structure of disk cartridges for information interchange"(Catalogue). ISO/IEC 9293:1994. ISO. 1994. Archived from the original on 2012-01-17. Retrieved 2012-01-06.
    26. 12345678910"Information processing -- Volume and file structure of flexible disk cartridges for information interchange". ISO 9293:1987. ISO catalogue. 1987. Archived from the original on 2012-01-17. Retrieved 2012-01-06.
    27. 123Brouwer, Andries (2002-09-20). "The FAT file system". Archived from the original on 2011-10-06. Retrieved 2011-10-16.
    28. 123456789101112131415161718Paterson, Tim (2013-12-19) [1983]. "Microsoft DOS V1.1 and V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM". computerhistory.org. Computer History Museum, Microsoft. Archived from the original on 2019-08-14. Retrieved 2014-03-25. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.
    29. 1 2 3 4 5 6 7 8 9 10 Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; et al. (1988). "Asesores técnicos". La enciclopedia de MS-DOS: versiones 1.0 a 3.2 . Por Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; et al. ( Edición completamente revisada). Redmond, Washington, EE. UU.: Microsoft Press . ISBN    1-55615-049-0LCCN 87-21452 . OCLC 16581341 . Archivado del original el 14-10-2018.  (Nota: Esta edición se publicó en 1988 tras una extensa revisión de la primera edición de 1986, que fue retirada del mercado, por un equipo diferente de autores).
    30. 1 2 "Explicación detallada del sector de arranque FAT" . support.microsoft.com . Base de conocimientos de Microsoft. 6 de diciembre de 2003. Archivado del original el 28 de noviembre de 2011. Consultado el 16 de octubre de 2011 .
    31. 1 2 3 Lai, Robert S.; The Waite Group (1987). Escritura de controladores de dispositivos MS-DOS (2.ª ed.). Addison Wesley. ISBN  0-201-60837-5.
    32. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Paterson, Tim (19-12-2013) [1983]. "Microsoft DOS V1.1 y V2.0: /msdos/v20source/DEVDRIV.txt" . computerhistory.org . Museo de Historia de la Computación, Microsoft. Archivado del original el 14-08-2019 . Recuperado el 25-03-2014 .Si bien los editores afirman que se trata de MS-DOS 1.1 y 2.0, en realidad es SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11.
    33. 1 2 3 4 5 Paterson, Tim (1983). "Una mirada al interior de MS-DOS" . Byte . Archivado del original el 20 de julio de 2011. Recuperado el 18 de julio de 2011 a través de patersontech.com. La numeración comienza con 2; los dos primeros números, 0 y 1, están reservados.
    34. 1 2 3 4 PORT-DOS - Guía de comandos para Apricot Portable (PDF) . Reino Unido: User-Prompt Guides. Archivado del original (PDF) el 22 de mayo de 2013. Recuperado el 12 de enero de 2026 a través de actapricot.org.
    35. 1 2 3 4 5 Elliott, John C. (1998). Formatos de disco DOSPLUS . Archivado del original el 7 de junio de 2013. Recuperado el 12 de enero de 2026 a través de seasip.demon.co.uk.
    36. 1 2 3 4 The BBC Master 512 . Páginas informáticas de la BBC de Yellow Pig. Archivado del original el 21/05/2014 . Recuperado el 13/01/2026 a través de cowsarenotpurple.co.uk.
    37. Documentación técnica de Rainbow 100 MS-DOS 2.01 . Vol. 1 (QV025-GZ). Listado de BIOS del sistema operativo Microsoft MS-DOS (AA-X432A-TV), controlador de disco universal, Digital Equipment Corporation. 1983. págs. 1–17 .  
    38. "Explicación detallada del sector de arranque FAT" . DEW Associates Corporation. 2002. Archivado del original el 26 de septiembre de 2011. Consultado el 16 de octubre de 2011 .
    39. Tyagi, Tarun (31 de octubre de 2004). "Tamaño de clústeres en sistemas de archivos FAT y NTFS". Recuperación de datos con y sin programación . Nueva Delhi, India: Gardners Books. pág. 4. ISBN  978-81-7656-922-4. Archivado del original el 03-12-2021 . Consultado el 03-12-2021 .
    40. Sedory, Daniel B. (4 de diciembre de 2001). Notas detalladas sobre la "bandera de apagado incorrecto" en MS-Windows . Archivado del original el 21 de mayo de 2014. Recuperado el 12 de enero de 2026 a través de thestarman.narod.ru.
    41. 1 2 3 4 5 "Capítulo 10 - Discos y sistemas de archivos" . Kit de recursos de Windows 98. Microsoft TechNet. 1998. Archivado del original el 1 de mayo de 2012. Recuperado el 16 de julio de 2012 a través de technet.microsoft.com.
    42. 1 2 3 4 Schulman, Andrew; Brown, Ralf D .; Maxey, David; et al. (1994) [noviembre de 1993]. Undocumented DOS: Guía del programador para funciones y estructuras de datos reservadas de MS-DOS — ampliada para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2.ª ed.). Reading, Massachusetts: Addison Wesley . pág . 11. ISBN    0-201-63287-X. Consultado el 12 de enero de 2026 .Errata Errata 2ª edición
    43. Norton, Peter (1986). Inside the IBM PC, Revised and Enlarged . Brady. p. 157. ISBN  0-89303-583-1.
    44. 1 2 3 Brouwer, Andries. "FAT bajo Linux" . Archivado del original el 1 de julio de 2014. Recuperado el 20 de mayo de 2014 .
    45. Brouwer, Andries (2002-09-20). "GORDO" . Archivado del original el 17-12-2017 . Recuperado el 11-01-2012 .
    46. 1 2 3 "SCP 86-DOS 1.0 Addendum" (PDF) . Seattle Computer Products. 1981. Archivado (PDF) del original el 3 de octubre de 2012. Recuperado el 10 de marzo de 2013 .
    47. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 Paul, Matthias R. (30 de julio de 1997) [1 de mayo de 1994]. NWDOS-TIP : consejos y trucos para Novell DOS 7, con un clic para deshacer detalles, errores y soluciones . MPDOSTIP (en alemán) (3 ed.). Archivado desde el original el 5 de noviembre de 2016 . Consultado el 11 de enero de 2012 . NWDOSTIP.TXT es una obra exhaustiva sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características y aspectos internos no documentados. Forma parte de la colección MPDOSTIP.ZIP del autor, aún más extensa, que se mantuvo hasta 2001 y se distribuyó en numerosos sitios web en aquella época. El enlace proporcionado dirige a una versión anterior del archivo convertida a HTML.
    48. Guía del usuario del sistema operativo 4690, versión 5.2 (PDF) . Documento de IBM SC30-4134-01. 10 de enero de 2008 vía ibm.com.
    49. 1 2 Paterson, Tim (19-12-2013) [1983]. "Microsoft DOS V1.1 y V2.0: /msdos/v20source/FORMAT.TXT" . Museo de Historia de la Computación , Microsoft. Archivado del original el 14-08-2019 . Recuperado el 25-03-2014 .Si bien los editores afirman que se trata de MS-DOS 1.1 y 2.0, en realidad es SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 .
    50. 12Shustek, Len (2014-03-24). "Microsoft MS-DOS early source code". computerhistory.org. Software Gems: The Computer History Museum Historical Source Code Series. Computer History Museum, Microsoft. Archived from the original on 2019-08-10. Retrieved 2014-03-29. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.
    51. 12Levin, Roy (2014-03-25). "Microsoft makes source code for MS-DOS and Word for Windows available to public". Official Microsoft Blog. Archived from the original on 2014-03-28. Retrieved 2014-03-29 via blogs.technet.com. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.
    52. "Standard of the Camera & Imaging Products Association, CIPA DC-009-Translation-2010, Design rule for Camera File system: DCF Version 2.0"(PDF). cipa.jp. JEIDA/JEITA/CIPA. 2010. Archived from the original(PDF) on 2013-09-30. Retrieved 2011-04-13.
    53. 1234567891011121314151617Caldera OpenDOS Machine Readable Source Kit 7.01. Caldera Corp. 1997. The FDOS.EQU file in the machine readable source kit has equates for the corresponding directory entries.
    54. Elliott, John C. (1998). CP/M 4.1 disc formats. Archived from the original on 2014-08-26. Retrieved 2026-01-12 via seasip.demon.co.uk. CP/M 4.1 (DOS Plus [1.2]) allows the use of two file systems - CP/M and DOS. The version [...] supplied with the Amstrad PC1512 cannot handle larger floppies than 360k (CP/M) / 1.2Mb (DOS), or larger hard drive partitions than 32Mb. [...] The DOS file system can be either FAT12 or FAT16. The format is exactly as in PCDOS 2.11, except: Byte 0Ch of the directory entry [...] holds the four "user attributes" F1'-F4' [...] DRDOS-style passwords are not supported.
    55. 12vinDaci (1998-01-06). "Long Filename Specification". Archived from the original on 2001-04-20. Retrieved 2007-03-13.
    56. Kelder, Henk. "FAT32.TXT for FAT32.IFS version 0.74". Macarlo, Inc. Archived from the original on 2012-03-30. Retrieved 2012-01-14.Esta versión anterior del archivo README todavía habla de los antiguos valores mágicos 0xEA y 0xEC .
    57. Kelder, Henk. "FAT32.TXT para FAT32.IFS versión 0.9.13" . netlabs.org . Archivado del original el 25/01/2022. Este byte [...] no se modifica mientras se ejecuta Windows 95 ni por SCANDISK o DEFRAG . [...] Si otro programa establece el valor en 0x00 para un archivo que tiene EA, estos EA ya no se encontrarán usando solo las llamadas DosFindFirst/Next. Las otras llamadas de OS/2 para recuperar EA (DosQueryPathInfo, DosQueryFileInfo y DosEnumAttribute) no dependen de este byte. También podría ocurrir lo contrario. [...] En esta situación, solo se reducirá el rendimiento de los escaneos de directorio. Ambas situaciones [...] se corrigen con CHKDSK .
    58. "FAT32.IFS Wiki y Fuentes" . netlabs.org . Archivado del original el 11 de mayo de 2013.
    59. 1 2 "Documento IBM SC30-4137-01" (PDF) . Guía de programación del sistema operativo 4690 Versión 5.2 . 06/12/2007 . Consultado el 12/01/2026 .
    60. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Serie de referencia para desarrolladores de OpenDOS Guía del sistema y del programador Guía del programador . Caldera, Inc. Agosto de 1997. Número de pieza de Caldera 200-DODG-003. Archivado del original el 7 de octubre de 2017. Recuperado el 20 de mayo de 2014 .(Impreso en el Reino Unido.)
    61. Eager, Bob (28/10/2000). Implementación de atributos extendidos en el sistema de archivos FAT . Tavi Systems. Archivado del original el 13/06/2006 . Recuperado el 13/01/2026 a través de tavi.co.uk.
    62. "Información de IBM sobre los atributos únicos de distribución de archivos del sistema operativo 4690" . EE. UU.: documento de IBM R1001487. 30 de julio de 2003. Archivado del original el 21 de mayo de 2014. Recuperado el 20 de mayo de 2014. Los tipos de archivo se almacenan en la sección "Bits reservados" de la estructura de directorios de archivos de PC-DOS [...] solo 4690 respeta y conserva estos atributos. Varios sistemas operativos que no son 4690 realizan acciones diferentes si estos bits están activados [...] al copiar desde un disquete creado en un sistema 4690. [...] PC-DOS y Windows 2000 Professional copiarán el archivo sin errores y pondrán los bits a cero. OS/2 [...] 1.2 [...] se negará a copiar el archivo a menos que [...] primero ejecute CHKDSK /F en el archivo. Después de [...] CHKDSK, copiará el archivo y pondrá los bits a cero. [...] cuando [...] se copia [...] de vuelta al sistema 4690, [...] el archivo se copiará como un archivo local.
    63. "IBM 4690 guardar y restaurar atributos de distribución de archivos" . EE. UU.: Documento IBM R1000622. 31 de agosto de 2010. Archivado del original el 21 de mayo de 2014. Consultado el 20 de mayo de 2014 .).
    64. "Limitaciones del sistema de archivos FAT32" . support.microsoft.com . Base de conocimientos de Microsoft . 26/03/2007. Archivado del original el 15/08/2011 . Consultado el 21/08/2011 . Los clústeres no pueden ser de 64 kilobytes o más. 
    65. Duncan, Ray (1989). "Objetivos de diseño e implementación del nuevo sistema de archivos de alto rendimiento" . Microsoft Systems Journal. Archivado del original el 16 de julio de 2011. Consultado el 20 de mayo de 2014 .[Nota: Este archivo de texto en particular contiene varios errores de OCR; por ejemplo, "Ray" es el nombre correcto del autor, no "Roy" como aparece en el texto.]
    66. Chen, Raymond (julio de 2006). "Microsoft TechNet: una breve e incompleta historia de FAT32" . Revista Microsoft TechNet. Archivado del original el 18 de noviembre de 2008. Consultado el 20 de mayo de 2014 .
    67. 1 2 Bell, Les (1996-09-02) [1990]. "Sistema de archivos de alto rendimiento OS/2" . PC Support Advisor . Associates Pty Ltd. Archivado del original el 2014-03-01 . Recuperado el 2014-06-24 .
    68. 1 2 Bridges, Dan (febrero de 1996). "Dentro del sistema de archivos de alto rendimiento - Parte 2/6: Introducción" . Significant Bits, Brisbug PC User Group Inc. Archivado del original el 23 de septiembre de 2015. Recuperado el 24 de junio de 2014 .
    69. Natuerlich! (1992-03-24). "Getting longer filenames out of GEMDOS". comp.sys.atari.st.tech. Archived from the original on 2014-04-24. Retrieved 2014-05-05.
    70. Torvalds, Linus (1992-12-23). "Long filenames". comp.os.minix. Archived from the original on 2014-04-23. Retrieved 2014-05-05.
    71. "Linux man page: mount(8): mount file system". linux.die.net. Archived from the original on 2014-05-05. Retrieved 2014-05-20.
    • ECMA-107 Volume and File Structure of Disk Cartridges for Information Interchange, identical to ISO/IEC 9293.
    • Microsoft Extensible Firmware Initiative FAT32 File System Specification, FAT: General Overview of On-Disk Format
    • Understanding FAT32 file systems (explained for embedded firmware developers)
    • Understanding FAT including lots of info about LFNs
    • Detailed Explanation of FAT Boot Sector: Microsoft Knowledge Base Article 140418, copy made by Internet Archive Wayback Machine
    • Description of the FAT32 File System: Microsoft Knowledge Base Article 154997, copy made by Internet Archive Wayback Machine
    • FAT12/FAT16/FAT32 file system implementation for *nix: Includes libfat libraries and fusefat, a FUSE file system driver
    • MS-DOS: Directory and Subdirectory Limitations: Microsoft Knowledge Base Article 39927, copy made by Internet Archive Wayback Machine
    • Overview of FAT, HPFS, and NTFS File Systems: Microsoft Knowledge Base Article 100108
    • Volume and file size limits of FAT file systems: Microsoft Technet, copy made by Internet Archive Wayback Machine
    • Microsoft TechNet: A Brief and Incomplete History of FAT32 by Raymond Chen
    • FAT32 FormatterArchived 2009-07-21 at the Wayback Machine: allows formatting volumes larger than 32 GB with FAT32 under Windows 2000, Windows XP and Windows Vista
    • Fdisk does not recognize full size of hard disks larger than 64 GB: Microsoft Knowledge Base Article 263044, copy made by Internet Archive Wayback Machine. Explains inability to work with extremely large volumes under Windows 95/98.
    • Microsoft Windows XP: FAT32 File System. Copy made by Internet Archive Wayback Machine of an article with summary of limits in FAT32 which is no longer available on Microsoft website.
    • Diseño visual de una unidad FAT16