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
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 EXECUTABLE
o 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