Sistemas Operativos Práctico de Procesos, Hilos y Deadlock Universidad Nacional de Córdoba FaMAF Ejercicio 1.. Indique cuantas letras a imprime este programa, describiendo su funcionamiento. printf("a\n"); Generalice a n forks. (Analice para n=1, luego para n=2, etc., busque la serie y deduzca la expresión general en función del n.) Ejercicio 2.. Dados estos 3 procesos en paralelo 1 : Pre: x = 0 P 0 : a 0 = x ;a 0 = a 0 + 1 ;x = a 0 P 1 : x = x + 1 ;x = x + 1 P 2 : a 2 = x ;a 2 = a 2 + 1 ;x = a 2 (a) Qué valores finales puede tomar x? (b) Muestre para cada uno de los valores un escenario de ejecución que los produzca. (Numere las sentencias y construya la secuencia en base a la numeración.) (c) Cuántos escenarios de ejecución hay? Cuántos para cada valor final de x? (d) Modifique el programa agregando semáforos para que el resultado del multiprograma sea determinista (es decir, que no dependa del scheduler) y devuelva el mínimo valor posible. Ejercicio 3.. Utilize semáforos para sincronizar los procesos como lo indican los grafos de sincronización. Explicitar los valores iniciales de los semáforos. (a) A B C D (b) A B (c) B (d) A C D A D B D C C Ejercicio 4.. El siguiente programa asegura exlusión mutua en las regiones críticas: i0 && i1 && t==0 Proceso P0 1: while (1) { 2: {Región no crítica 3: (i0,t) = (true,1) 4: while (t==1 && i1); 5: {Región crítica 6: i0 = false 7: Proceso P1 A: while (1) { B: {Región no crítica C: (i1,t) = (true,0) D: while (t==0 && i0); E: {Región crítica F: i1 = false G: 1 En general, y salvo que explícitamente se diga lo contrario, consideraremos la atomicidad a nivel de sentencia.
Las sentencias 3 y C son asignaciones múltiples que se realizan de manera atómica. Por ejemplo, para el caso de la sentencia 3, las asignaciones y0 = 1 y s = 0 se realizarían en un solo paso de ejecución. Éste protocolo es demasiado exigente en el sentido de que requiere la ejecución de múltiples asignaciones en un sólo paso de ejecución ( se necesitaría implementar un mecanismo de exclusión mutua en sí mismo para administrar esta atomicidad!). Analice cuál de las posibles realizaciones de este protocolo de exclusión mutua en el cual las asignaciones ya no son atómicas y hay que darle un orden determinado es correcta. Ejercicio 5.. Considere los procesos: Pre: cont == true && x == 1 && y == 2 P0 : while (cont==true && x<20) { x = x * y; (a) Calcule los posibles valores finales de x e y. Post: cont == FALSE && x ==? && y ==? P1 : y = y + 2; cont = FALSE; (b) Si en P1 se cambia la instrucción y = y + 2; por y = y + 1; y = y + 1; Cambia esto los posibles valores finales? Justifique. (c) En caso de que la modificación en el punto anterior introduzca cambios en los posibles valores finales, utilice semáforos binarios para que vuelvan a devolver los mismos posibles valores del caso (a). Ejercicio 6.. Considere los procesos P0 y P1 a continuación P0 : while (n<100) { n = n*2; m = n; Pre: n==0 && m==0 Post: n==? && m==? P1 : while (n<100) { n = n+1; m = n; (a) A cuánto pueden diferir como máximo m y n durante la ejecución? (b) Cuántas iteraciones toman en el mínimo y máximo caso en terminar? (c) Qué valores pueden tomar n y m en la Post? Justifique de manera rigurosa. (d) Sincronice los procesos con semáforos de manera que se alternen entre P0 y P1 en cada iteración hasta el final de sus ejecuciones. Qué valor toman n y m al finalizar? Ejercicio 7.. Considere los procesos (en este ejercicio considere el caso en que las sentencias son atómicas, y el caso en que no lo son): Pre: importe==100 && iva==0 && gasto envio==100 && destino==? P0 : importe = importe + gasto_envio; P2 : if (destino=="arg") { iva = 0.21; gasto_envio = gasto_envio + 100; P1 : importe = importe + importe * iva; else { gasto_envio = gasto_envio + 200; iva = 0.1;
(a) Calcule los posible valores finales de la variable importe cuando destino=="arg" y cuando destino=="bra". (b) Suponga que se cambia P1 por P1 donde: P1 : importe = importe * (1 + iva) Cambia esto los posibles valores finales? Justifique. (c) Sincronice los procesos usando semáforos para que siempre se ejecuten en orden P2, P0, y finalmente P1. Ejercicio 8.. Completar las tablas de planificación que aparecen debajo para las políticas: FIFO, SJF, SRTN, RR(Q=2), RR(Q=3), RR(Q=4). En cada caso realice el diagrama de planificación a modo de justificación del ejercicio. (T = tiempo total en el sistema, M = tiempo de espera en el sistema, P = penalidad) (a) Proceso Arribo UsoCPU Inicio Fin T M P A 2 3 B 0 1 C 4 2 D 7 4 E 1 6 (b) Proceso Arribo UsoCPU Inicio Fin T M P A 0 2 B 2 6 C 4 3 D 5 9 E 9 6 Ejercicio 9.. Considere los siguientes procesos que muestran el siguiente comportamiento: Proceso Arribo A 0 3 5 2 4 4 4 2 B 2 8 4 5 4 7 6 4 C 5 3 7 5 5 2 8 3 Realice el diagrama de planificación para un planificador RR (Q=2). Ejercicio 10.. Realice el diagrama de planificación para un planificador RR (Q=2) con cuatro colas de prioridades para los siguientes procesos (la prioridad 0 es la más alta): Proceso Prioridad Arribo UsoCPU Inicio Fin T M P A 1 0 7 B 0 1 3 C 0 2 4 D 2 4 3 E 1 7 4 F 0 12 3
Ejercicio 11.. Tenemos dos procesos periódicos de tiempo real A, B: Proceso UsoCPU Periodo A 15 ms 30 ms B 15 ms 40 ms C 5 ms 50 ms (a) Analice si los procesos cumplen con la condición de planificabilidad en tiempo real. (b) Realice el diagrama temporal de planificación para RMS y EDF e indique en cada caso si los deadlines se cumplen. Ejercicio 12.. Considere los siguientes tres procesos que se ejecutan concurrentemente: P 0 : request(impresora) P 1 : request(impresora) ;request(cd) P 2 : request(cd) ;request(impresora) ;request(cd) (a) Dé la planificación que lleva a un estado de deadlock. (b) Sobre el escenario final de deadlock construya el grafo de recurso-asignación. (c) Agregue semáforos de manera de evitar que los procesos entren en deadlock. Trate de maximizar la concurrencia. (d) Como solución alternativa, modifique mínimamente el órden de los pedidos y liberaciones para que no haya riesgo de deadlock. Ejercicio 13.. Asuma un sistema operativo donde periódicamente se mata algún proceso al azar. Puede haber deadlock en este contexto? Ejercicio 14.. Se tiene el siguiente EAR con 5 procesos y 4 clases de recursos con los valores P0 1 0 2 0 0 0 0 0 0 1 0 2 P1 0 0 0 2 3 7 0 0 P2 2 0 4 0 2 5 2 4 P3 1 3 0 1 0 0 2 2 P4 2 3 2 0 2 3 0 0 (a) Están estos procesos en un estado seguro, inseguro o en deadlock? Por qué? Cuáles procesos, si es que los hay, están en deadlock? (b) Si el proceso P3 pide (0,1,0,0), puede concederse? Qué pasaría si se lo concede de manera inmediata? Cuáles procesos, si es que los hay, están o podrían estar en deadlock si este pedido fuera concedido? Ejercicio 15.. Tenemos un EAR con 4 procesos y 5 clases de recursos. Los valores de los vectores y matrices son como se establece a continuación P0 1 0 2 1 1 0 1 0 0 2 0 0 x 1 y P1 2 0 1 1 0 0 2 1 0 0 P2 1 1 0 1 0 1 0 3 0 0 P3 1 1 1 1 0 0 0 1 1 1 Para qué valores de x resulta seguro si y = 2? y si y = 1? Justifique su respuesta.
Ejercicio 16.. Tenemos un EAR con 4 procesos y 4 clases de recursos. Los valores de los vectores y matrices son como se establece a continuación. P0 1 2 2 2 0 3 0 y 3 0 3 0 P1 3 2 1 1 3 0 2 0 P2 1 1 0 0 2 0 3 0 P3 1 0 1 1 6 0 1 x Qué conjunto de valores puede tomar x para que el EAR resulte seguro si y = 2? y si y = 1? Justifique su respuesta. Revisión 1786, 2012-10-12