Anda di halaman 1dari 14

http://wiki.inf.utfsm.cl/index.php?

title=Paginaci%C3%B3n

Paginación
Contenido
[ocultar]

 1 Contenidos

 2 ¿Qué es y Cómo funciona?

 3 Hardware de Paginación

 4 Tabla de Página

o 4.1 Estructura de una tabla de Página

 5 Memoria Asociativa

 6 TAE: Tiempo de Acceso Efectivo

 7 Protección de Memoria

 8 Referencias

Contenidos
¿Qué es y Cómo funciona?

La paginación es uno de los esquemas de manejo de memoria en donde un computador puede


almacenar y recuperar datos de un dispositivo de almacenamiento secundario para su uso en la
memoria principal. En el esquema de manejo de memoria de paginación, el sistema operativo recupera
datos desde un dispositivo de almacenamiento secundario en bloques de un mismo tamaño llamados
páginas. La principal ventaja de paginación sobre la segmentación de memoria es que permite al
espacio de dirección física de un proceso ser no contiguo. Antes de la paginación, los sistemas debían
poner programas en almacenamiento de forma contigua, lo que causaba varios problemas de
almacenamiento y fragmentación.
El método básico para implementar paginación consiste en dividir la memoria física en bloques de
tamaño fijo llamados frames (marcos) y dividir la memoria lógica en bloques de mismo tamaño llamados
pages (páginas). Cuando un proceso se va a ejecutar, sus páginas son cargadas en cualquier marco de
la memoria de almacenamiento secundario. Este está dividido en bloques de tamaño fijo del mismo
tamaño de los marcos en memoria.

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.

Esquema Hardware de paginación.

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.

Estructura de una tabla de Página

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:

* PTBR: Page Table Base Register, el cuál apunta a la tabla de página


* PTLR: Page Table Length Register: cuya función es indicar el tamaño de
la página.

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:

TLB en acción, haga click para agrandar

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).

Veamos como esto actúa:

Paginación con método Hash

 Utilización de Tabla de páginas invertidas: La especial particularidad de este método, es que


disminuye el desperdicio de memoria, pero aumenta el tiempo de búsqueda y para lidiar con esto,
utiliza la tabla hash. Veamos el ejemplo:
Tabla de Página invertida

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.

Existen dos tipos de memorias asociativas:

- Memorias heteroasociativas: establecen una correspondencia de x (vector de entrada) en y (vector de


salida), de distinta dimensión. Dichos patrones se llaman memorias principales o de referencia.

- Memorias autoasociativas: establece la misma correspondencia que la memoria heteroasociativa pero


siendo los patrones de entrada y de salida los mismos.

TAE: Tiempo de Acceso Efectivo


Como sabemos la paginacion pede tener una demanda significativa de rendimientos en el sistema, por
lo que cuando usamos cache, debemos saber cuanto tiempo nos cuesta acceder a la memoria, para
determinar este tiempo ocupamos el TAE, que nos da el tiempo medio de acceso a una celda de
memoria. Este tiempo se calcula con la siguiente formula:

TAE : p*ta + (1-p)*tf

Donde:

- p: probabilidad de acierto

- ta: tiempo de acceso si hay acierto

- tf: tiempo de acceso si hay fallo

- 1-p: probabilidad de fallo

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.

- Segmentación: En un esquema de segmentación un espacio de direcciones lógicas es un conjunto de


segmentos. Cada segmento tendrá un nombre y un largo. Las direcciones van a hacer referencia tanto
al nombre como al desplazamiento dentro del segmento. <nro.segmento, desplazamiento>.
- Mecanismo de traducción de direcciones: Se lleva un tabla de segmento por cada proceso, cada
entrada a la tabla de segmento lleva la siguiente información: segment base (dirección base del
segmento) segment limit (largo del segmento)

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:

- La familia Microsoft Windows

- La mayoría de sistemas tipo Unix incluyendo:

- 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:

Número de marco Programa.#página Dirección física

0 Programa A.0 1000:0000

1 Programa A.1 1000:1000

2 Programa A.2 1000:2000

