Paginación La mayoría de los sistemas con memoria virtual utilizan una técnica denominada paginación La paginación es una técnica de gestión de memoria que permite asignar memoria de forma discontinua, divide la memoria física en trozos de tamaño fijo llamados marcos o frames y la memoria lógica en bloques del mismo tamaño llamados paginas. Cuando se ejecuta un programa este puede caber o no en la memoria física, si se da la situación de que el proceso es mayor que la memoria, el S.O. se encarga de mantener en memoria las partes del programa que estamos usando y el resto en memoria secundaria. La paginación se encarga del intercambio de información entre nuestra memoria y el disco duro cuando no hemos cargado el programa completo. El espacio de memoria se divide en secciones físicas de igual tamaño denominadas marcos de pagina. Los programas se dividen en unidades lógicas, denominadas páginas, que tienen el mismo tamaño que los marcos de paginas. Las paginas sirven como unidad de almacenamiento de información y de transferencia entre memoria principal y memoria secundaria. Se puede cargar una pagina de información en cualquier marco de pagina. Figura 4-10. La relación entre las direcciones virtuales y las direcciones de la memoria física viene dada por la tabla de páginas. Falta de pagina Si el programa intenta utilizar una página que no tiene correspondencia: La MMU provoca una excepción que hace que la CPU ceda el control al sistema operativo. Esta excepción se denomina una falta de página. El sistema operativo escoge un marco de página poco utilizado y escribe su contenido de vuelta al disco, después, carga la página a la que se acaba de hacer referencia colocándola en el marco de página que acaba de quedar desocupado, modifica el mapa en la MMU y reinicia la instrucción interrumpida. Tablas de pagina Tabla de Paginas es donde relaciona cada página cargada en memoria principal con el marco que la contenga o lo que es lo mismo con su dirección inicial en memoria real. El propósito de la tabla de páginas es establecer una correspondencia aplicando las páginas virtuales sobre los marcos de página. Traducción de direcciones Cuando un proceso genera un acceso a memoria intenta acceder a una dirección lógica. El hardware y el S.O. deben convertir la dirección lógica a una dirección física. Para ello se utiliza la tabla de paginas, la información contenida en ella nos permite calcular cual es la dirección física correspondiente a cualquier dirección lógica del proceso La dirección lógica se descompone en dos partes: -Numero de pagina (p) -Un desplazamiento en la pagina (d), que indica la posición que ocupa el byte indicado por la dirección, contando desde el principio de la página. p es la pagina lógica y hay que convertirla a un marco físico. Para ello se accede a la tabla de paginas, que nos informa del marco f en el que sistema operativo ha ubicado en p. La dirección física se compone juntado f y d. Ventajas de la paginación Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de paginas libres dispersos en la memoria. Es fácil controlar todas las páginas, ya que tienen el mismo tamaño. El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario. Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que s e aumenta su productividad. Se puede programar en función de una memoria mucho más grande a la existente. Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el numero de programas multiprogramándose. Se elimina el problema de fragmentación externa. Desventajas de la paginación El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantación. Se deben reservar áreas de memoria para las Tablas de pagina de los procesos. Al no ser fija el tamaño de estas, se crea un problema semejante al de los programas (como asignar un tamaño óptimo sin desperdicio de memoria, u "ovearhead" del procesador). Aparece el problema de fragmentación interna.