Interbloqueos
Interbloqueos
Interbloqueos
PROCESOS
Problema de la sección crítica
⚫ Problema común tanto en procesos independientes como cooperantes.
⚫ Sea un sistema compuesto por n procesos donde cada uno tiene un
fragmento de código: sección crítica.
⚫ Dentro de la sección crítica se pueden estar accediendo y modificando
variables comunes, registros de un archivo, etc.
⚫ Sólo uno de los procesos en cada instante puede ejecutar en la sección crítica
⚫ Cuando un proceso está ejecutando en la sección crítica, ningún otro
puede hacerlo.
⚫ Ejemplo:
⚫ Se asigna un PID a dos procesos en un sistema multiprocesador.
⚫ Para asignar un nuevo PID, el SO realiza las siguientes acciones:
⚫ Leer el último PID asignado.
⚫ Incrementar el valor del último PID. El nuevo valor será el PID a
asignar al proceso.
⚫ Almacenar el nuevo PID en el registro o variable utilizado para tal
efecto.
Ejemplo 1
Sección crítica
⚫ Cuando el SO ejecuta las operaciones de la figura anterior en dos
procesadores de forma simultánea si ningún tipo de control, se pueden
producir errores y asignar el mismo PID a dos procesos distintos.
⚫ Las operaciones descritas anteriormente deben realizarse de forma atómica,
es decir, de forma completa e indivisible. Así, si un proceso que empieza a
ejecutar código de la sección crítica, entonces ningún otro proceso podrá
ejecutar dicho código mientras el primero no haya acabado su sección.
⚫ Ejemplo:
⚫ Se quiere calcular la suma de los n primeros números naturales de forma
paralela utilizando múltiples procesos ligeros, cada uno de los cuales se va
ha encargar de la suma de un subconjunto de todos los números.
Bloqueo – Ejemplo Práctico
INTERBLOQUEOS
Grafos de Obtención de Recursos
⚫ Tipos de Nodos
⚫ proceso y recursos
⚫ Arcos
⚫ si recurso ha sido obtenido por un proceso
⚫ si recurso ha sido solicitado por un proceso
Grafos de Obtención de Recursos
Grafos de Obtención de Recursos
Bloqueos - Condiciones
⚫ Exclusión Mutua
⚫ Un solo proceso puede acceder al recurso
⚫ Retención y Espera
⚫ Es posible mantener un recurso mientras se espera otro
⚫ No Expropiación
⚫ No se puede forzar la expropiación de un recurso
⚫ Espera Circular
⚫ Existe una lista cerrada de procesos, cada uno esperando
algo que otro ya posee
⚫ Técnicas
⚫ Eliminar Exclusión Mutua
⚫ No hay recursos exclusivos → Spooling
⚫ Eliminar Retención y Espera
⚫ Reservar TODO desde el principio → 2 Phase Lock
⚫ Sin Expropiación
⚫ Requiere poder salvar y restaurar estado → NO aplicable
⚫ Prevenir Espera Circular
⚫ Usar máximo un recurso al tiempo → NO aplicable
⚫ Petición en ORDEN prefijado → proceso con el recurso de número
más alto no se bloquea
Soluciones - Predicción
⚫ Idea Base
⚫ no permitir la asignación si tiene peligro potencial
⚫ no es restrictiva → permite mayor concurrencia
⚫ requiere conocer a priori requerimientos
⚫ Técnicas
⚫ Denegar Inicio de Proceso
⚫ Sólo crear proceso si los recursos requeridos están disponibles
( R - ∑AR )
Soluciones - Predicción
⚫ Algoritmo del Banquero – Ej Seguro
Soluciones - Predicción
⚫ Algoritmo del Banquero – Ej Seguro
Soluciones - Predicción
⚫ Algoritmo del Banquero – Ej No-Seguro