memoria virtual

26
MEMORIA VIRTUAL

Upload: mykey-strand

Post on 09-Dec-2015

217 views

Category:

Documents


0 download

DESCRIPTION

expocicion sobre los tipos de memoria virtual.

TRANSCRIPT

MEMORIA VIRTUAL

1. INTRODUCCIÓN En prácticamente todos los sistemas operativos modernos se usa la técnica de la memoria

virtual.

La memoria en un sistema está organizada como una jerarquía de niveles de almacenamiento, entre los que se mueve la información dependiendo de la necesidad de la misma en un determinado instante. La técnica de memoria virtual se ocupa de la transferencia de información entre la memoria principal y la secundaria.

La memoria virtual se implementa sobre un esquema de paginación, denominado dispositivo de paginación o también con el termino de dispositivo de swap.

El buen rendimiento del sistema de memoria virtual está basado en que los procesos presentan la propiedad de proximidad de referencia.

El objetivo del sistema de memoria virtual es intentar que la información que está usando un proceso en un determinado momento (conjunto de trabajo) esté resiente en memoria principal.

Alguno beneficios del uso de memoria virtual son: La hiperpaginación.

Se puede ejecutar programas más grande que la memoria principal disponible.

2. PAGINACIÓN

La paginación surge como intento de resolver estos problemas sofisticando apreciablemente el hardware de gestión de memoria del procesador y aumentado considerablemente la cantidad de información de traducción que se almacena por cada proceso.

La página corresponde con una zona de memoria contigua de un determinado tamaño.

El mapa de memoria de cada proceso se considera divido en páginas. A su vez, la memoria principal del sistema se considera divida en zonas del mismo tamaño que se denomina marcos de página.

La estructura de datos que relaciona cada página con el marco donde está almacenada es la tabla de páginas.

ESQUEMA DE TRADUCCIÓN DE LA PAGINACIÓN

Pagina 0Pagina 1Pagina n

PAGINACIÓN

La paginación no proporciona un aprovechamiento óptimo de la memoria como lo haría un esquema que permitiese que cada palabra del mapa de memoria de un proceso pudiera corresponder con cualquier dirección de memoria.

La paginación presenta una solución más realista permitiendo que cada página del mapa de un proceso se pueda corresponder con cualquier marco de memoria.

La fragmentación interna es que la paginación se le asigne a cada proceso un número entero de marcos de página, aunque, su mapa no tendrá un tamaño múltiplo del tamaño del marco. Implica que por cada proceso se desperdiciará la mitad de una página.

Cada entrada de la tabla de páginas contiene información adicional: Información de protección

Indicación de página válida.

Indicación de página accedida.

Indicación de página modificada.

Desactivación de cache.

Un aspecto importante en el rendimiento de un sistema de paginación es el tamaño de la página.

GESTIÓN DEL SISTEMA OPERATIVO La tabla de paginación hace la función de traducción.

El sistema operativo es el encargado de definir la función de correspondencia ente páginas y marcos mediante la tabla de páginas, y el hardware es el encargado de aplicarla.

El sistema operativo mantiene una única tabla de páginas para sí mismo. Así cuando esté ejecutando una llamada al sistema invocada por un proceso, puede acceder directamente a su propio mapa y al del proceso.

El sistema operativo debe usar la tabla de marcos de página que es una estructura para almacenar el estado de ocupación de la memoria principal que permite conocer qué marcos están libres y cuáles no.

El sistema operativo almacena por cada proceso su tabla de regiones que contenga las características de cada región especificando qué rango de páginas pertenecen a la misma.

VALORACIÓN DE LA PAGINACIÓN

Requisitos que cumplen los esquemas de paginación:

Espacios lógicos independientes: Cada proceso tiene una tabla de páginas que crea un espacio lógico independiente para el mismo.

Protección: La tabla de páginas de un proceso restringe qué parte de la memoria puede ser accedida por el mismo, permitiendo asegurar que los procesos usan espacios disjuntos.

Compartir memoria: El compartimiento se realiza siempre con la granularidad de una página.

Soporte de las regiones del proceso: Es la detección de huecos dentro del mapa del proceso y eliminar la necesidad de gastar memoria física para los huecos.

Maximizar el rendimiento: La paginación puede servir como base para construir un esquema de memoria virtual.

Mapas de memoria grandes para los procesos: El sistema operativo puede crear un mapa de memoria para el proceso que ocupe todo su espacio lógico direccionadle.

IMPLEMENTACIÓN DE LA TABLA DE PÁGINAS

Para acceder a la posición de memoria solicitada, la MMU (Memory Management Unit, Unidad de gestión de memoria) debe consultar la entrada correspondiente de la tabla de páginas, se producirán dos accesos a memoria por cada acceso real solicitado por el programa. Esta sobrecarga es intolerable, ya que reducirá a la mitad el rendimiento del sistema.

