Sistemas operativos modernos
re todos los recursos de inmediato y ios retiene hasta que termina el trabajo. Aunque este mé todo impone una carga al programador y desperdicia recursos, sí evita bloqueos irreversibles. Una forma un poco diferente de romper la condición de retener y esperar es exigir a un proceso que solicita un recurso que primero libere en forma temporal todos los que tiene. Lue go se le puede permitir que obtenga todo lo que necesita en una sola operación. 3.6.3 Cómo atacar la condición de no expropiación Atacar la tercera condición (no expropiación) es aún menos prometedor que atacar la segunda. Si se ha asignado la impresora a un proceso y éste está imprimiendo su salida, arrebatarle la impresora porque no está disponible un graficador que se requiere es difícil, en el mejor de los casos, e imposible, en el peor de ellos. 3.6.4 Cómo atacar la condición de espera circular Sólo nos queda una condición. Hay varias formas de eliminar la espera circular. Una sería sim plemente tener una regla en el sentido de que cualquier proceso tiene derecho tan sólo a un re curso en todo momento. Si necesita un segundo recurso, deberá liberar el primero. En el caso de un archivo que necesita copiar un archivo enorme de una cinta a una impresora, tal restric ción es inaceptable. Otra forma de evitar la espera circular es con una numeración global de todos los recursos, como la que se muestra en la figura 3-13a. Ahora la regla es ésta: los procesos pueden solici tar recursos cuando los necesiten, pero todas las solicitudes deben efectuarse en orden numé rico. Un proceso puede solicitar primero una impresora y luego una unidad de cinta, pero no puede solicitar primero un graficador y luego una impresora. 1. Impresora 2. Escáner 3. Graficador 4. Unidad de cinta 5. Unidad de CD-ROM (a) (b) Figura 3-13. a) Recursos ordenados en forma numérica, b) Grafo de recursos. Con esta regla, el grafo de asignación de recursos nunca puede tener ciclos. Veamos por qué se cumple esto en el caso de los dos procesos de la figura 3-13b. Un bloqueo irreversible sólo puede ocurrir si A solicita el recurso j y B solicita el recurso i. Suponiendo que i y j son recursos distintos, tendrán números distintos. Si i >j, no se permitirá à A solicitar 7 porque es un número menor que lo que ya posee. Si i <j, no se permitirá a B solicitar i porque ese número es menor que el de un recurso que ya posee. De cualquier manera, no puede ocurrir un bloqueo irreversible.
RkJQdWJsaXNoZXIy MjI4NDcx