Se explica qué es la técnica de paginación para administración de memoria, qué es la memoria virtual y la paginación por demanda.
A fin de evitar la fragmentación de la memoria, se utiliza una técnica conocida como Paginación. Consiste en dividir un proceso en bloques de tamaño fijo. Estos bloques son llamados páginas. Esto implica que administrar la memoria ya no es tan simple como indicar la dirección donde empieza y termina cada proceso, sino que debe existir un mapeo entre la ubicación lógica (la dirección que el proceso cree tener), y la ubicación real (ubicación en memoria física). Un proceso tiene asignado una multitud de páginas.
Bajo ésta técnica la memoria se divide en frames (o marcos) del mismo tamaño. Las páginas deberán tener el mismo tamaño que los marcos. Además, las direcciones ahora representan: el identificador de página, y el desplazamiento. Se requiere, además, una estructura de datos llamada tabla de páginas. Ésta se utiliza para hacer una relación entre páginas y marcos.
Veamos el siguiente ejemplo:
En el ejemplo anterior se usa un espacio de direccionamiento donde para cada dirección se utilizan 5 bits. Eso resulta en 32 direcciones. Esas 32 direcciones se dividen en páginas donde cada página contiene 4 direcciones. En la ilustración se ven 4 de esas páginas.
De los 5 bits que conforman la dirección, los primeros 3 se utilizan para referenciar la página, y los últimos 2 bits se utilizan para especificar el desplazamiento dentro de la página.
Así, la letra h que está en la dirección 00111, se divide en 001 y 11. 001 representa la página y 11 representa el desplazamiento dentro de la página.
Existe además una tabla de páginas que relaciona la página con los marcos en la memoria real. En esa tabla se observa que la página 1 está en el marco 6, por lo que la dirección real es 110 y el desplazamiento es el mismo 11.
El concepto de memoria virtual nace a partir de la necesidad de ofrecer a los procesos más espacio de memoria del que está físicamente disponible. Esto se logra utilizando el almacenamiento secundario (por ejemplo, el disco duro) y guardando y trayendo páginas completas.
Cuando se ejecuta un proceso el sistema operativo carga solamente las páginas necesarias para comenzar la ejecución y solo carga a memoria las páginas que van a ser utilizadas. Las páginas que no sean requeridas no serán cargadas a memoria. Cuando se requiere una página y ésta no está presente en la memoria, el sistema operativo suspende el proceso y carga en memoria la página solicitada.
¿Qué ocurre si todos los marcos están ocupados? En ese caso el sistema busca una página que pueda liberar y guardarla en el espacio de intercambio (página víctima). Una vez liberado el marco, se carga la página requerida y el proceso puede continuar.
Se observan dos accesos al disco: copiar la página víctima al disco y traer la página requerida a memoria.
Para mejorar el rendimiento se utiliza un bit de modificación. Cuando se carga una página, en la tabla de páginas se agrega un bit de modificación apagado. Cuando hay un acceso de escritura en esa página, el bit se activa.
Cuando el sistema operativo elige una página víctima, si el bit de modificación está activado, entonces guarda la página en disco. De lo contrario sabe que lo que está en memoria es idéntico a lo que está en disco, por lo que ya no es necesario guardar la página en disco, evitando así el retraso correspondiente por utilizar el disco.
Considere un computador de 32 bits que dispone de un sistema de memoria virtual que emplea páginas de 16 KB y tiene instalada una memoria principal de 1 GB. Indique:
a) El formato de la dirección virtual
Expresemos el tamaño de la página como una potencia de 2.
16 KB = 1024 * 16 = 16384 = 214
Considerando que log2 (16384) = 14
Si el sistema es de 32 bits, entonces:
32 – 14 = 18
Por lo que:
Cantidad de bits para id de página: 18
Cantidad de bits para el desplazamiento: 14
b) El número máximo de páginas
La cantidad de páginas viene dada por la cantidad total de direcciones virtuales disponibles dividido entre la cantidad de direcciones de la página.
La cantidad total de direcciones en un sistema de 32 bits es de: 232
El tamaño de la página es de 16 KB que es igual a 214
Por lo que:
232 / 214 = 232-14 = 218 = 262,144 páginas
c) El número de marcos
Los marcos son los espacios disponibles en memoria real para las páginas.
Tengo un 1 GB de memoria real. Expresado en potencia de 2 es:
1 GB = 1024 x 1024 x 1024 = 1073 741 824 bytes = 230
La cantidad de marcos es el total de memoria real, dividido entre el tamaño de la página.
230 / 214 = 216 marcos
d) El tamaño del bloque que se transfiere entre el disco y la memoria principal
Es igual al tamaño de la página = 16KB
Un computador con memoria virtual emplea direcciones virtuales de 16 bits y páginas de 2 KB. El computador dispone de una memoria física instalada de 8KB. Indique:
a) El formato de la dirección virtual
Expresamos el tamaño de la página como una potencia de 2:
2KB = 1024 * 2 = 2048 = 211
Si el sistema es de 16 bits, entonces:
16 – 11 = 5
Por lo que:
Cantidad de bits para id de página: 5 bits
Cantidad de bits para desplazamiento: 11 bits
b) El número máximo de páginas
La cantidad de páginas viene dada por la cantidad total de direcciones virtuales disponibles dividido entre la cantidad de direcciones de la página.
El sistema es de 16 bits, por lo que se disponen de 216 direcciones.
El tamaño de la página es de 2KB = 1024 * 2 = 2048 = 211
Entonces:
216 / 211 = 216-11 = 25 = 32 páginas
c) El número de marcos
El sistema tiene de memoria física: 8KB
Si lo expresamos como potencia de 2:
8KB = 1024 * 8 = 8192 = 213
La cantidad de marcos es el total de memoria real, dividido entre el tamaño de la página.
213 / 211 = 213-11 = 22 = 4 marcos
d) Cuál es el tamaño máximo en KB de memoria virtual que se puede direccionar:
El sistema es de 16 bits, por lo que:
216 = 65536
Expresado en KB (considere que 1 KB es 1024 bytes)
65536 / 1024 = 64 Kb
e) El formato de la dirección física:
En memoria física se disponen de 8KB.
8KB = 213
Y como ya se calculó el tamaño de la página es de 2KB = 211
Por lo que:
Cantidad de bits para id de página: 2 bits
Cantidad de bits para desplazamiento: 11 bits