Sei sulla pagina 1di 11

Memorias Virtuales

Andres Salazar
November 20th 2015

Qu
e son las memorias virtuales?

Las memorias virtuales son procesos encargados de administrar adecuadamente la memoria de manera que proporcione a los sistemas operativos
disponer de una mayor cantidad de memoria de la que originalmente contendra originalmente dicha memoria fsicamente.
Las memorias virtuales son creadas con el fin de solventar los inconvenientes que tienen las aplicaciones al momento de requerir acceso a mas
informacion, como lo son los datos, los codigos y las instrucciones, por ende
necesitaran de mayor espacio en las memorias para utilizarlos, por lo general carecen de estos espacios. Estos inconvenientes suelen suceder debido a
que los sistemas operativos permiten la realizacion de diversos procesos de
gestion de las aplicaciones en forma paralela. Como medida de solucion a
estos problemas de falta de espacio en la memoria de la que originalmente
poseen las mismas se considera el almacenamiento parcial de la informacion
de las aplicaciones ejecutadas dentro del disco, trasladandolas a la memoria
principal cuando sea necesario.
La segmentacion o tambien conocido como solapamiento, es un proceso
alterno que fue creado para lidiar con los problemas antes mencionados, consiste en la capacidad que tienen las aplicaciones de hacer una eleccion de la
informacion que crea sea la mas importante para ser guardada en cada sitio
de la memoria y de poder transportarla. Mediante este proceso, el codigo requerido especialmente para propositos de inicializacion poda ser sobrescrito
con los codigos que se van a utilizar posteriormente. Este proceso tiene un
inconveniente en cuanto a la complejidad de sus dise
nos, era susceptible a
1

errores, su implementacion tena problemas debido a la generacion de conflictos entre varios programas dentro de la misma memoria.
Tambien sufra inconvenientes al momento de solucionar los problemas
de limitaciones globales a los sistemas en los intervalos de tiempo que se
ejecutaban estos. En resumen, los programas que trabajaran mediante la
segmentacion o el solapamiento requeran de menos espacio en la memoria
para poder ser ejecutados en comparacion con los programas solapados, sin
embargo, si el sistema carece del espacio de memoria necesario destinado a
los programas solapados, se volva a repetir los errores por falta de memoria.
La solucion a los problemas experimentados por los programadores en
cuanto al proceso de ir repartiendo proceso a proceso en cada uno de los
bloques fue la incorporacion de las memorias virtuales.
Las memorias virtuales fueron desarrolladas por un grupo de investigadores en Manchester, Inglaterra, esta tecnologa fue aplicada a un grupo
de computadoras durante la decada de 1960, relacionando especialmente con
proyectos de investigacion en nuevos dise
nos de los sistemas computacionales.
En la decada de 1970, la mayora de computadoras ya contaban con memorias
virtuales. En la actualidad, los procesadores como por ejemplo los Core i7 y
los CPU OMAP4430 cuentan con sofisticados sistemas de memorias virtuales.
La memoria virtual permite el manejo en conjunto entre un hardware
especfico y los sistemas operativos de forma que utilicen tanto la memoria
principal y la memoria secundaria de una forma apropiada para dar la idea de
que el ordenador este provisto de una memoria principal adicional de la que
normalmente posee. Los metodos utilizados para cumplir con este proposito
son invisibles a los procesos gestionados.
Las memorias virtuales dividen a la memoria fsica en bloques a los cuales
se les asignan diferentes procesos. Independientemente del enfoque que se lo
emplee para la generacion de las memorias virtuales, estas deben proporcionar un esquema de proteccion que dara la instruccion de que a cada
bloque se le deba corresponder un u
nico proceso. A pesar de que la proteccion de la memoria virtual es esencial para los computadores, la accion de
compartir no es la u
nica razon por la que se invento las memorias virtuales.
Si un programa llego a ser demasiado grande, el trabajo del programador
2

consiste en buscar la manera de que se ajuste a la memoria.


