Capítulo 14
Los discos del DOS

 

Índice · Capítulo 13 · Capítulo 15 · Publicaciones · Saulo.Net

14-1 Introducción

Este capítulo muestra cómo graba ms-dos la información en los discos. Explica detalladamente cada una de las divisiones físicas propias de todo disco (caras, pistas, sectores) así como la estructura lógica creada por ms-dos al formatear un disco (sector de arranque, FAT, directorio raíz, área de datos).

Además, el capítulo es especialmente interesante por las órdenes Chkdsk y Scandisk. Estas órdenes de conocimiento imprescindible solucionan los errores producidos en un disco. Le conviene aprender a solucionar posibles problemas en su disco duro, pues se producen a menudo y pueden llegar a inutilizar el disco.

 

Índice · Subir · Publicaciones · Saulo.Net

14-2 El sistema de disco

El sistema de disco permite leer y grabar información de forma permanente. Esta formado por:

En los discos duros, el disco y la unidad de disco forman un solo cuerpo cerrado herméticamente. No se puede utilizar más de un disco para la misma unidad de disco duro.

Por el contrario, las unidades de disco flexible y compacto admiten diversos discos para la misma unidad.

Las unidades de disco flexible se corresponden con los tipos de disquetes existentes: 5¼ DD, 5¼ HD, 3½ DD, 3½ HD y 3½ ED. Cada una de estas unidades admite el disquete indicado en su nombre y los inferiores de su mismo tamaño. Es decir, una disquetera de 3½ HD trabaja con discos de 3½ HD y 3½ DD. En cambio, una disquetera de 5¼ DD solamente admite discos de 5¼ DD.

Disquetera.— Unidad de disco flexible.

Disquete.— Disco flexible y su funda protectora.

El siguiente cuadro muestra los discos admitidos por cada unidad de disco flexible:

Las unidades de disco compacto se clasifican según su velocidad de acceso a una información (en milisegundos) y su velocidad de transferencia. La velocidad de transferencia de datos entre el disco compacto y el ordenador se rige por la siguiente tabla:

Tipo de unidad Velocidad de transferencia
Simple velocidad 150 Kilobytes cada segundo.
Doble velocidad 300 Kb/seg
Triple velocidad 450 Kb/seg.
Cuádruple velocidad 600 Kb/seg.
Velocidad x 150 · x Kb/seg.

Aunque es necesaria una controladora de disco para cada unidad, generalmente se comercializan tarjetas con varias controladoras integradas. El caso más común son tarjetas controladoras (se conectan a la placa base y unidades de disco) para dos unidades de disco flexible y dos unidades de disco duro. Sin embargo, la tendencia actual es incorporar las controladoras en la propia placa base. Las unidades de disco compacto se conectan como segundo disco duro o bien, a una tarjeta controladora propia.

 

Índice · Subir · Publicaciones · Saulo.Net

14-3 El disco

Es un soporte magnético que almacena información de forma permanente. La memoria, en cambio, es almacenamiento temporal. Los datos de la memoria se pierden al apagar el ordenador pero los datos de un disco quedan grabados aún sin corriente eléctrica.

La superficie de un disco se puede dividir según su estructura física o lógica.

 

Estructura física

Cada tipo de disco posee una estructura propia, determinada por el fabricante.

Los valores para los discos flexibles son fijos:

 

  5 1/4 DD 5 1/4 DD 3 1/2 DD 3 1/2 HD 3 1/2 ED
Caras 2 2 2 2 2
Pistas/Cara 40 80 80 80 160
Sectores/Pista 9 15 9 18 36

Los valores de los discos duros dependen de su capacidad. Además, discos duros con igual capacidad y diferente fabricante pueden tener estructura física distinta.

Las caras son las superficies del disco que almacenan datos. Los disquetes actuales poseen dos caras: la superior y la inferior. Para acceder a cada cara del disco, las unidades poseen una cabeza de lectura/escritura por cada una.

Las pistas son anillos concéntricos en cada una de las caras. En los discos duros se denominan cilindros.

A su vez, las pistas se subdividen en sectores. En la mayoría de los discos un sector almacena 512 bytes de información.

Estructura lógica

Cada sistema operativo crea una estructura lógica distinta en sus discos. En este caso, estudiamos la estructura lógica creada por ms-dos.

El siguiente gráfico representa el desarrollo de un disco formateado, desde el primer sector hasta el último.

