You are on page 1of 3

PAGINACIN DE MEMORIA

En sistemas operativos de computadoras, los sistemas de paginacin de memoria dividen los programas en pequeas partes o pginas. Del mismo modo, la memoria es dividida en trozos del mismo tamao que las pginas llamados marcos de pgina. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su ltima pgina, lo que minimiza la fragmentacin interna y evita la externa. En un momento cualquiera, la memoria se encuentra ocupada con pginas de diferentes procesos, mientras que algunos marcos estn disponibles para su uso. El sistema operativo mantiene una lista de estos ltimos marcos, y una tabla por cada proceso, donde consta en qu marco se encuentra cada pgina del proceso. De esta forma, las pginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las pginas de otros procesos. En la tabla de pginas de un proceso, se encuentra la ubicacin del marco que contiene a cada una de sus pginas. Las direcciones lgicas ahora se forman como un nmero de pgina y de un desplazamiento dentro de esa pgina (conocido comnmente como offset). El nmero de pgina es usado como un ndice dentro de la tabla de pginas, y una vez obtenida la direccin del marco de memoria, se utiliza el desplazamiento para componer la direccin real o direccin fsica. Este proceso se realiza en una parte del computador especficamente diseada para esta tarea, es decir, es un proceso hardware y no software. De esta forma, cuando un proceso es cargado en memoria, se cargan todas sus pginas en marcos libres y se completa su tabla de pginas. Veamos un ejemplo: Nmero de marco Programa.#pgina Direccin fsica 0 1 2 3 4 5 6 7 Programa A.0 Programa A.1 Programa A.2 Programa B.0 Programa B.1 Programa C.0 Programa C.1 Programa D.2 1000:0000 1000:1000 1000:2000 1000:3000 1000:4000 1000:5000 1000:6000 1000:7000

La tabla de la derecha muestra una posible configuracin de la memoria en un momento dado, con pginas de 4Kb. La forma en que se lleg a este estado puede haber sido la siguiente: Se tienen cuatro procesos, llamados A, B, C y D, que ocupan respectivamente 3, 2, 2 y 3 pginas. El programa A se carga en memoria (se le asignan los marcos 0, 1 y 2) El programa B se carga en memoria (se le asignan los marcos 3 y 4) El programa C se carga en memoria (se le asignan los marcos 5 y 6) El programa B termina, liberando sus pginas El programa D se carga en memoria (se le asignan los marcos 3 y 4 que usaba el proceso B y el marco 7 que permaneca libre) Ahora consideremos qu sucede cuando un programa quiere acceder a su memoria. Si el programa A contiene una referencia a la memoria con direccin 20FE, se realizar el siguiente procedimiento. 20FE es 0010000011111110 en notacin binaria (en un sistema de 16 bit), y en el ejemplo se estn usando pginas de 4Kb de tamao. Cuando la peticin de la direccin de memoria 20FE es realizada, la Unidad de Gestin de memoria se ve de esta forma: 0010000011111110 = 20FE
|__||__________| | | | v | v Posicin de memoria dentro de la pgina (00FE)

Nmero de pgina (0010 = 2) TABLA DE PAGINACIN Entrada a la tabla de pginas n = @ pgina fsica V P L EM

* n = bits de la @ lgica -log2(nmero de palabras de una pgina). * V: bit de validez. * P: bit de persistncia. * L: bit de derecho a lectura. * E: bit de derecho a escritura. * M: bit de modificacin.

Al usar pginas de 4096 bytes, todas las ubicaciones dentro de una pgina pueden ser representadas por 12 bits, en el sistema binario (212=4096), lo que deja 4 bits para representar el nmero de pgina. Si las pginas hubieran sido de la mitad del tamao (2048) se podran tener 5 bits para el nmero de pgina, lo que significa que a menor tamao de pgina se pueden tener tablas con ms pginas. Cuando el pedido de acceso a memoria es realizado, la MMU busca en la tabla de pginas del proceso que realiz el pedido por la relacin en memoria fsica. En nuestro ejemplo, la pgina nmero 2 del proceso A corresponde al marco nmero 2 en memoria fsica, con direccin real 1000:2000, por lo tanto, la MMU devolver la direccin del marco en memoria fsica, con el desplazamiento dentro de esa pgina: 1000:20FE.

PAGINACIN EN MEMORIA VIRTUAL


El nico inconveniente de paginacin pura es que todas las pginas de un proceso deben estar en memoria para que se pueda ejecutar. Esto hace que si los programas son de tamao considerable, no puedan cargarse muchos a la vez, disminuyendo el grado de multiprogramacin del sistema. Para evitar esto, y aprovechando el principio de cercana de referencias donde se puede esperar que un programa trabaje con un conjunto cercano de referencias a memoria (es decir con un conjunto residente ms pequeo que el total de sus pginas), se permitir que algunas pginas del proceso sean guardadas en un espacio de intercambio (en memoria secundaria) mientras no se necesiten. Cuando la paginacin se utiliza junto con memoria virtual, el sistema operativo mantiene adems el conocimiento sobre qu pginas estn en memoria principal y cules no, usando la tabla de paginacin. Si una pgina 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 direccin de memoria en esa pgina, la MMU responde levantando una excepcin (comnmente llamada fallo de pgina). Si la pgina se encuentra en el espacio de intercambio, el sistema operativo invocar una operacin llamada intercambio de pgina, para traer a memoria principal la pgina requerida. La operacin lleva varios pasos. Primero se selecciona una pgina en memoria, por ejemplo una que no haya sido usada recientemente (para ms detalles ver algoritmos de reemplazo de pginas). Si la pgina fue modificada, se escribe la misma en el espacio de intercambio. El siguiente paso en el proceso es leer la informacin en la pgina necesitada desde el espacio de intercambio. Cuando esto sucede, las tablas para traduccin de direcciones virtuales a reales son actualizadas para reflejar los contenidos de la memoria fsica. Entonces el intercambio de pgina sale, y el programa que us la direccin que caus la excepcin es vuelto a ejecutar desde el punto en que se dio la misma y contina como si nada hubiera pasado. Tambin es posible que una direccin virtual sea marcada como no disponible porque no fue localizada previamente. En estos casos, una pgina de memoria es localizada y llenada con ceros, la tabla de paginacin es modificada para mostrar los cambios y el programa se reinicia como en el otro caso. Si la pgina que ha provocado el fallo de pgina no se encuentra en el espacio de intercambio, habr que ir a buscarla a la unidad de disco. El proceso, por lo dems sera anlogo

You might also like