Documento 954721

Anuncio
 Calificación
1
Fundamentos de los Sistemas Operativos (GII)
Examen Final
15 de Junio de 2012 - SEGUNDA PARTE -
Nombre
2
3
Grupo
SOLUCIONES
Dispone de una hora y media para completar el examen
1 (6.5 puntos) Contestar a las siguientes cuestiones: 1.
En un sistema operativo multitarea con 16Kbytes de espacio lógico de procesos, con páginas de 512 bytes y 64 marcos de página, sin memoria virtual. ¿cuál es la estructura de la dirección lógica? 16Kbytes suponen 2^4*2^10 =2^14 direcciones lógicas, por lo tanto, serán necesarios 14 bits para cubrir todo ese espacio de direcciones lógicas. Por otra parte, sabemos que el tamaño de página es de 512 bytes, por lo que serán necesarios 9 bits para poder direccionar cualquier byte de una página. Luego, el espacio de direccionamiento lógico tiene la siguiente estructura: 2.
5 bits 9 bits página desplazamiento Dada la siguiente cadena de referencias a páginas : 2 – 4 – 5 – 4 – 6 – 7 – 4 – 2 – 1 – 4 – 7 – 3, si el sistema dispone de cuatro marcos de memoria principal, ¿cuántos fallos se generan mediante el algoritmo de segunda oportunidad (o del reloj) para el reemplazo de páginas? En la siguiente figura puede verse una traza del algoritmo del reloj. La primera fila corresponde a la cadena de referencias; las siguientes a la traza. Entre paréntesis figura el bit de referencia y en negrita el candidato inicial a víctima. Los fallos de página están señalados con el símbolo # en la última fila. Como puede observarse, se producen ocho fallos de página. 2 4 5 4 6 7 4 2 1 4 7 3 2(1) 2(1) 2(1) 2(1) 2(1) 7(1) 7(1) 7(1) 7(1) 7(1) 7(1) 3(1) 4(1) 4(1) 4(1) 4(1) 4(0) 4(1) 4(0) 4(0) 4(1) 4(1) 4(0) 5(1) 5(1) 5(1) 5(0) 5(0) 2(1) 2(1) 2(1) 2(1) 2(0) 6(1) 6(0) 6(0) 6(0) 1(1) 1(1) 1(1) 1(0) # # # # # # # # 3.
Se tiene un sistema que utiliza gestión de memoria paginada. El espacio de direccionamiento virtual es de 10 páginas de 1024 palabras (1 palabra = 2 bytes). La memoria física está dividida en 32 marcos. ¿Cuántos bits componen la dirección virtual? Considerando que el direccionamiento lógico se realiza a nivel de palabra (no de byte) serán necesarios 4 bits para el número de páginas (el enunciado dice que hay 10 páginas direccionables) y 10 bits para direccionar el desplazamiento dentro de la página. Por lo tanto la dirección virtual responde al siguiente esquema: 4 bits 10 bits página desplazamiento FSO -­‐ examen 20120615 -­‐ segunda parte -­‐ p1/5 4.
La tabla de páginas de un determinado proceso indica que la página 2 tiene asociado el marco 7. El tamaño de la memoria física es de 65536 bytes. Si en el sistema tenemos 32 marcos de página, ¿cuál es la dirección lógica asociada a la dirección física 14661? Para poder conocer la dirección lógica, primero es necesario averiguar a qué marco de página corresponde la dirección física 14661. Sabiendo que la memoria física tiene 65536 bytes y que hay 32 marcos de página, es inmediato deducir el tamaño de página de este sistema: 65536/32 = 2^16/2^5 = 2^11 = 2048 bytes. De ahí se deduce que la dirección física 14661 pertenece al marco de página número 7; basta dividir 14661 entre 2048 para averiguar que el marco es 7 (cociente) y el desplazamiento 325 (resto). El enunciado dice que la página 2 está alojada en el marco de página número 7, por tanto, la dirección lógica será: <página 2, desplazamiento 325>, o lo que es lo mismo, 2·∙2048+325 = 4421 5.
Un computador gestiona la memoria mediante un esquema paginado de doble nivel con una estructura de direcciones de 32 bits. Si se tienen 10 bits para páginas de un primer nivel, 11 para el de segundo y 11 para el desplazamiento de página, ¿qué tamaño máximo tendrá el espacio direccionable de los programas? El espacio direccionable viene dado por el número de bits que existen en la dirección, independientemente de los niveles de paginación. En este caso, como la dirección es de 32 bits, el espacio de direccionamiento es de 2^32 bytes, es decir 4Gigabytes. 6.
En un sistema operativo multitarea, con 8Kbytes de espacio lógico de proceso y con páginas de 1Kbytes, y 32Kbytes de memoria física y sin memoria virtual, ¿cuánto ocupará la tabla de páginas? Si hay que direccionar 8Kbytes y el tamáño de página es de 1Kbyte, un proceso tendrá como máximo 8 páginas y por lo tanto el número de entradas de su tabla de páginas es 8. Falta averiguar cuánto mide cada una de esas entradas. Dado que en ellas se aloja un número de marco y sabemos que en este sistema hay 32 marcos de página, bastan 5 bits para cada entrada, estrictamente hablando. Así, la tabla de páginas de un proceso en este sistema ocupará, como máximo, 8·∙5 = 40 bits = 5 bytes. 7.
En la tabla de segmentos se encuentra que el segmento 0 tiene una base de 219 y una longitud de 600. ¿A qué dirección física se corresponde la dirección virtual (0,430) dado el formato de dirección (nº segmento, desplazamiento dentro del segmento)? La dirección física es la 649: 219+430=649 8.
Considera un sistema paginado bajo demanda que posee los siguientes datos de utilización: el uso del procesador es del 20%, el del dispositivo de paginación de disco es del 95,5% y el de otros dispositivos de E/S es del 5%. ¿Qué crees que está ocurriendo en el sistema? ¿Qué podríamos hacer para que se obtuviera un rendimiento mejor? La baja utilización de la CPU y la alta utilización del dispositivo de paginación hacen pensar que el sistema sufre de sobrepaginación, es decir, que gran parte del tiempo se está empleando en desalojar páginas de la memoria principal al dispositivo de memoria secundaria (swap-­‐out) para dejar espacio a nuevas páginas que provienen de dicho dispositivo secundario (swap-­‐in). Esto provoca una seria degradación del rendimiento del sistema que puede corregirse reduciendo temporalmente el grado de multiprogramación, para que al haber menos procesos compitiendo por la memoria principal ésta pueda repartirse de forma que haya menos fallos de página. Una vez el sistema se recupere de la sobrepaginación, los procesos temporalmente suspendidos pueden volver a la cola de preparados y continuar su ejecución. 9.
Te dan a elegir entre tres tamaños de página para un sistema operativo : 16 bytes, 800 bytes y 2048 bytes. El sistema trabaja con direcciones de 32 bits y el tamaño medio de un programa es de 4 megabytes. ¿Con qué tamaño de páginas te quedarías? ¿Por qué? El tamaño de 800 bytes hay que descartarlo de antemano, porque no es potencia de dos. Requeriría un hardware de traducción de direcciones mucho más complejo que un sistema de paginación convencional: para calcular el número de página, no basta con quedarse con los bits más significativos de la dirección, sino que hay que realizar una división. FSO -­‐ examen 20120615 -­‐ segunda parte -­‐ p2/5 Nombre El tamaño de 16 bytes tampoco es recomendable, porque genera mucho espacio en tablas de páginas. Un programa de cuatro megabytes (un tamaño típico, según el enunciado) ocuparía 222 ÷ 24 = 218 = 256 Kpáginas, que necesitarían en torno a un megabyte de espacio (suponiendo cuatro bytes por cada entrada de la tabla de páginas). No parece sensato dedicar a estructuras de gestión una cantidad de memoria similar a la que necesita el programa. Además, para garantizar una tasa de aciertos alta en la TLB, ésta probablemente necesitaría bastantes entradas. Por su parte, si usamos páginas de 2048 bytes, un programa de cuatro megabytes requerirá 2048 páginas, 128 veces menos espacio que en el caso anterior. El único inconveniente de este tamaño de página es la mayor fragmentación interna, pero estamos hablando, en el peor de los casos, de 2047 bytes desperdiciados, que serían menos de un 0,05% de un programa de tamaño típico de 4 megas. Es decir, irrelevante. Así que la mejor opción es el tamaño de 2048 bytes. 10. ¿En que consiste la anomalía de Belady? Nombra un algoritmo que la padezca y otro que no. La anomalía de Belady se produce en determinados algoritmos de tal forma que al aumentar el número de marcos de página no necesariamente disminuye el número de fallos de página, sino que puede incluso aumentar. FIFO es uno de los algoritmos que padecen dicha anomalía, mientras que el algoritmo LRU, entre otros, está libre de ella. 2 (2 puntos) Suponga un sistema de memoria paginada que maneja direcciones de memoria lógicas de 24 bits y direcciones físicas de 32 bits. El tamaño de página es de 1Kbytes. Se pide: 1) ¿Cuánta memoria puede direccionar un proceso? 0.2p El espacio de direccionamiento de un proceso es de 24 bits, por tanto puede direccionar 2^24 bytes, es decir, 16Megabytes 2) ¿Cuántos marcos de página puede llegar a tener este sistema? 0.2p 2^32 / 2^10 = 2^22 = 4.194.304 marcos de página 3) ¿Cuántas páginas diferentes puede llegar a tener un proceso? 0.3p 2^24 / 2^10 = 2^14 = 16.384 páginas 4) ¿Cuántas páginas ocuparía un proceso que consume 3 Megabytes de memoria? 0.3p 3·∙2^20 / 2^10 = 3·∙2^10 = 3.072 páginas 5) ¿Qué explicación puede tener que las direcciones lógicas y físicas sean de diferente tamaño? 0.2p En esta arquitectura, el espacio lógico (2^24 palabras) es bastante más pequeño que el espacio físico (2^32 palabras). Esto significa que un proceso no puede direccionar al mismo tiempo todo el espacio físico. A primera vista, esto supone una limitación arbitraria que restringe fuertemente la capacidad de direccionamiento de los procesos. Pero puede haber algunas justificaciones a este esquema. 3 Una posible explicación a esta restricción es que en este sistema suele haber muchos procesos en ejecución al mismo tiempo con distintos espacios lógicos de memoria, de manera que aunque un solo proceso no aprovecha todo el espacio disponible, el conjunto de todos ellos sí lo hace. Las direcciones lógicas se mantienen cortas y así el código máquina es algo más compacto que en el caso de tener direcciones de 32 bits. Otro posible motivo para que este sistema esté así configurado es que los procesos ejecutan código de alguna arquitectura antigua de 24 bits, mientras que el hardware es más moderno y trabaja con direcciones de memoria más anchas. Sin necesidad de recompilar los programas, podemos seguir ejecutándolos y aprovechar mejor la memoria física de 32 bits si tenemos multiprogramación. Finalmente, esta configuración también puede verse como una medida (bastante radical) para evitar que un solo proceso acapare demasiada memoria: su asignación de espacio se le limita físicamente a 16 megabytes. 6) ¿Qué sistema de traducción de direcciones te parece más apropiado para este sistema: paginado con un solo nivel de paginación o con dos niveles? Justifica la respuesta 0.3p En este sistema, un proceso de gran tamaño tendrá una tabla de páginas que puede superar con creces el kilobyte que ocupa un único marco de página. Por ejemplo, si cada entrada de la tabla ocupa 3 bytes, basta con que el proceso tenga 400 páginas para que la tabla necesite consumir dos marcos. Si la tabla de páginas consume varios marcos, estos deberán ser contiguos para que la MMU pueda realizar su trabajo. Y como necesitamos asignar varios marcos contiguos, nos aparece el problema de la fragmentación externa, que es lo que la paginación debería resolver definitivamente. Este es exactamente el motivo por el cual muchos sistemas paginan la tabla de páginas y por tanto utilizan un esquema de varios niveles de paginación. Así que en el sistema propuesto, es más recomendable trabajar con dos niveles de paginación, con el fin de reducir el problema de la fragmentación cuando se asigna espacio para la tabla de páginas. 7) Suponiendo que el sistema trabaja con un solo nivel de paginación, ¿cuántos elementos como máximo puede tener la tabla de páginas? 0.3p Tantos como páginas, es decir, 2^24 / 2^10 = 2^14 = 16.384 elementos 8) En un momento dado, encontramos un proceso que direcciona 50 páginas lógicas, pero si observamos los marcos de página, solo 30 de ellos están asignados a este proceso. ¿cómo es posible que el proceso tenga más páginas lógicas que marcos asignados? 0.2p Una posible explicación es que el proceso está compartiendo marcos de página con otros procesos, o con el sistema operativo. Por ejemplo, algunas de las páginas lógicas pueden estar apuntando a páginas de código de una DLL que ha sido asignada a otro proceso, o a datos de sólo lectura del sistema operativo, etc. Otra explicación es que algunas de las páginas lógicas en realidad están duplicadas, es decir, que varias páginas lógicas apuntan al mismo marco físico. Por otra parte, en el enunciado no nos indican si el sistema utiliza el bit de validez y por tanto el concepto de página inválida. Si es el caso, puede ser que nuestro proceso direccione 50 páginas, pero sólo 30 de ellas están cargadas en memoria principal, mientras que el resto están pendientes de cargar (son inválidas). 3 (1.5 puntos) Sea un sistema de gestión de memoria con tres niveles de paginación, en el que cada nivel de paginación tiene asociada una tabla de páginas independiente en memoria. Sabiendo que el tiempo de búsqueda en la TLB es de 20 nanosegundos, que el tiempo de acceso a la RAM es de 100 nanosegundos y que el tiempo de acceso efectivo en este sistema es de 126 nanosegundos, calcula la tasa de aciertos de la TLB. FSO -­‐ examen 20120615 -­‐ segunda parte -­‐ p4/5 Nombre Por los datos del problema sabemos que, en caso de acierto, el tiempo de acceso a memoria es: 20 + 100 = 120 ns, 20 ns por acceder a la TLB y 100 ns para acceder al dato o a la instrucción en la memoria principal Sin embargo, en caso de fallo de TLB, el coste temporal de acceso al dato/instrucción es: 20 + 100 + 100 + 100 + 100 = 420 ns, desglosados de la siguiente manera: 20 ns : acceso a la TLB 100 ns: acceso a la tabla de páginas de primer nivel, que está en la memoria principal 100 ns: acceso a la tabla de páginas de segundo nivel, que está en la memoria principal 100 ns: acceso a la tabla de páginas de tercer nivel, que está en la memoria principal 100 ns: acceso a la instrucción/dato, que está en la memoria principal Por lo tanto, si llamamos k a la tasa de aciertos: 126 = k·∙120 + (1-­‐k)·∙420 -­‐-­‐> k = 294/300 = 0,98 = 98% 5 
Descargar