Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
23 vistas33 páginas

Interbloqueos

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 33

ADMINISTRACIÓN DE

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

TODAS DEBEN DARSE AL MISMO TIEMPO


CONCEPTO
Dados:

-Un conjunto de procesos ejecutándose en un sistema


(computador),
-Un conjunto de recursos que son utilizados por dichos
procesos,

se dice que el conjunto de procesos se encuentra en un


estado de interbloqueo cuando todos sus procesos se
encuentran esperando un recurso que mantiene retenido otro
proceso del grupo.
Ejemplo de bloqueo

El proceso “a” solicita la impresora, que se le concede.


El proceso “b” solicita la unidad de memoria, que se le
concede.
El proceso “a” solicita la unidad de memoria, pero se
deniega la solicitud hasta que “b” la libera.
El proceso “b” solicita la impresora y se produce el
bloqueo (deadlock).
Se ha demostrado que las siguientes cuatro condiciones son
necesarias (aunque no suficientes) para que se produzca un
interbloqueo:

1) Exclusión mutua: Al menos un recurso debe ser utilizado en


exclusión mutua, es decir, de modo no compartido.

2) Retener y esperar: Debe haber al menos un proceso que


retenga un recurso y que haya pedido algún otro recurso que
posea otro proceso, por lo que estará esperando.
Tratamiento del bloqueo

● Ignorar el problema, asumiendo que dicha situación nunca se


dará en el sistema.Es la aproximación que mantienen muchos
sistemas operativos, incluido UNIX.

● Emplear algún algoritmo o protocolo que asegure que nunca


se va a poder producir un interbloqueo. Esta solución puede
adoptar dos formas alternativas:

- Prevención. Consiste en conseguir que no puedan darse


simultáneamente las cuatro condiciones de Coffman. De esta
forma, el interbloqueo no puede llegar a producirse.
- Evitación. Consiste en llevar la cuenta de los recursos
disponibles en el sistema, los recursos que poseen los
procesos y los que pueden llegar a solicitar. Cada vez
que un proceso hace una petición de un recurso, el
sistema analiza toda esa información para conceder (o
denegar) dicho recurso.

• Utilizar un algoritmo que pueda detectar una situación


de interbloqueo (detección) y seguir alguna técnica que
permita deshacer dicha situación (recuperación).
Evitación del bloqueo
Se conceden solamente aquellas peticiones de recursos
que no lleven al sistema a un estado de interbloqueo.
Estado seguro: si todos los procesos que ya tienen
concedidos los recursos tienen la posibilidad de ser
completados en algún orden determinado, incluso si
cada uno de esos procesos utilizará todos los recursos
a los que está autorizado.
Estado no seguro. No implica la existencia de
interbloqueo. Indica que se podría dar alguna
secuencia de solicitudes que llevará al sistema a un
estado de interbloqueo.
Detección

Necesitamos saber qué recursos están asignados y también


necesitamos mantener información sobre todas las solicitudes.
Hay una serie de algoritmos para la detección de interbloqueos:

⚫ Primer tipo: se basa en la detección de ciclos o nudos en el


grafo.

⚫ Segundo tipo. Usará una matriz de asignados, un vector


disponibles y una matriz de solicitudes.
Recuperación del bloqueo

Para recuperar un sistema interbloqueado necesitamos conocer


los procesos que producen el interbloqueo y después
realizaremos una de las siguientes acciones:

⚫ Reiniciar un proceso (abandonar). Se pierde todo lo que el


proceso haya ejecutado. Si persiste el interbloqueo
abandonamos más procesos. Abandonar y comprobar el estado
del sistema.
⚫ Reiniciar todos los procesos. Devolvemos los procesos a un
estado anterior en el cual no haya interbloqueo. Para volver
atrás tengo que haberlo guardado en memoria.
⚫ Expropiar o apropiar recursos. Vamos a expropiar recursos a
procesos hasta que deje de existir el interbloqueo. Hay recursos
fácilmente expropiables o no fácilmente expropiables.
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

TODAS DEBEN DARSE AL MISMO TIEMPO


Soluciones - Prevención
⚫ Idea Base
⚫ prevenir la ocurrencia de las condiciones
⚫ Directo → prevenir una de las tres básicas
⚫ Indirecto → prevenir la espera circular

⚫ 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

⚫ Denegar Asignación de Recursos


