TEMA 4: ASIGNACIÓN DE RECURSOS 1. Introducción Por las situaciones ya vistas en la ejecución concurrente de procesos, es necesario bloquear procesos. En concreto, en el acceso a recursos no compartibles por parte de varios procesos se debe utilizar el bloqueo: 1) SOLICITAR RECURSO 2) UTILIZAR RECURSO 3) LIBERAR RECURSO 2. Interbloqueos Situación que se produce cuando ningún proceso puede continuar su ejecución ni liberar recursos. 2.1 Modelo de interbloqueo Holt indicó una forma de modelar la asignación de recursos mediante gráficas dirigidas (Gráficas de recursos). A S R B PROCESO RECURSO RECURSO S SOLICITADO RECURSO R ASIGNADO POR EL PROCESO B (BLOQUEADO AL PROCESO A EN ESPERA DEL MISMO) Situación de interbloqueo: D T U C Ejemplo de aplicación de la gráfica de recursos (ver transparencia anexa). 2.2. Estrategias para enfrentarse a los interbloqueos • Ignorar el problema (algoritmo del avestruz: debido a que la ocurrencia de un bloqueo es ocasional, no se plantea ninguna solución al problema). • Detección y recuperación de interbloqueos: se basa en detectar cuando ocurre un interbloqueo y después realizar una acción para recuperar la situación. Detección: Se representa la gráfica de recursos ∃ ciclo - Interbloqueo no ∃ ciclo - No interbloqueo Recuperación: • Mediante apropiación: Consiste en arrebatarle temporalmente un recurso a un proceso y, posteriormente, reasignárselo. Problemas: Esta acción depende de la naturaleza del recurso, la elección del proceso a suspender depende de los recursos y la recuperación es muy difícil. • Mediante rollback: Se basa en la verificación periódica de los procesos (recursos asignados a cada uno). Cuando se alcanza una situación de interbloqueo se vuelve a una configuración anterior, y se evita la asignación del mismo recurso al mismo proceso. • Mediante eliminación de procesos: Se basa en eliminar un proceso conflictivo (bien del ciclo o bien que posea recursos necesarios para otro proceso). Problema: La eliminación de un proceso a mitad de su ejecución para su posterior ejecución completa, puede conducir a resultados incorrectos (ej. un proceso que incrementa en 1 el valor de un campo de un registro de una base de datos). • Evitar los interbloqueos: Se basa en asignar los recursos de forma cuidadosa. Los algoritmos que evitan los interbloqueos se basan en el concepto de estado seguro. Trayectorias de recursos: Muestran de forma gráfica la seguridad de los estados en la ejecución concurrente de procesos. Ejemplo: 2 procesos y 2 recursos. B u I m p r e s o r a I8 P l o t t e r Región Segura I7 Región Inalcanzable Región Segura I6 Región Segura Región Insegura I5 t r p Región Segura s q I1 Región Segura I2 I3 A I4 Impresora Plotter Definición de estado seguro: Un estado es seguro si no está bloqueado y existe una forma de satisfacer todas las solicitudes pendientes, mediante la ejecución de los procesos en cierto orden. Ejemplos para 1 tipo de recurso: • Estado seguro: Asig Máx A B C 3 2 Asig Máx 9 4 A B 2 7 Libres : 3 C 3 4 Asig Máx 9 4 A B 2 7 Libres : 1 C 3 0 Asig Máx 9 - A B 2 7 Libres : 5 C 3 0 Asig Máx 9 - A B 7 7 Libres : 0 C 3 0 9 - 0 Libres : 7 • Estado inseguro: Asig Máx A B C 3 2 Asig Máx 9 4 A B 2 7 Libres : 3 C 4 2 Asig Máx 9 4 A B 2 7 Libres : 2 C 4 4 Asig Máx 9 4 A B 2 7 Libres : 0 C 4 0 Ningún proceso puede avanzar su ejecución hasta terminar, a no ser que alguno libere 9 - 2 7 Libres : 4 Un estado inseguro no es estado de interbloqueo, pero puede conducir a éste. Diferencia entre estado seguro e inseguro: • A partir de un estado seguro, el sistema puede garantizar la conclusión de todos los procesos. • A partir de un estado inseguro, no se puede garantizar. Algoritmo del banquero: El banquero tiene créditos disponibles y los reparte entre sus clientes de forma que siempre pueda satisfacer todos los créditos de, al menos, uno de ellos. o Para un tipo de recurso: Asig Máx A 0 6 B 0 5 C D 0 0 Asig Máx Libres: 10 4 7 Est. Seguro A 1 6 B 1 5 C D 2 4 Asig Máx Libres: 2 4 7 A 1 9 B 2 - C D 2 4 Est. Seguro Libres: 1 7 Est. Inseguro o Para varios tipos de recursos: Proc. Un. Cinta Plotter Impres. CD-ROM Proc. Un. Cinta Plotter Impres. CD-ROM Rec. Existentes A 3 0 1 1 A 1 1 0 0 E = (6 3 4 2) B 0 1 0 0 B 0 1 1 2 Rec. Asignados C 1 1 1 0 C 3 1 0 0 A = (5 3 2 2) D 1 1 0 1 D 0 0 1 0 Rec. Disponibles E 0 0 0 0 E 2 1 1 0 D = (1 0 2 0) Recursos asignados Recursos necesarios Algoritmo: 1) Buscar una fila cuyos recursos necesarios sean inferiores o iguales que el vector de disponibles. Si no existe, se producirá interbloqueo. 2) Suponemos que el proceso elegido solicita todos los recursos necesarios y termina (libera todos y se añaden al vector de disponibles). 3) Repetir 1 y 2 hasta que todos los procesos se señalen como concluidos (estado inicial seguro) u ocurra un interbloqueo (estado inicial inseguro).