Para la resolución del problema la MMU incluye internamente una especie de cache de traducciones llamada TLB (Translation Lookaside Buffer).

Por otro lado, existe un problema de gasto de memoria. Las tablas de páginas son muy grandes y hay una por cada proceso activo. Sin embargo, para que los procesos no tengan problemas de memoria durante su ejecución, la tabla de páginas debe tener tantas entradas como páginas hay en el espacio lógico, aunque muchas de ellas estén marcadas como inválidas al corresponder con huecos.

La solución a este problema son las tablas de páginas multinivel y las tablas invertidas.

TRANSLATION LOOKASIDE BUFFER (TLB)

El TLB se trata de una pequeña memoria asociativa interna a la MMU que mantiene información sobre las últimas páginas accedidas. Cada entrada en la TLB incluye también el número de la página para permite realizar una búsqueda asociativa.

Existen dos alternativas en el diseño de una TLB dependiendo de si se almacenan identificadores de proceso o no.

TLB sin identificadores de proceso: La MMU accede a la TLB sólo con el número de página y ya que cada proceso tiene su propio mapa.

TLB con identificadores de proceso: La MMU accede a la TLB con el número de página y un identificador de proceso.

Es esquema denominado TLB gestionada por software tiene un diseño alternativo en el que se traspasa parte de la gestión de la TLB al sistema operativo. La MMU se encarga de buscar la traducción en la TLB y sino la encuentra activa una excepción

3. SEGMENTACIÓN

La segmentación es una técnica hardware que intenta dar soporte directo a las regiones. Para ello, considera el mapa de memoria de un proceso compuesto de múltiples segmentos. Cada región se almacenará en un segmento.

Se puede considerar que esta técnica es una generalización del uso de los registros, utilizando una pareja de registro base y registro límite por cada segmento, utilizando una tabla de segmentos.

Una dirección lógica esta formada por un número de segmento y una dirección dentro del segmento.

El sistema operativo mantendrá una tabla de segmentación por cada proceso y en cada cambio de proceso irá informando a la Gestión de Memoria de qué tabla debe usar.

VALORACIÓN DE LA SEGMENTACIÓN

Requisitos: Espacios lógicos

independientes.

Protección.

Compartir memoria.

Soporte de las regiones del proceso.

Maximizar el rendimiento.

Mapas de memoria grandes para los procesos.

4. SEGMENTACIÓN PAGINADA

La segmentación proporciona soporte directo a las regiones del proceso y la paginación permite un mejor aprovechamiento de la memoria y una base para construir un esquema de memoria virtual.

Un segmento está formado por un conjunto de páginas y, por tanto, no tiene que estar contiguo en memoria.

Valoración de la segmentación paginada: Espacio lógicos independientes.

Protección.

Compartir memoria.

Soporte de las regiones del proceso, gracias a la segmentación.

Maximizar el rendimiento.

Mapas de memoria grandes para los procesos.

5. PAGINACIÓN POR DEMANDA

Las unidades de información que se transfieren entre la memoria principal y la secundaria son páginas.

Las transferencias desde la memoria secundaria hacia la principal se realizan normalmente bajo demanda (paginación por demanda).

Las transferencias desde la memoria principal hacia la secundaria se realizan normalmente por expulsión. El algoritmo para elegir qué página debe ser expulsada se denomina algoritmo de reemplazo.

Usando la paginación para construir un esquema de memoria virtual, se puede usar indistintamente el término de dirección lógica y el de dirección virtual para referirse a las direcciones que genera un programa.

Algunos sistemas de memoria virtual usan la técnica e la prepaginación. En un fallo de página no sólo se traen la página en cuestión sino también las páginas adyacentes, ya que es posible que el proceso las necesite en un corto plazo de tiempo.

TRATAMIENTO DE FALLO DE PÁGINA

La paginación por demanda está dirigida por la ocurrencia de excepciones de fallo de página que indican al sistema operativo que debe traer una página de memoria secundaria a primaria puesto que un proceso la requiere.

POLÍTICAS DE ADMINISTRACIÓN DE LA MEMORIA VIRTUAL.

En un sistema de memoria virtual basada en paginación hay básicamente dos políticas que definen el funcionamiento del sistema de memoria:

Política de reemplazo: Determina qué página debe ser desplazada de la memoria principal para dejar sitio a la página entrante.

Política de asignación de espacio a los procesos: Decide cómo se reparte la memoria física entre los procesos existentes en un determinado instante.

6. POLÍTICAS DE REEMPLAZO

Las estrategias de reemplazo se pueden clasificar en dos categorías:

