Thursday, February 09, 2006

Prevención de bloqueos mutuos

Para que no ocurran los bloqueos mutuos basta con eliminar cualquiera de las cuatro condiciones necesarias para que éste ocurra. El único problema es que no todas se pueden eliminar ya que son necesarias. La exclusión mutua se necesita porque hay recursos como la memoria y el CPU que deben quedar asignados solo a un usuario a la vez. Una forma de eliminarla es el spool en dispositivos de E/S, pero el spool también puede producir un bloqueo cuando se llena.

La retención de recursos se podría eliminar haciendo que los trabajos soliciten todos los dispositivos que van a usar cuando son aceptados, pero esto limitaría la multiprogramación y muchos dispositivos quedarían ociosos.

La no apropiatividad se puede eliminar al desasignar recursos de los trabajos. Esto se realiza en el round robin y cuando se intercambia una página a un almacenamiento secundario, pero muchas veces el retomar el trabajo toma muchas molestias y requiere tiempo.
Por último la espera circular se puede impedir al hacer que el sistema operativo monitoree los procesos en busca de la formación de estos círculos. Havender propuso en 1968 una solución que proponía la numeración de los recursos en orden ascendente. Cada trabajo debía solicitar sus recursos en el mismo orden de la numeración antes de ser aceptado. En ese mismo orden el sistema operativo le asignaría sus recursos y monitorearía cualquier formación de un círculo en los números. El problema sería en que orden numerar los dispositivos para una mejor utilización y también que los archivos y bases de datos no se pueden numerar conforme a importancia.

No comments: