Sistema de archivos FAT12 (l)

FAT12



Sistema de archivos FAT12


Estructura de la FAT12, disquete de 1,44 mb :


La tabla de asignación de archivos conocido como FAT (del ingles file allocation table), es un sistema de archivos desarrollado para MS-DOS.


FAT es con diferencia el sistema de archivos mas simple de aquellos compatibles con Windows NT. El sistema de archivos FAT se caracteriza por la tabla de asignacion de archivos (FAT), que es una tabla que reside en la parte "superior" del volumen. Para proteger el volumen, se guardan dos copias de la FAT por si una resultara dañada. Ademas, las tablas FAT y el directorio raíz deben almacenarse en una ubicación fija para que los archivos de arranque del sistema se puedan ubicar correctamente.



Un disco con formato FAT se asigna en clústeres, cuyo tamaño viene determinado por el tamaño del volumen, los clústeres están compuestos de sectores. Cuando se crea un archivo, se crea una entrada en el directorio y se establece el primer número de clúster que contiene datos. Esta entrada de la tabla FAT indica que este es el último clúster del archivo o bien señala al clúster siguiente, en algunos casos indicará si el clúster esta dañado o reservado para uso interno.

Características:
  • Se divide en bloques de tamaño fijo
  • Cada archivo se compone de una secuencia de bloques, formando una lista enlazada mediante punteros
  • Para encontrar un bloque es necesario recorrer todos los anteriores
  • El tamaño depende del tipo de FAT que estamos usando.



Estructura:


  • Sector de arranque


  • Tabla de asignación de archivos (FAT)


  • Directorio raíz


  • Datos






Sector de arranque:


  • Comienza en el primer sector del disco (sector 0).
  • En FAT12 el sector de arranque ocupa un sector.
  • Normalmente la informacion contenida en el sector de arranque ocupa solo 62 bytes.
  • Contiene informacion como bytes por sector, numero de cluster, numero de sectores por pista, etc.

Interpretación del sector de arranque:


-El sector de arranque comienza en el sector 0, donde los 3 primeros bytes son para el salto a la rutina del BIOS, seguidos de 8 bytes para indicar el fabricante y numero de versión.

Celeste: offset= 0h               tamaño= 3 bytes               descripción= salto a la rutina
Amarillo: offset= 3h               tamaño= 8 bytes               descripción= fabricante y numero de versión



-La forma en que almacenan los datos en los ficheros las maquinas pueden tomar distinta representación si no se lee en su debida representacion Big y Little endian.
Para el ejemplo mostrado los datos se deben leer en modo Little endian, lo cual para el dato bytes por sector en el ejemplo es:


00 02 = 0x200h = 512 ( hace referencia al tamaño en bytes )


Lo mismo seria para numero de sectores reservados lo cual tiene como dato:

01 00 = 0x1h = 1 ( hace referencia al numero de sectores reservados)

Celeste: offset= Bh               tamaño=  2 bytes               descripción=número de bytes por sector
Amarillo: offset= Dh               tamaño= 1 bytes               descripción= sectores por cluster
Verde: offset= Eh               tamaño= 2 bytes               descripción= numero de sectores reservados
Rojo: offset= 10h               tamaño= 1 bytes               descripción= numero de FAT's




- El media descriptor devuelve informaciones sobre el formato del volumen y de soporte de datos, para el ejemplo mostrado, el de un disquete 3½ es F9.



detalles media descriptor.

Celeste: offset= 11h               tamaño= 2 bytes               descripción= numero de entradas en el directorio raiz
Amarillo: offset= 13h               tamaño= 2 bytes               descripción= numero de sectores del volumen
Verde: offset= 15h               tamaño= 1 bytes               descripción= media descriptor
Rojo: offset= 16h               tamaño= 2 bytes               descripción= numero de sectores por FAT



-En la FAT12 generalmente los datos de numero de sectores ocultos en el volumen y numero de sectores que ocupan la partición tienen como dato 00.

Celeste: offset= 18h               tamaño= 2 bytes               descripción= sectores por pista
Amarillo: offset= 1Ah               tamaño= 2 bytes               descripción= numero de cabezales de lectura-escritura
Verde: offset= 1Ch               tamaño= 4 bytes               descripción= numero de sectores ocultos en el volumen
Rojo: offset= 20h               tamaño= 4 bytes               descripción= numero de sectores que ocupa la partición



-El número de dispositivo físico para FDD es 00 para discos duro 80.
-El cabezal actual lo utiliza WinNT internamente.
-La firma del sistema se refiere al Sistema Operativo que creo el disco, para WinNT es 29.



Celeste: offset= 24h               tamaño= 1 bytes               descripción= número de dispositivo fisico
Amarillo: offset= 25h               tamaño= 1 bytes               descripción= cabezal actual
Verde: offset= 26h               tamaño= 1 bytes               descripción= firma del sistema

Rojo: offset= 27h               tamaño= 4 bytes               descripción= id del volumen



-Como se puede ver en la imagen de ejemplo, el disquete de ejemplo contenía de nombre PAOLO, pero como el tamaño que se le da para esta información es 11 bytes, los bytes restantes se completan con espacio (20).

-Lo mismo ocurre para la información de la versión del sistema de archivos FAT12 se completa con espacio los bytes no ocupados (20).


Celeste: offset= 2Bh               tamaño= 11 bytes               descripción= nombre de etiqueta de volumen
Amarillo: offset= 36h               tamaño= 8 bytes               descripción= version del sistema de archivos




- Se ocupan 2 bytes al final del sector de arranque con informacion 55AAh que hace referencia a la firma de unidad de arranque.


Extra:


-Los bytes no indicados generalmente corresponden a rutinas de codigo maquina del cargador de arranque.
Por ejemplo:

"This is not a bootable disk.  Please insert a bootable floppy and..press any key to try again".


parte I     parte II     parte III


Referencias:


https://support.microsoft.com/es-es/kb/100108