Sistemas Operativos. UTN Reg. Buenos Aires Práctica de

Anuncio
Sistemas Operativos.
Práctica de Sincronización.
UTN Reg. Buenos Aires
Prof.Graciela De Luca
1. Dado el siguiente grafo de precedencia , colocar los semáforos para asegurar la ejecución de los
procesos en ese orden.
S1
S2
S5
S4
S3
S6
S7
2. Sincronizar dos procesos A y B de tal manera que siempre el resultado de la ejecución sea
3. 50 y 200 en ese orden.
A
X=199
X=X+1
Print (' X en el A vale',X)
B
X= 500
X= X/10
Print (' X en el vale',X)
4. Colocar los semáforos de tal manera que se ejecute los procesos A,B,C en la siguiente
5.
6.
7.
8.
secuencia ABCABC
Colocar los semáforos de tal manera que se ejecute los procesos A,B,C en la siguiente
secuencia BACABABC
Colocar los semáforos de tal manera que se ejecute los procesos A,B,C en la siguiente
secuencia A(Bó C)A(BóC)
Colocar los semáforos de tal manera que se ejecute los procesos A,B,C en la siguiente
secuencia A(ByC)A(ByC)
El que sigue nos muestra 2 procesos concurrentes que comparten una variable global x (las
restantes variables son locales a los procesos).
Declaración, Inicialización de Variables y Semáforos
var x: entero
P1
P2
While (TRUE)
while (TRUE)
{
{
m = 2 * x – n;
leer_teclado (d);
imprimir (m);
x := d – c * 5;
}
}
a)Sincronizar los procesos para que P1 use todos los valores x suministrados por P2.
b)Sincronizar los procesos para que P1 utilice un valor Sí y otro No de la variable x, es decir, utilice los
valores primero, tercero, quinto, etc.
9. Se tienen 2 procesos paralelos:
int x = 0;
Proceso A
{
Proceso B
{
Sistemas Operativos.
Práctica de Sincronización.
UTN Reg. Buenos Aires
Prof.Graciela De Luca
while (TRUE)
x = x + 1;
}
while (TRUE)
print (x);
}
Sincronizar usando semáforos para que se escriba la secuencia: 0, 1, 2, 3, 4, 5 ...
10. Dada la siguiente secuencia lógica y los valores iniciales de los semáforos contador es:
i.
ii.
iii.
iv.
v.
vi.
X Y
Z
P(S) P(R) P(R)
P(C) P(B)
....... ........ .......
V(R) V(B) V(C)
V(S) V(S)
11. con valores iniciales S = 1, R = 0, B= 0, C = 1, y cuya secuencia normal de ejecución sería
XYXZXYXZ.
Se tienen 3 procesos: P1, P2 y P3: El código del proceso Pi (i=1, 2, 3) es:
Pi( )
{
/*Proceso Pi con i=1,2,3 */
while (TRUE)
printf(“Soy el proceso i \n”);
}
a)Se desea mostrar en la salida lo siguiente:
i. Soy el proceso 1
ii. Soy el proceso 2
iii. Soy el proceso 3
iv. Soy el proceso 1
v. Soy el proceso 2
b)Sincronizar mediante semáforos
c)Definir los semáforos e inicializarlos correctamente. Usar el mínimo número de semáforos
d)Sincronizar mediante mensajes.
12. Dados 4 procesos que cumplen las siguientes funciones:
X
P(S1)
Y
P(S2)
Z
P(S1)
W
P( S3)
P(S2)
-----------
P(S3)
---------
-------
-------
V(S3)
V(S 2)
V(S1)
V(S3)
V(S1)
a. Los valores iniciales de los semáforos son S1=2 y S2=S3=1.
b. Los procesos siguen un orden del tipo YXZW.
c. Se pide, determinar la traza de ejecución y si los procesos terminan o no.
13. Dados los siguientes procesos con su respectivos códigos y los valores iniciales de los
semáforos A =0, B= 1, C = 1, D=0.
i. X
Y
Z
ii. P(C)
P(D) P(C)
iii. P(D)
iv. .......
P(A)
........
.......
W
P(A)
P(B)
.......
Sistemas Operativos.
Práctica de Sincronización.
v. V(D)
V(B)
UTN Reg. Buenos Aires
Prof.Graciela De Luca
V(A)
V(C)
Indique los procesos que terminaron (y en que orden) y los que no.
Secuencia: Y- Z - X -W.
14. Dada la siguiente secuencia lógica y los valores iniciales S =1, T=0, B=1, C=0, D=0.
X
P(B)
P(T)
...
V(C)
Y
P(S)
...
...
V(T)
Z
P(C)
...
...
V(D)
Q
P(D)
...
...
V(B)
V(S)
Explique cuál es la secuencia normal de ejecución.
15. Explique qué pasa con la rutina A
P(R)
P(S)
P(T)
....
V(T)
V(S)
V(R)
desde el momento en que en la ejecución de V(T) los valores de los semáforos son T = -1, S = -1, R= 0,
hasta que finalice ella de ejecutarse íntegra.
.-.
.
16. Tengo un proceso productor P que deposita los mensajes en un Buffer de 30 posiciones. Luego
los retira y los procesa otro proceso intermediario R, que va depositando los mensajes
procesados en un Buffer de 5 posiciones otros dos procesos C1 y C2 los retiran e Imprimen
alternadamente , C1,C2, C1,C2, C1,C2 etc.
Realizar los algoritmos para los 4 procesos
PÆ|_________30_________|-Æ R Æ|________5______| Æ C1 y C2
17. Realice la sincronización para un proceso productor y otro consumidor en un buffer ilimitado.
18. De un ejemplo donde el algoritmo TSL produce inanición
19.
¿La solución planteada es válida?. En caso de que no lo sea, explique por qué
Typedef int semaforo;
typedef char* msg;
int
N=100;
/*Longitud del buffer */
semaforo mutex = 1;
/*Da la exclusión mutua */
semaforo lleno = 0;
/*Cuenta lugares llenos */
semaforo vacio = N;
/*Cuenta lugares vacíos */
Productor()
{
msg mensaje;
while(TRUE)
{
producir(mensaje);
down(&mutex);
down(&vacio);
entrar_msg(mensaje);
up(&mutex);
up(&lleno);
}
}
Consumidor()
{
msg mensaje;
while(TRUE)
{
down(&lleno);
down(&mutex);
remover_msg(mensaje);
up(&mutex);
up(&vacio);
consumir_msg(mensaje);
}
}
Descargar