Universidad de Costa Rica - ECCI
Prácticas de laboratorio
Laboratorio #VM-3
Objetivos
- Correr programas de usuario que llenen la memoria física
- Crear el archivo de "SWAP" en Linux para que funcione como intercambio para NachOS
- Determinar los distintos flujos de las páginas físicas
- Determinar las características de las páginas faltantes y su estrategia para colocarlas en memoria
- Establecer el procedimiento para el reemplazo de páginas en la memoria principal
- Establecer el procedimiento para el reemplazo de entradas en la TLB
- Hacer que el programa de usuario "sort" corra
Requisitos
- Tener instalado un compilador de C++
- Tener una instalación de NACHOS
Notas
- El área de SWAP se representará empleando un archivo normal dentro del sistema de archivos de Linux, NachOS (usted) se encargará de manipular este archivo adecuadamente (abrir, cerrar, escribir, leer o destruir)
Procedimiento
- Correr programas de usuario que llenen la memoria física
- Correr el programa de usuario "sort" y anotar en el informe los resultados
- Explicar en su informe por que el programa tiene ese comportamiento
- Anotar en el informe el plan de acción para resolver los problemas encontrados en el punto anterior
- Crear el archivo de "SWAP" en Linux para que funcione como intercambio para NachOS
- Anotar en su informe una explicación de la funcionalidad del archivo de SWAP, elementos que contiene, cantidad de elementos, etc.
- Explicar en su informe, como va a determinar cuáles son los elementos libres de ese archivo y cómo los va a marcar ocupados
- Crear un archivo, objecto de la clase "OpenFile" de NachOS y los elementos adicionales de control para el SWAP, en los elementos del sistema operativo
- Explique que hará si el archivo de SWAP se llena
- Determinar los distintos flujos de las páginas físicas
- Explicar cuándo una página debe ir al SWAP
- Explicar cuándo una página debe recuperarse del SWAP
- De dónde provienen o van las páginas que llegan o salen del SWAP
- Anotar en su informe los flujos esperados de marcos y la manera de realizarlos (funciones que utilizará)
- Determinar las características de las páginas faltantes y su estrategia para colocarlas en memoria
- Anote en su informe el procedimiento para determinar si se trata de una página de código (texto) o de datos inicializados
- Anote en su informe el procedimiento para determinar si se trata de una página que corresponde a datos no inicializados o a pila
- Analice los casos anteriores y determine para cada uno de ellos el lugar del cuál se debe conseguir la página, anótelo en su informe
- Describa el procedimiento a seguir si la página hay que leerla del archivo original (ejecutable). Piense en la posibilidad de que el archivo deba ser abierto nuevamente y que para ello es necesario que su NachOS conozca el nombre del archivo, esta sería una nueva característica de la clase "AddrSpace"
- Analice el caso en el que la página se encuentra sucia, anote en su informe el procedimiento para recuperarla
- Establecer el procedimiento para el reemplazo de páginas en la memoria principal
- Explicar y anotar en su informe la utilidad de la tabla de páginas invertida (IPT)
- Para el caso de NachOS, anotar en su informe de qué tamaño debe ser la IPT, qué entradas contiene, los casos en que se debe llenar y otros datos que considere importantes respecto a esta estructura
- Indicar el procedimiento para conseguir espacio en la memoria principal de NachOS y su manera de implantarlo
- Detallar el procedimiento de lo que debe hacerse con la página que acaba de sacar de memoria (PageOut):
- Cómo obtener la página faltante, cuáles son la posibles fuentes para esta página
- Cómo determinar cuál es el proceso dueño de la página física que se va a donar, de manera que en su "pageTable" se refleje el hecho de que ahora la página es inválida
- Indique qué hacer si la página está sucia (DirtyBit On)
- Estructuras a cambiar
- En el proceso 'donante' de la página
- En el proceso que la recibe
- Establecer el procedimiento para el reemplazo de entradas en el TLB
- Recordar que el TLB es una memoria cache para la tabla de páginas de cada proceso, explicar en su informe el significado de memoria cache
- Cuando se intenta resolver un "PageFault", es necesario tener una entrada libre en el TLB
- Explicar cuál es la estructura de datos donde se guarda las entradas de TLB que se libera y los campos de esa estructura a guardar
- Explicar el algoritmo de reemplazo de entradas de TLB
- Hacer que el programa de usuario "sort" corra
- Intente correr el programa de usuario 'sort'
- El menor elemento es 0
- Con una memoria física de 32 páginas y utilizando "Second Chance" para el reemplazo de marcos de memoria y entradas de TLB, este programa produce 4981 "page faults"
- Fin