stringtranslate.com

Diseño del sistema de archivos FAT

El sistema de archivos FAT es un sistema de archivos utilizado en los sistemas operativos de la familia MS-DOS y Windows 9x . [3] Sigue utilizándose en dispositivos móviles y sistemas integrados , y por lo tanto es un sistema de archivos adecuado para el intercambio de datos entre computadoras y dispositivos de casi cualquier tipo y antigüedad desde 1981 hasta la actualidad.

Estructura

Un sistema de archivos FAT se compone de cuatro regiones:

FAT utiliza el formato little-endian para todas las entradas en el encabezado (excepto, donde se menciona explícitamente, algunas entradas en los sectores de arranque de Atari ST) y las FAT. [5] Es posible asignar más sectores FAT de los necesarios para la cantidad de clústeres. El final del último sector de cada copia FAT puede quedar sin usar si no hay clústeres correspondientes. La cantidad total de sectores (como se indica en el registro de arranque) puede ser mayor que la cantidad de sectores utilizados por los datos (clústeres × sectores por clúster), las FAT (cantidad de FAT × sectores por FAT), el directorio raíz (n/a para FAT32) y los sectores ocultos, incluido el sector de arranque: esto daría como resultado sectores sin usar al final del volumen. Si una partición contiene más sectores que la cantidad total de sectores ocupados por el sistema de archivos, también daría como resultado sectores sin usar, al final de la partición, después del volumen.

Área de sectores reservados

Sector de arranque

En dispositivos de almacenamiento no particionados , como 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). En dispositivos de almacenamiento particionados, como discos duros, el sector de arranque es el primer sector de una partición, como se especifica en la tabla de particiones del dispositivo.

Bloque de parámetros del BIOS

DOS 3.0 BPB:

Las siguientes extensiones fueron documentadas desde DOS 3.0, sin embargo, ya eran compatibles con algunas ediciones de DOS 2.11. [28] MS-DOS 3.10 todavía admitía el formato DOS 2.0, pero también podía usar el formato DOS 3.0.

DOS 3.2 BPB:

Oficialmente, MS-DOS 3.20 todavía utilizaba el formato DOS 3.0, pero SYSy FORMATfueron adaptados para soportar un formato 6 bytes más largo (del cual no se usaban todas las entradas).

DOS 3.31 BPB:

Se introdujo oficialmente con DOS 3.31 y no se utiliza en DOS 3.2. Algunas utilidades de DOS 3.2 se diseñaron para que reconocieran este nuevo formato. La documentación oficial recomienda confiar en estos valores solo si la entrada de sectores lógicos en el desplazamiento 0x013 es cero.

Una fórmula simple traduce el número de clúster dado de un volumen CNa un número de sector lógico LSN: [24] [25] [26]

  1. Determinar (una vez) , dónde se almacena el recuento del sector reservado en el desplazamiento 0x00E , la cantidad de FAT en el desplazamiento 0x010 , los sectores por FAT en el desplazamiento 0x016 (FAT12/FAT16) o 0x024 (FAT32), las entradas del directorio raíz en el desplazamiento 0x011 , el tamaño del sector en el desplazamiento 0x00B y redondear a un número entero.SSA=RSC+FN×SF+ceil((32×RDE)/SS)RSCFNSFRDESSceil(x)
  2. Determinar dónde se almacenan los sectores por clúster en el desplazamiento 0x00D .LSN=SSA+(CN−2)×SCSC

En los medios no particionados, la cantidad de sectores ocultos del volumen es cero y, por lo tanto, LSNlas LBAdirecciones son las mismas siempre que el tamaño del sector lógico de un volumen sea idéntico al tamaño del sector físico del medio subyacente. En estas condiciones, también es sencillo traducir entre CHSdirecciones y LSNs:

LSN=SPT×(HN+(NOS×TN))+SN−1, donde los sectores por pista SPTse almacenan en el desplazamiento 0x018 y el número de lados en el desplazamiento 0x01A . El número de pista , el número de cabezal y el número de sector corresponden a Cilindro-cabeza-sector : la fórmula proporciona la traducción conocida de CHS a LBA .NOSTNHNSN

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 Bloque de parámetros BIOS extendidos (EBPB) (los bytes debajo del desplazamiento de sector 0x024 son los mismos que para el BPB de DOS 3.31):

Bloque de parámetros BIOS extendido FAT32

En esencia, FAT32 inserta 28 bytes en el EBPB, seguidos de los 26 bytes EBPB restantes (o a veces solo 7) como se muestra arriba para FAT12 y FAT16. Los sistemas operativos Microsoft e IBM determinan el tipo de sistema de archivos FAT utilizado en un volumen únicamente por la cantidad de clústeres, no por el formato BPB utilizado o el tipo de sistema de archivos indicado, es decir, es técnicamente posible utilizar un "EBPB FAT32" también para volúmenes FAT12 y FAT16, así como un EBPB DOS 4.0 para volúmenes FAT32 pequeños. Dado que se descubrió que los sistemas operativos Windows creaban dichos volúmenes en algunas condiciones extrañas, [nb 6] los sistemas operativos deberían estar preparados para lidiar con estas formas híbridas.

Excepciones

Las versiones de DOS anteriores a la 3.2 dependían total o parcialmente del byte de descriptor de medio en el BPB o del byte de identificación de FAT en el clúster 0 del primer FAT para determinar los formatos de disquete FAT12 incluso si había un BPB presente. Según el ID de FAT encontrado y el tipo de unidad detectado, se utiliza de manera predeterminada uno de los siguientes prototipos de BPB en lugar de utilizar los valores realmente almacenados en el BPB. [nb 1]

Originalmente, el FAT ID estaba destinado a ser un indicador de bits con todos los bits configurados excepto el bit 2, que se borraba para indicar un formato de 80 pistas (en lugar de 40 pistas), el bit 1, que se borraba para indicar un formato de 9 sectores (en lugar de 8 sectores) y el bit 0, que se borraba para indicar un formato de una sola cara (en lugar de dos caras), [7] pero este esquema no fue seguido por todos los OEM y se volvió obsoleto con la introducción de los discos duros y los formatos de alta densidad. Además, los diversos formatos de 8 pulgadas compatibles con 86-DOS y MS-DOS no se ajustan a este esquema.

Microsoft recomienda distinguir entre los dos formatos de 8 pulgadas para FAT ID 0xFE intentando leer una marca de dirección de densidad simple. Si esto da como resultado un error, el medio debe ser de doble densidad. [23]

La tabla no enumera una serie de formatos de disquetes FAT12 de 8 y 5,25 pulgadas incompatibles compatibles con 86-DOS , que difieren en el tamaño de las entradas de directorio (16 bytes frente a 32 bytes) o en la extensión del área de sectores reservados (varias pistas completas frente a un solo sector lógico).

La implementación de un formato FAT12 de una sola cara de 315 KB utilizado en MS-DOS para Apricot PC y F1e [34] tenía un diseño de sector de arranque diferente, para adaptarse al BIOS no compatible con IBM de esa computadora. La instrucción de salto y el nombre OEM se omitieron, y los parámetros BPB de MS-DOS (desplazamientos 0x00B - 0x017 en el sector de arranque estándar) se ubicaron en el desplazamiento 0x050 . En cambio, Portable , F1, PC duo y Xi FD admitieron un formato FAT12 de doble cara no estándar de 720 KB. [34] 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:

Las versiones posteriores de Apricot MS-DOS incorporaron la capacidad de leer y escribir discos con el sector de arranque estándar, además de los que tenían el de Apricot. Estos formatos también fueron admitidos por DOS Plus 2.1e/g para la serie Apricot ACT.

La adaptación DOS Plus para el BBC Master 512 admitía dos formatos FAT12 en unidades de 5,25" de doble cara, 80 pistas y doble densidad, que no utilizaban sectores de arranque convencionales en absoluto. Los discos de datos de 800 KB omitían un sector de arranque y empezaban con una única copia del FAT. [35] El primer byte del FAT reubicado en el sector lógico 0 se utilizaba para determinar la capacidad del disco. Los discos de arranque de 640 KB empezaban con un sistema de archivos ADFS en miniatura que contenía el cargador de arranque, seguido de un único FAT. [35] [36] Además, el formato de 640 KB se diferenciaba por utilizar números de sector CHS físicos que empezaban con 0 (no 1, como es habitual) y sectores incrementales en el orden sector-pista-cabeza (no sector-cabeza-pista, como es habitual). [36] El FAT empezaba al principio de la siguiente pista. Estas diferencias hacen que estos formatos sean irreconocibles para otros sistemas operativos. Los parámetros de geometría para estos formatos son:

