Está en la página 1de 8

Ejerciciosbsicos2011Revisin4

SistemasOperativos

UTNFRBA

Ejercicios de Deadlock
1 - Dadas las siguientes matrices:
R1 R2 R3 R4

R1 R2 R3 R4

P1 3

P1 2

P2 3

P2 3

P3 9

P3 1

P4 3 4 1
Peticiones
mximas

P4 2
3
0
Recursos
asignados

R1 R2 R3 R4

R1 R2 R3 R4

9 5 3
Recursos
totales

1
1
1
1
Recursos
disponibles

a) Determine si el estado actual del sistema es seguro. Justifique.


b) Suponiendo que, bajo el estado actual, ingresa P5 cuyas peticiones mximas son iguales a los
recursos totales del sistema. Es este nuevo estado seguro? Justifique.

2 - Se encuentran N procesos compartiendo distintos recursos, de los cuales existe una sola
instancia de cada uno, ejecutando el siguiente cdigo:
while(true){
t_buffer rec_id[3] = get_recursos(); // devuelve aleatoriamente tres IDs de recursos
syscall_pedir(rec_id[0]); // Bloqueante si el recurso no se encuentra disponible.
syscall_pedir(rec_id[1]);
syscall_pedir(rec_id[2]);
usar_recursos(rec_id);
syscall_devolver(rec_id[0]);
syscall_devolver(rec_id[1]);
syscall_devolver(rec_id[2]);
}

a) Demueste que dichos procesos podran quedar en deadlock.


b) Proponga una solucin para evitar el deadlock, usando semforos.
c) Proponga una solucin para evitar el deadlock, sin usar soporte alguno del sistema operativo
(ni tampoco hacerle modificaciones al mismo).

Ejerciciosbsicos2011Revisin4

SistemasOperativos

UTNFRBA

3 - Suponga que se tiene un sistema que tiene como estrategia para tratar el deadlock la evasin
mediante el algoritmo del banquero. Siendo el estado de los recursos el siguiente:
R1 R2 R3 R4

R1 R2 R3 R4

P1 3

P1 2

P2 3

P2 3

P3 9

P3 1

P4 3 4 1
Peticiones
mximas

P4 2
3
0
Recursos
asignados

R1 R2 R3 R4

R1 R2 R3 R4

10 5 2
Recursos
totales

2
1
1
1
Recursos
disponibles

a) Indique cual de los siguientes pedidos seran satisfechos inmediatamente, suponiendo que
cada uno se efectuara sobre el estado presentado inicialmente:
- P3: una instancia de R1
- P4: una instancia de R3
- P3: una instancia de R1 y dos instancias de R4
b) Qu debe hacer el sistema operativo con los procesos cuyos pedidos no pueden ser
satisfechos?

4- Dadas las siguientes matrices, determine si existe deadlock, y en caso afirmativo indique qu
procesos estn involucrados.
R1 R2 R3 R4

R1 R2 R3 R4

P1 1

P1 1

P2 2

P2 0

P3 1

P3 1

P4 0 0 0
Peticiones
actuales

P4 0
0
1
Recursos
asignados

R1 R2 R3 R4

R1 R2 R3 R4

2 2 1
Recursos
totales

0
0
0
2
Recursos
disponibles

Ejerciciosbsicos2011Revisin4

SistemasOperativos

UTNFRBA

5 - Indique la (o las) mejor(es) estrategia(s) contra la posible ocurrencia de deadlock para cada
caso. Justifique cada decisin, ya sea por ser la mejor opcin o por descarte de las otras.
a) Sistema usado en un puesto administrativo de una empresa, donde el operador usa
planillas de clculo, imprime documentos y navega por internet.
b) Sistema computarizado de vuelo de aeronaves que tiene un grado alto de overhead
debido a que el procesador no es muy potente.
c) Base de datos transaccional usada en un sistema web de redes sociales, con cientos de
usuarios programando aplicaciones para dicho sistema y una alta carga de transacciones
en horas pico.
d) Servidor de juegos online no gratuito con baja carga de usuarios, donde se desea no tener
que devolverle el dinero a los mismos a causa de un deadlock, pero al mismo tiempo se
desea que los programadores de juegos para dicho servidor tengan alta flexibilidad en la
solicitud de los recursos del sistema.
6 - Dado el siguiente grfico de asignacin de recursos, determine si el sistema se encuentra en
deadlock.

P
2

R1

P
3

R3

R2

P
1

P
7

R4

R7
P
8

R6
P
4

P
5
R5

P
6

R8

Ejerciciosbsicos2011Revisin4

SistemasOperativos

UTNFRBA

7 Suponga que siendo el administrador de un sistema financiero, lo llaman a las 3 a.m. para
decirle que un conjunto A de procesos lleva ejecutando demasiado tiempo (mucho ms que de
costumbre), y se sospecha que los mismos se encuentran ante algn tipo de bloqueo. La persona
que lo llam, que trabaja para Operaciones, le comenta que pronto debern empezar a
ejecutar otro conjunto B de procesos y cree que existe el riesgo que este segundo conjunto
(cuyo resultado debe estar listo a primera hora de la maana) se vea afectado por este
problema. El dilogo contina de la siguiente manera:
Usted: El conjunto B usa los mismos recursos que el conjunto A?
Operador: A ver... no, mas all del nico procesador que tiene el sistema, usan distintos recursos.
Usted: El resultado de la ejecucin del conjunto A tambin tiene que estar listo s o s para
maana?
Operador: No, por lo que veo dicho resultado se utilizar recin la semana que viene.
Usted: Aj.., Y podras confirmarme si es un deadlock o un livelock?
Operador: Esteeee, dejame ver... (consulta a su carpeta de sistemas operativos) al parecer es
un XXXX.
Usted: Ok, entonces no hay nada para preocuparse, maana lo arreglamos, me voy a dormir!
Cual fu la respuesta final del Operador? Justifique ampliamente.

