5. Paginación
Es una técnica de manejo de memoria, en la cual el espacio
de memoria se divide en secciones físicas de igual tamaño, denominadas marcos
de página. Los programas se dividen en unidades lógicas, denominadas páginas,
que tienen el mismo tamaño que los marcos de páginas. De esta forma, se puede
cargar una página de información en cualquier marco de página. Las páginas sirven como unidad de almacenamiento de información y de
transferencia entre memoria principal y memoria auxiliar o secundaria. Cada
marco se identifica por la dirección de marco, que esta en la posición física
de la primera palabra en el marco de página. Las páginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe
de esta forma. Los mecanismos de paginación permiten la correspondencia
correcta entre las direcciones virtuales (dadas por los programas) y las
direcciones reales de la memoria que se reverencien. Cada pagina consiste en z palabras contiguas; un espacio de direcciones N de un
programa consiste de n paginas (0,1,2,3…n-1) (n*z direcciones virtuales) y el
espacio de memoria consiste de m marcos de paginas (0,z,2z,…,(m-1)z)(m*z
posiciones). Una dirección virtual a es equivalente a una dirección dada como
una dupla (p, d), en la cual p es el número de la página y d el número de la
palabra dentro de la página, de acuerdo con la relación: a=p*z+d (0<=d<z) p=(a/z) (parte entera de la division) d=a mod z (resto de divisor a/z)
En las maquinas que usan aritmética binaria, el
calculo de (p, d) es trivial, si z es potencia de 2. Por ejemplo, si el campo de direcciones de la instrucción es de m
bits (m>6), los cuatro bits mas significativos indican el numero de la
pagina y los m-4 bits restantes, el desplazamiento.
Para tener el control de las páginas, debe mantenerse una tabla en memoria que se denomina tabla
de Mapas de Pagina (PMT) para cada uno de los procesos. Hasta ahora, los métodos que hemos visto de la administración de la memoria
principal, nos han dejado con un problema: fragmentación, (huecos en la memoria
que no pueden usarse debido a lo pequeño de su espacio) lo que nos provoca un
desperdicio de memoria principal. Una posible solución para la fragmentación externa es permitir que espacio de
direcciones lógicas lleve a cabo un proceso en direcciones no contiguas, así
permitiendo al proceso ubicarse en cualquier espacio de memoria física que esté
disponible, aunque esté dividida. Una forma de implementar esta solución es a
través del uso de un esquema de paginación. La paginación evita el considerable
problema de ajustar los pedazos de memoria de tamaños variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus
ventajas sobre los métodos previos, la paginación, en sus diversas formas, es
usada en muchos sistemas
operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU
–Memory Management Unit). Estas direcciones generadas por los programas se
llaman direcciones virtuales y conforman el hueco de direcciones virtuales.
Este hueco se divide en unidades llamadas páginas. Las unidades
correspondientes en la memoria física se llaman marcos para página o frames.
Las páginas y los frames tienen siempre el mismo tamaño.
Tablas de páginas Cada página tiene un número que se utiliza como índice en la tabla de páginas,
lo que da por resultado el número del marco correspondiente a esa página
virtual. Si el bit presente / ausente es 0, se provoca un señalamiento (trap)
hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en
la tabla de páginas se copia en los bits de mayor orden del registro de salida,
junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de
la dirección virtual de entrada. Juntos forman una dirección física de 15 bits.
El registro de salida se coloca entonces en el bus de la memoria como la
dirección en la memoria física. En teoría, la asociación de las direcciones virtuales con las físicas se efectúa
según lo descrito. El número de página virtual se divide en un número de página
virtual (los bits superiores)y un ajuste (los bits inferiores). El número de
página virtual se utiliza como un índice en la tabla de páginas para encontrar
la entrada de esa página virtual. El número de marco (si existe) se determina a
partir de la tabla de páginas. El número de marco se asocia al extremo superior
del ajuste y reemplaza al número de página virtual para formar una dirección
física que se puede enviar a la memoria. La finalidad de la tabla de páginas es asociar las páginas virtuales con los
marcos. En términos matemáticos, la tabla de páginas es una función, cuyo argumento es el número de página virtual y como resultado el número
del marco físico. Mediante el resultado de esta función, se puede reemplazar el
campo de la página virtual de una dirección virtual por un campo de marco, lo
que produce una dirección en la memoria física. Sin embargo hay que enfrentar
dos aspectos fundamentales:
- La tabla de páginas puede ser demasiado grande.
- La asociación debe ser rápida.
El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo,
si el tamaño de página es de 4K, un hueco de direcciones de 32 bits tiene un
millón de páginas; en el caso de un hueco de direcciones de 64 bits, se tendría
más información de la que uno quisiera contemplar. El segundo punto es consecuencia del hecho de que la asociación virtual –
física debe hacerse en cada referencia a la memoria. Una instrucción común
tiene una palabra de instrucción y también un operando de memoria. Entonces es
necesario hacer una, dos o más referencias a la tabla de páginas por cada
instrucción.
Características de la paginación:
- El espacio de direcciones lógico de un proceso puede ser no contiguo.
- Se divide la memoria física en bloques de tamaño fijo llamados marcos
(frames).
- Se divide la memoria en bloques de tamaño llamados paginas.
- Se mantiene información en los marcos libres.
- Para correr un programa de n paginas de tamaño, se necesitan
encontrara n marcos y cargar el programa.
- Se establece una tabla de paginas para trasladar las direcciones
lógicas a físicas.
- Se produce fragmentación interna.
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 PMT 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. Así, si se requieren 5K
para un programa, pero las paginas son de 4K, deberán asignárseles 2
paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios
libres dejados de esta forma puede ser mayor que el de varias paginas,
pero no podrá ser utilizados. Debe asignarse un tamaño promedio a las
páginas, evitando que si son muy pequeñas, se necesiten TABLAS BMT y PMT
muy grandes, y si son muy grandes, se incremente el grado de fragmentación
interna.
Traducción de Direcciones La dirección generada por la CPU se divide en:
- Numero de pagina (p): utilizado como indice en la tabla de pagins que
contiene la dirección base de cada pagina en la memoria fisica.
- Offset de la pagina (d): combinado con la dirección base dfine la
direccion fisica que será enviada a la unidad de memoria.
|