La Memoria Virtual
La Memoria Virtual es un archivo que Windows usa como
una extensión de la memoria ram. Este archivo se llama
“pagefile.sys” y lo encuentras en la raíz del disco C
La Memoria Virtual aparece unida a los sistemas operativos modernos. Permite
simular una ram de mayor tamaño que la que tienes instalada en tu
equipo.
Uso en los sistemas operativos modernos
En cada versión de tu sistema operativo, como es gestionado esta memoria y los
algoritmos que la gobiernan son mejorados. Sin embargo, el mayor uso de interfaces graficas y herramientas cada vez
mas sofisticadas hace que los sistemas sean unos devoradores de RAM.
Una de las razones por las que un sistema mejora su
velocidad usando un disco SSD es debido a esta funcionalidad. Ten siempre en
cuenta que una mejora de velocidad de acceso a los datos, aunque no sea
espectacular, puede ayudar mucho a un equipo con
limitaciones de memoria ya que todo el sistema se puede enfrentar a bloqueos
constantes.
Paginación
Es una técnica de manejo de memoria, en la cual el espacio de memoria se
divide en secciones físicas de igual tamaño, denominadas marcos de pagina. Los programas se dividen en
unidades lógicas, denominadas paginas, que tienen el mismo
tamaño que los marcos de paginas. De
esta forma, se puede cargar una pagina de información en
cualquier marco de pagina.
Proceso de paginación
Digamos que tienes abiertos los programas 1, 2, 3 y 4, y no tienes mas
espacio en tu memoria RAM.
Decides abrir elprograma 5.
Y vamos a suponer que el programa 3 no lo estas
usando. Entonces, Windows toma el programa 3 y lo
mueve a la memoria virtual, o sea, lo guarda en el archivo
“pagefile.sys”. Así, hace lugar en
la memoria RAM para el programa 5.
Ahora, quieres usar nuevamente el programa 3, entonces
haces click en la ventana de ese programa.
Windows toma otro programa que no esta activo, digamos
el 1, y lo manda a la memoria virtual. Toma el programa 3 y lo mueve a
la memoria RAM.
Este proceso de enviar y sacar de la memoria virtual, se
llama “Paginación”.
Es por este proceso, que a veces, cuando activas
nuevamente un programa que no estabas usando, tarda unos segundos en responder.
Paginación por demanda
Las paginas de un proceso deben cargarse por
demanda. No se debe transferir ninguna pagina al almacenamiento
secundario al primado hasta que un proceso en
ejecución haga explícitamente referencia a ella. Hay varias
razones por las cuales es atractiva esta estrategia
Los resultados de la teoría de la computabilidad, específica
mente el problema de la detención (Mi67) (He77), indican que no se puede
predecir con precisión la trayectoria de ejecución que seguira
un programa. Así pues, cualquier intento de cargar paginas con
anticipación a su uso puede hacer que se
carguen las paginas equivocadas.
La paginación por demanda garantiza que las únicas paginas
que se transfieren al almacenamiento principal son aquéllas que
requieren los procesos.
El trabajo extra requerido para decidircuales paginas se deben
transferir al almacenamiento principal es mínimo. Las
estrategias de obtención anticipada de paginas G pueden requerir
mucho tiempo de ejecución adicional.
Paginación anticipada
En la paginación anticipada, el sistema operativo intenta predecir las
paginas que necesitara un proceso y
entonces carga dichas cuando hay espacio disponible. Mientras el proceso se
ejecuta con sus paginas actuales, el sistema carga las demas
paginas que estaran disponibles cuando las requiera el proceso.
Características de la paginación
El espacio de direcciones lógico de un proceso
puede ser no contiguo.
Se divide la memoria física en bloques de tamaño fijo llamados marcos (flamees).
Se divide la memoria en bloques de tamaño
llamados paginas.
Se mantiene información en los marcos libres.
Para correr un
programa de n paginas de tamaño, se necesitan encontrara n marcos y
cargar el programa.
Se establece una tabla de paginas para trasladar las
direcciones lógicas a físicas.
Se produce fragmentación interna.
Estrategias de administración de la memoria virtual
Estrategias de obtención: determinan cuando se debe de transferir una
pagina o un segmento de almacenamiento
secundario al primario. las estrategias de
obtención por demanda esperan a que un proceso en ejecución haga
referencia a una pagina o un segmento antes de traer la pagina o
el segmento de almacenamiento primario. los esquemas
de obtención anticipada intentan determinar por adelantado a
cuales paginas osegmentos hara referencia un proceso.
Estrategias de colocación: determinan en que lugar del almacenamiento
primario se debe colocar una pagina o un segmento entrante. Una
pagina entrante se puede colocar en cualquier marco
de pagina disponible.
Estrategias de reemplazo: sirven para decidir cual pagina o segmento se
debe desplazar para dar espacio a una pagina o segmento entrante cuando
esta completamente ocupado el almacenamiento primario.
Segmentación
La segmentación permite al programador contemplar la memoria como
si constara de varios espacios de direcciones o segmentos. Los
segmentos pueden ser de distintos tamaños, incluso de forma
dinamica. Las referencias a la memoria constan
de una dirección de la forma (número de segmento,
desplazamiento).
Esta organización ofrece al programador varias ventajas sobre un espacio
de direcciones no segmentado
1. Simplifica la gestión de estructuras de datos
crecientes. Si el programador no conoce a priori cuan
larga puede llegar a ser una estructura de datos determinada, es necesario
suponerlo a menos que se permitan tamaños de segmentos dinamicos.
Con memoria virtual segmentada, a la estructura de datos se le puede asignar a
su propio segmento y el S.O expandira o reducira el segmento cuando
se necesite.
2. Permite modificar y recopilar los
programas independientemente, sin que sea necesario recopilar o volver a montar
el conjunto de programas por completo.
3. Se presta a la comparición entre procesos.
Unprogramador puede situar un programa de utilidades o
una tabla de datos en un segmento que puede ser referenciado por otros
procesos.
4. Se presta a la protección. Puesto
que un segmento puede ser construido para albergar un
conjunto de procedimientos y datos bien definido, el programador o el
administrador del
sistema podra asignar los permisos de acceso de la forma adecuada.
Fragmentación
La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria que se
vieron en los métodos anteriores. Tanto el primer ajuste, como
el mejor y el peor producen fragmentación externa. La
fragmentación es generada cuando durante el
reemplazo de procesos quedan huecos entre dos o mas procesos de manera
no contigua y cada hueco no es capaz de soportar ningún proceso de la
lista de espera. La fragmentación puede ser
Fragmentación Externa: Existe el espacio total de memoria para
satisfacer un requerimiento, pero no es contigua.
Fragmentación Interna: La memoria asignada puede ser ligeramente
mayor que la requerida, esta referencia es interna a la partición, pero
no se utiliza.
La fragmentación externa se puede reducir mediante la
compactación para colocar toda la memoria libre en un
solo gran bloque, pero esta sólo es posible si la localización es
dinamica y se hace en tiempo de ejecución.
¿Como limpiar la memoria virtual?
Para agilizar un poco
la PC, es bueno configurar para que Windows limpie la memoria virtual, cuando
se apague la PC.
Paraconfigurarlo, tenemos que abrir la consola de “Políticas de
Seguridad Local”:
Windows XP: Inicio panel de Control desempeño y
MantenimientoHerramientas Administrativas
Windows Vista y 7: Inicio panel de Control sistema y Seguridad
herramientas Administrativas
Selecciona “Políticas de Seguridad Local”
En el panel de la izquierda, expande “Políticas Locales”
Selecciona “Opciones de Seguridad”
En el panel derecho, busca “Apagado: Limpiar archivo de memoria
virtual”
Haz doble click para abrir la ventana de propiedades
Selecciona “Habilitado”
Haz click en “Aceptar”
Cierra la consola de “Políticas de Seguridad Local” y todas
las ventanas
Reinicia la PC
A partir de ahora, vas a notar que cuando apagues la PC, ésta va a
tardar un poco mas en apagarse.
Esto es, porque Windows esta limpiando la memoria virtual, o sea, eliminando todos los archivos que guardó en el
archivo “pagefile.sys”.
También vas a notar, que cuando la enciendas, tu PC estara un poco mas agil.
¿Por que limpiar la memoria virtual?
¿Cual es la necesidad de limpiar esta memoria
virtual?
Cuando apagas la PC, todo el contenido de la memoria RAM se
borra. Y cuando enciendes nuevamente la PC, empieza de
cero.
Con la memoria virtual, esto no sucede. Todo lo que se guardó,
allí esta cuando vuelves a encender la
PC.
Entonces, cuando Windows tenga que volver a usar la
memoria virtual, tiene que eliminar algunos programas que ya no estan,
para hacer lugar a los nuevos programas. Todos éstos procesos, el
depaginación y el de limpieza, hacen que la PC se vuelva mas
lenta, y que el disco duro trabaje mas, acortando su vida útil.
Ventajas y desventajas del
uso de la memoria virtual
Ventajas
1. Permite optimizar uso de memoria:
2. mantiene mas procesos en memoria principal
3. mantiene en disco partes del proceso poco usadas (rutinas
de atención a errores poco frecuentes, funciones de
uso esporadico, datos no usados, etc.)
4. Permite que un proceso sea mas grande que
toda la memoria principal
5. Permite multiprogramación muy efectiva
6. Se encarga el SO => evita al usuario la
preocupación por programar con superposición
Desventajas
1. Se genera interrupción, indica fallo de acceso a memoria
2. Proceso pasa a bloqueado, SO a ejecución
3. SO emite solicitud de E/S al disco
4. SO expide otro proceso para que se ejecute
5. Tras traer fragmento a memoria, interrupción
de E/S, control al SO, que pasa el proceso a listo.
6. Posible hiperpaginación (thrasing
7. SO mas tiempo intercambiando fragmentos que ejecutando (ejemplo:
si saca de memoria un fragmento que se iba a usar ya)