El propósito de esta estructura lógica es grabar y leer datos de la forma más eficiente posible. Cada una de las divisiones tiene un tamaño fijo según el disco y una misión específica para el sistema operativo.

La siguiente tabla muestra el sector de comienzo y cantidad de sectores ocupados por cada área en los cuatro disquetes más extendidos.

 

  5 1/4 DD 5 1/4 DD 3 1/2 DD 3 1/2 HD
Sector comienzo sector de arranque 0 0 0 0
Longitud sector de arranque 1 1 1 1
Sector comienzo primera FAT 1 1 1 1
Sector comienzo segunda FAT 3 8 6 10
Longitud ambas FAT 4 14 10 18
Sector comienzo directorio raíz 5 15 11 19
Longitud directorio raíz 7 14 7 14
Sector comienzo área de datos 12 29 18 33
Longitud área de datos 709 2372 1123 2848

 

Índice · Subir · Publicaciones · Saulo.Net

14-4 Sector de arranque

Ocupa el primer sector del disco. Este sector dispone de un pequeño programa que busca los ficheros ocultos IO.SYS y MSDOS.SYS en el directorio raíz. Si los encuentra, carga el sistema operativo y si no, muestra alguna variante del conocido mensaje "Error, de disco de sistema. Reemplace y presione cualquier tecla".

Nota: Para crear un disquete de arranque utilice la orden Sys o también Format con el modificador /S.

El sector de arranque de cada disco posee, además, las siguientes informaciones:

 

Índice · Subir · Publicaciones · Saulo.Net

14-5 Los grupos

El área de datos está dividida lógicamente en grupos. Los grupos, clusters o también llamados unidades de asignación tienen una correspondencia con los sectores del disco. En los disquetes de doble densidad, 2 sectores del área de datos forman un grupo. Pero en los disquetes de alta densidad, cada sector forma un grupo.

Los dos primeros grupos están reservados (grupos 0 y 1). El primer grupo disponible es el número 2.

Cada grupo puede almacenar información de un sólo fichero. Si un fichero no cabe en un sólo grupo, se utilizan varios -no necesariamente contiguos-.

En un disquete de 3½ HD, cada grupo almacena 512 bytes. Si crea un fichero de 1 byte, éste se almacena ocupando todo un grupo. Si luego crea otro fichero de 1 byte, éste empleará un nuevo grupo. Como vemos, el gasto del disco no es de 2 bytes sino de ¡1024 bytes!

 

Índice · Subir · Publicaciones · Saulo.Net

14-6 La FAT

Es el índice del disco. Almacena los grupos utilizados por cada fichero, los grupos libres y los defectuosos.

Como hemos indicado anteriormente, un fichero puede usar varios grupos no consecutivos. Para seguir el rastro del fichero por el disco, el dos emplea la FAT.

La FAT o tabla de asignación de ficheros es de tal importancia en un disco que se graba por duplicado. Si la FAT se estropea, el dos no reconocerá la información del disco.

Vamos a verlo con un ejemplo. En un disquete vacío de 3½ HD creamos un fichero de 251 bytes llamado ROMANCE.TXT. Como el grupo es de 512 bytes, ROMANCE ocupa el primero disponible (grupo 2). La FAT contiene lo siguiente:

 

Grupo Valor
0 (reservado)
1 (reservado)
2 (final)
3 (libre)
4 (libre)
5 (libre)
... ...

Luego, creamos otro fichero llamado SONETO.TXT de 632 bytes. Como no cabe en un sólo grupo, ocupa dos. LA FAT cambia automáticamente:

 
Grupo Valor
0 (reservado)
1 (reservado)
2 (final)
3 4
4 (final)
5 (libre)
... ...

Es decir, SONETO empieza en el grupo 3, continúa en el 4 y finaliza.

Ahora, borramos el fichero ROMANCE.TXT. El dos marca como libres los grupos ocupados por el fichero (en este caso, el grupo 2).

 
Grupo Valor
0 (reservado)
1 (reservado)
2 (libre)
3 4
4 (final)
5 (libre)
... ...

Para finalizar, creamos un nuevo fichero con 606 bytes de tamaño y de nombre RECUERDO.TXT. ms-dos busca el primer grupo disponible y lo utiliza. Como no cabe en un sólo grupo, busca otro y también lo utiliza. La FAT queda de esta forma.

 
Grupo Valor
0 (reservado)
1 (reservado)
2 5
3 4
4 (final)
5 (final)
... ...

El fichero RECUERDO ha quedado fragmentado en dos grupos no contiguos: el 2 y el 5.

 

