Tabla de asignación de archivos
Tabla de asignación de archivos (FAT) es un sistema de archivos desarrollado para computadoras personales. Desarrollado originalmente en 1977 para su uso en disquetes, se adaptó para su uso en discos duros y otros dispositivos. A menudo, por razones de compatibilidad, los sistemas operativos actuales para computadoras personales y muchos dispositivos móviles y sistemas integrados lo admiten, lo que permite el intercambio de datos entre sistemas dispares. El aumento de la capacidad de las unidades de disco requería tres variantes principales: FAT12, FAT16 y FAT32. El estándar FAT también se ha ampliado de otras maneras y, en general, conserva la compatibilidad con versiones anteriores del software existente.
FAT ya no es el sistema de archivos predeterminado para las computadoras con Microsoft Windows.
Los sistemas de archivos FAT todavía se encuentran comúnmente en disquetes, flash y otras tarjetas y módulos de memoria de estado sólido (incluidas las unidades flash USB), así como en muchos dispositivos portátiles e integrados. FAT es el sistema de archivos estándar para cámaras digitales según la especificación DCF.
Resumen
Conceptos
El sistema de archivos utiliza una tabla de índice almacenada en el dispositivo para identificar cadenas de áreas de almacenamiento de datos asociadas con un archivo, la Tabla de asignación de archivos (FAT). La FAT se asigna estáticamente en el momento del formateo. La tabla es una lista enlazada de entradas para cada clúster, un área contigua de almacenamiento en disco. Cada entrada contiene el número del siguiente grupo en el archivo o un marcador que indica el final del archivo, espacio en disco no utilizado o áreas reservadas especiales del disco. El directorio raíz del disco contiene el número del primer grupo de cada archivo en ese directorio. Luego, el sistema operativo puede atravesar la FAT, buscando el número de clúster de cada parte sucesiva del archivo de disco como una cadena de clúster hasta llegar al final del archivo. Los subdirectorios se implementan como archivos especiales que contienen las entradas de directorio de sus respectivos archivos.
Cada entrada en la lista enlazada FAT es un número fijo de bits: 12, 16 o 32. El tamaño máximo de un archivo o unidad de disco al que se puede acceder es el producto del mayor número que se puede almacenar en el entradas (menos unos pocos valores reservados para indicar espacio no asignado o el final de una lista) y el tamaño del clúster de discos. Incluso si solo se necesita un byte de almacenamiento para ampliar un archivo, se le debe asignar un clúster completo y un solo clúster no puede contener más de un solo archivo, por lo que los clústeres grandes desperdician mucho espacio en disco si hay una gran cantidad de archivos pequeños..
Diseñado originalmente como un sistema de archivos de 8 bits, la cantidad máxima de clústeres debe aumentar a medida que aumenta la capacidad de la unidad de disco, por lo que la cantidad de bits utilizados para identificar cada clúster ha aumentado. Las principales variantes sucesivas del formato FAT reciben el nombre del número de bits de elementos de la tabla: 12 (FAT12), 16 (FAT16) y 32 (FAT32).
Usos
El sistema de archivos FAT se ha utilizado desde 1977 para computadoras y todavía se usa con frecuencia en sistemas integrados. Los sistemas de archivos compatibles facilitan el intercambio de datos entre, por ejemplo, computadoras de escritorio y dispositivos portátiles. Los sistemas de archivos FAT son los predeterminados para los medios extraíbles, como disquetes, superdisquetes, tarjetas de memoria y memoria flash o unidades flash USB. FAT es compatible con dispositivos portátiles como PDA, cámaras digitales, videocámaras, reproductores multimedia y teléfonos móviles. Mientras que FAT12 se usa en disquetes, FAT16 y FAT32 generalmente se encuentran en medios más grandes.
FAT también se usó en discos duros durante las eras de DOS y Windows 9x. Microsoft introdujo un nuevo sistema de archivos, NTFS ("Sistema de archivos de nueva tecnología"), con la plataforma Windows NT en 1993, pero FAT siguió siendo el estándar para el usuario doméstico hasta la introducción de Windows XP basado en NT en 2001. FAT todavía se usa en discos duros que se espera que usen varios sistemas operativos, como en entornos compartidos de Windows, Linux y DOS. Microsoft Windows también viene con una herramienta preinstalada para convertir un sistema de archivos FAT en NTFS directamente sin necesidad de volver a escribir todos los archivos, aunque esto no se puede revertir directamente.
Muchos sistemas operativos brindan soporte para medios con formato FAT a través de controladores de sistemas de archivos integrados o de terceros.
El sistema de archivos DCF adoptado por casi todas las cámaras digitales desde 1998 define un sistema de archivos lógico con 8.3 nombres de archivo y hace que el uso de FAT12, FAT16, FAT32 o exFAT sea obligatorio para su capa física para compatibilidad.
FAT también se usa internamente para la partición del sistema EFI en la etapa de arranque de las computadoras compatibles con EFI. Los sistemas de archivos FAT ocultos también se utilizan en la partición de arranque UEFI en las PC modernas.
Para los disquetes, FAT se ha estandarizado como ECMA-107 e ISO/IEC 9293:1994 (en sustitución de ISO 9293:1987). Estos estándares cubren FAT12 y FAT16 con solo soporte de nombre de archivo corto 8.3; los nombres de archivo largos con VFAT fueron patentados parcialmente.
Nomenclatura
"Sistema de archivos FAT" se refiere a FAT12, FAT16 y FAT32. Es posible que las utilidades del sistema operativo no identifiquen qué versión se usará para formatear un dispositivo.
"FAT16" se refiere tanto al grupo original de sistemas de archivos FAT con entradas de clúster de 16 bits de ancho como a variantes posteriores ("FAT16B") con entradas de sector de 32 bits. Los valores almacenados en el bloque de parámetros del disco se pueden utilizar para identificar la estructura del archivo.
"VFAT" es una extensión opcional para nombres de archivos largos, que puede funcionar encima de cualquier sistema de archivos FAT. Los volúmenes que usan nombres de archivo largos VFAT también pueden ser leídos por sistemas operativos que no admitan la extensión VFAT.
El tipo general de sistema de archivos (FAT12, FAT16 o FAT32) está determinado por el ancho de las entradas del clúster en la FAT. Los valores de umbral específicos para la cantidad de clústeres, almacenados en el bloque de parámetros del disco, definen qué tipo de FAT se usa. Otras propiedades del dispositivo de almacenamiento, como el tamaño, el formato del bloque de parámetros o el nombre del sistema de archivos, no se pueden utilizar de forma fiable para derivar el tipo de sistema de archivos.
Se puede definir un volumen FAT12 o FAT16 con un "FAT32 EBPB" normalmente se utiliza para volúmenes FAT32. Los ID de partición no se utilizan para especificar un tipo de sistema de archivos por sí mismos.
Tipos
FAT original de 8 bits
El sistema de archivos FAT original (o estructura FAT, como se llamó inicialmente) fue diseñado e implementado por Marc McDonald, basado en una serie de conversaciones entre McDonald y Bill Gates.
Se introdujo con elementos de tabla de 8 bits (y números de clúster de datos válidos hasta 0xBF
) en un precursor del Disco independiente BASIC-80 de Microsoft para un 8080 basado en el sucesor del terminal de entrada de datos NCR 7200 modelo VI, equipado con disquetes de 8 pulgadas (200 mm), en 1977 o 1978.
En 1978, Standalone Disk BASIC-80 se transfirió al 8086 utilizando un emulador en un DEC PDP-10, ya que no había ningún sistema 8086 real disponible en ese momento.
El sistema de archivos FAT también se usó en MDOS/MIDAS de Microsoft, un sistema operativo para plataformas 8080/Z80 escrito por McDonald desde 1979.
La versión Standalone Disk BASIC admitía tres FAT, mientras que este era un parámetro para MIDAS. Según se informa, MIDAS también estaba preparado para admitir variantes FAT de 10, 12 y 16 bits. Mientras que el tamaño de las entradas del directorio era de 16 bytes en Disco BASIC independiente, MIDAS ocupaba 32 bytes por entrada.
Tim Paterson de Seattle Computer Products (SCP) conoció por primera vez la estructura FAT de Microsoft cuando ayudó a Bob O'Rear a adaptar el puerto del emulador Standalone Disk BASIC-86 a SCP& Prototipo de placa de CPU S-100 bus 8086 #39 durante una semana de invitados en Microsoft en mayo de 1979. El producto final se mostró en Lifeboat Associates' stand en la Conferencia Nacional de Computación en Nueva York del 4 al 7 de junio de 1979, donde Paterson aprendió sobre la implementación FAT más sofisticada en MDOS/MIDAS y McDonald habló con él sobre el diseño del sistema de archivos.
FAT12
Entre abril y agosto de 1980, mientras tomaba prestado el concepto FAT para el propio sistema operativo 8086 QDOS 0.10 de SCP, Tim Paterson amplió los elementos de la tabla a 12 bits, redujo el número de FAT a dos, redefinió la semántica de algunos de los valores de clúster reservados y modificó el diseño del disco, de modo que el directorio raíz ahora estaba ubicado entre FAT y el área de datos para su implementación de FAT12. Paterson también aumentó el límite de longitud de nombre de archivo de nueve caracteres (6.3) a once caracteres para admitir nombres de archivo 8.3 estilo CP/M y bloques de control de archivos. El formato utilizado en el precursor del sistema de archivos de 8 bits Standalone Disk BASIC de Microsoft no era compatible con QDOS. En agosto de 1980, QDOS pasó a llamarse 86-DOS. A partir de 86-DOS 0.42, el tamaño y el diseño de las entradas del directorio se cambiaron de 16 bytes a 32 bytes para agregar un sello de fecha de archivo y aumentar el límite de tamaño de archivo teórico más allá del límite anterior de 16 MB. 86-DOS 1.00 estuvo disponible a principios de 1981. Posteriormente, en 1981, 86-DOS evolucionó hasta convertirse en MS-DOS de Microsoft e IBM PC DOS. La capacidad de leer volúmenes formateados previamente con entradas de directorio de 16 bytes se eliminó con MS-DOS 1.20.
FAT12 usaba entradas de 12 bits para las direcciones del clúster; algunos valores se reservaron para marcar el final de una cadena de clústeres, para marcar áreas inutilizables del disco o para otros fines, por lo que el número máximo de clústeres se limitó a 4078. Para conservar espacio en disco, se utilizaron dos entradas FAT de 12 bits tres bytes consecutivos de 8 bits en el disco, lo que requiere manipulación para desempaquetar los valores de 12 bits. Esto fue suficiente para las unidades de disquete originales y los discos duros pequeños de hasta 32 megabytes. La versión FAT16B disponible con DOS 3.31 admitía números de sector de 32 bits, por lo que aumentó el límite de tamaño del volumen.
Todas las estructuras de control caben dentro de la primera pista, para evitar el movimiento de la cabeza durante las operaciones de lectura y escritura. Cualquier sector defectuoso en el área de estructuras de control inutilizaría el disco. La herramienta de formateo de DOS rechazó estos discos por completo. Los sectores defectuosos solo se permitían en el área de datos del archivo. Los clústeres que contenían sectores defectuosos se marcaron como inutilizables con el valor reservado 0xFF7
en la FAT.
Mientras que 86-DOS admitía tres formatos de disco (250,25 KB, 616 KB y 1232 KB con FAT ID 0xFF
y 0xFE
) en unidades de disquete de 8 pulgadas (200 mm), IBM PC DOS 1.0, lanzado con la IBM Personal Computer original en 1981, solo admitía un formato de disquete de 8 sectores con una capacidad formateada de 160 KB (FAT ID 0xFE
) para discos de 5,25 pulgadas de una sola cara. unidades de disquete y PC DOS 1.1 agregó soporte para un formato de doble cara con 320 KB (FAT ID 0xFF
). PC DOS 2.0 introdujo soporte para formatos de disquete de 9 sectores con 180 KB (FAT ID 0xFC
) y 360 KB (FAT ID 0xFD
).
Las entradas de directorio 86-DOS 1.00 y PC DOS 1.0 incluían solo una fecha, la última fecha de modificación. PC DOS 1.1 agregó la hora de última modificación. Los atributos de archivo de PC DOS 1.x incluían un bit oculto y un bit de sistema, con los seis bits restantes sin definir. En ese momento, DOS no admitía subdirectorios, pero normalmente solo había unas pocas docenas de archivos en un disquete.
La PC XT fue la primera PC con un disco duro proporcionado por IBM, y PC DOS 2.0 admitía ese disco duro con FAT12 (FAT ID 0xF8
). La suposición fija de 8 sectores por clúster en los discos duros prácticamente limitaba el tamaño máximo de partición a 16 MB para sectores de 512 bytes y clústeres de 4 KB.
El bloque de parámetros del BIOS (BPB) también se introdujo con PC DOS 2.0, y esta versión también agregó solo lectura, archivo, etiqueta de volumen y atributo de directorio. bits para subdirectorios jerárquicos.
MS-DOS 3.0 introdujo soporte para disquetes de alta densidad de 1,2 MB y 5,25 pulgadas (descriptor de medios 0xF9
), que tenían 15 sectores por pista, por lo tanto, más espacio para las FAT.
FAT12 sigue en uso en todos los disquetes comunes, incluidos los discos de 1,44 MB y posteriores de 2,88 MB (byte descriptor de medios 0xF0
).
FAT16 inicial
En 1984, IBM lanzó PC AT, que requería PC DOS 3.0 para acceder a su disco duro de 20 MB. Microsoft introdujo MS-DOS 3.0 en paralelo. Las direcciones de clúster se aumentaron a 16 bits, lo que permitió hasta 65 526 clústeres por volumen. Sin embargo, la cantidad máxima posible de sectores y el tamaño máximo de partición de 32 MB no cambiaron. Aunque las direcciones de clúster eran de 16 bits, este formato no era lo que hoy en día se entiende comúnmente como FAT16.
Un tipo de partición 0x04
indica esta forma de FAT16 con menos de 65 536 sectores (menos de 32 MB para el tamaño de sector 512). El beneficio de FAT16 fue el uso de clústeres más pequeños, lo que hizo que el uso del disco fuera más eficiente, particularmente para grandes cantidades de archivos de solo unos cientos de bytes de tamaño.
Como MS-DOS 3.0 formateó todas las particiones de 16 MB a 32 MB en formato FAT16, MS-DOS 2.0 no podía acceder a un disco duro de 20 MB formateado con MS-DOS 3.0. MS-DOS 3.0 a MS-DOS 3.30 aún podía acceder a particiones FAT12 de menos de 15 MB, pero requería que todas las particiones de 16 MB a 32 MB fueran FAT16, por lo que no podía acceder a particiones MS-DOS 2.0 en este rango de tamaño. MS-DOS 3.31 y versiones posteriores podrían acceder de nuevo a particiones FAT12 de 16 MB a 32 MB.
FAT lógica sectorizada
Las implementaciones de MS-DOS y PC DOS de FAT12 y FAT16 no podían acceder a particiones de disco de más de 32 megabytes. Varios fabricantes desarrollaron sus propias variantes FAT dentro de sus versiones OEM de MS-DOS.
Algunos proveedores (AST y NEC) admitieron ocho entradas de partición primaria, en lugar de las cuatro estándar, en su Master Boot Record extendido personalizado (MBR), y adaptaron MS-DOS para usar más de una sola partición primaria.
Otros proveedores sortearon los límites de tamaño de volumen impuestos por las entradas de sector de 16 bits aumentando el tamaño aparente de los sectores en los que operaba el sistema de archivos. Estos sectores lógicos eran más grandes (hasta 8192 bytes) que el tamaño del sector físico (todavía 512 bytes) en el disco. El DOS-BIOS o BIOS del sistema luego combinaría múltiples sectores físicos en sectores lógicos para que funcione el sistema de archivos.
Estos cambios fueron transparentes para la implementación del sistema de archivos en el kernel de DOS. El DOS-BIOS subyacente tradujo estos sectores lógicos en sectores físicos de acuerdo con la información de partición y la geometría física de la unidad.
La desventaja de este enfoque fue el aumento de la memoria utilizada para el almacenamiento en búfer y el desbloqueo de sectores. Dado que las versiones anteriores de DOS no podían usar grandes sectores lógicos, los OEM introdujeron nuevas identificaciones de partición para sus variantes FAT para ocultarlas de los problemas estándar de MS-DOS y PC DOS. Los ID de partición conocidos para FAT con sectores lógicos incluyen: 0x08
(Commodore MS-DOS 3.x), 0x11
(Leading Edge MS-DOS 3.x), 0x14
(AST MS-DOS 3.x), 0x24
(NEC MS-DOS 3.30), 0x56
(AT&T MS-DOS 3.x), 0xE5
(Tandy MS-DOS), 0xF2
(Sperry IT MS-DOS 3.x, Unisys MS-DOS 3.3, también utilizado por Digital Research DOS Plus 2.1). También se sabe que las versiones OEM como Toshiba MS-DOS, Wyse MS-DOS 3.2 y 3.3, así como Zenith MS-DOS, han utilizado sectorización lógica.
Aunque no son estándar y no son óptimas, estas variantes de FAT son perfectamente válidas de acuerdo con las especificaciones del propio sistema de archivos. Por lo tanto, incluso si los problemas predeterminados de MS-DOS y PC DOS no pudieron resolverlos, la mayoría de estas variantes FAT12 y FAT16 específicas del proveedor se pueden montar mediante implementaciones de sistemas de archivos más flexibles en sistemas operativos como DR-DOS, simplemente cambiando el ID de la partición a uno de los tipos reconocidos. Además, si ya no necesitan ser reconocidos por sus sistemas operativos originales, las particiones existentes se pueden "convertir" en volúmenes FAT12 y FAT16 más compatibles con versiones de MS-DOS/PC DOS 4.0–6.3, que no admiten tamaños de sector diferentes de 512 bytes, al cambiar a un BPB con entrada de 32 bits para el número de sectores, como se introdujo desde DOS 3.31 (consulte FAT16B a continuación), manteniendo el tamaño del clúster y reduciendo el tamaño del sector lógico en el BPB a 512 bytes, mientras que al mismo tiempo aumenta el recuento de sectores lógicos por clúster, sectores lógicos reservados, sectores lógicos totales y lógicos. sectores por FAT por el mismo factor.
Un desarrollo paralelo en MS-DOS/PC DOS que permitió aumentar el tamaño FAT máximo posible fue la introducción de múltiples particiones FAT en un disco duro. Para permitir el uso de más particiones FAT de forma compatible, se introdujo un nuevo tipo de partición en PC DOS 3.2 (1986), la partición extendida (EBR), que es un contenedor para una partición adicional denominada unidad lógica. Desde PC DOS 3.3 (abril de 1987), hay otra partición extendida opcional que contiene la siguiente unidad lógica, y así sucesivamente. El MBR de un disco duro puede definir hasta cuatro particiones primarias o una partición extendida además de hasta tres particiones primarias.
FAT16 definitivo
En noviembre de 1987, Compaq Personal Computer DOS 3.31 (una versión OEM modificada de MS-DOS 3.3 lanzada por Compaq con sus máquinas) introdujo lo que hoy se conoce simplemente como formato FAT16, con la expansión del sector del disco de 16 bits cuenta hasta 32 bits en el BPB.
Aunque los cambios en el disco fueron menores, todo el controlador de disco de DOS tuvo que convertirse para usar números de sector de 32 bits, una tarea complicada por el hecho de que estaba escrito en lenguaje ensamblador de 16 bits.
El resultado se denominó inicialmente DOS 3.31 Large File System. La herramienta DSKPROBE
de Microsoft hace referencia al tipo 0x06
como BigFAT, mientras que algunas versiones anteriores de FDISK
lo describían como BIGDOS. Técnicamente, se conoce como FAT16B.
Dado que las versiones anteriores de DOS no se diseñaron para hacer frente a más de 65 535 sectores, fue necesario introducir un nuevo tipo de partición para este formato a fin de ocultarlo de los problemas de DOS anteriores a la versión 3.31. La forma original de FAT16 (con menos de 65.536 sectores) tenía un tipo de partición 0x04
. Para manejar discos más grandes que este, se introdujo el tipo 0x06
para indicar 65 536 o más sectores. Además de esto, el controlador de disco también se amplió para hacer frente a más de 65 535 sectores. La única otra diferencia entre el FAT16 original y el formato FAT16B más nuevo es el uso de un formato BPB más nuevo con entrada de sector de 32 bits. Por lo tanto, los sistemas operativos más nuevos que admiten el formato FAT16B también pueden hacer frente al formato FAT16 original sin los cambios necesarios.
Si es necesario crear particiones con versiones anteriores a DOS 3.31 de DOS con herramientas modernas, los únicos criterios teóricamente necesarios para cumplir son un recuento de sectores inferior a 65536 y el uso del ID de partición anterior (0x04). Sin embargo, en la práctica, las particiones primarias de tipo 0x01
y 0x04
no deben ubicarse físicamente fuera de los primeros 32 MB del disco, debido a otras restricciones en MS-DOS 2.x, que no podría hacerles frente de otro modo.
En 1988, la mejora FAT16B estuvo disponible de forma más generalizada a través de DR DOS 3.31, PC DOS 4.0, OS/2 1.1 y MS-DOS 4.0. El límite en el tamaño de la partición fue dictado por el conteo de sectores por clúster de 8 bits con signo, que originalmente tenía un valor máximo de potencia de dos de 64. Con el tamaño estándar del sector del disco duro de 512 bytes, esto da un máximo de 32 Tamaño del clúster de KB, por lo que se corrige el "definitivo" límite para el tamaño de partición FAT16 de 2 GB para tamaño de sector 512. En medios magneto-ópticos, que pueden tener sectores de 1 o 2 KB en lugar de 0,5 KB, este límite de tamaño es proporcionalmente mayor.
Mucho más tarde, Windows NT aumentó el tamaño máximo del clúster a 64 KB al considerar el recuento de sectores por clúster como sin firmar. Sin embargo, el formato resultante no era compatible con ninguna otra implementación FAT de la época y generaba una mayor fragmentación interna. Windows 98, SE y ME también admitían la lectura y escritura de esta variante, pero sus utilidades de disco no funcionaban con ella y algunos servicios de FCB no están disponibles para dichos volúmenes. Esto contribuye a una situación de compatibilidad confusa.
Antes de 1995, las versiones de DOS accedían al disco solo a través del direccionamiento CHS. Cuando Windows 95 (MS-DOS 7.0) introdujo el acceso al disco LBA, las particiones podrían comenzar a ubicarse físicamente fuera de la primera c. 8 GB de este disco y, por lo tanto, fuera del alcance del esquema de direccionamiento CHS tradicional. Por lo tanto, las particiones ubicadas parcial o totalmente más allá de la barrera CHS tenían que ocultarse de los sistemas operativos no habilitados para LBA mediante el uso del nuevo tipo de partición 0x0E
en la tabla de particiones. Las particiones FAT16 que utilizan este tipo de partición también se denominan FAT16X. La única diferencia, en comparación con las particiones FAT16 anteriores, es el hecho de que algunas entradas de geometría relacionadas con CHS en el registro BPB, a saber, el número de sectores por pista y el número de cabezas, pueden no contener valores o ser engañosos y no deben usarse.
La cantidad de entradas del directorio raíz disponibles para FAT12 y FAT16 se determina cuando se formatea el volumen y se almacena en un campo de 16 bits. Para un número determinado RDE
y tamaño de sector SS
, el número RDS
de sectores del directorio raíz es RDS = ceil((RDE × 32) / SS)
, y RDE
normalmente se elige para llenar estos sectores, es decir, RDE × 32 = RDS × SS
. Los medios FAT12 y FAT16 suelen utilizar 512 entradas de directorio raíz en medios que no son disquetes. Algunas herramientas de terceros, como mkdosfs, permiten al usuario establecer este parámetro.
FAT32
Para superar el límite de tamaño de volumen de FAT16, y al mismo tiempo permitir que el código de modo real de DOS maneje el formato, Microsoft diseñó una nueva versión del sistema de archivos, FAT32, que Admitía un mayor número de posibles clústeres, pero podía reutilizar la mayor parte del código existente, de modo que la huella de memoria convencional se incrementó en menos de 5 KB en DOS. Los valores de clúster están representados por números de 32 bits, de los cuales 28 bits se utilizan para contener el número de clúster.
Tamaños máximos
El sector de arranque FAT32 utiliza un campo de 32 bits para el recuento de sectores, lo que limita el tamaño máximo del volumen FAT32 a 2 terabytes con un tamaño de sector de 512 bytes. El tamaño máximo del volumen FAT32 es de 16 TB con un tamaño de sector de 4096 bytes. La herramienta integrada de formato de disco de shell de Windows en Windows NT solo admite tamaños de volumen de hasta 32 GB, pero Windows admite la lectura y escritura en volúmenes FAT32 más grandes preexistentes, y estos se pueden crear con el símbolo del sistema, PowerShell o herramientas de terceros. o formateando el volumen en un sistema que no sea Windows o en un sistema Windows 9x compatible con FAT32 y luego transfiriéndolo al sistema Windows NT.
El tamaño máximo posible para un archivo en un volumen FAT32 es 4 GB menos 1 byte, o 4 294 967 295 (232 − 1) bytes. Este límite es una consecuencia de la entrada de longitud de archivo de 4 bytes en la tabla de directorio y también afectaría a las particiones FAT16 relativamente grandes habilitadas por un tamaño de sector suficiente.
Al igual que FAT12 y FAT16, FAT32 no incluye soporte integrado directo para nombres de archivo largos, pero los volúmenes FAT32 pueden contener opcionalmente nombres de archivo largos VFAT además de nombres de archivo cortos exactamente de la misma manera que los nombres de archivo largos VFAT se implementaron opcionalmente para FAT12 y volúmenes FAT16.
Desarrollo
FAT32 se introdujo con Windows 95 OSR2 (MS-DOS 7.1) en 1996, aunque era necesario volver a formatear para usarlo y DriveSpace 3 (la versión que vino con Windows 95 OSR2 y Windows 98) nunca lo admitió. Windows 98 introdujo una utilidad para convertir discos duros existentes de FAT16 a FAT32 sin pérdida de datos.
En la línea de Windows NT, el soporte nativo para FAT32 llegó en Windows 2000. Un controlador FAT32 gratuito para Windows NT 4.0 estaba disponible en Winternals, una empresa adquirida posteriormente por Microsoft. La adquisición del controlador de fuentes oficiales ya no es posible. Desde 1998, el controlador DRFAT32 cargable dinámicamente de Caldera podría usarse para habilitar la compatibilidad con FAT32 en DR-DOS. La primera versión de DR-DOS que admitió de forma nativa el acceso FAT32 y LBA fue OEM DR-DOS 7.04 en 1999. Ese mismo año, IMS introdujo la compatibilidad nativa con FAT32 con REAL/32 7.90 e IBM 4690 OS agregó compatibilidad con FAT32 con la versión 2. Ahead Software proporcionó otro controlador FAT32.EXE cargable dinámicamente para DR-DOS 7.03 con Nero Burning ROM en 2004. IBM introdujo la compatibilidad nativa con FAT32 con OEM PC DOS 7.1 en 1999.
Se han reservado dos tipos de partición para las particiones FAT32, 0x0B
y 0x0C
. El último tipo también se denomina FAT32X para indicar el uso del acceso al disco LBA en lugar de CHS. En tales particiones, las entradas de geometría relacionadas con CHS, es decir, las direcciones de sector CHS en el MBR, así como el número de sectores por pista y el número de cabezas en el registro EBPB, pueden no contener valores o contener valores engañosos y no deben usarse.
Extensiones
Atributos extendidos
OS/2 depende en gran medida de los atributos extendidos (EA) y los almacena en un archivo oculto llamado "EA␠DATA.␠SF
" en el directorio raíz del volumen FAT12 o FAT16. Este archivo está indexado por dos bytes previamente reservados en la entrada de directorio del archivo (o directorio) en el desplazamiento 0x14. En el formato FAT32, estos bytes contienen los 16 bits superiores del número de clúster inicial del archivo o directorio, por lo que es imposible almacenar OS/2 EA en FAT32 utilizando este método.
Sin embargo, el controlador del sistema de archivos instalable (IFS) FAT32 de terceros FAT32.IFS versión 0.70 y superior de Henk Kelder & Netlabs para OS/2, eComStation y ArcaOS almacena atributos extendidos en archivos adicionales con nombres de archivo que tienen la cadena "␠EA.␠SF
" anexados al nombre de archivo normal del archivo al que pertenecen. El controlador también utiliza el byte en el desplazamiento 0x0C en las entradas del directorio para almacenar un byte de marca especial que indica la presencia de atributos extendidos para ayudar a acelerar las cosas. (Esta extensión es críticamente incompatible con el método FAT32+ para almacenar archivos de más de 4 GB menos 1 en volúmenes FAT32).
Se puede acceder a los atributos extendidos a través del escritorio de Workplace Shell, a través de secuencias de comandos REXX y muchas utilidades de línea de comandos y GUI del sistema (como 4OS2).
Para adaptarse a su subsistema OS/2, Windows NT admite el manejo de atributos extendidos en HPFS, NTFS, FAT12 y FAT16. Almacena EA en FAT12, FAT16 y HPFS utilizando exactamente el mismo esquema que OS/2, pero no admite ningún otro tipo de ADS que se mantenga en volúmenes NTFS. Intentar copiar un archivo con cualquier ADS que no sea EA de un volumen NTFS a un volumen FAT o HPFS da un mensaje de advertencia con los nombres de los ADS que se perderán. No es compatible con el método FAT32.IFS para almacenar EA en volúmenes FAT32.
Windows 2000 en adelante actúa exactamente como Windows NT, excepto que ignora los EA al copiar a FAT32 sin ninguna advertencia (pero muestra la advertencia para otros ADS, como "Información del buscador de Macintosh" y "Macintosh Tenedor de recursos").
Cygwin usa "EA␠DATA.␠SF
" archivos también.
Nombres de archivos largos
Uno de los objetivos de la experiencia del usuario para los diseñadores de Windows 95 era la capacidad de usar nombres de archivo largos (LFN: hasta 255 unidades de código UTF-16), además de los nombres de archivo clásicos 8.3 (SFN). Para la compatibilidad con versiones anteriores y posteriores, los LFN se implementaron como una extensión opcional sobre las estructuras del sistema de archivos FAT existentes utilizando una solución alternativa en la forma en que se distribuyen las entradas del directorio.
Este método transparente para almacenar nombres de archivos largos en los sistemas de archivos FAT existentes sin alterar sus estructuras de datos generalmente se conoce como VFAT (por "FAT virtual") después de Windows 95 controlador de dispositivo virtual.
Los sistemas operativos no habilitados para VFAT aún pueden acceder a los archivos con su alias de nombre de archivo corto sin restricciones; sin embargo, los nombres de archivo largos asociados pueden perderse cuando los archivos con nombres de archivo largos se copian en sistemas operativos que no son compatibles con VFAT.
En Windows NT, la compatibilidad con nombres de archivo largos VFAT comenzó con la versión 3.5.
Linux proporciona un controlador de sistema de archivos VFAT para trabajar con volúmenes FAT con nombres de archivo largos VFAT. Durante algún tiempo, estuvo disponible un controlador UVFAT para brindar soporte combinado para permisos de estilo UMSDOS con nombres de archivo largos VFAT.
OS/2 agregó compatibilidad con nombres de archivo largos a FAT usando atributos extendidos (EA) antes de la introducción de VFAT. Por lo tanto, los nombres de archivo largos de VFAT son invisibles para OS/2 y los nombres de archivo largos de EA son invisibles para Windows; por lo tanto, los usuarios experimentados de ambos sistemas operativos tendrían que cambiar manualmente el nombre de los archivos.
Human68K admite hasta 18,3 nombres de archivo y caracteres Kanji (Shift JIS) en una variante del sistema de archivos FAT propietario.
Para admitir aplicaciones Java, IBM 4690 OS versión 2 basado en FlexOS introdujo su propia arquitectura de sistema de archivos virtual (VFS) para almacenar nombres de archivo largos en el sistema de archivos FAT de manera compatible con versiones anteriores. Si está habilitado, los nombres de archivos virtuales (VFN) están disponibles en letras de unidades lógicas separadas, mientras que los nombres de archivos reales (RFN) permanecen disponibles en las letras de unidades originales.
Bifurcaciones y flujos de datos alternativos
El sistema de archivos FAT en sí no está diseñado para admitir flujos de datos alternativos (ADS), pero algunos sistemas operativos que dependen en gran medida de ellos han ideado varios métodos para manejarlos en volúmenes FAT. Dichos métodos almacenan la información adicional en archivos y directorios adicionales (Mac OS y macOS clásicos), o dan una nueva semántica a los campos no utilizados anteriormente de las estructuras de datos FAT en disco (OS/2 y Windows NT).
Mac OS que usa PC Exchange almacena sus diversas fechas, atributos de archivos y nombres largos de archivos en un archivo oculto llamado "FINDER.DAT
", y bifurcaciones de recursos (un archivo común de Mac OS ADS) en un subdirectorio llamado "RESOURCE.FRK
", en cada directorio donde se utilizan. Desde PC Exchange 2.1 en adelante, almacenan los nombres de archivo largos de Mac OS como nombres de archivo largos FAT estándar y convierten los nombres de archivo FAT de más de 31 caracteres en nombres de archivo únicos de 31 caracteres, que luego pueden hacerse visibles para las aplicaciones de Macintosh.
macOS almacena bifurcaciones de recursos y metadatos (atributos de archivo, otros ADS) usando el formato AppleDouble en un archivo oculto con un nombre construido a partir del nombre de archivo del propietario con el prefijo "._
" y Finder almacena algunos metadatos de carpetas y archivos en un archivo oculto llamado ".DS_Store
" (pero tenga en cuenta que Finder usa .DS_Store
incluso en el sistema de archivos nativo de macOS, HFS+).
Permisos UMSDOS y nombres de archivo
Las primeras distribuciones de Linux también admitían un formato conocido como UMSDOS, una variante FAT con atributos de archivo Unix (como nombre de archivo largo y permisos de acceso) almacenados en un archivo separado llamado "--linux-.- --". UMSDOS cayó en desuso después del lanzamiento de VFAT y no está habilitado de forma predeterminada en Linux desde la versión 2.5.7 en adelante. Durante algún tiempo, Linux también brindó soporte combinado para permisos de estilo UMSDOS y nombres de archivo largos VFAT a través de UVFAT.
FAT+
En 2007, el borrador FAT+ abierto proponía cómo almacenar archivos más grandes de hasta 256 GB menos 1 byte, o 274 877 906 943 (238 − 1) bytes, en archivos ligeramente modificados. y otros volúmenes FAT32 compatibles con versiones anteriores, pero impone el riesgo de que las herramientas de disco o las implementaciones de FAT32 que no conocen esta extensión puedan truncar o eliminar archivos que excedan el límite normal de tamaño de archivo FAT32. La compatibilidad con FAT32+ y FAT16+ está limitada a algunas versiones de DR-DOS y no está disponible en los principales sistemas operativos. (Esta extensión es críticamente incompatible con la opción /EAS
del método FAT32.IFS para almacenar atributos extendidos de OS/2 en volúmenes FAT32).
Derivados
Turbo GRASA
En su sistema de archivos NetWare (NWFS), Novell implementó una variante muy modificada de un sistema de archivos FAT para el sistema operativo NetWare. Para archivos más grandes, utilizó una función de rendimiento llamada Turbo FAT.
FATX
FATX es una familia de sistemas de archivos diseñada para las unidades de disco duro y las tarjetas de memoria de la consola de videojuegos Xbox de Microsoft, presentada en 2001.
Si bien se asemejan a las mismas ideas de diseño básicas que FAT16 y FAT32, las estructuras en disco FATX16 y FATX32 están simplificadas, pero son fundamentalmente incompatibles con los sistemas de archivos FAT16 y FAT32 normales., lo que hace imposible que los controladores del sistema de archivos FAT normales monten dichos volúmenes.
El sector de superbloque no arrancable tiene un tamaño de 4 KB y tiene una estructura similar a BPB de 18 bytes de tamaño completamente diferente de los BPB normales. Los clústeres suelen tener un tamaño de 16 KB y solo hay una copia de la FAT en la Xbox. Las entradas del directorio tienen un tamaño de 64 bytes en lugar de los 32 bytes normales. Los archivos pueden tener nombres de archivo de hasta 42 caracteres con el conjunto de caracteres OEM y tener un tamaño de hasta 4 GB menos 1 byte. Las marcas de tiempo en el disco contienen fechas y horas de creación, modificación y acceso, pero difieren de FAT: en FAT, la época es 1980; en FATX, la época es 2000. En Xbox 360, la época es 1980.
ExFAT
exFAT es un sistema de archivos que se introdujo con Windows Embedded CE 6.0 en noviembre de 2006 y se incorporó a la familia de Windows NT con Vista Service Pack 1 y Windows XP Service Pack 3 (o una instalación separada de Windows XP Update KB955704). Se basa libremente en la arquitectura de la tabla de asignación de archivos, pero es incompatible, propietario y está protegido por patentes.
exFAT está diseñado para usarse en unidades flash y tarjetas de memoria como SDXC y Memory Stick XC, donde se usa FAT32. Los proveedores suelen preformatear las tarjetas SDXC con él. Su principal ventaja es que supera el límite de tamaño de archivo de 4 GB, ya que las referencias de tamaño de archivo se almacenan con ocho en lugar de cuatro bytes, lo que aumenta el límite a 264 − 1 bits.
Las utilidades de formato de línea de comandos y GUI de Microsoft lo ofrecen como una alternativa a NTFS (y, para particiones más pequeñas, a FAT16B y FAT32). El tipo de partición MBR es 0x07
(el mismo que se usa para IFS, HPFS y NTFS). La información de geometría lógica ubicada en el VBR se almacena en un formato que no se parece a ningún tipo de BPB.
A principios de 2010, el Instituto SANS realizó una ingeniería inversa del sistema de archivos. El 28 de agosto de 2019, Microsoft anunció que pondrá a disposición del público la especificación técnica de exFAT para que pueda usarse en el kernel de Linux y otros sistemas operativos.
Patentes
Microsoft solicitó y obtuvo una serie de patentes para partes clave del sistema de archivos FAT a mediados de la década de 1990. Los cuatro pertenecen a extensiones de nombre de archivo largo para FAT vistas por primera vez en Windows 95: patente de EE. UU. 5,579,517, patente de EE. UU. 5,745,902, patente de EE. UU. 5,758,352, patente de EE. UU. 6,286,013 (todas vencidas desde 2013).
El 3 de diciembre de 2003, Microsoft anunció que ofrecería licencias para el uso de su especificación FAT y "propiedad intelectual asociada", al costo de un 0,25 USD de regalías por unidad vendida, con una regalía máxima de 250 000 USD por acuerdo de licencia. Con este fin, Microsoft citó cuatro patentes sobre el sistema de archivos FAT como base de sus reclamos de propiedad intelectual.
En la especificación EFI FAT32, Microsoft otorga específicamente una serie de derechos, que muchos lectores han interpretado como que permite a los proveedores de sistemas operativos implementar FAT.
Las patentes que no son de Microsoft que afectan a FAT incluyen: la patente de EE. UU. 5.367.671, específica de los atributos de objetos extendidos de OS/2 (caducada en 2011).
Imputaciones y juicios
La Public Patent Foundation (PUBPAT) presentó pruebas a la Oficina de Patentes y Marcas de EE. UU. (USPTO) en 2004 para disputar la validez de la patente de EE. UU. 5579517, incluidas las referencias del estado de la técnica de Xerox e IBM. La USPTO abrió una investigación y concluyó rechazando todas las reivindicaciones de la patente. Al año siguiente, la USPTO anunció además que, tras el proceso de reexamen, afirmó el rechazo de '517 y, además, declaró inválida la patente de EE. UU. 5.758.352 debido a que la patente tenía cesionarios incorrectos.
Sin embargo, en 2006, la USPTO dictaminó que las características de la implementación del sistema FAT de Microsoft eran "novedosas y no obvias", anulando las decisiones anteriores y dejando válidas las patentes.
En febrero de 2009, Microsoft presentó una demanda por infracción de patente contra TomTom alegando que los productos del fabricante del dispositivo infringen las patentes relacionadas con los nombres de archivo largos VFAT. Dado que algunos productos de TomTom se basan en Linux, esta fue la primera vez que Microsoft trató de hacer cumplir sus patentes contra la plataforma Linux. La demanda se resolvió fuera de los tribunales el mes siguiente con un acuerdo en el que se le da acceso a Microsoft a cuatro de las patentes de TomTom, que TomTom dejará de admitir los nombres de archivo largos VFAT de sus productos y que, a cambio, Microsoft no buscará soluciones legales. acción contra TomTom durante los cinco años de duración del acuerdo de conciliación.
En octubre de 2010, Microsoft presentó una demanda por infracción de patente contra Motorola alegando que varias patentes (incluidas dos de las patentes VFAT) no tenían licencia para su uso en el sistema operativo Android. También presentaron una denuncia ante el ITC. Los desarrolladores de software de código abierto han diseñado métodos destinados a eludir las patentes de Microsoft.
En 2013, la patente EP0618540 "espacio de nombre común para nombres de archivo largos y cortos" (caducado desde 2014) fue invalidado en Alemania. Retirado el recurso, esta sentencia quedó firme el 28 de octubre de 2015.
Contenido relacionado
Programación genérica
Notación húngara
Algoritmo de Shor