Las memorias virtuales son ideales porque reducen el tiempo para que
inicie un determinado programa debido a la utilizacion del codigo necesario
en la memoria fsica para esta actividad. Para generar memorias virtuales
con su maxima capacidad de almacenamiento se deben de tomar en cuenta
las caractersticas que posea el procesador.
Las memorias virtuales facilitan el trabajo del programador a aplicaciones
porque se pueden obviar completamente la necesidad de trasladar datos entre los diferentes espacios de memoria, de esta manera el programador se
fue liberando de lotes molestosos de contabilidad de estos procesos e instrucciones.
Las memorias virtuales manejan dos niveles de la jerarqua de memoria
representado por la memoria principal y el almacenamiento de la informacion
secundaria, tambien simplifica la carga de programa para su ejecucion. El
mecanismo llamado reubicacion permite que el mismo programa se ejecute
en cualquier ubicacion de la memoria fsica.

C
uales son las clases de memorias virtuales
existen?

Realmente solamente existe una sola memoria virtual, sin embargo podra
tratarse de diferentes memorias virtuales si se considera el tipo de proceso que
utilizan para generar un almacenamiento adicional y permitir mas capaccidad
de memoria, basandose en esto las memorias virtuales podran ser:
Memoria virtual utilizando Paginacion
Memoria virtual utilizando segmentacion
Memoria virtual utilizando segmentacion paginada
Aparte las memorias virtuales funcionan utilizando los denominados swap,
que son simplemente zonas de los discos

C
ual es el funcionamiento de las memorias
virtuales?

Al momento en el que se utilicen las memorias virtuales, o cuando son ledas o


escritas las direccione por el procesador, una seccion del hardware de la computadora se encarga de traducir las direcciones de memoria que el software
el ordenador produce, estas direcciones de memoria se llaman direcciones
virtuales. Estas direcciones virtuales son traducidas en la direccion real de
la memoria, que sera la direccion de memoria fsica, en donde la referencia
a esta memoria es terminada, dando la ilusion de como si la memoria virtual realmente no estuviera involucrada en este proceso, de esta manera el
software sigue accediendose a donde deba acceder y los procesos se siguen
ejecutando con normalidad. Tambien se puede generar una indicacion que
informa que la direccion de la memoria deseada no se encuentra contenida
en dicha memoria, aqu el sistema operativo es convocado para controlar la
situacion y lograr que el programa se siga ejecutando con normalidad o que
ejecute una secuencia de abandono en caso de que fuese necesario. Las ilusiones que generan memoria virtual son soportadas por los mecanismos que
traducen la informacion en la memoria, respaldado de una cantidad considerable de almacenamiento rapido dentro del disco duro. De esta manera en
cualquier instante el espacio de las direcciones virtual realiza un seguimiento
que manera que una parte se encuentre contenida en la memoria fsica mientras que el resto se encuentre en el disco y debe ser referenciado de manera
rapida.
La memoria virtual solamente es accesible al procesador porque se encuentra almacenado en la memoria principal, a medida que un programa se
va ejecutando, las referencias a la memoria van a cambiar en cuanto a su
proximidad, por lo que necesita que ciertas partes de esta memoria virtual
sean enviadas desde el disco a la memoria principal, mientras que otras que
ya han sido ejecutadas, tienen la posibilidad de volver a ser depositadas en
el disco a traves de archivos de paginacion.
Que se usan para guardar las paginas de los procesos que no se almacenan
en la memoria fsica, este proceso es u
til porque permite buscar un proceso
y transferirlo a las areas de intercambio que seran las memorias secundarias
como lo son los discos duros y con este proceso se libera una cantidad consid4

erable del espacio en la memoria principal. Esta accion puede o no realizarse,