DOS Plus para Master 512 también podía acceder a discos de PC estándar formateados a 180 KB o 360 KB , utilizando el primer byte de la FAT en el sector lógico 1 para determinar la capacidad.

El DEC Rainbow 100 (todas las variantes) admitía un formato FAT12 en unidades de 5,25" de densidad cuádruple, de una sola cara y 80 pistas. Las dos primeras pistas estaban reservadas para el cargador de arranque, pero no contenían un MBR ni un BPB (MS-DOS utilizaba en su lugar un BPB estático en memoria). El sector de arranque (pista 0, lado 0, sector 1) era código Z80 que comenzaba con DI 0xF3 . El arranque 8088 lo cargaba el Z80. La pista 1, lado 0, sector 2 comienza con el byte de identificación de medio/FAT 0xFA . Los discos sin formato utilizan en su lugar 0xE5 . El sistema de archivos comienza en la pista 2, lado 0, sector 1. Hay 2 copias de la FAT y 96 entradas en el directorio raíz. Además, hay una asignación de pista física a lógica para efectuar un intercalado de sectores 2:1. Los discos se formatearon con los sectores físicos en orden. numerados del 1 al 10 en cada pista después de las pistas reservadas, pero los sectores lógicos del 1 al 10 se almacenaron en los sectores físicos 1, 6, 2, 7, 3, 8, 4, 9, 5, 10. [37]

Sector de Información FS

El "Sector de información FS" se introdujo en FAT32 [38] para acelerar los tiempos de acceso a ciertas operaciones (en particular, obtener la cantidad de espacio libre). Se encuentra en un número de sector lógico especificado en el registro de arranque EBPB de FAT32 en la posición 0x030 (normalmente el sector lógico 1, inmediatamente después del propio registro de arranque).

Los datos del sector pueden estar desactualizados y no reflejar el contenido actual del medio, porque no todos los sistemas operativos actualizan o utilizan este sector, e incluso si lo hacen, el contenido no es válido cuando el medio ha sido expulsado sin desmontar correctamente el volumen o después de un corte de energía. Por lo tanto, los sistemas operativos primero deben inspeccionar los indicadores de bit de estado de apagado opcionales de un volumen que residen en la entrada FAT del clúster 1 o el EBPB FAT32 en el desplazamiento 0x041 e ignorar los datos almacenados en el sector de información del sistema de archivos, si estos indicadores de bit indican que el volumen no se desmontó correctamente antes. Esto no causa ningún problema más allá de una posible penalización de velocidad para la primera consulta de espacio libre o la asignación del clúster de datos; consulte fragmentación.

Si este sector está presente en un volumen FAT32, el tamaño mínimo permitido del sector lógico es de 512 bytes, mientras que de lo contrario sería de 128 bytes. Algunas implementaciones de FAT32 admiten una ligera variación de la especificación de Microsoft al hacer que el sector de información de FS sea opcional al especificar un valor de 0xFFFF [19] (o 0x0000 ) en la entrada en el desplazamiento 0x030 .

Región FAT

Tabla de asignación de archivos

Mapa de clústeres

El área de datos de un volumen se divide en clústeres de tamaño idéntico (pequeños bloques de espacio contiguo). Los tamaños de los clústeres varían según el tipo de sistema de archivos FAT que se utilice y el tamaño de la unidad; los tamaños típicos de los clústeres varían de 2 a 32 KiB . [39]

Cada archivo puede ocupar uno o más clústeres según su tamaño. Por lo tanto, un archivo se representa mediante una cadena de clústeres (denominada lista enlazada simple ). Estos clústeres no se almacenan necesariamente adyacentes entre sí en la superficie del disco, sino que suelen estar 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 tener que asignarlo en clústeres 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 (por ejemplo, el grupo 0) y los 12 bits más significativos, la segunda (por ejemplo, el grupo 1). En otras palabras, mientras que los ocho bits inferiores del primer grupo de la fila se almacenan en el primer byte, los cuatro bits superiores se almacenan en el nibble inferior del segundo byte, mientras que los cuatro bits inferiores del grupo posterior de la fila se almacenan en el nibble superior del segundo byte y sus ocho bits superiores en el tercer byte.

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

El sistema de archivos FAT32 utiliza 32 bits por entrada FAT, por lo que una entrada abarca cuatro bytes en orden de bytes little-endian. Los cuatro bits superiores de cada entrada se reservan para otros fines; se borran durante el formateo y no se deben modificar en ningún otro momento. Se deben enmascarar antes de interpretar la entrada como una dirección de clúster de 28 bits.

La tabla de asignación de archivos ( FAT ) es una serie de sectores contiguos que se encuentran 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 cuatro cosas:

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 suponen esta ubicación fija de la FAT para encontrar el ID de la FAT en la entrada del clúster 0 de la FAT en los disquetes FAT de DOS 1.0-1.1, donde no se encuentra ningún BPB válido.

Entradas especiales

Las dos primeras entradas de un FAT almacenan valores especiales:

La primera entrada (clúster 0 en la FAT) contiene el identificador de FAT desde MS-DOS 1.20 y PC DOS 1.1 (valores permitidos 0xF0 - 0xFF con 0xF1 - 0xF7 reservados) en los bits 7-0, que también se copia en el BPB del sector de arranque, desplazamiento 0x015 desde DOS 2.0. Los 4 bits restantes (si es FAT12), 8 bits (si es FAT16) o 20 bits (si es FAT32, los 4 bits MSB son cero) de esta entrada siempre son 1. Estos valores se organizaron de modo que la entrada también funcionara como un marcador de fin de cadena "trap-all" para todos los clústeres de datos que contienen un valor de cero. Además, para los FAT ID distintos de 0xFF (y 0x00 ) es posible determinar el nibble y el orden de bytes correctos que debe utilizar el controlador del sistema de archivos; sin embargo, el sistema de archivos FAT utiliza oficialmente solo una representación little-endian y no se conocen implementaciones de variantes que utilicen valores big-endian 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 o 16 bytes, como se usaban antes de 86-DOS 0.42.

La segunda entrada (clúster 1 en la FAT) almacena nominalmente el marcador de fin de cadena de clústeres tal como lo utiliza el formateador, pero normalmente siempre contiene 0xFFF / 0xFFFF / 0x0FFFFFFF , es decir, con la excepción de los bits 31-28 en los volúmenes FAT32, estos bits normalmente siempre están configurados. Sin embargo, algunos sistemas operativos de Microsoft configuran estos bits si el volumen no es el volumen que contiene el sistema operativo en ejecución (es decir, use 0xFFFFFFFF en lugar de 0x0FFFFFFF aquí). [40] (Junto con 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 superiores están oficialmente reservados. Algunos sistemas operativos pueden no poder montar algunos volúmenes si alguno de estos bits no está configurado, por lo tanto, el marcador de fin de cadena predeterminado no debe cambiarse). Para DOS 1 y 2, la entrada se documentó como reservada para uso futuro.

Desde DOS 7.1, los dos bits más significativos de esta entrada de clúster pueden contener dos indicadores de bit opcionales que representan el estado actual del volumen en FAT16 y FAT32, pero no en volúmenes FAT12. Estos indicadores de bit no son compatibles con todos los sistemas operativos, pero los sistemas operativos que admiten esta función establecerían estos bits al apagar y borrarían el bit más significativo al iniciar:
Si el bit 15 (en FAT16) o el bit 27 (en FAT32) [41] no están establecidos al montar el volumen, el volumen no se desmontó correctamente antes del apagado o la expulsión y, por lo tanto, se encuentra en un estado desconocido y posiblemente "sucio". [27] En volúmenes FAT32, el sector de información del sistema de archivos puede contener datos obsoletos y, por lo tanto, no se debe utilizar. El sistema operativo ejecutaría entonces normalmente SCANDISK o CHKDSK en el siguiente inicio [nb 9] [41] (pero no al insertar un medio extraíble) para garantizar y posiblemente restablecer la integridad del volumen. Si se borra
el bit 14 (en FAT16) o el bit 26 (en FAT32) [41] , el sistema operativo ha encontrado errores de E/S de disco al iniciarse, [41] una posible indicación de sectores defectuosos. Los sistemas operativos que conocen esta extensión lo interpretarán como una recomendación para realizar un escaneo de superficie ( SCANDISK ) en el siguiente arranque. [27] [41] (Existe un conjunto similar de indicadores de bits en el EBPB FAT12/FAT16 en el desplazamiento 0x1A o el EBPB FAT32 en el desplazamiento 0x36 . Si bien los controladores del sistema de archivos pueden acceder a la entrada del clúster 1 una vez que han montado el volumen, 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 bloque de disco o las herramientas de particionamiento).

