Sistemas operativos modernos

ü 6 ® cP' 0 -' E = ( 4 2 3 1) 6 ® A ^ A = ( 2 1 O 0) Matriz de asignación actual C = Matriz de solicitudes 0 0 0 2 0 0 1 2 0 0 1 R = 1 0 0 0 2 0 2 0 0 Figura 3-7. Ejemplo del algoritnno para detectar bloqueos irreversibles. Ahora puede ejecutarse el proceso restante. No hay bloqueo irreversible en el sistema. Ahora consideremos una variación menor de la situación de la figura 3-7. Supongamos que el proceso 2 necesita una unidad de CD-ROM además de las dos unidades de cinta y el grafi- cador. Ninguna de las solicitudes puede satisfacerse, por lo que todo el sistema cae en un blo­ queo irreversible. Ahora que sabemos cómo detectar bloqueos irreversibles, surge la pregunta de cuándo de­ bemos buscarlos. Una posibilidad es hacerlo cada vez que se solicita un recurso. Esto siempre detectará todos los bloqueos irreversibles lo más temprano posible, pero podría ser costoso en tiempo de CPU. Una alternativa sería hacer una verificación cada k minutos, o tal vez, sólo cuando el grado de utilización de la CPU esté por debajo de cierto umbral. Conviene conside­ rar la utilización de la CPU porque si muchos procesos han caído en un bloqueo irreversible, habrá pocos procesos ejecutables y estará relativamente inactiva. 3.4.3 Cómo recuperarse de un bloqueo irreversible Supongamos que nuestro algoritmo para detectar bloqueos irreversibles logró detectar uno. ¿Ahora qué? Necesitamos un mecanismo de recuperación que permita poner en marcha otra vez el sistema. En esta sección trataremos diversas formas de recuperarse de un bloqueo irrever­ sible, aunque ninguna de ellas es muy atractiva que digamos. Recuperación mediante expropiación En algunos casos sería posible arrebatarle de manera temporal un recurso a su actual poseedor y dárselo a otro proceso. En muchos casos podría requerirse una intervención manual, sobre todo en los sistemas operativos de procesamiento por lotes que se ejecutan en mainframes.

RkJQdWJsaXNoZXIy MjI4NDcx