Índice · Subir · Publicaciones · Saulo.Net

14-7 El directorio raíz

Esta área almacena las entradas del directorio raíz. Cada entrada consta de los siguientes campos:

 

Nombre Extensión Atributos Reservado Hora Fecha Grupo 1º Tamaño
(8 bytes) (3 bytes) (1 byte) (10 bytes) (2 bytes) (2 bytes) (2 bytes) (4 bytes)

Cada entrada es almacenada en disco como un conjunto de 32 bytes. Todos los campos menos el nombre y extensión se codifican para ahorrar espacio. Por ejemplo, el campo de la hora con sólo 2 dígitos almacena horas, minutos y segundos.

El directorio raíz (descodificado) del último ejemplo es el siguiente:

 
Nombre Ext. Atrib. Hora Fecha Grupo 1º Tamaño
RECUERDO TXT A 17:00:06 31/08/95 2 606
SONETO TXT A 16:58:02 31/08/95 3 632

Notas: La orden Dir muestra los campos nombre, extensión, hora, fecha y tamaño. Sin embargo no muestra los segundos del campo hora. La orden Attrib muestra los campos nombre, extensión y los atributos de sólo lectura (R), oculto (H), sistema (S) y archivar (A).

Los subdirectorios del raíz se comportan como ficheros. Aunque parezca extraño, para el dos un directorio es un fichero cuyo nombre es el nombre del directorio y cuyo contenido son las entradas del directorio. Para diferenciar a los subdirectorios de los ficheros, el dos coloca un atributo especial a los subdirectorios (D).

Además, el directorio raíz contiene la etiqueta del disco. La etiqueta ocupa una entrada más y posee un atributo característico (E). Recuerde como el nombre de una etiqueta no puede sobrepasar los 11 caracteres (8 + 3).

Nota: La etiqueta de un disco se almacena en dos lugares distintos: sector de arranque y directorio raíz.

Si al disco del ejemplo anterior, le creamos un subdirectorio llamado TEXTOS y además, le ponemos la etiqueta "CAPITULO-14", el directorio raíz será el siguiente:

 
Nombre Ext. Atrib. Hora Fecha Grupo 1º Tamaño
RECUERDO TXT A 17:00:06 31/08/95 2 606
SONETO TXT A 16:58:02 31/08/95 3 632
TEXTOS D 17:20:10 31/08/95 6 0
CAPITULO -14 E 17:22:36 31/08/95 0 0
(libre)
...

 

Índice · Subir · Publicaciones · Saulo.Net

14-8 El área de datos

Almacena todos los subdirectorios y ficheros del disco. El área de datos se divide en un número fijo de grupos dependiendo del tipo de disco. Cuando alguien habla del tamaño de un disco, en realidad, se refiere al tamaño del área de datos. En el área de datos de un disquete de 3½ HD caben 1,44 Mb.

 

La orden CHKDSK

Tiene dos misiones principales: mostrar información relativa al disco y corregir errores del disco (ver más adelante).

Un listado de la orden Chkdsk en un disquete de 3½ HD puede ser el siguiente:

A:\>chkdsk

El volumen CAPITULO-14 se creó el 31/08/1995 a las 17:22
El número de serie del volumen es 11F5-1441

   1.457.664 bytes de espacio total en disco
         512 bytes en 1 directorio(s)
       2.560 bytes en 3 archivo(s) de usuario
   1.454.592 bytes disponibles en el disco

         512 bytes en cada unidad de asignación
       2.847 total de unidades de asignación en el disco
       2.841 unidades de asignación disponibles en disco

     655.360 bytes de memoria total
     627.040 bytes libres

La primera línea obtiene la información de la entrada con atributo E en el directorio raíz. El número de serie del disco lo encuentra leyendo el sector de arranque.

La siguiente línea muestra la capacidad total del área de datos. "Bytes en x directorio(s)" apunta los bytes consumidos por los subdirectorios (sin contar el raíz). Debe ser múltiplo del tamaño del grupo. La línea "bytes en x archivo(s) de usuario" indica los bytes ocupados por el total de ficheros en el disco. Debe ser múltiplo igualmente del tamaño del grupo. Si dividimos 2560 entre 512 obtenemos 5 grupos utilizados por ficheros. Los bytes disponibles se obtienen restando de la capacidad total, los bytes usados (1.457.664 - 512 - 2560 = 1.454.592)

