Sistemas Operativos II Junio 2006 Nombre: ITIS Castellano Ejercicio 1 [1 punto] 1. ¿Por qué es más eficiente el cambio de contexto entre threads (hilos) que entre procesos? 2. Describe brevemente la diferencia fundamental entre un sistema operativo basado en microkernel y uno monolítico. 3. En un sistema multiprocesador ¿Qué técnica es la más adecuada para implementar una sección crítica de corto plazo? ¿Por qué? 4. Describe dos campos del Descriptor de Dispositivo de un driver, explicando para qué se utilizan. 5. Describe cuatro campos de un IORB, explicando para qué se utilizan. Sistemas Operativos II 1/8 Junio 2006 Ejercicio 2 [0,5 puntos] Completa la siguiente implementación de las primitivas de paso de mensajes, especificando el código de la función enviar(). struct { struct semaf huecos; struct semaf items; struct semaf mutex; tipo_buffer mens[MAX_MENS]; } buzon[MAX_BUZONES]; /* Inicialmente: */ for (i=0; i<MAX_BUZONES; i++) { ini_semaforo(buzon[i].huecos, MAX_MENS); ini_semaforo(buzon[i].items, 0); ini_semaforo(buzon[i].mutex, 1); } void enviar (int i, tipo_mensaje m) { } void recibir (int i, tipo_mensaje m) { bajar(buzon[i].items); bajar(buzon[i].mutex); tomar_elemento(i, m); subir(buzon[i].mutex); subir(buzon[i].huecos); } Ejercicio 3 [0,5 puntos] Un determinado sistema utiliza el Algoritmo del Banquero para la predicción de interbloqueos. En un momento dado encontramos la siguiente situación: R1 R2 R3 P1 1 1 1 P2 1 0 1 P3 1 0 0 P4 0 0 1 Recursos por asignar Procesos Procesos Recursos asignados Recursos totales R1 R2 R3 R1 R2 R3 P1 1 1 2 4 2 4 P2 1 1 0 P3 2 0 1 P4 1 1 1 1. Si P1 solicita un recurso de tipo R1, razona si su asignación conduce o no a un interbloqueo 2. ¿Qué inconvenientes presenta el Algoritmo del Banquero? ¿Qué otras alternativas conoces para evitar el interbloqueo? Sistemas Operativos II 2/8 Junio 2006 Ejercicio 4 [3 puntos] Sean dos programas con el siguiente comportamiento: Programa_A. Ejecuta un bucle infinito. En cada iteración, usa la CPU durante 8 ticks y se bloquea 4 ticks. Programa_B. Ejecuta un bucle infinito. En cada iteración, usa la CPU durante 10 ticks y se bloquea 2 ticks. En un sistema se lanza la ejecución de 4 procesos: P1. Se lanza en el instante de tiempo T y ejecuta el código de Programa_A. P2. Se lanza en el instante de tiempo T y ejecuta el código de Programa_B. P3. Se lanza en el instante de tiempo T + 1 tick y ejecuta el código de Programa_A. P4. Se lanza en el instante de tiempo T + 1 tick y ejecuta el código de Programa_B. Considerando tres políticas de planificación: Política 1. FIFO no expulsora. Política 2. Round-Robin con quantum 5 ticks y sin expulsión por evento. Política 3. Round-Robin con quantum 5 ticks y con expulsión por evento. Se pide: 1. Dibuja un cronograma de ejecución para los 40 primeros ticks si el sistema planificara los procesos siguiendo la Política 1. P1 P2 P3 P4 T 2. +4 +8 +12 +16 +20 +24 +28 +32 +36 +40 Dibuja un cronograma de ejecución para los 40 primeros ticks si el sistema planificara los procesos siguiendo la Política 2. P1 P2 P3 P4 T 3. +4 +8 +12 +16 +20 +24 +28 +32 +36 Para cada proceso, calcula los siguientes parámetros, considerando los 40 primeros ticks (nota: para el tiempo de repuesta, considerar sólo la primera vez por cada proceso): Sistemas Operativos II 3/8 Junio 2006 +40 Política 1 P1 P2 P3 P4 P1 P2 P3 P4 P1 P2 P3 P4 Tiempo de respuesta Tiempo de espera Tasa de CPU Política 2 Tiempo de respuesta Tiempo de espera Tasa de CPU Política 3 Tiempo de respuesta 4. De las políticas descritas, ¿cuáles pueden considerarse de tiempo compartido? Razónalo. 5. Calcular (en el caso general, con n procesos) las cotas del tiempo de respuesta para cada una de las políticas anteriores. 6. Para un tick de 0,01 s y un tiempo de cambio de contexto de 5 µs, calcula razonadamente una estimación de la pérdida de eficiencia de la Política 2 con respecto a la Política 1, considerando que los procesos descritos en el enunciado son los típicos que se ejecutan en ese sistema. Sistemas Operativos II 4/8 Junio 2006 Ejercicio 5 [2 puntos] En un sistema con memoria segmentada-paginada, un proceso puede tener hasta 8 segmentos de 256 páginas de 4 Kbytes. Si el tamaño de la memoria física es 1024 Mbytes. Responde razonadamente a las siguientes cuestiones: 1. Dibuja los esquemas de las direcciones lógica y física. 2. (a) ¿Cuál el tamaño máximo que puede tener un proceso? (b) ¿Cuántas tablas de páginas tiene cada segmento? 3. Indica qué tamaño tiene una tabla de páginas. 4. Indica qué tamaño tiene una tabla de segmentos. Considera que una tabla de páginas puede almacenarse en cualquier dirección de la memoria física. 5. Si tuviéramos un sistema de memoria paginado simple (un único nivel de paginación), y mantuviéramos el espacio de direccionamiento y el tamaño de página, ¿cuál sería el tamaño de una tabla de páginas? 6. Si para la gestión de los huecos de memoria utilizáramos un mapa de bits, ¿cuál sería el tamaño del mapa de bits en este sistema? 7. Calcula la fragmentación externa e interna media (a) en el sistema segmentado-paginado, (b) en el sistema paginado simple. Sistemas Operativos II 5/8 Junio 2006 8. Dependiendo de la ocupación de memoria de los programas, ¿cuál es el grado máximo de multiprogramación, considerando que cada proceso tiene al menos 4 segmentos? Problema 6 [1 punto] Un sistema de memoria virtual sigue la política de reemplazo de páginas de la segunda oportunidad, con asignación local y un máximo de 4 marcos de página para cada programa. 1. La ejecución de un programa P genera la secuencia de referencias a páginas que se especifica en la cabecera de la tabla de abajo. Considerando que inicialmente P tiene cargadas en memoria las páginas 0, 4 y 7, y todas tienen su bit de referencia (R) a 1, describe en la tabla, para cada referencia, qué páginas están cargadas memoria e indica cuándo se produce un fallo de página, anotando abajo la elegida como víctima. Al aplicar el algoritmo del reloj, considera que inicialmente apunta al primero de los marcos de P (el que contiene inicialmente la página 0, que se indica mediante el símbolo ). Páginas de P en memoria 0 3 1 7 2 4 1 5 5 1 3 0 2 0 R 4R 7R -- Víctima 2. ¿Te parece que la política de la Segunda Oportunidad es de tipo LRU? ¿Por qué? 3. Describe brevemente una política que proporcione una mejor aproximación a LRU. ¿Qué estructuras utilizaría? Sistemas Operativos II 6/8 Junio 2006 Ejercicio 7 [2 puntos] De acuerdo a las especificaciones del manual de UNIX, la llamada al sistema al sistema link(fich1, fich2) crea una nueva entrada de nombre fich2 para el fichero fich1, es decir, establece un nuevo enlace hardware al inodo que representa dicho fichero. La llamada unlink(fich) elimina el inodo asociado cuando la cuenta de enlaces hardware llega a cero. Un inodo no se libera hasta que la cuenta de referencias de enlaces hardware (nlinks) llega a cero. Por otra parte, si algún proceso tiene un fichero abierto, el fichero no se borra hasta que el último proceso cierra el fichero. En un sistema de ficheros UNIX tenemos en un momento dado la siguiente información: /usr … … fich nlinks = 1 … size = 1050 bytes … ap. directo 1 = 123 ap. directo 2 = 606 … Considera la siguiente ejecución concurrente de dos procesos (la primera columna establece el orden temporal de la ejecución de cada llamada al sistema): Proceso 1 1 Proceso 2 link("/usr/fich", "/home/fich"); unlink("/usr/fich"); 2 3 fd= open("/home/fich", O_RDONLY); 4 lseek(fd, 1040); /*posiciona en el byte 1040*/ 5 read(fd, buf, 10); 6 close(fd); 1. Explica paso a paso los efectos que tiene la ejecución concurrente de los procesos 1 y 2 en directorios e inodos, representándolo además en la figura de arriba. Sistemas Operativos II 7/8 Junio 2006 2. Considerando un tamaño de bloque de 1024 bytes, calcula (a) longitud en bloques del fichero /home/fich, (b) la máxima longitud de fichero representable en este sistema, (c) la capacidad de direccionamiento del sistema de ficheros. 3. Calcula la fragmentación interna de los ficheros /home/fich y /usr/fich. 4. Explica cuáles son los bloques a los que accede el proceso 1 entre los pasos 3 y 6. 5. Dado un disco de 4096 cilindros de 10 pistas de 2048 sectores de 512 bytes, calcula (a) tamaño del disco, (b) en qué cilindro, pista y sectores se ubica el bloque absoluto al que accede el proceso 1 en el paso 5 (razona el cálculo). Sistemas Operativos II 8/8 Junio 2006