Está en la página 1de 11

Memoria virtual

Memoria virtual

Referencias

Descargá el PDF
LECCIÓN 1 de 3

Memoria virtual

Memoria virtual

Para que un proceso pueda ejecutarse, necesita estar en la memoria


principal. Pero siempre es bueno recordar que esta memoria no es ilimitada.
Y, aunque fuera muy grande, ¿no sería mejor que, si hay procesos que no
están listos para ejecutarse, estos dejen su lugar a otros que sí lo están? De
esta forma, el procesador tendría más procesos en estado Listo y, muy
probablemente, mejoraría el rendimiento. 

También puede suceder, debido a la voracidad de las aplicaciones, que un


proceso necesite más memoria que la que existe físicamente en una
computadora. El programador de dicha aplicación puede usar el concepto de
overlays para dividir este tamaño en otros más pequeños, pero, para evitar
que el programador sea el encargado de dicha tarea, se emplea el concepto
de memoria virtual. Esta memoria toma su nombre del hecho de que un
programador ve una memoria superior a la memoria física real. Esto es
posible porque se utiliza espacio en el disco o en la memoria secundaria.

Resulta más eficiente dejar datos o instrucciones no necesarios en la


memoria secundaria y solicitarlos cuando el procesador los requiere, que
tener todo en la memoria principal, y desperdiciar espacio que podría ser
usado por un proceso que realmente debe ser procesado. 

Lo que el sistema operativo debe evitar es el efecto denominado thrashing,


por el que, debido a la cantidad de intercambios entre las memorias principal
y secundaria, el sistema se pasa más tiempo intercambiando qué
procesando. Para evitar este efecto, se utilizan diversos algoritmos que
serán analizados a continuación, a propósito de un concepto fundamental
para nosotros.

Paginación en la memoria virtual

El concepto de paginación, cuando se utiliza la memoria virtual, es similar al


que analizamos en la lectura anterior, pero la diferencia está en el contenido
de la tabla de páginas. 

Si bien se mantiene una tabla por proceso, ahora debe indicarse si la página
está en la memoria principal o en la secundaria. En el caso de que esté en la
memoria principal, se indicará el marco, al igual que en el caso de la memoria
real. También se utiliza un bit adicional que indica si los datos de la entrada
que contiene el  bit  fueron modificados cuando estuvieron en la memoria
principal. 

Un ejemplo de tabla de páginas se observa en la parte inferior de la Figura 1,


con el bit  P para indicar si la página está o no en la memoria principal, y
el bit M para indicar si fue modificada.

Figura 1: Ejemplo de dirección virtual y de tabla de páginas

Fuente: Stallings, 2005, p. 345.

Como los procesos pueden disponer ahora de mucho espacio virtual, la


cantidad de páginas en una tabla puede ser muy grande. Sería un gran
problema que las tablas de página completas se almacenarán en la memoria
principal, porque gran parte de esa memoria estaría destinada a almacenar
información de las tablas, y no al almacenamiento de las instrucciones y de
los datos. Para evitar esto, una parte de las tablas de páginas también se
almacena en la memoria virtual.

En la Figura 2 observamos una posible implementación de esto. Allí, el


procesador utiliza un esquema de dos niveles. En forma general, cada
entrada de un directorio general apunta a una tabla de páginas. Si la
extensión del directorio es X, y la longitud máxima de la tabla de páginas es Y,
entonces un proceso consistirá en X = Y páginas (Stallings, 2005).

Figura 2: Ejemplo de tabla de páginas con jerarquía


Fuente: Stallings, 2005, p. 347.

En la Figura 2 se observa el mecanismo utilizado para traducir una dirección


virtual. La página raíz siempre se mantiene en la memoria principal. Los
primeros 10 bits  de la dirección virtual se pueden usar para indexar en la
tabla de páginas raíz, a fin de encontrar la ETP para la página en la que está
la tabla de páginas de usuario. Si la página no está en la memoria principal,
se produce un fallo de página. Si la página está en la memoria principal, los
siguientes 10  bits de la dirección virtual se usan para indexar la tabla de
páginas de usuario, a fin de encontrar la ETP de la página a la cual se hace
referencia desde la dirección virtual original (Stallings, 2005).