Si la cantidad de FAT en el BPB no está establecida en 2, la segunda entrada del clúster en la primera FAT (clúster 1) también puede reflejar el estado de un volumen TFAT para sistemas operativos compatibles con TFAT. Si la entrada del clúster 1 en esa FAT tiene el valor 0, esto puede indicar que la segunda FAT representa el último estado de transacción válido conocido y debe copiarse sobre la primera FAT, mientras que la primera FAT debe copiarse sobre la segunda FAT si todos los bits están establecidos.

Algunas implementaciones no estándar de FAT12/FAT16 utilizan la entrada del clúster 1 para almacenar el clúster inicial de un directorio raíz de tamaño variable (normalmente 2 [33] ). Esto puede ocurrir cuando la cantidad de entradas del directorio raíz en el BPB tiene un valor de 0 y no se encuentra ningún EBPB FAT32 (no hay firma 0x29 o 0x28 en el desplazamiento 0x042 ). [20] Sin embargo, esta extensión no es compatible con los sistemas operativos principales, [20] ya que entra en conflicto con otros posibles usos de la entrada del clúster 1. La mayoría de los conflictos se pueden descartar si esta extensión solo se permite para FAT12 con menos de 0xFEF y volúmenes FAT16 con menos de 0x3FEF clústeres 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 es FAT12/FAT16) es el grupo 2, [33] que marca el comienzo del área de datos.

Valores del cluster

Valores de entrada FAT:

FAT32 utiliza 28 bits para los números de clúster. Los 4 bits restantes en la entrada FAT de 32 bits suelen ser cero, pero están reservados y no se deben modificar. Un controlador de sistema de archivos FAT32 compatible con el estándar o una herramienta de mantenimiento no debe depender de que los 4 bits superiores sean cero y debe eliminarlos antes de evaluar el número de clúster para hacer frente a posibles expansiones futuras en las que estos bits se puedan utilizar para otros fines. El controlador del sistema de archivos no debe borrarlos al asignar nuevos clústeres, pero sí durante un reformateo.

Región del directorio raíz

La tabla de directorio raíz en los sistemas de archivos FAT12 y FAT16 ocupa la ubicación especial de la región de directorio raíz .

Región de datos

Aparte de la tabla de directorio raíz en los sistemas de archivos FAT12 y FAT16, que ocupa la ubicación especial de la región de directorio raíz , todas las tablas de directorio se almacenan en la región de datos. La cantidad real de entradas en un directorio almacenado en la región de datos puede aumentar si se agrega otro clúster a la cadena en FAT.

Tabla de directorios

Una tabla de directorios es un tipo especial de archivo que representa un directorio (también conocido como carpeta). Desde 86-DOS 0.42 , [46] cada archivo o (desde MS-DOS 1.40 y PC DOS 2.0) subdirectorio almacenado dentro de ella se representa mediante una entrada de 32 bytes en la tabla. Cada entrada registra el nombre, la extensión, los atributos ( archivo , directorio, oculto, solo lectura, sistema y volumen), la dirección del primer clúster de datos del archivo/directorio, el tamaño del archivo/directorio y la fecha [46] y (desde PC DOS 1.1) también la hora de la última modificación. Las versiones anteriores de 86-DOS usaban solo entradas de directorio de 16 bytes, sin admitir archivos mayores de 16 MB ni hora de la última modificación. [46]

El sistema de archivos FAT no impone límites a la profundidad de un árbol de subdirectorios mientras haya clústeres libres disponibles para asignar los subdirectorios; sin embargo, la estructura de directorio actual (CDS) interna de 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), [24] [ 25] [26] limitando así la profundidad máxima admitida de subdirectorios a 32, lo que ocurra primero. Concurrent DOS, Multiuser DOS y DR DOS 3.31 a 6.0 (hasta incluir las actualizaciones de 1992-11) no almacenan rutas absolutas a directorios de trabajo internamente y, por lo tanto, no muestran esta limitación. [47] Lo mismo se aplica a Atari GEMDOS, pero Atari Desktop no admite más de 8 niveles de subdirectorios. La mayoría de las aplicaciones que conocen esta extensión admiten rutas de hasta al menos 127 bytes. FlexOS, 4680 OS y 4690 OS también admiten una longitud de hasta 127 bytes, lo que permite profundidades de hasta 60 niveles. [48] PalmDOS, DR DOS 6.0 (desde BDOS 7.1) y superiores, 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 estar precedida por "entradas falsas" para admitir un nombre de archivo largo VFAT (LFN); consulte más abajo.

Los caracteres legales para nombres de archivos cortos de DOS incluyen los siguientes:

Esto excluye los siguientes caracteres ASCII :

El carácter 229 ( 0xE5 ) no se permitía como primer carácter en un nombre de archivo en DOS 1 y 2 debido a su uso como marcador de entrada libre. Se agregó un caso especial para evitar esta limitación con DOS 3.0 y versiones posteriores.

Los siguientes caracteres adicionales están permitidos en GEMDOS de Atari, pero deben evitarse por compatibilidad con MS-DOS/PC DOS:

El punto y coma ( ;) debe evitarse en los nombres de archivo bajo DR DOS 3.31 y superior, PalmDOS, Novell DOS, OpenDOS, Concurrent DOS, Multiuser DOS, System Manager y REAL/32, porque puede entrar en conflicto con la sintaxis para especificar contraseñas de archivos y directorios: " ...\DIRSPEC.EXT;DIRPWD\FILESPEC.EXT;FILEPWD". El sistema operativo eliminará uno [47] (y también dos, desde DR-DOS 7.02) puntos y comas y contraseñas pendientes de los nombres de archivo antes de almacenarlos en el disco. (El procesador de comandos 4DOS utiliza puntos y comas para listas de inclusión y requiere que el punto y coma se duplique para archivos protegidos con contraseña con cualquier comando que admita comodines. [47] )

El carácter de arroba ( @) se utiliza para listas de archivos en muchos comandos DR-DOS, PalmDOS, Novell DOS, OpenDOS y Multiuser DOS, System Manager y REAL/32, así como en 4DOS y, por lo tanto, a veces puede resultar difícil de usar en nombres de archivos. [47]

En DOS multiusuario y REAL/32, el signo de exclamación (!) no es un carácter de nombre de archivo válido ya que se utiliza para separar varios comandos en una sola línea de comando. [47]

En los sistemas operativos IBM 4680 y 4690, los siguientes caracteres no están permitidos en los nombres de archivo:

Además, los siguientes caracteres especiales no están permitidos en el primer, cuarto, quinto y octavo carácter de un nombre de archivo, ya que entran en conflicto con los nombres de archivo de compilación de la tabla de secuencia de entrada y del procesador de comandos del host (HCP):

Los nombres de archivos DOS están en el conjunto de caracteres OEM actual : esto puede tener efectos sorprendentes si los caracteres manejados de una manera para una página de códigos determinada se interpretan de manera diferente para otra página de códigos (comando DOS CHCP) con respecto a mayúsculas y minúsculas, clasificación o validez como carácter de nombre de archivo.

Entrada de directorio

Antes de que Microsoft añadiera compatibilidad con nombres de archivo largos y marcas de tiempo de creación/acceso, otros sistemas operativos utilizaban los bytes 0x0C a 0x15 de la entrada del directorio para almacenar metadatos adicionales; en particular, los sistemas operativos de la familia Digital Research almacenaban allí contraseñas de archivos, derechos de acceso, identificadores de propietarios y datos de eliminación de archivos. Si bien las extensiones más nuevas de Microsoft no son totalmente compatibles con estas extensiones de forma predeterminada, la mayoría de ellas pueden coexistir en implementaciones FAT de terceros (al menos en volúmenes FAT12 y FAT16).

Las entradas de directorio de 32 bytes, tanto en la región del directorio raíz como en los subdirectorios, tienen el siguiente formato (consulte también 8.3 nombre de archivo ):

Los sistemas operativos basados ​​en FlexOS IBM 4680 OS e IBM 4690 OS admiten atributos de distribución únicos almacenados en algunos bits de las áreas previamente reservadas en las entradas de directorio: [62]

  1. Local: no distribuye el archivo, sino que lo conserva únicamente en el controlador local. [nb 14]
  2. Archivo espejo al actualizar: distribuye el archivo al servidor solo cuando se actualiza el archivo.
  3. Archivo espejo al cerrar: distribuye el archivo al servidor solo cuando el archivo está cerrado.
  4. Archivo compuesto al actualizar: distribuye el archivo a todos los controladores cuando se actualiza el archivo.
  5. Archivo compuesto al cerrar: distribuye el archivo a todos los controladores cuando se cierra el archivo. [63]

