Ampliación de Sistemas Operativos Curso 2004 / 05 Problemas - Hoja 1 1) Sea un sistema de paginación con un tamaño de página P. Especifique cuál sería la fórmula matemática que determina la dirección de memoria física F a partir de la dirección virtual D, siendo la función MARCO (x) una que devuelve el número de marco almacenado en la entrada X de la tabla de páginas. 2) ¿Es siempre el algoritmo de reemplazo LRU mejor que el FIFO? En caso afirmativo, plantee una demostración. En caso negativo, proponga un contraejemplo. 3) ¿Cuál de las siguientes técnicas favorece la proximidad de referencias? • • • • Un programa multiflujo. El uso de listas. La programación funcional. La programación estructurada. 4) Algunas MMU no proporcionan un BIT de página accedida. Proponga una manera de simularlo. Una pista: se pueden forzar fallos de página para detectar accesos a una página. 5) Algunas MMU no proporcionan un BIT de página modificada. Proponga una manera de simularlo. 6) ¿Por qué una cache que se accede con direcciones virtuales puede producir incoherencias y requiere que el sistema operativo la invalide en cada cambio de proceso y, en cambio, una que se accede con direcciones físicas no lo requiere? 7) ¿Por qué una cache que se accede con direcciones virtuales permite que el acceso a la TLB y a la cache se hagan en paralelo y, en cambio, una que se accede con direcciones físicas no lo permite? ¿Por qué es conveniente que las caches que se acceden con direcciones físicas tengan el mismo tamaño que la página? 8) La secuencia que se utiliza típicamente como ejemplo de la anomalía de Belady es la siguiente: 123412512345 Analice cuántos fallos de página se producen al usar el algoritmo FIFO teniendo 3 marcos y cuántos con 4 marcos. Compárelo con el algoritmo LRU. ¿Qué caracteriza a los algoritmos de reemplazo de pila? 9) Exponga uno o más ejemplos de las siguientes situaciones: • Fallo de página que no implica operaciones de entrada/salida. • Fallo de página que implica sólo una operación de lectura. • Fallo de página que implica sólo una operación de escritura. • Fallo de página que implica una operación de lectura y una de escritura. 10) Sea un sistema de memoria virtual sin buffering de páginas. Analice la evolución de una página en este sistema dependiendo de la región a la que pertenece. Estudie los siguientes tipos: • • • • • Página de código. Página de datos con valor inicial. Página de datos sin valor inicial. Página de un archivo proyectado. Página de una zona de memoria compartida. 11) Resuelva el ejercicio anterior suponiendo que hay buffering de páginas. 12) Como se comentó en la explicación del algoritmo de reemplazo LRU en su versión global, el tiempo que se debe usar para seleccionar la página menos recientemente usada es el tiempo lógico de cada proceso y no el tiempo real. Modifique la implementación basada en contadores propuesta en el texto para que tenga en cuenta esta consideración. 13) Codifique en pseudocódigo cuál sería la rutina de tratamiento de fallo de página en un sistema con memoria virtual que no usa buffering de páginas ni preasignación de swap. Tenga en cuenta la influencia de las distintas características de las regiones (p.ej.: si es privada o compartida). 14) Resuelva el problema anterior para un sistema con buffering de páginas y preasignación de swap. 15) En la descripción de la técnica COW se explicó que para implementar esta técnica generalmente se pone la página con una protección de sólo lectura. Analice cómo sería la rutina de tratamiento de la excepción que se produce al escribir en una página de este tipo para implementar la técnica COW. 16) En Win32 se pueden crear múltiples heaps. Analice en qué situaciones puede ser interesante esta característica. 17) Algunas versiones de UNIX proporcionan una llamada denominada vfork que crea un hijo que utiliza directamente el mapa de memoria del proceso padre, el cual queda bloqueado hasta que el hijo ejecuta un exec o termina. En este momento el padre recupera su mapa. Analice qué ventajas y desventajas presenta el uso de este nuevo servicio frente a la utilización del fork convencional. En este análisis suponga primero que el fork se implementa sin usar la técnica COW para a continuación considerar que sí se utiliza. 18) ¿Por qué es necesario mantener al menos una página inválida entre la región de pila y la región que está situada justo encima? 19) Analice qué puede ocurrir en un sistema que usa paginación por demanda si se recompila un programa mientras se está ejecutando. Proponga soluciones a los problemas que pueden surgir en esta situación. 20) Cuando se produce un fallo en una página que pertenece a una región compartida, se trae a memoria secundaria la página y se actualiza la entrada de la tabla de páginas del proceso que causó el fallo. ¿Cómo se enteran el resto de los procesos que comparten la página de que ésta ya se encuentra en memoria? 21) El mecanismo de buffering permite recuperar una página que está en la lista de libres, ya que todavía no se ha reutilizado el marco que la contiene. ¿Cómo se puede implementar esta búsqueda en la lista para que se haga de forma eficiente? 22) Analice qué situaciones se pueden producir en el tratamiento de un fallo de TLB en un sistema que tiene una gestión software de la TLB. 23) Con el uso de la técnica de proyección de archivos se produce una cierta unificación entre el sistema de archivos y la gestión de memoria. Puesto que, como se verá en el capítulo dedicado a los archivos, el sistema de archivos usa una cache de bloques al disco, analice qué tipo de incoherencias pueden producirse si se accede a un archivo usando la proyección y las primitivas convencionales del sistema de archivos. 24) Considere un espacio de direcciones lógico de 32 páginas con 1024 palabras cada una, que se hace corresponder, con una memoria física de 8 marcos. ¿Cuántos bits tiene una dirección lógica? ¿Cuántos bits tiene una dirección física? 25) Un sistema operativo con gestión de memoria basada en segmentación paginada tiene las siguientes características: Tamaño de página: 4 KB Número máximo de segmentos por proceso es 8. Considerando que el tamaño máximo de memoria virtual direccionable son 16MB, calcular el tamaño máximo de cada segmento expresado en número de páginas y un número de bytes. Determinar el formato de dirección virtual expresando cada uno de los campos y su dimensión. 26) Dadas particiones de memoria de 100K, 500K, 200K, 300K y 600K (en orden), ¿cómo se colocarían procesos de 212K, 417K, 112K y 426K (en orden) en la memoria empleando los algoritmos de primer ajuste, mejor ajuste y peor ajuste? ¿Qué algoritmo aprovecha la memoria de forma más eficiente?