Figura 3: Implementación de la traducción de direcciones


Fuente: Stallings, 2005, p. 347.

 Continúa leyendo sobre la tabla de páginas de este ejemplo, su gran


desventaja y la implementación con tabla de páginas invertidas, en el
capítulo 8 de Sistema operativos, el libro de Stallings. 

Caché para tabla de páginas 

Utilizar memoria virtual es ventajoso, pero podría introducir demoras si, por
ejemplo, se requiere primero buscar tanto la tabla de páginas en el disco
como en la página propiamente dicha. Así como existe una memoria caché
entre la memoria principal y los registros, existe una memoria muy rápida,
llamada buffer de traducción anticipada (translation lookaside buffer o TLB),
que se emplea para mantener aquellas tablas de páginas usadas
recientemente o con mayor frecuencia.

Así como el procesador intenta, primero, obtener datos de la memoria caché,


cuando tiene una dirección virtual, lo primero que hace es consultar la TLB. Si
la búsqueda es exitosa, es decir, si la entrada de página está en TLB,
entonces se traduce en una dirección real. Si no hay acierto, el procesador
debe buscar en la tabla de página del proceso. Aquí hay dos opciones: que la
página esté en la memoria principal o que esté en la virtual. En este último
caso, el hardware ya no tiene más que hacer, y es el sistema operativo el que
deberá hacerse cargo de la situación y generar una solicitud de I/O para traer
la información desde el disco hasta la memoria principal. 

Para retomar la comparación entre la caché ubicada entre los registros y la


memoria principal y la caché que guarda tablas de páginas, es importante
aclarar que el procesador interactúa con ambas. Una vez que se obtiene la
dirección real en base a la lógica, el procesador debe consultar la caché para
saber si puede obtener la información desde allí, o si debe ir en busca de ella
a la memoria principal.

Tamaño de página 

Elegir un tamaño de página no es algo trivial. Si el tamaño de cada página es


grande, entonces habrá menos fragmentación interna. Si el tamaño es
pequeño, entonces cada proceso necesitará muchas páginas, lo que hará
aumentar el tamaño de la tabla de páginas y la memoria requerida para
almacenar dicho proceso. Si la memoria secundaria está compuesta por
discos magnéticos, resultará más conveniente usar tamaños grandes para
mejorar el rendimiento de las transferencias. 

En la Figura 4 se observan dos gráficos. El gráfico (a) muestra cómo, a


medida que el tamaño de página crece, crece también la probabilidad de fallo
de página, debido al principio de proximidad. Sin embargo, cuando este
tamaño se aproxime al del proceso, volverá a disminuir, hasta llegar a la
situación en la que no habrá fallo de página, porque el proceso completo
entra en una sola página. 

En la parte (b) de la Figura 4, se muestra cómo el número de fallos disminuye


mientras más sean las páginas que se ubiquen en la memoria principal.

Figura 4: Tasas de fallo

Fuente: Stallings, 2005, p. 353.


Diferentes arquitecturas de computadoras adoptan diferentes tamaños de
páginas. Por ejemplo, el Pentium adopta entre 4 KB y 4 MB de tamaño; un
IBM AS/400, 512 bytes.

Segmentación en la memoria virtual

Al igual que en la memoria real, en la memoria virtual es posible utilizar la


técnica de segmentación. También se utilizan tablas de segmentos (una por
proceso), pero más complejas que las utilizadas para la segmentación de la
memoria real, ya que debe indicarse si el segmento está en la memoria
virtual o real.

 Continúa leyendo sobre segmentación en la memoria virtual, y sobre


las implementaciones que utilizan en forma conjunta las estrategias
de segmentación y paginación, en la bibliografía básica de la
materia.

C O NT I NU A R
LECCIÓN 2 de 3

Referencias

Stallings, W. (2005). Sistemas Operativos. España: Pearson Education.


LECCIÓN 3 de 3

Descargá el PDF

Módulo 3 - Lectura 3.pdf


257.9 KB

También podría gustarte