Paginación detallada

En un momento cualquiera, la memoria física tiene frames ocupados con páginas de diferentes procesos, mientras que algunos otros están disponibles para su uso. Pero hay que saber en qué momento estamos.

  • El sistema operativo mantiene una lista de estos últimos frames

  • Hay además una tabla por cada proceso que se está ejecutando, donde consta:

    • el número de página (que es el índice de la tabla)

    • en qué frame se encuentra cada página del proceso.

    • Permisos de lectura / escritura / ejecución del proceso

    • Un indicador de si la página está cargada en memoria RAM

    • Un indicador de si se ha alterado algo desde que se cargó en RAM

  • Las direcciones lógicas se forman como un número de página y un offset.

  • Las direcciones físicas se forman cogiendo de la tabla de procesos el frame al que apunta la página, y añadiéndole el offset.

La traducción de lógico a físico es un proceso que se debe hacer muchísimas veces, con lo que se habilita un componente hardware llamado Memory Management Unit (MMU) para maximizar la velocidad. También la tabla tiene una especie de caché llamada Translation Lookaside Buffer (TLB)

Así, cuando un proceso es cargado en memoria, se cargan todas sus páginas en frames libres y se actualiza su tabla de páginas.

¿Y qué pasa si se quiere cargar un proceso y ya no hay sitio en la memorifa física? Pues el SO es suficientemente listo para usar un algoritmo que sepa cual es el proceso que está en memoria menos interesante y retirarlo de la memoria física. Lo guardará en el disco si nota que está modificado por si se vuelve a necesitar usar. Y actualizará la tabla del proceso para indicar que ya no está en memoria física. Cargará entonces el nuevo proceso demandante. Esto se llama swapping.

Sin embargo, la memoria lógica sigue inalterada, con lo que el proceso está vivo y puede atender a peticiones. Si se le necesita volverá inmediatamente del disco a la memoria física. Se le dará otros frames porque seguramente los anteriores estén en uso, y modificará la tabla del proceso para reflejarlo.

Última actualización