Вы находитесь на странице: 1из 34

SISTEMAS

OPERATIVOS
MODERNOS -
CLASE 16
INDICE
1. Interbloqueo (Tanenbaum,6.4–6.7)
 Detección y recuperación de un interbloqueo
 Cómo evitar interbloqueos
 Cómo prevenir interbloqueos
 Otras Cuestiones
 Bloqueo de Dos Fases
 Interbloqueo de Comunicaciones
 Bloqueo Activo
 Inanicion
INTRODUCCIÓN A
INTERBLOQUEOS
Deteccion y recuperación de un interbloqueo
Realizar el grafico para estos datos
1. El proceso A contiene a R y quiere a S.
2. El proceso B no contiene ningún recurso pero quiere a T.
3. El proceso C no contiene ningún recurso pero quiere a S.
4. El proceso D contiene a U y quiere a S y a T.
5. El proceso E contiene a T y quiere a V.
6. El proceso F contiene a W y quiere a S.
7. El proceso G contiene a V y quiere a U.
INTRODUCCIÓN A
INTERBLOQUEOS
INTRODUCCIÓN A
INTERBLOQUEOS
 Detección con 1 Recurso de cada tipo
 El algoritmo opera al llevar a cabo los siguientes pasos:

1. Para cada nodo N en el gráfico, realizar los siguientes cinco


pasos con N como el nodo inicial.

2. Inicializar L con la lista vacía y designar todos los arcos como


desmarcados.

3. Agregar el nodo actual al final de L y comprobar si el nodo


ahora aparece dos veces en L.
Si lo hace, el gráfico contiene un ciclo (listado en L) y el algoritmo
INTRODUCCIÓN A
INTERBLOQUEOS
 El algoritmo opera al llevar a cabo los siguientes pasos:

4. Del nodo dado, ver si hay arcos salientes desmarcados. De ser


así, ir al paso 5; en caso contrario, ir al paso 6.

5. Elegir un arco saliente desmarcado al azar y marcarlo. Después


seguirlo hasta el nuevo nodo actual e ir al paso 3.

6. Si este nodo es el inicial, el gráfico no contiene ciclos y el


algoritmo termina. En caso contrario, ahora hemos llegado a un
punto muerto. Eliminarlo y regresar al nodo anterior; es decir, el
que estaba justo antes de éste, hacerlo el nodo actual e ir al paso
INTRODUCCIÓN A
INTERBLOQUEOS
 Ejemplo 1: Empezamos en R, L arranca vacío. Aplicamos
el algoritmo y obtenemos L={R,A,S} S no tiene arcos
salientes, por lo que es un punto muerto y volvemos
hasta R, la raíz.

 Ejemplo 2: Empezamos en B, L arranca vacío. Aplicamos


el algoritmo y obtenemos L= [B, T, E, V, G , U , D, T], en
donde descubrimos el ciclo y detenemos el algoritmo.
INTRODUCCIÓN A
INTERBLOQUEOS
 Detección con varios Recursos de cada tipo
INTRODUCCIÓN A
INTERBLOQUEOS
 Detección con varios Recursos de cada tipo
 El algoritmo de detección de interbloqueos se muestra a
continuación.
1. Buscar un proceso desmarcado, Pi, para el que la i-
ésima fila de R sea menor o igual que A.

2. Si se encuentra dicho proceso, agregar la i-ésima fila de


C a A, marcar el proceso y regresar al paso 1.

3. Si no existe dicho proceso, el algoritmo termina.


Cuando el algoritmo termina, todos los procesos
INTRODUCCIÓN A
INTERBLOQUEOS
INTRODUCCIÓN A
INTERBLOQUEOS
 Detección con varios Recursos de cada tipo
 Ejemplo 1: Tenemos 3 Procesos.
 Proceso1 no se puede ejecutar ya que no hay CD-ROOM
 Proceso2 tampoco ya que no hay escáner
 Proceso3 se ejecuta y devuelve A=(2,2,2,0)
 Ejecutamos Proceso2 y devuelve A=(4,2,2,1)
 Ejecutamos Proceso1
 Termina
INTRODUCCIÓN A
INTERBLOQUEOS
 Ejemplo 2:
A P2 agregamos un pedido
De CD-ROOM

Ninguna
de las peticiones se
puede satisfacer, por lo
que todo el sistema está
en interbloqueo
INTRODUCCIÓN A
INTERBLOQUEOS
 Recuperación de un interbloqueo
 Recuperación por medio de apropiación. Es difícil o
imposible recuperarse de esta manera
 Recuperación a través del retroceso. Procesos
