Diferencia entre revisiones de «Paginación de memoria»

Contenido eliminado Contenido añadido
Línea 122:
== Paginación en memoria virtual ==
 
El único inconveniente de [[paginación]] es juana de arco pura es que todas las páginas de un proceso deben estar en memoria para que se pueda ejecutar. Esto hace que si los programas son de tamaño considerable, no puedan cargarse muchos a la vez, disminuyendo el grado de multiprogramación del sistema. Para evitar esto, y aprovechando el principio de [[cercanía de referencias]] donde se puede esperar que un programa trabaje con un conjunto cercano de referencias a memoria (es decir con un conjunto residente más pequeño que el total de sus páginas), se permitirá que algunas páginas del proceso sean guardadas en un espacio de intercambio (en memoria secundaria) mientras no se necesiten.
 
Cuando la paginación se utiliza junto con [[Sistema de Memoria Virtual|memoria virtual]], el sistema operativo mantiene además el conocimiento sobre qué páginas están en memoria principal y cuáles no, usando la [[tabla de paginación]]. Si una página buscada está marcada como no disponible (tal vez porque no está presente en la memoria principal, pero sí en el área de intercambio), cuando la CPU intenta referenciar una dirección de memoria en esa página, la [[unidad de manejo de memoria|MMU]] responde levantando una excepción (comúnmente llamada fallo de página). Si la página se encuentra en el [[espacio de intercambio]], el sistema operativo invocará una operación llamada ''intercambio de página'', para traer a memoria principal la página requerida. La operación lleva varios pasos. Primero se selecciona una página en memoria, por ejemplo una que no haya sido usada recientemente (para más detalles ver [[algoritmos de reemplazo de páginas]]). Si la página fue modificada, se escribe la misma en el espacio de intercambio. El siguiente paso en el proceso es leer la información en la página necesitada desde el espacio de intercambio. Cuando esto sucede, las tablas para traducción de direcciones virtuales a reales son actualizadas para reflejar los contenidos de la memoria física. Entonces el intercambio de página sale, y el programa que usó la dirección que causó la excepción es vuelto a ejecutar desde el punto en que se dio la misma y continúa como si nada hubiera pasado. También es posible que una dirección virtual sea marcada como no disponible porque no fue localizada previamente. En estos casos, una página de memoria es localizada y llenada con ceros, la tabla de paginación es modificada para mostrar los cambios y el programa se reinicia como en el otro caso.