Interbloqueo e Inanición Tarea #2 Interbloqueo e Inanición. 1. Enumere Ejemplos de Recursos Consumibles y Reutilizables. Un recurso reutilizable es aquél que puede ser usado con seguridad por un proceso y no se agota con el uso. Ejemplos de estos recursos tenemos: los procesadores, canales de E/S, memoria principal y secundaria, dispositivos y estructuras de datos tales como archivos, bases de datos y semáforos. Un recurso consumible es aquél que puede ser creado (producido) y destruido (consumido). Se pueden mencionar ejemplos de estos recursos: interrupciones, señales, mensajes e información en buffers de E/S. 2. Cuáles son las tres condiciones que deben darse para que sea posible el interbloqueo? En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo. • Exclusión Mutua. Sólo un proceso puede usar un recurso a la vez. • Retención y Espera. Un proceso puede retener unos recursos asignados mientras espera que se le asignen otros. • No apropiación. Ningún proceso puede ser forzado a abandonar un recurso que retenga. 3. Cuáles son las cuatro condiciones que dan lugar al interbloqueo? • Exclusión Mutua. Sólo un proceso puede usar un recurso a la vez. • Retención y Espera. Un proceso puede retener unos recursos asignados mientras espera que se le asignen otros. • No apropiación. Ningún proceso puede ser forzado a abandonar un recurso que retenga. • Círculo vicioso de espera. Existe una cadena cerrada de procesos, cada uno de los cuales retiene, al menos, un recurso que necesita el siguiente proceso de la cadena. 1 Interbloqueo e Inanición Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. La cuarta condición es, en realidad, una consecuencia potencial de las tres primeras. Es decir, dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un círculo vicioso de espera irresoluble. 4. Cómo se puede prevenir la condición de retener y esperar? La condición de retención y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesitan a un mismo tiempo y bloqueado el proceso hasta que todos los recursos puedan concederse simultáneamente. Esta solución resulta ineficiente por dos factores. En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que se concedan todas sus solicitudes de recursos, cuando de hecho podría haber avanzado con sólo algunos de los recursos. En segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos. 5. Enumere dos formas en las que se puede prevenir la condición de no apropiación? • Si un proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso deberá liberar sus recursos anteriores y solicitarlos de nuevo, cuando sea necesario, junto con el recurso adicional. • Si un proceso solicita un recurso que actualmente está retenido por otro proceso, el sistema operativo puede expulsar al segundo proceso y exigirle que libere sus recursos. 6. Como se puede prevenir la condición de circulo vicioso de espera? Esto se puede prevenir definiendo una ordenación lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces sólo podrá realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación. 2 Interbloqueo e Inanición 7. Cuál es la diferencia entre predicción, detención y prevención del interbloqueo? En la prevención del interbloqueo se obligaba a las solicitudes de recursos a impedir que sucediera, por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace directamente impidiendo la aparición de una de las tres condiciones necesarias o directamente, impidiendo la aparición de un circulo vicioso de espera. Por otro lado, la predicción del interbloqueo, se puede alcanzar las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La predicción, por lo tanto, permite más concurrencia que la prevención. Las estrategias de prevención del interbloqueo son muy conservadoras; solucionan el problema del interbloqueo limitando el acceso a los recursos e imponiendo restricciones a los procesos. En el lado opuesto, las estrategias de detección del interbloqueo no limitan el acceso a los recursos ni restringen las acciones de los procesos. Problemas. 1. Se afirma que el interbloqueo no puede darse en la situación representada en la figura 6.3 (libro de Stallings). Justifique esta afirmación. En dicha figura no existe el interbloqueo por la sencilla razón que ambos procesos no están haciendo uso de un mismo recurso, o mejor dicho no hacen petición de un mismo recurso. Los procesos se ejecutan de tal forma que los recursos a utilizar están siendo bien controlados por el SO. 2. Considérese la siguiente instantánea de un sistema. No hay solicitudes pendientes en la cola. 3 Interbloqueo e Inanición Procesos p1 p2 p3 p4 p5 Asignación Actual R1 r2 0 2 0 2 0 Disponibles r1 R2 2 r3 0 0 0 3 3 r3 1 r4 1 0 3 5 3 2 0 4 4 2 Demanda Máxima r1 r2 0 2 6 4 0 r3 0 7 6 3 5 r4 1 5 5 5 5 2 0 6 6 2 Demanda Restante r1 r2 0 2 2 2 0 r3 0 1 1 3 3 r4 1 0 3 5 3 r4 0 0 a. El Sistema según el esquema dado se encuentra en un estado seguro, ya que da la estabilidad de poder terminar los procesos en ejecución. b. El Sistema no se encuentra bloqueado, ya que la asignación actual no consume el total de la cantidad de cada recurso existente. c. Los procesos que pueden llegar a estar interbloqueados son: P2, P3, P4; ya que hacen petición de la totalidad de los recursos disponibles. d. Si a P3 le llegase una solicitud de (0, 1, 0, 0) no podría concederse inmediatamente, ya que incurrirá en un estado de interbloqueo. 4 2 0 4 4 2 Interbloqueo e Inanición 3. Aplíquese el algoritmo de detección del interbloqueo a los siguientes datos y muestre los resultados. Disponible = ( 2 1 0 0 ) Solicitud = Asignación = 2 0 0 1 1 0 1 0 2 1 0 0 0 0 1 0 2 0 0 1 0 1 2 0 Se marca P1 ya que es el que tiene menos asignaciones; se procede a trabajar con P3 ya que sus asignaciones son menores que el vector de recursos disponibles. La asignación quedaría de la siguiente forma W = ( 2 2 2 0 ) 4. Evaluar la utilidad en la vida real del algoritmo del banquero. Los clientes son los procesos, las unidades de crédito son los recursos del sistema y el banquero es el S. O. El banquero sabe que no todos los clientes necesitaran su crédito máximo otorgado en forma inmediata, por ello reserva menos unidades (recursos) de las totales necesarias para dar servicio a los clientes. En la vida real puede ser aplicado en los lugares de servicio para asegurar los recursos existentes a todos los clientes o usuarios que hacen solicitud del mismo. Es una forma de manejar organizadamente dichos recursos. 5. Considérese las siguientes formas de tratar el interbloqueo: (1) Algoritmo del Banquero, (2) Detección del Interbloqueo y eliminación del hilo, liberando todos sus recursos, (3) reserva de todos los recursos por anticipado, (4) reinicio de hilo y liberación de todos sus recursos si un hilo necesita 5 Interbloqueo e Inanición esperar, (5) ordenación de recursos y (6) detección del interbloqueo y retroceso de la acciones del hilo. a) Un criterio que se utiliza en la evaluación de las diferentes soluciones al interbloqueo es cuál permite el mayor grado de concurrencia. En otras palabras, ¿cual permite que progresen más hilos sin esperar a que no haya interbloqueo? Ordene en un rango de 1 a 6 cada uno de los anteriores modos de gestión de interbloqueo, donde 1 permite el mayor grado de concurrencia. Comente su ordenación. El orden propuesto para esto es el siguiente: - Detección del Interbloqueo y eliminación del hilo, eliminando todos sus recursos. - Detección del interbloqueo y retroceso de las acciones del hilo. - Reinicio de hilo y liberación de todos los recursos si un hilo necesita esperar. - Reserva de todos los recursos por anticipado. - Ordenación de Recursos. - Algoritmo del Banquero. Este orden se da, ya que con las opciones descritas podemos trabajar con más procesos concurrentes. b) Otro criterio es la eficiencia; en otras palabras, cuál produce menor sobrecarga de procesador? Ordene en un rango de 1 a 6, donde 1 es el más eficiente suponiendo que el interbloqueo se produce con muy poca frecuencia. Comente su ordenación. Cambiaria el orden si el interbloqueo se produjera con frecuencia? Para tener un mejor manejo del procesador se tendrá lo siguiente; - Algoritmo del Banquero. - Reserva de todos los recursos por anticipado. - Detección del interbloqueo y eliminación, del hilo, liberando todo sus recursos. - Ordenación de recursos. - Reinicio de Hilo y liberación de todos sus recursos si un hilo necesita esperar. 6 Interbloqueo e Inanición - Detección del interbloqueo y retroceso de las acciones del hilo. De esta forma podemos hacer un mejor uso del procesador. 7