realicen puntos de comprobación en forma periódica.
 Recuperación a través de la eliminación de
procesos. La forma más cruda y simple de romper un
interbloqueo es eliminar uno o más procesos
INTRODUCCIÓN A
INTERBLOQUEOS
 CÓMO EVITAR INTERBLOQUEOS
¿Hay algún algoritmo que siempre pueda evitar un
interbloqueo al realizar la elección
correcta todo el tiempo?
 Trayectorias de los recursos
 Los principales algoritmos para evitar interbloqueos se
basan en el concepto de los estados seguros
 Vamos a analizar este concepto.
INTRODUCCIÓN A
INTERBLOQUEOS
INTRODUCCIÓN A
INTERBLOQUEOS
 Tenemos 2 procesos A y B
 El eje horizontal representa el número de
instrucciones ejecutadas por el proceso A.
 El eje vertical representa el número de instrucciones
ejecutadas por el proceso B.
 Cuando A cruza con la línea I1 en la ruta de r a s,
solicita la impresora y se le otorga.
 Cuando B llega al punto t, solicita el trazador.
INTRODUCCIÓN A
INTERBLOQUEOS
 Regiones Sombreadas
 La región con las líneas que se inclinan de abajo arriba
representa cuando ambos procesos tienen la impresora. La
regla de exclusión
mutua hace imposible entrar a esta región.
 La región sombreada de la otra forma representa cuando
ambos procesos tienen el trazador, y es igual de imposible.
 Región cuadriculada interbloqueo.
 Para evitar el interbloqueo, B se debe suspender hasta
que
A haya solicitado y liberado el trazador.
INTRODUCCIÓN A
INTERBLOQUEOS
 Estados Seguros e Inseguros
 Un estado es seguro si hay cierto orden de programación en
el que se puede ejecutar cada proceso hasta completarse,
incluso aunque todos ellos solicitaran de manera repentina
su número máximo de recursos de inmediato.
INTRODUCCIÓN A
INTERBLOQUEOS
 Estados Seguros e Inseguros

 Vale la pena observar que un estado inseguro no es un


estado en interbloqueo.
 Diferencia entre un estado seguro y uno inseguro: desde un
estado seguro, el sistema puede garantizar que todos los
procesos terminarán; desde un estado inseguro, no se puede
INTRODUCCIÓN A
INTERBLOQUEOS
 El algoritmo del banquero para un solo recurso.
 Lo que hace el algoritmo es comprobar si al otorgar la
petición se produce un estado inseguro

 Para ver si un estado es seguro, el banquero comprueba si


tiene los suficientes recursos para satisfacer a algún cliente
INTRODUCCIÓN A
INTERBLOQUEOS
 El algoritmo del banquero para varios recursos.
 Matriz C

Recursos Asignados
 Matriz R

Recursos Necesitan

 Recursos existentes (E)


 Recursos poseídos (P)
 Recursos disponibles (A)
INTRODUCCIÓN A
INTERBLOQUEOS
 El algoritmo del banquero para varios recursos.

1. Buscar una fila R, cuyas necesidades de recursos no


satisfechas sean menores o iguales que A. Si no existe dicha
fila, el sistema entrará en interbloqueo en un momento dado,
debido a que ningún proceso se podrá ejecutar hasta
completarse (suponiendo que los procesos mantienen todos
los recursos hasta que terminan).

2. Suponer que el proceso seleccionado de la fila solicita todos


los recursos que necesita (lo que se garantiza que es posible)
y termina. Marcar ese proceso como terminado y agregar
todos sus recursos al vector A.
INTRODUCCIÓN A
INTERBLOQUEOS
 El algoritmo del banquero para varios recursos.

3. Repetir los pasos 1 y 2 hasta que todos los procesos se


marquen como terminados (en cuyo caso el estado inicial era
seguro) o hasta que no haya ningún proceso cuyas
necesidades de recursos se puedan satisfacer (en cuyo caso
hay un interbloqueo).
INTRODUCCIÓN A
INTERBLOQUEOS
 CÓMO PREVENIR INTERBLOQUEOS
 Evitar los interbloqueos es algo en esencia imposible,
debido a que se requiere información sobre las peticiones
futuras, que no se conocen
 Entonces?????
 ¿Cómo evitan los sistemas reales el interbloqueo?
 La respuesta es volver a las cuatro condiciones
establecidas por Coffman y colaboradores.
 Si podemos asegurar que por lo menos una de estas