3 Programa D.0 1000:3000

4 Programa D.1 1000:4000

5 Programa C.0 1000:5000

6 Programa C.1 1000:6000

7 Programa D.2 1000:7000

La tabla de la derecha muestra una posible configuración de la memoria en un momento dado,


con páginas 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
páginas.

1. El programa A se carga en memoria (se le asignan los marcos 0, 1 y 2)


2. El programa B se carga en memoria (se le asignan los marcos 3 y 4)
3. El programa C se carga en memoria (se le asignan los marcos 5 y 6)
4. El programa B termina, liberando sus páginas
5. 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 permanecía libre)
De esta forma, las tablas simplificadas de cada proceso se ven de esta forma:
Proceso A

Página Dirección física

0 1000:0000

1 1000:1000

2 1000:2000

Proceso B

Página Dirección física

- -

- -

Proceso C

Página Dirección física

0 1000:5000

1 1000:6000

Proceso D
Página Dirección física

0 1000:3000

1 1000:4000

2 1000:7000

Ahora consideremos qué sucede cuando un programa quiere acceder a su memoria. Si el


programa A contiene una referencia a la memoria con dirección 20FE, se realizará el siguiente
procedimiento. 20FE es 0010000011111110 en notación binaria (en un sistema de 16 bit), y
en el ejemplo se están usando páginas de 4Kb de tamaño. Cuando la petición de la dirección
de memoria 20FE es realizada, la Unidad de Gestión de memoria se ve de esta forma:

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

Entrada a la tabla de páginas

n = @ página física V P L E M

* n = bits de la @ lógica -log2(número de palabras de una página).


* V: bit de validez.
* P: bit de persistencia.
* L: bit de derecho a lectura.
* E: bit de derecho a escritura.
* M: bit de modificación.

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.

Paginación en memoria virtual[editar]


El único inconveniente de paginación pura es que todas las páginas de un proceso deben
estar en memoria para que se pueda ejecutar. Esto hace que si los programas son de tamaño
considerable, no puedan cargarse muchos a la vez, disminuyendo el grado de
multiprogramación del sistema. Para evitar esto, y aprovechando el principio de cercanía de
referencias donde se puede esperar que un programa trabaje con un conjunto cercano de
referencias a memoria (es decir con un conjunto residente más pequeño que el total de sus
páginas), se permitirá que algunas páginas del proceso sean guardadas en un espacio de
intercambio (fragmentación interna) mientras no se necesiten.
Cuando la paginación se utiliza junto con memoria virtual, el sistema operativo mantiene
además el conocimiento sobre qué páginas están en memoria principal y cuáles no, usando
la tabla de paginación. Si una página 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 dirección de memoria en esa página, la MMU responde
levantando una excepción (comúnmente llamada fallo de página). Si la página se encuentra
en el espacio de intercambio, el sistema operativo invocará una operación llamada intercambio
de página, para traer a memoria principal la página requerida. La operación lleva varios pasos.
Primero se selecciona una página en memoria, por ejemplo una que no haya sido usada
recientemente (para más detalles ver algoritmos de reemplazo de páginas). Si la página fue
modificada, se escribe la misma en el espacio de intercambio. El siguiente paso en el proceso
es leer la información en la página necesitada desde el espacio de intercambio. Cuando esto
sucede, las tablas para traducción de direcciones virtuales a reales son actualizadas para
reflejar los contenidos de la memoria física. Entonces el intercambio de página sale, y el
programa que usó la dirección que causó la excepción es vuelto a ejecutar desde el punto en
que se dio la misma y continúa como si nada hubiera pasado. También es posible que una
dirección virtual sea marcada como no disponible porque no fue localizada previamente. En
estos casos, una página de memoria es localizada y llenada con ceros, la tabla de paginación
es modificada para mostrar los cambios y el programa se reinicia como en el otro caso.
Si la página que ha provocado el fallo de página no se encuentra en el espacio de intercambio,
habrá que ir a buscarla a la unidad de disco. El proceso, por lo demás sería análogo.

Anda mungkin juga menyukai