Pages

Memoria Virtual

La memoria virtual permite a un software correr en un espacio de memoria que no necesariamente pertenece a la memoria física de una computadora. Para esto se debe emular un CPU que trate a toda la memoria (virtual y principal) como un bloque igual, y determinar cuándo se requiere de una memoria u otra.

OPERACIÓN BÁSICA: 

Cuando una parte del hardware dentro de la computadora traduce las direcciones de memorias generadas por el software (direcciones virtuales )en: La dirección real de memorias : la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada.Una señal de que la memoria deseada no se encuentra en memorial principal: para esto el S.O es invocado para controlar y permitir que el programa se siga ejecutando o lo aborte si es necesario.

Memoria virtual paginada:

Igual que la paginación simple. 

No es necesario cargar todas las páginas. 

Las páginas no residentes se cargan por demanda. 

Ventajas:
No fragmentación externa. 
Alto grado de multiprogramación. 
Gran espacio virtual para el proceso.
Desventaja: 
Sobrecarga por gestión compleja de memoria.

Fallo de Página:

Ocurre cuando se referencia a una dirección virtual y ella no reside en la memoria real, se presenta una interrupción fallo de página

Memoria virtual segmentada: 

Permite compartir datos entre procesos, mediante el uso segmentos compatibles. 

Permite la protección de datos, el administrador otorgar permisos a este segmento. 

Ventajas: 
No hay fragmentación interna. 
Alto grado de multiprogramación. 
Gran espacio virtual para el proceso. 
Soporte de protección y compartición. 

Desventajas: 
Sobrecarga por gestión compleja de memoria.

Segmentación 

Es una técnica de gestión de memoria que pretende acercarse más al punto de vista del usuario. Los programas se desarrollan, generalmente, en torno a un núcleo central (principal) desde el que se bifurca a otras partes (rutinas) o se accede a zonas de datos (tablas, pilas, etc).

Desde este punto de vista, un programa es un conjunto de componentes lógicos de tamaño variable o un conjunto de segmentos, es decir, el espacio lógico de direcciones se considera como un conjunto de segmentos, cada uno definido por un identificador, y consistente de un punto de inicio y el tamaño asignado.

La segmentación de un programa la realiza el compilador y en ella cada dirección lógica se expresará mediante dos valores: Número de segmento (s) y desplazamiento dentro del segmento (d).

Una de las implementaciones más obvias y directas de un espacio de memoria segmentado es asignar un segmento distinto a cada una de las secciones del espacio en memoria de un proceso.

La segmentación también ayuda a incrementar la modularidad de un programa: Es muy común que las bibliotecas enlazadas dinámicamente estén representadas en segmentos independientes.

Paginación

Los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.

En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.

No hay comentarios:

Publicar un comentario