El siguiente bloque de texto muestra información sobre los grupos o unidades de asignación. Como ya sabemos, los grupos de un disquete de 3½ HD almacenan un máximo de 512 bytes. Restando los grupos totales menos los grupos disponibles, tenemos los grupos usados (2.847 _ 2.841 = 6). Seis grupos usados: cinco en ficheros y uno en subdirectorios.

El último bloque informa sobre la memoria convencional.

 

Índice · Subir · Publicaciones · Saulo.Net

14-9 Estructura lógica de los discos duros

Los discos duros presentan una serie de diferencias frente a la estructura lógica de los discos flexibles:

Las particiones son divisiones lógicas efectuadas en un disco duro. Responden a una necesidad muy importante en informática: compartir un mismo disco duro para varios sistemas operativos. Cada partición tiene la estructura lógica correspondiente a su sistema operativo. Una partición dos contiene sector de arranque, FAT, directorio raíz y área de datos. Los datos de una partición no se mezclan con los de otra.

Si se preparan varias particiones es necesario establecer una partición como activa. La partición activa es la que arranca al encender el ordenador.

En el primer sector de todo disco duro se sitúa una tabla de particiones con el siguiente formato.

 
Concepto Bytes ocupados
(reservado) 445 bytes
Entrada de la partición 1 16 bytes
Entrada de la partición 2 16 bytes
Entrada de la partición 3 16 bytes
Entrada de la partición 4 16 bytes

La entrada de cada partición contiene los siguientes campos:

 
Campo Bytes ocupados
Partición activa o no 1 byte
Cabeza primer sector de la partición 1 byte
Cilindro y sector del primer sector 2 bytes
Tipo de partición: DOS, XENIX... 1 byte
Cabeza último sector de la partición 1 byte
Cilindro y sector del último sector 2 bytes
Primer sector de la partición 4 bytes
Longitud de la partición en sectores 4 bytes

Nota: Para cambiar las particiones, se utiliza la orden Fdisk.

Cuando el ordenador arranca, busca en la tabla de particiones la partición activa y cede el control al sector de arranque de dicha partición.

 

Índice · Subir · Publicaciones · Saulo.Net

14-10 Corrección de errores en los discos

Para corregir errores producidos en un disco por mal uso o por defectos del hardware o software se emplea la orden Chkdsk (hasta la versión 6.0) o Scandisk (desde la 6.2)

Scandisk detecta y corrige los siguientes problemas en un disco sin comprimir:

Chkdsk detecta únicamente los siguientes errores. Para corregirlos es necesario añadir el modificador /F.

Para verificar el disco duro C:, escriba lo siguiente según su versión de ms-dos:

C:\>chkdsk /f

Si detecta algún error, Chkdsk pide confirmación al usuario antes de solventarlo. Si el disco es correcto, Chkdsk muestra información del disco y termina.

C:\>scandisk

Scandisk comprueba en primer lugar la estructura lógica del disco y en segundo lugar, la estructura física. Si detecta alguna anomalía, Scandisk ofrece una explicación detallada del problema antes de resolverlo. Si se encargó solucionar el error, Scandisk ofrece la posibilidad de crear un disquete Deshacer. Un disquete Deshacer permite restaurar un disco a su estado original si éste funciona peor después de la reparación efectuada. Para ello escribimos SCANDISK /UNDO.

Verificar el disco duro frecuentemente es una tarea más que necesaria. Los errores lógicos o físicos pueden producirse por diversos motivos: no salir adecuadamente de las aplicaciones, apagar el ordenador a mitad de una operación, un corte de suministro eléctrico, fallo de la parte mecánica del disco duro, programas defectuosos...

Por estas razones debe solucionar los posibles errores antes de que sea demasiado tarde. Una colección de pequeños errores pueden inutilizar el disco.

Si dispone de una versión de ms-dos anterior a la 6.0 agregue la siguiente línea al AUTOEXEC.BAT para que el disco duro sea chequeado en cada arranque del sistema.

CHKDSK C: /F

Si su versión es posterior a la 6.2 coloque la siguiente línea en el AUTOEXEC.BAT

SCANDISK C: /CUSTOM

A continuación se describen los errores detectados por Chkdsk y Scandisk.

 

Las FAT's no coinciden.

Debido a la vital importancia de este área, se encuentra almacenada en dos lugares diferentes. Si Scandisk detecta alguna diferencia entre ambas copias, actualiza la segunda copia con los datos de la primera.

 

Estructura del directorio incorrecta.