con lo cual las partes guardadas en el disco permanecen en el. Al momento
en que se necesita usar dichas partes, el sistema operativo procede a realizar
un intercambio pasando la informacion del disco a la memoria RAM. Por
lo general son procesos que se demoran mucho tiempo pero cumple con el
objetivo de hacerle creer al sistema que existe mayor cantidad de memoria
disponible.
A continuacion se procedera a explicar el funcionamiento de las memorias
virtuales segun el modo de particion y generacion de memoria adicional que
puedan hacer.
Memorias virtuales utilizando la Paginaci
on
Las memorias virtuales utilizan los sistemas de paginacion de memoria
para fraccionar a los programas en peque
nas partes para que su manipulacion
pueda ser mucho mas facil. De igual manera la memoria se puede dividir en
pedazos del mismo tama
no que las partes del programa separado. Con esto
se consigue que la cantidad de memoria que se desperdicia durante un determinado proceso sea la conclusion de u
ltima pagina, lo que implicara una
reduccion de la fragmentacion interna, ademas de evitar la fragmentacion
externa.
Cada proceso que es almacenado dentro de la memoria virtual posee su
propia tabla de paginas, al momento de cargar a cada una de estas paginas
en la memoria principal, se implementa dicha tabla con las paginas del proceso, las cuales cada una de las entradas de la tabla posee un n
umero con
el cual se identificaran a cada una de las paginas, ademas es necesario la
utilizacion de un bit en cada entrada para mostrar si la pagina correspondiente se encuentra en la memoria principal o no. Al momento que el bit
incida que la pagina se encuentra dentro de la memoria, la entrada procede
a incluir el n
umero de marco con el que se identifica a las paginas encontradas.
Existe otro proceso de control de las paginas fraccionadas a partir de los
programas que se desean almacenar en la memoria, consiste en un segundo
bit denominado bit de modificacion. Estos bits se encargan de regular y de
indicar si el contenido de la pagina que se esta procesando ha experimentado
durante este proceso. Si no han existido modificaciones, entonces no es nece5

sario escribir sobre la pagina cuando sea sustituida en el bloque ocupado por
el mismo. El proceso de paginacion ofrece la posibilidad de que la memoria de un proceso no sea contigua, ademas, a cada proceso se le asigna una
determinada cantidad de memoria fsica sin importar el espacio en donde se
encuentre disponible.
Una de las ventajas de la paginacion es que procura que no existan problemas al momento de acomodar las partes de la memoria con diferentes
tama
nos en los almacenamientos auxiliares. Tambien tiene la capacidad de
compartir un codigo com
un entre los diferentes bloques que se separan y es
eficiente en un entorno de tiempo simultaneo.
La paginacion elimina la fragmentacion externa permitiendo a los usuarios que utilicen sus memorias principales de maneras mas eficientes. Con
la paginacion existe la posibilidad de generar algoritmos que se encarguen
de gestionar las memorias mas sofisticadas con el fin de obtener un mayor
rendimiento en la ejecucion y comportamiento de los programas de la computadora. Son utilizadas tambien cuando sea conveniente realizar un intercambio de la fragmentacion de los codigos o los datos que se almacenan en
la memoria principal, ya que las provee de un almacenamiento auxiliar para
impedir que se pierdan dichas informaciones. Hoy en da los procesos de
paginacion son utilizados frecuentemente en diferentes sistemas operativos.
El problema que podra padecer el sistema de paginacion consiste en que
todas las paginas de un proceso deban estar resguardadas en la memoria para
tener acceso a su ejecucion. Si los programas son de tama
nos enormes, es
probable que algunas de las paginas no puedan cargarse simultaneamente lo
que reduce el grado de multiprogramacion del sistema. La forma de remediar este suceso, es necesario que algunas de las paginas de los programas
ejecutados sean almacenadas en un espacio dentro de la memoria mientras
estas no se encuentren en uso.
Memorias virtuales utilizando la Segmentaci
on
Otro proceso utilizado por las memorias virtuales que ya ha sido explicado
brevemente es el proceso de la segmentacion. La segmentacion es un sistema
de administracion de la memoria, utiliza las direcciones logicas compuestas
por un conjunto de segmentos, con su propio nombre y una respectiva longitud. Las referencias a las memorias estaran conformadas de direcciones que
6