Algunas extensiones incompatibles encontradas en algunos sistemas operativos incluyen:

Límites de tamaño

Las variantes FAT12, FAT16, FAT16B y FAT32 de los sistemas de archivos FAT tienen límites claros basados ​​en la cantidad de clústeres y la cantidad de sectores por clúster (1, 2, 4, ..., 128). Para el valor típico de 512 bytes por sector:

Requisitos 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: de 1 a 4084 clústeres: de 1 a 12 sectores por copia de FAT
Rango de FAT16: de 4085 a 65 524 clústeres: de 16 a 256 sectores por copia de FAT
Rango de FAT32: de 65 525 a 268 435 444 clústeres: de 512 a 2 097 152 sectores por copia de FAT

Mínimo de FAT12: 1 sector por clúster × 1 clúster = 512 bytes (0,5 KiB)
Mínimo de FAT16: 1 sector por clúster × 4085 clústeres = 2 091 520 bytes (2042,5 KB)
Mínimo de FAT32: 1 sector por clúster × 65 525 clústeres = 33 548 800 bytes (32 762,5 KB)

Máximo de FAT12: 64 sectores por clúster × 4084 clústeres =
133 824 512 bytes (≈ 127 MB) [Máximo de FAT12: 128 sectores por clúster × 4084 clústeres = 267 694 024 bytes (≈ 255 MB)] Máximo de FAT16: 64 sectores por clúster × 65 524 clústeres = 2 147 090 432 bytes (≈2047 MB) [Máximo de FAT16

: 64 sectores por clúster × 65 524 clústeres = 2 147 090 432 bytes (≈2047 MB)
: 128 sectores por clúster × 65 524 clústeres = 4 294 180 864 bytes (≈4095 MB)]

Máximo de FAT32: 8 sectores por clúster × 268 435 444 clústeres = 1 099 511 578 624 bytes (≈1024 GB) Máximo de FAT32
: 16 sectores por clúster × 268 173 557 clústeres = 2 196 877 778 944 bytes (≈2046 GB)
[Máximo de FAT32: 32 sectores por clúster × 134 152 181 clústeres = 2 197 949 333 504 bytes (≈2047 GB)]
[Máximo de FAT32: 64 sectores por clúster × 67 092 469 clústeres
= 2 198 486 024 192 bytes (≈2047 GB)] [Máximo de FAT32: 128 sectores por clúster × 33 550 325 clústeres = 2 198 754 099 200 bytes (≈2047 GB)]

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

Como cada entrada FAT32 ocupa 32 bits (4 bytes), la cantidad máxima de clústeres (268435444) requiere 2097152 sectores FAT para un tamaño de sector de 512 bytes. 2097152 es 0x200000 y el almacenamiento de 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 la cantidad total de sectores introducidos en la variante FAT16B.

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

Determinar el número de entradas de directorio por clúster es sencillo. Cada entrada ocupa 32 bytes; esto da como resultado 16 entradas por sector para un tamaño de sector de 512 bytes. El comando DOS 5 RMDIR/ 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 32 bits de sectores ocultos FAT16B, esto deja tres bytes para el código de arranque (en un disco RAM sin usar) y el mágico 0x55 0xAA al final de todos los sectores de arranque. En Windows NT, el tamaño de sector más pequeño admitido es 128.RD...

En los sistemas operativos Windows NT, las FORMATopciones de comando /A:128Ky /A:256Kcorresponden 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:64Kse obtienen 128 sectores por clúster.

Ambas ediciones de ECMA-107 [24] e ISO/IEC 9293 [25] [26] especifican un Número máximo de clúster MAX determinado por la fórmula y reservan números de clúster hasta 4086 ( 0xFF6 , FAT12) y posteriormente 65526 ​​( 0xFFF6 , FAT16) para una estandarización futura.MAX=1+trunc((TS-SSA)/SC)MAX+1

La especificación EFI FAT32 de Microsoft [4] establece que cualquier sistema de archivos FAT con menos de 4085 clústeres es FAT12, de lo contrario, cualquier sistema de archivos FAT con menos de 65 525 clústeres es FAT16 y, 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 clúster 0 y 1 terminan en un límite de bytes incluso para FAT12, por ejemplo, 0xF9FFFF para el descriptor de medios 0xF9 .

El primer grupo de datos es 2, [33] y, en consecuencia, el último grupo MAXrecibe el número MAX+1. Esto da como resultado los números de grupo de datos 2...4085 ( 0xFF5 ) para FAT12, 2...65525 ( 0xFFF5 ) para FAT16 y 2...268435445 ( 0x0FFFFFF5 ) para FAT32.

Por 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 utiliza para las implementaciones de Linux, [44] o como lo expresa la especificación FAT de Microsoft : [4]

...cuando dice <, no significa <=. Observe también que los números son correctos. El primer número para 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 dispersen por la partición. [65] En los volúmenes en los que se crean y eliminan archivos con frecuencia o se modifican a menudo sus longitudes, el medio se fragmentará cada vez más con el tiempo.

Si bien el diseño del sistema de archivos FAT no causa ninguna sobrecarga organizativa en las estructuras de disco ni reduce la cantidad de espacio de almacenamiento libre con mayores cantidades de fragmentación , como ocurre con la fragmentación externa , el tiempo requerido para leer y escribir archivos fragmentados aumentará ya que el sistema operativo tendrá que seguir las cadenas de clúster en el FAT (con partes que deben cargarse primero en la memoria, en particular en volúmenes grandes) 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 realice E/S de disco multisectorial o inicie transferencias DMA más grandes, lo que aumenta efectivamente la sobrecarga del protocolo de E/S, así como los tiempos de movimiento del brazo y asentamiento del cabezal dentro de la unidad de disco. Además, las operaciones de archivo se volverán más lentas con una fragmentación creciente, 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 utilizados y disponibles, que luego se pueden consultar 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, el FAT debe escanearse como una matriz para encontrar clústeres libres, lo que puede provocar penalizaciones de rendimiento con discos grandes.

De hecho, la búsqueda de archivos en subdirectorios grandes o el cálculo del espacio libre en disco en volúmenes FAT es una de las operaciones que más recursos consume, ya que requiere leer las tablas de directorios o incluso todo el FAT de forma lineal. Dado que la cantidad total de clústeres y el tamaño de sus entradas en el FAT todavía eran pequeños en los volúmenes FAT12 y FAT16, esto todavía se podía tolerar en los volúmenes FAT12 y FAT16 la mayor parte del tiempo, considerando que la introducción de estructuras de disco más sofisticadas también habría aumentado 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 que FAT se diseñó y optimizó originalmente.

Con la introducción de FAT32, los largos tiempos de búsqueda y escaneo se hicieron más evidentes, particularmente en volúmenes muy grandes. Una posible justificación sugerida por Raymond Chen de Microsoft para limitar el tamaño máximo de las particiones FAT32 creadas en Windows fue el tiempo requerido para realizar una DIRoperación " ", que siempre muestra el espacio libre en disco como la última línea. [66] Mostrar esta línea tomaba cada vez más tiempo a medida que aumentaba el número de clústeres. Por lo tanto, FAT32 introdujo un sector de información de sistema de archivos especial donde la cantidad de espacio libre calculada previamente se conserva durante los ciclos de encendido, de modo que el contador de espacio libre necesita ser recalculado solo cuando se expulsa un medio extraíble formateado en FAT32 sin desmontarlo primero o si el sistema se apaga sin apagar correctamente el sistema operativo, un problema principalmente visible con PC de estilo anterior a ATX , en sistemas DOS simples y algunos productos de consumo alimentados por batería.

Con los enormes tamaños de clúster (16 KB, 32 KB, 64 KB) impuestos por particiones FAT más grandes, la fragmentación interna en forma de desperdicio de espacio en disco por la falta de archivos debido al exceso de tamaño del clúster (ya que los archivos rara vez son múltiplos exactos del tamaño del clúster) también comienza a ser un problema, especialmente cuando hay una gran cantidad de archivos pequeños.

