File Allocation Table ( FAT ) es un sistema de archivos desarrollado para computadoras personales y fue el sistema de archivos predeterminado para los sistemas operativos MS-DOS y Windows 9x . [ cita requerida ] Originalmente desarrollado en 1977 para su uso en disquetes , fue adaptado para su uso en discos duros y otros dispositivos. El aumento de la capacidad de las unidades de disco con el tiempo impulsó modificaciones al diseño que dieron como resultado las versiones: FAT12, FAT16, FAT32 y exFAT . FAT fue reemplazado por NTFS como el sistema de archivos predeterminado en los sistemas operativos de Microsoft a partir de Windows XP . [3] Sin embargo, FAT continúa siendo comúnmente utilizado en tecnologías de almacenamiento de estado sólido de capacidad relativamente pequeña , como tarjetas SD , MultiMediaCard (MMC) y eMMC debido a su compatibilidad y facilidad de implementación. [4]
FAT se utilizó en los discos duros durante las eras de DOS y Windows 9x . Microsoft introdujo NTFS 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 en 2001. Windows Me fue la última versión de Windows que utilizó FAT como sistema de archivos predeterminado.
Para los disquetes, FAT se ha estandarizado como ECMA -107 [5] e ISO / IEC 9293:1994 [6] (reemplazando a ISO 9293:1987 [7] ). Estos estándares cubren FAT12 y FAT16 con solo soporte para nombres de archivo cortos 8.3 ; los nombres de archivo largos con VFAT fueron parcialmente patentados. [8] Mientras que FAT12 se usa en disquetes, FAT16 y FAT32 se encuentran típicamente en los medios más grandes.
FAT se utiliza internamente para la partición del sistema EFI en la etapa de arranque de las computadoras compatibles con EFI . [9] Los sistemas de archivos FAT ocultos también se utilizan en la partición de arranque UEFI en las PC modernas.
FAT todavía se utiliza en unidades que se espera que sean utilizadas por 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 la necesidad de reescribir todos los archivos, aunque esto no se puede revertir fácilmente. [10] El sistema de archivos FAT se utiliza en medios extraíbles como disquetes , superdisquetes , tarjetas de 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. [ cita requerida ]
El sistema de archivos DCF adoptado por casi todas las cámaras digitales desde 1998 define un sistema de archivos lógico con nombres de archivo 8.3 y hace obligatorio el uso de FAT12, FAT16, FAT32 o exFAT para su capa física por motivos de compatibilidad. [11]
El sistema de archivos utiliza una tabla de índices 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 clúster 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 clúster de cada archivo en ese directorio. El sistema operativo puede entonces recorrer la FAT, buscando el número de clúster de cada parte sucesiva del archivo de disco como una cadena de clústeres hasta que se alcanza el final del archivo. Los subdirectorios se implementan como archivos especiales que contienen las entradas de directorio de sus respectivos archivos.
Cada entrada de la lista enlazada FAT es una cantidad fija de bits: 12, 16 o 32. El tamaño máximo de un archivo o una unidad de disco al que se puede acceder es el producto del número más grande que se puede almacenar en las entradas (menos algunos 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. Como resultado, una gran cantidad de archivos pequeños puede dar como resultado que se asignen clústeres que pueden contener principalmente datos "vacíos" para cumplir con el tamaño mínimo del clúster.
Originalmente diseñado como un sistema de archivos de 8 bits, el número máximo de clústeres debe aumentar a medida que aumenta la capacidad de la unidad de disco, por lo que el número de bits utilizados para identificar cada clúster ha aumentado. Las variantes principales sucesivas del formato FAT reciben su nombre según el número de bits de los elementos de la tabla: 12 (FAT12), 16 (FAT16) y 32 (FAT32).
Existen varias variantes del sistema de archivos FAT (por ejemplo, FAT12, FAT16 y FAT32). FAT16 hace referencia tanto al grupo original de sistemas de archivos FAT con entradas de clúster de 16 bits de ancho como a variantes posteriores. "VFAT" es una extensión opcional para nombres de archivo largos, que puede funcionar sobre cualquier sistema de archivos FAT. Los volúmenes que utilizan nombres de archivo largos VFAT también pueden ser leídos por sistemas operativos que no admitan la extensión VFAT.
El sistema de archivos FAT original (o estructura FAT , como se llamó inicialmente) fue diseñado e implementado por Marc McDonald , [14] basándose en una serie de discusiones entre McDonald y Bill Gates . [14]
Fue introducido con elementos de tabla de 8 bits [12] [13] [14] (y números de clúster de datos válidos hasta 0xBF
[12] [13] ) en un precursor del Standalone Disk BASIC-80 de Microsoft para un sucesor basado en 8080 [nb 2] del terminal de entrada de datos NCR 7200 modelo VI , equipado con disquetes de 8 pulgadas (200 mm), en 1977 [15] o 1978. [nb 2]
En 1978, Standalone Disk BASIC-80 fue portado al 8086 usando un emulador en un DEC PDP-10 , [16] ya que no había sistemas 8086 reales disponibles en ese momento. El sistema de archivos FAT también se utilizó en MDOS/MIDAS de Microsoft , [14] un sistema operativo para plataformas 8080/Z80 escrito por McDonald desde 1979. La versión Standalone Disk BASIC admitía tres FAT, [12] [13] [17] mientras que esto era un parámetro para MIDAS. Según se informa, MIDAS también estaba preparado para admitir variantes FAT de 10 bits, 12 bits y 16 bits. Mientras que el tamaño de las entradas de directorio era de 16 bytes en Standalone Disk BASIC , [12] [13] MIDAS ocupaba en cambio 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 al prototipo de placa CPU S-100 bus 8086 de SCP durante una semana como invitado en Microsoft en mayo de 1979. [16] El producto final se mostró en el stand de Lifeboat Associates en la Conferencia Nacional de Computación en Nueva York [16] del 4 al 7 de junio de 1979, donde Paterson aprendió sobre la implementación FAT más sofisticada en MDOS/MIDAS [14] y McDonald habló con él sobre el diseño del sistema de archivos. [15]
Entre abril y agosto de 1980, mientras tomaba prestado el concepto FAT para el sistema operativo 8086 de SCP, QDOS 0.10 , [16] Tim Paterson amplió los elementos de la tabla a 12 bits , [18] 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 se encontraba entre la 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) [12] [13] a once caracteres para admitir nombres de archivo 8.3 de estilo CP/M y bloques de control de archivos . El formato utilizado en el precursor del sistema de archivos de 8 bits de Microsoft Standalone Disk BASIC no era compatible con QDOS. Para agosto de 1980, QDOS había sido renombrado como 86-DOS . [19] A partir de 86-DOS 0.42 , el tamaño y el diseño de las entradas de directorio se cambiaron de 16 bytes a 32 bytes [20] para agregar una marca de fecha de archivo [20] y aumentar el límite teórico de tamaño de archivo más allá del límite anterior de 16 MB. [20] 86-DOS 1.00 estuvo disponible a principios de 1981. Más tarde en 1981, 86-DOS evolucionó a MS-DOS de Microsoft e IBM PC DOS . [14] [18] [21] La capacidad de leer volúmenes previamente formateados con entradas de directorio de 16 bytes [20] se eliminó con MS-DOS 1.20 .
FAT12 utilizaba entradas de 12 bits para las direcciones de clúster; algunos valores se reservaban 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 limitaba a 4078. [22] [23] Para conservar espacio en disco, dos entradas FAT de 12 bits utilizaban tres bytes consecutivos de 8 bits en el disco, lo que requería manipulación para descomprimir los valores de 12 bits. Esto era 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 y, por lo tanto, aumentaba el límite de tamaño del volumen.
Todas las estructuras de control encajaban dentro de la primera pista, para evitar el movimiento del cabezal durante las operaciones de lectura y escritura. Cualquier sector defectuoso en el área de las estructuras de control haría que el disco quedara inutilizable. La herramienta de formateo de DOS rechazaba por completo dichos discos. Los sectores defectuosos solo se permitían en el área de datos de archivo. Los clústeres que contenían sectores defectuosos se marcaban como inutilizables con el valor reservado 0xFF7
en la FAT.
Mientras que el 86-DOS admitía tres formatos de disco (250,25 KB, 616 KB y 1232 KB, con identificadores FAT 0xFF
y 0xFE
) en unidades de disquete de 8 pulgadas (200 mm), IBM PC DOS 1.0 , lanzado con el IBM Personal Computer original en 1981, solo admitía un formato de disquete de 8 sectores con una capacidad formateada de 160 KB (identificador FAT 0xFE
) para unidades de disquete de 5,25 pulgadas de una sola cara, y PC DOS 1.1 agregó soporte para un formato de doble cara0xFF
con 320 KB (identificador FAT ). PC DOS 2.0 introdujo soporte para formatos de disquete de 9 sectores con 180 KB (identificador FAT 0xFC
) y 360 KB (identificador FAT 0xFD
).
86-Las entradas de directorio de DOS 1.00 y PC DOS 1.0 incluían solo una fecha, la fecha de la última modificación. PC DOS 1.1 agregó la hora de la última modificación. Los atributos de archivo de PC DOS 1.x incluían un bit oculto y un bit de sistema, y los seis bits restantes no estaban definidos. En ese momento, DOS no admitía subdirectorios, pero por lo general solo había unas pocas docenas de archivos en un disquete .
La PC XT fue la primera PC con un disco duro suministrado por IBM, y la 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 la 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ó bits de solo lectura, archivo , etiqueta de volumen y atributo de directorio para subdirectorios jerárquicos. [24]
MS-DOS 3.0 introdujo soporte para disquetes de 5,25 pulgadas y 1,2 MB de alta densidad (descriptor de medio 0xF9
), que en particular tenían 15 sectores por pista, por lo tanto más espacio para las FAT.
FAT12 continúa utilizándose en todos los disquetes comunes , incluidos los discos de 1,44 MB y los posteriores de 2,88 MB (byte descriptor de medio 0xF0
).
En 1984, IBM lanzó el PC AT , que requería PC DOS 3.0 para acceder a su disco duro de 20 MB. [25] [26] Microsoft introdujo MS-DOS 3.0 en paralelo. Las direcciones de clúster se incrementaron a 16 bits, lo que permitió hasta 65.526 clústeres por volumen. Sin embargo, el número máximo 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 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 un tamaño de sector de 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 pocos cientos de bytes de tamaño.
Como MS-DOS 3.0 formateaba todas las particiones de 16 MB a 32 MB en formato FAT16, un disco duro de 20 MB formateado bajo MS-DOS 3.0 no era accesible para MS-DOS 2.0. [27] MS-DOS 3.0 a MS-DOS 3.30 todavía 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, y por lo tanto no podía acceder a particiones MS-DOS 2.0 en este rango de tamaño. MS-DOS 3.31 y posteriores podían acceder nuevamente a particiones FAT12 de 16 MB a 32 MB.
Las implementaciones de FAT12 y FAT16 para MS-DOS y PC DOS no podían acceder a particiones de disco de más de 32 megabytes. Varios fabricantes desarrollaron sus propias variantes de FAT dentro de sus versiones OEM de MS-DOS. [28]
Algunos proveedores ( AST y NEC [28] ) admitieron ocho entradas de partición primaria en lugar de las cuatro estándar en su Registro de arranque maestro ( MBR ) extendido personalizado, y adaptaron MS-DOS para utilizar más de una partición primaria.
Otros proveedores solucionaron los límites de tamaño de volumen impuestos por las entradas de sectores 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 (aún 512 bytes) en el disco. El BIOS DOS o BIOS del sistema combinaría entonces múltiples sectores físicos en sectores lógicos para que el sistema de archivos pudiera trabajar con ellos.
Estos cambios fueron transparentes para la implementación del sistema de archivos en el núcleo DOS. El BIOS DOS subyacente tradujo estos sectores lógicos en sectores físicos según la información de partición y la geometría física de la unidad.
El inconveniente de este enfoque fue el aumento de la memoria utilizada para el almacenamiento en búfer de sectores y el desbloqueo. Dado que las versiones anteriores de DOS no podían utilizar sectores lógicos grandes, los OEM introdujeron nuevos identificadores de partición para sus variantes FAT con el fin de ocultarlos de los problemas estándar de MS-DOS y PC DOS. Los identificadores 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 [28] ), 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). [29] También se sabe que las versiones OEM como Toshiba MS-DOS, Wyse MS-DOS 3.2 y 3.3, [30] así como Zenith MS-DOS han utilizado sectores lógicos. [31]
Si bien no son estándar ni óptimas, estas variantes de FAT son perfectamente válidas de acuerdo con las especificaciones del sistema de archivos en sí. [ cita requerida ] Por lo tanto, incluso si los problemas predeterminados de MS-DOS y PC DOS no pudieran resolverlos, la mayoría de estas variantes FAT12 y FAT16 específicas del proveedor pueden montarse 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. [nb 3] Además, si ya no necesitan ser reconocidas por sus sistemas operativos originales, las particiones existentes se pueden "convertir" en volúmenes FAT12 y FAT16 más compatibles con las versiones de MS-DOS/PC DOS 4.0–6.3, que no admiten tamaños de sector diferentes de 512 bytes, [32] cambiando a un BPB con entrada de 32 bits para el número de sectores, como se introdujo desde DOS 3.31 (ver 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 se aumentan los recuentos de sectores lógicos por clúster, sectores lógicos reservados, sectores lógicos totales y sectores lógicos por FAT por el mismo factor.
Un desarrollo paralelo en MS-DOS / PC DOS que permitió un aumento en el tamaño máximo posible de FAT fue la introducción de múltiples particiones FAT en un disco duro. Para permitir el uso de más particiones FAT de manera compatible, se introdujo un nuevo tipo de partición en PC DOS 3.2 (1986), la partición extendida (EBR), [14] que es un contenedor para una partición adicional llamada unidad lógica . Desde PC DOS 3.3 (abril de 1987), existe 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.
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 el formato FAT16 , con la expansión del conteo de sectores de disco de 16 bits a 32 bits en el BPB. Aunque los cambios en el disco fueron menores, todo el controlador de disco 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 inicialmente se llamó DOS 3.31 Large File System . La herramienta de MicrosoftDSKPROBE
se refiere al tipo 0x06
como BigFAT , [34] mientras que algunas versiones anteriores de FDISK
lo describían como BIGDOS . Técnicamente, se conoce como FAT16B .
Como las versiones anteriores de DOS no estaban diseñadas para manejar más de 65.535 sectores, fue necesario introducir un nuevo tipo de partición para este formato con el fin de ocultarlo de las versiones anteriores a la 3.31 de DOS. 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 esto, 0x06
se introdujo el tipo para indicar 65.536 o más sectores. Además de esto, el controlador de disco también se amplió para manejar más de 65.535 sectores. La única otra diferencia entre el FAT16 original y el nuevo formato FAT16B 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 manejar el formato FAT16 original sin ningún cambio necesario.
Si es necesario crear particiones con herramientas modernas para versiones anteriores a DOS 3.31, los únicos criterios teóricamente necesarios son un número de sectores inferior a 65536 y el uso del antiguo identificador de partición ( 0x04
). Sin embargo, en la práctica, el tipo 0x01
y 0x04
las particiones primarias no deberían estar ubicadas físicamente fuera de los primeros 32 MB del disco, debido a otras restricciones en MS-DOS 2.x, que no podían manejarlas de otra manera.
En 1988, la mejora de FAT16B se hizo más disponible 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 recuento de 8 bits con signo de sectores por clúster, que originalmente tenía un valor máximo de potencia de dos de 64. Con el tamaño de sector de disco duro estándar de 512 bytes, esto da un tamaño de clúster máximo de 32 KB, fijando así el límite "definitivo" para el tamaño de partición FAT16 en 2 GB para el tamaño de sector 512. En los 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 no firmado. Sin embargo, el formato resultante no era compatible con ninguna otra implementación de 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 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 únicamente a través del direccionamiento CHS . Cuando Windows 95 (MS-DOS 7.0) introdujo el acceso al disco LBA , las particiones podían empezar a ubicarse físicamente fuera de los primeros 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 utilizando el 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 . [35] 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 cabezales, pueden no contener valores o contener valores engañosos y no deben usarse.
La cantidad de entradas de 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 una cantidad RDE
y un tamaño de sector determinados SS
, la cantidad RDS
de sectores de 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 configurar este parámetro. [36]
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 manejara el formato, Microsoft diseñó una nueva versión del sistema de archivos, FAT32 , que admitía un mayor número de clústeres posibles, 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. [37] Los valores de clúster se representan mediante números de 32 bits , de los cuales 28 bits se utilizan para almacenar el número de clúster.
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. [38] [39] La herramienta de formato de disco de shell de Windows incorporada en Windows NT solo admite arbitrariamente tamaños de volumen de hasta 32 GB, [nb 4] 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, [41] o formateando el volumen en un sistema que no sea Windows o en un sistema Windows 9x con soporte FAT32 y luego transfiriéndolo al sistema Windows NT. Después de 30 años, Microsoft aumentó FAT32 de 32 GB a 2 TB. [42]
El tamaño máximo posible de un archivo en un volumen FAT32 es de 4 GB menos 1 byte, o 4.294.967.295 (2 32 − 1) bytes. Este límite es consecuencia de la entrada de longitud de archivo de 4 bytes en la tabla de directorios y también afectaría a 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 archivos largos, pero los volúmenes FAT32 pueden contener opcionalmente nombres de archivos largos VFAT además de nombres de archivos cortos exactamente de la misma manera en que los nombres de archivos largos VFAT se han implementado opcionalmente para los volúmenes FAT12 y FAT16.
FAT32 se introdujo con Windows 95 OSR2 (MS-DOS 7.1) en 1996, aunque era necesario formatear para poder usarlo y DriveSpace 3 (la versión que venía 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 Windows NT, el soporte nativo para FAT32 llegó en Windows 2000. Winternals , una empresa que posteriormente fue adquirida por Microsoft, puso a disposición un controlador FAT32 gratuito para Windows NT 4.0 . Ya no es posible adquirir el controlador de fuentes oficiales. Desde 1998, el controlador DRFAT32 de Caldera, que se carga dinámicamente, se puede utilizar para habilitar el soporte FAT32 en DR-DOS. [43] [44] 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 el soporte nativo de FAT32 con REAL/32 7.90, y el sistema operativo IBM 4690 añadió soporte de FAT32 con la versión 2. [45] Ahead Software proporcionó otro controlador FAT32.EXE cargable dinámicamente para DR-DOS 7.03 con Nero Burning ROM en 2004. IBM introdujo el soporte nativo de FAT32 con OEM PC DOS 7.1 en 1999.
Se han reservado dos tipos de particiones 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. [43] [46] [47] [48] [49] En dichas 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 cabezales en el registro EBPB, pueden no contener valores o contener valores engañosos y no deben usarse. [50] [48] [49]
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. [51] En el formato FAT32, estos bytes contienen los 16 bits superiores del número de clúster inicial del archivo o directorio, lo que hace imposible almacenar EA de OS/2 en FAT32 utilizando este método.
Sin embargo, el controlador de 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
" adjunta al nombre de archivo regular del archivo al que pertenecen. El controlador también utiliza el byte en el desplazamiento 0x0Cen las entradas de directorio para almacenar un byte de marca especial que indica la presencia de atributos extendidos para ayudar a acelerar las cosas. [52] [53] (Esta extensión es críticamente incompatible con el método FAT32+ para almacenar archivos mayores a 4 GB menos 1 en volúmenes FAT32). [33]
Se puede acceder a los atributos extendidos a través del escritorio Workplace Shell , mediante scripts REXX y muchas utilidades de línea de comandos y GUI del sistema (como 4OS2 ). [54]
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 como los que se guardan en volúmenes NTFS. Al intentar copiar un archivo con cualquier ADS que no sea un EA desde un volumen NTFS a un volumen FAT o HPFS, aparece un mensaje de advertencia con los nombres de los ADS que se perderán. No admite 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 "Macintosh Finder Info" y "Macintosh Resource Fork").
CygwinEA␠DATA.␠SF
también utiliza archivos " ".
Uno de los objetivos de los diseñadores de Windows 95 en cuanto a la experiencia del usuario era la capacidad de utilizar nombres de archivo largos (LFN, de hasta 255 unidades de código UTF-16 ), [nb 1] además de los nombres de archivo clásicos de 8.3 (SFN). Para lograr compatibilidad con versiones anteriores y posteriores , los LFN se implementaron como una extensión opcional sobre las estructuras de sistema de archivos FAT existentes, utilizando una solución alternativa en la forma en que se disponen las entradas de directorio.
Este método transparente para almacenar nombres de archivos largos en los sistemas de archivos FAT existentes sin alterar sus estructuras de datos se conoce habitualmente como VFAT (por "Virtual FAT") , en honor al controlador de dispositivo virtual de Windows 95. [nb 5]
Los sistemas operativos no compatibles con VFAT aún pueden acceder a los archivos bajo 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 admiten VFAT.
En Windows NT, el soporte para nombres de archivo largos VFAT comenzó con la versión 3.5 .
Linux ofrece 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 compatibilidad combinada con permisos de estilo UMSDOS con nombres de archivo largos VFAT.
OS/2 agregó compatibilidad con nombres de archivo largos a FAT mediante 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 el nombre de los archivos manualmente.
Human68K admitía hasta 18,3 nombres de archivos y caracteres Kanji ( Shift JIS ) en una variante del sistema de archivos FAT propietario.
Para soportar aplicaciones Java , la versión 2 del sistema operativo IBM 4690 basado en FlexOS introdujo su propia arquitectura de sistema de archivos virtual (VFS) para almacenar nombres de archivos 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 bajo letras de unidad lógicas separadas, mientras que los nombres de archivo reales (RFN) permanecen disponibles bajo las letras de unidad originales. [55]
El sistema de archivos FAT en sí no está diseñado para soportar 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 campos no utilizados anteriormente de las estructuras de datos en disco FAT ( OS/2 y Windows NT ).
Mac OS que utiliza PC Exchange almacena sus distintas fechas, atributos de archivo y nombres de archivo largos en un archivo oculto llamado " FINDER.DAT
", y los forks de recursos (un ADS común de Mac OS) en un subdirectorio llamado " RESOURCE.FRK
", en cada directorio donde se utilizan. A partir de PC Exchange 2.1, 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 del archivo del propietario prefijado con " ._
", 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+ ).
Las primeras distribuciones de Linux también admitían un formato conocido como UMSDOS , una variante de FAT con atributos de archivo Unix (como el nombre de archivo largo y los 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. [56] Durante algún tiempo, Linux también proporcionó soporte combinado para permisos de estilo UMSDOS y nombres de archivo largos de VFAT a través de UVFAT .
En 2007, el borrador abierto FAT+ propuso cómo almacenar archivos más grandes de hasta 256 GB menos 1 byte, o 274.877.906.943 (2 38 − 1) bytes, en volúmenes FAT32 ligeramente modificados y compatibles con versiones anteriores, [33] pero impone un riesgo de que las herramientas de disco o las implementaciones FAT32 que no tengan en cuenta esta extensión puedan truncar o eliminar archivos que excedan el límite de tamaño de archivo FAT32 normal. El soporte para FAT32+ y FAT16+ está limitado a algunas versiones de DR-DOS y no está disponible en los sistemas operativos principales. [57] (Esta extensión es críticamente incompatible con la /EAS
opción del método FAT32.IFS para almacenar atributos extendidos de OS/2 en volúmenes FAT32).
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 denominada Turbo FAT .
FATX es una familia de sistemas de archivos diseñados para los discos duros y tarjetas de memoria de la consola de videojuegos Xbox de Microsoft , [58] [59] introducidos 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 son simplificadas, pero fundamentalmente incompatibles con los sistemas de archivos FAT16 y FAT32 normales, lo que hace imposible que los controladores del sistema de archivos FAT normal monten dichos volúmenes.
El sector de superbloque no arrancable tiene un tamaño de 4 KB y contiene una estructura similar a la de un BPB de 18 bytes, completamente diferente de los BPB normales . Los clústeres suelen tener un tamaño de 16 KB y solo hay una copia del FAT en la Xbox. Las entradas de 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 utilizando 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 las 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 la Xbox 360 , la época es 1980. [60]
exFAT es un sistema de archivos introducido con Windows Embedded CE 6.0 en noviembre de 2006 y llevado a la familia Windows NT con Vista Service Pack 1 y Windows XP Service Pack 3 (o 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. [61]
exFAT está pensado para usarse en unidades flash y tarjetas de memoria como SDXC y Memory Stick XC , donde se utiliza FAT32. Los proveedores suelen formatear previamente las tarjetas SDXC con este formato. Su principal beneficio 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 bytes en lugar de cuatro, lo que aumenta el límite a 2 64 − 1 bytes.
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 (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.0x07
A principios de 2010, el sistema de archivos fue sometido a ingeniería inversa por el SANS Institute . [62] El 28 de agosto de 2019, Microsoft publicó la especificación técnica de exFAT para que pueda usarse en el kernel de Linux y otros sistemas operativos. [63]
A mediados de los años 1990, Microsoft solicitó y obtuvo una serie de patentes para partes clave del sistema de archivos FAT. Las cuatro corresponden a extensiones de nombre de archivo largo para FAT que se vieron por primera vez en Windows 95 : patente estadounidense 5.579.517, [64] patente estadounidense 5.745.902, [65] patente estadounidense 5.758.352, [66] patente estadounidense 6.286.013 (todas vencidas desde 2013). [67]
El 3 de diciembre de 2003, Microsoft anunció [68] que ofrecería licencias para el uso de su especificación FAT y "propiedad intelectual asociada", a un costo de regalías de 0,25 dólares estadounidenses por unidad vendida, con una regalía máxima de 250.000 dólares estadounidenses por acuerdo de licencia. [69] Para 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, [9] Microsoft otorga específicamente una serie de derechos que muchos lectores han interpretado como permiso para que los proveedores de sistemas operativos implementen FAT. [70] Las patentes que no son de Microsoft y que afectan a FAT incluyen: la patente estadounidense 5.367.671, específica para los atributos de objeto extendidos de OS/2 (vencida en 2011). [71]
En 2004, la Public Patent Foundation (PUBPAT) presentó pruebas a la Oficina de Patentes y Marcas de los Estados Unidos (USPTO) cuestionando la validez de la patente estadounidense 5.579.517, [64] incluidas referencias a la técnica anterior de Xerox e IBM. [72] La USPTO abrió una investigación y concluyó rechazando todas las reivindicaciones de la patente. [73] Al año siguiente, la USPTO anunció además que, tras el proceso de reexaminación, afirmó el rechazo de la patente 517 y, además, encontró que la patente estadounidense 5.758.352 [66] era inválida 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 por parte de Microsoft eran "novedosas y no obvias", revirtiendo ambas decisiones anteriores y dejando las patentes válidas. [74]
En febrero de 2009, Microsoft presentó una demanda por infracción de patentes contra TomTom alegando que los productos del fabricante de dispositivos infringen patentes relacionadas con los nombres de archivo largos VFAT. Como algunos productos de TomTom se basan en Linux , esta fue la primera vez que Microsoft intentó hacer cumplir sus patentes contra la plataforma Linux. [75] La demanda se resolvió extrajudicialmente el mes siguiente con un acuerdo por el que se le daría a Microsoft acceso a cuatro de las patentes de TomTom, que TomTom dejaría de brindar soporte para los nombres de archivo largos VFAT de sus productos y que, a cambio, Microsoft no emprendería acciones legales contra TomTom durante los cinco años de duración del acuerdo de conciliación. [76]
En octubre de 2010, Microsoft presentó una demanda por infracción de patentes contra Motorola alegando que varias patentes (incluidas dos de las patentes VFAT) no tenían licencia para su uso en el sistema operativo Android . [77] También presentaron una queja ante la ITC . [78] Los desarrolladores de software de código abierto han diseñado métodos destinados a eludir las patentes de Microsoft. [79] [80]
En 2013, la patente EP0618540 "espacio de nombres común para nombres de archivos largos y cortos" (vencida en 2014 [81] ) fue invalidada en Alemania. [82] Tras retirarse el recurso, esta sentencia quedó firme el 28 de octubre de 2015. [83]
ACCDATE=drive1+|- [drive2+|-]...
"sólo se pueden direccionar 2^12 (es decir, 4096) unidades de asignación o clústeres. De hecho, el número es menor que esto, ya que 000h y 001h no se utilizan y FF0h a FFFh se reservan o se utilizan para otros fines, lo que deja 002h a FEFh (2 a 4079) como el rango de clústeres posibles.
La numeración comienza con 2; los dos primeros números, 0 y 1, están reservados.
Los clústeres no pueden tener 64 kilobytes (
KB
) o más
0x00
para un archivo que tiene EAs , estos EAs ya no se encontrarán utilizando únicamente llamadas DosFindFirst/Next. Las otras llamadas de OS/2 para recuperar EAs (DosQueryPathInfo, DosQueryFileInfo y DosEnumAttribute) no dependen de este byte. También podría ocurrir lo opuesto. [...] En esta situación, solo se reducirá el rendimiento de los escaneos de directorios. Ambas situaciones [...] se corrigen con CHKDSK ".0xEA
y 0xEC
mágicos.{{cite web}}
: CS1 maint: bot: estado de URL original desconocido ( enlace )