Suplementary Page Table

Esta tabla mantiene un control más estricto sobre los frames que posee un proceso. Además los frames que no están cargados también se guardan aquí.

La información de la Frame Table no es suficiente en la mayoría de los casos, ya sea en frames o páginas que no están cargadas o información extra de las páginas que estamos guardando. Esta tabla es propia a cada programa de usuario, es decir, cada proceso va a tener su propia tabla de Suplementary Page Table.

Lo que incluye

struct hash sup_table;

Cada proceso/ thread tiene un hash table que tiene como llave la upage y de value una spage_entry

Operaciones de la Suplementary Page Table

Obtener una nueva SPage

Crea una nueva página de tipo PAGE y la inserta a Suplementary Page Table.

Obtener una nueva SPage para un archivo

Crea una nueva página suplementaria de tipo EXECUTABLEo MMFILE, ya que está guarda la información de este tipo de archivos. Inserta la Suplementary Page Entry a la Suplementary Page Table.

Cargar a memoria una página de un archivo

Este método solo se ejecuta con SPE de tipo EXECUTABLE y MMFILE. Si este tipo de página esta en SWAP entonces se carga como una página normal.

Lo primero que hay que hacer es pedir un nuevo frame a la frame table. Luego hay que colocar el puntero del archivo en la la posición del offset que indica la SPE. Luego leemos los bytes que necesitamos del archivo y ponemos en 0 la cantidad de bytes que nos indica la SPE.

Cargar a memoria una página

Este método carga a memoria páginas de tipo PAGE y EXECUTABLE que se pueden escribir o están en swap.

Se pide un nuevo frame a la frame table. Si la página se encuentra en el swap se debe de sacar del swap y liberar el espacio en el swap file.

Last updated