Chkdsk y Scandisk revisan las entradas de los directorios comparándolas con la FAT. Si detectan un carácter no válido o un dato incorrecto en alguna entrada, se lo comunican al usuario.

Imagine un disco de 3½ HD con las siguientes informaciones:

 
Grupo Valor
0 (reservado)
1 (reservado)
2 (final)
3 (libre)
... ...

 
Nombre Ext. Atrib. Hora Fecha Grupo 1º Tamaño
PRUEBA TXT A 10:15:28 01/01/96 2 711

El fichero PRUEBA.TXT, según el directorio raíz, empieza en el grupo 2. Observando la FAT, el grupo 2 es el último del fichero. Sin embargo, un grupo equivale a 512 bytes y el fichero tiene 711 bytes. Para solucionar el problema, Scandisk o Chkdsk cambian el valor 711 por 512.

 

Cadenas perdidas

Son informaciones del área de datos no asignadas a ningún fichero.

Suponga un disco de 3½ HD con el siguiente contenido:

 
Grupo Valor
0 (reservado)
1 (reservado)
2 (final)
3 (final)
4 5
5 (final)
... ...

 
Nombre Ext. Atrib. Hora Fecha Grupo 1º Tamaño
FICH1 TXT A 09:40:00 03/06/96 2 250
FICH2 TXT A 10:41:02 03/06/96 3 372

El grupo 4 y 5 se encuentran en la FAT como usados. Sin embargo, ningún fichero se hace responsable de estas informaciones. Por tanto, los grupos 4 y 5 forman una cadena perdida. Para solucionarlo, tanto Chkdsk como Scandisk ofrecen dos posibilidades: borrar o recuperar.

Si borramos, los grupos 4 y 5 se marcan en la FAT como libres:

 
Grupo Valor
0 (reservado)
1 (reservado)
2 (final)
3 (final)
4 (libre)
5 (libre)
... ...

Si recuperamos, ms-dos asigna un nombre de fichero a la cadena perdida. A la primera cadena recuperada la llama FILE0001.CHK y así sucesivamente:

 
Nombre Ext. Atrib. Hora Fecha Grupo 1º Tamaño
FICH1 TXT A 09:40:00 03/06/96 2 250
FICH2 TXT A 10:41:02 03/06/96 3 372
FILE0001 CHK A 11:42:04 03/06/95 4 1024

Generalmente las cadenas perdidas recuperadas no tienen ninguna utilidad y se pueden borrar simplemente. Este error se produce frecuentemente al apagar el ordenador sin salir de una aplicación.

 

Vínculos cruzados

Se produce cuando un mismo grupo es compartido por varios ficheros.

El siguiente disco posee el grupo 2 común a los ficheros FICH1.TXT y FICH2.TXT

 
Grupo Valor
0 (reservado)
1 (reservado)
2 (final)
... ...

 
Nombre Ext. Atrib. Hora Fecha Grupo 1º Tamaño
FICH1 TXT A 10:02:18 01/01/96 2 160
FICH2 TXT R 10:03:22 01/01/96 2 450

El siguiente disco de 3½ HD posee un vínculo cruzado a nivel de FAT. El grupo 3 es compartido por dos ficheros.

 
Grupo Valor
0 (reservado)
1 (reservado)
2 3
3 (final)
... ...

 
Nombre Ext. Atrib. Hora Fecha Grupo 1º Tamaño
FICH1 TXT A 12:22:00 01/01/96 2 800
FICH2 TXT A 12:24:08 01/01/96 3 257

Para solventar un vínculo cruzado, Chkdsk o Scandisk copian el grupo común a otro lugar del disco. El segundo fichero implicado se dirige al nuevo lugar, rompiendo el cruzamiento.

 

Errores físicos

Se origina un error físico en un sector del disco cuando ese sector no almacena datos de forma segura.

Si Scandisk encuentra un sector defectuoso en el sector de arranque, FAT o directorio raíz, no puede hacer nada y el disco queda inservible.

En cambio, si encuentra un grupo defectuoso en el área de datos, Scandisk copia la información existente a lugar seguro y marca en la FAT ese grupo como defectuoso.

La siguiente FAT corresponde a un disco con el grupo 3 defectuoso. ms-dos evitará ese bloque en todas las operaciones de escritura:

 
Grupo Valor
0 (reservado)
1 (reservado)
2 4
3 (defectuoso)
4 (final)
... ...

 

Índice · Subir · Capítulo15 ·  Publicaciones · Saulo.Net