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); } }