Reemplazo global: Se puede seleccionar, para satisfacer el fallo de página de un proceso, un marco que actualmente tenga asociada una página de otro proceso (un proceso puede quitarle un marco de página a otro).

Reemplazo local: Se requiere que, para servir el fallo de página de un proceso, sólo puedan usarse marcos de página libre o marcos ya asociados al proceso.

El objetivo básico de cualquier algoritmo de reemplazo es minimizar la tasa de fallos de página, intentando además que la sobrecarga asociada a la ejecución del algoritmo sea tolerable y que no se requiera una MMU con características específicas.

6. POLÍTICAS DE REEMPLAZO

Algoritmo de reemplazo óptimo

Debe generar el mínimo número de fallos de página. La página que se debe reemplazar es aquella que tardará más tiempo en volverse a usar.

Este algoritmo es irrealizable, ya que no se puede predecir cuáles serán las siguientes páginas accedidas. El interés de este algoritmo es que sirve para comparar el rendimiento de otros algoritmos realizables.

Algoritmo FIFO (Primero en entra – Primero en salir)

Es seleccionar para la sustitución la página que lleva más tiempo en memoria.

El sistema operativo debe mantener una lista de las páginas que están en memoria, ordenadas por el tiempo que llevan residentes.

El rendimiento del algoritmo no es siempre bueno porque la página que lleva más tiempo residente en memoria puede contener instrucciones o datos que se acceden con frecuencia.

6. POLÍTICAS DE REEMPLAZO

Algoritmo LRU (Least Recently Used, menos recientemente usada)

Esta basado en el principio de proximidad temporal de referencias: si es probable que se vuelvan a referenciar las páginas accedidas recientemente, la página que se debe reemplazar es la que no ha referenciado desde hace más tiempo.

Pertenece a una clase de algoritmos denominados algoritmos de pila. La propiedad es que las páginas residentes en memoria para un sistema con n marcos de páginas son siempre un subconjunto de las que habría en un sistema con n+1 marcos.

Buffering de páginas

Una situación que intentan evitar la mayoría de los sistemas es la que se produce cuando la página seleccionada para reemplazar está modificada.

Una solución del Buffering de páginas consiste en mantener un conjunto de marcos de página libres. Se consume un marco de página pero no se libera otro, el marco de página disminuye hasta un cierto punto, aplica el algoritmo de reemplazo. Las páginas liberadas que no están modificada pasan a la lista de marcos libres y las que no están modificadas pasan a la lista de modificadas.

6. POLÍTICAS DE REEMPLAZO Retención de páginas en memoria

En primer lugar, están las páginas de propio sistema operativo. Por simplicidad, la mayoría de los sistemas operativos tienen su mapa de memoria fijo en memoria principal.

Si se permite que los dispositivos de entrada/salida que usan DMA realicen transferencias directas a la memoria de un proceso, será necesario marcar las páginas implicadas como no reemplazables hasta que termine la operación .

Algunos sistemas operativos ofrecen servicios a las aplicaciones que les permiten solicitar que una o más páginas de su mapa queden retenidas en memoria. Este servicio puede ser útil para procesos de tiempo real que necesitan evitar que se produzcan fallos de páginas imprevistas, pero el uso indiscriminado de este servicio puede afectar gravemente al rendimiento del sistema.

7. POLÍTICAS DE ASIGNACIÓN DE MARCOS DE PÁGINA Asignación fija

Se asigna a cada proceso un número fijo de marcos de páginas.

La principal desventaja de esta alternativa es que no se adapta a las diferentes necesidades de memoria de un proceso a lo largo de su ejecución.

Cuando se usa esta estrategia, el sistema operativo determina cuál es el número máximo de marcos asignados al proceso.

Asignación dinámica

El número de marcos asignados a un proceso varía según las necesidades que tenga el proceso en diferentes instantes de tiempo.

Se puede usar en :

Reemplazo local, el proceso va aumentado o disminuyendo su conjunto residente dependiendo de sus necesidades en las distintas fases de ejecución del programa.

Reemplazo global, los procesos compiten en el uso de la memoria quitándose entre sí las páginas.

8. HIPERPAGINACIÓN (THRASHING)

Si el número de marcos de páginas asignadas a un proceso no es suficiente para almacenar las páginas referenciadas activamente por el mismo, se producirá un número elevado de fallos de páginas.

Cuando se produce la hiperpaginación, el proceso pasa más tiempo en la cola de servicio del dispositivo de paginación que ejecutando.

Un ejemplo de asignación fija, si el número de marcos asignados al proceso no es suficiente para albergar su conjunto de trabajo en una determinada fase de su ejecución, se producirá hiperpaginación en ese proceso.

Un ejemplo de asignación dinámica, el número de marcos asignados a un proceso se va adaptando a sus necesidades, por lo que la principio no debería presentar algún problema.

