Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional Planificación 1. Sean los cinco procesos descritos en la tabla siguiente: Proceso A B C D E Tiempo de creación 4 0 1 8 12 Tiempo de CPU 1 5 4 3 2 Si suponemos que tenemos un algoritmo de planificación que utiliza una política FIFO a) Tiempo medio de respuesta b) Tiempo medio de espera c) La penalización, es decir, el cociente entre el tiempo de finalización y el tiempo de CPU. Resolución Diagrama de Gannt E D C X B X A 0 1 2 X X X 3 4 5 6 7 8 9 10 11 12 13 14 15 Cola de Listos B, C, A , D, E X = tiempo de llegada al sistema TfA=6 TfB=5 TfC=8 TfD=5 TfE=3 a) Tmedioderespuesta= (6+5+8+5+3)/5 = 5,4 b) TeA=5 TeB=0 TeC=4 TeD=2 TeE=1 Tesp= 5+0+4+2+1= 12 5 c) TpenalA=6/1 TpenalB=5/5 TpenalC=8/4 TpenalD=5/3 TpenalE=3/2 2. Utilizando los valores del problema de la tabla anterior, calcular los tiempos medios de espera y respuesta para los siguientes algoritmos: a) Round-Robin con quantum q=1. b) Round-Robin con quantum q=4. Página 1/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional a) A B X C X D E X X X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 T=0 la cola de listos solo tiene a B y este pasa a ejecutar T=1 se le acaba el quantum de tiempo al B y llega C como la int. de reloj tiene prioridad, entonces B pasaría a la cola de listos y C queda detrásÎ B pasa a ejecutar nuevamente. T=2 se produce el intercambio BÍÎC queda B en copla de listos. T=3 se produce el intercambio CÍÎB queda C en cola de listos. T=4 se produce el intercambio BÍÎC primero y luego se carga A Î quedan B, A en la cola de listos (en ese orden). T=5 se produce el intercambio CÍÎB . Quedan A, C en cola de listos. T=6 se produce el intercambio BÍÎA . Quedan C, B en cola de listos. T=7 se produce el intercambio AÍÎC . Quedan B en cola de listos, ya que A finalizó. T=8 se produce el intercambio CÍÎB . Quedan C, D (llega en ese momento) en cola de listos. T=9 se produce el intercambio BÍÎC . Queda D en cola de listos, ya que el B finaliza. T=10 se produce el intercambio CÍÎD . Queda vacía la cola de listos , ya que el C finaliza. T=11 continúa ejecutando D ya que no hay procesos en cola de listos. T=12 se le acaba el quantum de tiempo al D y llega E como la int. de reloj tiene prioridad, entonces D pasaría a la cola de listos y E queda detrás Î D pasa a ejecutar nuevamente. T=13 se produce el intercambio DÍÎE . Queda vacía la cola de listos , ya que el D finaliza. T=14 continúa ejecutando ya que no hay procesos en cola de listos. T=15 E finaliza. Tiempo de espera = T finalización-T llegada-T CPU TeA=2 TeB=4 TeC=5 TeD=2 TeE=1 TeProm=(2+4+5+2+1)/5=2,8 Tiempo de respuesta TrA=7-4=3 TrB=9-0=9 TrC=10-1=9 TrD=13-8=5 TrE=15-12=3 Trprom=(3+9+9+5+3)/5=5,8 b) q=4 Página 2/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional A B X C X D E X X X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Tiempo de espera = T finalización-T llegada-T CPU TeA=5 TeB=4 TeC=3 TeD=2 TeE=1 TeProm=(5+4+3+2+1)/5=3 Tiempo de respuesta TrA=10-4 TrB=9-0=9 TrC=9-1=8 TrD=13-8=5 TrE=15-12=3 Trprom=(4+4+8+5+3)/5=4,8 3. Calcular el tiempo de espera medio para los procesos de la tabla utilizando el algoritmo “Primero el de tiempo restante menor” (SRTF). Proceso A B C D E Tiempo de creación 0 1 3 9 12 Tiempo de CPU 3 1 12 5 5 Este es un algoritmo Preemptive , donde se otorga el procesador al que menor tiempo restante estimado tiene. A X B X X C D X E X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Tiempo de espera = T finalización-T llegada-T CPU TeA=1 Página 3/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional TeB=0 TeC=11 TeD=0 TeE=2 TeProm=(1+0+11+0+2)/5=2,8 Tiempo de respuesta TrA=4-0=4 TrB=2-1=1 TrC=25-3=22 TrD=14-9=5 TrE=19-12=7 Trprom=(4+1+22+5+7)/5=7,8 4. Utilizando la tabla del ejercicio anterior, dibujar el diagrama GANTT para el caso de un sistema que utiliza un algoritmo con prioridades: Proceso A B C D E Prioridad 2 1 4 5 3 Como las prioridades son fijas asumimos que es un algoritmo NonPreemptive. A X B X C D E 0 X X X 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Tiempo de espera = T finalización-T llegada-T CPU TeA=0 TeB=2 TeC=1 TeD=12 TeE=4 TeProm=(0+2+1+12+4)/5=3,8 Tiempo de respuesta TrA=3-0=3 TrB=4-1=3 Página 4/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional TrC=16-3=13 TrD=26-9=17 TrE=21-12=9 Trprom=(3+3+13+17+9)/5=9 5. Consideremos los procesos cuyo comportamiento se recoge en la tabla siguiente: Proceso A B C D Tiempo creación 0 1 2 4 CPU 1 1 2 4 Bloqueo 2 1 1 - Comportamiento CPU Bloqueo CPU 1 2 1 1 2 1 1 1 2 - Bloqueo 1 - CPU 1 - Dibujar el diagrama de ocupación para los siguientes algoritmos: a) FIFO b) Round-Robin con q=3 RESPUESTA: A B C D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 T=0 READY A T=1 READY B T=2 READY C T=3 READY A B T=4 READY A B D T=5 READY B D C Página 5/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional T=6 READY D C T=7 READY C A B T=10 READY C A B T=12 b) Q=3 READY A B T=13 READY B C T=14 READY C A B C D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 T=0 READY A T=1 READY B T=2 READY C T=3 READY A B T=4 READY A B D T=5 READY B D C T=6 READY D C T=7 READY C A B T=9 READY C A B T=11 READY A B D T=12 READY B D C T=13 READY D C T=14 READY C D Página 6/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional 6. Rehacer el ejercicio anterior utilizando el algoritmo de “primero el más corto”, suponiendo que la estimación de cada ráfaga coincide con la duración de la ráfaga anterior. 7. Dados dos procesos : A : CPU15 DISCO 15 CPU5 DISCO5 CPU5 B: CPU10 DISCO20 CPU15 IMPRESORA 15 CPU 5 Tiempo del Sistema Operativo.=5 Quantum = 10 Retardo de Impresión = 10 Latencia de Disco = 5 3 1 New 8 Ready Exec Fin 2 5 Disco 4 7 6 Impresora Se pide calcular el tiempo de Finalización de cada proceso y mostrar la ejecución de cada módulo del Sistema Operativo. S 1 1 2 O A B A 3 2 A B 4 2 B A 4 A d i 5 2 B B s c 5 A 6 2 B A o 4 A 5 7 2 A B A I M P R E 1 0 1 5 2 5 8 A 2 B 5 5 0 5 6 0 8 B B d i s c o 6 7 7 5 0 5 8 0 8 9 9 5 0 5 A 0 5 1 0 1 2 2 5 0 5 3 0 3 4 4 5 0 5 5 0 5 6 5 0 1 5 0 0 2 0 3 0 3 5 4 0 4 5 6 5 7 0 8. Se deben itinerar 5 procesos con distintos algoritmos. Los procesos llegan todos al mismo tiempo en el siguiente orden: P1, P2, P3, P4 y P5. El tiempo de CPU y las prioridades son: Proceso P1 P2 P3 P4 P5 Prioridad 10 1 2 1 5 Tiempo de CPU 4 1 3 5 2 Página 7/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional Completar la siguiente tabla: Algoritmo Tiempo turn around Promedio Tiempo de Espera Promedio FCFS RR (tq=1) SJF Prioridad no Interrumpible 9. Final 22-07-2006 19 de Julio de 2006 – 9 PM, en una importante empresa de telefonía celular en EEUU. Nick, el Administrador de servidores, estuvo monitoreando un nuevo servidor que se compró para dar servicio de mensajes de texto a los clientes, cuyo software fue desarrollado por Tom. Durante dicho monitoreo, Nick ve que los indicadores de performance del sistema no son los correctos, por lo que decide realizar un análisis de la situación. Durante los primeros 15 minutos de análisis nota que está corriendo en el sistema operativo XP un proceso que no es fácilmente identificable, ya que el mismo ejecuta de forma esporádica, lo que hace que afecte a los procesos que se encuentran corriendo en el servidor. Dicha situación es preocupante debido que la Compañía no podrá brindar un buen servicio a los clientes, justo cuando mayor es la utilización de este tipo de servicio, debido a la víspera del Día del Amigo. Es por ello, que Nick decide llamar a Tom para ver si él le puede dar una solución. Lo que él le indica es que el sistema operativo utiliza un planificador Round Robin con un quantum de 3 ciclos con una única cola de bloqueados que atiende por FIFO. Esta cola de bloqueados tiene prioridad por sobre la de listos. A su vez, Tom le envía por fax a Nick el siguiente detalle con la ejecución de los 4 procesos que ejecuta el SW: P1 P2 P3 ULT A RCA Referencias ---------- T. Llegada en Ciclos 4 CPU (En Ciclos) ULT B 0 1 3 4 1 2 3 6 2 2 2 IO (En Ciclos) 1 2 1 1 CPU (En Ciclos) 2 3 IO (En Ciclos) 1 1 CPU (En Ciclos) RCA HB HA P3 P2 P1 X X X X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Condiciones Q=3 ciclos del S.O. para el Round Robin. q = 2 ciclos biblioteca de Threads Página 8/24 24 2 5 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional 1) T=0 el único procesos en el sistema es P1 Î pasa a ejecución. 2) T=1 P1 está en ejecución Ready P2 3) T=2 Llega el proceso 3 con sus 2 hilos P1 está en ejecución Ready P2 P3 4) T=3 P2 está en ejecución Ready P3 Bloqueados I/O P1 5) T=6 P3 está en ejecución HA ejecuta 1 ciclo y pide I/O Ready P2 Bloqueados I/O P1 6) T=7 P2 está en ejecución Ready P2 Bloqueados I/O P1 P3:H1 7) T=8 RCA pasa a ejecución durante 3 ciclos Ready P2 Bloqueados I/O P1 P3:HA P2 8) T=9 RCA en ejecución Ready P1 Bloqueados I/O P3:H3 P2 9) T=11 P1 pasa a ejecución P3 vuelve de I/O y RCA termina su quantum, como I/O tiene prioridad entonces queda : Ready P3 RCA Bloqueados I/O P2 10) T=12 P3:HA pasa a ejecutar 1 ciclo y finaliza. Ready RCA Bloqueados I/O P2 P1 11 ) T=13 P3:HB durante 2 quantums Ready RCA P2 Bloqueados I/O P1 12) T=15 RCA ejecuta 1 ciclo y finaliza Ready P2 P1 P3:HB Bloqueados I/O 13)T=16 P2 ejecuta Ready P1 P3:HB Bloqueados I/O 14)T=18 Ejecuta P1 y finaliza Ready P3:HB Bloqueados I/O P2 15) T=19 Ejecuta P3:HB Ready Bloqueados I/O 16) T=20 Ejecuta RCA Ready Bloqueados I/O P2 P3:HB 17) T=21 Ejecuta RCA Ready P2 Bloqueados I/O P3:HB 18) T=23 Ejecuta P2 y finaliza Ready P3:HB RCA Bloqueados I/O 19) T=24 Ejecuta P3:HB Ready RCA Bloqueados I/O 20) T=25 Ejecuta RCA y finaliza Ready Bloqueados I/O Página 9/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional 10. FINAL 06/12/2003 Un sistema computacional de un solo procesador planifica el procesamiento de trabajos según el siguiente modelo: Fin de Quantum Cola de largo Cola de corto plazo plazo CPU Llegada Salida Cola de E/S E/S Planificación Largo Plazo Planificación Corto Plazo La planificación de largo plazo se encarga de mantener el grado de multiprogramación en tres procesos, usando una política SJF (Shortest Job First). En el corto plazo el procesador es asignado usando una política de Round-Robin con un quantum de 2 unidades de tiempo. Considere los siguientes datos: Proceso Tiempo de llegada 0 0 2 4 10 15 P1 P2 P3 P4 P5 P6 CPU E/S CPU 5 2 3 6 2 3 3 4 4 2 3 4 3 3 2 2 2 4 Tiempo estimado de proceso (SJF) 12 10 8 11 7 12 Para la resolución del ejercicio, si existe coincidencia de tiempos en los eventos de entrada a la cola de corto plazo, ordénelos arbitrariamente en el siguiente orden: 1°) fin de E/S, 2°) Cola de Largo Plazo y 3°) fin de quantum. Suponiendo que el overhead para el cambio de contexto es despreciable y que existe un único dispositivo de E/S (el cual planifica FIFO) se pide la traza de ejecución de los procesos mediante un Diagrama de Gantt. SOLUCIÓN CPU P2 P2 P1 P1 P3 P3 P1 P1 P2 P2 P3 P1 P2 P5 P5 P3 P3 P4 P4 P1 P1 P4 P4 P5 P5 E/S 1 P2 P2 P2 P2 2 3 4 5 6 7 CPU P1 P4 P4 P6 P6 P4 P4 P6 8 P3 P3 P3 P3 P1 P1 P1 P5 P5 P5 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 P6 P6 P6 P6 Página 10/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional E/S P4 P4 P6 P6 P6 P6 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Proceso Instante en que ingresa Instante en que finaliza P1 0 26 P2 0 (encola primero por SJF) 13 P3 2 17 P4 17 32 P5 13 25 P6 25 41 11. Un sistema distribuido cuenta con dos maquinas Pentium 200 MMX con 65 Mb de memoria. La maquina A usa algoritmo SRT (Shortest Remaining time) para dispacher y solo posee un disco rígido de 1.8 Gb y la maquina B usa algoritmo FIFO y tiene una impresora láser blanco y negro. Solo se migran los procesos por la falta de recursos, y esto consume un ciclo de reloj. Dibuje cada cola de Listos, ejecutados y bloqueado para cada ciclo. Los relojes de ambas maquinas están perfectamente sincronizados. Proceso 1 Maquina A Ciclo inicio 0 2 B 0 3 A 1 Recurso CPU Disco CPU CPU Disco CPU CPU Impresora CPU Ciclo duración 3 1 2 1 2 4 1 2 1 Sincronización, Semáforos y Deadlock 12. De un ejemplo donde el algoritmo que utiliza TSL produce inanición (Starvation) Supongamos que tenemos tres procesos A, B y C y las variable ocupado=0 READY A B C BLOCK En este instante A que está en ejecución hace TSL(ocupado) dejando ocupado=1 READY B C, A BLOCK Página 11/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional Luego pasa B a ejecución y hace TSL(ocupado) quedando en espera activa . Luego C pasa de bloqueados a Listos, ubicándose detrás de A en la cola. Cuando se le acaba el quantum de tiempo a B pasa a Listos y A a EJECUCIÓN. READY A B, C BLOCK A coloca ocupado = 0 Cuando C pasa a ejecución hace TSL(ocupado) como ocupado estaba en 0 lo coloca en 1 y pasa a utilizar la región critica, ingresando a esta antes que B y si esta situación se repite B puede padecer inanición 13. dados los procesos A y B con variables compartidas, se pide verificar si pueden ejecutar en paralelo. De no ser así en que orden podrían ejecutar. A B c=b+d m=6*x+k h=c+f+g print m/c print c Según las condiciones de Berstein RA={ b,d,c,f,g,} RB={x,k,m,c} WA={c,h} WB={m} RA∩WB=Ø WA∩WB=Ø RB∩WA={c} Este grupo de sentencias no se pueden ejecutar en paralelo c=b+d h=c+f+g print c m=6*x+k print m/c 14. Dado el siguiente grafo de precedencia, colocar los semáforos para asegurar la ejecución de los procesos en ese orden. Página 12/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional RESOLUCIÓN Valores Iniciales de los semáforos a=1 b1=b2=b3=c1=c2=d1=d2=d3=d4=0 S1 P(a) ---------V(b1) V(b2) V(b3) S2 P(b1) ------------V(c1) V(c2) S3 P(b2) ------------v(d3) S5 P(c1) ------------------------V(d1) S6 P(c2) ---------------------------v(d2) S4 P(b3) ------------V(d4) S7 P(d1) P(d2) P(d3) P(d4) -------------V(a) 15. Sincronizar A y B de tal manera que: a.- Siempre el resultado de la ejecución sea 50 y 200 o 200 y 50. b.- Siempre el resultado de la ejecución sea 50 y 200 A B Página 13/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional X=199 X=x+1 Print (X) X=500 X=X/10 Print(X) RESOLUCIÓN a.- Como no se necesita darle un orden a la ejecución sólo se debe poner mutua exclusión, por lo tanto con un semáforo basta. A B P(mutex) P(mutex) X=199 X=500 X=x+1 X=X/10 Print (X) Print(X) V(mutex) V(mutex) b.- Aquí se necesita darle un orden a la ejecución por lo tanto se utilizará semáforos cruzados. A B P(s) P(k) X=199 X=500 X=x+1 X=X/10 Print (X) Print(X) V(k) V(s) Para que B se ejecute primero el valor del semáforo k debe estar en 1 y s en 0 k=1 s=0 16. Colocar los semáforos de tal manera que los procesos A, B, C ejecuten siempre en la secuencia ABCABC… A P(s) -------------V(k) B P(k) ---------V(r) P(r) ---------V(s) Para que A ejecute primero s=1, k=0, r=0 17. Colocar los semáforos de tal manera que los procesos A, B, C ejecuten siempre en la secuencia BACABACA… B P(s) ------- C P(k) ------- V(k) V(s) Para comenzar con B el valor inicial de s=1 k=0 Luego para interambiar con A el valor inicial de a=0 Página 14/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional A P(a) ------V(b) B P(s) P(b) ------V(k) V(a) C P(k) P(b) ------V(s) V(a) 18. Colocar los semáforos de tal manera que los procesos A, B, C ejecuten siempre en la secuencia A(BóC)A(BóC)… Si queremos que BóC ejecuten solo uno a la vez podríamos reemplazarlos por un proceso X A P(k) ------- X P(s) ------- V(s) V(k) B P(s) ------- C P(s) ------- V(k) V(k) Entonces combinamos las dos soluciones A P(k) ------- B P(s) ------- C P(s) ------- V(s) V(k) V(k) Para comenzar con el proceso A inicializamos k=1 y s=0 19. Colocar los semáforos de tal manera que los procesos A, B, C ejecuten siempre en la secuencia A(ByC)A(ByC)… A P(k) P(k) ------V(s) V(a) Página 15/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional B P(s) ------- C P(a) ------- V(k) V(k) Valor inicial del semáforo k=2, s=0,a=0 20. El que sigue nos muestra 2 procesos concurrentes que comparten una variable global x (las restantes variables son locales a los procesos). While (TRUE) { m = 2 * x – n; imprimir (m); } Declaración, Inicialización de Variables y Semáforos var x: entero P1 P2 while (TRUE) { leer_teclado (d); x := d – c * 5; } a) Sincronizar los procesos para que P1 use todos los valores x suministrados por P2. Declaración, Inicialización de Variables y Semáforos var x: entero P1 P2 While (TRUE) while (TRUE) { { P(s) P(k) m = 2 * x – n; leer_teclado (d); imprimir (m); x := d – c * 5; V(k) V(s) } } s=0, k=1 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. Declaración, Inicialización de Variables y Semáforos var x: entero P1 P2 n=0 While (TRUE) while (TRUE) { { P(s) P(K) m = 2 * x – n; n++; imprimir (m); leer_teclado (d); V(K) x := d – c * 5; } if (n mod(2)=0) v(k); else V(s); } n es una variable local a P2 Página 16/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional Otra solución: Declaración, Inicialización de Variables y Semáforos var x: entero P1 P2 while (TRUE) { P(K) While (TRUE) { P(s) P(s) leer_teclado (d); x := d – c * 5; V(s); m = 2 * x – n; imprimir (m); V(K) V(K) } } K=1, s=1 para que la primera vez ejecute. 21. Se tienen 2 procesos paralelos: int x = 0; Proceso A Proceso B { while (TRUE) x = x + 1; } { while (TRUE) print (x); } a) Sincronizar usando semáforos para que se escriba la secuencia: 0, 1, 2, 3, 4, 5 ... b) Sincronizar usando semáforos para que se escriba la secuencia: 1, 4, 7,10,13 ... 22. Dadas la siguiente secuencia lógica y los valores iniciales de los semáforos, verificar si esta es la secuencia normal de ejecución y si está bien realizada la sincronización. X P(S) P(C) Y P(R) P(B) V(R) V(S) V(B) V(S) Z P(R) V(C) Con los valores iniciales de S=1,R=0,B=0,c=1 y cuya secuencia normal de ejecución sería XYXZXYXZ S 1 0 R 0 C 1 B 0 X 1 1 0 P(R) P(B) -1 -1 -1 Z Q P(S) P(C) ---V(R) V(S) 0 0 Y Y ÆQB P(S) P(C) P(R) X ÆQC Z ÆQR Página 17/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional P(C) Esta sincronización esta mal realizada ya que todos los procesos terminan bloqueados. 23. 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. RTA: V(T) V(S V(R) T -1 0 0 0 S -1 -1 0 0 R 0 0 0 1 Al finalizar la rutina A, los semáforos quedan con valores no negativos. 24. Si la rutina de WAIT o P( ) que asocia un semáforo a una cola, guarda los pedidos de espera en la forma de pila (LIFO), ¿Qué problema puede acarrear? Respuesta: No respetaría el orden de los pedidos y podría algún proceso padecer inanición. 25. Dada la siguiente secuencia lógica y los valores iniciales: X P(B) P(T) ... V(C) Y P(S) ... ... V(T) Z P(C) ... ... V(D) Q P(D) ... ... V(B) V(S) Valores iniciales S =1, T=0, B=1, C=0, D=0. Explique cuál es la secuencia normal de ejecución. RESPUESTA: Para encontrar la secuencia normal de ejecución debemos seguir los valores de los semáforos habilitados . Como S=1 y B=1 podríamos comenzar por la ejecución con X, pasa el semáforo B y se bloque a en el semáforo T , por lo tanto solo podrá ejecutar Y primero Y ,cuando este finaliza habilita el sem. T ,entonces ejecuta X . este habilita el semáforo C , entonces puede ejecutar Z, que habilita el sem D y puede ejecutar Q que deja B=1 y S=1 Æ la secuencia normal es YXZQ 26. Para calcular el número combinatorio (n k) = n(n-1)(n-2)...(n-k+1)/k!, desarrollamos un programa con dos procesos. El proceso P1 calcula el numerador y deposita el resultado en una variable compartida, denominada x, mientras que P2 calcula el factorial y deposita el valor en la variable y. Sincronizar los procesos P1 y P2, utilizando semáforos, para que el proceso P2 realice la división, es decir x/y. Inicialización de variables globales y semáforos N, k, x=1, y=1, enteros Página 18/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional P1 P2 Y=:1 For j=2 to k do { For i= n – k +1 to n do { X = x + i; y:=y * j; } } escribir (x/y); RESPUESTA: Se Agrega el semáforo s inicializado en 0 Inicialización de variables globales y semáforos N, k, x=1, y=1, enteros s:=0 : semáforos P1 P2 Y=:1 For j=2 to k do Begin For i= n – k +1 to n do Begin X = x + i; y:=y*j; End; Signal (s) end wait (s); escribir (x/y); 27. Dada la siguiente situación: Hay un puente colgante sobre el río, tan angosto que sólo una persona puede cruzar a la vez. Implementar algún tipo de sincronización para ordenar el paso por el puente y evitar también la espera indefinida en una u otra orilla 28. Final:03/03/2001 Ejercicio 2 Muestre en forma clara de que manera se ejecutarán los siguientes procesos, considerando que se ejecutan en paralelo, y detalle que procesos terminaron y cuales no y por que razón. Inicialización de los semáforos: I, B, A, C, P = 0 M, K, G = 1 P1 P2 P3 P4 P5 P6 Página 19/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional D(I) U(I) D(P) U(P) D(K) D(M) U(A) D(I) U(I) D(K) U(M) U(B) D(C) D(G) U(G) D(A) D(A) U(I) D(K) U(K) D(P) U(C) D(P) D(M) D(G) U(M) D(K) D(K) U(A) D(I) U(I) D(M) U(K) Resolución: A 0 B 0 C 0 G 1 I 0 K 1 M 1 P 0 P1 P2 P3 P4 P5 P6 Bloqueados: Deadlock: Starvation: Termina: 29/12/01 Resuelva la siguiente tabla sabiendo que el semáforos C esta inicializado en 1 y el resto se encuentran en 0. P1 D(M) D(I) U(R) U(J) U(I) U(P) P2 D(E) D(B) D(A) U(E) D(L) U(A) P3 D(R) D(I) D(J) U(E) U(I) U(B) P4 D(B) D(c) D(O) U(E) D(P) U(L) P5 D(C) U(A) U(I) U(C) U(M) U(O) Resolución: A B C E I J L M O P R P1 P2 P3 P4 P5 Página 20/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional 0 0 1 0 0 0 0 0 0 0 0 P1, P2, P4 quedan bloqueados P3 y p5 terminan. 17/02/2001 De existir, muestre una secuencia de eventos para los cuales P1 , y P2 entran en DEADLOCK. Los semáforos son: s1, s2 (Semáforos Mutex). Void P1() { While(1) { Down (s1); Down (s2); Printf(“Bambu”); Up (s1); Up (s2); } } Void P2() { While(1) { Down (s2); Printf(“Guetzel”); Down (s1); Up (s2); Up (s1); } } Respuesta: El enunciado nos dice que ambos semáforos (s1 y s2) son Mutex. Esto quiere decir que se encuentran inicializados en 1. Ambos procesos (p1 y p2) se ejecutan al mismo tiempo. Cuando P1 ejecuta la sentencia: Down (s1); S1 que estaba en 1 pasa a estar en 0 y supongamos que en ese instante se le acaba el quantum de tiempo y ejecuta P2 haciendo un Down (s2); S2 estaba en 1 pasa a estar en 0 y cuando P2 ejecute S1 queda bloqueado. Cuando le vuelve a tocar el procesador a P1 ejecuta S2 y queda bloqueado Página 21/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional Entonces ambos procesos quedan en DEADLOCK 29. En un sistema de computación real, ni los recursos disponibles ni los requerimientos de los procesos por recursos se mantienen por largo tiempo. Los recursos se rompen o son reemplazados, los procesos vienen y van, se agregan nuevos recursos al sistema, etc. Si en tal sistema, los bloqueos se controlan con el algoritmo del banquero, ¿cuáles de los siguientes cambios se puede hacer con seguridad (sin introducir posibilidad de bloqueos) y bajo qué circunstancias?: Incrementar AVAILABLE (se agregan nuevos recursos). Decrementar AVAILABLE (se eliminan recursos del sistema). Incrementar MAX para un proceso (el proceso necesita más recursos que los permitidos). Decrementar MAX para un proceso (el proceso decide que no va a necesitar algunos recursos). Incrementar el número de procesos. Decrementar el número de procesos. 30. Hallar la matriz de necesidad. Tener en cuenta que el sistema usa el “Algoritmo del Banquero” para bloquear a los procesos que piden más recursos que los disponibles. Solo se asignara a un proceso los recursos que necesite, si estos son todos los que va a necesitar para completar la ejecución. El número de los procesos corresponde con el orden de llegada. Se deberá utilizar el algoritmo de planificación FCFS. Además indicar si el sistema es seguro o no (o sea verificar si ningún proceso queda sin los recursos necesarios). P1 P2 P3 P4 P5 Peticiones Máximas R1 R2 R3 R4 2 3 2 5 1 2 6 3 0 2 4 5 3 0 5 2 3 4 5 4 R1 1 Disponibles R2 R3 0 9 R4 4 P1 P2 P3 P4 P5 Recursos Asignados R1 R2 R3 R4 0 3 1 3 1 1 3 2 0 2 1 0 2 0 2 0 1 3 5 2 31. Escribir un algoritmo para sincronizar el paso de vehículos sobre un puente con una sola dirección de circulación. Los vehículos arriban al puente desde ambas direcciones, pero sólo pueden pasar de una dirección por vez. No hay restricción acerca de la cantidad de vehículos que pueden estar sobre el puente al mismo tiempo. ¿Hay starvation?; si la hay, ¿cómo hacer pare evitarla?. ¿Puede haber Deadlock?. Explicar porqué. 32. 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”); } Se desea mostrar en la salida lo siguiente: Soy el proceso 1 Soy el proceso 2 Soy el proceso 3 Soy el proceso 1 Soy el proceso 2 …………………………… a) Sincronizar mediante semáforos Página 22/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional 1. Definir los semáforos e inicializarlos correctamente. Usar el mínimo número de semáforos 2. Reescriba los tres procesos con los semáforos incorporados b) Sincronizar mediante mensajes. Se pide el mínimo código. ¿Cómo parte? 33. Dados 4 procesos que cumplen las siguientes funciones: P X S1 Y S2 S2 S3 V3 V2 V Z S1 W S3 V1 V3 V1 Los valores iniciales de los semáforos son S1=2 y S2=S3=1. Los procesos siguen un orden del tipo YXZW. Se pide, determinar la traza de ejecución y si los procesos terminan o no. 34. 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. X P(C) Y P(D) P(D) ....... P(A) ........ V(D) V(B) Z P(C) W P(A) ....... V(A) P(B) ....... V(C) a) Indique los procesos que terminaron (y en que orden) y los que no. Secuencia: Y- Z - X -W. 35. Cambie los semáforos del ejercicio anterior para que el sistema sea SEGURO y no quede ningún proceso bloqueado. 36. . Los siguientes procesos se ejecutan en paralelo. Utilizando semáforos, especifique cuales terminaron y cuales no. Inicialización de los semáforos: I, B, A, C, P = 0 M, K, G = 1 P1 D(I) U(I) D(P) U(P) D(K) P2 D(M) U(A) D(I) U(I) D(K) U(M) P3 U(B) D(C) D(G) U(G) P4 D(A) D(A) U(I) D(K) U(K) D(P) U(P) P5 U(C) D(P) D(M) D(G) U(M) D(K) U(G) P6 D(K) U(A) D(I) U(I) D(M) U(K) U(P) 37. -Realice la sincronización de 4 procesos A ---> |____10______| --->BDBD(una vez cada uno, en ese orden) ----->|colalimitada------> C -Genera mensajes - Retira mensajes -Retira mensajes Página 23/24 Guia de Ejercicios de Sistemas Operativos Prof. Graciela De Luca Planificación , Sincronización y comunicación de Procesos. Universidad Tecnológica Nacional -Deposita mensajes - Procesa el mens Consume el mens. -Deposita mens. 38. Realice la sincronización de 4 procesos A ----> |______ilimitada____| ----->B--->|___5___|------> C y D (en forma alternada estrictamente) -Genera mensajes - Retira mensajes -Retira mensajes -Deposita mensajes - Procesa el mens -Consume el mens. -Deposita mens. 39. Tengo un proceso productor que deposita los mensajes en un Buffer de 30 posiciones. Luego los retira y los procesa otro proceso intermediario, que va depositando los mensajes procesados en un Buffer de 5 posiciones otros dos procesos C1 y C2 los retiran e Imprimen altenadamente , C1,C2, C1,C2, C1,C2 etc. 40. .Realizar los algoritmos para los 4 procesos. Se plantea a los alumnos de la Universidad Tecnológica Nacional, en un parcialito de un curso de Sistemas Operativos, resolver el problema del productor/consumidor con buffer ilimitado. Se pide a los alumnos que implementen la función productor y la función consumidor utilizando semáforos y evitando que se produzcan problemas de concurrencia. Uno de los alumnos entrega la siguiente solución: int n; semaphore s=1; semaphore esperar=0; Void productor(void) { while (1) { producir(); wait(mutex); añadir(buffer); n++; if (n==1) signal(esperar); signal(mutex); } } void consumidor(void) { while (1) { wait(mutex); retirar(buffer); n--; if (n==0) wait(esperar); signal(mutex); consumir(); } } Dicha solución se ha corregido como incorrecta en el examen. Uno de los profesores se ha confundido y ha vuelto a tomar el mismo examen. Usted ya había visto el ejercicio porque había pedido el examen y se pone contento porque ya lo ha practicado con sus compañeros, por lo que se le pide que: a) Encontrando un contraejemplo, demuestre que esta solución no es válida. b) Corregir el código de manera que el problema encontrado en el punto anterior sea solucionado. Respuesta a-1.-Como el semáforo mutex está inicializado en 1 por defecto el consumidor puede retirar un elemento del buffer vacio. a-2.-No hay un valor inicial de n .Si n está inicializado en 0, ya que no hay mensajes, al decrementar n queda en -1 por lo tanto n estaría demás ya que wait pregunta por el valor del semáforo esperar.. a-3 wait (esperar) no debe estar dentro del mutex ya que produce deadlock al bloquear el consumidor y no habilitar el mutex. Luego ejecuta el productor y queda bloqueado a la espera de la habilitación del mutex. Página 24/24