Memoria Virtual Direcciones fsicas y direcciones virtuales lgicas

  • Slides: 11
Download presentation
Memoria Virtual Direcciones físicas y direcciones virtuales (lógicas)

Memoria Virtual Direcciones físicas y direcciones virtuales (lógicas)

Memoria Virtual El manejo o administración de memoria, especialmente si ésta es compartida entre

Memoria Virtual El manejo o administración de memoria, especialmente si ésta es compartida entre múltiples tareas o procesos concurrentes, es un problema complejo. Mientras que el tamaño de la memoria principal de las computadoras ha crecido de manera continua, y la longitud de las direcciones usadas por los procesadores modernos permiten generar espacios de direcciones (conjunto de todas las direcciones de memoria) muy grandes, la cantidad de memoria instalada y la disponible para ejecución de procesos representa un factor limitante. La memoria virtual es un mecanismo implementado en hardware y software del sistema operativo para solucionar los problemas de compartir una memoria limitada, ocultando la presencia de memoria física (direcciones reales de memoria principal) y presentando en su lugar memoria virtual (interpretación abstracta de la memoria principal) a todas las aplicaciones o procesos. La memoria virtual fue desarrollada para sistemas operativos multitasking, y tiene como propósito realizar las siguientes dos tareas básicas: • Proporcionar a cada proceso su propio espacio de direcciones, virtualmente ilimitado (aunque la memoria física o real es limitada) con lo que el proceso no necesita ser reposicionado ni tampoco usar un modo de direccionamiento relativo. • Proveer a cada proceso la impresión de que dispone de un bloque de localidades de memoria contiguas. La fragmentación de la memoria es ocultada al proceso.

Memoria Virtual La idea básica de la memoria virtual es ocultar los detalles relacionados

Memoria Virtual La idea básica de la memoria virtual es ocultar los detalles relacionados a la memoria física real disponible en un sistema para los procesos del usuario. En particular, la memoria virtual concilia el hecho de que la memoria física no es asignada a un proceso como una región o área monolítica con localidades de memoria contiguas y también concilia el tamaño real de la memoria física. • En la implementación de la memoria virtual, se utiliza una función de mapeo que traduce las direcciones físicas en direcciones virtuales, o viceversa. Es decir, crea un mapeo entre el espacio de direcciones físicas y el espacio de direcciones virtuales de cada proceso. Esto lo implementa la MMU. • La implementación crea la ilusión de que cada proceso tiene uno o más espacios de memoria con direcciones contiguas y cada uno con una dirección que empieza en cero. • Los tamaños de tales espacios de direcciones virtuales pueden, por razones prácticas, asumirse ilimitados (sin importar que la RAM se agote). Esto lo implementa el Sistema Operativo.

Memoria Virtual • Nótese que la memoria virtual es más que simplemente usar espacio

Memoria Virtual • Nótese que la memoria virtual es más que simplemente usar espacio de disco para extender el tamaño de la memoria, lo cual es meramente una extensión de la jerarquía de memoria para incluir discos duros. • Todas las implementaciones de memoria virtual, con excepción de los emuladores, requieren soporte en hardware. Esto se hace comúnmente mediante la unidad de administración de memoria (MMU – Memory Management Unit) construida dentro del CPU. Los sistemas que utilizan memoria virtual hacen más fácil la programación de grandes aplicaciones y utilizan la memoria física real (RAM) más eficientemente que aquellos sistemas sin memoria virtual. La memoria virtual difiere de la virtualización de memoria en el hecho de que la memoria virtual permite que los recursos sean virtualizados para un sistema específico (o para los procesos dentro de un sistema específico), opuestamente a hacer parecer (virtualizar) que la memoria es un conjunto de memorias más pequeñas para muchos sistemas diferentes.

Memoria Virtual Implementación de la Memoria Virtual Para comprender la manera en que se

Memoria Virtual Implementación de la Memoria Virtual Para comprender la manera en que se implementa la memoria virtual, es necesario aclarar lo siguiente: • • • La memoria virtual cubre por completo el espacio de direcciones de un proceso. La memoria física cubre el espacio total de direcciones de la memoria real disponible. Si la memoria consiste en 2 m localidades o palabras de memoria, las direcciones físicas serán de m bits. Tanto la memoria física como la virtual se dividen en páginas de tamaño fijo, mismas que abarcan un número específico de 2 n localidades o palabras de memoria. Normalmente una página es sustancialmente más grande que una línea de memoria caché. Una función de mapeo asigna una página física (frame o marco) a cada página virtual. La conversión o traducción de memoria física a virtual, o viceversa, la realiza la MMU. El procesador opera únicamente con memoria virtual.

Memoria Virtual Existen varias maneras de implementar el mapeo entre direcciones físicas y virtuales.

Memoria Virtual Existen varias maneras de implementar el mapeo entre direcciones físicas y virtuales. En esta clase, mediante un ejemplo, se mostrará dos de los mecanismos más simples: mapeo con tabla de páginas de 1 nivel y mapeo con tablas de página de 2 niveles, ambos basado en la división en páginas de la memoria. Ejemplo: • • • Palabras de 8 bits (1 byte) Páginas de 4 KB = 4 K palabras = 212 palabras de 1 byte cada una, bits para offset dentro de la página = n = 12). Memoria de 16 MB (224 Bytes = 224 direcciones de mp = 24 bits). • Bits para especificar el número de frame o marco de página = mp – n = 24 – 12 = 12, lo que significa 4, 096 (212) páginas físicas. • Memoria virtual para cada proceso cubre 4 GB (direcciones de mv = 32 bits). • Bits para especificar el número de página virtual = mv – n = 32 – 12 = 20, lo que significa 1, 048, 576 (220) páginas virtuales. Nota: El número de bits para especificar una dirección física puede diferir del número de bits para especificar una dirección virtual.

Memoria Virtual

Memoria Virtual

Memoria Virtual

Memoria Virtual

Memoria Virtual Mapeo con Tablas de Páginas de 2 Niveleles En este esquema, la

Memoria Virtual Mapeo con Tablas de Páginas de 2 Niveleles En este esquema, la parte que especifica el número de página virtual en la dirección virtual es dividido en dos partes iguales: la mitad baja se usa como índice de la tabla de páginas para especificar una página; la mitad alta se usa como índice dentro de un directorio de tablas para especificar el número de tabla en cuestión: • • • 10 bits para número de entrada en directorio, por lo que el tamaño del directorio es de 210 entradas de 4 bytes cada una = 212 B = 4 KB. 10 bits para número de entrada en tabla de página, por lo que el tamaño de la tabla de páginas es de 210 entradas de 4 bytes cada una = 212 B = 4 KB. 12 bits para offset dentro de la página. Consideraciones: • • Espacios de direcciones virtuales extremadamente grandes no requieren de grandes tablas de páginas ni mucha memoria, ya que solo el directorio de páginas y las tablas de páginas activas requieren estar en memoria. Las tablas de páginas se crean en base a la demanda. Las tablas de páginas pueden tener tamaño de una página (mecanismo de paginación uniforme), tanto para memoria virtual como física. Se puede tener un directorio de páginas por proceso, lo cual elimina el requerimiento de comparar el propietario de la tabla con el ID del proceso. También facilita el compartir páginas.

Memoria Virtual

Memoria Virtual

Memoria Virtual

Memoria Virtual