Ingeniería Superior de Informática. Curso 3º. Sistemas Operativos Examen Final. TEORÍA. 13 de Septiembre de 2004 Nombre: DNI: P1. ¿En qué situaciones se puede producir un cambio de contexto en un sistema con un planificador basado en el algoritmo SJF (Shortest Job First) además de cuando se bloquea o se termina el proceso? a. Cuando se pone en estado de listo un proceso con mayor prioridad. b. En ninguno más. c. Cuando se pone en estado de listo un proceso cuya próxima racha tiene una duración prevista menor que la del proceso que está ejecutando. d. Cuando se termina el cuanto del proceso. P2. Cuál de las siguientes situaciones NO produce la activación del sistema operativo? a. Fallos de página. b. Interrupciones. c. Excepciones (p.ej. dividir por cero). d. Activación del bit de referencia de una página. P3. ¿De qué tipo es el mecanismo de paso de mensajes msg*** de UNIX? a. Síncrono con denominación directa. b. Asíncrono con denominación indirecta. c. Asíncrono con denominación directa. d. Síncrono con denominación indirecta. P4. (a) ¿En qué consiste el problema de “inversión de prioridad” en relación con los semáforos? (b) ¿Cómo se resuelve? P5. Comentar el formato típico de una entrada en la tabla TMP de una memoria virtual (campos que incluye, significado y tamaño) P6. (a) ¿Qué principales contenidos se pueden encontrar típicamente en un fichero ejecutable? (b) ¿Qué regiones componen el mapa de memoria de un programa en ejecución y cómo se relacionan con los contenidos del fichero ejecutable? P7. ¿Qué es cierto con relación a la cache de disco del sistema de ficheros Unix? a. Los bloques de nodos-i no se mantienen en cache. b. Los bloques de directorio no se mantienen en cache. c. Acelera las lecturas pero no las escrituras. d. Aumenta las prestaciones y disminuye la fiabilidad del sistema. P8. ¿Qué función NO realiza típicamente un controlador (driver) de un dispositivo de E/S a disco? a. Traducir un número de bloque lógico a un sector concreto de un disco. b. Asignar bloques lógicos libres. c. Comprobar si ha habido algún error al transferir de datos entre disco y memoria principal. d. Programar el DMA. P9. ¿Dónde guarda UNIX la posición siguiente a leer o escribir (puntero) de un fichero por parte de un proceso? a. En el array de descriptores de ficheros del descriptor de proceso. b. En la tabla TDF de descriptores de ficheros. c. En la tabla TFA de ficheros abiertos. d. En la tabla TIN de i-nodos abiertos. Ingeniería Superior en Informática. Curso 3º. Sistemas Operativos. Examen Final. PROBLEMAS. 13 de Septiembre de 2004 Nombre: DNI: P1. void main () { int i; for (i=1; i<=2; i++){ fork(); printf("PID=%d,PPID=%d i=%d\n",getpid(),getppid(),i); wait(NULL); } exit(0); } Mostrar la salida del programa anterior en el orden exacto en que se produce, suponiendo para los valores identificadores de procesos números enteros consecutivos empezando desde 100, y suponiendo que los procesos hijos tienen prioridad sobre los procesos padres. El programa anterior se puede simplificar. ¿Cómo? P2. Codificar el comportamiento de coches y peatones al cruzar un paso de peatones en una calle de un solo sentido y un solo carril, considerando que: pueden cruzar varios peatones a la vez, pero un solo coche los peatones tienen prioridad para evitar espera indefinida a los coches, si hay 3 peatones cruzando y coches esperando, si llegan mas peatones pasan a esperar y al liberarse el cruce pasa un coche Peatón 1. P( ); 2. if (condición1) 3. N_peatones_esp++; 4. else { 5. V( ) 6. N_peatones_paso++; 7. } 8. V( ); 9. P( ); print(“Cruza Peaton”); sleep(5); 10. P( ); N_peatones_paso--; 11. if (N_peatones_paso == 0){ 12. if (Ncoches_esp > 0) { 13. V( ); 14. Ncoches_paso++; 15. Ncoches_esp--; 16. } else if (Npeatones_esp > 0) { 17. while (condición2) { 18. V( ); 19. Npeatones_paso++; 20. Npeatones_esp--; 21. } 22. } 23. } 24. V( ); Coche 1. P( ); 2. if (condición3) 3. N_coches_esp++; 4. else { 5. V( ) 6. N_coches_paso++; 7. } 8. V( ); 9. P( ); print(“Cruza Coche”); sleep(1); 10. P( ); Ncoches_paso--; 11. if (Npeatones_esp > 0) { 12. while (condicion4) { 13. V( ); 14. Npeatones_paso++; 15. Npeatones_esp--; 16. } 17. } else if (Ncoches_esp > 0) { 18. V( ); 19. Ncoches_paso++; 20. Ncoches_esp--; 21. } 22. V( ); Indicar cuántos y cuáles semáforos hacen falta, qué función cumple cada uno en la solución de problema y rellenar con sus nombres los argumentos de las operaciones P() y V() que aparecen vacías en el código. Explicar también cuáles deben ser las expresiones que sustituyan a las 4 condiciones que aparecen en cursiva en el código. P3. Un programa UNIX crea un fichero e inmediatamente se posiciona (con lseek) en el byte 30 millones. Luego escribe un array de 1000 números reales de tipo float. ¿Cuántos bloques de datos en disco ocupa ahora el fichero (incluyendo bloques indirectos) si los i-nodos contienen 10 índices directos, y 3 indirectos (simple, doble y triple), los bloques tienen un tamaño de 2 KB y el tamaño de los punteros a bloque es de 32 bits?