<< Chapter < Page Chapter >> Page >

La memoria virtual desacopla las direcciones usadas por el programa (direcciones virtuales) de las direcciones donde realmente está almacenado el dato en memoria (direcciones físicas). Su programa ve sus direcciones comenzando desde 0 y avanzando hasta algún número grande, pero las direcciones físicas a las que realmente están asignadas pueden ser muy diferentes. Esto proporciona cierto grado de flexibilidad, pues permite a todos los procesos creer que tienen el sistema de memoria completo para ellos. Otro rasgo de los sistemas de memoria virtual es que dividen la memoria de sus programas en páginas — fragmentos. Los tamaños de página varían entre 512 bytes y 1 MB o más grande, dependiendo de la máquina. Las páginas no tienen por qué estar físicamente contiguas, aunque su programa las vea de esta forma. Al estar separados en páginas, los programas son más fáciles de acomodar en memoria, o mover porciones de los mismos hacia el disco.

Tablas de páginas

Digamos que su programa solicita una variable almacenada en la localidad 1000. En una máquina con memoria virtual, no hay una correspondencia directa entre la idea que su programa tiene acerca de dónde se encuentra la localidad 1000, y la que tiene el sistema de memoria. Para hallar dónde está almacenada realmente la variable, la dirección tiene que traducirse de virtual a física. El mapa que contiene tales traducciones se llama una tabla de páginas . Cada proceso tiene asociadas varias tablas de páginas, correspondientes a distintas regiones, tales como los segmentos de texto y datos del programa.

Para entender cómo funciona la traducción de direciones, imagine el siguiente escenario: en algún momento su programa solicita los datos almacenados en la localidad 1000. [link] muestra los pasos necesarios para completar la recuperación de esos datos. Al elegir la localidad 1000, usted ha identificado en qué región de memoria recae esa referencia, y ésta identifica cuál tabla de página debe usarse. Por tanto, la localidad 1000 ayuda al procesador a elegir una entrada en la tabla. Por ejemplo, si el tamaño de página es de 512 bytes, 1000 cae en la segunda página (las páginas ocupan los rangos 0-511, 512-1023, 1024-1535, etc.)

Por tanto, la segunda entrada en la tabla debe almacenar la dirección de la página que contiene el valor en la localidad 1000.

Mapeo de direcciones virtuales a físicas

La figura uno muestra un objeto etiquetado, Tabla de Regiones de Proceso, y una flecha apuntando a la derecha, etiquetada Traducción Virtual. La flecha apunta a otro objeto etiquetado Tabla de Páginas. Al lado izquierdo del segundo objeto hay una etiqueta, Localidad 1000 de Dirección Virtual, con una flecha apuntando hacia la derecha al segundo objeto. A la derecha del segundo objeto está una flecha etiquetada Dirección Física, que apunta a la etiqueta Datos.

El sistema operativo almacena virtualmente las direcciones de la tabla de páginas, por lo que tendrá que realizar una traducción virtual a física para localizar la tabla en la memoria. Una traducción de virtual a física más, y finalmente tenemos la verdadera dirección de la localidad 1000. La referencia a memoria puede completarse, y el procesador puede continuar ejecutando su programa.

Buffer de traducción de direcciones

Como puede ver, la traducción de una dirección a través de una tabla de páginas resulta bastante complicada. Requiere dos búsquedas en tablas (tal vez tres) para encontrar nuestros datos. Si cada referencia a memoria fuera así de complicada, las computadoras con memoria virtual tendrían rendimientos pésimos. Afortunadamente, la localidad de referencias causa que las traducciones de direcciones virtuales se agrupen; un programa puede repetir el mismo mapeo de páginas virtuales millones de veces por segundo. Y allí donde tenemos un uso repetido de los mismos datos, podemos aplicar una cache.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Cómputo de alto rendimiento. OpenStax CNX. Sep 02, 2011 Download for free at http://cnx.org/content/col11356/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?

Ask