Un sistema de archivos FAT es un tipo específico de arquitectura de sistema de archivos de computadora y una familia de sistemas de archivos estándar de la industria que lo utilizan.
Desarrollador (es) | Microsoft , SCP , IBM , Compaq , Investigación digital , Novell , Caldera |
---|---|
Nombre completo | Tabla de asignación de archivos: FAT12 (versión de 12 bits), FAT16 (versiones de 16 bits), FAT32 (versión de 32 bits con 28 bits usados), exFAT (versiones de 64 bits) |
Introducido | 1977 ( Disco independiente BASIC-80 ) FAT12: agosto de 1980 (SCP QDOS ) FAT16: agosto de 1984 (IBM PC DOS 3.0) FAT16B: noviembre de 1987 ( Compaq MS-DOS 3.31) FAT32: agosto de 1996 ( Windows 95 OSR2 ) exFAT: noviembre de 2006 ( Windows Embedded CE 6.0 ) |
Identificador de partición | MBR / EBR : FAT12 : ea FAT16 : ea FAT32 : ea exFAT : ea BDP : 0x01 0x04 0x06 0x0E 0x0B 0x0C 0x07 EBD0A0A2-B9E5-443387C0-68B6B72699C7 |
Estructuras | |
Contenidos del directorio | Mesa |
Asignación de archivos | Lista enlazada |
Bloques malos | Etiquetado de clústeres |
Limites | |
Max. tamaño del volumen | FAT12: 32 MB (256 MB para clústeres de 64 KB ) FAT16: 2 GB (4 GB para clústeres de 64 KB ) FAT32: 2 TB (16 TB para sectores de 4 KB ) |
Max. tamaño del archivo | 4.294.967.295 bytes (4 GB - 1) con FAT16B y FAT32 [1] |
Max. Número de archivos | FAT12: 4,068 por 8 KB grupos FAT 16: 65.460 para 32 KB racimos FAT32: 268 173 300 de 32 KB racimos |
Max. longitud del nombre de archivo | 8.3 nombre de archivo o 255 caracteres UCS-2 cuando se usa LFN |
Características | |
Fechas registradas | Fecha / hora modificada, fecha / hora de creación (solo DOS 7.0 y superior), fecha de acceso (solo disponible con ACCDATE habilitado), [2] fecha / hora de eliminación (solo con DELWATCH 2) |
Rango de fechas | 1980-01-01 al 2099-12-31 ( 2107-12-31 ) |
Resolución de fecha | 2 segundos para el tiempo de última modificación, 10 ms para el tiempo de creación, 1 día para la fecha de acceso, 2 segundos para el tiempo de eliminación |
tenedores | No de forma nativa |
Atributos | Solo lectura , oculto , sistema , volumen , directorio , archivo |
Permisos del sistema de archivos | FAT12 / FAT16: derechos de acceso a archivos, directorios y volúmenes para lectura , escritura , ejecución y eliminación solo con DR-DOS , PalmDOS , Novell DOS , OpenDOS , FlexOS , 4680 OS , 4690 OS , DOS concurrentes , DOS multiusuario , System Manager , REAL / 32 (Ejecutar correctamente solo con FlexOS, 4680 OS, 4690 OS; contraseñas de archivos / directorios individuales no con FlexOS, 4680 OS, 4690 OS; clases de permisos World / Group / Owner solo con seguridad multiusuario cargada) FAT32: Parcial, solo con DR -DOS, REAL / 32 y 4690 OS |
Compresión transparente | FAT12 / FAT16: por volumen, SuperStor , apilador , DoubleSpace , DriveSpace FAT32: No |
Cifrado transparente | FAT12 / FAT16: Por volumen solo con DR-DOS FAT32: No |
El sistema de archivos FAT es un sistema de archivos heredado que es simple y robusto. [3] Ofrece un buen rendimiento incluso en implementaciones muy ligeras, pero no puede ofrecer el mismo rendimiento, fiabilidad y escalabilidad que algunos sistemas de archivos modernos. Sin embargo, es compatible por razones de compatibilidad con casi todos los sistemas operativos desarrollados actualmente para computadoras personales y muchas computadoras domésticas , dispositivos móviles y sistemas integrados , y por lo tanto es un formato muy adecuado para el intercambio de datos entre computadoras y dispositivos de casi cualquier tipo y antigüedad. desde 1981 hasta la actualidad.
Diseñado originalmente en 1977 para su uso en disquetes , FAT pronto se adaptó y se usó casi universalmente en discos duros en las eras de DOS y Windows 9x durante dos décadas. Hoy en día, los sistemas de archivos FAT todavía se encuentran comúnmente en disquetes, memorias USB , flash y otras tarjetas y módulos de memoria de estado sólido , y en muchos dispositivos portátiles e integrados. DCF implementa FAT como el sistema de archivos estándar para cámaras digitales desde 1998. [4] FAT también se utiliza para la partición del sistema EFI (tipo de partición 0xEF ) en la etapa de arranque de las computadoras que cumplen con EFI .
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 compatibilidad con nombres de archivo cortos de 8.3 ; Los nombres de archivo largos con VFAT están parcialmente patentados . [8] Según Google Patents, el estado de "Espacio de nombre común para nombres de archivo largos y cortos" (US5758352A) expiró en 2019, lo que puede significar que la patente ha expirado por completo. [9]
Resumen técnico
El nombre del sistema de archivos se origina en el uso prominente del sistema de archivos de una tabla de índice, la Tabla de asignación de archivos , asignada estáticamente en el momento del formateo. La tabla contiene entradas para cada clúster , un área contigua de almacenamiento en disco. Cada entrada contiene el número del siguiente clúster del archivo o un marcador que indica el final del archivo, el 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; el sistema operativo puede entonces atravesar la tabla 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. De la misma manera, los subdirectorios se implementan como archivos especiales que contienen las entradas de directorio de sus respectivos archivos.
Diseñado originalmente como un sistema de archivos de 8 bits, el número máximo de clústeres se ha incrementado significativamente a medida que evolucionan las unidades de disco, por lo que ha aumentado el número de bits utilizados para identificar cada clúster. Las sucesivas versiones principales del formato FAT reciben el nombre del número de bits de elementos de la tabla: 12 ( FAT12 ), 16 ( FAT16 ) y 32 ( FAT32 ). A excepción del precursor FAT original de 8 bits , cada una de estas variantes todavía está en uso. El estándar FAT también se ha ampliado de otras formas, manteniendo en general la compatibilidad con versiones anteriores del software existente.
Diseño
Región | Tamaño en sectores | Contenido |
---|---|---|
Sectores reservados | (número de sectores reservados ) | Sector de arranque |
Sector de información de FS (solo FAT32) | ||
Sectores más reservados (opcional) | ||
Región FAT | (número de FAT) * (sectores por FAT) | Tabla de asignación de archivos n. ° 1 |
Tabla de asignación de archivos n. ° 2 ... (opcional) | ||
Región del directorio raíz | (número de entradas raíz * 32) / (bytes por sector) | Directorio raíz (solo FAT12 y FAT16) |
Región de datos | (número de conglomerados) * (sectores por conglomerado) | Región de datos (para archivos y directorios) ... (hasta el final de la partición o disco) |
Un sistema de archivos FAT se compone de cuatro regiones:
- Sectores reservados
- El primer sector reservado (sector lógico 0) es el sector de arranque (también llamado Volume Boot Record o simplemente VBR ). Incluye un área llamada Bloque de parámetros de BIOS ( BPB ) que contiene información básica del sistema de archivos, en particular su tipo y punteros a la ubicación de las otras secciones, y generalmente contiene el código del cargador de arranque del sistema operativo .
- Se puede acceder a la información importante del sector de arranque a través de una estructura de sistema operativo denominada Drive Parameter Block ( DPB ) en DOS y OS / 2.
- El recuento total de sectores reservados se indica mediante un campo dentro del sector de arranque y suele ser 32 en sistemas de archivos FAT32. [10]
- Para los sistemas de archivos FAT32, los sectores reservados incluyen un sector de información del sistema de archivos en el sector lógico 1 y un sector de arranque de respaldo en el sector lógico 6.
- Si bien muchos otros proveedores han seguido utilizando una configuración de un solo sector (sector lógico 0 solamente) para el cargador de arranque, el código del sector de arranque de Microsoft ha crecido para abarcar los sectores lógicos 0 y 2 desde la introducción de FAT32, con el sector lógico 0 dependiendo de subrutinas en el sector lógico 2. El área del sector de inicio de copia de seguridad consta de tres sectores lógicos 6, 7 y 8 también. En algunos casos, Microsoft también usa el sector 12 del área de sectores reservados para un cargador de arranque extendido.
- Región FAT
- Por lo general, contiene dos copias de la tabla de asignación de archivos para verificar la redundancia, aunque rara vez se usa, incluso por las utilidades de reparación de discos.
- Estos son mapas de la región de datos, que indican qué grupos utilizan los archivos y directorios. En FAT12 y FAT16 siguen inmediatamente los sectores reservados.
- Normalmente, las copias adicionales se mantienen en estrecha sincronización en las escrituras y en las lecturas solo se utilizan cuando se producen errores en la primera FAT.
- Los dos primeros grupos (grupo 0 y 1 ) del mapa contienen valores especiales.
- Región del directorio raíz
- Esta es una tabla de directorio que almacena información sobre los archivos y directorios ubicados en el directorio raíz. Solo se usa con FAT12 y FAT16, e impone en el directorio raíz un tamaño máximo fijo que está preasignado en la creación de este volumen. FAT32 almacena el directorio raíz en la región de datos, junto con archivos y otros directorios, lo que le permite crecer sin tal restricción. Por lo tanto, para FAT32, la región de datos comienza aquí.
- Región de datos
- Aquí es donde se almacenan los datos reales del archivo y directorio y ocupa la mayor parte de la partición. Tradicionalmente, las partes no utilizadas de la región de datos se inicializan con un valor de relleno de 0xF6 según la tabla de parámetros de disco (DPT) de INT 1Eh durante el formateo en máquinas compatibles con IBM, pero también se utiliza en la cartera de Atari . Los disquetes CP / M de 8 pulgadas normalmente venían formateados previamente con un valor de 0xE5 ; [11] a través de Digital Research [12] este valor también se utilizó en disquetes formateados Atari ST . [nb 1] Amstrad utilizado 0xF4 en su lugar. Algunos formateadores modernos limpian discos duros con un valor de 0x00 , mientras que un valor de 0xFF , el valor predeterminado de un bloque flash no programado, se utiliza en discos flash para reducir el desgaste . Este último valor también se suele utilizar en discos ROM. (Algunas herramientas de formato avanzadas permiten configurar el byte de relleno de formato. [Nb 2] )
- El tamaño de los archivos y subdirectorios se puede aumentar arbitrariamente (siempre que haya clústeres libres) simplemente agregando más enlaces a la cadena del archivo en la FAT. Los archivos se asignan en unidades de clústeres, por lo que si un archivo de 1 KB reside en un clúster de 32 KB , se desperdician 31 KB .
- Normalmente, FAT32 comienza la tabla de directorio raíz en el grupo número 2: el primer grupo de la región de datos.
FAT usa formato little-endian para todas las entradas en el encabezado (excepto, donde se menciona explícitamente, para algunas entradas en los sectores de arranque Atari ST) y FAT (s). [12] Es posible asignar más sectores FAT de los necesarios para el número de clústeres. El final del último sector de cada copia FAT puede quedar sin usar si no hay 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 resultará en sectores no utilizados, al final de la partición, después del volumen.
Área de sectores reservados
Sector de arranque
En dispositivos sin particiones, 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 particionados como discos duros, el primer sector es el Registro de arranque maestro que define las particiones, mientras que el primer sector de particiones formateadas con un sistema de archivos FAT es nuevamente el Sector de arranque.
La estructura común de los primeros 11 bytes utilizados por la mayoría de las versiones FAT para máquinas x86 compatibles con IBM desde DOS 2.0 son:
Desplazamiento de bytes | Longitud (bytes) | Contenido |
---|---|---|
0x000 | 3 | Saltar instrucción. Si el sector de arranque tiene una firma válida que reside en los dos últimos bytes del sector de arranque (probado por la mayoría de los cargadores de arranque que residen en el BIOS del sistema o el MBR) y este volumen se arranca desde, el cargador de arranque anterior pasará la ejecución a esta entrada punto con ciertos valores de registro, y la instrucción de salto saltará el resto del encabezado (no ejecutable). Consulte Registro de arranque por volumen . Desde DOS 2.0, los discos de arranque x86 válidos deben comenzar con un salto corto seguido de un NOP ( secuencia de cadena de opciones0xEB 0x ?? 0x90 [13] [14] como se ve desde DOS 3.0 [nb 3] —y en DOS 1.1 [15] [16] ) o un salto cercano ( 0xE9 0x ?? 0x ?? [13] [14] como se ve en la mayoría de los discos formateados DOS 2.x ( Compaq , TeleVideo ), así como en algunos discos DOS 3.1 ( Epson , Olivetti )). Para compatibilidad con versiones anteriores, MS-DOS, PC DOS y DR-DOS también aceptan un salto ( 0x69 0x ?? 0x ?? ) [13] [14] [17] en discos extraíbles. En los discos duros, DR DOS acepta además la secuencia JMPS intercambiada que comienza con un NOP ( 0x90 0xEB 0x ?? ), [17] mientras que MS-DOS / PC DOS no. (Consulte a continuación la compatibilidad con Atari ST). La presencia de uno de estos patrones de cadena de opciones (en combinación con una prueba para un valor de descriptor de medios válido en el desplazamiento 0x015 ) sirve como indicador para DOS 3.3 y superior de que hay algún tipo de BPB presente (aunque el tamaño exacto no debe determinarse a partir del destino de salto, ya que algunos sectores de arranque contienen datos del cargador de arranque privado siguiendo el BPB), mientras que para DOS 1.x (y algunos volúmenes DOS 3.0), tendrán que recurrir al método DOS 1.x para detectar el formato a través del byte de medios en FAT (en el sector lógico 1 ). |
0x003 | 8 | Nombre del OEM (relleno con espacios 0x20 ). Este valor determina en qué sistema se formateó el disco. Aunque oficialmente documentado como gratuito para uso OEM, MS-DOS / PC DOS (desde 3.1), Windows 95/98 / SE / ME y OS / 2 marcan este campo para determinar en qué otras partes del registro de inicio se puede confiar y cómo para interpretarlos. Por lo tanto, establecer la etiqueta OEM en valores arbitrarios o falsos puede provocar que MS-DOS, PC DOS y OS / 2 no reconozcan el volumen correctamente y provoquen daños en los datos de las escrituras. [18] [19] [20] Ejemplos comunes son " Algunos proveedores almacenan información de licencias o claves de acceso en esta entrada. El Rastreador de volumen en Windows 95/98 / SE / ME sobrescribirá la etiqueta OEM con Algunos cargadores de arranque realizan ajustes o se niegan a pasar el control a un sector de arranque dependiendo de ciertos valores detectados aquí (por ejemplo, NEWLDR offset 0x018 ). La ROM de arranque de Wang Professional Computer sólo tratará un disco como arrancable si los primeros cuatro caracteres de la etiqueta OEM son " Si, en un EBPB FAT32 , la firma en el sector compensado 0x042 es 0x29 y ambas entradas de sector totales son 0, la entrada del sistema de archivos puede servir como una entrada de recuento total de sectores de 64 bits y la entrada de etiqueta OEM puede usarse como tipo de sistema de archivos alternativo en lugar de la entrada normal en el desplazamiento 0x052 . De manera similar, si esta entrada se establece en " |
0x00B | varía | Bloque de parámetros de BIOS ( 13 , 19 , 21 o 25 bytes), Bloque de parámetros de BIOS extendido (32 o 51 bytes) o Bloque de parámetros de BIOS extendido FAT32 (60 o 79 bytes); el tamaño y el contenido varían entre los sistemas operativos y las versiones, consulte a continuación |
varía | varía | Sistema de archivos y código de arranque específico del sistema operativo; a menudo comienza inmediatamente detrás de [E] BPB, pero a veces se almacenan datos "privados" adicionales del cargador de arranque entre el final del [E] BPB y el inicio del código de arranque; por lo tanto, el salto en la compensación 0x001 no se puede utilizar para derivar de forma fiable el formato [E] BPB exacto de. (Junto con al menos un DOS 3.31 BPB, algunos cargadores de arranque GPT (como BootDuet ) usan 0x1FA - 0x1FD para almacenar los altos 4 bytes de los sectores ocultos para los volúmenes situados fuera de los 2 primeros 32 -1 sectores. Dado que esta ubicación puede contener código u otros datos en otros sectores de arranque, es posible que no se escriba cuando 0x1F9 - 0x1FD no todos contienen cero). |
0x1FD | 1 | Número de unidad física (solo en sectores de arranque DOS 3.2 a 3.31). Con OS / 2 1.0 y DOS 4.0, esta entrada se movió al desplazamiento del sector 0x024 (en desplazamiento 0x19 en el EBPB ). La mayoría de los sectores de arranque de Microsoft e IBM mantienen valores de 0x00 en el desplazamiento 0x1FC y 0x1FD desde entonces, aunque no forman parte de la firma en 0x1FE . Si pertenece a un volumen de arranque, se puede configurar el MBR mejorado de DR-DOS 7.07 (consulte la 0x014 ) para actualizar dinámicamente esta entrada al valor DL proporcionado en el momento del arranque o al valor almacenado en la tabla de particiones. Esto permite arrancar unidades alternativas, incluso cuando elcódigo VBR ignora el valor DL. |
0x1FE | 2 | Firma del sector de arranque ( 0x55 0xAA ). [10] [nb 4] Esta firma indica un código de arranque compatible con IBM PC y es probada por la mayoría de los cargadores de arranque que residen en el BIOS del sistema o el MBR antes de pasar la ejecución al código de arranque del sector de arranque (pero, por ejemplo, no por el IBM original PC ROM-BIOS [23] ). Esta firma no indica un sistema de archivos o sistema operativo en particular. Dado que esta firma no está presente en todos los discos formateados FAT (por ejemplo, no en DOS 1.x [15] [16] o volúmenes FAT que no son de arranque x86), los sistemas operativos no deben confiar en que esta firma esté presente al iniciar sesión en volúmenes (las versiones antiguas de MS-DOS / PC DOS anteriores a 3.3 verificaban esta firma, pero las versiones más recientes y DR-DOS no). Las herramientas de formateo no deben escribir esta firma si el sector de arranque escrito no contiene al menos un código auxiliar del cargador de arranque ficticio compatible con x86; como mínimo, debe detener la CPU en un bucle sin fin ( 0xF4 0xEB 0xFD ) o emitir un INT 19h y RETF ( 0xCD 0x19 0xCB ). Estas cadenas de operaciones no deben usarse en la compensación del sector 0x000 , sin embargo, porque DOS prueba otros códigos de operación como firmas. Muchos disquetes MSX-DOS 2 utilizan 0xEB 0xFE 0x90 en el desplazamiento del sector 0x000 para atrapar la CPU en un bucle cerrado mientras se mantiene un patrón de código de operación reconocido por MS-DOS / PC DOS. Esta firma debe estar ubicada en el desplazamiento del sector fijo 0x1FE para tamaños de sector 512 o superior. Si el tamaño del sector físico es mayor, puede repetirse al final del sector físico. Los Atari ST supondrán que un disco es Atari 68000 de arranque si la suma de comprobación sobre las 256 palabras big-endian del sector de arranque es igual 0x1234 . [24] [nb 5] Si el código del cargador de arranque es compatible con IBM, es importante asegurarse de que la suma de comprobación sobre el sector de arranque no coincida con esta suma de comprobación por accidente. Si este fuera el caso, se puede cambiar un bit no utilizado (por ejemplo, antes o después del área del código de inicio) para asegurarse de que no se cumpla esta condición. En casos raros, una firma invertida Se ha observado 0xAA 0x55 en imágenes de disco. Esto puede ser el resultado de una implementación defectuosa en la herramienta de formateo basada en documentación defectuosa, [nb 4] pero también puede indicar un orden de bytes intercambiado de la imagen del disco, lo que podría haber ocurrido en la transferencia entre plataformas usando un endianness diferente . Los valores BPB y los sistemas de archivos FAT12, FAT16 y FAT32 están destinados a utilizar únicamente la representación little-endian y no hay implementaciones conocidas de variantes que utilicen valores big-endian en su lugar. |
Los disquetes Atari ST con formato FAT tienen un diseño de sector de arranque muy similar:
Desplazamiento de bytes | Longitud (bytes) | Contenido |
---|---|---|
0x000 | 2 | Saltar instrucción. Los sectores de arranque originales de Atari ST comienzan con una instrucción 68000 BRA.S ( 0x60 0x ?? ). [12] Para compatibilidad con los sistemas operativos de PC, los discos formateados Atari ST desde TOS 1.4 comienzan con 0xE9 0x ?? en lugar de. |
0x002 | 6 | Nombre del OEM (relleno con espacios 0x20 ), por ejemplo, " Loader " ( 0x4C 0x6F 0x61 0x64 0x65 0x72 ) en volúmenes que contienen un cargador de arranque Atari ST. Consulte las precauciones de nombre de OEM para discos formateados para PC más arriba. El desplazamiento y la longitud de esta entrada son diferentes en comparación con la entrada en discos formateados para PC. |
0x008 | 3 | Número de serie del disco [12] (predeterminado: 0x00 0x00 0x00 ), utilizado por Atari ST para detectar un cambio de disco. (El Rastreador de volumen de Windows 9x siempre almacenará " IHC " aquí en disquetes no protegidos contra escritura; consulte más arriba). Este valor debe cambiarse si el contenido del disco se cambia externamente; de lo contrario, los Atari ST pueden no reconocer el cambio al volver a insertarlo. Esta entrada se superpone al campo Nombre OEM en discos formateados para PC. Para una máxima compatibilidad, puede que sea necesario hacer coincidir ciertos patrones aquí; véase más arriba. |
0x00B | 19 | Bloque de parámetros de BIOS DOS 3.0 (formato little-endian ) |
0x01E | varía | Datos del sector de arranque privado ( formato mixto big-endian y little-endian ) |
varía | varía | Sistema de archivos y código de arranque Atari ST específico del sistema operativo. No se deben hacer suposiciones con respecto a la posición de carga del código, que debe ser reubicable. Si falla la carga de un sistema operativo (TOS.IMG [12] ), el código puede regresar al BIOS Atari ST con un 68000 RTS ( código de operación0x4E75 con secuencia de bytes big-endian0x4E 0x75 [nb 4] ) y todos los registros inalterados. |
0x1FE | 2 | Suma de comprobación. La suma de comprobación de 16 bits sobre las 256 palabras big-endian del sector de arranque de 512 bytes, incluida esta palabra, debe coincidir con el valor mágico.0x1234 para indicar un código de sector de arranque ejecutable Atari ST 68000. [24] Esta entrada de suma de comprobación se puede utilizar para alinear la suma de comprobación en consecuencia. [nb 5] Si el tamaño del sector lógico es superior a 512 bytes, el resto no se incluye en la suma de comprobación y normalmente se rellena con ceros. [24] Dado que algunos sistemas operativos de PC no aceptan por error disquetes formateados FAT si el 0x55 0xAA [nb 4] la firma no está presente aquí, es aconsejable colocar el 0x55 0xAA en este lugar (y agregue un cargador de arranque compatible con IBM o un código auxiliar) y use una palabra no utilizada en los datos privados o en el área del código de arranque o el número de serie para asegurarse de que la suma de verificación 0x1234 [nb 5] no coincide (a menos que la superposición de código gordo compartido sea ejecutable IBM PC y Atari ST al mismo tiempo). |
Los volúmenes MSX-DOS con formato FAT12 tienen un diseño de sector de arranque muy similar:
Desplazamiento de bytes | Longitud (bytes) | Contenido |
---|---|---|
0x000 | 3 | Instrucción de salto simulado (p. Ej., 0xEB 0xFE 0x90 ). |
0x003 | 8 | Nombre del OEM (relleno con espacios 0x20 ). |
0x00B | 19 | DOS 3.0 BPB |
0x01E | varía (2) | Punto de entrada de código MSX-DOS 1 para procesadores Z80 en código de arranque MSX. Aquí es donde saltan las máquinas MSX-DOS 1 cuando pasan el control al sector de arranque. Esta ubicación se superpone con los formatos BPB desde DOS 3.2 o el código del sector de arranque compatible con x86 de los sectores de arranque compatibles con IBM PC y provocará un bloqueo en la máquina MSX a menos que se hayan tomado precauciones especiales, como atrapar la CPU en un bucle cerrado aquí (opstring 0x18 0xFE para JR 0x01E ). |
0x020 | 6 | Firma de volumen de MSX-DOS 2 " VOL_ID ". |
0x026 | 1 | Indicador de recuperación de MSX-DOS 2 (predeterminado: 0x00 . Si la VOL_ID firma " " está presente en el desplazamiento del sector 0x020 , esta bandera indica, si el volumen contiene archivos eliminados que se pueden recuperar (ver offset 0x0C en las entradas del directorio). |
0x027 | 4 | Número de serie del disco MSX-DOS 2 (predeterminado: 0x00000000 ). Si la VOL_ID firma " " está presente en el desplazamiento del sector 0x020 , MSX-DOS 2 almacena aquí un número de serie de volumen para la detección de cambios de medios. |
0x02B | 5 | reservado |
0x030 | varía (2) | Punto de entrada de código MSX-DOS 2 para procesadores Z80 en código de arranque MSX. Aquí es donde saltan las máquinas MSX-DOS 2 cuando pasan el control al sector de arranque. Esta ubicación se superpone con los formatos EBPB desde DOS 4.0 / OS / 2 1.2 o el código de sector de arranque compatible con x86 de los sectores de arranque compatibles con IBM PC y provocará un bloqueo en la máquina MSX a menos que se hayan tomado precauciones especiales, como atrapar la CPU en un bucle apretado aquí (opstring 0x18 0xFE para JR 0x030 ). |
0x1FE | 2 | Firma |
Bloque de parámetros de BIOS
Estructura común de los primeros 25 bytes del bloque de parámetros del BIOS (BPB) utilizado por las versiones FAT desde DOS 2.0 (bytes en el desplazamiento del sector 0x00B hasta 0x017 se almacenan desde DOS 2.0, pero no siempre se utilizan antes de DOS 3.2, los valores en 0x018 hasta 0x01B se utilizan desde DOS 3.0):
Compensación sectorial | Desplazamiento de BPB | Longitud (bytes) | Contenido |
---|---|---|---|
0x00B | 0x00 | 2 | Bytes por sector lógico en potencias de dos; el valor más común es 512. Algunos sistemas operativos no admiten otros tamaños de sector. Por simplicidad y máximo rendimiento, el tamaño del sector lógico suele ser idéntico al tamaño del sector físico de un disco, pero puede ser mayor o menor en algunos escenarios. El valor mínimo permitido para volúmenes FAT12 / FAT16 no arrancables con hasta 65535 sectores lógicos es 32 bytes o 64 bytes para más de 65535 sectores lógicos. El valor práctico mínimo es 128. Algunas versiones OEM de DOS anteriores a DOS 3.31 usaban tamaños de sectores lógicos de hasta 8192 bytes para FAT con sectores lógicos . Atari ST GEMDOS admite tamaños de sector lógico entre 512 y 4096. [24] DR-DOS admite el arranque de volúmenes FAT12 / FAT16 con tamaños de sector lógico de hasta 32 KB e implementaciones INT 13h que admiten sectores físicos de hasta 1024 bytes / sector. [nb 6] El tamaño mínimo del sector lógico para los volúmenes FAT32 estándar es de 512 bytes, que se puede reducir a 128 bytes sin soporte para el sector de información FS . Las unidades de disquete y los controladores utilizan tamaños de sector físico de 128, 256, 512 y 1024 bytes (por ejemplo, PC / AX). El Atari Cartera admite un tamaño de sector de 512 para volúmenes más grandes que 64 KB, 256 bytes para volúmenes más grandes 32 KB y 128 bytes para volúmenes más pequeños. Las unidades magneto-ópticas utilizaban tamaños de sector de 512, 1024 y 2048 bytes. En 2005, algunos discos duros personalizados de Seagate utilizaban tamaños de sector de 1024 bytes en lugar de los 512 bytes predeterminados. [25] Los discos duros de formato avanzado utilizan 4096 bytes por sector ( 4Kn ) desde 2010, pero también podrán emular sectores de 512 bytes ( 512e ) durante un período de transición. Linux, y por extensión Android, admite un tamaño de sector lógico mucho mayor, documentado oficialmente en la página Man para las utilidades del sistema de archivos como hasta 32KB. |
0x00D | 0x02 | 1 | Sectores lógicos por clúster. Los valores permitidos son 1, 2, 4, 8, 16, 32, 64 y 128. Algunas versiones de MS-DOS 3.x admitían un tamaño máximo de clúster de solo 4 KB, mientras que los modernos MS-DOS / PC DOS y Windows 95 admiten un tamaño máximo de clúster de 32 KB. Windows 98 / SE / ME también admite parcialmente un tamaño de clúster de 64 KB, pero algunos servicios FCB no están disponibles en dichos discos y varias aplicaciones no funcionan. La familia de Windows NT y algunas versiones alternativas de DOS, como PTS-DOS, son totalmente compatibles con clústeres de 64 KB. Para la mayoría de los sistemas operativos basados en DOS, el tamaño máximo del clúster permanece en 32 KB (o 64 KB) incluso para tamaños de sector superiores a 512 bytes. Para tamaños de sector lógico de 1 KB, 2 KB y 4 KB, Windows NT 4.0 admite tamaños de clúster de 128 KB, mientras que para sectores de 2 KB y 4 KB, el tamaño del clúster puede alcanzar los 256 KB. Algunas versiones de DR-DOS brindan soporte limitado para clústeres de 128 KB con 512 bytes / sector utilizando un valor de sectores / clúster de 0. MS-DOS / PC DOS se bloqueará al iniciarse si este valor se especifica erróneamente como 0. [26] ( INT 21h AX = 53h ) |
0x00E | 0x03 | 2 | Recuento de sectores lógicos reservados . El número de sectores lógicos antes de la primera FAT en la imagen del sistema de archivos. Al menos 1 para este sector, generalmente 32 para FAT32 (para contener el sector de arranque extendido, el sector de información FS y los sectores de arranque de respaldo). Dado que los volúmenes formateados con DR-DOS 7.0x FAT32 utilizan un sector de arranque de un solo sector, un sector de información FS y un sector de copia de seguridad, algunos volúmenes formateados bajo DR-DOS utilizan un valor de 4 aquí. |
0x010 | 0x05 | 1 | Número de tablas de asignación de archivos. Casi siempre 2; Los discos RAM pueden usar 1. La mayoría de las versiones de MS-DOS / PC DOS no admiten más de 2 FAT. Algunos sistemas operativos DOS admiten solo dos FAT en su controlador de disco incorporado, pero admiten otros conteos de FAT para controladores de dispositivos de bloque cargados más adelante. Los volúmenes que declaren 2 FAT en esta entrada nunca se tratarán como volúmenes TFAT . Si el valor difiere de 2, algunos sistemas operativos de Microsoft pueden intentar montar el volumen como un volumen TFAT y utilizar el segundo clúster ( clúster 1 ) del primer FAT para determinar el estado de TFAT. |
0x011 | 0x06 | 2 | Número máximo de entradas de directorio raíz FAT12 o FAT16. 0 para FAT32, donde el directorio raíz se almacena en grupos de datos ordinarios; ver compensación 0x02C en EBPB FAT32. Un valor de 0 sin un EBPB FAT32 (sin firma 0x29 o 0x28 en desplazamiento 0x042 ) también puede indicar un directorio raíz de tamaño variable en algunas implementaciones FAT12 y FAT16 no estándar, que almacenan el clúster de inicio del directorio raíz en laentradadel clúster 1 en FAT. [27] Sin embargo, esta extensión no es compatible con los sistemas operativos convencionales, [27] ya que puede entrar en conflicto con otros usos de la entrada del clúster 1 para banderas de mantenimiento, el marcador de fin de cadena actual oextensiones TFAT . Este valor debe ajustarse para que las entradas de directorio siempre consuman sectores lógicos completos, por lo que cada entrada de directorio ocupa 32 bytes. MS-DOS / PC DOS requiere que este valor sea un múltiplo de 16. El valor máximo admitido en disquetes es 240, [13] el valor máximo admitido por MS-DOS / PC DOS en discos duros es 512. [13] DR -DOS admite el arranque desde volúmenes FAT12 / FAT16, si el archivo de arranque se encuentra en las primeras 2048 entradas del directorio raíz. |
0x013 | 0x08 | 2 | Sectores lógicos totales. 0 para FAT32. (Si es cero, use un valor de 4 bytes en el desplazamiento 0x020 ) |
0x015 | 0x0A | 1 | Descriptor de medios (comparar: FAT ID ): [28] [29] [30] [nb 3]
Este valor debe reflejar el descriptor de medios almacenado (en la entrada del clúster 0 ) en el primer byte de cada copia de FAT. Ciertos sistemas operativos anteriores a DOS 3.2 ( 86-DOS , MS-DOS / PC DOS 1.xy MSX-DOS versión 1.0) ignoran por completo los parámetros del sector de arranque y utilizan el valor del descriptor de medios del primer byte de la FAT para elegir internamente Plantillas de parámetros predefinidas. Debe ser mayor o igual a 0xF0 desde DOS 4.0. [13] En unidades extraíbles, DR-DOS asumirá la presencia de un BPB si este valor es mayor o igual a 0xF0 , [13] mientras que para discos fijos, debe ser 0xF8 para asumir la presencia de un BPB. Inicialmente, estos valores estaban destinados a utilizarse como indicadores de bits; para cualquier medio extraíble sin un formato BPB reconocido y un descriptor de medio de cualquiera 0xF8 o 0xFA a 0xFF MS-DOS / PC DOS trata el bit 1 como una bandera para elegir un formato de 9 sectores por pista en lugar de un formato de 8 sectores, y el bit 0 como una bandera para indicar medios de doble cara. [14] Valores 0x00 hasta 0xEF y 0xF1 a 0xF7 están reservados y no deben utilizarse. |
0x016 | 0x0B | 2 | Sectores lógicos por tabla de asignación de archivos para FAT12 / FAT16. FAT32 establece esto en 0 y usa el valor de 32 bits en el desplazamiento 0x024 en su lugar. |
DOS 3.0 BPB:
Las siguientes extensiones se documentaron desde DOS 3.0, sin embargo, ya eran compatibles con algunos problemas de DOS 2.11. [32] MS-DOS 3.10 todavía admitía el formato DOS 2.0, pero también podía usar el formato DOS 3.0.
Compensación sectorial | Desplazamiento de BPB | Longitud (bytes) | Contenido |
---|---|---|---|
0x00B | 0x00 | 13 | DOS 2.0 BPB |
0x018 | 0x0D | 2 | Sectores físicos por pista para discos con geometría INT 13h CHS, [10] por ejemplo, 15 para un disquete de "1.20 MB" (1200 KB). Una entrada cero indica que esta entrada está reservada, pero no se utiliza. |
0x01A | 0x0F | 2 | Número de cabezales para discos con geometría INT 13h CHS, [10] por ejemplo, 2 para un disquete de doble cara. Un error en todas las versiones de MS-DOS / PC DOS hasta la 7.10 incluida hace que estos sistemas operativos se bloqueen para las geometrías CHS con 256 cabezas, por lo tanto, casi todas las BIOS eligen un máximo de 255 cabezas solamente. Una entrada cero indica que esta entrada está reservada, pero no se utiliza. |
0x01C | 0x11 | 2 | Recuento de sectores ocultos que preceden a la partición que contiene este volumen FAT. Este campo siempre debe ser cero en los medios que no están particionados. Esta entrada de DOS 3.0 es incompatible con una entrada similar en offset 0x01C en BPB desde DOS 3.31. No debe usarse si la entrada de sectores lógicos en el desplazamiento 0x013 es cero. |
DOS 3.2 BPB:
Oficialmente, MS-DOS 3.20 todavía usaba el formato DOS 3.0, pero SYS
ya FORMAT
se adaptaron para admitir un formato de 6 bytes más largo (del cual no se usaron todas las entradas).
Compensación sectorial | Desplazamiento de BPB | Longitud (bytes) | Contenido |
---|---|---|---|
0x00B | 0x00 | 19 | DOS 3.0 BPB |
0x01E | 0x13 | 2 | Total de sectores lógicos, incluidos los sectores ocultos. Esta entrada de DOS 3.2 es incompatible con una entrada similar en offset 0x020 en BPB desde DOS 3.31. No debe usarse si la entrada de sectores lógicos en el desplazamiento 0x013 es cero. |
DOS 3.31 BPB:
Presentado oficialmente con DOS 3.31 y no utilizado por DOS 3.2, algunas utilidades de DOS 3.2 fueron diseñadas para conocer este nuevo formato. La documentación oficial recomienda confiar en estos valores solo si la entrada de sectores lógicos en el desplazamiento 0x013 es cero.
Compensación sectorial | Desplazamiento de BPB | Longitud (bytes) | Contenido |
---|---|---|---|
0x00B | 0x00 | 13 | DOS 2.0 BPB |
0x018 | 0x0D | 2 | Sectores físicos por pista para discos con geometría INT 13h CHS, [10] por ejemplo, 18 para un disquete de "1,44 MB" (1440 KB). No se utiliza para unidades que ya no admiten el acceso a CHS. Idéntico a una entrada disponible desde DOS 3.0 . Una entrada cero indica que esta entrada está reservada, pero no se utiliza. Un valor de 0 puede indicar acceso solo a LBA, pero puede causar una excepción de división por cero en algunos cargadores de arranque, que se puede evitar almacenando un valor neutral de 1 aquí, si no se puede emular razonablemente ninguna geometría de CHS. |
0x01A | 0x0F | 2 | Número de cabezales para discos con geometría INT 13h CHS, [10] por ejemplo, 2 para un disquete de doble cara. No se utiliza para unidades que ya no admiten el acceso a CHS. Idéntico a una entrada disponible desde DOS 3.0 . Un error en todas las versiones de MS-DOS / PC DOS hasta la 7.10 incluida hace que estos sistemas operativos se bloqueen para las geometrías CHS con 256 cabezas, por lo tanto, casi todas las BIOS eligen un máximo de 255 cabezas solamente. Una entrada cero indica que esta entrada está reservada, pero no se utiliza. Un valor de 0 puede indicar acceso solo a LBA, pero puede causar una excepción de división por cero en algunos cargadores de arranque, que se puede evitar almacenando un valor neutral de 1 aquí, si no se puede emular razonablemente ninguna geometría de CHS. |
0x01C | 0x11 | 4 | Recuento de sectores ocultos que preceden a la partición que contiene este volumen FAT. Este campo siempre debe ser cero en los medios que no están particionados. [5] [6] [7] Esta entrada de DOS 3.31 es incompatible con una entrada similar en el desplazamiento 0x01C en DOS 3.0-3.3 BPB. Al menos, se puede confiar en él si tiene cero o si la entrada de los sectores lógicos en el desplazamiento 0x013 es cero. Si esto pertenece a una partición activa avanzada (AAP) seleccionada en el momento del arranque, la entrada de BPB será actualizada dinámicamente por el MBR mejorado para reflejar el valor de los "sectores relativos" en la tabla de particiones, almacenado en el desplazamiento. 0x1B6 en AAP o NEWLDR MBR, de modo que sea posible arrancar el sistema operativo desde EBR . (Algunos cargadores de arranque GPT (como BootDuet ) utilizan compensaciones del sector de arranque 0x1FA - 0x1FD para almacenar los 4 bytes altos de un valor de sectores ocultos de 64 bits para volúmenes ubicados fuera de los primeros 2 32 -1 sectores). |
0x020 | 0x15 | 4 | Total de sectores lógicos (si es mayor que 65535; de lo contrario, consulte compensación 0x013 ). Esta entrada de DOS 3.31 es incompatible con una entrada similar en el desplazamiento 0x01E en DOS 3.2-3.3 BPB. Oficialmente, debe usarse solo si la entrada de sectores lógicos en el desplazamiento 0x013 es cero, pero algunos sistemas operativos (algunas versiones antiguas de DR DOS) usan esta entrada también para discos más pequeños. Para medios particionados, si esto y la entrada en 0x013 son ambos 0 (como se ve en algunos volúmenes DOS 3.x FAT16), muchos sistemas operativos (incluido MS-DOS / PC DOS) recuperarán el valor de la entrada de la partición correspondiente (en el desplazamiento 0xC ) en el MBR en su lugar. Si ambas entradas son 0 en los volúmenes que utilizan un FAT32 EBPB con firma 0x29 , los valores que superen el límite de 4,294,967,295 (2 32 −1) (por ejemplo, algunos volúmenes DR-DOS con entradas de clúster de 32 bits) pueden usar una entrada de 64 bits en el desplazamiento 0x052 en su lugar. |
Una fórmula simple traduce el número de grupo dado de un volumen CN
a un número de sector lógico LSN
: [5] [6] [7]
- Determine (una vez) , dónde se almacena el recuento del sector reservado en el desplazamiento
SSA=RSC+FN×SF+ceil((32×RDE)/SS)
RSC
0x00E , el número de FATFN
en el desplazamiento 0x010 , los sectores por FATSF
en la compensación 0x016 (FAT12 / FAT16) o 0x024 (FAT32), las entradas del directorio raízRDE
en el desplazamiento 0x011 , el tamaño del sectorSS
en la compensación 0x00B y seceil(x)
redondea a un número entero. - Determinar dónde se almacenan los sectores por clúster en el desplazamiento
LSN=SSA+(CN−2)×SC
SC
0x00D .
En los medios de comunicación sin particiones número del volumen de sectores ocultos es y por lo tanto cero LSN
y LBA
direcciones convertirse en el mismo durante el tiempo que el tamaño de sector lógico de un volumen es idéntico al tamaño de 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 offset 0x018 y el número de lados NOS
en el desplazamiento 0x01A . El número de pista TN
, el número de cabezal HN
y el número de sector SN
corresponden al sector de cabezal de cilindro : la fórmula proporciona la traducción conocida de CHS a LBA .
Bloque de parámetros de BIOS extendido
Estructura adicional utilizada por FAT12 y FAT16 desde OS / 2 1.0 y DOS 4.0, también conocida como Extended BIOS Parameter Block (EBPB) (bytes por debajo del desplazamiento del sector 0x024 son los mismos que para DOS 3.31 BPB):
Compensación sectorial | Compensación EBPB | Longitud (bytes) | Contenido |
---|---|---|---|
0x00B | 0x00 | 25 | DOS 3.31 BPB |
0x024 | 0x19 | 1 | Número de unidad física ( 0x00 para el (primer) medio extraíble, 0x80 para el (primer) disco fijo según INT 13h ). Los valores permitidos para posibles unidades físicas según el BIOS son 0x00 - 0x7E y 0x80 - 0xFE . Valores 0x7F y 0xFF están reservados para fines internos, como el arranque remoto o de la ROM, y nunca deberían ocurrir en el disco. Algunos cargadores de arranque, como el cargador de arranque MS-DOS / PC DOS, utilizan este valor al cargar el sistema operativo, otros lo ignoran por completo o utilizan el número de unidad proporcionado en el registro DL por el cargador de arranque subyacente (por ejemplo, con muchos BIOS y MBR). ). A veces, las herramientas SYS cambian la entrada o el cargador de arranque anterior la puede arreglar dinámicamente para forzar al código del sector de arranque a cargar el sistema operativo desde discos físicos alternativos a los predeterminados. Existía una entrada similar (solo) en los sectores de arranque de DOS 3.2 a 3.31 en el desplazamiento del sector 0x1FD . Si pertenece a un volumen de arranque, se puede configurar el MBR mejorado de DR-DOS 7.07 (consulte la 0x014 ) para actualizar dinámicamente esta entrada EBPB al valor DL proporcionado en el momento del arranque o al valor almacenado en la tabla de particiones. Esto permite arrancar unidades alternativas, incluso cuando elcódigo VBR ignora el valor DL. |
0x025 | 0x1A | 1 | Reservado;
|
0x026 | 0x1B | 1 | Firma de arranque extendida. (Debiera ser 0x29 [5] [6] [7] [28] para indicar que existe un EBPB con las siguientes 3 entradas (desde OS / 2 1.2 y DOS 4.0). Puede ser 0x28 en algunos discos OS / 2 1.0-1.1 y PC DOS 3.4 que indican una forma anterior del formato EBPB con solo el número de serie a continuación. MS-DOS / PC DOS 4.0 y superior, OS / 2 1.2 y superior, así como la familia Windows NT reconocen ambas firmas en consecuencia). |
0x027 | 0x1C | 4 | ID de volumen (número de serie) Normalmente, el número de serie "xxxx-xxxx" se crea mediante una suma de 16 bits de ambos valores DX devueltos por INT 21h / AH = 2Ah (obtener la fecha del sistema) [nb 7] e INT 21h / AH = 2Ch (obtener la hora del sistema) [nb 7] para la palabra alta y otra adición de 16 bits de ambos valores CX para la palabra baja del número de serie. Alternativamente, algunas utilidades de disco DR-DOS brindan una |
0x02B | 0x20 | 11 | Etiqueta de volumen de partición, rellena con espacios en blanco ( 0x20 ), por ejemplo, " NO␠NAME␠␠␠␠ " El software que cambia la etiqueta del volumen del directorio en el sistema de archivos también debería actualizar esta entrada, pero no todo el software lo hace. La etiqueta del volumen de la partición se muestra normalmente en las herramientas de partición, ya que se puede acceder a ella sin montar el volumen. Compatible desde OS / 2 1.2 y MS-DOS 4.0 y superior.No disponible si la firma en 0x026 se establece en 0x28 . Esta área fue utilizada por sectores de arranque de DOS 3.2 a 3.3 para almacenar una copia privada de la Tabla de parámetros de disco (DPT) en lugar de usar el puntero INT 1Eh para recuperar la tabla ROM como en ediciones posteriores del sector de arranque. La reutilización de esta ubicación para la etiqueta de volumen de partición en su mayoría cosmética minimizó los problemas si algunas utilidades del sistema más antiguas aún intentaran parchear el DPT anterior. |
0x036 | 0x2B | 8 | Tipo de sistema de archivos, rellenado con espacios en blanco ( 0x20 ), p. Ej., " FAT12␠␠␠ ", " FAT16␠␠␠ ", " FAT␠␠␠␠␠ "Esta entrada está destinada únicamente a fines de visualización y el sistema operativo no debe utilizarla para identificar el tipo de sistema de archivos. Sin embargo, a veces se utiliza con fines de identificación por software de terceros y, por lo tanto, los valores no deben diferir de los utilizados oficialmente. Compatible desde OS / 2 1.2 y MS-DOS 4.0 y superior. No disponible si la firma en 0x026 se establece en 0x28 . |
Bloque de parámetros de BIOS extendido FAT32
En esencia FAT32 insertos de 28 bytes en el EBPb, seguido por los restantes 26 (o a veces sólo 7) EBPb bytes como se muestra arriba para FAT12 y FAT16. Los sistemas operativos de Microsoft e IBM determinan el tipo de sistema de archivos FAT utilizado en un volumen únicamente por el número de clústeres, no por el formato BPB utilizado o el tipo de sistema de archivos indicado, es decir, es técnicamente posible utilizar un "FAT32 EBPB" también para volúmenes FAT12 y FAT16, así como un EBPB DOS 4.0 para volúmenes FAT32 pequeños. Dado que se encontró que tales volúmenes fueron creados por sistemas operativos Windows bajo algunas condiciones extrañas, los sistemas operativos [nb 8] deben estar preparados para hacer frente a estas formas híbridas.
Compensación sectorial | Desplazamiento FAT32 EBPB | Longitud (bytes) | Contenido |
---|---|---|---|
0x00B | 0x00 | 25 | DOS 3.31 BPB |
0x024 | 0x19 | 4 | Sectores lógicos por tabla de asignación de archivos (corresponde con la entrada anterior en el desplazamiento 0x0B en DOS 2.0 BPB ). El byte en el desplazamiento 0x026 en esta entrada nunca debería convertirse 0x28 o 0x29 para evitar cualquier interpretación errónea con el formato EBPB en sistemas operativos no compatibles con FAT32. |
0x028 | 0x1D | 2 | Indicadores de descripción de unidad / duplicación (bits 3-0: número basado en cero de FAT activo, si el bit 7 está establecido. [10] Si el bit 7 está limpio, todas las FAT se duplican como de costumbre. Otros bits reservados y deben ser 0). Los sectores de arranque DR-DOS 7.07 FAT32 con soporte dual LBA y CHS utilizan los bits 15-8 para almacenar un indicador de acceso y parte de un mensaje. Estos bits contienen un patrón de bits 0110: 1111b (letra minúscula 'o', bit 13 configurado para acceso a CHS) o 0100: 1111b (letra mayúscula 'O', bit 13 borrado para acceso LBA). El byte también se utiliza para el segundo carácter en un mensaje de error potencial "No␠IBMBIO␠␠COM" (ver offset 0x034 ), que se muestra en mayúsculas o en mayúsculas, lo que indica qué tipo de acceso falló). Las herramientas de formateo o las herramientas de tipo SYS que no son DR pueden borrar estos bits, pero otras herramientas de disco deben dejar los bits 15-8 sin cambios. |
0x02A | 0x1F | 2 | Versión (definida como 0.0). El byte alto del número de versión se almacena en offset 0x02B y el byte bajo en el desplazamiento 0x02A . [10] Las implementaciones de FAT32 deberían negarse a montar volúmenes con números de versión desconocidos. |
0x02C | 0x21 | 4 | Número de clúster de inicio del directorio raíz, normalmente 2 (primer clúster [37] ) si no contiene un sector defectuoso. (La implementación FAT32 de Microsoft impone un límite artificial de 65.535 entradas por directorio, mientras que muchas implementaciones de terceros no lo hacen). Un valor de clúster de 0 no está oficialmente permitido y nunca puede indicar un clúster de inicio de directorio raíz válido. Algunas implementaciones de FAT32 no estándar pueden tratarlo como un indicador para buscar un directorio raíz de tamaño fijo donde se esperaría en los volúmenes FAT16; ver compensación 0x011 . |
0x030 | 0x25 | 2 | Número de sector lógico del sector de información FS , normalmente 1, es decir, el segundo de los tres sectores de arranque FAT32. Algunas implementaciones de FAT32 admiten una ligera variación de la especificación de Microsoft al hacer que el sector de información de FS sea opcional especificando un valor de 0xFFFF [26] (o 0x0000 ) en esta entrada. Dado que el sector lógico 0 nunca puede ser un sector de información de FS válido, pero los sectores de información de FS utilizan la misma firma que se encuentra en muchos sectores de arranque [ cita requerida ] , las implementaciones del sistema de archivos nunca deben intentar utilizar el sector lógico 0 como sector de información de FS y en su lugar asumir que la función no es compatible con ese volumen en particular. Sin un sector de información FS, el tamaño mínimo permitido del sector lógico de los volúmenes FAT32 se puede reducir a 128 bytes para fines especiales. |
0x032 | 0x27 | 2 | Primer número de sector lógico de una copia de los tres sectores de arranque FAT32, normalmente 6. [10] Dado que los volúmenes formateados con DR-DOS 7.0x FAT32 utilizan un sector de arranque de un solo sector, algunos volúmenes formateados con DR-DOS utilizan un valor de 2 aquí. Valores de 0x0000 [10] (y / o 0xFFFF [26] ) están reservados e indican que no hay ningún sector de respaldo disponible. |
0x034 | 0x29 | 12 | Reservado (se puede cambiar para formatear el byte de relleno 0xF6 [nb 2] como un artefacto de MS-DOS FDISK , debe inicializarse a 0 mediante herramientas de formato, pero no debe cambiarse mediante implementaciones del sistema de archivos o herramientas de disco más adelante).Los sectores de arranque DR-DOS 7.07 FAT32 utilizan estos 12 bytes para almacenar el nombre de archivo del archivo " |
0x040 | 0x35 | 1 | Cf. 0x024 para FAT12 / FAT16 (número de unidad física) exFAT BPB se encuentran en el sector de compensación 0x040 hasta 0x077 , superponiendo todas las entradas restantes de un EBPB FAT32 estándar, incluido este. Se pueden detectar a través de su firma de etiqueta OEM " |
0x041 | 0x36 | 1 | Cf. 0x025 para FAT12 / FAT16 (utilizado para varios propósitos; consulte FAT12 / FAT16) Puede contener bytes de relleno de formato 0xF6 [nb 2] artefactos después de particionar con MS-DOS FDISK, pero aún no formateado. |
0x042 | 0x37 | 1 | Cf. 0x026 para FAT12 / FAT16 (firma de arranque extendida, 0x29 ) La mayoría de las implementaciones del sistema de archivos FAT32 no admiten una firma alternativa de 0x28 [22] para indicar una forma abreviada de FAT32 EBPB con solo el número de serie a continuación (y sin etiquetas de volumen y entradas de tipo de sistema de archivos), pero dado que estos 19 bytes en su mayoría no utilizados pueden tener diferentes propósitos en algunos escenarios, las implementaciones deben aceptar 0x28 como una firma alternativa y luego recurrir a la etiqueta de volumen de directorio en el sistema de archivos en lugar de en el EBPB para compatibilidad con posibles extensiones. |
0x043 | 0x38 | 4 | Cf. 0x027 para FAT12 / FAT16 (ID de volumen) |
0x047 | 0x3C | 11 | Cf. 0x02B para FAT12 / FAT16 (etiqueta de volumen) No disponible si la firma en offset 0x042 se establece en 0x28 . |
0x052 | 0x47 | 8 | Cf. 0x036 para FAT12 / FAT16 (tipo de sistema de archivos, relleno con espacios en blanco ( 0x20 ), por ejemplo, " FAT32␠␠␠ ").No disponible si la firma en 0x042 se establece en 0x28 . Si ambas entradas de sectores lógicos totales en el desplazamiento 0x020 y 0x013 son 0 en volúmenes que utilizan un EBPB FAT32 con firma 0x29 , los volúmenes con más de 4,294,967,295 (2 32 -1) sectores (por ejemplo, algunos volúmenes DR-DOS con entradas de clúster de 32 bits) pueden usar esta entrada como entrada de sectores lógicos totales de 64 bits en su lugar. En este caso, la etiqueta OEM en el sector de compensación En su lugar, 0x003 se puede recuperar como un tipo de sistema de archivos de estilo nuevo. |
Excepciones
Las versiones de DOS anteriores a 3.2 dependían total o parcialmente del byte de 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 de la FAT ID encontrada y del tipo de unidad detectada, por defecto usan uno de los siguientes prototipos de BPB en lugar de usar los valores realmente almacenados en BPB. [nb 3]
Originalmente, el FAT ID estaba destinado a ser una bandera de bits con todos los bits establecidos 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), [14] pero este esquema no fue seguido por todos los OEM y se volvió obsoleto con la introducción de discos duros y formatos de alta densidad. Además, los distintos formatos de 8 pulgadas admitidos por 86-DOS y MS-DOS no se ajustan a este esquema.
FAT ID (comparar con la ID de medios en el desplazamiento de BPB 0x0A ) [29] [30] | 0xFF | 0xFE | 0xFD | 0xFC | 0xFB | 0xFA | 0xF9 | 0xF8 | 0xF0 | 0xED | 0xE5 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tamaño | 8 " | 5,25 " | 8 " | 8 " | 5,25 " | 8 " | 8 " | 5,25 " | 5,25 " | 5.25 "/ 3.5" | 5.25 "/ 3.5" | 5,25 " | 3,5 " | 3,5 " | 5,25 " | 5.25 "/ 3.5" | 3,5 " | 3,5 " | 3,5 " | 5,25 " | 8 " |
Densidad | ? | DD 48 ppp | Dakota del Sur | DD | DD 48 ppp | Dakota del Sur | Dakota del Sur | DD 48 ppp | DD 48 ppp | ? | ? | HD 96 ppp | DD 135tpi | HD 135 ppp | QD 96 ppp | ? | DD | HD 135 ppp | ED | QD 96 ppp | Dakota del Sur |
Modulación | ? | MFM | FM | MFM | MFM | FM | FM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | FM |
Capacidad formateada (KB) | ? | 320 | 250 ("antiguo") [32] [36] | 1200 | 160 | 250 ("nuevo") [32] [36] | 500 | 360 | 180 | 640 | 320 | 1200 | 720 | 1440 | 720 | 360 | 360 | 1440 | 2880 | 720 | 243/250 |
Cilindros (CHS) | 77 | 40 | 77 | 77 | 40 | 77 | 77 | 40 | 40 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 77 |
Sectores físicos / vía (compensación BPB 0x0D ) | ? | 8 | 26 | 8 | 8 | 26 | 26 | 9 | 9 | 8 | 8 | 15 | 9 | 18 | 9 (8 [35] ) | 9 | 9 | 18 | 36 | 9 (8 [35] ) | 26 |
Número de cabezas (compensación BPB 0x0F ) | ? | 2 | 1 [32] [36] | 2 [14] [29] [36] (1) | 1 | 1 [14] [32] [36] | 2 [29] | 2 | 1 | 2 | 1 | 2 | 2 | 2 | 2 | 1 | 1 | 2 | 2 | 2 | 1 |
Carga útil de bytes / sector físico | ? | 512 | 128 | 1024 | 512 | 128 | 128 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 128 |
Bytes / sector lógico (compensación de BPB 0x00 ) | ? | 512 | 128 | 1024 | 512 | 128 | 128 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 128 |
Sectores lógicos / clúster (compensación de BPB 0x02 ) | ? | 2 | 4 | 1 | 1 | 4 | 4 | 2 | 1 | 2 | 1 [29] (2? [14] ) | 1 | 2 | 1 | ? | 2 | ? | 1 | 2 | ? | 4 |
Sectores lógicos reservados (compensación BPB 0x03 ) | ? | 1 | 1 [32] [36] | 1 | 1 | 4 [32] [36] | 4 | 1 | 1 | 1 | 1 | 1 | 1 (2) | 1 | 1 | 1 | 1 | 1 | 1 | ? | 1 |
Número de FAT (compensación de BPB 0x05 ) | ? | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
Entradas del directorio raíz (compensación BPB 0x06 ) | ? | 112 (7 sectores) | 68 (17 sectores) | 192 (6 sectores) | 64 (4 sectores) | 68 (17 sectores) | 68 (17 sectores) | 112 (7 sectores) | 64 (4 sectores) | 112 (7 sectores) | 112 (7 sectores) | 224 (14 sectores) | 112 (7 sectores) | 224 (14 sectores) | ? | 112 (7 sectores) | ? | 224 (14 sectores) | 240 (15 sectores) | ? | 64 (16 sectores) |
Total de sectores lógicos (compensación de BPB 0x08 ) | ? | 640 | 2002 [32] [36] | 1232 [29] [36] (616 [14] ) | 320 | 2002 [14] [32] [36] | 4004 [29] | 720 | 360 | 1280 | 640 | 2400 | 1440 | 2880 | ? | 720 | ? | 2880 | 5760 | ? | 2002 |
Sectores lógicos / FAT (compensación de BPB 0x0B ) | ? | 1 | 6 [32] [36] | 2 | 1 | 6 [32] [36] | 6? [29] | 2 | 2 | 2 | 2 [29] (1? [14] ) | 7 | 3 | 9 (7) | ? | 2 | ? | 9 | 9 | ? | 1 |
Sectores ocultos (compensación BPB 0x11 ) | ? | 0 | 3 [29] (0 [14] ) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ? | 0 |
Número total de clústeres | ? | 315 | 497 | 1227 | 313 | ? | 997? [29] | 354 | 351 | ? | ? | 2371 | 713 | 2847? | ? | ? | ? | 2847 | 2863 | ? | ? |
Orden de sector lógico | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Mapeo del sector | ? | ? | ? | ||||||||||||||||||
Primer sector físico (CHS) | ? | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ? | ? | 1 | 1 | 1 | ? | 1 | ? | 1 | 1 | ? | 1 |
DRIVER.SYS /F:n | ? | 0 | 3 | 4 | 0 | ? | 3 | 0 | 0 | ? | ? | 1 | 2 | 7 | ? | ? | ? | 7 | 9 | ? | 3 |
Presencia BPB | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | sí | sí | sí | ? | ? | ? | sí | sí | ? | ? |
Apoyo | ? | ? [32] [36] | ? | ? |
Microsoft recomienda distinguir entre los dos formatos de 8 pulgadas para FAT ID 0xFE al intentar leer una marca de dirección de densidad única. Si esto da como resultado un error, el medio debe ser de doble densidad. [30]
La tabla no enumera varios formatos de disquete FAT12 incompatibles de 8 pulgadas y 5,25 pulgadas compatibles con 86-DOS , que difieren en el tamaño de las entradas del directorio (16 bytes frente a 32 bytes) o en la extensión de la reserva reservada. área de sectores (varias pistas completas frente a un solo sector lógico).
La implementación de un formato FAT12 de 315 KB de un solo lado utilizado en MS-DOS para Apricot PC y F1e [38] 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. [38] Las diferencias en el diseño del sector de arranque y los identificadores de medios hicieron que estos formatos fueran incompatibles con muchos otros sistemas operativos. Los parámetros de geometría para estos formatos son:
- 315 KB: bytes por sector lógico: 512 bytes, sectores lógicos por clúster: 1, sectores lógicos reservados: 1, número de FAT: 2, entradas del directorio raíz: 128, sectores lógicos totales: 630, ID de FAT: 0xFC , sectores lógicos por FAT: 2, sectores físicos por pista: 9, número de cabezas: 1. [38] [39]
- 720 KB: bytes por sector lógico: 512 bytes, sectores lógicos por clúster: 2, sectores lógicos reservados: 1, número de FAT: 2, entradas de directorio raíz: 176, sectores lógicos totales: 1440, ID de FAT: 0xFE , sectores lógicos por FAT: 3, sectores físicos por pista: 9, número de cabezas: 2. [38]
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 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 "de doble densidad, doble cara y 80 pistas, que no utilizaban sectores de arranque convencionales. Los discos de datos de 800 KB omitían un sector de arranque y comenzaban con una sola copia del FAT. [39] El primer byte del FAT reubicado en el sector lógico 0 se utilizó 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 un único FAT . [39] [40] Además, el formato de 640 KB difería al usar números de sector CHS físicos que comienzan con 0 (no 1, como común) y sectores incrementales en el orden sector-track-head (no sector-head-track, como común). [40] El FAT comenzó al comienzo de la siguiente pista. Estas diferencias hacen que estos formatos sean irreconocibles por otros sistemas operativos. Los parámetros de geometría para estos formatos son:
- 800 KB: bytes por sector lógico: 1024 bytes, sectores lógicos por clúster: 1, sectores lógicos reservados: 0, número de FAT: 1, entradas del directorio raíz: 192, sectores lógicos totales: 800, ID de FAT: 0xFD , sectores lógicos por FAT: 2, sectores físicos por pista: 5, número de cabezas: 2. [39] [40]
- 640 KB: bytes por sector lógico: 256 bytes, sectores lógicos por clúster: 8, sectores lógicos reservados: 16, número de FAT: 1, entradas del directorio raíz: 112, sectores lógicos totales: 2560, ID de FAT: 0xFF , sectores lógicos por FAT: 2, sectores físicos por pista: 16, número de cabezas: 2. [39] [40]
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, una sola cara y 80 pistas. Las dos primeras pistas estaban reservadas para el cargador de arranque, pero no contenían ni MBR ni BPB ( MS-DOS usó un BPB estático en memoria en su lugar). El sector de arranque (pista 0, lado 0, sector 1) era un código Z80 que comenzaba con DI 0xF3 . El bootstrap 8088 fue cargado por el Z80. La pista 1, lado 0, sector 2 comienza con el byte Media / FAT ID 0xFA . Uso de discos sin formato 0xE5 en su lugar. El sistema de archivos comienza en la pista 2, lado 0, sector 1. Hay 2 copias de FAT y 96 entradas en el directorio raíz. Además, hay 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 en el orden numerado del 1 al 10 en cada pista después de las pistas reservadas, pero los sectores lógicos del 1 al 10 se almacenaron en los sectores físicos 1, 6, 2, 7, 3, 8, 4, 9 , 5, 10. [41]
Sector de información de FS
El "FS Information Sector" se introdujo en FAT32 [42] 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 sector lógico 1, inmediatamente después del registro de inicio).
Desplazamiento de bytes | Longitud (bytes) | Contenido |
---|---|---|
0x000 | 4 | Firma del sector de la información del servicio fijo ( 0x52 0x52 0x61 0x41 = " RRaA ")Siempre que el sector de información de FS esté ubicado en el sector lógico 1, la ubicación, donde el FAT generalmente se inició en los sistemas de archivos FAT12 y FAT16 (con solo un sector reservado), la presencia de esta firma asegura que las primeras versiones de DOS nunca lo harán. intente montar un volumen FAT32, ya que esperan que los valores en el clúster 0 y el clúster 1 sigan ciertos patrones de bits, que no se cumplen con esta firma. |
0x004 | 480 | Reservado (los valores de bytes deben establecerse en 0x00 durante el formato, pero no se debe confiar en él y nunca se cambiará más adelante) |
0x1E4 | 4 | Firma del sector de la información del servicio fijo ( 0x72 0x72 0x41 0x61 = " rrAa ") |
0x1E8 | 4 | Último número conocido de clústeres de datos libres en el volumen, o 0xFFFFFFFF si se desconoce. Debe establecerse en 0xFFFFFFFF durante el formateo y actualizado por el sistema operativo más adelante. No se debe confiar absolutamente en que sea correcto en todos los escenarios. Antes de usar este valor, el sistema operativo debe verificar que este valor sea menor o igual al recuento de clústeres del volumen. |
0x1EC | 4 | Número del clúster de datos asignado más recientemente. Debe establecerse en 0xFFFFFFFF durante el formateo y actualizado por el sistema operativo más adelante. Con 0xFFFFFFFF el sistema debe iniciarse en el clúster 0x00000002 . No se debe confiar absolutamente en que sea correcto en todos los escenarios. Antes de usar este valor, el sistema operativo debe verificar que este valor sea un número de clúster válido en el volumen. |
0x1F0 | 12 | Reservado (los valores de bytes deben establecerse en 0x00 durante el formato, pero no se debe confiar en él y nunca se cambiará más adelante) |
0x1FC | 4 | Firma del sector de la información del servicio fijo ( 0x00 0x00 0x55 0xAA ) [10] [nb 4] (Los cuatro bytes deben coincidir antes de que se asuma que el contenido de este sector tiene un formato válido). |
Los datos del sector pueden estar desactualizados y no reflejar los contenidos multimedia actuales, porque no todos los sistemas operativos actualizan o utilizan este sector, e incluso si lo hacen, los contenidos no son válidos cuando el medio ha sido expulsado sin desmontar correctamente el volumen o después de un fallo de alimentación. Por lo tanto, los sistemas operativos deben inspeccionar primero los indicadores de bits de estado de apagado opcionales de un volumen que residen en la entrada FAT del clúster 1 o FAT32 EBPB en el desplazamiento. 0x041 e ignore los datos almacenados en el sector de información FS, si estos indicadores de bits indican que el volumen no se ha desmontado 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 asignación de grupo de datos; ver fragmentación .
Si este sector está presente en un volumen FAT32, el tamaño mínimo de sector lógico permitido es de 512 bytes, mientras que de lo contrario sería de 128 bytes. Algunas implementaciones de FAT32 admiten una ligera variación de la especificación de Microsoft al hacer que el sector de información de FS sea opcional especificando un valor de 0xFFFF [26] (o 0x0000 ) en la entrada en el desplazamiento 0x030 .
Tabla de asignación de archivos
Mapa de conglomerados
El área de datos de un volumen se divide en grupos de tamaño idéntico: 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 partición; los tamaños típicos de los racimos oscilan entre 2 y 32 KiB . [ cita requerida ]
Cada archivo puede ocupar uno o más clústeres según su tamaño. Por lo tanto, un archivo está representado por una cadena de clústeres (denominada lista enlazada individualmente ). Sin embargo, estos clústeres no se almacenan necesariamente uno junto al 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. Los 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 abarcan 3 bytes. Es consistentemente little-endian : si esos tres bytes se consideran como un número little-endian de 24 bits, los 12 bits menos significativos representan la primera entrada (p. Ej., Grupo 0) y los 12 bits más significativos, la segunda (p. Ej., Grupo 1) . En otras palabras, mientras que los ocho bits bajos del primer grupo de la fila se almacenan en el primer byte, los cuatro bits superiores se almacenan en el nibble bajo del segundo byte, mientras que los cuatro bits bajos del grupo siguiente de la fila se almacenan en el nibble alto del segundo byte y sus ocho bits más altos en el tercer byte.
Compensar | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | + A | + B | + C | + D | + E | + F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | F0 | F F | FF | 03 | 40 | 00 | 05 | 60 | 00 | 07 | 80 | 00 | FF | A F | 00 | 14 |
+0010 | C 0 | 00 | 0D | E0 | 00 | 0F | 00 | 01 | 11 | F 0 | FF | 00 | F 0 | FF | 15 | 60 |
+0020 | 01 | 19 | 7 0 | FF | F7 | A F | 01 | FF | 0 F | 00 | 00 | 7 0 | FF | 00 | 00 | 00 |
- FAT ID / marcador endianness (en el grupo reservado # 0 ), con 0xF0 que indica un volumen en un no particionada superfloppy accionamiento (debe ser 0xF8 para los discos con particiones)
- Indicadores de fin de cadena / indicadores de mantenimiento (en el grupo reservado n. ° 1 )
- Segunda cadena (7 grupos) para un archivo no fragmentado (aquí: # 2, # 3, # 4, # 5, # 6, # 7, # 8)
- Tercera cadena (7 grupos) para un archivo fragmentado, posiblemente desarrollado (aquí: # 9, #A, # 14, # 15, # 16, # 19, # 1A)
- Cuarta cadena (7 grupos) para un archivo no fragmentado, posiblemente truncado (aquí: #B, #C, #D, #E, #F, # 10, # 11)
- Clústeres vacíos (aquí: # 12, # 1B, # 1C, # 1E, # 1F)
- Quinta cadena (1 clúster) para un subdirectorio (aquí: # 13)
- Clústeres defectuosos (3 clústeres) (aquí: n. ° 17, n. ° 18, n. ° 1D)
El sistema de archivos FAT16 usa 16 bits por entrada FAT, por lo tanto, una entrada abarca dos bytes en orden de bytes little-endian:
Compensar | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | + A | + B | + C | + D | + E | + F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | F0 | FF | FF | FF | 03 | 00 | 04 | 00 | 05 | 00 | 06 | 00 | 07 | 00 | 08 | 00 |
+0010 | FF | FF | 0A | 00 | 14 | 00 | 0C | 00 | 0D | 00 | 0E | 00 | 0F | 00 | 10 | 00 |
+0020 | 11 | 00 | FF | FF | 00 | 00 | FF | FF | 15 | 00 | dieciséis | 00 | 19 | 00 | F7 | FF |
+0030 | F7 | FF | 1A | 00 | FF | FF | 00 | 00 | 00 | 00 | F7 | FF | 00 | 00 | 00 | 00 |
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 deben cambiarse de otro modo. Deben estar enmascarados antes de interpretar la entrada como una dirección de clúster de 28 bits.
Compensar | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | + A | + B | + C | + D | + E | + F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | F0 | FF | FF | 0F | FF | FF | FF | 0F | FF | FF | FF | 0F | 04 | 00 | 00 | 00 |
+0010 | 05 | 00 | 00 | 00 | 06 | 00 | 00 | 00 | 07 | 00 | 00 | 00 | 08 | 00 | 00 | 00 |
+0020 | FF | FF | FF | 0F | 0A | 00 | 00 | 00 | 14 | 00 | 00 | 00 | 0C | 00 | 00 | 00 |
+0030 | 0D | 00 | 00 | 00 | 0E | 00 | 00 | 00 | 0F | 00 | 00 | 00 | 10 | 00 | 00 | 00 |
+0040 | 11 | 00 | 00 | 00 | FF | FF | FF | 0F | 00 | 00 | 00 | 00 | FF | FF | FF | 0F |
+0050 | 15 | 00 | 00 | 00 | dieciséis | 00 | 00 | 00 | 19 | 00 | 00 | 00 | F7 | FF | FF | 0F |
+0060 | F7 | FF | FF | 0F | 1A | 00 | 00 | 00 | FF | FF | FF | 0F | 00 | 00 | 00 | 00 |
+0070 | 00 | 00 | 00 | 00 | F7 | FF | FF | 0F | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
- Primera cadena (1 clúster) para el directorio raíz, señalada por una entrada en FAT32 BPB (aquí: # 2)
- Segunda cadena (6 grupos) para un archivo no fragmentado (aquí: # 3, # 4, # 5, # 6, # 7, # 8)
La tabla de asignación de archivos ( FAT ) es un número contiguo de sectores inmediatamente después del área de sectores reservados. Representa una lista de entradas que se asignan a cada clúster del volumen. Cada entrada registra una de cinco cosas:
- el número de grupo del siguiente grupo en una cadena
- una entrada especial de final de cadena de clúster ( EOC ) que indica el final de una cadena
- una entrada especial para marcar un clúster incorrecto
- un cero para señalar que el clúster no se utiliza
Para que las primeras versiones 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 FAT para encontrar el ID de FAT en la entrada del clúster 0 de FAT en los disquetes FAT de DOS 1.0-1.1, donde no se encuentra ningún BPB válido.
Entradas especiales
Las dos primeras entradas en un FAT almacenan valores especiales:
La primera entrada (grupo 0 en FAT) contiene el ID de FAT desde MS-DOS 1.20 y PC DOS 1.1 (valores permitidos 0xF0 - 0xFF con 0xF1 - 0xF7 reservado) en los bits 7-0, que también se copia en el BPB del sector de arranque, offset 0x015 desde DOS 2.0. Los 4 bits restantes (si FAT12), 8 bits (si FAT16) o 20 bits (si FAT32) de esta entrada son siempre 1. Estos valores se organizaron de modo que la entrada también funcionara como un final de "trap-all" -marcador de cadena para todos los grupos de datos que tienen un valor de cero. Además, para FAT ID que no sean 0xFF (y 0x00 ) es posible determinar el nibble correcto y el orden de bytes (que será) usado por el controlador del sistema de archivos, sin embargo, el sistema de archivos FAT usa oficialmente solo una representación little-endian y no hay implementaciones conocidas de variantes que usen big-endian valores en su lugar. 86-DOS 0.42 hasta MS-DOS 1.14 usaban perfiles de unidad cableados en lugar de un FAT ID, pero usaban este byte para distinguir entre medios formateados con entradas de directorio de 32 bytes o 16 bytes, como se usaban antes de 86- DOS 0.42.
La segunda entrada (conglomerado 1 en FAT) almacena nominalmente el marcador de fin de cadena de conglomerado como lo utiliza el formateador, pero por lo general siempre se mantiene 0xFFF / 0xFFFF / 0x0FFFFFFF , es decir, con la excepción de los bits 31-28 en los volúmenes FAT32, estos bits normalmente siempre se establecen. Sin embargo, algunos sistemas operativos de Microsoft establecen estos bits si el volumen no es el volumen que contiene el sistema operativo en ejecución (es decir, utilice 0xFFFFFFFF en lugar de 0x0FFFFFFF aquí). [43] (Junto con los 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 superior 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, el marcador de fin de cadena predeterminado no debe cambiarse). Para DOS 1 y 2, la entrada se documentó como reservada para uso futuro .
Desde DOS 7.1, los dos bits más importantes de esta entrada de clúster pueden contener dos indicadores de bits opcionales que representan el estado actual del volumen en FAT16 y FAT32, pero no en los volúmenes FAT12. Estos bitflags no son compatibles con todos los sistemas operativos, pero los sistemas operativos que admiten esta función establecerían estos bits en el apagado y borrarían el bit más significativo en el inicio:
si el bit 15 (en FAT16) o el bit 27 (en FAT32) [44] no es configurado al montar el volumen, el volumen no se desmontó correctamente antes del apagado o la expulsión y, por lo tanto, se encuentra en un estado desconocido y posiblemente "sucio". [31] En volúmenes FAT32, el sector de información de servicios financieros puede contener datos desactualizados y, por lo tanto, no debe utilizarse. El sistema operativo normalmente ejecutaría SCANDISK o CHKDSK en el próximo inicio [nb 10] [44] (pero no al insertar un medio extraíble) para asegurar y posiblemente restablecer la integridad del volumen.
Si se borra el bit 14 (en FAT16) o el bit 26 (en FAT32) [44] , el sistema operativo ha encontrado errores de E / S de disco en el inicio, [44] una posible indicación de sectores defectuosos. Los sistemas operativos que conocen esta extensión lo interpretarán como una recomendación para realizar un escaneo de superficie ( SCANDISK ) en el próximo arranque. [31] [44] (Existe un conjunto similar de indicadores de bits en el EBPB FAT12 / FAT16 en el desplazamiento 0x1A o FAT32 EBPB en offset 0x36 . Si bien los controladores del sistema de archivos pueden acceder a la entrada del clúster 1 una vez que han montado el volumen, la entrada EBPB está disponible incluso cuando el volumen no está montado y, por lo tanto, es más fácil de usar para los controladores de dispositivos de bloques de disco o las herramientas de partición).
Si el número de las grasas en el BPB no se establece en 2, la segunda entrada de clúster en el primer FAT (grupo 1) también puede reflejar el estado de un TFAT volumen para los sistemas operativos TFAT-conscientes. 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 se establecen.
Algunas implementaciones FAT12 / FAT16 no estándar utilizan la entrada cluster 1 para almacenar el cluster inicial de un directorio raíz de tamaño variable (típicamente 2 [37] ). Esto puede ocurrir cuando el número de entradas del directorio raíz en el BPB tiene un valor de 0 y no se encuentra FAT32 EBPB (no hay firma 0x29 o 0x28 en desplazamiento 0x042 ). [27] Sin embargo, esta extensión no es compatible con los sistemas operativos convencionales, [27] 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 FAT12 con menos de 0xFEF y FAT16 volúmenes con menos de Grupos 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, [37] marcando el comienzo del área de datos.
Valores de clúster
Valores de entrada FAT:
FAT12 | FAT16 | FAT32 | Descripción |
---|---|---|---|
0x000 | 0x0000 | 0x? 0000000 | Clúster libre; DOS también lo utiliza para hacer referencia al directorio principal que inicia el clúster en las entradas ".." de los subdirectorios del directorio raíz en los volúmenes FAT12 / FAT16. [11] [13] De lo contrario, si este valor ocurre en cadenas de clústeres (por ejemplo, en entradas de directorio de longitud cero o archivos eliminados), las implementaciones del sistema de archivos deben tratar esto como un marcador de fin de cadena. [14] |
0x001 | 0x0001 | 0x? 0000001 | Reservado para fines internos; MS-DOS / PC DOS usa este valor de clúster como un indicador de clúster no libre temporal mientras construye cadenas de clúster durante la asignación de archivos (solo se ve en el disco si hay una falla o falla de energía en medio de este proceso). [11] [13] Si este valor ocurre en cadenas de clústeres en disco, las implementaciones del sistema de archivos deben tratar esto como un marcador de fin de cadena. |
0x002 - 0xFEF | 0x0002 - 0xFFEF (0x0002 - 0x7FFF) | 0x? 0000002 - 0x? FFFFFEF | Usado como agrupaciones de datos; el valor apunta al siguiente grupo. MS-DOS / PC DOS acepta valores hasta 0xFEF / 0xFFEF / 0x0FFFFFEF (a veces más; ver más abajo), mientras que para Atari GEMDOS solo valores hasta Se permiten 0x7FFF en volúmenes FAT16. |
0xFF0 [nb 11] - 0xFF5 (0xFF1 - 0xFF5) | 0xFFF0 - 0xFFF5 | 0x? FFFFFF0 - 0x? FFFFFF5 | Reservado en algunos contextos, [45] o también utilizado [5] [6] [7] [10] [46] como agrupaciones de datos en algunos sistemas no estándar. Se deben evitar los tamaños de volumen que utilizarían estos valores como grupos de datos, pero si estos valores ocurren en volúmenes existentes, el sistema de archivos debe tratarlos como grupos de datos normales en cadenas de grupos (idealmente aplicando controles de cordura adicionales), similar a lo que MS- DOS, PC DOS y DR-DOS lo hacen, [13] y deberían evitar asignarlos a archivos de otra manera. MS-DOS / PC DOS 3.3 y superior trata un valor de 0xFF0 [nb 11] [13] en volúmenes FAT12 (pero no en FAT16 o FAT32) como marcador de fin de cadena adicional similar a 0xFF8 - 0xFFF . [13] Para compatibilidad con MS-DOS / PC DOS, los sistemas de archivos deben evitar el uso de clústeres de datos. 0xFF0 en cadenas de clústeres en volúmenes FAT12 (es decir, trátelo como un clúster reservado similar a 0xFF7 ). (NB. La correspondencia del byte bajo del número de clúster con los valores de FAT ID y del descriptor de medios es la razón por la que estos valores de clúster están reservados). |
0xFF6 | 0xFFF6 | 0x? FFFFFF6 | Reservado; no utilice. [5] [6] [7] [10] [28] [46] (NB. Corresponde al valor de relleno de formato predeterminado 0xF6 en máquinas compatibles con IBM). No se deben crear volúmenes que utilicen este valor como clúster de datos, pero si este valor ocurre en volúmenes existentes, el sistema de archivos debe tratarlo como un clúster de datos normal en cadenas de clústeres (idealmente aplicando verificaciones de cordura adicionales ), y debería evitar asignarlo a archivos de otro modo. [14] |
0xFF7 | 0xFFF7 | 0x? FFFFFF7 | Sector defectuoso en clúster o clúster reservado (desde DOS 2.0). Los valores de transición para el número máximo de clústeres para los sistemas de archivos FAT12 y FAT16 se definen como tales que los valores de clúster de datos más altos posibles ( 0xFF5 y 0xFFF5 , [13] respectivamente) siempre será menor que este valor. [13] Por lo tanto, este valor no puede ocurrir normalmente en cadenas de clústeres, pero si lo hace, puede tratarse como un clúster de datos normal, ya que 0xFF7 podría haber sido un clúster de datos no estándar en volúmenes FAT12 antes de la introducción del marcador de clúster incorrecto con DOS 2.0 o la introducción de FAT16 con DOS 3.0, [14] y 0xFFF7 podría haber sido un clúster de datos no estándar en volúmenes FAT16 antes de la introducción de FAT32 con DOS 7.10. Teóricamente 0x0FFFFFF7 puede ser parte de una cadena de clúster válida en volúmenes FAT32, pero las utilidades de disco deben evitar la creación de volúmenes FAT32, donde podría ocurrir esta condición. El sistema de archivos debe evitar asignar este clúster a los archivos. [14] Las utilidades de disco no deben intentar restaurar "clústeres perdidos" que contengan este valor en la FAT, sino contarlos como clústeres defectuosos. |
0xFF8 - 0xFFF (y opcionalmente 0xFF0; [nb 11] ver nota) | 0xFFF8 - 0xFFFF | 0x? FFFFFF8 - 0x? FFFFFFF | Último grupo en archivo (EOC). Las implementaciones del sistema de archivos deben tratar todos estos valores como marcadores de fin de cadena al mismo tiempo. [14] La mayoría de las implementaciones de sistemas de archivos (incluidos 86-DOS, MS-DOS, PC DOS y DR-DOS) utilizan 0xFFF [14] / 0xFFFF [14] / 0x0FFFFFFF como marcador de fin de archivo al asignar archivos, pero se utilizaron versiones de Linux anteriores a la 2.5.40 0xFF8 / 0xFFF8 / 0x0FFFFFF8 . [47] Las versiones de mkdosfs ( dosfstools hasta 3.0.26) continúan utilizándose 0x0FFFFFF8 para el directorio raíz en volúmenes FAT32, mientras que algunas herramientas de reparación y desfragmentación de disco utilizan otros valores en el conjunto (por ejemplo, SCANDISK puede usar 0xFF8 / 0xFFF8 / 0x0FFFFFF8 en su lugar). Mientras que en la implementación FAT original de 8 bits en Standalone Disk BASIC de Microsoft, diferentes marcadores finales ( 0xC0 .. 0xCD ) se utilizaron para indicar el número de sectores (0 a 13) utilizados en el último grupo ocupado por un archivo, se reutilizaron diferentes marcadores finales bajo DOS para indicar diferentes tipos de medios, [14] con el marcador final utilizado actualmente indicado Sin embargo, en la entrada del clúster 1 , este concepto no parece haber sido ampliamente utilizado en la práctica, y en la medida en que en algunos escenarios los volúmenes pueden no ser reconocidos por algunos sistemas operativos, si algunos de los bits de orden inferior del valor almacenados en el clúster 1 no están configurados. Además, algunas implementaciones de sistemas de archivos defectuosos solo aceptan 0xFFF / 0xFFFF / 0x? FFFFFFF como marcador de fin de cadena válido. Las implementaciones del sistema de archivos deben verificar los valores de los grupos en las cadenas de grupos con el valor de grupo máximo permitido calculado por el tamaño real del volumen y tratar los valores más altos como si también fueran marcadores de fin de cadena. (El byte bajo del número de clúster se corresponde conceptualmente con el ID de FAT y los valores del descriptor de medios ; [14] consulte la nota anterior para el uso especial de MS-DOS / PC DOS de 0xFF0 [nb 11] en volúmenes FAT12. [13] ) |
A pesar de su nombre, FAT32 usa solo 28 bits de los 32 bits posibles. Los 4 bits superiores suelen ser cero, pero están reservados y deben dejarse intactos. 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 donde estos bits pueden usarse para otros fines. No deben ser borrados por el controlador del sistema de archivos al asignar nuevos clústeres, pero deben borrarse durante un reformateo.
Límites de tamaño
Las variantes FAT12, FAT16, FAT16B y FAT32 de los sistemas de archivos FAT tienen límites claros basados en el número de clústeres y el número de sectores por clúster (1, 2, 4, ..., 128). Para el valor típico de 512 bytes por sector:
Requisitos de FAT12: 3 sectores en cada copia de FAT por cada 1024 clústeres
Requisitos de FAT16: 1 sector en cada copia de FAT por cada 256 clústeres
Requisitos de FAT32: 1 sector en cada copia de FAT por cada 128 clústeres
Rango de FAT12: 1 a 4084 clústeres: 1 a 12 sectores por copia de FAT
Rango FAT16: 4085 a 65,524 clústeres: 16 a 256 sectores por copia de FAT
FAT32 rango: 65,525 a 268,435,444 clústeres: 512 a 2,097,152 sectores por copia de FAT
FAT12 mínimo: 1 sector por clúster × 1 clústeres = 512 bytes (0,5 KB)
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.084 clústeres = 133,824,512 bytes (≈ 127 MB)
[FAT12 máximo: 128 sectores por clúster × 4,084 clústeres = 267,694,024 bytes (≈ 255 MB)]
FAT16 máximo: 64 sectores por clúster × 65,524 clústeres = 2,147,090,432 bytes (≈2,047 MB)
[FAT16 máximo : 128 sectores por cl Uster × 65,524 racimos = 4,294,180,864 bytes (≈4,095 MB)]
FAT32 máxima: 8 sectores por clúster × 268,435,444 racimos = 1,099,511,578,624 bytes (≈1,024 GB)
FAT32 máxima: 16 sectores por clúster × 268,173,557 racimos = 2,196,877,778,944 bytes (≈2,046 GB)
[ FAT32 máximo: 32 sectores por clúster × 134,152,181 clústeres = 2,197,949,333,504 bytes (≈2,047 GB)]
[FAT32 máximo: 64 sectores por clúster × 67,092,469 clústeres = 2,198,486,024,192 bytes (≈2,047 GB)]
[FAT32 máximo: 128 sectores por clúster × 33,550,325 clústeres = 2,198,754,099,200 bytes (≈2,047 GB)]
- Leyenda: 268435444 + 3 es 0x0FFFFFF7 , porque FAT32 versión 0 usa solo 28 bits en los números de clúster de 32 bits, números de clúster 0x0FFFFFF7 hasta 0x0FFFFFFF marca clústeres defectuosos o el final de un archivo, el número de clúster 0 marca un clúster libre y el número 1 no se utiliza. [37] Asimismo, 65524 + 3 es 0xFFF7 para FAT16 y 4084 + 3 es 0xFF7 para FAT12. El número de sectores por clúster es una potencia de 2 que encaja en un solo byte, el valor más pequeño es 1 ( 0x01 ), el valor más grande es 128 ( 0x80 ). Las líneas entre corchetes indican el tamaño de grupo inusual 128, y para FAT32 los tamaños de grupo mayores de lo necesario 32 o 64. [48]
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 ). Por lo general, 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 inicio 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 DOS 5 RMDIR
/ 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 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 la magia 0x55 0xAA al final de todos los sectores de arranque. En Windows NT, el tamaño de sector más pequeño admitido es 128.
En los sistemas operativos Windows NT , las FORMAT
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 de sector común, 512 /A:64K
produce 128 sectores por clúster.
Ambas ediciones de cada ECMA-107 [5] e ISO / IEC 9293 [6] [7] especifican un número máximo de clúster MAX
determinado por la fórmula y reservan números de clúster hasta 4086 ( MAX=1+trunc((TS-SSA)/SC)
MAX+1
0xFF6 , FAT12) y posterior 65526 ( 0xFFF6 , FAT16) para una futura estandarización.
La especificación EFI FAT32 de Microsoft [10] 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 65525 clústeres es FAT16 y, de lo contrario, es FAT32. La entrada para el clúster 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 clúster 1 refleja el valor de fin de cadena utilizado por el formateador para las cadenas de clústeres ( 0xFFF , 0xFFFF o 0x0FFFFFFF ). Las entradas para los números de grupo 0 y 1 terminan en un límite de bytes incluso para FAT12, por ejemplo, 0xF9FFFF para descriptor de medios 0xF9 .
El primer grupo de datos es 2, [37] y, en consecuencia, el último grupo MAX
obtiene un 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 lo 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 usa para implementaciones de Linux, [46] o como dice la especificación FAT de Microsoft : [10]
... 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 son incorrectos.
Fragmentación
El sistema de archivos FAT no contiene mecanismos integrados que eviten que los archivos recién escritos se esparzan por la partición. [49] En los volúmenes en los que 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 una mayor cantidad de fragmentación , como ocurre con la fragmentación externa , el tiempo necesario para leer y escribir archivos fragmentados aumentará a medida que el sistema operativo tendrá que seguir las cadenas del clúster en el FAT (con partes que deben cargarse en la memoria primero, en particular en grandes volúmenes) y leer los datos correspondientes dispersos físicamente en todo el medio, lo que reduce las posibilidades de que el controlador de dispositivo de bloque de bajo nivel para realizar E / S de disco multisectorial o iniciar transferencias DMA más grandes, aumentando así de manera efectiva la sobrecarga del protocolo de E / S, así como el movimiento del brazo y los tiempos de asentamiento del cabezal dentro de la unidad de disco. Además, las operaciones de archivos se volverán más lentas con la creciente fragmentación, ya que el sistema operativo tarda cada vez más en 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 la vinculación de 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 conducir a penalizaciones de 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 más intensivas en recursos, ya que requiere leer las tablas de 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 la FAT todavía era pequeña 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, teniendo en cuenta que la introducción de estructuras de disco más sofisticadas habría también aumentó la complejidad y la huella 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 tiempos de búsqueda y escaneo prolongados 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 disco como última línea. [50] 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 del sistema de archivos especial en el que la cantidad de espacio libre calculada previamente se conserva durante los ciclos de encendido, de modo que el contador de espacio libre debe recalcularse solo cuando un medio extraíble formateado FAT32 se expulsa sin primero desmontarlo o si el sistema se apaga sin apagar correctamente el sistema operativo, un problema principalmente visible en las PC anteriores al estilo 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 del archivo 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 un problema también, especialmente cuando hay una gran cantidad de archivos pequeños.
Se han diseñado 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. [51] [52] 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 optimizaciones implementadas, el rendimiento en volúmenes FAT a menudo puede alcanzar el de sistemas de archivos más sofisticados en escenarios prácticos, mientras que al mismo tiempo conserva la ventaja de ser accesible incluso en sistemas muy pequeños o antiguos.
DOS 3.0 y versiones posteriores no reutilizarán inmediatamente el espacio en disco de los archivos eliminados para nuevas asignaciones, sino que buscarán el espacio no utilizado anteriormente antes de comenzar a usar el espacio en disco de los archivos eliminados anteriormente también. Esto no solo 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 comienzo de la FAT, como todavía lo hacía DOS 2.x. [20] Si se alcanza el final de la FAT, se reiniciará para continuar la búsqueda al principio de la FAT hasta que se haya encontrado espacio libre o se haya alcanzado de nuevo la posición original sin haber encontrado espacio libre. [20] Estos punteros se inicializan para señalar el inicio de las FAT después del arranque, [20] pero en los volúmenes FAT32, DOS 7.1 y superiores intentarán recuperar la última posición del Sector de Información FS . Sin embargo, este mecanismo se vence si una aplicación a menudo elimina y vuelve a crear archivos temporales, ya que el sistema operativo intentaría mantener la integridad de los datos vacíos de manera efectiva, causando más fragmentación al final. [20] En algunas versiones de DOS, el uso de una función API especial para crear archivos temporales se puede utilizar para evitar este problema.
Además, las entradas de directorio de los archivos eliminados se marcarán 0xE5 desde DOS 3.0. [11] DOS 5.0 y versiones posteriores comenzarán a reutilizar estas entradas solo cuando las entradas de directorio no utilizadas anteriormente se hayan agotado en la tabla y el sistema tendría que expandir la tabla en caso contrario. [13]
Desde DOS 3.3, el sistema operativo proporciona medios para mejorar el rendimiento de las operaciones de 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 la búsqueda de archivos y los tiempos de apertura. 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 del disco.
Windows NT asignará espacio en disco a los archivos en FAT de antemano, seleccionando grandes áreas contiguas, pero en caso de falla, los archivos que se estaban agregando aparecerán más grandes de lo que nunca se escribieron, con una gran cantidad de datos aleatorios al final.
Otros mecanismos de alto nivel pueden leer y procesar partes más grandes o la FAT completa al inicio o bajo demanda cuando sea necesario y construir dinámicamente representaciones de árbol en memoria de las estructuras de archivos del volumen diferentes de las estructuras en disco. [51] [52] 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 los escaneos lineales sobre la FAT real, incluso si una imagen de la FAT se almacena 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 local y el reordenamiento de las entradas de directorio en función de sus nombres o patrones de acceso en segundo plano.
Algunos de los problemas percibidos con la fragmentación de los sistemas de archivos FAT también resultan de las limitaciones de rendimiento de los controladores de dispositivos de bloque subyacentes , que se vuelven más visibles cuanto menos memoria está disponible para el almacenamiento en búfer de sectores y el bloqueo / desbloqueo de pistas:
Si bien el DOS de una sola tarea tenía disposiciones para lecturas multisectoriales y bloqueo / desbloqueo de pistas, el sistema operativo y la arquitectura tradicional de disco duro de 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 obtención previa asincrónica de los datos siguientes 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 de sectores 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 diferida 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 una falla de energía o falla, facilitado por la falta de protección de hardware entre las aplicaciones y el sistema.
Tabla de directorio
Una tabla de directorio es un tipo especial de archivo que representa un directorio (también conocido como carpeta). Desde 86-DOS 0.42 , [53] cada archivo o subdirectorio (desde MS-DOS 1.40 y PC DOS 2.0) almacenado en él está representado por una entrada de 32 bytes en la tabla. Cada entrada registra el nombre, extensión, 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 [ 53] y (desde PC DOS 1.1) también la hora de la última modificación. Las versiones anteriores de 86-DOS usaban solo entradas de directorio de 16 bytes, sin admitir archivos de más de 16 MB y sin fecha de la última modificación. [53]
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 de 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 crecer agregando otro clúster a la cadena en la FAT.
El sistema de archivos FAT en sí no impone ningún límite en la profundidad de un árbol de subdirectorios mientras haya grupos libres disponibles para asignar los subdirectorios, sin embargo, la Estructura de directorio actual (CDS) interna en MS-DOS / PC DOS limita la ruta absoluta de un directorio a 66 caracteres (incluida la letra de la unidad, pero excluyendo el delimitador de bytes NUL), [5] [6] [7] limitando así la profundidad máxima admitida de subdirectorios a 32, lo que ocurra antes. DOS simultáneos, DOS multiusuario y DR DOS 3.31 a 6.0 (hasta incluir las actualizaciones de 1992-11) no almacenan rutas absolutas a directorios de trabajo internamente y, por lo tanto, no muestran esta limitación. [54] Lo mismo se aplica a Atari GEMDOS, pero Atari Desktop 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. [55] PalmDOS, DR DOS 6.0 (desde BDOS 7.1) y superior, Novell DOS y OpenDOS tienen 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 los nombres de archivo cortos de DOS incluyen los siguientes:
- Letras mayúsculas
A
-Z
- Números
0
-9
- Espacio (aunque los espacios finales en el nombre base o la extensión se consideran como relleno y no como parte del nombre del archivo; también los nombres de archivo con espacio en ellos no se podían usar fácilmente en la línea de comandos de DOS antes de Windows 95 debido a la falta de un sistema de escape adecuado ). Otra excepción son los comandos internos
MKDIR
/MD
yRMDIR
/RD
bajo DR-DOS que aceptan argumentos únicos y, por lo tanto, permiten introducir espacios. ! # $ % & ' ( ) - @ ^ _ ` { } ~
- Caracteres 128–228
- Caracteres 230-255
Esto excluye los siguientes caracteres ASCII :
" * / : < > ? \ |
Windows / MS-DOS no tiene carácter de escape de shell+ , . ; = [ ]
Permitido solo en nombres de archivo largos- Letras minúsculas
a
-z
Almacenado comoA
-Z
; permitido en nombres de archivo largos - Caracteres de control 0–31
- Carácter 127 (DEL)
Personaje 229 ( 0xE5 ) no se permitió 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 sortear esta limitación con DOS 3.0 y superior.
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 los nombres de archivo en DR DOS 3.31 y superior, PalmDOS, Novell DOS, OpenDOS, DOS concurrentes, DOS multiusuario, System Manager y REAL / 32, ya que puede entrar en conflicto con la sintaxis para especificar contraseñas de archivos y directorios: " ...\DIRSPEC.EXT;DIRPWD\FILESPEC.EXT;FILEPWD
". El sistema operativo eliminará un punto y coma [54] (y también dos, desde DR-DOS 7.02) y las contraseñas pendientes de los nombres de archivo antes de almacenarlos en el disco. (El procesador de comandos 4DOS usa punto y coma para las listas de inclusión y requiere que el punto y coma se duplique para los archivos protegidos por contraseña con cualquier comando que admita comodines. [54] )
@
Muchos comandos DR-DOS, PalmDOS, Novell DOS, OpenDOS y Multiusuario DOS, System Manager y REAL / 32, así como 4DOS usan el carácter de signo de arroba ( ) para listas de archivos y, por lo tanto, a veces puede ser difícil de usar en nombres de archivos . [54]
Bajo Multiusuario DOS 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 comandos. [54]
En IBM 4680 OS y 4690 OS, los siguientes caracteres no están permitidos en los nombres de archivo:
? * : . ; , [ ] ! + = < > " - / \ |
Además, los siguientes caracteres especiales no están permitidos en el primer, cuarto, quinto y octavo carácter de un nombre de archivo, ya que entran en conflicto con el procesador de comandos del host (HCP) y los nombres de archivo de creación de la tabla de secuencia de entrada:
@ # ( ) { } $ &
Los nombres de archivo de 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 dada se interpretan de manera diferente para otra página de códigos (comando de DOS CHCP
) con respecto a minúsculas y mayúsculas, ordenación o validez como carácter de nombre de archivo.
Entrada de directorio
Antes de que Microsoft agregara soporte para nombres de archivo largos y marcas de tiempo de creación / acceso, bytes 0x0C - 0x15 de la entrada del directorio fueron utilizados por otros sistemas operativos para almacenar metadatos adicionales, más notablemente los sistemas operativos de la familia Digital Research almacenaron 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 ):
Desplazamiento de bytes | Longitud (bytes) | Contenido | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 8 | Nombre de archivo corto (relleno con espacios) El primer byte puede tener los siguientes valores especiales:
Las versiones de DOS anteriores a la 5.0 comienzan a escanear las tablas de directorios desde la parte superior de la tabla de directorios hacia la parte inferior. Para aumentar las posibilidades de que el archivo se recupere correctamente, DOS 5.0 y versiones posteriores recordarán la posición de la última entrada de directorio escrita y la utilizarán como punto de partida para los escaneos de tablas de directorios. | ||||||||||||||||||||||||||||||||||||||||||
0x08 | 3 | Extensión de archivo corta (rellenada con espacios) | ||||||||||||||||||||||||||||||||||||||||||
0x0B | 1 | Atributos de archivo
En DR DOS 6.0 y superior, incluidos PalmDOS, Novell DOS y OpenDOS, el atributo de volumen se establece para los archivos y directorios de eliminación pendientes en DELWATCH. Una combinación de atributos de 0x0F se utiliza para designar una entrada de nombre de archivo largo VFAT desde MS-DOS 7.0. Las versiones anteriores de DOS pueden confundir esto con una etiqueta de volumen de directorio, ya que toman la primera entrada con el atributo de volumen establecido como etiqueta de volumen. Este problema se puede evitar si se aplica una etiqueta de volumen de directorio como parte del proceso de formateo; por esta razón, algunas herramientas de disco escriben explícitamente | ||||||||||||||||||||||||||||||||||||||||||
0x0C | 1 |
| ||||||||||||||||||||||||||||||||||||||||||
0x0D | 1 |
El uso doble para el tiempo de creación ms y el carácter del archivo no es conflictivo, ya que el tiempo de creación ya no es importante para los archivos eliminados. | ||||||||||||||||||||||||||||||||||||||||||
0x0E | 2 |
Si los bits 15-11> 23 o los bits 10-5> 59 o los bits 4-0> 29 aquí, o cuando los bits 12-0 en el desplazamiento 0x14 contiene un mapa de bits de acceso y este no es un volumen FAT32 o un volumen que usa atributos extendidos de OS / 2, entonces esta entrada en realidad contiene un hash de contraseña; de lo contrario, se puede suponer que es la hora de creación de un archivo. | ||||||||||||||||||||||||||||||||||||||||||
0x10 | 2 |
El uso para la fecha de creación de los archivos existentes y la hora de la última modificación para los archivos eliminados no es conflictivo porque nunca se usan al mismo tiempo. Por la misma razón, el uso del tamaño de registro de los archivos existentes y la hora de la última modificación de los archivos eliminados tampoco es conflictivo. Las fechas de creación y los tamaños de registro no se pueden usar al mismo tiempo, sin embargo, ambos se almacenan solo en la creación del archivo y nunca se cambian más adelante, lo que limita el conflicto a los sistemas FlexOS, 4680 OS y 4690 OS que acceden a archivos creados en sistemas operativos externos también. como posibles problemas de visualización o clasificación de archivos en sistemas que intentan interpretar un tamaño de registro como tiempo de creación. Para evitar el conflicto, el almacenamiento de las fechas de creación debería ser una característica opcional de los sistemas operativos que lo soportan. | ||||||||||||||||||||||||||||||||||||||||||
0x12 | 2 |
El uso de los ID de propietario de los archivos existentes y el sello de fecha de última modificación para los archivos eliminados no es conflictivo porque nunca se usan al mismo tiempo. [54] El uso del sello de fecha de última modificación para archivos eliminados y la fecha de acceso tampoco es conflictivo ya que las fechas de acceso ya no son importantes para los archivos eliminados, sin embargo, las ID de propietario y las fechas de acceso no se pueden usar al mismo tiempo. | ||||||||||||||||||||||||||||||||||||||||||
0x14 | 2 |
El almacenamiento de los dos bytes más altos del primer clúster en un archivo en FAT32 es parcialmente conflictivo con los mapas de bits de los derechos de acceso. | ||||||||||||||||||||||||||||||||||||||||||
0x16 | 2 |
| ||||||||||||||||||||||||||||||||||||||||||
0x18 | 2 |
| ||||||||||||||||||||||||||||||||||||||||||
0x1A | 2 | Inicio de archivo en clústeres en FAT12 y FAT16. Dos bytes bajos del primer clúster en FAT32; con los dos bytes altos almacenados en el desplazamiento 0x14 . Las entradas con el indicador de etiqueta de volumen, subdirectorio ".." que apunta a la raíz FAT12 y FAT16, y los archivos vacíos con tamaño 0 deben tener el primer clúster 0. Las entradas VFAT LFN también tienen esta entrada establecida en 0; en los volúmenes FAT12 y FAT16, esto se puede utilizar como parte de un mecanismo de detección para distinguir entre archivos de eliminación pendientes en DELWATCH y VFAT LFN; véase más arriba. | ||||||||||||||||||||||||||||||||||||||||||
0x1C | 4 | Tamaño del archivo en bytes. Las entradas con el indicador de etiqueta de volumen o subdirectorio establecido deben tener un tamaño de 0. Las entradas de VFAT LFN nunca almacenan el valor 0x00000000 aquí. Esto se puede utilizar como parte de un mecanismo de detección para distinguir entre archivos de eliminación pendientes en DELWATCH y VFAT LFN; véase más arriba. |
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: [68]
- Local: no distribuya el archivo, manténgalo solo en el controlador local. [nb 14]
- Archivo espejo al actualizar: distribuya el archivo al servidor solo cuando el archivo se actualice.
- Archivo espejo al cerrar: distribuye el archivo al servidor solo cuando el archivo está cerrado.
- Archivo compuesto al actualizar: distribuya el archivo a todos los controladores cuando se actualice el archivo.
- Archivo compuesto al cerrar: distribuye el archivo a todos los controladores cuando se cierra el archivo. [69]
Algunas extensiones incompatibles que se encuentran en algunos sistemas operativos incluyen:
Desplazamiento de bytes | Longitud (bytes) | Sistema | Descripción |
---|---|---|---|
0x0C | 2 | Sistema operativo RISC | Tipo de archivo, 0x0000 - 0x0FFF |
0x0C | 4 | Petrov DOSFS | Dirección de carga de archivo |
0x0E | 2 | ANDOS | Dirección de archivo en la memoria |
0x10 | 4 | Petrov DOSFS | Dirección de ejecución del archivo |
Nombres largos de archivos VFAT
Los nombres de archivo largos de VFAT (LFN) se almacenan en un sistema de archivos FAT mediante un truco: agregar entradas adicionales al directorio antes de la entrada de archivo normal. Las entradas adicionales están marcadas con los atributos Etiqueta de volumen, Sistema, Oculto y Solo lectura (lo que produce 0x0F ), que es una combinación que no se espera en el entorno de MS-DOS y, por lo tanto, los programas de MS-DOS y las utilidades de terceros la ignoran. En particular, un directorio que contiene solo etiquetas de volumen se considera vacío y puede eliminarse; tal situación aparece si los archivos creados con nombres largos se eliminan de DOS sin formato. Este método es muy similar al método DELWATCH para utilizar el atributo de volumen para ocultar archivos de eliminación pendientes para una posible recuperación futura desde DR DOS 6.0 (1991) y superior. También es similar a un método discutido públicamente para almacenar nombres largos de archivos en Ataris y bajo Linux en 1992. [70] [71]
Debido a que las versiones anteriores de DOS podían confundir los nombres de LFN en el directorio raíz con la etiqueta de 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). [nb 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 las marcas de tiempo (pero no el campo del clúster inicial, por compatibilidad con las utilidades del disco, el campo del clúster inicial se establece en un valor de 0. Consulte el nombre de archivo 8.3 para obtener más explicaciones). Se pueden encadenar hasta 20 de estas entradas de 13 caracteres, admitiendo una longitud máxima de 255 caracteres UCS-2. [61]
Después del último carácter UCS-2 , un Se agrega 0x0000 . Los caracteres restantes no utilizados se rellenan con 0xFFFF .
Las entradas LFN utilizan el siguiente formato:
Desplazamiento de bytes | Longitud (bytes) | Descripción |
---|---|---|
0x00 | 1 | Número de secuencia (bit 6: última entrada lógica, primera entrada LFN física, bit 5: 0; bits 4-0: número 0x01 .. 0x14 ( 0x1F ), entrada eliminada: 0xE5 ) |
0x01 | 10 | Caracteres de nombre (cinco caracteres UCS-2 ) |
0x0B | 1 | Atributos (siempre 0x0F ) |
0x0C | 1 | Escriba (siempre 0x00 para VFAT LFN, otros valores reservados para uso futuro; para el uso especial de los bits 4 y 3 en SFN, ver más arriba) |
0x0D | 1 | Suma de comprobación del nombre de archivo de DOS |
0x0E | 12 | Caracteres de nombre (seis caracteres UCS-2 ) |
0x1A | 2 | Primer grupo (siempre 0x0000 ) |
0x1C | 4 | Caracteres de nombre (dos caracteres UCS-2 ) |
Si se requieren varias entradas LFN para representar un nombre de archivo, la entrada que representa el final del nombre de archivo es lo primero. El número de secuencia de esta entrada tiene el bit 6 ( 0x40 ) establecido para representar que es la última entrada lógica LFN 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. Un valor de 0xE5 se utiliza para indicar que la entrada está eliminada.
En los volúmenes FAT12 y FAT16, la prueba de los valores en 0x1A para ser cero y en 0x1C para que sea distinto de cero se puede utilizar para distinguir entre VFAT LFN y archivos de eliminación pendientes en DELWATCH.
Por ejemplo, un nombre de archivo como "Archivo con un nombre de archivo muy largo.ext" tendría el siguiente formato:
Secuencia de números | Datos de entrada |
---|---|
0x43 | "me.ext" |
0x02 | "y largo filena" |
0x01 | "Archivo con ver" |
??? | Entrada normal de 8,3 |
Una suma de comprobación también permite verificar si un nombre de archivo largo coincide con el nombre 8.3; tal desajuste podría ocurrir si un archivo se elimina y se vuelve a crear usando DOS en la misma posición del directorio. La suma de comprobación se calcula utilizando el algoritmo siguiente. (pFCBName es un puntero al nombre tal como aparece en una entrada de directorio normal, es decir, los primeros ocho caracteres son el nombre del archivo y los últimos tres son la extensión. El punto es implícito. Cualquier espacio no utilizado en el nombre del archivo se rellena con caracteres de espacio (ASCII 0x20 ). Por ejemplo, "Readme.txt" sería " README␠␠TXT
".)
carácter sin firmar lfn_checksum ( carácter sin firmar const * pFCBName ) { int i ; unsigned char suma = 0 ; para ( i = 11 ; i ; i - ) suma = (( suma & 1 ) << 7 ) + ( suma >> 1 ) + * pFCBName ++ ; devolver suma ; }
Si un nombre de archivo contiene solo letras minúsculas, o es una combinación de un nombre de 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 cambio, dos bits en byte 0x0C de la entrada del directorio se utilizan para indicar que el nombre del archivo debe considerarse total o parcialmente en minúsculas. Específicamente, el bit 4 significa una extensión en minúsculasy el bit 3 un nombre de base en minúsculas, lo que permite combinaciones como "example.TXT
" o "HELLO.txt
" pero no "Mixed.txt
". 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/fs/fat/dir.c
yfs/vfat/namei.c
); la opción de montajeshortname
determina si esta función se utiliza al escribir. [72]
Ver también
- Comparación de sistemas de archivos
- Asignación de letra de unidad
- exFAT
- Registro de arranque extendido (EBR)
- Sistema de archivos FAT y Linux
- Lista de sistemas de archivos
- Registro de arranque maestro (MBR)
- Tipo de partición
- Cronología de los sistemas operativos DOS
- Sistema de archivos FAT seguro para transacciones
- Turbo FAT
- Registro de arranque por volumen (VBR)
Notas
- ^ a b Esta es la razón por la que 0xE5 tenía un significado especial en las entradas del directorio.
- ^ a b c Una utilidad que ofrece una opción para especificar el valor de relleno de formato deseado para los discos duros es FDISK R2.31 de DR-DOS con su parámetro de borrado opcional
/W:246
. A diferencia de otras utilidades de FDISK , DR-DOS FDISK no es solo 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. - ^ a b c Para una máxima compatibilidad con MS-DOS / PC DOS y DR-DOS, los sistemas operativos que intentan determinar el formato de un disquete deben probar todas las secuencias de código de operación mencionadas en el desplazamiento del sector 0x000 en adición a la búsqueda de un byte de descriptor de medios válido al sector de desplazamiento 0x015 antes de asumir la presencia de un BPB . Aunque los disquetes de PC DOS 1.0 no contienen un BPB, comienzan con 0xEB también, pero no muestra un 0x90 en desplazamiento 0x002 . Los disquetes de PC DOS 1.10 incluso comienzan con 0xEB 0x ?? 0x90 , aunque todavía no cuentan con un BPB. En ambos casos, una prueba de un descriptor de medios válido en el desplazamiento 0x015 fallaría (valor 0x00 en lugar de descriptores de medios válidos 0xF0 y superior). Si estas pruebas fallan, DOS comprueba la presencia de un byte de descriptor de medios en el primer byte del primer FAT en el sector que sigue al sector de arranque (sector lógico 1 en disquetes FAT12 / FAT16).
- ^ a b c d e La firma en el desplazamiento 0x1FE en los sectores de arranque es 0x55 0xAA , es decir 0x55 en desplazamiento 0x1FE y 0xAA en el desplazamiento 0x1FF . Dado que la representación little-endian debe asumirse en el contexto de máquinas compatibles con IBM PC , esto se puede escribir como palabra de 16 bits 0xAA55 en programas para procesadores x86 (tenga en cuenta el orden de intercambio), mientras que debería escribirse como 0x55AA en programas para otras arquitecturas de CPU utilizando una representación big-endian . Dado que esto se ha mezclado varias veces en libros e incluso en documentos de referencia originales de Microsoft, este artículo utiliza la representación en disco basada en el desplazamiento de bytes para evitar posibles malas interpretaciones.
- ^ a b c La entrada de suma de comprobación en los sectores de arranque de Atari contiene el valor de alineación, no el valor mágico en sí. El valor mágico 0x1234 no se almacena en ningún lugar del disco. A diferencia de los procesadores Intel x86 , los procesadores Motorola 680x0 que se utilizan en las máquinas Atari utilizan una representación de memoria big-endian y, por lo tanto, se debe suponer una representación big-endian al calcular la suma de comprobación. Como consecuencia de esto, para el código de verificación de suma de comprobación que se ejecuta en máquinas x86, los pares de bytes deben intercambiarse antes de la adición de 16 bits.
- ^ DR-DOS puede arrancar desde medios con sectores lógicos FAT12 / FAT16 con tamaños de sectores lógicos de hasta 1024 bytes.
- ^ a b Las siguientes funciones de DOS devuelven estos valores de registro: INT 21h / AH = 2Ah "Obtener la fecha del sistema" devolvió los valores: CX = año ( 1980 .. 2099 ), DH = mes (1..12), DL = día ( 1..31). INT 21h / AH = 2Ch "Obtener la hora del sistema" valores devueltos: CH = hora (0..23), CL = minuto (0..59), DH = segundo (0..59), DL = 1/100 segundos (0..99).
- ^ Se ha observado que Windows XP crea estos discos híbridos al reformatear discos ZIP-100 con formato FAT16B a formato FAT32. Los volúmenes resultantes eran FAT32 por formato, pero aún usaban el FAT16B EBPB. (No está claro cómo Windows determina la ubicación del directorio raíz en los volúmenes FAT32, si solo se utilizó un EBPB FAT16).
- ^ Para admitir la coexistencia de DR-DOS con PC DOS y múltiples instalaciones paralelas de DR-DOS, la extensión del
IBMBIO␠␠COM
nombre del archivo de inicio "" predeterminadose puede cambiar usando laSYS /DR:ext
opción, donde ext representa la nueva extensión. Otros posibles nombres de archivo de arranque de DR-DOS que se esperan en escenarios especiales son "DRBIOS␠␠SYS
", "DRDOS␠␠␠SYS
", "IO␠␠␠␠␠␠SYS
", "JO␠␠␠␠␠␠SYS
". - ^ Si el indicador de apagado incorrecto de un volumen aún se borra durante el inicio, el volumen no se ha desmontado correctamente. Esto, por ejemplo, haría que Windows 98 WIN.COM iniciara SCANDISK para buscar y reparar posibles errores del sistema de archivos lógicos. Si se borra el indicador de sector defectuoso, también se forzará la realización de un escaneo de superficie. Esto se puede desactivar configurando AUTOSCAN = 0 en la sección [OPCIONES] delarchivo MSDOS.SYS .
- ^ a b c d Consulte otros enlaces para conocer las precauciones especiales con respecto a las ocurrencias de un valor de clúster de 0xFF0 en volúmenes FAT12 bajo MS-DOS / PC DOS 3.3 y superior.
- ^ a b Algunas versiones de FORMAT desde MS-DOS 1.25 y PC DOS 2.0 admitían una opción
/O
(para el antiguo ) para llenar el primer byte de todas las entradas del directorio con 0xE5 en lugar de utilizar el marcador final 0x00 . De este modo. 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 de finalización 0x00 . - ^ a b Para evitar una posible interpretación errónea de las etiquetas de volumen de directorio con entradas VFAT LFN por sistemas operativos no compatibles con VFAT, se sabe que las herramientas DR-DOS 7.07 FDISK y FORMAT escriben explícitamente
NO␠NAME␠␠␠␠
etiquetas de volumen de directorio " " ficticias si el usuario omite ingresar un volumen etiqueta. El sistema operativo internamente devolvería la misma cadena de forma predeterminada 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 de directorio), los sistemas operativos más antiguos podrían elegir erróneamente en su lugar, sube las entradas VFAT LFN. - ^ Estetipo de atributo de distribución de SO IBM 4680 y SO 4690 debe tener un valor de bit en disco de 0, ya que los archivos vuelven a este tipo cuando los atributos se pierden accidentalmente.
Referencias
- ^ "Sistemas de archivos" . Microsoft TechNet . 2001 . Consultado el 31 de julio de 2011 .
- ↑ a b Microsoft (15 de noviembre de 2006). Archivo CONFIG.TXT del CD-ROM de Windows 95 Artículo 135481, Revisión: 1.1, recuperado el 22 de diciembre de 2011: "Para cada disco duro, especifica si se registra la fecha en que se accedió por última vez a los archivos. Las fechas de último acceso están desactivadas para todas las unidades cuando su computadora se inicia en modo seguro y no se mantienen para disquetes de forma predeterminada. Sintaxis:
ACCDATE=drive1+|- [drive2+|-]...
" - ^ "Sistema de archivos FAT (Windows Embedded CE 6.0)" . Microsoft. 2010-01-06 . Consultado el 7 de julio de 2013 .
- ^ a b JEIDA / JEITA / CIPA (2010). "Estándar de la Asociación de Productos de Cámara y Imágenes, CIPA DC-009-Translation-2010, Regla de diseño para el sistema de archivos de cámara: DCF Versión 2.0 (Edición 2010)" (PDF) . Archivado desde el original (PDF) el 30 de septiembre de 2013 . Consultado el 13 de abril de 2011 .
- ^ a b c d e f g h yo j k "Volumen y estructura de archivos de los cartuchos de disco para el intercambio de información" . Norma ECMA-107 (2ª ed., Junio de 1995) . ECMA . 1995 . Consultado el 30 de julio de 2011 .
- ^ a b c d e f g h yo j k "Tecnología de la información - Volumen y estructura de archivos de cartuchos de disco para intercambio de información" . ISO / IEC 9293: 1994 . Catálogo ISO . 1994 . Consultado el 6 de enero de 2012 .
- ^ a b c d e f g h yo j k "Procesamiento de información - Volumen y estructura de archivos de cartuchos de discos flexibles para intercambio de información" . ISO 9293: 1987 . Catálogo ISO . 1987 . Consultado el 6 de enero de 2012 .
- ^ Aaron R. Reynolds , Dennis R. Adler, Ralph A. Lipe, Ray D. Pedrizetti, Jeffrey T. Parsons, Rasipuram V. Arun (26 de mayo de 1998). "Espacio de nombre común para nombres de archivo largos y cortos" . Patente de Estados Unidos 5758352 . Consultado el 19 de enero de 2012 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ https://patents.google.com/patent/US5758352
- ^ a b c d e f g h i j k l m n o "Especificación del sistema de archivos FAT32 de la iniciativa de firmware extensible de Microsoft, FAT: descripción general del formato en disco" . Microsoft . 2000-12-06 . Consultado el 3 de julio de 2011 .
- ^ a b c d e Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J .; Kyle, Jim (1994) [noviembre de 1993]. DOS sin documentar: una guía del programador para las funciones y estructuras de datos reservadas de MS-DOS, expandida para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2 ed.). Reading, Massachusetts: Addison Wesley . pag. 11 . ISBN 0-201-63287-X. ISBN 978-0-201-63287-3 .(xviii + 856 + vi páginas, 3.5 "-floppy) Fe de erratas: [1] [2]
- ^ a b c d e Haaf, Wilfried; Middel, Frank (noviembre de 1987). "Daten auf Scheiben - File- und Diskettenstrukturen unter CP / M, MSDOS und TOS: Dateiverwaltung unter TOS". c't - magazin für computertechnik . c't Kartei (en alemán). Vol. 1987 no. 11. Verlag Heinz Heise GmbH & Co. KG . págs. 241–246 [246]. ISSN 0724-8679 .
- ^ a b c d e f g h i j k l m n o p Chappell, Geoff (enero de 1994). Schulman, Andrew; Pedersen, Amorette (eds.). Internos de DOS . The Andrew Schulman Programming Series (primera impresión, primera edición). Addison Wesley Publishing Company . ISBN 978-0-201-60835-9. ISBN 0-201-60835-9 .(xxvi + 738 + iv páginas, 3.5 "-floppy [3] [4] ) Fe de erratas: [5] [6] [7]
- ^ a b c d e f g h i j k l m n o p q r s t u v w Microsoft MS-DOS 3.1 Programmierhandbuch en inglés Sprache [ Manual de referencia del programador de Microsoft MS-DOS 3.1 en inglés ]. München: Markt & Technik Verlag (publicado en 1986). 1984. ISBN 3-89090-368-1. 8411-310-02, 036-014-012.
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 NEAR de 3 bytes o un salto corto de 2 bytes) o un EBH ( el primer byte de un salto de 2 bytes seguido de un NOP). Si es así, un BPB se ubica comenzando en el desplazamiento 3. "
(NB. Este libro contiene muchos errores). - ^ a b Daniel B. Sedory. El sector de arranque de IBM Personal Computer DOS Versión 1.00 (1981) . 2005-08-02 ( [8] ).
- ^ a b Daniel B. Sedory. El sector de arranque de IBM Personal Computer DOS Versión 1.10 (1982) . 29 de julio de 2005 ( [9] ).
- ↑ a b Caldera (1997). Caldera OpenDOS Machine Readable Source Kit 7.01 . El archivo DISK.ASM en el kit fuente legible por máquina muestra que DR-DOS prueba el valor 0x69 también.
- ^ Paul, Matthias R. (20 de febrero de 2002). "Necesita DOS 6.22 (no OEM)" . Grupo de noticias : alt.msdos.programmer . Archivado desde el original el 9 de septiembre de 2017 . Consultado el 14 de octubre de 2006 .
- ^ Bass, Wally (14 de febrero de 1994). "Tamaño del grupo" . Grupo de noticias : comp.os.msdos.programmer . Archivado desde el original el 9 de septiembre de 2017 . Consultado el 14 de octubre de 2006 .
- ↑ a b c d e f g h Dave Williams (1992). Referencia técnica del programador para MSDOS e IBM PC . DOSREF, versión de Shareware 01/12/1992. ISBN 1-878830-02-3 . ( [10] , consultado el 8 de enero de 2012). Comentario: El autor menciona que DOS 4.0 verifica la etiqueta OEM, pero niega que DOS 3.2 también la verifique (aunque lo hace).
- ^ Paul, Matthias R. (25 de agosto de 2004). "NOVOLTRK.REG" . www.drdos.org . Archivado desde el original el 4 de marzo de 2016 . Consultado el 17 de diciembre de 2011 . [11]
- ^ a b "Solución de problemas de discos y sistemas de archivos" . Microsoft TechNet . 2005-11-05 . Consultado el 15 de junio de 2014 .
- ^ IBM (1983). Manual de referencia técnica de IBM PC . Comentario: Incluye una lista completa del código fuente ROM BIOS de la IBM PC original.
- ↑ a b c d Hans-Dieter Jankowski, Dietmar Rabich, Julian F. Reschke (1992). Atari Profibuch ST-STE-TT . Sybex, cuarta edición, duodécimo lote. ISBN 3-88745-888-5 , ISBN 978-3-88745-888-1 .
- ^ Seagate Technologies, "La transición a discos duros de sector 4K de formato avanzado (archivado por Wayback Machine @ Archive.org)", 2010 ( [12] ).
- ^ a b c d Brown, Ralf D. (29 de diciembre de 2002). "La lista de interrupciones x86" . Consultado el 14 de octubre de 2011 .
- ^ a b c d de Boyne Pollard, Jonathan (2010) [2006]. "Todo sobre los bloques de parámetros de BIOS" . Respuestas dadas con frecuencia . Consultado el 2 de junio de 2014 .
- ^ a b c Referencia del programador de Microsoft MS-DOS: versión 5.0 . Prensa de Microsoft. 1991. ISBN 1-55615-329-5.
- ^ a b c d e f g h yo j k "Formatos de disquete estándar compatibles con MS-DOS" . Ayuda y soporte técnico de Microsoft. 2003-05-12 . Consultado el 11 de septiembre de 2012 .
- ↑ a b c Microsoft (7 de julio de 1987). Referencia del programador de MS-DOS 3.3.
- ^ a b c Andries Brouwer (20 de septiembre de 2002). "El sistema de archivos FAT" . Consultado el 16 de octubre de 2011 .
- ^ a b c d e f g h i j k l m n o p q r Paterson, Tim ; Microsoft (19 de diciembre de 2013) [1983]. "Microsoft DOS V1.1 y V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM" . Museo de Historia de la Computación , Microsoft . Consultado el 25 de marzo de 2014 .(NB. Si bien los editores afirman que esto sería MS-DOS 1.1 y 2.0, en realidad es SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 .)
- ^ a b c d e f g h yo j Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben; Borman, Rob; Mayordomo, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Granjero, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W .; Kermaani, Kaamel; Rey, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martín, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Pérez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Corto, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Asesores técnicos". La Enciclopedia de MS-DOS: versiones 1.0 a 3.2 . Por Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A .; Hogan, Thom; Kyle, Jim; Letwin, Gordon ; Petzold, Charles ; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (Ed. Completamente reelaborada). Redmond, Washington, Estados Unidos: Microsoft Press . ISBN 1-55615-049-0. LCCN 87-21452 . OCLC 16581341 .(xix + 1570 páginas; 26 cm) (NB. Esta edición fue publicada en 1988 después de una extensa revisión de la primera edición retirada de 1986 por un equipo diferente de autores. [13] )
- ^ a b "Explicación detallada del sector de arranque FAT" . Base de conocimientos de Microsoft . 2003-12-06 . Consultado el 16 de octubre de 2011 .
- ^ a b c Lai, Robert S .; El grupo Waite (1987). Escritura de controladores de dispositivos MS-DOS (2ª ed.). Addison Wesley. ISBN 0-201-60837-5.
- ^ a b c d e f g h i j k l m n o p q r s t Paterson, Tim ; Microsoft (19 de diciembre de 2013) [1983]. "Microsoft DOS V1.1 y V2.0: /msdos/v20source/DEVDRIV.txt" . Museo de Historia de la Computación , Microsoft . Consultado el 25 de marzo de 2014 .(NB. Si bien los editores afirman que esto sería MS-DOS 1.1 y 2.0, en realidad es SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 .)
- ^ a b c d e Tim Paterson (1983). "Una mirada al interior de MS-DOS" . Byte . Archivado desde el original el 20 de julio de 2011 . Consultado el 18 de julio de 2011 .
La numeración comienza con 2; los dos primeros números, 0 y 1, están reservados.
- ^ a b c d PORT-DOS: Guía del usuario para Apricot Portable . Guías de solicitud de usuario, Reino Unido ( [14] ).
- ↑ a b c d e John C. Elliott (1998). Formatos de disco DOSPLUS . ( [15] ).
- ^ a b c d El BBC Master 512 . Páginas de computadora de la BBC de Yellow Pig ( [16] ).
- ^ Corporación de equipos digitales. Rainbow 100 MS-DOS 2.01 Volumen de documentación técnica 1 (QV025-GZ), Listado de BIOS del sistema operativo Microsoft MS-DOS (AA-X432A-TV), Controlador de disco universal, página 1-17. 1983.
- ^ "Explicación detallada del sector de arranque FAT" . Corporación de Asociados DEW. 2002 . Consultado el 16 de octubre de 2011 .
- ^ Daniel B. Sedory. Notas detalladas sobre el "indicador de apagado sucio" en MS-Windows . 2001-12-04. ( [17] ).
- ^ a b c d e "Kit de recursos de Windows 98 - Capítulo 10 - Discos y sistemas de archivos" . Microsoft TechNet . 1998 . Consultado el 16 de julio de 2012 .
- ^ Peter Norton (1986). Dentro de la PC IBM, revisada y ampliada , Brady. ISBN 0-89303-583-1 , pág. 157.
- ^ a b c Andries Brouwer . "FAT en Linux" .
- ^ Andries Brouwer (20 de septiembre de 2002). "GRASA" . Consultado el 11 de enero de 2012 .
- ^ "Limitaciones del sistema de archivos FAT32" . Base de conocimientos de Microsoft . 2007-03-26 . Consultado el 21 de agosto de 2011 .
Los clústeres no pueden tener 64 kilobytes o más
- ^ Duncan, Ray (1989). "Objetivos de diseño e implementación del nuevo Sistema de Archivos de Alto Rendimiento" . Revista de sistemas de Microsoft.[NÓTESE BIEN. Este archivo de texto en particular tiene varios errores de OCR; por ejemplo, "Ray" es el nombre correcto del autor; no 'Roy' como muestra el texto.]
- ^ Chen, Raymond (julio de 2006). "Microsoft TechNet: una historia breve e incompleta de FAT32" . Revista Microsoft TechNet.
- ^ a b Les Bell; Associates Pty Ltd (2 de septiembre de 1996) [1990]. "Sistema de archivos de alto rendimiento OS / 2" . Asesor de soporte de PC . Archivado desde el original el 1 de marzo de 2014 . Consultado el 24 de junio de 2014 .
- ^ a b Bridges, Dan (febrero de 1996). "Dentro del sistema de archivos de alto rendimiento - Parte 2/6: Introducción" . Los bits significativos, Brisbug usuario de PC Group Inc . Consultado el 24 de junio de 2014 .
- ^ a b c Productos informáticos de Seattle (1981). "Anexo de SCP 86-DOS 1.0" (PDF) . Consultado el 10 de marzo de 2013 .
- ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak Paul, Matthias R. (30 de julio de 1997) [1 de mayo de 1994]. NWDOS-TIPs - Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds . MPDOSTIP . Release 157 (en alemán) (3 ed.). Archivado desde el original el 5 de noviembre de 2016 . Consultado el 11 de enero de 2012 .(NB. NWDOSTIP.TXT es un trabajo completo sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características y funciones internas no documentadas. Es parte de la colección MPDOSTIP.ZIP aún más grande del autor, mantenida hasta 2001 y distribuida en muchos sitios en el tiempo. El enlace proporcionado apunta a una versión anterior del archivo convertida en HTML.) [18]
- ^ IBM. 4690 OS User's Guide Versión 5.2 , documento de IBM SC30-4134-01, 2008-01-10 ( [19] ).
- ^ a b Paterson, Tim ; Microsoft (19 de diciembre de 2013) [1983]. "Microsoft DOS V1.1 y V2.0: /msdos/v20source/FORMAT.TXT" . Museo de Historia de la Computación , Microsoft . Consultado el 25 de marzo de 2014 .(NB. Si bien los editores afirman que esto sería MS-DOS 1.1 y 2.0, en realidad es SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 .)
- ^ a b Shustek, Len (24 de marzo de 2014). "Código fuente inicial de Microsoft MS-DOS" . Software Gems: Serie de códigos fuente históricos del Museo de Historia de la Computación . Consultado el 29 de marzo de 2014 .(NB. Si bien el autor afirma que esto sería MS-DOS 1.1 y 2.0, en realidad es SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 .)
- ^ a b Levin, Roy (25 de marzo de 2014). "Microsoft pone a disposición del público el código fuente de MS-DOS y Word para Windows" . Blog oficial de Microsoft . Archivado desde el original el 28 de marzo de 2014 . Consultado el 29 de marzo de 2014 .(NB. Si bien el autor afirma que esto sería MS-DOS 1.1 y 2.0, en realidad es SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 .)
- ^ a b c d e f g h i j k l m n o p q Caldera (1997). Caldera OpenDOS Machine Readable Source Kit 7.01 . El archivo FDOS.EQU en el kit fuente legible por máquina tiene equivalentes para las entradas de directorio correspondientes.
- ^ John C. Elliott (1998). Formatos de disco CP / M 4.1 . ( [20] ): "CP / M 4.1 (DOS Plus [1.2]) permite el uso de dos sistemas de archivos - CP / M y DOS. La versión [...] suministrada con el Amstrad PC1512 no puede manejar disquetes de más de 360k (CP / M) / 1.2Mb (DOS), o particiones de disco duro mayores de 32Mb. [...] El sistema de archivos DOS puede ser FAT12 o FAT16. El formato es exactamente como en PCDOS 2.11, excepto: Byte 0Ch de la entrada del directorio contiene los [...] cuatro "atributos de usuario" F1'-F4 '[...] Las contraseñas de estilo DRDOS no son compatibles ".
- ^ a b vinDaci (6 de enero de 1998). "Especificación de nombre de archivo largo" . Archivado desde el original el 20 de abril de 2001 . Consultado el 13 de marzo de 2007 .
- ^ Henk Kelder. FAT32.TXT para FAT32.IFS versión 0.74 . ( "Copia archivada" . Archivado desde el original el 30 de marzo de 2012 . Consultado el 14 de enero de 2012 .Mantenimiento de CS1: copia archivada como título ( enlace )). Comentario: Esta versión anterior del archivo README todavía analiza el antiguo 0xEA y Valores mágicos 0xEC .
- ^ Henk Kelder (2003). FAT32.TXT para FAT32.IFS versión 0.9.13. "( [21] ):" Este byte [...] no se modifica mientras se ejecuta Windows 95 y neighter por SCANDISK o DEFRAG . [...] Si otro programa establece el valor en 0x00 para un archivo que tiene EA, estos EA ya no se encontrarán usando solo llamadas DosFindFirst / Next. Las otras llamadas de OS / 2 para recuperar EA (DosQueryPathInfo, DosQueryFileInfo y DosEnumAttribute) no se basan en este byte. También podría ocurrir [...] lo contrario. [...] En esta situación, sólo se reducirá el rendimiento de las exploraciones de directorios. Ambas situaciones [...] son corregidas por CHKDSK ".
- ^ Netlabs. FAT32.IFS Wiki y fuentes . ( [22] ).
- ^ a b IBM. 4690 OS Programming Guide Versión 5.2 , documento de IBM SC30-4137-01, 2007-12-06 ( [23] ).
- ^ a b c d e f g h yo j k l m n Serie de referencia para desarrolladores de OpenDOS - Guía del sistema y del programador - Guía del programador . Caldera, Inc. Agosto de 1997. Caldera Part No. 200-DODG-003. Archivado desde el original el 7 de octubre de 2017 . Consultado el 20 de mayo de 2014 . (Impreso en el Reino Unido.)
- ↑ Bob Eager, Tavi Systems (28 de octubre de 2000). Implementación de atributos extendidos en el sistema de archivos FAT . ( [24] ).
- ^ IBM (2003). Información sobre los atributos de distribución de archivos únicos del sistema operativo 4690 , documento de IBM R1001487, 2003-07-30. ( "Copia archivada" . Archivado desde el original el 21 de mayo de 2014 . Consultado el 20 de mayo de 2014 .Mantenimiento de CS1: copia archivada como título ( enlace )): "Los tipos de [...] archivo se almacenan en la parte" Bits reservados "de la estructura del directorio de archivos de PC-DOS [...] sólo 4690 respeta y conserva estos atributos. Varios sistemas operativos distintos de 4690 toman diferentes acciones si estos bits se activan [...] al copiar desde un disquete creado en un sistema 4690. [...] PC-DOS y Windows 2000 Professional copiarán el archivo sin error y pondrán a cero los bits. OS / 2 [.. .] 1.2 [...] se negará a copiar el archivo a menos que [...] primero ejecute CHKDSK / F en el archivo. Después [...] de CHKDSK, copiará el archivo y pondrá a cero los bits. [.. .] cuando [...] copie de nuevo al sistema 4690, [...] el archivo se copiará como un archivo local ".
- ^ IBM. 4690 guardar y restaurar atributos de distribución de archivos . Documento de IBM R1000622, 2010-08-31 ( "Copia archivada" . Archivado desde el original el 21 de mayo de 2014 . Consultado el 20 de mayo de 2014 .Mantenimiento de CS1: copia archivada como título ( enlace )).
- ^ Natuerlich! (24 de marzo de 1992). "Obtener nombres de archivo más largos de GEMDOS" . comp.sys.atari.st.tech . Consultado el 5 de mayo de 2014 .
- ^ Torvalds, Linus (23 de diciembre de 1992). "Nombres de archivo largos" . comp.os.minix . Consultado el 5 de mayo de 2014 .
- ^ "mount (8): sistema de archivos de montaje" . Página de manual de Linux .
enlaces externos
- ECMA-107 Volumen y estructura de archivos de los cartuchos de disco para el intercambio de información , idéntico a ISO / IEC 9293.
- Especificación del sistema de archivos FAT32 de la Iniciativa de firmware extensible de Microsoft, FAT: descripción general del formato en disco
- Comprensión de los sistemas de archivos FAT32 (explicado para desarrolladores de firmware integrado)
- Comprender FAT, incluida mucha información sobre LFN
- Explicación detallada del sector de arranque FAT : artículo 140418 de Microsoft Knowledge Base
- Descripción del sistema de archivos FAT32 : artículo 154997 de Microsoft Knowledge Base
- Implementación del sistema de archivos FAT12 / FAT16 / FAT32 para * nix : incluye bibliotecas libfat y fusefat, un controlador del sistema de archivos FUSE
- MS-DOS: Limitaciones de directorios y subdirectorios : artículo 39927 de Microsoft Knowledge Base
- Descripción general de los sistemas de archivos FAT, HPFS y NTFS : artículo de Microsoft Knowledge Base 100108
- Límites de volumen y tamaño de archivo de los sistemas de archivos FAT : Microsoft Technet, copia realizada por Internet Archive Wayback Machine
- Microsoft TechNet: Una historia breve e incompleta de FAT32 por Raymond Chen
- Formateador FAT32 : permite formatear volúmenes superiores a 32 GB con FAT32 en Windows 2000 , Windows XP y Windows Vista
- Fdisk no reconoce el tamaño completo de los discos duros de más de 64 GB : artículo 263044 de Microsoft Knowledge Base.
- Microsoft Windows XP: Sistema de archivos FAT32 . Copia realizada por Internet Archive Wayback Machine de un artículo con resumen de límites en FAT32 que ya no está disponible en el sitio web de Microsoft.
- Diseño visual de una unidad FAT16