condiciones nunca se cumpla, entonces los
interbloqueos serán estructuralmente imposibles
INTRODUCCIÓN A
INTERBLOQUEOS
 Cómo atacar la condición de exclusión mutua
 Si ningún recurso se asignara de manera exclusiva a un
solo proceso, nunca tendríamos interbloqueos.
 Pero dos procesos escribiendo en la impresora al mismo
tiempo seria un caos. Entonces?
 Colocar la salida de la impresora en una cola de
impresión, así los procesos pueden generar salida al
mismo tiempo. En este modelo, el único proceso que
realmente solicita la impresora física es el demonio de
impresión. Como el demonio nunca solicita ningún otro
recurso, podemos eliminar el interbloqueo para la
impresora
INTRODUCCIÓN A
INTERBLOQUEOS
 Cómo atacar la condición de contención y espera
 Si podemos evitar que los procesos que contienen
recursos esperen por más recursos, podemos eliminar los
interbloqueos
1. Una forma de lograr esta meta es requerir que todos los
procesos soliciten todos sus recursos antes de empezar su
ejecución. Si todo está disponible, al proceso se le
asignará lo
que necesite y podrá ejecutarse hasta completarse. Si
uno o más recursos están ocupados, no se asignará nada
y el proceso sólo esperará. Problemas? Qué recursos, uso
óptimo.
INTRODUCCIÓN A
INTERBLOQUEOS
 Cómo atacar la condición no apropiativa
 Virtualizar como en el caso de la impresora antes
mencionada.
 Sin embargo, no todos los recursos se pueden virtualizar
de esta manera. Por ejemplo, los registros en las bases
de datos o las tablas dentro del sistema operativo se
deben bloquear para poder utilizarse, y ahí es donde se
encuentra el potencial para el interbloqueo
INTRODUCCIÓN A
INTERBLOQUEOS
 Cómo atacar la condición de espera circular
1. Tener una regla que diga que un proceso tiene derecho sólo
a un recurso en cualquier momento. Si necesita un segundo
recurso, debe liberar el primero.
2. Los procesos pueden solicitar recursos cada vez que
quieran, pero todas las peticiones se deben realizar en
orden numérico.
Explicación si i<j o i>j
Con esta regla, el gráfico
de asignación de recursos
INTRODUCCIÓN A
INTERBLOQUEOS
 Los diversos métodos para evitar el interbloqueo
INTRODUCCIÓN A
INTERBLOQUEOS
 Bloqueo a dos Fases: En la primera fase, el proceso
trata de bloquear todos los registros que necesita, uno a
la vez. Si tiene éxito pasa a la segunda fase, realizando
sus actualizaciones y liberando los bloqueos. No se
realiza ningún trabajo real
en la primera fase.
Si durante la primera fase se necesita cierto registro que
ya esté bloqueado, el proceso sólo libera todos sus
bloqueos e inicia la primera fase desde el principio
INTRODUCCIÓN A
INTERBLOQUEOS
 Interbloqueo de Comunicación: A envía un mensaje de
petición al proceso B, y después se bloquea hasta que B
envía de vuelta un mensaje de respuesta. Suponga que
el mensaje de petición se pierde. A se bloquea en espera
de la respuesta. B se bloquea en espera de una petición
para que haga algo.
 Para evitarlos se utilizan tiempos de espera.
INTRODUCCIÓN A
INTERBLOQUEOS
 Bloqueo Activo: En ciertas situaciones se utiliza el
sondeo (ocupado en espera). Esta estrategia se utiliza a
menudo
cuando se va a usar la exclusión mutua por un tiempo
muy corto, y la sobrecarga de la suspensión es grande en
comparación con realizar el trabajo
 Sin importar que proceso se ejecute primero
El segundo no podrá progresar pero tampoco
Se bloqueará. Usará todo su quantum de CPU
Preguntando si ya puede usar el recurso.
INTRODUCCIÓN A
INTERBLOQUEOS
 Inanición: Se necesita cierta política para decidir acerca
de quién obtiene qué recurso y cuándo. Esta política,
aunque parece razonable, puede ocasionar que ciertos
procesos nunca reciban atención, aun cuando no estén
en interbloqueo.
INTRODUCCIÓN A
INTERBLOQUEOS
 Realizar los Gráficos, y marcar que procesos y
recursos están en interbloqueo.
A. P3 quiere a R1, P1 contiene a R1, R3 y quiere a R2, P2
contiene a R2 y quiere a R3
B. P1 quiere R2, R3 y contiene a R1, P2 quiere a R3 y
contiene a R2, P3 quiere a R1 y contiene a R3, P4
contiene a R3

Вам также может понравиться