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 ]

Cada archivo puede ocupar uno o más clústeres, dependiendo de su tamaño. Por lo tanto, un archivo se representa en la FAT mediante una lista enlazada simple . La FAT se compone de entradas de 12, 16 o 32 bits, según se trate de FAT12, FAT16 o FAT32. Las entradas consecutivas corresponden a clústeres consecutivos, y el valor de la entrada es un enlace que indica cuál es el siguiente clúster en ese archivo. Al examinar la entrada correspondiente a ese clúster, se puede determinar dónde se encuentra el siguiente, y así sucesivamente, hasta encontrar una entrada que indique que corresponde al último clúster de la cadena que contiene ese archivo. Los clústeres no necesariamente están adyacentes entre sí en la superficie del disco, sino que a menudo se encuentran fragmentados en la región de datos.

Cada versión del sistema de archivos FAT utiliza un tamaño diferente para las entradas FAT. Los números más pequeños dan como resultado una FAT más pequeña, pero desperdician espacio en particiones grandes al requerir la asignación en clústeres grandes.

El sistema de archivos FAT12 utiliza 12 bits por entrada FAT, por lo que dos entradas ocupan 3 bytes. Es consistentemente little-endian : si esos tres bytes se consideran como un número little-endian de 24 bits, los 12 bits menos significativos representan la primera entrada (p. ej., clúster 0) y los 12 bits más significativos la segunda (p. ej., clúster 1). En otras palabras, mientras que los ocho bits menos significativos del primer clúster de la fila se almacenan en el primer byte, los cuatro bits más significativos se almacenan en el nibble inferior del segundo byte, mientras que los cuatro bits menos significativos del clúster subsiguiente de la fila se almacenan en el nibble superior del segundo byte y sus ocho bits más significativos en el tercer byte.

  • Identificador FAT / marcador de endianness (en el clúster reservado n.° 0 ), donde 0xF0 indica un volumen en una unidad superfloppy no particionada (debe ser 0xF8 para discos particionados).
  • Indicador de fin de cadena / indicadores de mantenimiento (en el clúster reservado n.° 1 )
  • Segunda cadena (7 clústeres) para un archivo no fragmentado (aquí: #2, #3, #4, #5, #6, #7, #8)
  • Tercera cadena (7 clústeres) para un archivo fragmentado, posiblemente ampliado (aquí: #9, #A, #14, #15, #16, #19, #1A)
  • Cuarta cadena (7 clústeres) para un archivo no fragmentado, posiblemente truncado (aquí: #B, #C, #D, #E, #F, #10, #11)
  • Clústeres vacíos (aquí: #12, #1B, #1C, #1E, #1F)
  • Quinta cadena (1 clúster) para un subdirectorio (aquí: #13)
  • Clústeres defectuosos (3 clústeres) (aquí: #17, #18, #1D)

El sistema de archivos FAT16 utiliza 16 bits por entrada FAT, por lo que una entrada abarca dos bytes en orden de bytes little-endian:

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)]

Leyenda: 268435444+3 es 0x0FFFFFF7 , porque la versión 0 de FAT32 usa solo 28 bits en los números de clúster de 32 bits, los números de clúster 0x0FFFFFF7 hasta 0x0FFFFFFF marcan clústeres defectuosos o el final de un archivo, el número de clúster 0 marca un clúster libre y el número de clúster 1 no se usa. [ 33 ] De manera similar, 65524+3 es 0xFFF7 para FAT16, y 4084+3 es 0xFF7 para FAT12. El número de sectores por clúster es una potencia de 2 que cabe en un solo byte, el valor más pequeño es 1 ( 0x01 ), el valor más grande es 128 ( 0x80 ). Las líneas entre corchetes indican el tamaño de clúster inusual de 128, y para FAT32 los tamaños de clúster mayores de lo necesario de 32 o 64. [ 64 ]

Dado que cada entrada FAT32 ocupa 32 bits (4 bytes), el número máximo de clústeres (268435444) requiere 2097152 sectores FAT para un tamaño de sector de 512 bytes. 2097152 es 0x200000 , y almacenar este valor requiere más de dos bytes. Por lo tanto, FAT32 introdujo un nuevo valor de 32 bits en el sector de arranque FAT32 inmediatamente después del valor de 32 bits para el número total de sectores introducido en la variante FAT16B.

Las extensiones del registro de arranque introducidas con DOS 4.0 comienzan con el número mágico 40 ( 0x28 ) o 41 ( 0x29 ). Normalmente, los controladores FAT solo tienen en cuenta el número de clústeres para distinguir FAT12, FAT16 y FAT32: las cadenas legibles por humanos que identifican la variante FAT en el registro de arranque se ignoran, ya que solo existen para medios formateados con DOS 4.0 o posterior.

Determinar el número de entradas de directorio por clúster es sencillo. Cada entrada ocupa 32 bytes; esto resulta en 16 entradas por sector para un tamaño de sector de 512 bytes. El comando RMDIR/ de DOS 5 RDelimina las entradas iniciales " ." (este directorio) y " .." (directorio padre) en los subdirectorios directamente, por lo que es posible un tamaño de sector de 32 en un disco RAM para FAT12, pero requiere 2 o más sectores por clúster. Un sector de arranque FAT12 sin las extensiones de DOS 4 necesita 29 bytes antes del primer número innecesario de 32 bits de sectores ocultos FAT16B, esto deja tres bytes para el código de arranque (sin usar en un disco RAM) y el mágico 0x55 0xAA al final de todos los sectores de arranque. En Windows NT el tamaño de sector más pequeño admitido es 128.

En los sistemas operativos Windows NT,FORMAT las opciones de comando /A:128Kcorresponden /A:256Kal tamaño máximo de clúster 0x80(128) con un tamaño de sector de 1024 y 2048, respectivamente. Para el tamaño de sector común de 512, /A:64Kse obtienen 128 sectores por clúster.

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 así:

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. ^ " 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. 1 2 3 4 5 6 7 8 9 10 11 "Formatos de disquete estándar compatibles con MS-DOS" . Ayuda y soporte técnico de Microsoft. 12 de mayo de 2003. Archivado del original el 9 de enero de 2015. Consultado el 11 de septiembre de 2012 .
    23. 1 2 3 MS-DOS 3.3 Programmer's Reference . Microsoft. Julio de 1987.
    24. 1 2 3 4 5 6 7 8 9 10 "Estructura de volumen y archivos de cartuchos de disco para intercambio de información" . Norma ECMA-107 (2.ª ed.). ECMA . Junio ​​de 1995. Archivado del original el 7 de octubre de 2018. Recuperado el 30 de julio de 2011 . {{cite web}}: Mantenimiento CS1: fecha y año ( enlace )
    25. 1 2 3 4 5 6 7 8 9 10 "Tecnología de la información: estructura de volumen y archivos de cartuchos de disco para intercambio de información" (Catálogo) . ISO/IEC 9293:1994 . ISO . 1994. Archivado del original el 17 de enero de 2012. Recuperado el 6 de enero de 2012 .
    26. 1 2 3 4 5 6 7 8 9 10 "Procesamiento de información: estructura de volumen y archivos de cartuchos de discos flexibles para intercambio de información" . ISO 9293:1987 . Catálogo ISO. 1987. Archivado del original el 17 de enero de 2012. Recuperado el 6 de enero de 2012 .
    27. 1 2 3 Brouwer, Andries (2002-09-20). "El sistema de archivos FAT" . Archivado del original el 2011-10-06 . Recuperado el 2011-10-16 .
    28. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Paterson, Tim (19-12-2013) [1983]. "Microsoft DOS V1.1 y V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM" . 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.
    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. 1 2 Shustek, Len (24-03-2014). "Código fuente temprano de Microsoft MS-DOS" . computerhistory.org . Software Gems: The Computer History Museum Historical Source Code Series. Computer History Museum, Microsoft. Archivado del original el 10-08-2019 . Recuperado el 29-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.
    51. 1 2 Levin, Roy (25 de marzo de 2014). "Microsoft pone a disposición del público el código fuente de MS-DOS y Word para Windows" . Blog oficial de Microsoft . Archivado del original el 28 de marzo de 2014. Recuperado el 29 de marzo de 2014 a través de blogs.technet.com.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.
    52. "Estándar de la Asociación de Productos de Cámara e Imagen, CIPA DC-009-Translation-2010, Regla de diseño para el sistema de archivos de cámara: DCF Versión 2.0" (PDF) . cipa.jp. JEIDA/JEITA/CIPA. 2010. Archivado del original (PDF) el 30 de septiembre de 2013. Consultado el 13 de abril de 2011 .
    53. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Caldera OpenDOS Machine Readable Source Kit 7.01 . Caldera Corp. 1997.El archivo FDOS.EQU del kit de código fuente legible por máquina contiene equivalencias para las entradas de directorio correspondientes.
    54. Elliott, John C. (1998). Formatos de disco de CP/M 4.1 . Archivado del original el 26-08-2014 . Recuperado el 12-01-2026 vía seasip.demon.co.uk. CP/M 4.1 (DOS Plus [1.2]) permite el uso de dos sistemas de archivos: CP/M y DOS. La versión [...] suministrada con el Amstrad PC1512 no puede manejar disquetes más grandes que 360k (CP/M) / 1,2Mb (DOS), ni particiones de disco duro más grandes que 32Mb. [...] El sistema de archivos DOS puede ser FAT12 o FAT16. El formato es exactamente igual que en PCDOS 2.11, excepto: El byte 0Ch de la entrada del directorio [...] contiene los cuatro "atributos de usuario" F1'-F4' [...] No se admiten contraseñas de estilo DRDOS.
    55. 1 2 vinDaci (1998-01-06). "Especificación de nombre de archivo largo" . Archivado del original el 2001-04-20 . Recuperado el 2007-03-13 .
    56. Kelder, Henk. "FAT32.TXT para FAT32.IFS versión 0.74" . Macarlo, Inc. Archivado del original el 30 de marzo de 2012. Consultado el 14 de enero de 2012 .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). "Obteniendo nombres de archivo más largos de GEMDOS" . comp.sys.atari.st.tech . Archivado del original el 24-04-2014 . Recuperado el 05-05-2014 .
    70. Torvalds, Linus (1992-12-23). ​​"Nombres de archivo largos" . comp.os.minix. Archivado del original el 23-04-2014 . Recuperado el 05-05-2014 .
    71. "Página man de Linux: mount(8): montar sistema de archivos" . linux.die.net . Archivado del original el 5 de mayo de 2014. Consultado el 20 de mayo de 2014 .
    • ECMA-107 Estructura de volumen y archivo de cartuchos de disco para intercambio de información , idéntica a ISO/IEC 9293.
    • Especificación del sistema de archivos FAT32 de la Iniciativa de Firmware Extensible de Microsoft, FAT: Descripción general del formato en disco
    • Comprensión de los sistemas de archivos FAT32 (explicado para desarrolladores de firmware integrado)
    • Comprender FAT , incluyendo mucha información sobre LFN.
    • Explicación detallada del sector de arranque FAT : Artículo 140418 de la base de conocimientos de Microsoft, copia realizada por Internet Archive Wayback Machine.
    • Descripción del sistema de archivos FAT32 : Artículo 154997 de la Base de Conocimientos de Microsoft, copia realizada por Internet Archive Wayback Machine.
    • Implementación del sistema de archivos FAT12/FAT16/FAT32 para *nix : Incluye las bibliotecas libfat y fusefat, un controlador de sistema de archivos FUSE.
    • MS-DOS: Limitaciones de directorios y subdirectorios : Artículo 39927 de la Base de Conocimientos de Microsoft, copia realizada por Internet Archive Wayback Machine.
    • Descripción general de los sistemas de archivos FAT, HPFS y NTFS : Artículo 100108 de la base de conocimientos de Microsoft.
    • Límites de volumen y tamaño de archivo de los sistemas de archivos FAT : Microsoft Technet, copia realizada por Internet Archive Wayback Machine
    • Microsoft TechNet: Una breve e incompleta historia de FAT32 por Raymond Chen
    • Formateador FAT32 Archivado el 21/07/2009 en Wayback Machine : permite formatear volúmenes de más de 32 GB con FAT32 en Windows 2000 , Windows XP y Windows Vista.
    • Fdisk no reconoce el tamaño total de discos duros mayores de 64 GB : Artículo 263044 de la Base de conocimientos de Microsoft, copia realizada por Internet Archive Wayback Machine . Explica la imposibilidad de trabajar con volúmenes extremadamente grandes en Windows 95/98.
    • Microsoft Windows XP: Sistema de archivos FAT32 . Copia realizada por Internet Archive Wayback Machine de un artículo que resume las limitaciones de FAT32 y que ya no está disponible en el sitio web de Microsoft.
    • Diseño visual de una unidad FAT16