Se han ideado varias optimizaciones y ajustes a la implementación de controladores de sistemas 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 la disposición de las estructuras en disco. [67] [68] Se pueden dividir en métodos en línea y fuera de línea y funcionan tratando de evitar la fragmentación en el sistema de archivos en primer lugar, implementando métodos para lidiar mejor con la fragmentación existente y reordenando y optimizando las estructuras en disco. Con optimizaciones en su lugar, 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 espacio no utilizado previamente antes de comenzar a utilizar también el espacio en disco de los archivos eliminados previamente. Esto no solo ayuda a mantener la integridad de los archivos eliminados durante el mayor tiempo posible, sino que también acelera las asignaciones de archivos y evita la fragmentación, ya que el espacio en disco nunca antes asignado siempre está sin fragmentar. DOS logra esto manteniendo un puntero al último clúster asignado en cada volumen montado en la memoria y comienza a buscar espacio libre desde esta ubicación hacia arriba en lugar de al principio de la FAT, como todavía se hacía en DOS 2.x. [13] Si se llega al final de la FAT, volvería a continuar la búsqueda al principio de la FAT hasta que se haya encontrado espacio libre o se haya alcanzado la posición original nuevamente sin haber encontrado espacio libre. [13] Estos punteros se inicializan para señalar el inicio de los FAT después del arranque, [13] pero en volúmenes FAT32, DOS 7.1 y versiones superiores intentarán recuperar la última posición del sector de información del sistema de archivos. Sin embargo, este mecanismo se anula si una aplicación elimina y vuelve a crear archivos temporales con frecuencia, ya que el sistema operativo intentaría entonces mantener la integridad de los datos vacíos, lo que provocaría una mayor fragmentación al final. [13] En algunas versiones de DOS, se puede utilizar una función API especial para crear archivos temporales para evitar este problema.

Además, las entradas de directorio de archivos eliminados se marcarán como 0xE5 desde DOS 3.0. [42] DOS 5.0 y superior comenzarán a reutilizar estas entradas solo cuando las entradas de directorio no utilizadas previamente se hayan agotado en la tabla y, de lo contrario, el sistema tendría que expandir la tabla por sí mismo. [6]

Desde DOS 3.3, el sistema operativo ofrece medios para mejorar el rendimiento de las operaciones con archivos, ya FASTOPENque permite realizar un seguimiento de la posición de los archivos o directorios abiertos recientemente en diversas formas de listas (MS-DOS/PC DOS) o tablas hash (DR-DOS), lo que puede reducir significativamente los tiempos de búsqueda y apertura de archivos. Antes de DOS 5.0, se debe tener especial cuidado al utilizar dichos mecanismos junto con software de desfragmentación de disco que omite el sistema de archivos o los controladores de disco.

Windows NT asignará espacio en disco a los archivos en FAT con antelación, seleccionando áreas contiguas grandes, pero en caso de falla, los archivos que se estaban agregando aparecerán más grandes de lo que alguna vez fueron escritos, con una gran cantidad de datos aleatorios al final.

Otros mecanismos de alto nivel pueden leer y procesar partes más grandes o la FAT completa al iniciarse o cuando se lo necesite y construir dinámicamente representaciones de árboles en memoria de las estructuras de archivos del volumen diferentes de las estructuras en el disco. [67] [68] Esto puede, en volúmenes con muchos clústeres libres, ocupar incluso menos memoria que una imagen de la propia FAT. En particular, en volúmenes altamente fragmentados o llenos, las búsquedas se vuelven mucho más rápidas que con exploraciones lineales sobre la FAT real, incluso si se almacenara una imagen de la FAT 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, se hace posible evitar cierto grado de fragmentación de archivos en primer lugar o llevar a cabo una desfragmentación de archivos local y una reordenación 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:

Aunque el DOS monotarea tenía disposiciones para lecturas multisectoriales y bloqueo/desbloqueo de pistas, el sistema operativo y la arquitectura de disco duro de PC tradicional ( solo una solicitud de entrada/salida pendiente a la vez y sin transferencias DMA ) originalmente no contenían mecanismos que pudieran aliviar la fragmentación mediante la precarga asincrónica de los siguientes datos mientras la aplicación procesaba los fragmentos anteriores. Tales características estuvieron disponibles más tarde. Las versiones posteriores del 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 convencionales del DOS.

El almacenamiento en caché de escritura posterior a menudo no estaba habilitado de manera predeterminada con el software de Microsoft (si estaba presente) debido al problema de pérdida de datos en caso de un corte de energía o una caída, lo que se hacía más fácil por la falta de protección de hardware entre las aplicaciones y el sistema.

Nombres de archivos largos VFAT

Estructura de directorio FAT32 con tres archivos, dos de los cuales utilizan nombres de archivo largos VFAT.

Los nombres de archivo largos (LFN) de VFAT se almacenan en un sistema de archivos FAT mediante un truco: se añaden entradas adicionales al directorio antes de la entrada de archivo normal. Las entradas adicionales se marcan con los atributos Etiqueta de volumen, Sistema, Oculto y Solo lectura (lo que da como resultado 0x0F ), que es una combinación que no se espera en el entorno MS-DOS y, por lo tanto, los programas MS-DOS y las utilidades de terceros ignoran. En particular, un directorio que contiene solo etiquetas de volumen se considera vacío y se permite eliminarlo; tal situación aparece si los archivos creados con nombres largos se eliminan desde DOS simple. Este método es muy similar al método DELWATCH para utilizar el atributo de volumen para ocultar archivos pendientes de eliminación para una posible recuperación futura desde DR DOS 6.0 (1991) y versiones posteriores. También es similar a un método discutido públicamente para almacenar nombres de archivo largos en Ataris y en Linux en 1992. [69] [70]

Debido a que las versiones anteriores de DOS podían confundir los nombres LFN en el directorio raíz con la etiqueta 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 de clúster de inicio; para compatibilidad con utilidades de disco, el campo de clúster de inicio se establece en un valor de 0. Consulte 8.3 nombre de archivo para obtener explicaciones adicionales). Se pueden encadenar hasta 20 de estas entradas de 13 caracteres, lo que admite una longitud máxima de 255 caracteres UCS-2. [55]

Si la posición del último carácter del LFN no se encuentra en el límite de una entrada de directorio (13, 26, 39, ...), se agrega un terminador 0x0000 en la siguiente posición de carácter. Luego, si ese terminador tampoco se encuentra en el límite, las posiciones de caracteres restantes se completan con 0xFFFF . No existirá ninguna entrada de directorio que contenga un terminador único.

Las entradas de LFN utilizan el siguiente formato:

Si se requieren varias entradas LFN para representar un nombre de archivo, la entrada que representa el final del nombre de archivo aparece primero. El número de secuencia de esta entrada tiene el bit 6 ( 0x40 ) configurado para representar que es la última entrada LFN lógica y tiene el número de secuencia más alto. El número de secuencia disminuye en las siguientes entradas. La entrada que representa el inicio del nombre de archivo tiene el número de secuencia 1. Se utiliza un valor de 0xE5 para indicar que la entrada se ha eliminado.

En los volúmenes FAT12 y FAT16, la prueba de que los valores en 0x1A sean cero y en 0x1C no sean cero se puede utilizar para distinguir entre LFN VFAT y archivos de eliminación pendientes en DELWATCH.

Por ejemplo, un nombre de archivo como "Archivo con nombre de archivo muy largo.ext" tendría el siguiente formato:

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 fue eliminado y vuelto a crear usando DOS en la misma posición de directorio. La suma de comprobación se calcula usando 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

