Tema 6. Gestión de la memoria Introducción Compartición de memoria Memoria virtual Soporte en los procesadores: la MMU Gestión de la memoria en Linux Índice Gestión de la memoria en Windows NT/2000 Sistemas Operativos II (II-UJI) 1 Gestión de la memoria Tema 6. Gestión de la memoria Necesidad de la gestión de la memoria Requisitos Introducción Modelo de memoria de los procesos Sistemas Operativos II (II-UJI) 2 Gestión de la memoria Introducción Necesidad de gestión de la memoria La memoria es un recurso más, muy importante, del sistema. Los procesos compiten por disponer de tal recurso. Todos los procesos en ejecución están consumiendo memoria. La memoria que necesita un proceso durante toda su ejecución puede asignarse por demanda. ¿De qué depende la memoria mínima necesaria para la ejecución de un proceso? La memoria se debe poder compartir. Entre el SO y un proceso (monotarea) Entre el SO y los distintos procesos activos (multitarea) Sistemas Operativos II (II-UJI) 3 Gestión de la memoria Introducción Requisitos de la gestión de la memoria Cada proceso debe tener un conjunto de direcciones propio, independiente del estado instantáneo de la memoria del sistema. Posibilidad de reubicación. Espacio de direcciones lógico para cada proceso. Un proceso no debe poder acceder a la memoria asignada a otro. Distintos procesos deben poder compartir zonas de memoria comunes. El sistema operativo debe dar soporte adecuado a las distintas zonas de memoria de los procesos. El sistema de gestión de memoria debe ser eficiente. Sistemas Operativos II (II-UJI) 4 Gestión de la memoria Introducción Modelo de memoria de los procesos Un proceso es un programa en ejecución. Se genera mediante compilación y enlazado de diversos módulos fuente y objeto. Tiene una estructura específica de fichero ejecutable en disco. A la hora de crear un proceso, el SO interpreta el formato y asigna adecuadamente la memoria y otros recursos, y crea las estructuras de datos necesarias. La estructura de los distintos formatos de ejecutables es similar: Un conjunto de regiones contiguas en disco y en memoria, con sus propiedades y usos bien definidos. Un conjunto de símbolos y referencias dinámicos. Indicaciones acerca de direcciones de memoria. Sistemas Operativos II (II-UJI) 5 Gestión de la memoria Introducción Modelo de memoria de los procesos (continuación) Los tipos de regiones utilizados son: Código: +rx. Código ejecutable del proceso. Datos constantes: +r. Datos inicializados: +rw. Datos no inicializados: +rw. Pila: +rw. Heap: +rw. Bloque de memoria dinámica. Archivos en memoria: +rw Memoria compartida ... Sistemas Operativos II (II-UJI) 6 Gestión de la memoria Tema 6. Gestión de la memoria Asignación de memoria contigua Segmentación Paginación Compartición de memoria Segmentación paginada Sistemas Operativos II (II-UJI) 7 Gestión de la memoria Compartición de memoria Conceptos básicos: La memoria física del sistema debe poder repartirse entre los distintos procesos con los requisitos que hemos visto: Independencia Protección Eficacia Mecanismos de compartición Asignación de memoria contigua Segmentación Paginación Segmentación paginada Sistemas Operativos II (II-UJI) 8 Gestión de la memoria Compartición de memoria Asignación de memoria contigua El sistema operativo busca un hueco para ubicar el mapa de memoria completo de un proceso. El hardware de soporte es muy simple: Registro límite del mapa de memoria del proceso. Registro de traducción de direcciones. Inconvenientes: Asignación de huecos en memoria. Fragmentación externa. Protección limitada –accesos del propio proceso. Sistemas Operativos II (II-UJI) 9 Gestión de la memoria Compartición de memoria Segmentación Se adapta perfectamente al modelo de memoria de los procesos. El mapa de memoria del proceso se divide lógicamente en trozos disjuntos de tamaño variable llamados segmentos. Cada segmento se ubica en memoria según el esquema anterior. Hacen falta dos registros –como antes- por segmento, más información acerca de permisos, etcétera. Se crea una Tabla de Descriptores de Segmento (ej. IA32) Inconvenientes: Asignación de huecos en memoria. Fragmentación externa. Modelo de direcciones segmentadas o estancas. Soluciona los problemas de protección del modelo anterior. Sistemas Operativos II (II-UJI) 10 Gestión de la memoria Compartición de memoria Paginación Consigue satisfacer los requisitos de un sistema de gestión de memoria, con las siguientes características: Permite un buen aprovechamiento de la memoria. Facilita la gestión de la memoria virtual. No necesita de direcciones segmentadas, permitiendo regiones no estancas de memoria. Necesita soporte más complejo por parte del sistema operativo y del hardware. Es la técnica más usada en los procesadores actuales. Sistemas Operativos II (II-UJI) 11 Gestión de la memoria Compartición de memoria Paginación (continuación) En un sistema con paginación la memoria –lógica y física- se considera dividida en trozos de igual tamaño. Los trozos de memoria lógica se llaman páginas. Los trozos de memoria física se denominan marcos. Ciertos sistemas permiten páginas de distintos tamaños. En este caso los tamaños son múltiplos del tamaño del marco –o de la menor página. Cada página en memoria física ocupa un marco cualquiera. Se requiere una estructura compleja de traducción (Tablas de Páginas). Se evita la fragmentación externa a costa de interna. Sistemas Operativos II (II-UJI) 12 Gestión de la memoria Compartición de memoria Paginación (continuación) Tablas de páginas y traducción de direcciones. Una dirección lógica se divide en dos campos: Número de página Desplazamiento –offsett- dentro de la página. Para traducir la dirección se cambia el nº de página por el de marco Las traducciones se guardan en la Tabla de Páginas. Se incluye información adicional –PID, permisos, caché... Se necesita soporte hardware para la traducción (TLB). Soporta perfectamente la compartición. El tamaño de las tablas de páginas puede ser considerable, siendo las tablas invertidas una solución. Sistemas Operativos II (II-UJI) 13 Gestión de la memoria Compartición de memoria Segmentación paginada Sobre un esquema de memoria segmentada, se superpone otro de paginación. Las direcciones sufren una doble traducción. Se evita la fragmentación externa, pero no la interna. Se añade un nivel de protección –límite de segmento. Se permiten direcciones segmentadas. Facilita la gestión de memoria virtual. Sistemas Operativos II (II-UJI) 14 Gestión de la memoria Tema 6. Gestión de la memoria Conceptos básicos Esquemas de memoria virtual Problemas de la memoria virtual Memoria virtual Otras consideraciones Sistemas Operativos II (II-UJI) 15 Gestión de la memoria Memoria Virtual Conceptos básicos Como se ha visto, no existe una relación directa entre el espacio de direcciones de un proceso y el mapa de memoria físico. El espacio de direccionamiento de un proceso está limitado por la arquitectura, la memoria física por otros condicionantes El espacio de direcciones de un proceso es mucho mayor que la memoria física disponible. Un sistema operativo multitarea debe dar soporte a varios procesos en ejecución al mismo tiempo. La memoria virtual es un mecanismo para poder gestionar adecuadamente estas paradojas. Se utiliza un dispositivo de almacenamiento masivo, más lento y barato, como zona de intercambio o swap. Las páginas que no ocupan un marco son llevadas a disco. Aprovecha la localidad de referencia de los accesos a memoria. Sistemas Operativos II (II-UJI) 16 Gestión de la memoria Memoria Virtual Esquemas de memoria virtual El más utilizado es la paginación por demanda. Se utiliza en modelos de compartición paginados. Las páginas residen en memoria física o en disco. Las tablas de páginas se extienden con información acerca de la relación del estado de la página –en disco, limpia, modificada... Las tablas de páginas –mucho mayores- no están permanentemente en memoria. Para acabar encontrando las referencias en memoria se utilizan: Tablas de páginas de varios –dos- niveles. Tablas de páginas del núcleo siempre en memoria principal. Sistemas Operativos II (II-UJI) 17 Gestión de la memoria Memoria Virtual Problemas de la memoria virtual Las páginas pueden no encontrarse en memoria cuando se necesitan. Se produce entonces un fallo de página. El SO busca la página en disco, la lleva a memoria y actualiza las tablas. Se han de establecer políticas de planificación: adquisición, asignación a procesos y reemplazo. Se pueden producir fenómenos indeseados: Hiperpaginación: cuando hay demasiados procesos en ejecución, el SO invierte gran parte de su tiempo en el intercambio de páginas. Sistemas Operativos II (II-UJI) 18 Gestión de la memoria Memoria Virtual Otras consideraciones De qué depende el número mínimo de páginas en memoria por proceso. Ciertas estructuras y código del núcleo se dejan siempre en memoria principal. Se utilizan políticas de preadquisición etcétera para mejorar las prestaciones. Se requiere de un extenso soporte del hardware (MMU) Sistemas Operativos II (II-UJI) 19 Gestión de la memoria Tema 6. Gestión de la memoria Necesidad de soporte físico Estructura y función del TLB Excepciones Soporte en los procesadores: la MMU Memoria virtual y caché Sistemas Operativos II (II-UJI) 20 Gestión de la memoria Soporte en los procesadores: la MMU Necesidad de soporte físico La traducción de direcciones se realiza al menos una vez por instrucción, luego debe ser muy rápida. Se deben utilizar excepciones para solucionar los problemas propios de la gestión de la memoria –por ejemplo, fallos de página. Toda la circuitería de soporte a la gestión de memoria se encuentra en la Unidad de Gestión de Memoria (MMU, Memory Management Unit) Sistemas Operativos II (II-UJI) 21 Gestión de la memoria Soporte en los procesadores: la MMU Estructura y función del TLB El Translation Lookaside Buffer es una caché de entradas de tablas de página, por lo que replica su estructura. Se utiliza para traducir direcciones sin acceder a memoria. Se rellena mediante instrucciones especiales, y puede generar excepciones. Requiere de políticas de actualización y reemplazo. Sistemas Operativos II (II-UJI) 22 Gestión de la memoria Soporte en los procesadores: la MMU Excepciones Violaciones de privilegio. Fallo de página. Fallo del TLB. Sistemas Operativos II (II-UJI) 23 Gestión de la memoria Soporte en los procesadores: la MMU Memoria virtual y caché Las cachés virtuales son más rápidas, pero producen aliasing. Las cachés físicas son más lentas, luego suelen darse en el nivel 2. Sistemas Operativos II (II-UJI) 24 Gestión de la memoria