Sistemas operativos modernos

La estrategia que suele utilizarse se denomina bloqueos de dos fases. En la primera fase, el proceso trata de bloquear todos los registros que necesita, uno por uno. Si lo logra, inicia la segunda fase, donde realiza sus actualizaciones y desbloquea. En la primera fase no se efectúa trabajo real. Si durante la primera fase se necesita un registro que ya está bloqueado, el proceso simple­ mente desbloquea todos sus registros y reinicia la primera fase. En cierto sentido, este enfoque es similar a solicitar con antelación todos los recursos necesarios o, por lo menos, antes de que se haga algo irreversible. En algunas versiones de los bloqueos de dos fases no se efectúa libe­ ración y reinicio si se encuentra un bloqueo durante la primera fase. En esas versiones sí pue­ den haber bloqueos irreversibles. Sin embargo, la estrategia no tiene aplicación general. Por ejemplo, en los sistemas de tiempo real y de control de procesos, no es aceptable dar por terminado un proceso a la mitad y volver a comenzar, tan sólo porque no está disponible un recurso. Tampoco es aceptable vol­ ver a comenzar si el proceso ya leyó o escribió mensajes por la red, actualizó archivos o hizo cualquier otra cosa que no pueda repetirse sin peligro. El algoritmo sólo funciona en situacio­ nes en las que el programador ha organizado con mucho cuidado las cosas, de modo que pue­ da detenerse el programa en cualquier punto durante la primera fase y luego reiniciarse. Muchas aplicaciones no pueden estructurarse así. 3.7.2 Bloqueos irreversibles que no son por recursos Hasta aquí nos hemos concentrado en los bloqueos irreversibles por recursos: un proceso quie­ re algo que está en manos de otro y se ve obligado a esperar hasta que el primero lo libere. No obstante, también pueden presentarse bloqueos irreversibles en otras situaciones, incluso algu­ nas en que no intervienen recursos. Por ejemplo, puede suceder que dos procesos se bloqueen mutuamente esperando que el otro haga algo. Esto sucede a menudo con los semáforos. En el capítulo 2 vimos ejemplos en los que un proceso tenía que ejecutar down en dos semáforos, por lo regular mutex y otro. Si esto no se hace en el orden correcto, puede haber un bloqueo irreversible. 3.7.3 Inanición Un problema íntimamente relacionado con los bloqueos irreversibles es la inanición. En un sistema dinámico se presentan en forma continua solicitudes de recursos. Se necesita alguna política para decidir quién recibe qué recurso y cuándo. Esta política, aunque al parecer es ra­ zonable, puede hacer que algunos procesos nunca sean atendidos, aunque no hayan caído en un bloqueo irreversible. Por ejemplo, consideremos la asignación de la impresora. Imaginemos que el sistema uti­ liza algún tipo de algoritmo para cerciorarse de que la asignación de la impresora no conduz­ ca a un bloqueo irreversible. Ahora supongamos que de repente varios procesos quieren la impresora. ¿A cuál se le debe conceder?

RkJQdWJsaXNoZXIy MjI4NDcx