Aula Macedonia


Artículos Varios


Artículo realizado por
José Conde "Rewin".





Sistema de ficheros del MS-DOS

Organización física del disco.

Un disco está dividido en pistas concentrícas, numerándose estas desde el 0 (pista central) hacia fuera. Estas pistas están divididas a su vez en sectores: el disco está dividido por radios, la superficie del disco comprendida entre dos de estos radios consecutivos y dos pistas también consecutivas es lo que se llama sector. Los sectores tienen todos la misma capacidad de almacenamiento, que es de 512 bytes. El disco más frecuentemente usado (doble cara, alta densidad) está compuesto de 80 pistas por cara y 18 sectores por pista. Haciendo un cálculo rápido podemos calcular la capacidad de estos discos (1440 KB.)

capacidad= caras x disco x pistas x sectores x capacidad sectores
capacidad FD=2 x 1 x 80 x 18 x 512 = 1474560B.

1474560 Bytes / 1024 = 1440 KB.

Los sectores se numeran en sentido antihorario empezando por el agujero índice (sector 1).

Un determinado sector queda localizado mediante un sistema de coordenadas tridimensional: cara, pista, sector. Esta notación es la utilizada por la ROM-BIOS para identificar un sector. Sin embargo el DOS utiliza un único número para cada sector, imaginando como si los sectores estuvieran unos a continuación de los otros (sector 0=sector 1 de la pista 0 de la cara 0, se continúa con los sectores de la pista. Cuando se acaba la pista, se cambia de cara y después de pista volviendo a la cara 0... hasta el final del disco).

Distribución del espacio del diskette

Después de un formateo del disco, hay ciertas regiones del disco que quedan reservadas para guardar una información necesaria para la gestión del disco.

Podemos dividir el diskette en cuatro partes:

  1. Registro de arranque.
  2. Tabla de asignación de ficheros (FAT).
  3. Area del directorio raíz.
  4. Area de datos

1. Registro de Arranque.

Ocupa siempre el sector 0. Todos los discos tienen registro de arranque (boot-record), aún cuando carezca de sistema operativo. Si lo tiene será el responsable de cargar el sistema operativo y si no de dar el mensaje:
Disco sin sistema o error en disco
Cámbielo y pulse una tecla


La estructura de éste registro de arranque es la siguiente:

Contenido

Dirección

Longitud (B)

Instrucción JMP
0
3
Identificador de sistema y versión
3
8
Bytes por sector
11
2
Sectores por cluster
13
1
Número de sectores reservados
14
2
Número de copias de la FAT
16
1
Número de elementos del directorio raíz
17
9
Número de sectores del disco
19
2
Descriptor del soporte
21
1
Sectores por FAT
22
2
Sectores por pista
24
2
Número de caras
26
2
Número de sectores ocultos especiales
28
4
Número total de sectores
32
4
Número de unidad física
36
2
Identificación del registro arranque
38
1
Número de serie del volumen
39
4
Etiqueta del volumen
43
11
Identificación sistema de archivos
54
8
Programa de arranque
62
450

 
Esta tabla contiene la información de los discos formateados con versiones posteriores a la 4.00 del DOS. Las versiones anteriores ofrecían una tabla con menos campos.

2. Tabla de asignación de ficheros (FAT).

Esta tabla es usada para conocer la ubicación de los archivos en el disco. Contiene un número para cada cluster del disco.
Un cluster es la unidad mínima de asignación del DOS y está constituída por un número determinado de sectores consecutivos.
Cada entrada de la FAT ocupa 12 bits en los floppies y 16 bits en los discos duros (a mayor número de bits de la FAT, podremos referenciar discos de mayor tamaño).

Los valores que puede tomar una entrada de la FAT son las siguientes (en 12 bits):

000 (0000 para 16 bits)

cluster libre.

FF0 y FF6

cluster reservado.

FF7

cluster inutilizado.

FF8 y FFF

cluster final de fichero.


Cualquier otro valor indica la dirección del siguiente cluster del fichero. Estos valores están en formato hexadecimal. Veamos un ejemplo:
 

FAT

Cluster

Contiene

000

0

libre

004

1

hola.txt (1)

FF7

2

roto

006

3

adios.txt (1)

005

4

hola.txt (2)

FFF

5

hola.txt (3)

FFF

6

adios.txt (2)

 
Estos valores son erróneos, ya que nunca podrá  empezar el primer cluster de datos en la posición inicio del disco. Es un simple ejemplo.

La FAT ocupa una extensión de 9 sectores (en un floppie) teniendo una copia por motivos de seguridad (1-9;9-18).

Por lo tanto, por ahora tenemos:

sector

0

Registro de arranque

sectores

1-9

FAT

sectores

9-18

FAT (copia de seguridad)

 

3. Directorio raíz:

El directorio raíz contiene información sobre los ficheros contenidos en él. Por cada fichero o subdirectorio del directorio raíz, existe una entrada en el directorio raíz de 32 bytes. Estos bytes contienen la siguiente información:

Contenido del campo

Byte inicial

Longitud

Nombre del fichero

0

8 Bytes

Extensión

8

3 Bytes

Atributo

11

1 Byte

Campo no utilizado

12

10 Bytes

Hora de creación

22

2 Bytes

Fecha de creación

24

2 Bytes

Entrada en la FAT

26

2 Bytes

Tamaño del fichero

28

4 Bytes

En el caso de un floppie disk, el directorio raíz puede contener 224 ficheros (32 B * 224 = 7168 B / 512 B = 14 sectores ocupa el directorio raíz)

El campo atributo (1 Byte de longitud) contiene información acerca de las características del fichero. Esta información se detalla así:

bit 0

Fichero sólo lectura

bit 1

Fichero oculto

bit 2

Fichero del sistema

bit 3

Etiqueta del volumen (si este bit está activo, significa que el
nombre (8 caracteres) y la extensión (3 caracteres) de este
fichero conforman la etiqueta (11 caracteres) del disco. Este
bit sólo tiene sentido en el directorio raíz).

bit 4

Fichero directorio (si es un subdirectorio)

bit 5

Archivado (a 0 si el archivo no ha cambiado desde la
última copia de seguridad)

bit 6

No se utiliza

bit 7

No se utiliza

 
La hora de creación o de última modificación se codifica en 2 bytes, con el byte menos significativo en primer lugar. La codificación se hace según la fórmula:
 
Hora_codificada=hora*2048+minuto*32+segundo/2
Para decodificar la hora se hace:
Hora=hora_codificada div 2048 Minutos=(hora_codificada mod 2048) div 2 Segundos=((hora_codificada mod 2048) mod 32) * 2
La codificación de la fecha es la siguiente:
 
Fecha=(año - 1980)*512 + mes*32 + día
El campo de entrada en la FAT indica el número del cluster donde comienza el fichero. El tamaño del fichero se indica en esos 4 bytes sin ningún tipo de codificación.

4. Area de datos.

Es el resto del espacio del disco, destinado a guardar los datos de los ficheros. Ocupará en un floppie 2880-33 (1+18+14) = 2847 sectores. Esta es la razón de que el espacio dedicado a datos en un diskette sea 1.423,5 Kb y no los 1.440 que es la capacidad absoluta del floppie.

Características especiales en los discos duros.

Cada partición de disco duro que albergue al sistema operativo DOS se comportará y está constituída igual que un disquete, con sus 4 partes diferenciadas, si bien el tamaño de cada una irá en función del tamaño de la partición en sí.
La forma de gestionar las particiones es sencilla. El primer sector de todo disco duro contiene el registro de arranque principal, donde definirá cada una de las particiones del disco. Se pueden definir hasta 4 particiones, y por cada una de ellas se tiene la siguiente información:
  • Indicador de arranque: Indica si esa partición es arrancable o no. Si es arrancable le sigue inmediatamente la dirección del registro de arranque de esa partición, con el conocido sistema de coordenadas tridimensionales (cilindro, sector, cabeza).
  • Indicador del sistema: Indica el sistema operativo que contienen la partición.
  • Número de sectores relativo: Es el número de sectores que preceden a esa partición.
  • Número de sectores: los que componen la partición.


Por último, los dos últimos bytes del registro de arranque principal son lo que se denomina la firma, cuyo valor habitual es 55AA h.




AULA MACEDONIA
a
MACEDONIA Magazine