Vous êtes sur la page 1sur 5

Bloqueo mutuo

• En un medio ambiente de multiprogramación, varios procesos pueden competir


por un número finito de recursos.
• Los recursos de un sistema son particionados en varios tipos (espacio de
memoria, ciclos de CPU, archivos, dispositivos de E/S), cada uno de los cuales
consiste de un número de instancias idénticas.
• Si un proceso requiere una instancia de un tipo de recurso, la asignación de
cualquier instancia del tipo satisface el requerimiento.
• Cuando un proceso requiere un recurso que no está disponible pasa a un estado
de espera.

• Un proceso puede esperar por un recurso y nunca cambiar de estado porque el


recurso solicitado está retenido por otro proceso en espera. Esta situación es
llamada bloqueo mutuo.
• Gráficamente, los bloqueos mutuos pueden describirse a través de un grafo de
asignación de recursos.
• Existen distintas situaciones de bloqueo:
 Un proceso Pi requiere una instancia de un recurso tipo R1 retenida por
otro proceso Pj que se encuentra en espera y bloqueado.
 Pi y Pj retienen una instancia de un recurso tipo R1 y R2
respectivamente. Pi requiere de una instancia de R2 y Pj de un recurso
de tipo R1.
 En un grupo de procesos, cada uno está esperando un evento que puede
ser causado sólo por otro proceso del grupo.

Cuatro condiciones son necesarias para el bloqueo mutuo


• Exclusión mutua
• Retención y espera
• No apropiación (no-preemptive)
• Espera circular
Estas condiciones deben darse simultáneamente.

Métodos para el manejo de bloqueos mutuos


Hay tres métodos para tratar el problema del bloqueo

• Usar un protocolo para asegurar que el sistema nunca entrará en un estado de


bloqueo.
 Prevenir del bloqueo
• Asegura que al menos una de las condiciones para el bloqueo no se cumplirá.
• Establece restricciones sobre como pueden solicitarse los recursos.

 Evitar el bloqueo
• El S.O. necesita conocer con anticipación que recursos requerirá un proceso
durante su tiempo de vida.
• Con esa información, el S.O. puede decidir para cada requerimiento si el proceso
debe esperar o no.
• La decisión se realiza en función de los recursos actualmente disponibles, los
asignados, y los requerimientos y liberaciones futuras de cada proceso.
• Permitir entrar a un estado de bloqueo y luego recuperarse.
 Un algoritmo examina el estado del sistema para determinar si ha
ocurrido un bloqueo.
 Otro algoritmo maneja la recuperación desde el bloqueo.

• Ignorar el problema.
 Ante un bloqueo el sistema sufrirá un deterioro en su perfomance
 Eventualmente el sistema se detendrá y necesitará reinicio manual.
 Es usado en algunos sistemas operativos.

Prevención del bloqueo


Asegurar que al menos una de las condiciones para bloqueo no se cumpla.
• Exclusión mutua

 Los recursos compartibles no estarán involucrados en un bloqueo dado


que no requieren acceso exclusivo.
 En general no es posible prevenir los bloqueos relegando la condición de
exclusión mutua, dado que hay recursos que son intrínsecamente no
compartibles.
 Retención y espera
 Garantizar que, siempre que un proceso requiere un recurso, no tiene otro
retenido.
 Pueden usarse dos protocolos:
 Cada proceso debe requerir y recibir todos sus recursos antes de
comenzar su ejecución.
 Cada proceso puede requerir algunos recursos y usarlos, pero
cuando requiere otro recurso adicional, ANTES debe liberar los
ya asignados.
 Estos protocolos producen baja utilización de los recursos.
 Puede ocasionar inanición de algunos procesos.

No apropiación
Alternativa 1:
 Si un proceso que está reteniendo algunos recursos, requiere otro recurso
que no se le puede asignar inmediatamente, entonces todos los recursos que
tiene retenidos le son apropiados.
 Los recursos apropiados son agregados a la lista de recursos que el proceso
está esperando.
 El proceso se reinicia sólo cuando recupera sus viejos recursos junto con los
nuevos que esta requiriendo.
Alternativa 2:
 Si un proceso requiere recursos, primero chequear si están disponibles.
 Si están, entonces asignarlos.
 Si no están, chequear si están asignados a algún otro proceso que esté
esperando recursos adicionales.
 Si es así, apropiar los recursos deseados al proceso que está esperando y
asignárselos al proceso que los requiere.
 Si los recursos requeridos no están disponibles ni retenidos por otro proceso
en espera, entonces el proceso debe esperar.
 Espera circular
 Imponer un orden a todos los tipos de recursos del sistema
 Cada proceso debe requerir recursos en un orden creciente de
enumeración.
 Implementación:
 Asignar a cada tipo de recurso un número entero único
 Formalmente se define una función F: R → N con
R={R1,R2,...,Rm}
 La función F debe ser definida de acuerdo al orden de utilización
normal de los recursos en el sistema.
Protocolo:
Alternativa 1:
 Un proceso puede inicialmente requerir cualquier número de instancias de
un tipo de recurso Ri
 Después el proceso puede requerir instancias de un recurso Rj si y solo si
F(Rj) > F(Ri)
 Si son necesarias varias instancias de un mismo tipo de recurso, debe
emitirse un único requerimiento para todas ellas.
Alternativa 2:
 Cuando un proceso requiere una instancia de un recurso tipo Rj, debe
haber liberado todos los recursos de tipo Ri tal que F(Ri) ≥ F(Rj)

