El sistema de archivos FAT es un sistema de archivos utilizado en la familia de sistemas operativos MS-DOS y Windows 9x . [3] Sigue utilizándose en dispositivos móviles y sistemas integrados y, por lo tanto, es un sistema de archivos muy adecuado para el intercambio de datos entre computadoras y dispositivos de casi cualquier tipo y antigüedad desde 1981 hasta el presente.
Un sistema de archivos FAT se compone de cuatro regiones:
FAT usa formato little-endian para todas las entradas en el encabezado (excepto, cuando 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 clusters. El final del último sector de cada copia FAT no se puede utilizar si no hay grupos 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), FAT (número de FAT × sectores por FAT), el directorio raíz (n/a para FAT32), y sectores ocultos, incluido el sector de arranque: esto daría como resultado sectores no utilizados 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 habrá sectores no utilizados, al final de la partición, después del volumen.
En dispositivos de almacenamiento no particionados , como disquetes , el sector de arranque ( VBR ) es el primer sector (sector lógico 0 con dirección CHS física 0/0/1 o dirección LBA 0). Para dispositivos de almacenamiento particionados, como discos duros, el sector de arranque es el primer sector de una partición, como se especifica en la tabla de particiones del dispositivo.
DOS 3.0 BPB:
Las siguientes extensiones se documentaron desde DOS 3.0; sin embargo, ya eran compatibles con algunas ediciones de DOS 2.11. [28] MS-DOS 3.10 todavía admitía el formato DOS 2.0, pero también podía utilizar el formato DOS 3.0.
DOS 3.2 BPB:
Oficialmente, MS-DOS 3.20 todavía usaba el formato DOS 3.0, pero ya SYS
se FORMAT
adaptó para admitir un formato de 6 bytes más largo (del cual no se usaron todas las entradas).
DOS 3.31 BPB:
Introducidas oficialmente con DOS 3.31 y no utilizadas por DOS 3.2, algunas utilidades de DOS 3.2 ya fueron diseñadas para conocer este nuevo formato. La documentación oficial recomienda confiar en estos valores solo si la entrada de los sectores lógicos en el desplazamiento 0x013 es cero.
Una fórmula simple traduce el número de grupo dado de un volumen CN
a un número de sector lógico LSN
: [24] [25] [26]
SSA=RSC+FN×SF+ceil((32×RDE)/SS)
RSC
FN
SF
RDE
SS
ceil(x)
LSN=SSA+(CN−2)×SC
SC
En medios no particionados, el número de sectores ocultos del volumen es cero y, por lo tanto, LSN
las LBA
direcciones se vuelven las mismas 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 CHS
direcciones y LSNs
también:
LSN=SPT×(HN+(NOS×TN))+SN−1
, donde los sectores por pista SPT
se almacenan en el desplazamiento 0x018 y el número de lados en el desplazamiento 0x01A . El número de pista , el número de cabeza y el número de sector corresponden al sector de culata : la fórmula proporciona la traducción conocida de CHS a LBA .NOS
TN
HN
SN
Estructura adicional utilizada por FAT12 y FAT16 desde OS/2 1.0 y DOS 4.0, también conocida como Bloque de parámetros de BIOS extendido (EBPB) (los bytes por debajo del desplazamiento del sector 0x024 son los mismos que para DOS 3.31 BPB):
En esencia, FAT32 inserta 28 bytes en el EBPB, seguido de los 26 bytes restantes (o a veces solo 7) del EBPB, como se muestra arriba para FAT12 y FAT16. Los sistemas operativos Microsoft e IBM determinan el tipo de sistema de archivos FAT utilizado en un volumen únicamente por el número de clusters, no por el formato BPB utilizado ni por el tipo de sistema de archivos indicado, es decir, es técnicamente posible utilizar un "FAT32 EBPB". también para volúmenes FAT12 y FAT16 así como un EBPB DOS 4.0 para volúmenes pequeños FAT32. Dado que se descubrió que dichos volúmenes fueron creados por sistemas operativos Windows en algunas condiciones extrañas, [nb 6] los sistemas operativos deberían estar preparados para hacer frente a estas formas híbridas.
Las versiones de DOS anteriores a la 3.2 dependían total o parcialmente del byte del descriptor de medios en el BPB o del byte de ID de FAT en el grupo 0 del primer FAT para determinar los formatos de disquete FAT12 incluso si hay un BPB presente. Dependiendo del FAT ID encontrado y el tipo de unidad detectado, utilizan de forma predeterminada uno de los siguientes prototipos de BPB en lugar de utilizar los valores realmente almacenados en el BPB. [nota 1]
Originalmente, el FAT ID estaba destinado a ser un indicador de bits con todos los bits configurados excepto el bit 2 borrado para indicar un formato de 80 pistas (frente a 40 pistas), el bit 1 borrado para indicar un formato de 9 sectores (frente a 8 sectores). y el bit 0 se borró para indicar un formato de una cara (frente a dos caras), [7] pero este esquema no fue seguido por todos los OEM y quedó obsoleto con la introducción de discos duros y formatos de alta densidad. Además, los distintos formatos de 8 pulgadas soportados por 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 única. Si esto resulta en un error, el medio debe ser de doble densidad. [23]
La tabla no enumera una serie de formatos de disquete FAT12 de 8 y 5,25 pulgadas incompatibles admitidos por 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 espacio reservado. área de sectores (varias pistas completas versus un solo sector lógico).
La implementación de un formato FAT12 de 315 KB de una sola cara utilizado en MS-DOS para Apricot PC y F1e [34] tenía un diseño de sector de arranque diferente, para acomodar el BIOS no compatible con IBM de esa computadora. Se omitieron la instrucción de salto y el nombre del OEM, y los parámetros BPB de MS-DOS (compensaciones 0x00B - 0x017 en el sector de arranque estándar) se ubicaron en el desplazamiento 0x050 . En su lugar , Portable , F1, PC duo y Xi FD admitían un formato FAT12 de 720 KB de doble cara no estándar. [34] Las diferencias en el diseño del sector de arranque y las ID de los medios hicieron que estos formatos fueran incompatibles con muchos otros sistemas operativos. Los parámetros de geometría para estos formatos son:
Las versiones posteriores de Apricot MS-DOS obtuvieron la capacidad de leer y escribir discos con el sector de arranque estándar además de aquellos con el de Apricot. Estos formatos también fueron compatibles con DOS Plus 2.1e/g para la serie Apricot ACT.
La adaptación de DOS Plus para BBC Master 512 admitía dos formatos FAT12 en unidades de 5,25 ", doble cara y doble densidad de 80 pistas, que no utilizaban ningún sector de arranque convencional. 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 usó para determinar la capacidad del disco. Los discos de arranque de 640 KB comenzaron 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 el uso de números de sector CHS físicos que comenzaban con 0 (no 1, como es común) y sectores incrementales en el orden sector-cabeza-pista (no sector-cabeza-pista, como. común). [36] El FAT comenzó al principio de la siguiente pista. Estas diferencias hacen que estos formatos sean irreconocibles para otros sistemas operativos.
DOS Plus para Master 512 también podrí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 variaciones) admitía un formato FAT12 en unidades de 5,25" de densidad cuádruple, de una cara y 80 pistas. Las dos primeras pistas estaban reservadas para el cargador de arranque, pero no contenían un MBR ni un BPB ( MS-DOS usó un BPB estático en memoria). El sector de arranque (pista 0, lado 0, sector 1) era código Z80 que comenzaba con DI 0xF3 . El arranque 8088 fue cargado por el sector Z80. 2 comienza con el byte de ID de Medio/FAT 0xFA . Los discos sin formato usan 0xE5 en su lugar. El sistema de archivos comienza en la pista 2, lado 0, sector 1. Además, hay 2 copias de FAT y 96 entradas. es un mapeo de pistas físicas a lógicas para efectuar un entrelazado de sectores 2:1. Los discos se formatearon con los sectores físicos numerados 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 formato físico. sectores 1, 6, 2, 7, 3, 8, 4, 9, 5, 10. [37]
El "Sector de Información FS" se introdujo en FAT32 [38] para acelerar los tiempos de acceso de ciertas operaciones (en particular, obtener la cantidad de espacio libre). Está ubicado en un número de sector lógico especificado en el registro de inicio FAT32 EBPB en la posición 0x030 (generalmente el sector lógico 1, inmediatamente después del registro de inicio).
Los datos del sector pueden estar desactualizados y no reflejar el contenido actual del medio, porque no todos los sistemas operativos actualizan o utilizan este sector, y aunque lo hagan, el contenido no es válido cuando el medio ha sido expulsado sin desmontar adecuadamente el volumen o después de un fallo de alimentación. Por lo tanto, los sistemas operativos primero deben inspeccionar los indicadores de bits 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 bits indican que el volumen no se desmontó correctamente. antes. Esto no causa ningún problema más que una posible penalización de velocidad para la primera consulta de espacio libre o la asignación del grupo de datos; ver fragmentación.
Si este sector está presente en un volumen FAT32, el tamaño mínimo permitido del sector lógico es 512 bytes, mientras que de lo contrario sería 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 FS sea opcional especificando un valor de 0xFFFF [19] (o 0x0000 ) en la entrada en el desplazamiento 0x030 .
El área de datos de un volumen se divide en grupos del mismo tamaño : pequeños bloques de espacio contiguo. Los tamaños de los clústeres varían según el tipo de sistema de archivos FAT que se utilice y el tamaño de la unidad; Los tamaños típicos de los grupos varían de 2 a 32 KiB . [39]
Cada archivo puede ocupar uno o más grupos según su tamaño. Por lo tanto, un archivo está representado por una cadena de grupos (denominada lista unidireccional ). Estos clústeres no necesariamente se almacenan uno al lado del otro en la superficie del disco, sino que a menudo están fragmentados en toda la región de datos.
Cada versión del sistema de archivos FAT utiliza un tamaño diferente para las entradas FAT. Números más pequeños dan como resultado una FAT más pequeña, pero desperdician espacio en particiones grandes al necesitar asignar en grupos 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 (por ejemplo, el grupo 0) y los 12 bits más significativos, la segunda (por ejemplo, el grupo 1). . En otras palabras, mientras que los ocho bits inferiores del primer grupo de la fila se almacenan en el primer byte, los cuatro bits superiores se almacenan en el cuarteto inferior del segundo byte, mientras que los cuatro bits inferiores del grupo siguiente de la fila se almacenan en el cuarteto superior del segundo byte y sus ocho bits superiores en el tercer byte.
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 una entrada abarca cuatro bytes en orden de bytes little-endian. Los cuatro bits superiores de cada entrada están reservados para otros fines; se borran durante el formateo y no se deben cambiar de otro modo. Deben enmascararse antes de interpretar la entrada como una dirección de clúster de 28 bits.
La Tabla de asignación de archivos ( FAT ) es un número contiguo 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:
Para que las versiones muy tempranas de DOS reconozcan el sistema de archivos, el sistema debe haberse iniciado desde el volumen o la FAT del volumen debe comenzar con el segundo sector del volumen (sector lógico 1 con dirección CHS física 0/0/2 o dirección LBA 1). , es decir, inmediatamente después del sector de arranque. Los sistemas operativos asumen esta ubicación cableada de la FAT para encontrar el ID de FAT en la entrada 0 del grupo de FAT en disquetes FAT de DOS 1.0-1.1, donde no se encuentra ningún BPB válido.
Las dos primeras entradas en un FAT almacenan valores especiales:
La primera entrada (clúster 0 en FAT) contiene el FAT ID 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 FAT12), 8 bits (si FAT16) o 20 bits (si FAT32, los 4 bits MSB son cero) de esta entrada son siempre 1. Estos valores se organizaron de modo que la entrada también funcione como " "trap-all" marcador de final de cadena para todos los grupos de datos que contienen un valor de cero. Además, para ID de FAT distintos de 0xFF (y 0x00 ), es posible determinar el orden correcto de nibble y bytes que utilizará el controlador del sistema de archivos; sin embargo, el sistema de archivos FAT utiliza oficialmente solo una representación little-endian y no No se conocen implementaciones de variantes que utilicen valores big-endian . 86-DOS 0.42 hasta MS-DOS 1.14 usaban perfiles de unidad cableados en lugar de una ID 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. DOS 0.42.
La segunda entrada (grupo 1 en FAT) almacena nominalmente el marcador de fin de cadena de grupo tal como lo utiliza el formateador, pero normalmente siempre contiene 0xFFF / 0xFFFF / 0x0FFFFFFF , es decir, con la excepción de los bits 31-28 en FAT32. En volúmenes estos bits normalmente siempre están configurados. Sin embargo, algunos sistemas operativos de Microsoft configuran estos bits si el volumen no es el volumen que contiene el sistema operativo en ejecución (es decir, use 0xFFFFFFFF en lugar de 0x0FFFFFFF aquí). [40] (Junto 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 más bajo permitido 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. Es posible que algunos sistemas operativos no puedan montar algunos volúmenes si alguno de estos bits no está configurado; por lo tanto, no se debe cambiar el marcador de fin de cadena predeterminado). DOS 1 y 2, la entrada se documentó como reservada para uso futuro.
Desde DOS 7.1, los dos bits más importantes de esta entrada del clúster pueden contener dos indicadores de bits opcionales que representan el estado actual del volumen en FAT16 y FAT32, pero no en los 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 son compatibles configurado al montar el volumen, el volumen no se desmontó correctamente antes de apagarlo o expulsarlo y, por lo tanto, se encuentra en un estado desconocido y posiblemente "sucio". [27] En los volúmenes FAT32, el Sector de Información de FS 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 9] [41] (pero no al insertar medios extraíbles) para garantizar y posiblemente restablecer la integridad del volumen.
Si se borra el bit 14 (en FAT16) o el bit 26 (en FAT32) [41] , el sistema operativo ha encontrado errores de E/S de disco al inicio, [41] una posible indicación de sectores defectuosos. Los sistemas operativos que conocen esta extensión interpretarán esto como una recomendación para realizar un escaneo de superficie ( SCANDISK ) en el próximo arranque. [27] [41] (Existe un conjunto similar de indicadores de bits en el EBPB FAT12/FAT16 en el desplazamiento 0x1A o en el EBPB 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, el La entrada EBPB está disponible incluso cuando el volumen no está montado y, por lo tanto, es más fácil de usar mediante controladores de dispositivos de bloque de disco o herramientas de partición).
Si el número de FAT en BPB no está establecido en 2, la segunda entrada del clúster en el primer FAT (clúster 1) también puede reflejar el estado de un volumen TFAT para sistemas operativos compatibles con TFAT. Si la entrada del grupo 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 establecidos.
Algunas implementaciones FAT12/FAT16 no estándar 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 BPB tiene un valor de 0 y no se encuentra ningún EBPB FAT32 (no hay firma 0x29 o 0x28 en el desplazamiento 0x042 ). [20] Esta extensión, sin embargo, no es compatible con los principales sistemas operativos, [20] ya que entra en conflicto con otros posibles usos de la entrada del clúster 1. La mayoría de los conflictos se pueden descartar si esta extensión solo se permite para volúmenes FAT12 con menos de 0xFEF y FAT16 con clústeres menos de 0x3FEF y 2 FAT.
Debido a que estas dos primeras entradas FAT almacenan valores especiales, no hay grupos de datos 0 o 1. El primer grupo de datos (después del directorio raíz si FAT12/FAT16) es el grupo 2, [33] que marca el comienzo del área de datos.
Valores de entrada FAT:
FAT32 utiliza 28 bits para los números de grupo. Los 4 bits restantes en la entrada FAT de 32 bits suelen ser cero, pero están reservados y no deben modificarse. Un controlador de sistema de archivos FAT32 estándar o una herramienta de mantenimiento no debe depender de que los 4 bits superiores sean cero y debe eliminarlos antes de evaluar el número de clúster para hacer frente a posibles expansiones futuras en las que estos bits puedan usarse para otros fines. El controlador del sistema de archivos no debe borrarlos al asignar nuevos clústeres, pero sí debe borrarlos durante un reformateo.
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 .
Aparte 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 del directorio 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 agregando otro clúster a la cadena en FAT.
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 grupo de 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 usaban únicamente entradas de directorio de 16 bytes, no admitían archivos de más de 16 MB ni la hora de la última modificación. [46]
El sistema de archivos FAT en sí no impone ningún límite en 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 profundidad de un árbol de subdirectorios. ruta absoluta de un directorio a 66 caracteres (incluida la letra de la unidad, pero excluyendo el delimitador de bytes NUL), [24] [25] [26] limitando así la profundidad máxima admitida de subdirectorios a 32, lo que ocurra antes. DOS concurrente, DOS multiusuario y DR DOS 3.31 a 6.0 (hasta incluir las actualizaciones 1992-11) no almacenan rutas absolutas a los directorios de trabajo internamente y, por lo tanto, no muestran esta limitación. [47] Lo mismo se aplica a Atari GEMDOS, pero el escritorio Atari no admite más de 8 niveles de subdirectorio. 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 superiores, 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 VFAT (LFN); ver más abajo.
Los caracteres legales para nombres de archivos cortos de DOS incluyen los siguientes:
A
–Z
0
–9
MKDIR
/ MD
y RMDIR
/ RD
bajo DR-DOS que aceptan argumentos únicos y por lo tanto permiten ingresar espacios.! # $ % & ' ( ) - @ ^ _ ` { } ~
Esto excluye los siguientes caracteres ASCII :
" * / : < > ? \ |
+ , . ; = [ ]
a
– z
A
– Z
; permitido en nombres de archivos largosEl 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 agregó un caso especial para evitar esta limitación con DOS 3.0 y superiores.
Los siguientes caracteres adicionales están permitidos en GEMDOS de Atari, pero deben evitarse por compatibilidad con MS-DOS/PC DOS:
" + , ; < = > [ ] |
Se debe evitar el punto y coma ( ;
) en nombres de archivos bajo DR DOS 3.31 y superiores, PalmDOS, Novell DOS, OpenDOS, Concurrent DOS, Multiuser DOS, System Manager y REAL/32, porque 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 contraseñas pendientes de los nombres de archivos antes de almacenarlos en el disco. (El procesador de comandos 4DOS utiliza punto y coma para las listas de inclusión y requiere que el punto y coma se duplique para archivos protegidos con contraseña con cualquier comando que admita comodines. [47] )
El carácter de arroba ( @
) se utiliza para listas de archivos en muchos comandos 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 resultar difícil de utilizar en nombres de archivos. . [47]
En DOS multiusuario y REAL/32, el signo de exclamación (!) no es un carácter de nombre de archivo válido ya que se utiliza para separar varios comandos en una sola línea de comando. [47]
En IBM 4680 OS y 4690 OS, no se permiten los siguientes caracteres en los nombres de archivos:
? * : . ; , [ ] ! + = < > " - / \ |
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 el procesador de comandos del host (HCP) y los nombres de archivos de compilación de la tabla de secuencia de entrada:
@ # ( ) { } $ &
Los nombres de los archivos DOS están en el juego de caracteres OEM actual : esto puede tener efectos sorprendentes si los caracteres manejados de una manera para una página de códigos determinada se interpretan de manera diferente para otra página de códigos (comando DOS CHCP
) con respecto a mayúsculas y minúsculas, clasificación o validez como carácter de nombre de archivo.
Antes de que Microsoft agregara soporte para nombres de archivos largos y marcas de tiempo de creación/acceso, otros sistemas operativos utilizaban los bytes 0x0C – 0x15 de la entrada del directorio para almacenar metadatos adicionales, en particular los sistemas operativos de la familia Digital Research almacenaban contraseñas de archivos, derechos de acceso, ID de propietario y datos de eliminación de archivos allí. Si bien las extensiones más nuevas 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 (consulte 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]
Algunas extensiones incompatibles que se encuentran en algunos sistemas operativos incluyen:
Las variantes FAT12, FAT16, FAT16B y FAT32 de los sistemas de archivos FAT tienen límites claros basados en la cantidad de clústeres y la cantidad de sectores por clúster (1, 2, 4, ..., 128). Para el valor típico de 512 bytes por sector:
Requisitos FAT12: 3 sectores en cada copia de FAT por cada 1024 grupos
Requisitos FAT16: 1 sector en cada copia de FAT por cada 256 grupos
Requisitos FAT32: 1 sector en cada copia de FAT por cada 128 grupos
Rango FAT12: 1 a 4084 grupos: 1 a 12 sectores por copia de FAT
Rango FAT16: 4.085 a 65.524 grupos: 16 a 256 sectores por copia de FAT
Rango FAT32: 65.525 a 268.435.444 grupos: 512 a 2.097.152 sectores por copia de FAT
FAT12 mínimo: 1 sector por grupo × 1 grupo = 512 bytes (0,5 KiB)
FAT16 mínimo: 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,08 4 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,04 7 MB)
[FAT16 máximo : 128 sectores por clúster × 65,524 clústeres = 4,294,180,864 bytes (≈4,095 MB)]
FAT32 máximo: 8 sectores por clúster × 268,435,444 clústeres = 1,099,511,578,624 bytes (≈1,024 GB)
FAT32 máximo: 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 047 GB)]
[FAT32 máximo: 128 sectores por clúster × 33.550.325 clústeres = 2.198.754.099.200 bytes (≈2.047 GB)]
Debido a 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 necesita 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 introducidos en la variante FAT16B.
Las extensiones de registro de arranque introducidas con DOS 4.0 comienzan con un mágico 40 ( 0x28 ) o 41 ( 0x29 ). Normalmente, los controladores FAT solo miran la cantidad 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 porque existen solo 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 da como resultado 16 entradas por sector para un tamaño de sector de 512 bytes. El comando RMDIR
/ de DOS 5 RD
elimina las entradas iniciales " .
" (este directorio) y " ..
" (directorio principal) en los subdirectorios directamente; por lo tanto, el tamaño de sector 32 en un disco RAM es posible 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 sectores ocultos FAT16B de 32 bits, esto deja tres bytes para el código de arranque (en un disco RAM sin usar) y el mágico 0x55 0xAA al final de todo. 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:128K
y /A:256K
corresponden al tamaño máximo del clúster 0x80
(128) con un tamaño de sector de 1024 y 2048, respectivamente. Para el tamaño del sector común, 512 /A:64K
produce 128 sectores por grupo.
Ambas ediciones de ECMA-107 [24] e ISO/IEC 9293 [25] [26] especifican un número máximo de clúster MAX
determinado por la fórmula y reservan números de clúster hasta 4086 ( 0xFF6 , FAT12) y posteriores 65526 ( 0xFFF6 , FAT16). ) para una futura estandarización.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 grupo 0 al comienzo de la FAT debe ser idéntica al byte del descriptor de medios que se encuentra en el BPB, mientras que la entrada para el grupo 1 refleja el valor de fin de cadena utilizado por el formateador para las cadenas de grupos ( 0xFFF , 0xFFFF o 0x0FFFFFFFF ). Las entradas para los números de clúster 0 y 1 terminan en un límite de bytes incluso para FAT12, por ejemplo, 0xF9FFFF para el descriptor de medios 0xF9 .
El primer grupo de datos es 2, [33] y, en consecuencia, el último grupo MAX
obtiene el número MAX+1
. Esto da como resultado los números de grupo de datos 2...4085 ( 0xFF5 ) para FAT12, 2...65525 ( 0xFFF5 ) para FAT16 y 2...268435445 ( 0x0FFFFFF5 ) para FAT32.
Por tanto, los únicos valores disponibles reservados para una futura estandarización son 0xFF6 (FAT12) y 0xFFF6 (FAT16). Como se indica a continuación, "menos de 4085" también se utiliza para implementaciones de Linux, [44] o como lo expresa la especificación FAT de Microsoft : [4]
...cuando dice <, no significa <=. Tenga en cuenta también que los números son correctos. El primer número de FAT12 es 4085; el segundo número para FAT16 es 65525. Estos números y los signos "<" no están mal."
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 su longitud cambia con frecuencia, el medio se fragmentará cada vez más con el tiempo.
Si bien el diseño del sistema de archivos FAT no causa ninguna sobrecarga organizativa en las estructuras de disco ni reduce la cantidad de espacio de almacenamiento libre con mayores cantidades de fragmentación , como ocurre con la fragmentación externa , el tiempo requerido para leer y escribir archivos fragmentados aumentará a medida que el sistema operativo tendrá que seguir las cadenas de clústeres en la FAT (y las partes deberán cargarse primero en la memoria, en particular en grandes volúmenes) y leer los datos correspondientes físicamente dispersos por todo el medio, lo que reducirá las posibilidades de que el controlador del dispositivo de bloque de bajo nivel para realizar E/S de disco multisectorial o iniciar transferencias DMA más grandes, aumentando así efectivamente la sobrecarga del protocolo de E/S, así como los tiempos de movimiento del brazo y asentamiento del cabezal dentro de la unidad de disco. Además, las operaciones con archivos se volverán más lentas con la creciente fragmentación, ya que al sistema operativo le lleva cada vez más tiempo encontrar archivos o clústeres libres.
Otros sistemas de archivos, por ejemplo, HPFS o exFAT , utilizan mapas de bits de espacio libre que indican los clústeres usados y disponibles, que luego se pueden buscar rápidamente para encontrar áreas contiguas libres. Otra solución es vincular todos los clústeres libres en una o más 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 penalizaciones en el rendimiento con discos grandes.
De hecho, buscar archivos en subdirectorios grandes o calcular el espacio libre en disco en volúmenes FAT es una de las operaciones que consume más recursos, ya que requiere leer las tablas del directorio o incluso todo el FAT de forma lineal. Dado que la cantidad total de clústeres y el tamaño de sus entradas en FAT todavía era pequeño en los volúmenes FAT12 y FAT16, esto aún podría tolerarse en los volúmenes FAT12 y FAT16 la mayor parte del tiempo, considerando que la introducción de estructuras de disco más sofisticadas habría También aumentó la complejidad y el uso de memoria de los sistemas operativos en modo real con sus requisitos mínimos de memoria total de 128 KB o menos (como con DOS) para los cuales FAT se diseñó y optimizó 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 necesario para realizar una DIR
operación " ", que siempre muestra el espacio libre en el disco como última línea. [66] Mostrar esta línea tomó cada vez más tiempo a medida que aumentaba el número de grupos. Por lo tanto, FAT32 introdujo un sector de información especial del sistema de archivos donde la cantidad de espacio libre previamente calculada se conserva durante los ciclos de energía, de modo que el contador de espacio libre debe volver a calcularse sólo cuando se expulsa un medio extraíble con formato FAT32 sin desmontarlo primero o si el sistema se apaga sin apagar adecuadamente el sistema operativo, un problema principalmente visible en las PC de estilo anterior a ATX , en sistemas DOS simples y en algunos productos de consumo que funcionan con baterías.
Con los enormes tamaños de clúster (16 KB, 32 KB, 64 KB) forzados por 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) comienza a ser También es un problema, especialmente cuando hay muchos archivos pequeños.
Se han ideado varias optimizaciones y ajustes en la implementación de controladores del sistema de archivos FAT, controladores de dispositivos de bloque 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 el diseño de las estructuras en el 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 hacer frente mejor a la fragmentación existente y reordenando y optimizando el 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, manteniendo al mismo tiempo la ventaja de ser accesible incluso en sistemas muy pequeños o antiguos.
DOS 3.0 y superiores no reutilizarán inmediatamente el espacio en disco de los archivos eliminados para nuevas asignaciones, sino que buscarán espacio no utilizado anteriormente antes de comenzar a utilizar también el espacio en disco de los archivos eliminados anteriormente. Esto no sólo ayuda a mantener la integridad de los archivos eliminados durante el mayor tiempo posible, sino que también acelera la asignación de archivos y evita la fragmentación, ya que nunca antes el espacio en disco asignado siempre está sin fragmentar. DOS logra esto manteniendo un puntero al último clúster asignado en cada volumen montado en la memoria y comienza a buscar espacio libre desde esta ubicación hacia arriba en lugar de al principio de FAT, como todavía lo hacía DOS 2.x. [13] Si se alcanza el final del FAT, se continuará la búsqueda al comienzo del FAT hasta que se haya encontrado espacio libre o se haya alcanzado nuevamente la posición original sin haber encontrado espacio libre. [13] Estos punteros se inicializan para señalar el 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 de FS. Sin embargo, este mecanismo fracasa si una aplicación elimina y recrea con frecuencia archivos temporales, ya que el sistema operativo intentaría mantener la integridad de los datos vacíos, provocando efectivamente una mayor fragmentación al final. [13] En algunas versiones de DOS, se puede utilizar el uso de una función API especial para crear archivos temporales para evitar este problema.
Además, las entradas del directorio de archivos eliminados se marcarán como 0xE5 desde DOS 3.0. [42] DOS 5.0 y superiores comenzarán a reutilizar estas entradas sólo cuando las entradas del directorio no utilizadas anteriormente se hayan agotado en la tabla y, de lo contrario, el sistema tendría que expandir la tabla. [6]
Desde DOS 3.3, el sistema operativo proporciona medios para mejorar el rendimiento de las operaciones con archivos FASTOPEN
mediante el seguimiento de la posición de los archivos o directorios abiertos recientemente en varias formas de listas (MS-DOS/PC DOS) o tablas hash (DR-DOS). lo que puede reducir significativamente los tiempos de búsqueda y apertura de archivos. Antes de DOS 5.0, se debe tener especial cuidado al utilizar dichos mecanismos junto con el software de desfragmentación del disco sin pasar por el sistema de archivos o los controladores de disco.
Windows NT asignará espacio en disco a los archivos en FAT por adelantado, seleccionando grandes áreas contiguas, pero en caso de falla, los archivos que se estaban agregando aparecerán más grandes de lo que 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 el FAT completo 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 el disco. [67] [68] Esto puede, en volúmenes con muchos clústeres libres, ocupar incluso menos memoria que una imagen de la propia FAT. 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 la memoria. Además, al operar en el nivel lógicamente 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 llevar a cabo la desfragmentación de archivos locales y la reordenación de entradas de directorio basadas en 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 bloque subyacentes , que se vuelven más visibles cuanto menos memoria hay disponible para el almacenamiento en búfer de sectores y el bloqueo/desbloqueo de pistas:
Mientras que el DOS de tarea única tenía disposiciones para lecturas multisectoriales 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. lo que podría aliviar la fragmentación mediante la captura previa asincrónica de los siguientes datos mientras la aplicación procesaba los fragmentos anteriores. Estas funciones estuvieron disponibles más tarde. Las versiones posteriores de DOS también proporcionaron soporte integrado para el almacenamiento en búfer del sector de anticipación y vinieron con programas de almacenamiento en caché de disco cargables dinámicamente que funcionan a nivel de sector físico o lógico, a menudo utilizando memoria EMS o XMS y, a veces, 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 de DOS convencionales.
El almacenamiento en caché de escritura subyacente a menudo no estaba habilitado de forma predeterminada con el software de Microsoft (si estaba presente) debido al problema de pérdida de datos en caso de un corte de energía o falla, facilitado por la falta de protección de hardware entre las aplicaciones y el sistema.
Los nombres de archivos largos (LFN) VFAT se almacenan en un sistema de archivos FAT mediante un truco: agregar entradas adicionales al directorio antes de la entrada del archivo normal. Las entradas adicionales están marcadas con los atributos Etiqueta de volumen, Sistema, Oculto y Sólo lectura (lo que da como resultado 0x0F ), que es una combinación que no se espera en el entorno MS-DOS y, por lo tanto, es ignorada por los programas de MS-DOS y terceros. utilidades. En particular, un directorio que contiene sólo etiquetas de volumen se considera vacío y se puede eliminar; Esta situación aparece si los archivos creados con nombres largos se eliminan del DOS simple. Este método es muy similar al método DELWATCH para utilizar el atributo de volumen para ocultar archivos pendientes de eliminación para una posible recuperación futura desde DR DOS 6.0 (1991) y versiones posteriores. También es similar a un método discutido públicamente para almacenar nombres de archivos largos en Ataris y Linux en 1992. [69] [70]
Debido a que las versiones anteriores de DOS podían confundir los nombres LFN en el directorio raíz con la etiqueta del volumen, VFAT fue diseñado para crear una etiqueta de volumen en blanco en el directorio raíz antes de agregar cualquier entrada de nombre LFN (si aún no existía una etiqueta de volumen). [nota 13]
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 del clúster inicial; para compatibilidad con las utilidades de disco, el campo del clúster inicial está configurado en un valor de 0. Consulte 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 está en un límite de entrada de directorio (13, 26, 39, ...), entonces se agrega un terminador 0x0000 en la siguiente posición del carácter. Luego, si ese terminador tampoco está en el límite, las posiciones de caracteres restantes se rellenan con 0xFFFF . No existirá ninguna entrada de directorio que contenga un terminador único.
Las entradas LFN utilizan el siguiente formato:
Si se requieren varias entradas LFN para representar un nombre de archivo, la entrada que representa el final del nombre de archivo va primero. El número de secuencia de esta entrada tiene el bit 6 ( 0x40 ) configurado para representar que es la última entrada LFN lógica y tiene el número de secuencia más alto. El número de secuencia disminuye en las siguientes entradas. La entrada que representa el inicio del nombre de archivo tiene el número de secuencia 1. Se utiliza un valor de 0xE5 para indicar que la entrada se elimina.
En los volúmenes FAT12 y FAT16, se puede probar que los valores en 0x1A sean cero y en 0x1C sean distintos de cero para distinguir entre VFAT LFN y archivos de eliminación pendientes en DELWATCH.
Por ejemplo, un nombre de archivo como "Archivo con nombre de archivo muy largo.ext" tendría el formato siguiente:
Una suma de comprobación también permite verificar si un nombre de archivo largo coincide con el nombre 8.3; Esta discrepancia podría ocurrir si un archivo se eliminara y se volviera a crear usando DOS en la misma posición del directorio. La suma de comprobació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 está 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
char sin firmar lfn_checksum ( const char sin firmar * pFCBName ) { int i ; suma de caracteres sin firmar = 0 ; for ( i = 11 ; i ; i - ) suma = (( suma & 1 ) << 7 ) + ( suma >> 1 ) + * pFCBName ++ ; suma devuelta ; }
Si un nombre de archivo contiene sólo 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 del archivo debe considerarse total o parcialmente en minúsculas. Específicamente, el bit 4 significa extensión en minúscula y el bit 3 nombre base en minúscula , lo que permite combinaciones como " " o " " pero no " ". Pocos otros sistemas operativos lo admiten. Esto crea un problema de compatibilidad con versiones anteriores de Windows (Windows 95/98/98 SE/ME) que ven nombres de archivos 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 operaciones. sistemas, 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 función se utiliza al escribir. [71]example.TXT
HELLO.txt
Mixed.txt
/fs/fat/dir.c
fs/vfat/namei.c
shortname
/W:246
. A diferencia de otras utilidades FDISK , DR-DOS FDISK no es sólo una herramienta de partición, 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.IBMBIO␠␠COM
nombre del archivo de inicio predeterminado " " se puede cambiar usando la SYS /DR:ext
opción, donde ext representa la nueva extensión. Otros posibles nombres de archivos de arranque DR-DOS que se pueden esperar en escenarios especiales son " DRBIOS␠␠SYS
", " DRDOS␠␠␠SYS
", " IO␠␠␠␠␠␠SYS
", " JO␠␠␠␠␠␠SYS
"./O
(para las antiguas ) para llenar el primer byte de todas las entradas del directorio con 0xE5 en lugar de utilizar el marcador final 0x00 . Así. el volumen permaneció accesible bajo PC DOS 1.0 - 1.1 , mientras que el formateo tomó algo más de tiempo y las versiones más nuevas de DOS no pudieron aprovechar la considerable aceleración causada por el uso del marcador final 0x00 .NO␠NAME␠␠␠␠
etiquetas ficticias de volumen de directorio " " si el usuario omite ingresar una etiqueta de volumen . El sistema operativo devolvería internamente de forma predeterminada la misma cadena si no se pudiera encontrar una 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 del directorio), los sistemas operativos más antiguos podrían seleccionar erróneamente en su lugar, cargue las entradas VFAT LFN.ACCDATE=drive1+|- [drive2+|-]...
".{{cite web}}
: Falta o está vacío |url=
( ayuda )Con respecto a la instrucción de salto al inicio de un sector de arranque: "Determine si el primer byte del sector de arranque es un E9H o EBIT (el primer byte de un salto corto NEAR de 3 bytes o de 2 bytes) o un EBH ( el primer byte de un salto de 2 bytes seguido de un NOP). Si es así, se ubica un BPB comenzando en el desplazamiento 3."(NB. Este libro contiene muchos errores.)
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 o más.