Memoria Virtual


GESTIÓN DE MEMORIA

La función de la gestión de memoria es permitir la multiprogramación manteniendo muchos procesos en memoria de forma simultanea.
La estrategias usadas en la gestión de memoria son importantes por que las instrucciones se ejecutan en memoria física.
Una estrategia es colocar todo el espacio de direcciones lógicos en la memoria física, pero eso limita el tamaño de los programas al tamaño de la memoria física.
Existen casos en que no todo el programa debe ser asignado a memoria física o todo el proceso al mismo tiempo.

MEMORIA VIRTUAL

Una parte del programa debe encontrarse en memoria para ser ejecutado. La memoria virtual puede ser mas grande que la memoria física. Los procesos pueden compartir espacios de direcciones.

VENTAJAS:
  • Los programas al contar con un espacio de direcciones lógicos y una memoria virtual ya no son limitados por la memoria física.
  • Al no ser usada toda la memoria física, pueden ser asignado otros programas a memoria permitiendo así la multiprogramación.
La memoria virtual puede implementarse a través de:
  • Paginación por demanda.
  • Segmentación por demanda.

PAGINACIÓN POR DEMANDA

  • Los procesos se encuentran en un almacenamiento secundario. 
  • Cuando se requiera el uso de un proceso, pasa a memoria a través de intercambio solo las páginas necesarias para ejecutarse.

SWAPP (ÁREA DE INTERCAMBIO)

Mueve una página a memoria solo cuando es requerida.
Trae beneficios:
  • Requiere menos E/S. 
  • Requiere menos memoria. 
  • Respuesta más rápida. 
  • Más usuarios
No todos los procesos son intercambiables. Cada sistema operativo tiene su propia versión de su swapping (Linux, Unix, Windows, etc.). En el caso de Unix solo se activa su área de intercambio cuando el espacio en memoria sobrepasa cierto umbral.

BIT VÁLIDO O INVÁLIDO

Al cargar solo algunas páginas del almacenamiento secundario a memoria, se debe diferenciar que páginas del proceso están en memoria y cuales aun están en el almacenamiento secundario. Se le asigna un bit válido o inválido a cada página en la tabla de páginas.
  • BIT VALIDO: La página se encuentra en memoria. 
  • BIT INVALIDO: La página no se encuentra en memoria o no se encuentra en alguna dirección lógica.
En la figura anterior, la tabla de páginas hace referencia que la página 1 (B) se encuentra en el frame 5 de la memoria física, así como la página 2 (C) con el frame 6 y la página 6 (G) con el frame 14.

PÁGINAS COMPARTIDAS

Se pueden compartir ciertas páginas, por lo que tenemos un código compartido y datos o código privados de cada proceso.
  • El código compartido es de sólo lectura y está en la misma dirección lógica de los procesos que lo utilizan (A y B están en la dirección 0 y 1 respectivamente de los procesos P1 y P2). 
  • Los datos y/o códigos privados de cada proceso pueden aparecer en cualquier dirección de su memoria virtual.

REEMPLAZO DE PÁGINA

Soluciona el problema de no encontrar frames disponibles.
Si encuentra un página que no está en uso, la libera.
Ese frame liberado puede ser usado por la página donde ocurrió el fallo.

Para realizar el reemplazo de página se usan los siguientes algoritmos:
  1. FIFO (Primero en entrar, primero en salir). 
  2. ÓPTIMO. 
  3. LRU (Menos recientemente Utilizado).

SEGMENTACIÓN POR DEMANDA

Un programa es una colección de segmentos.

La dirección lógica consiste en número de segmento y desplazamiento.
La tabla de segmento esta conformada por una base y un límite.
  • BASE: Contiene la dirección física inicial donde se ubicará el segmento. 
  • LÍMITE: Es la longitud del segmento. 
*Al igual que en paginación, 2 o más procesos pueden compartir segmentos.


Enlaces relacionados:
Algoritmo de Reemplazo de Página -FIFO + JAVA
Algoritmo de Reemplazo de Página -LRU + JAVA

Comentarios

Popular Posts

Sistemas Distribuidos - Tolerancia a fallos

Crear Autómata Finito Determinista desde una Expresión Regular

Instalar OpenGL en Linux