son determinadas utilizando dos elementos que son el nombre del segmento
y el desplazamiento, mediante esta estructura el programador contara con
ciertas ventajas que permitiran que se aliviane el trabajo de almacenar los
programas en las memorias virtuales:
Los programas estaran libres de restriccion en cuanto a la cantidad de
memoria fsica que estara disponible.
La escritura de programas destinados a un determinado espacio de
direcciones virtuales de gran tama
no estaran dispuestos a que se simplifique los trabajos de programacion de los mismos.
Al ocupar menor cantidad de memoria fsica, los programas pueden
ejecutarse simultaneamente, lo que causa un aumento del uso de la
UCP y de su productividad, tratando de reducir el tiempo de retorno.
Cava vez dejara se solicitarse los modulos de E/S para intercambiar a
los programas de los usuarios, de esta forma los mismos aumentaran
su velocidad de ejecucion.
La segmentacion posee la capacidad de administrar estructuras de datos
propiciando su crecimiento, mediante la modularidad de estas y el soporte
de la proteccion y comportamiento de los programas.
Existe otro proceso con el cual las memorias virtuales operan para manejar a los programas de un usuario, es la segmentacion paginada.
Memorias virtuales utilizando la Segmentaci
on Paginada
La segmentacion paginada es la combinacion entre los dos procesos antes
mencionados, se encarga de gestionar la informacion alojada en la memoria
mediante la utilizacion de los metodos de segmentacion y paginacion que
realiza el computador. Dentro de este sistema los espacios de direcciones
se dividen en segmentos de los mismos de acuerdo a las necesidades del
programador. A su vez, los segmentos se dividen en diferentes paginas del
mismo tama
no, por lo que tendran el mismo marco de memoria principal. En
el caso de que los segmentos sean mas peque
nos que las paginas, el segmento
solamente ocupara una pagina. Cada segmento son descritos a traves de
su propia tabla de paginas. Los segmentos por lo general son m
ultiplos de
7

las paginas en cuanto al tama


no, no hace falta que cada una de las paginas
se encuentren en la memoria principal simultaneamente, de igual forma las
paginas, aun si se encuentran contiguamente no es necesario que esten en la
memoria real.

C
omo se implementan las memorias virtuales?

La implementacion de las memorias virtuales se las realizan mediante la paginacion en demanda. La implementacion consiste en el envo de las paginas
virtuales de un proceso desde la memoria principal hacia las memorias secundarias como lo son los discos. Las paginas virtuales que son transmitidas
son aquellas que tienen una baja probabilidad de que sean referenciadas posteriormente.
Como ya lo habamos mencionado los programas podran seguir funcionando sin ning
un inconveniente si mantiene a algunas de sus partes en el
disco, sin embargo, no se podran acceder a dichas paginas. Para que se
pueda crear una memoria virtual se debe cumplir con el principio de localidad de las referencias, el cual indica que un determinado proceso tiene una
tendencia a concentrar el 90 por ciento de los accesos a memoria en solamente el 10 por ciento de las paginas que administra. Una de las dificultades
que presentara es que si se quisiera acceder a una determinada palabra, es
requisito que la pagina en donde se encuentre ubicada dicha palabra este
completamente almacenada en la memoria. Los procesos tienen la capacidad
de pasar perodos prolongados en donde solamente hay un acceso de entre
un 20 por ciento a 50 por ciento de las paginas almacenadas, mientras que el
conjunto de paginas que sobraran se mantienen en el disco mientras que no
se encuentran en uso.
Puede ocasionarse una interrupcion en el proceso de las paginas contenidas dentro de la memoria denominada como page-fault, esta interrupcion
obliga a que las paginas se marquen en la tabla de paginas representando un
bit con el valor de cero. Durante este suceso , como medida de solucion, el
n
ucleo se encarga de analizar en la memoria la pagina que desato el pagefault, de eta manera durante este proceso permanece suspendido mientras

