Universidad de Concepci ón Facultad de Ingeniería Departamento de Ingenier ía Informática y Ciencias de la Computación Magíster en Ciencias de la Computaci ón Gestión de la Memoria y Memoria Virtual Andrés G. Puente P. Ingeniero Civil Informático Universidad del BíoBío apuente@duoc.cl inf.udec.cl//~apuente inf.udec.cl Organización y Arquitectura de Sistemas de Computación Introducción • Descripción – Se enfoca en su primera parte a definir las actividades necesarias para una correcta gestión de la memoria. – En su segunda parte esta orientado a presentar los aspectos más importantes considerados en el trabajo con memoria virtual. • Objetivos – Definir y aclarar los que se entiende por Gestión de Memoria. – Presentar los mecanismos, o formas, utilizados para la correcta gestión de este recurso, a fin de comprender ventajas, desventajas y aplicabilidad de cada uno de ellos. – Presentar y definir la Memoria virtual, como parte del trabajo de procesamiento y almacenamiento de información como parte de una arquitectura computacional. Organización y Arquitectura de Sistemas de Computación 1 Gestión de Memoria ¿Qué es la Gestión de Memoria? • Uno de los elementos principales que caracterizan un proceso es la memoria que utiliza. • La asignación de memoria es exclusiva para el proceso que la requiere, es decir, ésta es lógicamente separada de la de cualquier otro proceso del sistema • Es una tarea cuya responsabilidad recae en el Sistema Operativo • Básicamente consiste en cargar y descargar procesos en memoria principal para que sean ejecutados. • Para ello el S.O. gestiona lo que se conoce como MMU o Unidad de Administración de Memoria, el cual es un dispositivo hardware que transforma las direcciones lógicas en físicas. Organización y Arquitectura de Sistemas de Computación Gestión de Memoria Sistemas de Monoprogramación • No existen procesos ejecutándose de forma concurrente. • En este tipo de organización, prácticamente no se puede hablar de Gestión de Memoria. • En la monoprogramación, el procesador puede estar mucho tiempo ocioso (por ejemplo, producto de las E/S que puede tener asociadas), lo que perjudica el rendimiento de la máquina. Organización y Arquitectura de Sistemas de Computación 2 Gestión de Memoria Sistemas de Multiprogramación • Ejecución de más de un proceso a la vez, realizar un reparto transparente, eficiente y seguro de los distintos recursos de la máquina. • El SO debe permitir que los programadores desarrollen sus aplicaciones sin verse afectados por la posible coexistencia de su programa con otros durante su ejecución. • El SO, con el apoyo del hardware de gestión de memoria del procesador, debe repartir el almacenamiento existente, proporcionando un espacio de memoria independiente para cada proceso. • En el caso del procesador, se realiza un reparto en el tiempo, mientras que en el de la memoria, se trata de un reparto en el espacio. Organización y Arquitectura de Sistemas de Computación Gestión de Memoria Intercambio (Swapping) • Nace por lentitud de las actividades de E/S. • La solución a esta problemática, pueden estar dada por ampliar la memoria principal. • Muchas veces se requiere que los sistemas puedan contener mas procesos que los que la memoria soporta. • Nace el intercambio como un mecanismo de solución. • El intercambio consiste en alternar, durante la ejecución de un proceso, su permanencia en memoria principal y memoria secundaria. Organización y Arquitectura de Sistemas de Computación 3 Gestión de Memoria Características deseables de un sistema de Gestión de Memoria • – Ofrecer a cada proceso un espacio lógico propio. – – – Proporcionar protección entre los procesos. Permitir que los procesos compartan memoria. Maximizar el rendimiento del sistema. – Proporcionar a los procesos mapas de memoria muy grandes. Para alcanzar estos objetivos, se necesita contar con un conjunto de requisitos que apoyen la Gestión de la Memoria. Organización y Arquitectura de Sistemas de Computación Gestión de Memoria Requisitos de la Gestión de Memoria • Los requisitos necesarios para una correcta gestión de memoria (según Lister, A y Eager, R.), son: – – Reubicación o Correspondencia (entre DL y DF) (referencia por D. Física, desconocimiento por adelantado, cargas y descargas de procesos) Protección (intromisiones voluntarias o accidentales) – – – Compartición (espacios lógicos independientes y disjuntos) Organización lógica (organización en base a módulos) Organización Física (tamaños vs disponibilidad) • Dirección lógica: referencia a una posición de memoria independiente de la asignación actual de datos, es generada por la CPU. • Espacio de direcciones lógicas: conjunto de direcciones generadas por un programa • Dirección física: designa la posición real de la memoria principal. • Espacio de direcciones físicas: conjunto de posiciones de memoria correspondientes a las direcciones lógicas Organización y Arquitectura de Sistemas de Computación 4 Gestión de Memoria Técnicas de Gestión de memoria – Administración sin Intercambio • No existe “traslado” entre memoria y disco. • • Durante tiempo de ejecución, DEBEN permanecer en memoria. Cantidad de Procesos manejables por CPU y memoria – Administración con Intercambio • • • Existe “traslado” entre memoria y disco. Durante tiempo de ejecución, NO NECESARIAMENTE DEBEN permanecer en memoria. Cantidad de Procesos superiores a capacidad de CPU y memoria Organización y Arquitectura de Sistemas de Computación Gestión de Memoria Esquemas de Asignación Contigua Descripción Ventajas Desventajas Partición Estática La memoria principal se divide en un conjunto de particiones estáticas, durante la generación del sistema. Un proceso se puede cargar en una Sencilla de implementar, poca sobrecarga del sistema operativo. Empleo ineficiente de la memoria debido a la fragmentación interna. El número de procesos Partición Dinámica Las particiones se crean dinámicamente, de forma que cada proceso se carga en una partición de su mismo tamaño. No hay fragmentación interna, uso más eficiente de la memoria principal. Uso ineficiente del procesador debido a la compactación para contrarrestar la fragmentación externa. Esquemas de Asignación no Contigua Paginación La memoria principal se divide en un conjunto de marcos de igual tamaño. Cada proceso se divide en páginas de igual tamaño que los marcos. Un proceso se carga situando todas sus páginas en marcos libres pero no necesariamente contiguos. No tiene fragmentación externa Hay una pequeña cantidad de fragmentación interna. Segmentación Cada proceso se divide en segmentos. Un proceso se carga situando todos sus segmentos en particiones dinámicas que no tienen por qué ser contiguas. No tiene fragmentación interna. Mejora la utilización de la memoria y reduce la sobrecarga comparada con la partición dinámica. Organización y Arquitectura de Sistemas de Computación 5 Gestión de Memoria Técnicas de Gestión de Memoria basadas en asignación contigua – Particiones Estáticas de Memoria Organización y Arquitectura de Sistemas de Computación Gestión de Memoria Esquemas de asignación de memoria en partición estática Organización y Arquitectura de Sistemas de Computación 6 Gestión de Memoria Técnicas de Gestión de Memoria basadas en asignación contigua – Particiones Dinámicas de Memoria (primer, mejor y peor ajuste) Organización y Arquitectura de Sistemas de Computación Gestión de Memoria Administrar la memoria con un esquema de particiones variables: – Administración con mapa de bits (bloque ocupado o libre) – Administración de memoria con listas enlazadas (bit, Bloque I. y U., puntero) – Sistema de los Asociados (se considera un gran hueco de memoria) Organización y Arquitectura de Sistemas de Computación 7 Gestión de Memoria Reubicación en un Esquema con Partición de Memoria – No se pueden perder referencias al interior del proceso. – Direcciones relativas al comienzo del programa. – Traducción de D. Relativas a Físicas, función de la MMU. – Cumple con requisitos de protección. Registro base Dirección Lógica Sumador Registro límite Bloque de Control de Proceso Programa Comparador Datos Dirección f ísica Pila Interrupción al Sistema Operativo Organización y Arquitectura de Sistemas de Computación Memoria Virtual Memoria Virtual – Definición • Esta memoria hace creer a los programas que existe una memoria principal de gran tamaño y explota localidad de acceso a través de la jerarquía de memoria. • Visión del programador es simplificada. – Paginación • Consiste en que el sistema operativo divide la memoria en unidades de tamaño fijo (generalmente potencia de 2, por ejemplo de 1 Kb), llamados marcos. • Los procesos son divididos en páginas de igual tamaño que los marcos. • Al proceso de intercambiar páginas, segmentos o programas completos entre memoria principal y disco se le conoce como ‘intercambio’ o ‘swapping’. • ‘sobrecarga' (overhead), por páginas muy pequeñas. • Fragmentación al interior de una página. Organización y Arquitectura de Sistemas de Computación 8 Memoria Virtual - Paginación Asignación de páginas de procesos a marcos libres Estructura de Datos en el tiempo (f) Organización y Arquitectura de Sistemas de Computación Memoria Virtual - Paginación Traducción de Dirección lógica a Física en Paginación • Ejemplo: Dirección relativa 1502 en binario 0000010111011110 Organización y Arquitectura de Sistemas de Computación 9 Memoria Virtual - Paginación Asignación de marcos • Cantidad de marcos de página es limitada y pueden existir muchos procesos, para asignar m marcos de página entre n procesos: – Asignar equitativamente m/n marcos a cada proceso. – Asignar una cantidad de marcos de página proporcional al tamaño de cada proceso. – Asignar marcos de página de acuerdo a las prioridades de los procesos o de acuerdo una combinación entre sus tamaños y sus prioridades. Hiperpaginación • Un proceso esta hiperpaginado si emplea mas tiempo paginando, es decir, produciendo fallos de páginas y cargando las páginas en memoria; que ejecutándose propiamente tal. Organización y Arquitectura de Sistemas de Computación Memoria Virtual – Tablas de Páginas Tablas de Páginas • Soporte hardware a las tablas de páginas: – Registros dedicados • Gran velocidad para traducción de direcciones • Muy caro, útil solamente cuando las tablas son pequeñas – Memoria principal • La tabla de páginas se almacena en memoria RBTP: Registro Base de la Tabla de Páginas almacena un puntero a la tabla de páginas del proceso en ejecución • Para acceder a una dirección necesita 2 accesos a memoria – Acceso a entrada en tabla de páginas – Acceso a dirección deseada • Mucho más lento el proceso de traducción – Registros asociativos (TLB: translation lookaside buffer) • Para que un sistema de paginación sea aplicable a la práctica, es necesario que la mayoría de los accesos a memoria, accedan a la posición solicitada. • Pequeña memoria asociativa interna a la MMU, mantiene información de las últimas páginas accedidas (tipo Cache). • Con identificador de proceso (más número de página) y sin identificador de proceso (solo número de página). Organización y Arquitectura de Sistemas de Computación 10 Memoria Virtual – Tablas de Páginas Tablas de Páginas: Multinivel • Tablas de páginas sujetas a paginación. Organización y Arquitectura de Sistemas de Computación Memoria Virtual – Tablas de Páginas Tablas de Páginas: Invertida • solo una tabla de páginas en el sistema con tantas entradas como marcos se tengan. • Entrada: dirección virtual y PID. • El índice devuelve el numero de marco donde está la página. Organización y Arquitectura de Sistemas de Computación 11 Memoria Virtual - Sustitución • Política de Sustitución de las Páginas – LRU (least recently used) – FIFO (first in first out), se le asigna a cada página un contador – LFU (least frequently used), mantiene los contadores de acuerdo al número de referencias – MFU (most frequently used) – Algoritmo Optimo – Algoritmo de reemplazo de segunda oportunidad Organización y Arquitectura de Sistemas de Computación Memoria Virtual - Segmentación Segmentación • • Datos y programas se dividen en segmentos (no es necesario que todos sean del mismo tamaño). Espacios de direcciones independien tes, crecimiento independien te. Organización y Arquitectura de Sistemas de Computación 12 Memoria Virtual – Traducción Direcciones Traducción de Direcciones en Segmentación Ventajas: • Un segmento puede ser expandido o reducido según necesidades. • • • Programas compilados de forma independiente. Se pueden compartir segmentos (ej: para compartir datos). Protección por medio de privilegios s segmentos Organización y Arquitectura de Sistemas de Computación Combinación Paginación y M. Virtual • Combinaciones entre Paginación y Segmentación – Memoria no segmentada y no paginada: La dirección virtual es la misma que la dirección física. – Memoria paginada no segmentada: La memoria es un espacio de direcciones paginado. – Memoria segmentada no paginada: La memoria es un conjunto de direcciones lógicas. – Memoria segmentada paginada: La segmentación define particiones lógicas de memoria y la paginación gestiona la asignación de memoria dentro de las particiones. Organización y Arquitectura de Sistemas de Computación 13 Conclusiones ¿Es posible considerar a la paginación como una asignación estática de memoria, considerando intercambio? ¿Dadas las diferencias entre arquitecturas computaciones y las necesidades particulares de los usuarios, se podrá definir un conjunto de factores universales para comparar y evaluar las distintas formas de gestionar la memoria? ¿La gestión de la memoria se encontrará presente por siempre en los sistemas computacionales? ¿Quiénes serán los demandantes por mejores técnicas de administración de memoria, las empresas para apoyar su gestión de negocios o los usuarios en su trabajo cotidiano? Organización y Arquitectura de Sistemas de Computación 14