8. HIPERPAGINACIÓN (THRASHING) Estrategia del conjunto de trabajo

Cuando un proceso tiene residente en memoria su conjunto de trabajo, se produce una baja tasa de fallos de página.

Una posible estrategia consiste en determinar los conjuntos de trabajo de todos los procesos activo para intentar mantenerlos residentes en memoria principal.

Estrategias de administración basada en la frecuencia de fallos de página

Esta estrategia busca una solución más directa al problema de la hiperpaginación.

9. GESTIÓN DEL ESPACIO DE SWAP El espacio de swap (intercambio) es una zona

del disco (un fichero o partición) que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física.

Cuando es útil el espacio de intercambio (swap):

El sistema operativo puede buscar un proceso poco activo, y moverlo al área de intercambio (el disco duro) y de esa forma liberar la memoria principal para cargar otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el disco, ya que ahí no utiliza memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio, pasándolo del disco a memoria RAM. Es un proceso lento (comparado con usar sólo la memoria RAM), pero permite dar la impresión de que hay más memoria disponible.

9. GESTIÓN DEL ESPACIO DE SWAP Existen básicamente dos alternativas a la hora de asignar espacio de swap durante la creación de una nueva región:

Preasignación de swap. Cuando se crea la nueva región, se reserva espacio de swap para la misma. Cuando se expulsa una pagina ya tiene reservado espacio en swap para almacenar su contenido.

Sin preasignación de swap. Cuando se crea una región, no se hace ninguna reservación en el swap. Las páginas de la región se irán trayendo a memoria principal por demanda desde el soporte de la región. Sólo se reserva espacio en el swap para una página cuando es expulsada por primera vez.

En el caso de una región compartida con soporte en un archivo, no se usa espacio de swap para almacenarla, sino se utiliza directamente el archivo que la contiene como almacenamiento secundario.

10. OPERACIONES SOBRE LAS REGIONES DE UN PROCESO Creación de una región.

Cuando se crea una región, no se le asigna memoria principal puesto que se cargará por demanda.

El sistema operativo actualiza la tabla de regiones para reflejar la existencia de la nueva región y guarda la información de las características de las páginas de la región rellenando las entradas de la tabla de páginas de acuerdo a las mismas.

Las páginas de una región con soporte en un archivo se marca para indicar esta situación (bit de cargar de archivo), almacenándose también la dirección del bloque correspondiente del archivo.

Si en el sistema hay preasignación de swap y se trata de una región privada, hay que reservar en el momento de la creación la zona correspondiente del swap.

Una vez creada una región, el tratamiento que se le da a la página cuando se expulsa y está modificada va a depender de si es privada o compartida:

Si la región es privada, se escribe en el swap.

Si la región es compartida, se escribe directamente en el soporte para que todos los procesos puedan ver las modificaciones.

10. OPERACIONES SOBRE LAS REGIONES DE UN PROCESO Liberación de una región.

Cuando se libera la región, se debe actualizar la tabla de regiones para reflejar este cambio.

Las páginas asociadas a la región hay que marcarlas como invalidas tanto para la MMU como para el sistema operativo.

La liberación puede deberse a una solicitud explícita o a la finalización del proceso que conlleva la liberación de todas sus regiones.

Cambio del tamaño de una región.

Con respecto a una disminución de tamaño en una región, esta operación implica una serie de acciones similares a la liberación, pero que sólo afectan a la zona liberada. Por lo que se refiere a un aumento de tamaño.

Cuando se produce una expansión de pila, se genera un fallo de página asociado a una dirección que se corresponde con un hueco, el sistema operativo podría pensar de un acceso erróneo.

10. OPERACIONES SOBRE LAS REGIONES DE UN PROCESO Duplicado de una región.

Esta operación está asociada al servicio fork de POSIX y no se requiere en sistemas operativos que tengan un modelo de creación de procesos más convencionales.

Cuando se produce una llamada a este servicio, se debe crear un nuevo proceso que sea un duplicado del proceso que la invoca. Ambos procesos compartirán las regiones de carácter compartido que hay en el mapa de proceso original.

En la mayoría de los casos, el nuevo mapa apenas se utiliza ya que el proceso hijo realiza una llamada exec que lo destruye, la mayoría de las versiones de UNIX han optimizado esta operación de duplicado usando la técnica del copy-on-write (COW).

Pueden haber varios procesos con la misma región duplicada. Por tanto, asociado a cada página de tipo COW hay un contador que indica cuántos procesos están compartiéndola. Cada vez que ser produce una excepción por acceso de escritura a una página de este tipo, el sistema operativo, además de crear una copia privada de la página para el proceso, decremento el contador de uso. Cuando el contador indique que sólo hay un proceso asociado a la página, se puede quitar la marca de COW ya que la página no tiene duplicados.