unsigned char lfn_checksum ( const unsigned char * 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 sólo letras minúsculas, o es una combinación de un nombre base en minúsculas con una extensión en mayúsculas , o viceversa; y no tiene caracteres especiales, y se ajusta a los límites de 8.3, no se crea una entrada VFAT en Windows NT y versiones posteriores de Windows como XP. En su lugar, se utilizan dos bits en el byte 0x0C de la entrada de directorio para indicar que el nombre de archivo debe considerarse como total o parcialmente en minúsculas. Específicamente, el bit 4 significa extensión en minúsculas y el bit 3 nombre base en minúsculas , lo que permite combinaciones como " " o " " pero no " ". Pocos otros sistemas operativos lo admiten. Esto crea un problema de compatibilidad con versiones anteriores de Windows (Windows 95 / 98 / 98 SE / ME) que ven nombres de archivo en mayúsculas si se ha utilizado esta extensión y, por lo tanto, pueden cambiar el nombre de un archivo cuando se transporta entre sistemas operativos, como en una unidad flash USB. Las versiones actuales 2.6.x de Linux reconocerán esta extensión al leer (fuente: kernel 2.6.18 y ); la opción de montaje determina si se utiliza esta función al escribir. [71]example.TXTHELLO.txtMixed.txt/fs/fat/dir.cfs/vfat/namei.cshortname

Véase también

Notas

  1. ^ abc Para lograr la máxima compatibilidad con MS-DOS/PC DOS y DR-DOS, los sistemas operativos que intenten determinar el formato de un disquete deberían probar todas las secuencias de código de operación mencionadas en el desplazamiento de sector 0x000 además de buscar un byte de descriptor de medio válido en el desplazamiento de sector 0x015 antes de asumir la presencia de un BPB. Aunque los disquetes de PC DOS 1.0 no contienen un BPB, también comienzan con 0xEB , pero no muestran un 0x90 en el desplazamiento 0x002 . Los disquetes de PC DOS 1.10 incluso comienzan con 0xEB 0x?? 0x90 , aunque todavía no presentan un BPB. En ambos casos, una prueba para un descriptor de medio válido en el desplazamiento 0x015 fallaría (valor 0x00 en lugar de descriptores de medio válidos 0xF0 y superiores). Si estas pruebas fallan, DOS verifica la presencia de un byte descriptor de medio en el primer byte de la primera FAT en el sector siguiente al sector de arranque (sector lógico 1 en disquetes FAT12/FAT16).
  2. ^ abcde La firma en el desplazamiento 0x1FE en los sectores de arranque es 0x55 0xAA , es decir, 0x55 en el desplazamiento 0x1FE y 0xAA en el desplazamiento 0x1FF . Dado que se debe asumir la representación little-endian en el contexto de las máquinas compatibles con IBM PC , esto se puede escribir como la palabra de 16 bits 0xAA55 en programas para procesadores x86 (observe el orden intercambiado), mientras que tendría que escribirse como 0x55AA en programas para otras arquitecturas de CPU que utilicen una representación big-endian . Dado que esto se ha mezclado numerosas veces en libros e incluso en documentos de referencia originales de Microsoft, este artículo utiliza la representación en disco byte a byte basada en desplazamiento para evitar cualquier posible mala interpretación.
  3. ^ abc 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 asumir 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 se deben intercambiar antes de la adición de 16 bits.
  4. ^ DR-DOS puede arrancar desde medios sectorizados lógicos FAT12/FAT16 con tamaños de sector lógico de hasta 1024 bytes.
  5. ^ ab Las siguientes funciones DOS devuelven estos valores de registro: INT 21h/AH=2Ah "Obtener fecha del sistema" valores devueltos: CX = año ( 1980 .. 2099 ), DH = mes (1..12), DL = día (1..31). INT 21h/AH=2Ch "Obtener hora del sistema" valores devueltos: CH = hora (0..23), CL = minuto (0..59), DH = segundo (0..59), DL = 1/100 segundos (0..99).
  6. ^ Se ha observado que Windows XP crea estos discos híbridos al reformatear discos ZIP-100 con formato FAT16B al formato FAT32. Los volúmenes resultantes tenían formato FAT32, pero seguían utilizando el EBPB FAT16B. (No está claro cómo determina Windows la ubicación del directorio raíz en volúmenes FAT32, si solo se utilizó un EBPB FAT16).
  7. ^ ab Una utilidad que proporciona 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 FDISK , FDISK de DR-DOS no es solo una herramienta de particionamiento, sino que también puede formatear particiones recién creadas como FAT12 , FAT16 o FAT32 . Esto reduce el riesgo de formatear accidentalmente volúmenes incorrectos.
  8. ^ Para permitir la coexistencia de DR-DOS con PC DOS y múltiples instalaciones paralelas de DR-DOS, la extensión del IBMBIO␠␠COMnombre de archivo de arranque predeterminado " " se puede cambiar utilizando la SYS /DR:extopción, donde ext representa la nueva extensión. Otros nombres de archivo de arranque de DR-DOS que se pueden esperar en escenarios especiales son " DRBIOS␠␠SYS", " DRDOS␠␠␠SYS", " IO␠␠␠␠␠␠SYS", " JO␠␠␠␠␠␠SYS".
  9. ^ Si el indicador de apagado defectuoso de un volumen sigue sin estar activado al iniciarse, el volumen no se ha desmontado correctamente. Esto, por ejemplo, haría que Windows 98 WIN.COM iniciara SCANDISK para comprobar y reparar posibles errores del sistema de archivos lógicos. Si se desactiva el indicador de sector defectuoso, también se obligará a que se realice un análisis de superficie. Esto se puede desactivar configurando AUTOSCAN=0 en la sección [OPCIONES] del archivo MSDOS.SYS .
  10. ^ abcd Consulte otros enlaces para obtener precauciones especiales con respecto a la aparición de un valor de clúster de 0xFF0 en volúmenes FAT12 bajo MS-DOS/PC DOS 3.3 y superiores.
  11. ^ ab Algunas versiones de FORMAT desde MS-DOS 1.25 y PC DOS 2.0 admitían una opción /O(para las antiguas ) para rellenar el primer byte de todas las entradas de directorio con 0xE5 en lugar de utilizar el marcador de fin 0x00 . De este modo, el volumen seguía siendo accesible en PC DOS 1.0 - 1.1 , mientras que el formateo tardaba algo más y las versiones más nuevas de DOS no podían aprovechar la considerable aceleración causada por el uso del marcador de fin 0x00 .
  12. ^ Esta es la razón por la que 0xE5 tenía un significado especial en las entradas del directorio.
  13. ^ ab Para evitar posibles interpretaciones erróneas de las etiquetas de volumen de directorio con entradas LFN VFAT por parte de sistemas operativos que no son compatibles con VFAT, se sabe que las herramientas FDISK y FORMAT de DR-DOS 7.07 escriben explícitamente NO␠NAME␠␠␠␠etiquetas de volumen de directorio " " ficticias si el usuario omite ingresar una etiqueta de volumen. El sistema operativo devolvería internamente de manera predeterminada la misma cadena si no se pudiera encontrar una etiqueta de volumen de directorio en la raíz de un volumen, pero sin una etiqueta de volumen real almacenada como la primera entrada (después de las entradas de directorio), los sistemas operativos más antiguos podrían seleccionar erróneamente entradas LFN VFAT en su lugar.
  14. ^ Este tipo de atributo de distribución del sistema operativo IBM 4680 y 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

  1. ^ "Sistemas de archivos". Microsoft TechNet . 2001. Archivado desde el original el 12 de agosto de 2011. Consultado el 31 de julio de 2011 .
  2. ^ de Microsoft (15 de noviembre de 2006). Archivo CONFIG.TXT del CD-ROM de Windows 95 Archivado el 28 de enero de 2013 en archive.today Artículo 135481, Revisión: 1.1, consultado el 22 de diciembre de 2011: "Para cada disco duro, especifica si se debe registrar la fecha en la que se accedió por última vez a los archivos. Las fechas de último acceso se desactivan para todas las unidades cuando el equipo se inicia en modo seguro y no se mantienen para los disquetes de forma predeterminada. Sintaxis: ACCDATE=drive1+|- [drive2+|-]..."
  3. ^ Bhat, WA (2010). "Revisión de la estructura de datos FAT del sistema de archivos FAT32". S2CID  58178285. {{cite web}}: Falta o está vacío |url=( ayuda )
  4. ^ abcdefghijklmno "Especificación del sistema de archivos FAT32 de Microsoft Extensible Firmware Initiative, FAT: descripción general del formato en disco". Microsoft . 2000-12-06. Archivado desde el original el 2021-07-23 . Consultado el 2011-07-03 .
  5. ^ abcdHaaf , Wilfried; Middel, Frank (noviembre de 1987). "Daten auf Scheiben - Estructuras de archivos y disquetes según CP/M, MSDOS y TOS: Dateiverwaltung unter TOS". c't-magazin für computertechnik . c't Kartei (en alemán). vol. 1987, núm. 11. Verlag Heinz Heise GmbH & Co. KG . págs. 241–246 [246]. ISSN  0724-8679.
  6. ^ abcdefghijklmnop Chappell, Geoff (enero de 1994). Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals . The Andrew Schulman Programming Series (1.ª impresión, 1.ª ed.). Addison Wesley Publishing Company . ISBN 978-0-201-60835-9.(xxvi+738+iv páginas, disquete de 3,5" [1][2]) Erratas: [3][4][5]
  7. ^ abcdefghijklmnopqrstu vw Microsoft MS-DOS 3.1 Programmierhandbuch en englischer Sprache [ Manual de referencia del programador de Microsoft MS-DOS 3.1 en inglés ]. Múnich: Markt & Technik Verlag (publicado en 1986). 1984.ISBN 3-89090-368-1. 8411-310-02, 036-014-012. Con respecto a la instrucción de salto al inicio de un sector de arranque: "Determinar si el primer byte del sector de arranque es un E9H o EBIT (el primer byte de un 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.)
  8. ^ por Daniel B. Sedory. El sector de arranque de IBM Personal Computer DOS versión 1.00 (1981) . 2005-08-02 ([6] Archivado el 21 de mayo de 2014 en Wayback Machine .).
  9. ^ por Daniel B. Sedory. El sector de arranque de IBM Personal Computer DOS versión 1.10 (1982) . 29 de julio de 2005 ([7] Archivado el 21 de mayo de 2014 en Wayback Machine ).
  10. ^ de Caldera (1997). Kit de código fuente legible por máquina Caldera OpenDOS 7.01 . El archivo DISK.ASM del kit de código fuente legible por máquina muestra que DR-DOS también realiza pruebas con el valor 0x69 .
  11. ^ Paul, Matthias R. (2002-02-20). "Necesidad de DOS 6.22 (no OEM)". Grupo de noticias : alt.msdos.programmer. Archivado desde el original el 2017-09-09 . Consultado el 2006-10-14 .
  12. ^ Bass, Wally (14 de febrero de 1994). "Cluster Size". Grupo de noticias : comp.os.msdos.programmer. Archivado desde el original el 9 de septiembre de 2017. Consultado el 14 de octubre de 2006 .
  13. ^ abcdefgh Dave Williams (1992). Referencia técnica del programador para MSDOS y el IBM PC . DOSREF, versión Shareware 01/12/1992. ISBN 1-878830-02-3 . ([8] Archivado el 20 de mayo de 2014 en Wayback Machine , consultado el 8 de enero de 2012). Comentario: El autor menciona que DOS 4.0 comprueba la etiqueta OEM, pero niega que DOS 3.2 también lo haga (aunque lo hace). 
  14. ^ 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 .[9]
  15. ^ ab "Solución de problemas de discos y sistemas de archivos". Microsoft TechNet . 5 de noviembre de 2005. Archivado desde el original el 7 de junio de 2014. Consultado el 15 de junio de 2014 .
  16. ^ IBM (1983). Manual de referencia técnica del IBM PC . Comentario: Incluye una lista completa del código fuente de la ROM BIOS del IBM PC original.
  17. ^ abcd 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 .  
  18. ^ Seagate Technologies, "La transición a los discos duros sectoriales de formato avanzado 4K (archivado por Wayback Machine @Archive.org)", 2010 ([10]).
  19. ^ abcd Brown, Ralf D. (29 de diciembre de 2002). "La lista de interrupciones x86". Archivado desde el original el 16 de junio de 2016. Consultado el 14 de octubre de 2011 .
  20. ^ abcd de Boyne Pollard, Jonathan (2010) [2006]. "Todo sobre los bloques de parámetros del BIOS". Respuestas dadas con frecuencia . Archivado desde el original el 26 de agosto de 2016. Consultado el 2 de junio de 2014 .
  21. ^ abc Referencia del programador de Microsoft MS-DOS: versión 5.0. Microsoft Press. 1991. ISBN 1-55615-329-5.
  22. ^ abcdefghijk "Formatos de disquete estándar admitidos por MS-DOS". Ayuda y soporte técnico de Microsoft. 12 de mayo de 2003. Archivado desde el original el 9 de enero de 2015. Consultado el 11 de septiembre de 2012 .
  23. ^ abc Microsoft (1987-07). Referencia del programador de MS-DOS 3.3.
  24. ^ abcdefghij "Volumen y estructura de archivos de cartuchos de disco para intercambio de información". Norma ECMA-107 (2.ª ed., junio de 1995) . ECMA . 1995. Archivado desde el original el 7 de octubre de 2018. Consultado el 30 de julio de 2011 .
  25. ^ abcdefghij «Tecnología de la información: Estructura de volumen y archivo de cartuchos de disco para intercambio de información». ISO/IEC 9293:1994 . Catálogo ISO . 1994. Archivado desde el original el 17 de enero de 2012. Consultado el 6 de enero de 2012 .
  26. ^ abcdefghij "Procesamiento de información - Volumen y estructura de archivos de cartuchos de disco flexibles para intercambio de información". ISO 9293:1987 . Catálogo ISO . 1987. Archivado desde el original el 2012-01-17 . Consultado el 2012-01-06 .
  27. ^ abc Andries Brouwer (20 de septiembre de 2002). «El sistema de archivos FAT». Archivado desde el original el 6 de octubre de 2011. Consultado el 16 de octubre de 2011 .
  28. ^ abcdefghijklmnopqr Paterson, Tim ; Microsoft (2013-12-19) [1983]. «Microsoft DOS V1.1 y V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM». CHM . Museo de Historia de la Computación , Microsoft . Archivado desde el original el 2019-08-14 . Consultado el 2014-03-25 .(NB. Aunque los editores afirman que se trataría de MS-DOS 1.1 y 2.0, en realidad se trata de SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 ).
  29. ^ abcdefghij Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Farmer, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; King, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martin, 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; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Asesores técnicos". La enciclopedia 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 (edición completamente reelaborada). Redmond, Washington, EE. UU.: 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 reelaboración de la primera edición retirada de 1986 por un equipo diferente de autores. [11] Archivado el 14 de octubre de 2018 en Wayback Machine .)
  30. ^ ab "Explicación detallada del sector de arranque FAT". Microsoft Knowledge Base . 2003-12-06. Archivado desde el original el 2011-11-28 . Consultado el 2011-10-16 .
  31. ^ abc Lai, Robert S.; The Waite Group (1987). Escritura de controladores de dispositivos MS-DOS (2.ª ed.). Addison Wesley. ISBN 0-201-60837-5.
  32. ^ abcdefghijklmnopqrst Paterson, Tim ; Microsoft (2013-12-19) [1983]. «Microsoft DOS V1.1 y V2.0: /msdos/v20source/DEVDRIV.txt». Museo de Historia de la Computación , Microsoft . Archivado desde el original el 2019-08-14 . Consultado el 2014-03-25 .(NB. Aunque los editores afirman que se trataría de MS-DOS 1.1 y 2.0, en realidad se trata de SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 ).
  33. ^ abcde 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.
  34. ^ abcd PORT-DOS - Guía de indicaciones de usuario para Apricot Portable . Guías de indicaciones de usuario, Reino Unido ([12] Archivado el 22 de mayo de 2013 en Wayback Machine ).
  35. ^ abcde John C. Elliott (1998). Formatos de disco DOSPLUS . ([13] Archivado el 7 de junio de 2013 en Wayback Machine ).
  36. ^ abcd The BBC Master 512 . Páginas de computadoras de la BBC de Yellow Pig ([14] Archivado el 21 de mayo de 2014 en Wayback Machine ).
  37. ^ Digital Equipment Corporation. Documentación técnica Rainbow 100 MS-DOS 2.01, volumen 1 (QV025-GZ), lista del BIOS del sistema operativo Microsoft MS-DOS (AA-X432A-TV), controlador de disco universal, página 1-17. 1983.
  38. ^ "Explicación detallada del sector de arranque FAT". DEW Associates Corporation. 2002. Archivado desde el original el 26 de septiembre de 2011. Consultado el 16 de octubre de 2011 .
  39. ^ Tyagi, Tarun (31 de octubre de 2004). "Tamaño de los clústeres en sistemas de archivos FAT y NTFS". Recuperación de datos con y sin programación. Nueva Delhi, India: Gardners Books. pág. 4. ISBN 978-81-7656-922-4Archivado desde el original el 2021-12-03 . Consultado el 2021-12-03 .
  40. ^ Daniel B. Sedory. Notas detalladas sobre la "bandera de apagado sucio" en MS-Windows . 4 de diciembre de 2001. ([15] Archivado el 21 de mayo de 2014 en Wayback Machine ).
  41. ^ abcde "Kit de recursos de Windows 98 - Capítulo 10 - Discos y sistemas de archivos". Microsoft TechNet . 1998. Archivado desde el original el 2012-05-01 . Consultado el 2012-07-16 .
  42. ^ abcd Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [noviembre de 1993]. DOS no documentado: guía del programador para funciones y estructuras de datos reservadas de MS-DOS, ampliada para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2.ª edición). Reading, Massachusetts: Addison Wesley . pág. 11. ISBN 0-201-63287-X.(xviii+856+vi páginas, disquete de 3,5") Erratas: [16][17]
  43. ^ Peter Norton (1986). El IBM PC por dentro, revisado y ampliado , Brady. ISBN 0-89303-583-1 , pág. 157. 
  44. ^ abc Andries Brouwer . «FAT en Linux». Archivado desde el original el 1 de julio de 2014 . Consultado el 20 de mayo de 2014 .
  45. ^ Andries Brouwer (20 de septiembre de 2002). «FAT». Archivado desde el original el 17 de diciembre de 2017. Consultado el 11 de enero de 2012 .
  46. ^ abc Seattle Computer Products (1981). «Apéndice SCP 86-DOS 1.0» (PDF) . Archivado (PDF) desde el original el 2012-10-03 . Consultado el 2013-03-10 .
  47. ^ abcdefghijklmnopqrstu vwxyz 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-TIP: consejos y trucos para Novell DOS 7, con un clic para deshacer detalles, errores y soluciones. MPDOSTIP (en alemán) (3 ed.). Archivado desde el original el 5 de noviembre de 2016 . Consultado el 11 de enero de 2012 .(NB. NWDOSTIP.TXT es un trabajo exhaustivo sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características y componentes internos no documentados. Es parte de la colección MPDOSTIP.ZIP aún más grande del autor, mantenida hasta 2001 y distribuida en muchos sitios en ese momento. El enlace provisto apunta a una versión anterior del archivo convertida a HTML). [18]
  48. ^ IBM. Guía del usuario del sistema operativo 4690 versión 5.2 , documento IBM SC30-4134-01, 2008-01-10 ([19]).
  49. ^ ab Paterson, Tim ; Microsoft (2013-12-19) [1983]. «Microsoft DOS V1.1 y V2.0: /msdos/v20source/FORMAT.TXT». Museo de Historia de la Computación , Microsoft . Archivado desde el original el 2019-08-14 . Consultado el 2014-03-25 .(NB. Aunque los editores afirman que se trataría de MS-DOS 1.1 y 2.0, en realidad se trata de SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 ).
  50. ^ ab Shustek, Len (24 de marzo de 2014). "Código fuente inicial de Microsoft MS-DOS". Software Gems: The Computer History Museum Historical Source Code Series. Archivado desde el original el 10 de agosto de 2019. Consultado el 29 de marzo de 2014 .(NB. Aunque el autor afirma que se trataría de MS-DOS 1.1 y 2.0, en realidad se trata de SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 ).
  51. ^ ab 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. Aunque el autor afirma que se trataría de MS-DOS 1.1 y 2.0, en realidad se trata de SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 ).
  52. ^ JEIDA/JEITA/CIPA (2010). "Estándar de la Asociación de productos de imagen y cámaras, CIPA DC-009-Translation-2010, Regla de diseño para el sistema de archivos de cámaras: DCF versión 2.0 (edición 2010)" (PDF) . Archivado desde el original (PDF) el 2013-09-30 . Consultado el 2011-04-13 .
  53. ^ abcdefghijklmnopq Caldera (1997). Kit de código fuente legible por máquina Caldera OpenDOS 7.01 . El archivo FDOS.EQU en el kit de código fuente legible por máquina tiene equivalencias para las entradas de directorio correspondientes.
  54. ^ John C. Elliott (1998). Formatos de disco CP/M 4.1 . ([20] Archivado el 26 de agosto de 2014 en Wayback Machine ): "CP/M 4.1 (DOS Plus [1.2]) permite el uso de dos sistemas de archivos: CP/M y DOS. La versión [...] suministrada con el Amstrad PC1512 no puede manejar disquetes más grandes que 360k (CP/M) / 1.2Mb (DOS), o particiones de disco duro más grandes que 32Mb. [...] El sistema de archivos DOS puede ser FAT12 o FAT16. El formato es exactamente como en PCDOS 2.11, excepto: El byte 0Ch de la entrada de directorio [...] contiene los cuatro "atributos de usuario" F1'-F4' [...] Las contraseñas de estilo DRDOS no son compatibles".
  55. ^ ab 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 .
  56. ^ Henk Kelder. FAT32.TXT para FAT32.IFS versión 0.74 . ( "@Macarlo, Inc". Archivado desde el original el 2012-03-30 . Consultado el 2012-01-14 .). Comentario: Esta versión anterior del archivo README todavía analiza los antiguos valores mágicos 0xEA y 0xEC .
  57. ^ Henk Kelder (2003). FAT32.TXT para FAT32.IFS versión 0.9.13." ([21] Archivado el 25 de enero de 2022 en Wayback Machine ): "Este byte [...] no se modifica mientras se ejecuta Windows 95 ni tampoco 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 utilizando únicamente las llamadas DosFindFirst/Next. Las otras llamadas de OS/2 para recuperar EA (DosQueryPathInfo, DosQueryFileInfo y DosEnumAttribute) no dependen de este byte. También podría ocurrir lo contrario. [...] En esta situación, solo se reducirá el rendimiento de los escaneos de directorios. Ambas situaciones [...] se corrigen con CHKDSK ".
  58. ^ Netlabs. Wiki y fuentes de FAT32.IFS . ([22] Archivado el 11 de mayo de 2013 en Wayback Machine ).
  59. ^ ab IBM. 4690 OS Programming Guide Versión 5.2 , documento IBM SC30-4137-01, 2007-12-06 ([23]).
  60. ^ abcdefghijklmn Serie de referencia para desarrolladores de OpenDOS — Guía del sistema y del programador — Guía del programador. Caldera, Inc. Agosto de 1997. Número de pieza de Caldera 200-DODG-003. Archivado desde el original el 7 de octubre de 2017. Consultado el 20 de mayo de 2014 .(Impreso en el Reino Unido.)
  61. ^ Bob Eager, Tavi Systems (28 de octubre de 2000). Implementación de atributos extendidos en el sistema de archivos FAT . ([24] Archivado el 13 de junio de 2006 en Wayback Machine ).
  62. ^ IBM (2003). Información sobre los atributos de distribución de archivos únicos del sistema operativo 4690 , documento IBM R1001487, 2003-07-30. ( "IBM Information about 4690 OS unique file distribution attribute - United States". Archivado desde el original el 2014-05-21 . Consultado el 2014-05-20 .): "[...] los tipos de archivos se almacenan en la parte "Bits reservados" de la estructura de directorio de archivos de PC-DOS [...] sólo 4690 respeta y preserva estos atributos. Varios sistemas operativos distintos de 4690 realizan acciones diferentes si estos bits están activados [...] al copiar desde un disquete creado en un sistema 4690. [...] PC-DOS y Windows 2000 Professional copiarán el archivo sin error y pondrán los bits a cero. OS/2 [...] 1.2 [...] se negará a copiar el archivo a menos que [...] ejecute primero CHKDSK /F en el archivo. Después de [...] CHKDSK, copiará el archivo y pondrá los bits a cero. [...] cuando [...] copie [...] de nuevo al sistema 4690, [...] el archivo se copiará como un archivo local."
  63. ^ IBM. Atributos de distribución de archivos para guardar y restaurar 4690. Documento de IBM R1000622, 2010-08-31 ( "IBM 4690 save and restore file distribution attribute - United States". Archivado desde el original el 2014-05-21 . Consultado el 2014-05-20 .).
  64. ^ "Limitaciones del sistema de archivos FAT32". Microsoft Knowledge Base . 2007-03-26. Archivado desde el original el 2011-08-15 . Consultado el 2011-08-21 . Los clústeres no pueden tener 64 kilobytes o más
  65. ^ Duncan, Ray (1989). «Objetivos de diseño e implementación del nuevo sistema de archivos de alto rendimiento». Microsoft Systems Journal. Archivado desde el original el 16 de julio de 2011. Consultado el 20 de mayo de 2014 .[Nota: Este archivo de texto en particular tiene varios errores de OCR; por ejemplo, "Ray" es el nombre correcto del autor, no "Roy", como se muestra en el texto.]
  66. ^ Chen, Raymond (julio de 2006). "Microsoft TechNet: una breve e incompleta historia de FAT32". Revista Microsoft TechNet. Archivado desde el original el 18 de noviembre de 2008. Consultado el 20 de mayo de 2014 .
  67. ^ de Les Bell; Associates Pty Ltd (2 de septiembre de 1996) [1990]. "OS/2 High Performance File System". PC Support Advisor . Archivado desde el original el 1 de marzo de 2014. Consultado el 24 de junio de 2014 .
  68. ^ ab Bridges, Dan (febrero de 1996). "Inside the High Performance File System - Part 2/6: Introduction". Significant Bits, Brisbug PC User Group Inc. Archivado desde el original el 23 de septiembre de 2015. Consultado el 24 de junio de 2014 .
  69. ^ Naturalmente! (24 de marzo de 1992). "Cómo obtener nombres de archivo más largos de GEMDOS". comp.sys.atari.st.tech. Archivado desde el original el 24 de abril de 2014. Consultado el 5 de mayo de 2014 .
  70. ^ Torvalds, Linus (23 de diciembre de 1992). «Nombres de archivo largos». comp.os.minix. Archivado desde el original el 23 de abril de 2014. Consultado el 5 de mayo de 2014 .
  71. ^ "mount(8): montar sistema de archivos". Página de manual de Linux . Archivado desde el original el 2014-05-05 . Consultado el 2014-05-20 .

Enlaces externos