El documento describe varios casos de bloqueos mutuos que pueden ocurrir en sistemas operativos. Estos incluyen bloqueos cuando procesos compiten por acceso a archivos, bases de datos, dispositivos como impresoras, y recursos compartidos como discos. También se presentan ejemplos de bloqueos en redes donde los nodos dependen de la comunicación entre sí. Los sistemas operativos deben implementar mecanismos para prevenir bloqueos permanentes y asegurar que los procesos puedan completarse.
11. Compras P1 - Ventas P2 Ambos activos al mismo tiempo Para actualizar las transacciones cotidianas c/u necesita tener acceso a 2 archivos Inventarios F1 Proveedores F2 Un día el sistema se bloquea mutuamente, cuando ocurre lo siguiente : 1.- Compras (P1) accede al archivo de proveedores (F2), para colocar un pedido para mas madera 2.- Ventas accede al archivo de inventarios (F1)para reservar los componentes que Se requerirán a fin de construir la casa-habitación pedida ese día 3.- Compras (P1) no libera el archivo de proveedores (F2), pero solicita el archivo de Inventarios (F1) para comprobar la cantidad de madera a mano, antes de colocar su perdido por mas, pero P1 esta bloqueado por que P2 tiene a F1 4.- Mientras tanto (P2) no libera el archivo de inventarios (F1), pero solicita el archivo de proveedores (F1) para verificar el programa de un subcontratista. Al llegar a este punto P2 también queda bloqueado por que F2 esta es manos de F1. CASO 1 .- Bloqueo mutuo en solicitudes de archivo
12.
13. CASO2 .- Bloqueo mutuo en Bases de Datos Jones GPA=2.5 Direcc: Av. Sn Felipe Jones GPA=2.5 Direcc: Av.Salaverry P2 Proceso de actualización De Dirección lee Dato P1 Proceso de actualización De Grado lee Dato Jones GPA=3.0 Direcc: Av. Sn Felipe Jones GPA=2.5 Direcc: Av.Salaverry Jones GPA=3.0 Direcc: Av. Sn Felipe Área de Trabajo P1 sobreescribe el Registro a la base De datos con la nueva Dirección Registro Final P1 sobreescribe el Registro a la base de Datos con el nuevo grado Grado actualizado Caso 2: Si P1 termina Primero ganará La carrera , pero Su versión del Registro pronto Será sobreescrita Por P2. Sea cual sea el proceso ganador. La versión final de los Datos sera incorrecta Dirección Actualizada Bloqueos
14.
15.
16. CASO 5 .- Bloqueos mutuos en operaciones periféricas simultaneas en línea Digamos que falta una hora antes de que se necesite el gran proyecto para la clase de Computación. Veintiséis programadores acelerados, teclean sus cambios finales Y, con unos cuantos minutos disponibles emiten unos comandos de impresión El manejador de spool recibe las paginas de cada estudiante una por una, pero le llegan por separado varias paginas uno, dos, etc.. La impresora esta listo para imprimir el primer programa completo que obtiene, pero conforme el manejador de Spool ( esto es el operador periférico simultaneo en línea ) recorre sus archivos, Obtiene la primera pagina de muchos programa, pero no tiene la ultima de ninguno. Por desgracia el spool esta lleno de salidas incompletadas, por lo que no puede aceptar otra página; pero ninguno de los trabajos se puede imprimir (lo que liberaria Su espacio en disco), por que la impresora solo acepta archivos de salidas completos. Una situación desafortunada. Este escenario no se limita a impresoras. Cualquier parte del sistema que se base en spooling, como el que maneja los trabajos de entrada o transfiere archivos en una red, es vulnerable ante un bloqueo mutuo
17. CASO 6 .-Bloqueos al compartir Discos 1.-El proceso P1 desea mostrar un pago, por lo que un comando para leer el saldo, que esta almacenado en el cilindro 20 de un paquete de discos. 2.-Mientras la unidad de control esta moviendo el brazo hacia el cilindro 20, P1 se pone en espera y el canal de entradas/salidas queda libre para procesar la siguiente solicitud de entrada/salida 3.-P2 obtiene el control de entrada/salida y emite el comando para emitir el pago de otra persona, en un registro almacenado en el cilindro 310. “Si el comando no esta bloqueado” P2 quedara en espera, mientras la unidad de control mueve el brazo hasta el cilindro 310 Bloqueos
18. 4.-Puesto que P2 “esta en espera” el canal esta libre y P1 puede capturarlo de nuevo, lo que vuelve a confirmar su comando de”leer del cilindro 20”. 5.- dado que el ultimo comando de P2 ha obligado al mecanismo del brazo hasta el cilindro 310, la unidad de control de disco empieza a reubicarlo para el cilindro 20 a fin de satisfacer a P1. el canal de entradas/salidas, será liberado, por que P1 ha quedado de nuevo en espera, por lo que P2 puede de nuevo capturarlo. Este emite un comando write y descubre que hay necesidad de reubicar el mecanismo del brazo
19. CASO 6 .-Bloqueos al compartir Discos Cilindro 310 Cilindro 20 Unidad de control de disco Canal de E / S P1 P2 Lee Registros del Cilindro 20 Escribe a un archivo colocado en el Cilindro 310 Disco Caso 6 . Dos procesos Esperan una solicitud de E/S para llenarse: Uno en el cilindro 20 y el otro en el cilindro 310. Ninguna de estas puede satisfacerse, por que el dispositivo pone cada solicitud en espera cuando intenta llenar a la otra
20. CASO 7 .-Bloqueos Mutuos en una Red Un centro de procesamiento de palabras de tamaño medio tiene siete computadoras en red, c/u con dos nodos diferentes. C1 recibe mensaje de los nodos C2,C6 y C7 y solo envía mensajes a uno : C2 C2 recibe los mensajes de los nodos C1,C3 y C4 y nada mas manda mensajes a C1 y c3. La dirección de las flechas de la figura señala el flujo de los mensajes. Los mensajes recibidos por c1 desde C6 y C7 y destinados a C2 se almacenan en una cola de salida. Los mensajes recibido por C2 de C3 y de C4 destinados a C1 se almacenan en una cola de salida. Conforme se incrementa el trafico, aumenta la longitud de cada cola de salida, hasta que se llena el espacio disponible para las colas. En este punto C1 ya no puede aceptar mas mensajes (de C2 o de cualquier otra computadora) por que no existe mas espacio disponible para almacenarlas. Por la misma razón, C2 no puedec aceptar mas mensajes de C1 para ninguna otra computadora, ni siquiera una solicitud para enviar. La trayectoria de comunicación entre C1 y C2 se bloquea y en vista de que C1 solo puede recibir mensajes de C6 y C7, estos caminos también se han bloqueado. C1 no puede enviar palabras hasta C2 respecto al problema, por lo que el bloqueo mutuo no se puede resolver sin intervención del exterior Bloqueos
21. CASO 7 .-Bloqueos Mutuos en una Red C6 C7 C3 C5 C4 C2 C1 Caso 7 . Flujo de red Bloqueado totalmente. Cada circulo representa Un nodo, y cada línea, una línea de comunicación. Las flechas Indican la dirección del flujo del trafico Bloqueos
22.
23. Aquí cada proceso está esperando por el otro para liberar uno de los recursos. El recurso retenido no será liberado hasta que el otro proceso usuario libere su recurso. Pero este último proceso usuario no liberará su recurso retenido hasta que el primer proceso usuario libere su recurso retenido. Entonces se produce una espera circular (Ver figura 31). ( Interbloqueo de un recurso simple ) Ejemplo 2
24. Ejemplo 3 ( bloqueo de tráfico ) N S O E Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los que se demanda control; por tanto, si los coches desean atravesar el cruce, las necesidades de recursos son las siguientes: - El coche que va hacia el norte necesita los cuadrantes 1 y 2. - El coche que va hacia el oeste necesita los cuadrantes 2 y 3. - El coche que va hacia el sur necesita los cuadrantes 3 y 4. - El coche que va hacia el este necesita los cuadrantes 4 y 1. Bloqueos
28. Condición de Espera Circular: (o círculo vicioso de espera) : Esto ocurre cuando dos o más procesos forman una cadena de espera que los involucra a todos. Por ejemplo, suponga que el proceso A tiene asignado el recurso 'cinta' y el proceso B tiene asignado el recurso 'disco'. En ese momento al proceso A se le ocurre pedir el recurso 'disco' y al proceso B el recurso 'cinta'. Ahí se forma una espera circular entre esos dos procesos que se puede evitar quitándole a la fuerza un recurso a cualquiera de los dos procesos. (Debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena).
29.
30. El deadlock es una condición que ningún sistema o conjunto de procesos quisiera exhibir, ya que consiste en que se presentan al mismo tiempo cuatro condiciones necesarias Condiciones necesarias para el bloqueo mutuo Exclusión mutua No apropiación Ocupar y esperar Espera circular Simultáneamente Abrazo mortal ( deadlock )
33. No se produce interbloqueo porque habrá un momento en el que acabe P2 porque tiene todo para ejecutarse, y el recurso que ocupa se lo asignará a P1. P4 como también tienen todo para acabar , cuando termine liberará el recurso y se lo asignaremos a P3.
35. Modelado de Bloqueos En la grafica dirigida hay bloqueo mutuo porque todos los procesos esperan un recurso que esta detenido por otro proceso, pero ninguno quedara liberado sin la intervención del operador
44. Los procesos P1, P2 y P3 están en bloqueo mutuo. Consideraciones: * Si un grafo no contiene ciclos no esta en bloqueo mutuo. * Si el grafo esta en bloqueo mutuo entonces existe a lo menos un ciclo en el grafo. * Si existe un ciclo en un grafo, no es condición suficiente para que exista bloqueo mutuo. Reducción de Graficas Reducción de Gráficas
46. Estrateg. Para manejo de Bloqueos Para prevenir que se presente el interbloqueo debemos asegurar que por lo menos una de la condiciones necesarias no se cumpla. Entonces se debe plantear las siguientes políticas, independientes una de otra. Objetivo : conseguir que sea imposible la aparición de situaciones de interbloqueo Exclusión mutua Retención y espera No expropiación Espera circular Impedir que se produzca una de las cuatro condiciones necesarias para el interbloqueo
48. Se plantea cuatro áreas de interés para solucionar el problema del bloqueo mutuo. Estrateg. Para manejo de Bloqueos
49. Exclusión mutua Si no hay asignación exclusiva, no hay bloqueo mutuo. Dado que esta es una condición indispensable para un acceso seguro a recursos no compartibles, ningún sistema real la elimina Estrateg. Para manejo de Bloqueos Prevención – Exclusión Mutua Existen recursos para los que no es posible negar la condición de exclusión mutua. Se la debe de conservar para los recursos no compartibles. Ficheros : permiten múltiples accesos de lectura, pero únicamente un proceso puede escribir a la vez. Es posible eliminar la condición de exclusión mutua en Algunos recursos Impresora Spooler
50.
51.
52. Retención y Espera Cada proceso deberá pedir todos los recursos que necesita al mismo tiempo y no podrá seguir hasta obtenerlos todos. Estrateg. Para manejo de Bloqueos Prevención – Retención y espera
53.
54.
55. B) Los recursos se piden y otorgan escalonadamente y caso de que un proceso realice una petición de un recurso no disponible, deberán liberarse todos los recursos asignados hasta el momento, y pedirlos otra vez, junto con los nuevos. Problemas : Existen recursos que no se pueden devolver, ejemplo una impresora que está imprimiendo, se podrá devolver cuanto termine la impresión. Este método también presenta la posibilidad de aplazamiento indefinido, además de una sobrecarga para el sistema si un proceso solicita y libera recursos repetidamente, pudiendo llegar a degradar el sistema. Estrateg. Para manejo de Bloqueos Prevención – Retención y espera
56. No Apropiación. Si a un proceso le falta algún recurso, deberá liberar los recursos ya asignados. El S.O. está autorizado para quitar un recurso asignado a un proceso para dárselo a otro que lo necesita. Problemas : Los mismo que para a supresión de retención y espera, cuando los recursos se piden y otorgan escalonadamente, pues habrá recursos que no se pueden devolver. Estrateg. Para manejo de Bloqueos Prevención – No apropiación
57. Estrateg. Para manejo de Bloqueos Prevención Espera Circular A los recursos se les asigna un ordenamiento lineal (numeración única ascendente). Los números asignados a los recursos deben reflejar el orden natural en que son solicitados. Si a un proceso se le ha asignado un recurso en lo sucesivo solo podrá pedir los recursos que siguen en el ordenamiento. Prevención – Espera Circular
60. PROBLEMAS: Los recursos deben ser adquiridos en el orden previsto y no en el orden en el que realmente se necesitan. El rendimiento cae por lo mismo de antes, ya que los procesos toman recursos que igual no los utilizan hasta el final y les tienen retenidos. Estrateg. Para manejo de Bloqueos Prevención – Espera Circular Podemos evitar la espera circular si imponemos un orden total a los recursos (o sea, asignamos a cada recurso R un número único F(R) ), y obligamos a los procesos a que soliciten recursos en orden: un proceso no puede solicitar Q y después R si F(Q)>F(R) . Por ejemplo: F(CD-ROM)=1 F(impresora)=2 F(plotter)=3 F(Cinta)=4
61.
62. Estrateg. Para manejo de Bloqueos Evitación Palabras Clave Los métodos de prevención adolecen de que son muy costosos. (bajo uso de los recursos, reducción de la productividad del sistema). Existe al menos una forma de que terminen todos los procesos. No se puede garantizar que los procesos terminen, pues algunos de ellos podría pedir un recurso más que no puede ser satisfecho. Pero este no es un estado de bloqueado, sino que no puede garantizarse que termine
63. Evitación Estrateg. Para manejo de Bloqueos Ejemplos de transición de un estado seguro a uno inseguro.
67. ¿ Cómo detectar un Deadlock ?. Para detectar un deadlock, se puede usar el mismo algoritmo del banquero, que aunque no dice que hay un deadlock, sí dice cuándo se está en estado inseguro que es la antesala del deadlock. Sin embargo, para detectar realmente el deadlock se pueden usar las 'gráficas de recursos' . Como se dijo en punto anteriores en ellas se pueden usar cuadrados para indicar procesos y círculos para los recursos, y flechas para indicar si un recurso ya está asignado a un proceso o si un proceso está esperando un recurso. De esta forma el deadlock es detectado cuando se puede hacer un viaje de ida y vuelta desde un proceso o recurso. Estrateg. Para manejo de Bloqueos Detección
70. En la figura anterior se observa como la gráfica de recursos fue evolucionando hasta que se presentó el deadlock, lo cual significa que se puede viajar por las flechas desde un proceso o recurso hasta regresar al punto de partida. En el deadlock están involucrados los procesos A, B y C. Una vez que un deadlock se detecta, es obvio que el sistema está en problemas y lo único que resta por hacer es una de dos cosas: tener algún mecanismo de suspensión o reanudación que permita copiar todo el contexto de un proceso incluyendo valores de memoria y aspecto de los periféricos que esté usando para reanudarlo otro día, o simplemente eliminar un proceso o arrebatarle el recurso, causando para ese proceso la pérdida de datos y tiempo. Evento 1 : Proceso A pide recurso 1 y se le asigna . Evento 2 : Proceso A termina su quantum. Evento 3 : Proceso B pide recurso 2 y se le asigna. Evento 4 : Proceso B termina su quantum. Evento 5 : Proceso C pide recurso 3 y se le asigna. Evento 6 : Proceso C pide recurso 1 y como lo está ocupando el proceso A, espera. Evento 7 : Proceso B pide recurso 3 y se bloquea porque lo ocupa el proceso C. E vento 8 : Proceso A pide recurso 2 y se bloquea porque lo ocupa el proceso B. Estrateg. Para manejo de Bloqueos Detección
81. Si el banquero tuviese fondos suficientes para prestar el máximo a cada cliente, es decir, tanto como la suma de los máximos, no habría problemas. Sin embargo, no ocurre así: los recursos del banquero están limitados, por lo que si todos piden el máximo, no podrá satisfacerlos simultáneamente. Por tanto, el banquero debe gestionar sus fondos de manera que todos los clientes puedan llegar al máximo, pero uno tras otro, sin que se produzca interbloqueo. Partiendo de una situación inicial, se dice que un estado es seguro si, partiendo de él, existe alguna secuencia de estados en la que todos los procesos alcancen el número máximo de recursos en algún momento, De lo contrario, el estado es inseguro . Algoritmo del banquero
82.
83. 1) Estructuras de datos : que representan internamente el grafo general de recursos. A signados : ARRAY 1..NumProcesos, 1..NumTipoRecursos OF INTEGER. Indica cuantos recursos de cada tipo tiene asignados cada proceso. Inicialmente está a 0. Reclamables : ARRAY 1..NumProcesos, 1..NumTipoRecursos OF INTEGER. Indica cuantos recursos de cada tipo pueden aún solicitar cada proceso. Inicialmente contiene el valor de necesidades máximas de cada proceso. Conforme se vayan asignando recursos los componentes del array se irán decrementando. Disponibles : ARRAY 1..NumTipoRecursos OF INTEGER. Indica el número de recursos de cada tipo que aún no han sido asignados. Inicialmente contiene el valor de recursos en el sistema y conforme se otorguen y se devuelvan se irá decrementando o incrementando ese valor. EJEMPLO: IMPLEMENTACIÓN DEL ALGORITMO.
84.
85.
86. C1 C2 C3 0 2,000 4,000 4,000 5,000 8,000 4,000 3,000 4,000 Cliente Cantidad de Préstamo Crédito máximo Crédito restante C1 C2 C3 2,000 3,000 4,000 4,000 5,000 8,000 2,000 2,000 4,000 Cliente Cantidad de Préstamo Crédito máximo Crédito restante El banco arranco con 10000 dólares y después de estos prestamos, tiene un capital restante de 4000. Por lo tanto, se encuentra en un “estado seguro” El banco ahora solo tiene capital restante de 1000 dólares después de estos prestamos, de modo que esta en un “estado inseguro” Total prestado : 6,000 Fondo Total de capital :10,000 Total prestado : 9,000 Fondo Total de capital :10,000
91. Inanición Para los dos casos de intento de recuperación del Interbloqueo (terminación de procesos o expropiación de recursos) hay que tener cuidado de no provocar La inanición de procesos. Que es la inanición ? Supón tres procesos que acceden periodicamente a un recurso. Considera P1 posee el recurso y que P2 y P3 están Esperando. Cuando P1 haya ejecutado su sección crítica, P1 Solicita acceso de nuevo y así sucesivamente, se puede llegar a Una situación en la que P2 nunca accede al recurso
92. El problema de los filósofos cenando es un problema clásico de las ciencias de la computación propuesto por Edsger Dijkstra (1965 ) para representar el problema de la sincronización de procesos en un sistema operativo. Cabe aclarar que la interpretación está basada en pensadores chinos, quienes comían con dos palillos, donde es más lógico que se necesite el del comensal que se siente al lado para poder comer t1 t2 t3 t4 t5