ocurre la lectura del disco. Una vez que esta actividad haya concluido, se
retoma los procesos de manera transparente tratando de que no se perciba su
ausencia temporal de esa pagina. La duracion de esta suspension del proceso
oscila entre unos 8 a 20 milisegundos.
Uno de los objetivos que tiene la memoria virtual es decidir entre todas
las paginas divididas a partir de los programas o procesos de un usuario
escoger las paginas que causen un page-fault lo mas tarde posible, es decir
tratar de llevar al disco aquellas paginas que no se utilizaran por el mayor
tiempo posible. Debido a que los procesadores no tienen en conocimiento
por cuanto tiempo las paginas permaneceran sin lanzar una interrupcion, se
debe recurrir a ciertes estrategias que le permitan determinar los casos ideales. Las estrategias se denominan estrategias de reemplazo de paginas.
Estas estrategias son producidas por el n
ucleo de los sistemas operativos.
El scheduler de paginas es el componente del codigo de los n
ucleos que se
encarga de llevar a cabo estas estrategias. Las estrategias son las siguientes:
La estrategia ideal: Esta estrategia consiste en trasladar la pagina que
no sera usada por el intervalo de tiempo mas amplio. A pesar de
que es una estrategia optima, no es posible el poder implementarla,
u
nicamente se la utiliza para la comparacion entre cifras.
La estrategia FIFO: Esta estrategia consiste en reemplazar aquella
primera pagina que haya sido almacenada en la memoria.
La estrategia LRU: La funcionalidad de esta estrategia es el de llevar
al disco la pagina que mas tiempo ha permanecido sin ser accedida.
La estrategia de reloj: Su funcionamiento es analoga a la estrategia
LRU, pero su diferencia radica en que se deba escoger una pagina que
ha tenido suficiente tiempo sin ser accesada, a comparacion de escoger
exactamente la pagina LRU.
La estrategia del Working-Set: Con esta estrategia se elimina el trashing, que no es mas que una tasa muy elevada de page-faults que provoca
que ning
un proceso pueda avanzar, a traves de la combinacion del paginamiento en demanda con swapping.

Qu
e problemas solucionan las memorias
virtuales?

Como bien lo hemos mencionado anteriormente las memorias virtuales tienen


una funcion muy importante que es el de hacer creer al computador que existe memoria adicional para el almacenamiento de programas de grandes
tama
nos, por lo que crea un espacio en el disco duro para que guarden las
partes que sean de suma importancia de los programas, de esta manera la
memoria virtual tiene como objetivo principal la optimizacion del uso de
las memorias, tanto la principal como la secundaria, aparte permite que
m
ultiples aplicaciones se esten ejecutando simultaneamente. A consecuencia
del buen rendimiento que proporciona, las memorias virtuales se encargan de
mantener mas procesos en la memoria principal y sobretodo ofrece la oportunidad de que los procesos sean mas grandes en comparacion con la memoria
principal. Las memorias principales se encargan de ejercer una multiprogramacion muy efectiva.
Las memorias virtuales trabajan utilizando uno de los metodos explicados anteriormente para corregir el error que es conocido como fragmentacion.
La fragmentacion son las memorias que son desperdiciadas cuando se
utilizan metodos para la administracion de la memoria principal. La fragmentacion se produce en el momento en el que se reemplaza los procesos
dejando como resultados huecos entre dos o mas procesos que se encuentran contiguamente, estos huecos no pueden almacenar en su interior ning
un
proceso de alguna aplicacion. Ocurren dos tipos de fragmentacion, la fragmentacion interna y la fragmentacion externa.

Bibliografas
Hennessy-Patterson2007Computer.Architecture-.A.Quantitative.Approach.4th.edition
Andrew S. Tanenbaum Structured Computer Organization 6th edition

10

III.jpg
Figure 1:

11

Potrebbero piacerti anche