4.6 Algoritmos De Programacion de Brazos De Disco

En la mayoría de los discos, el tiempo de búsqueda supera al de retraso rotacional y al de transferencia  debido a ello, la reducción del tiempo promedio de búsqueda puede mejorar en gran medida el rendimiento del sistema.

Si el manejador del disco utiliza el algoritmo primero en llegar primero en ser atendido (FCFS), poco se puede hacer para mejorar el tiempo de búsqueda.

Es posible que mientras el brazo realiza una búsqueda para una solicitud, otros procesos generen otras solicitudes.

Muchos manejadores tienen una tabla:

  • El índice es el número de cilindro.
  • Incluye las solicitudes pendientes para cada cilindro enlazadas entre sí en una lista ligada.
  • Cuando concluye una búsqueda, el manejador del disco tiene la opción de elegir la siguiente solicitud a dar paso:
    • Se atiende primero la solicitud más cercana, para minimizar el tiempo de búsqueda.
    • Este algoritmo se denomina primero la búsqueda más corta (SSF: shor-test seek first).
    • Reduce a la mitad el número de movimientos del brazo en comparación con FCFS.

Ej. de SSF:

  • Consideramos un disco de 40 cilindros.
  • Se presenta una solicitud de lectura de un bloque en el cilindro 11.
  • Durante la búsqueda, llegan solicitudes para los cilindros 1, 36, 16, 34, 9 y 12, en ese orden.
  • La secuencia de búsqueda SSF será: 12, 9, 16, 1, 34, 36.
  • Habrá un número de movimientos del brazo para un total de:
    • 111 cilindros según FCFS.
    • 61 cilindros según SSF.

El algoritmo SSF tiene el siguiente problema:

  • El ingreso de nuevas solicitudes puede demorar la atención de las más antiguas.
  • Con un disco muy cargado, el brazo tenderá a permanecer a la mitad del disco la mayoría del tiempo, como consecuencia de ello las solicitudes lejanas a la mitad del disco tendrán un mal servicio.
  • Entran en conflicto los objetivos de:
    • Tiempo mínimo de respuesta.
    • Justicia en la atención.

La solución a este problema la brinda el algoritmo del elevador (por su analogía con el ascensor o elevador):

  • Se mantiene el movimiento del brazo en la misma dirección, hasta que no tiene más solicitudes pendientes en esa dirección; entonces cambia de dirección.
  • El software debe conservar el bit de dirección actual.

Ej. del algoritmo del elevador para el caso anterior, con el valor inicial arriba del bit de dirección:

  • El orden de servicio a los cilindros es: 12, 16, 34, 36, 9 y 1.
  • El número de movimientos del brazo corresponde a 60 cilindros.

El algoritmo del elevador:

  • Ocasionalmente es mejor que el algoritmo SSF.
  • Generalmente es peor que SSF.
  • Dada cualquier colección de solicitudes, la cuota máxima del total de movimientos está fija, siendo el doble del número de cilindros.

Una variante consiste en rastrear siempre en la misma dirección:

  • Luego de servir al cilindro con el número mayor:
    • El brazo pasa al cilindro de número menor con una solicitud pendiente.
    • Continúa su movimiento hacia arriba.

Algunos controladores de disco permiten que el software inspeccione el número del sector activo debajo del cabezal:

  • Si dos o más solicitudes para el mismo cilindro están pendientes:
    • El manejador puede enviar una solicitud para el sector que pasará debajo del cabezal.
    • Se pueden hacer solicitudes consecutivas de distintas pistas de un mismo cilindro, sin generar un movimiento del brazo.

Cuando existen varias unidades, se debe tener una tabla de solicitudes pendientes para cada unidad.

Si una unidad está inactiva, deberá buscarse el cilindro siguiente necesario, si el controlador permite búsquedas traslapadas.

Cuando termina la transferencia actual se verifica si las unidades están en la posición del cilindro correcto:

  • Si una o más unidades lo están, se puede iniciar la siguiente transferencia en una unidad ya posicionada.
  • Si ninguno de los brazos está posicionado, el manejador:
    • Debe realizar una nueva búsqueda en la unidad que terminó la transferencia.
    • Debe esperar hasta la siguiente interrupción para ver cuál brazo se posiciona primero.

Generalmente, las mejoras tecnológicas de los discos:

  • Acortan los tiempos de búsqueda (seek).
  • No acortan los tiempos de demora rotacional (search).
  • En algunos discos, el tiempo promedio de búsqueda ya es menor que el retraso rotacional.
  • El factor dominante será el retraso rotacional, por lo tanto, los algoritmos que optimizan los tiempos de búsqueda (como el algoritmo del elevador) perderán importancia frente a los algoritmos que optimicen el retraso rotacional.

Una tecnología importante es la que permite el trabajo conjunto de varios discos.

Una configuración interesante es la de treinta y ocho (38) unidades ejecutándose en paralelo.

Cuando se realiza una operación de lectura:

  • Ingresan a la cpu 38 bit a la vez, uno por cada unidad.
  • Los 38 bits conforman una palabra de 32 bits junto con 6 bits para verificación.
  • Los bits 1, 2, 4, 8, 16 y 32 se utilizan como bits de paridad.
  • La palabra de 38 bits se puede codificar mediante el código Hamming, que es un código corrector de errores.
  • Si una unidad sale de servicio:
    • Se pierde un bit de cada palabra.
    • El sistema puede continuar trabajando; se debe a que los códigos Hamming se pueden recuperar de un bit perdido.

Este diseño se conoce como RAID; siglas en inglés de “arreglo redundante de discos no costosos”.