⚫ Estado Seguro → hay forma de satisfacer solicitudes
⚫ hay al menos una secuencia con salida
⚫ Algoritmo del Banquero → estudiar cada solicitud
⚫ verificar si quedarían recursos suficientes para satisfacer a otro cliente
Soluciones - Predicción
⚫ Algoritmo del Banquero. Resumen
⚫ no todos necesitan el máximo de recursos en todo
momento
⚫ verificar si quedarían recursos suficientes para satisfacer a
otro cliente
⚫ se supone que se va a pagar
⚫ verificar primero el siguiente cliente más cercano al límite
NO Aplicable en la Práctica
Soluciones - Predicción
⚫ Algoritmo del Banquero
⚫ El Algoritmo del banquero, en sistemas operativos es una
forma de evitar el interbloqueo, propuesta por primera vez
por Edsger Dijkstra.
⚫ Es un acercamiento teórico para evitar los interbloqueos
en la planificación de recursos.
⚫ Requiere conocer con anticipación los recursos que serán
utilizados por todos los procesos.
⚫ Esto último generalmente no puede ser satisfecho en la
práctica.
Soluciones - Predicción
⚫ Algoritmo del Banquero
⚫ Este algoritmo usualmente es explicado usando la
analogía con el funcionamiento de un banco. Los clientes
representan a los procesos, que tienen un crédito límite, y
el dinero representa a los recursos. El banquero es el
sistema operativo.
⚫ El banco confía en que no tendrá que permitir a todos sus
clientes la utilización de todo su crédito a la vez. El banco
también asume que si un cliente maximiza su crédito será
capaz de terminar sus negocios y devolver el dinero a la
entidad, permitiendo servir a otros clientes.
Soluciones - Predicción
⚫ Algoritmo del Banquero
⚫ El algoritmo mantiene al sistema en un estado seguro.
Un sistema se encuentra en un estado seguro si existe un
orden en que pueden concederse las peticiones de
recursos a todos los procesos, previniendo el interbloqueo.
El algoritmo del banquero funciona encontrando estados
de este tipo.
⚫ Los procesos piden recursos, y son complacidos siempre y
cuando el sistema se mantenga en un estado seguro
después de la concesión. De lo contrario, el proceso es
suspendido hasta que otro proceso libere recursos
suficientes.
Soluciones - Predicción
⚫ En términos más formales, un sistema se encuentra en
un estado seguro si existe una secuencia segura.
⚫ Una secuencia segura es una sucesión de procesos, <
P1 ,..., Pn >, donde para un proceso Pi , el pedido de
recursos puede ser satisfecho con los recursos
disponibles, sumados los recursos que están siendo
utilizados por Pj, donde j < i.
⚫ Si no hay suficientes recursos para el proceso Pi, debe
esperar hasta que algún proceso Pj termine su ejecución
y libere sus recursos.
Soluciones - Predicción
⚫ Entonces podrá Pi tomar los recursos necesarios,
utilizarlos y terminar su ejecución. Al suceder esto, el
proceso Pi+1 puede tomar los recursos que necesite, y así
sucesivamente.
⚫ Si una secuencia de este tipo no existe, el sistema se dice
que está en un estado inseguro, aunque esto no
implica que esté bloqueado.
⚫ Así, el uso de este tipo de algoritmo permite impedir el
interbloqueo, pero supone una serie de restricciones:
⚫ Se debe conocer la máxima demanda de recursos por
anticipado.
Soluciones - Predicción
⚫ Así, el uso de este tipo de algoritmo permite impedir el
interbloqueo, pero supone una serie de restricciones:
⚫ Los procesos deben ser independientes, es decir que
puedan ser ejecutados en cualquier orden. Por lo tanto su
ejecución no debe estar forzada por condiciones de
sincronización.
⚫ Debe haber un número fijo de recursos a utilizar y un
número fijo de procesos.
⚫ Los procesos no pueden finalizar mientras retengan
recursos.
Soluciones - Predicción
⚫ Algoritmo del Banquero
⚫ C → matriz de recursos necesarios
⚫ A → matriz de recursos asignados
⚫ R → vector de recursos existentes
⚫ V → vector de recursos disponibles
⚫ buscar Ci < V, sino entonces bloqueo
⚫ suponer que proceso i se ejecuta y libera
⚫ marcar Pi y V += Ci
⚫ repetir estos pasos hasta marcar todos ó encontrar
bloqueo
Soluciones - Predicción
⚫ Algoritmo del Banquero – Ej Seguro

( 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

También podría gustarte