Consideraremos en esta sección y siempre que hablemos de discos sectorizados en este apunte que estamos trabajando bajo el sistema operativo MS-DOS. (o similares) Existen otras formas de organizar discos sectorizados en las que no ahondaremos. Es muy importante destacar que todo lo que se dice en este apunte se aplica solo a los discos MS-DOS y no a cualquier disco sectorizado ya que la organización lógica de un disco sectorizado es muy dependiente del sistema operativo que se este utilizando.

Es común en muchos sistemas, lenguajes etc. considerar a los archivos como una “tira” de bytes sin ningún tipo de separación en registros. En estos casos los archivos son grabados de forma tal que la fragmentación interna es siempre cero a excepción del ultimo cluster del archivo el cual puede estar más o menos lleno. Esta forma de trabajo facilita notablemente la organización del disco aunque no es del todo eficiente. Este caso se aplica por ejemplo en el sistema MS-DOS y merece cierta atención.

En MSDOS se trabaja con discos sectorizados en los cuales se aplican todos los conceptos vistos hasta ahora con las siguientes salvedades:

  • Los archivos se organizan como una cadena de bytes.
  • Un archivo se compone de uno o más clusters que no tienen necesidad de ser contiguos.
  • Todo archivo ocupa una cantidad entera de clusters.
  • Todo archivo ocupa al menos un cluster.
  • El encadenamiento entre los clusters de los archivos y el control de clusters libres se registra en la FAT (file allocation table) tema que no se trata en esta materia.
  • Un archivo puede leerse en forma random o secuencial.
  • Hay un acceso por CLUSTER en lectura random, 1 acceso por pista en lectura secuencial.
  • Solo hay FRI en el último cluster del archivo. (slack)
  • La FRE deja de ser relevante pues todo archivo se puede distribuir por los distintos clusters libres del disco.

Ejemplo:

Un programador graba un archivo de 673 registros lógicos de 47 bytes cada uno en un disco de 36 clusters de 4096 bytes c/u por pista. Calcular cuantos clusters ocupa el archivo y FRI.

Para el SO el archivo es una cadena de 31631 (673x47) bytes, luego la cantidad de clusters necesarios es

31631 / 4096 = 8 clusters.

El archivo ocupa 8 clusters y FRI es 8x4096 - 31631 = 1137 bytes.

Este tipo de organización tiene sus pro y sus contras. Una clara ventaja es que reduce la fragmentación interna a un máximo de Lcluster bytes por archivo. En general si no se conoce QRL o LRL puede suponerse que la fragmentación interna promedio de un archivo es de 3/4 cluster.

La desventaja es que complica el acceso a algún registro lógico en particular, el cual podría estar ubicado en dos clusters y estos no tienen porque estar contiguos con lo cual podría darse el caso que para acceder a un RL de 2 bytes se necesiten 2 accesos!

Cálculo de los clusters necesarios para un archivo:

Clusters= QRLxLRL / Lcluster

La cantidad de bytes con datos del archivo la llamaremos longitud lógica del archivo y es LRLxQRL.

La cantidad de bytes necesarios para grabar el archivo en disco la llamaremos longitud física del archivo o más comúnmente “espacio alocado”.

En base a la cantidad de clusters, el espacio alocado del archivo es:

Lcluster x Clusters

El espacio alocado es siempre mayor o igual al tamaño real del archivo.

Y los bytes desperdiciados por FRI (slack) se calculan como:

Lcluster x LClusters - LRL x QRL

Obsérvese que la FRI solo se produce en el último cluster del archivo y ocurre cuando la longitud lógica del archivo no es un múltiplo del tamaño del cluster.

Si no se conoce algún dato como por ej. el tamaño del archivo puede estimarse la FRI por archivo como

3/4 x Lcluster

La cantidad de archivos que puede grabarse en un disco con estas características esta limitada por la cantidad de clusters de la unidad, aunque los archivos ocupen un byte cada uno estos necesitarán de un cluster como espacio alocado, por lo tanto no puede haber en un disco con organización DOS más archivos que clusters.

Ejemplo:

Se tienen grabados 3400 archivos en un disco con clusters de 8192 bytes. La longitud lógica de los 3400 archivos es de 340 Mb.

a) Calcular la longitud física de los archivos en el disco.

b) ¿Cuántos bytes serían necesarios para grabar el mismo archivo en un disco con clusters de 2048 Kb?

a) Los archivos ocupan 340 Mb. Como faltan datos estimo el espacio

slack de los 3400 archivos como

3/4 Lcluster x 3400 = 6144 x 3400 = 20.4 Mb

Los archivos ocupan en el disco 340 + 20.4 = 360.4 Mb aproximadamente.

b) Si en cambio Lcluster= 2048 el espacio slack para los 3400 archivos

se calcula como:

1536 x 3400 = 5.1 Mb

Los archivos ocuparían 340 + 5.1 = 345.1 Mb aproximadamente.

Para resolver (muy fácil)

En un disco con clusters de 4096b se han grabado 17000 archivos, los cuales totalizan 260 Megabytes de espacio alocado. Calcular cuantos bytes serian necesarios para grabar estos archivos en un disco con clusters de 8192b.

Problemas básicos con discos sectorizados

  • Calcular la cantidad de bytes o clusters necesarios para grabar un archivo.
  • Calcular la FRI de un archivo dado.
  • Estimar la FRI para un cierto número de archivos.
  • Calcular los bytes necesarios para trasladar uno o más archivos desde un disco hacia otro disco con clusters de distinto tamaño.

Algunos Ejemplos

Tablas de desperdicio por slack.

Ejemplo Numero 1:

Un viejo disco Conner de 254 Mb, Partición lógica de 180 Mb.

150,465,014 bytes in 8,230 files. Espacio con datos.

169,746,432 bytes allocated (11% slack). Espacio alocado.(FRI=11%)

12,111,872 bytes free (7%); 337 dirs. Espacio libre. Carga=93%

4,096 byte minimum allocation. Tamaño del Cluster.

184,528,896 bytes total on: Hard Disk. Tamaño de la partición.

19,281,418 bytes in slack. Desperdicio por FRI.

2345 bytes per file in slack. Desperdicio promedio por FRI.

Calculamos cuanto ocuparía grabar los mismos archivos en un disco con clusters de 2048 bytes, el resultado fue:

159,385,600 bytes.

Ocuparía: 10,360,832 Mb Menos.

Ejemplo Numero 2:

Un viejo disco Seagate de 200Mb sin particionar.

176,876,642 bytes in 6,778 files.

191,635,456 bytes allocated (8% slack).

20,094,976 bytes free (9%); 257 dirs.

4,096 byte minimum allocation.

213,454,848 bytes total on: Hard Disk.

14,758,814 bytes in slack.

2178 bytes per file in slack.

Ejemplo Numero 3:

Un viejo disco Quantum de 105Mb sin particionar.

93,745,385 bytes in 2,949 files.

96,874,496 bytes allocated (3% slack).

7,444,480 bytes free (7%); 109 dirs.

2,048 byte minimum allocation.

104,773,632 bytes total on: Hard Disk.

5,129,111 bytes in slack.

1739 bytes per file in slack.

Lun, 09/10/2006 - 15:25