Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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?
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
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?
Bibliografas
Hennessy-Patterson2007Computer.Architecture-.A.Quantitative.Approach.4th.edition
Andrew S. Tanenbaum Structured Computer Organization 6th edition
10
III.jpg
Figure 1:
11