Evitando el bloqueo
• Se requiere información adicional acerca de cómo van a ser solicitados los
recursos.
• Con el conocimiento de la secuencia completa de requerimientos y liberaciones
para cada proceso, el sistema, ante cada requerimiento, considera:
 Los recursos actualmente disponibles
 Los recursos actualmente asignados a cada proceso
 Los requerimientos y liberaciones futuras de cada proceso
y decide si el requerimiento puede ser satisfecho, o el proceso debe esperar para
evitar un posible bloqueo en el futuro.
• Los algoritmos para evitar el bloqueo difieren en la cantidad y tipo de
información que requieren.

• El modelo más simple y útil requiere que cada proceso declare el máximo
número de recursos de cada tipo que puede necesitar.
• Con esta información el algoritmo asegura que el sistema nunca entrará en un
estado de bloqueo.
• Un algoritmo para evitar el bloqueo examina dinámicamente el estado de
asignación de recursos para asegurar de que nunca puede hacer una condición
de espera circular.
• El estado de asignación de los recursos está definido por el número de recursos
disponibles y asignados, y las máximas demandas de los procesos.
Estado seguro
• Un sistema está en un estado seguro sólo si existe una secuencia segura.
• Una secuencia de procesos <P1,P2,....,Pn> es segura si por cada Pi, los recursos
que Pi puede aún requerir, pueden ser satisfechos por los recursos actuales
disponibles más los recursos retenidos por todos los Pj con j<i.
• Si la secuencia no existe, entonces se dice que el estado del sistema es inseguro.
• No todos los estados inseguros son bloqueos. Un estado inseguro puede
conducir a un bloqueo.
• Mientras el estado sea seguro, el S.O. puede evitar estados inseguros.
Algoritmo del grafo de asignación de recursos
• Si para cada tipo de recurso existe sólo una instancia, una variante del grafo de
asignación de recursos puede ser usada para la evitación del bloqueo.
• La seguridad del sistema se chequea mediante un algoritmo que detecta ciclos en
el grafo.

Algoritmo del banquero


• El algoritmo del grafo de asignación de recursos no es aplicable a un sistema de
asignación de recursos con múltiples instancias para cada tipo de recurso.
• En estos casos, para evitar el bloqueo se aplica un algoritmo conocido como el
algoritmo del banquero.
• Cuando un proceso entra al sistema, debe declarar el máximo número de
instancias de cada tipo de recurso que pueda necesitar.
• Cuando un proceso solicita un conjunto de recursos, el sistema debe determinar
si la asignación de esos recursos dejará al sistema en un estado seguro.
Algoritmo del banquero

1. Si Solicitudi <= Necesidadi, pasar a punto 2. Sino ERROR.


2. Si Solicitudi <= Disponiblei, pasar a punto 3. Sino Pi debe esperar.
3. El S.O. asigna los recursos solicitados:
Disponiblei=Disponiblei – Solicitudi
Asignacióni=Asignacióni+Solicitudi
Necesidadi= Necesidadi – Solicitudi
1. Si estado seguro, entonces asignación satisfecha. Sino Pi espera.
Algoritmo de Seguridad

1. Sean Trabajo=Disponible y Fin[i]=Falso.


2. Encontrar un i tal que : (Fin[i]==falso) y Necesidadi<=Trabajoi. Sino existe,
pasar a paso 4.
3. Trabajo=Trabajo + Asignación
Fin[i]=Verdadero
Volver a paso 2.
1. Si Fin[i] = Verdadero para todo i, entonces ESTADO SEGURO.

Detección del bloqueo


• Si un sistema no emplea un algoritmo de prevención o para evitar el bloqueo,
entonces puede ocurrir una situación de bloqueo. Por ello, estos sistemas deben
proveer:
 Un algoritmo que examine el estado del sistema para determinar si ha
ocurrido un bloqueo.
 Un algoritmo para recuperarse del bloqueo
• Los esquemas de detección y recuperación tienen un alto overhead.

Sistemas con única instancia por cada tipo de recurso


• Para estos sistemas se puede definir un algoritmo de detección de bloqueo que
usa una variante del grafo de asignación de recursos llamado grafo wait-for.
• Existirá un bloqueo en el sistema si el grafo wait-for contiene un ciclo.
• Para detectar bloqueos, el sistema necesita mantener el grafo wait-for e invocar
periódicamente un algoritmo que busca ciclos en el grafo.

Sistemas con varias instancias por cada tipo de recurso


• En estos sistemas no es aplicable el esquema del grafo wait-for.
• Para estos sistemas se emplea un algoritmo similar al algoritmo del banquero.

Recuperación del bloqueo


• Cuando un algoritmo de detección determina que existe un bloqueo, el paso
siguiente puede ser:
 Informar al operador del bloqueo para que lo trate manualmente
 Dejar que el sistema se recupere del bloqueo automáticamente
• Hay dos opciones para romper un bloqueo:
 Abortar uno o más procesos para romper la espera circular
 Apropiar algunos recursos de uno o más procesos bloqueados
Terminación de procesos
• Hay dos métodos para eliminar bloqueos abortando procesos:
 Abortar todos los procesos bloqueados
 Abortar un proceso por vez hasta eliminar el ciclo del bloqueo

Apropiación de recursos
• Se trata de apropiar sucesivamente recursos de los procesos para darlos a otros
procesos hasta romper el ciclo del bloqueo.
• Esto implica resolver tres cuestiones:
 Selección de una víctima
 Rollback
 Inanición

Vous aimerez peut-être aussi