1)
a)
N
1
0
8
1

1
4
5
1

0
1
3
1

1
0
4
2

+
+
+
+

1
1
0
3
3
1
2
3
5
0
5
3
8
8
0
9
9

1
1
0
2
2
1
1
4
5
4
1
4
5
5
0
5
5

1
0
1
2
3
1
2
1
3
1
2
1
3
3
0
3
3

1
1
0
2
2
2
0
3
3
0
3
1
4
4
0
5
5

Es seguro porque existe una secuencia en la cual pueden terminar todos los procesos.
b) Si, porque hay recursos disponibles para procesarlo y luego se liberan.
2)
Si los procesos se ejecutan al mismo tiempo puede ser que un proceso A ejecute una llamada al sistema
pidiendo el recurso R2 y se le asigne, luego el proceso B pide R1 y se le asigna, luego A pide R1 y se
bloquea luego B pide R2 y se bloquea quedando as en deadlock.

b)
while(true){
t_buffer rec_id[3] = get_recursos(); // devuelve aleatoriamente tres IDs de recursos

wait(mutex);
syscall_pedir(rec_id[0]); // Bloqueante si el recurso no se encuentra disponible.
syscall_pedir(rec_id[1]);
syscall_pedir(rec_id[2]);
usar_recursos(rec_id);
syscall_devolver(rec_id[0]);
syscall_devolver(rec_id[1]);
syscall_devolver(rec_id[2]);
signal(mutex);
}
c)
Hacer un grafo para que se asigne los recursos solo si no se va a formar un ciclo..
3)
- P3: una instancia de R1
m
3 2 0 2
3 4 1 1
9 5 1 5
3 4 1 3

N
1
0
7
1

1
4
5
1

0
1
0
1

1
0
4
2

+
+
+
+

1
1
0
3
3
1
2
3
5
0
5
3
8
7
1
9
10

1
1
0
2
2
1
1
4
5
4
1
4
5
5
0
5
5

1
0
1
0
1
1
0
1
1
1
0
1
1
0
1
1
2

1
1
0
2
2
2
0
3
3
0
3
1
4
4
0
5
5

- P4: una instancia de R3


max
3 2
3 4
9 5
3 4

0
1
1
1

N
1
0
8
1

2
1
5
3

1
4
5
1

0
1
0
0

1
0
4
2

+
+
+
+

2
1
1
3
4
1
3
3
6
0
6
3
9
8
1
9
10

1
1
0
2
2
1
1
4
5
4
1
4
5
5
0
5
5

0
0
0
0
0
0
0
1
1
1
0
1
1
0
1
1
2

1
1
0
2
2
2
0
3
3
0
3
1
4
4
0
5
5

- P3: una instancia de R1 y dos instancias de R4


No puede ser satisfecho porque no hay suficientes instancias de R4.
b)
Ponerlos en una cola de espera hasta que se les pueda asignar los recursos.
4)
max
N
2 2 1 1
1 1 1 1
0 0 0 2
2 0 0 2
2 0 0 2
- 0 0 0 2
2 2 0 0
1 1 0 0
0 0 0 0
0 0 1 2
0 0 0 2
+ 0 0 1 2
0 0 1 2
Queda en estado no seguro porque no se pueden completar todos los procesos por lo tanto hay que
hacer si o si el grafo de asignacin de recursos.
P1

R1

P3

R3

R2
P4

P2

R4

Como hay un bucle P1-R2-P3-R1 y el nmero de instancias no es suficiente se concluye que hay
deadlock.
5)
a) Algoritmo del avestruz porque en un SO de propsito general es poco probable que haya un deadlock
e implementar una estrategia de evasin hara bajar la performance del sistema.
b)
Seguramente que el sistema no es crtico para el funcionamiento del avin por lo cual se podra permitir
que el sistema entre en deadlock pero tener una forma de detectarlo y recuperarse del mismo.
c)
Una base de datos ya maneja de por s el tema de la sincronizacin y tiene mecanismos como los niveles
de aislamiento y timeouts para los bloqueos. No sera necesario un algoritmo de evasin de deadlock.
d)
En un servidor de juegos la performance suele ser crtica por lo cual no conviene tener un algoritmo de
evasin de deadlock pero si se podra permitir que el sistema entre en deadlock teniendo una forma de
detectarlo y recuperarse del mismo.
6)
Hay dos blucles pero eso no alcanza para decir que haya deadlock.
P3 termina si o si porque necesita una sola instancia de R3 que est disponible, luego libera la instancia
de R2 que tiene asignado y luego termina P2 y no hay ms bucles por lo tanto no hay deadlock.
7)
Deadlock porque si fuera livelock consumira tiempo de CPU y afectara a los procesos del conjunto B.