Está en la página 1de 27

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

Procesador 1 Procesador 2
Registro o
posición de memoria
Lee PID
PID = 500
PID = 500

Incrementa y Lee PID


asigna PID PID = 500

PID = 501 Escribe PID


PID = 501 Incrementa y
asigna PID

PID = 501
PID = 501 Escribe PID
Sección crítica
 Cuando el SO ejecuta las operaciones de la figura anterior en dos
procesadores de forma simultánea sin 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
terminado su sección.
Bloqueo – Ejemplo Práctico
INTERBLOQUEOS
Grafos de Asignació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
Asignació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
Teniendo:
-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 para que se produzca un interbloqueo:

Se conocen como las condiciones de Coffman


 Exclusión Mutua
 Retención y Espera
 No Expropiación
 Espera Circular
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
utilizara todos los recursos a los que esta autorizado.

Estado no seguro. No implica la existencia de interbloqueo.


Indica que se podría dar alguna secuencia de solicitudes que
llevara 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 tiene 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.
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
 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
 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 – Ejemplo
Soluciones - Predicción
 Algoritmo del Banquero – Ejemplo
Soluciones - Predicción
 Algoritmo del Banquero – Ejemplo

También podría gustarte