La memoria
virtual es una técnica para proporcionar la simulación de un espacio de memoria
mucho mayor que la memoria física de una maquina. Esta ilusión permite que los
programas se hagan sin tener en cuenta el tamaño exacto de la memoria física.
La memoria
virtual ha llegado a ser un componente esencial de la mayoría de los S.O
actuales. Y como en un instante dado, en la memoria solo se tienen unos pocos
fragmentos de un proceso dado, se pueden mantener más procesos en la memoria.
La memoria virtual también simplifica la carga del
programa para su ejecución llamado reubicación, este procedimiento permite que
el mismo programa se ejecute en cualquier posición de la memoria física.
Evaluación de las
Organizaciones de Almacenamiento
Almacenamiento virtual "significa la capacidad de direccional un
espacio de almacenamiento mucho mayor que el disponible en el almacenamiento
primario de determinado sistema de computación”.
Esta tecnología apareció en 1960 en la Universidad de Manchester
(Inglaterra), en el sistema “Atlas”.
Los métodos más comunes de implementación son mediante:
Técnicas de “paginación”.
Técnicas de “segmentación”.
Una combinación de ambas
técnicas.
Las direcciones generadas por los programas en su ejecución no son,
necesariamente, aquellas contenidas en el almacenamiento primario (memoria
real), ya que las direcciones virtuales suelen seleccionarse dentro de un
numero mucho mayor de direcciones que las disponibles dentro del almacenamiento
primario.
La evolución en las organizaciones de almacenamiento puede resumirse como
sigue:
Real:
Sistemas dedicados a un solo
usuario.
Real:
Sistemas de multiprogramación
en memoria real:
Multiprogramación en
partición fija:
Absoluta.
Relocalizable
(reubicadle).
Multiprogramación en
partición variable.
Virtual:
Multiprogramación en
almacenamiento virtual:
Paginación pura.
Segmentación pura.
Combinación paginación /
segmentación.
3.3.2 Paginación
¿Qué es la paginación?
El termino memoria virtual se asocia normalmente con sistemas que emplean
paginación, aunque también se puede usar memoria virtual basada en la
segmentación. El uso de la paginación en la memoria virtual fue presentado por
primera vez en el computador Atlas.
Cada proceso tiene su propia tabla de paginas y cuando carga todas sus
paginas en la o memoria principal. Puesto que solo algunas de las páginas de un
proceso pueden estar en la memoria principal, se necesita un bit en cada
entrada de la tabla para indicar si la pagina perteneciente esta presente en la
memoria principal o no. Si el bit indica que la pagina esta en la memoria, la
entrada incluye también el número de marco para esa pagina.
Otro bit de control necesario en la entrada de la tabla de páginas es el
bit de modificación (M), para indicar si el contenido de la página
correspondiente se ha alterado desde que la página se cargo en la memoria
principal. Si no ha habido cambios, no es necesario escribir la página cuando
sea sustituida en el marco que ocupa actualmente.
Estructura de la tabla de páginas
El mecanismo básico de lectura de una palabra de la memoria supone la
traducción por medio de la tabla de páginas de una dirección virtual o lógica
(ver figura 3.3.2.1 y 3.3.2.2), formada por un número de página y un
desplazamiento, a una dirección física que esta formada por un número de marco
y un desplazamiento.
Con la memoria virtual, la CPU produce direcciones virtuales que son
traducidas por una combinación de hardware y software a direcciones físicas,
pues pueden ser utilizadas para acceder a memoria principal. Este proceso se
denomina correspondencia de memoria o traducción de direcciones. Actualmente
los dos niveles de la jerarquía de memoria controlados por la memoria virtual
son las DRAM y los Discos magnéticos.
Puesto que la tabla de páginas es de longitud variable, en función del
tamaño del proceso, no es posible suponer que quepa en los registros.
3.3.4 Sistema de paginación
/ segmentación
La paginación y la segmentación puras son métodos de manejo de memoria
bastante efectivos, aunque la mayoría de los sistemas operativos modernos
implantan esquemas combinados, es decir, combinan la paginación y la
segmentación.
La idea de combinar estos esquemas se debe a que de esta forma se
aprovechan los conceptos de la división lógica de los programas (segmentos) con
la granularidad de las páginas. De esta forma, un proceso estará repartido en
la memoria real en pequeñas unidades (paginas) cuya liga son los segmentos.
También es factible así el compartir segmentos a medida que las partes
necesitadas de los mismos se van reverenciando (paginas).
Para comprender este esquema, nuevamente se vera como se traduce una
dirección virtual en una localidad de memoria real. Para la paginación y
segmentación puras se puede decir que el direccionamiento es `bidimensional'
porque se necesitan dos valores para hallar la dirección real.
Para el caso combinado, se puede decir que se tiene un direccionamiento
`tridimensional'.
El sistema debe contar con una tabla de procesos (TP) (Ver figura 3.3.4.1).
Por cada renglón de esa tabla se tiene un número de proceso y una dirección a
una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos.
Cuando un proceso hace alguna referencia a memoria, se consulta TP para
encontrar la tabla de segmentos de ese proceso. En cada tabla de segmentos de
proceso (TSP) se tienen los números de los segmentos que componen a ese
proceso.
Por cada segmento se tiene una dirección a una tabla de páginas. Cada tabla
de páginas tiene las direcciones de las páginas que componen a un solo
segmento. Por ejemplo, el segmento `A' puede estar formado por las paginas
reales `a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las
paginas `f','g','j','w' y `z'. Otro
aspecto importante es la estrategia para cargar páginas (o segmentos) a la
memoria RAM.
Se usan más comúnmente dos estrategias: cargado de páginas por demanda y
cargado de páginas anticipada. La estrategia de cargado por demanda consiste en
que las páginas solamente son llevadas a RAM si fueron solicitadas, es decir,
si se hizo referencia a una dirección que cae dentro de ellas.
La carga anticipada consiste en tratar de adivinar que paginas serán
solicitadas en el futuro inmediato y cargarlas de antemano, para que cuando se
pidan ya no ocurran fallos de pagina.
Ese `adivinar' puede ser que se aproveche el fenómeno de localidad y que
las paginas que se cargan por anticipado sean aquellas que contienen
direcciones contiguas a la dirección que se acaba de refenciar. De hecho, el
sistema operativo VMS usa un esquema combinado para cargar páginas: cuando se
hace referencia a una dirección cuya página no esta en RAM, se provoca un fallo
de página y se carga esa página junto con algunas páginas adyacentes. En este
caso la página solicitada se cargo por demanda y las adyacentes se cargaron por
anticipación.
No hay comentarios:
Publicar un comentario