title=Paginaci%C3%B3n
Paginación
Contenido
[ocultar]
1 Contenidos
3 Hardware de Paginación
4 Tabla de Página
5 Memoria Asociativa
7 Protección de Memoria
8 Referencias
Contenidos
¿Qué es y Cómo funciona?
Hardware de Paginación
El tamaño de pagina (como el marco de página) es definido por hardware. El tamaño de una pagina es
típicamente una potencia de 2, variando entre 512 B y 16 MB por pagina, dependiendo de la
arquitectura del computador. La selección de una potencia de 2 como tamaño de página hace la
traducción de una direccion lógica a un número de pagina y offset de página algo fácil. Si el tamaño del
espacio de dirección lógica es 2^m y el tamaño de página 2^n unidades de dirección (bytes o palabras),
entonces los m-n bits de mayor orden de la dirección logica designan el número de pagina, y los n bits
de menor orden designan el offset de página.
Cualquier direccion generada por la CPU es divida en dos partes: un número de página (p) y un offset
de página (d). El número de página es usado como indice en una tabla de página. La tabla de página
contiene las direcciones base de cada página en la memoria física. Esta dirección base es combinada
con el offset de página para definir la dirección de memoria física que es enviada a la unidad de
memoria.
Tabla de Página
Bueno, ya hemos revisado el concepto de paginación y como funciona, En esta sección explicaremos
como se implementa, y es en este punto en donde debemos mencionar a "la Tabla de Página". La tabla
de página es una Estructura de datos usada por el sistema de memoria virtual, en un sistema
operativo para almacenar la relación entre una dirección virtual en la memoria y las direcciones físicas.
Veamos dicha explicación en una imagen:
Tabla de Página
Ahora bien, debemos comprender con mayor profundidad como funciona una tabla de página y es lo
que veremos a continuación.
La tabla de página se guarda en memoria principal, y para poder acceder a ella, se requieren de 2
estructuras, las cuales son conocidas como:
Ahora bien, cada dirección, ya sea dato o instrucción requiere de 2 accesos a memoria, uno para la
tabla de página y otro para la instrucción. También debemos mencionar que la implementación de la
tabla de página puede ser resuelta de varias maneras,citemos algunas:
* Se puede implementar como un conjunto de registros(hardware) dedicados
de alta velocidad.
* Haciendo uso de la memoria Caché, para el caso de los 2 accesos a
memoria, reduciendo el tiempo de acceso.
Esta última también es conocida como TLB, cuya traducción es: tranlation look-aside, y como
mencionabamos tiene por objeto el reducir el tiempo de acceso a memoria, veamos un ejemplo:
Un dato a mencionar, que mas adelante será tratado en profundidad es que algunos TLB tienen
identificadores en sus entradas, conocidos por sus siglas como ASID cuya función es identificar a cada
proceso y así proteger el espacio de direcciones.
Con respecto al tamaño, ¿que pasa si la tabla de página es muy grande?: una respuesta inmediata es
que se perderían aquellos espacios que quizás no son pequeños, pero no son lo suficientemente
grandes como para darle cabida a un proceso. Es por ello, que existen técnicas para grandes tablas de
páginas, las cuáles son:
Paginación Jerárquica: Se caracteriza por dividir el espacio lógico en múltiples tablas de página.
Paginación Jerárquica
Utilización de Hash: Por lo general el espacio de direcciones comunes es mayor a 32bits. El número
de la página virtual se usa como llave de una tabla de página hash. Esta tabla de página contiene
una lista con los elementos asociados al mismo registro, por lo que se compara el número de
página virtual en la lista buscando una coincidencia, si se encuentra, el marco de página se
extrae,(en este punto es recomendable revisar el material de ARI).
Memoria Asociativa
Se llama memoria asociativa si permite recuperar información a partir de conocimiento parcial del
contenido en algún dispositivo de almacenamiento, sin saber su localización de almacenamiento.
Estas pueden almacenar información y recuperarla cuando sea necesario, es como una red
retroalimentada ya que la salida se utiliza repetidamente como una nueva entrada hasta que el proceso
converge. Puede recuperar dicha información basándose en el conocimiento de parte de ésta (una
clave). El patrón clave puede ser una versión con ruido de un patrón memorizado, es decir, que difiere
de él en pocas componentes. La memoria humana recuerda a una persona aunque vaya vestida de
forma diferente o lleve gafas.
Las memorias asociativas son una de las redes neuronales artificiales más importantes con un amplio
rango de aplicaciones en áreas tales como: Memorias de acceso por contenido, identificación de
patrones y control inteligente.
Donde:
- p: probabilidad de acierto
Protección de Memoria
Es un método esencial que utilizan los sistemas operativos para el control del uso de memoria de un
computador. Su finalidad es evitar que un proceso en un sistema operativo acceda a la memoria que no
le ha sido asignada. Así pueden evitarse problemas durante la ejecución del software, y también se evita
que software maligno acceda a los recursos del sistema.
La protección se implementa por un conjunto de bits que son asociados a cada frame. Un bit puede
definir si una página es read-only o read-write y cada vez que se hace una operación sobre un page
frame se verifica sobre estos bits.
- Multilevel Paging: Aca se busca minimizar el tiempo de búsqueda en la tabla de páginas utilizando un
sistema de paginación de 2 niveles. Una dirección es de la forma: (P1,P2,d), donde ( numero pagina,
numero pagina, desplazamiento).
- Inverted Page Table: Se lleva una tabla de páginas para todos los procesos. Cada entrada de página
contiene la siguiente información: <process-id, nro. Pagina, desplazamiento>.
- Paginas Compartidas: Es posible que los procesos compartan código común. El código común no sera
protegido mediante los bits de protección, ya que no puede ser modificado.
La mayoría de los sistemas operativos tienen protección de memoria. Algunos de los sistemas
operativos que disponen de protección de memoria incluyen:
- Solaris
- Linux
- BSD
- Mac OS X (el anterior Mac OSes tenía una protección de memoria limitada)
Paginación de memoria
En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los
programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos
del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad
de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza
la fragmentación interna y evita la externa.
En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes
procesos, mientras que algunos marcos están 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 página del proceso. De esta forma, las páginas de un proceso
pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas
de otros procesos.
En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a
cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página
y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número
de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la
dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real
o dirección física. Este proceso se realiza en una parte del computador específicamente
diseñada 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 páginas en
marcos libres y se completa su tabla de páginas.
Veamos un ejemplo:
0 1000:0000
1 1000:1000
2 1000:2000
Proceso B
- -
- -
Proceso C
0 1000:5000
1 1000:6000
Proceso D
Página Dirección física
0 1000:3000
1 1000:4000
2 1000:7000
0010000011111110 = 20FE
|__||__________|
| |
| v
| Posición de memoria dentro de la página (0FE)
v
Número de página (0010 = 2)
Tabla de paginación
n = @ página física V P L E M
Al usar páginas de 4096 bytes, todas las ubicaciones dentro de una página pueden ser
representadas por 12 bits, en el sistema binario (212=4096), lo que deja 4 bits para representar
el número de página. Si las páginas hubieran sido de la mitad del tamaño (2048) se podrían
tener 5 bits para el número de página, lo que significa que a menor tamaño de página se
pueden tener tablas con más páginas.
Cuando el pedido de acceso a memoria es realizado, la MMU busca en la tabla de páginas del
proceso que realizó el pedido por la relación en memoria física. En nuestro ejemplo, la página
número 2 del proceso A corresponde al marco número 2 en memoria física, con dirección real
1000:2000, por lo tanto, la MMU devolverá la dirección del marco en memoria física, con el
desplazamiento dentro de esa página: 1000:20FE.