560 likes | 684 Views
Sistemas Operativos. Unidad V Administración de la Memoria. Administración de la Memoria. Objetivos de la administración de memoria Modelo de memoria de un proceso Esquemas de memoria basados en asignación contigua Intercambio Memoria virtual. Objetivos de la administración de memoria.
E N D
Sistemas Operativos Unidad V Administración de la Memoria
Administración de la Memoria • Objetivos de la administración de memoria • Modelo de memoria de un proceso • Esquemas de memoria basados en asignación contigua • Intercambio • Memoria virtual
Objetivos de la administración de memoria • El SO multiplexa los recursos entre los procesos: • Gestión de procesos: Reparto del procesador. • Gestión de memoria: Reparto de memoria. • Cada proceso “cree” que tiene una máquina solo para él.
Objetivos de la administración de memoria (2) • Los objetivos deseables en la administración de memoria son: • Ofrecer a cada proceso un espacio lógico propio. • Proporcionar protección entre los procesos. • Permitir que los procesos compartan memoria. • Dar soporte a las distintas regiones del proceso. • Maximizar el rendimiento del sistema. • Proporcionar a los procesos mapas de memoria muy grandes.
Ejecución Objetivos de la administración de memoria (3) • Ofrecer a cada proceso un espacio lógico propio. • No se conoce la posición de memoria donde un programa se ejecutará. • El código ejecutable genera referencias entre 0 y N. • Ejemplo: programa que copia un vector 0000 0004 Cabecera …… 0096 0100 LOAD R1, #1000 0104 LOAD R2, #2000 0108 LOAD R3, /1500 0112 LOAD R4, [R1] 0116 STORE R4, [R2] 0120 INC R1 0124 INC R2 0128 DEC R3 0132 JNZ /12 0136 …………….. 0000 LOAD R1, #1000 0004 LOAD R2, #2000 0008 LOAD R3, /1500 0012 LOAD R4, [R1] 0016 STORE R4, [R2] 0020 INC R1 0024 INC R2 0028 DEC R3 0032 JNZ /12 0036 …………….. …… • Sistema operativo en • direcciones más altas • Programa se carga en • dirección 0 • Se le pasa el control al • programa Sistema Operativo Archivo ejecutable S. O. Monoprogramación
Objetivos de la administración de memoria (4) • Reubicación • Es un problema cuando el código tiene direcciones absolutas. • En un sistema multiprogramación el SO debe tener la libertad de ubicar al programa donde quiera. • Consiste en traducir las direcciones lógicas de los programas ejecutables a direcciones físicas.
Objetivos de la administración de memoria (5) • La Reubicación crea espacios lógicos independientes para cada proceso. Existen dos alternativas para la reubicación: (1) Reubicación por hardware y (2) Reubicación por software. • (1) Reubicación por Hardware • Hardware (MMU) esta encargado de la traducción • El SO se encarga de: • Almacenar la función de traducción por proceso • Especificar al Hw la función de traducción del proceso • El programa se carga en memoria sin modificar • (2) Reubicación por Software • Traducción de direcciones durante la carga del • programa • Programa en memoria distinto del ejecutable • Desventajas: • No permite mover un programa en • tiempo de ejecución • No asegura protección
Objetivos de la administración de memoria (6) • Proporcionar protección entre procesos • En sistemas monoprogramación se protege el SO. • En sistemas multiprogramación, además del SO, también debe haber protección entre los procesos. • La traducción debe crear espacios disjuntos. • Es necesario validar todas las direcciones que genera el programa. • La detección debe realizarla el hardware del procesador lanzando una excepción. • El tratamiento lo hace el SO en respuesta a la excepción lanzada por el hw.
Objetivos de la administración de memoria (7) • Permitir que los procesos compartan memoria (memoria compartida). • Las direcciones lógicas de dos o más procesos se corresponden con la misma dirección física. • La memoria compartida está bajo el control del SO. • Los beneficios que se tienen son: • Procesos ejecutando un mismo programa comparten su código. • Mecanismos de comunicación entre procesos muy rápido. • Requiere asignación no contigua
Objetivos de la administración de memoria (8) • Problemas al compartir memoria: • Si una posición de la zona de memoria tiene referencia a otra posición dentro de la misma zona de memoria: • En la zona de código podría darse este caso cuando se tiene una condición de bifurcación. • En la zona de datos podría darse el caso cuando se almacena una lista con punteros.
Objetivos de la administración de memoria (9) • Dar soporte a las distintas regiones del proceso (soporte de regiones). • El proceso presenta un mapa de memoria no homogéneo, formado por: • Conjunto de regiones con distintas características. • Ejemplo: región de código no modificable. • El mapa del proceso es dinámico. • Regiones cambian de tamaño (p. ej. La pila). • Se crean y destruyen regiones. • Existen zonas sin asignar (huecos). • La administración de memoria debe dar soporte a las siguientes características: • Detectar accesos no permitidos a una región. • Detectar acceso a huecos. • El SO debe guardar una tabla de regiones para cada proceso.
Objetivos de la administración de memoria (10) • Maximizar el rendimiento del sistema • Reparto de memoria maximizando el grado de multiprogramación. • Se “desperdicia” memoria debido a: • “Restos” inutilizables (fragmentación). • Tablas requeridas por el gestor de memoria. • Una menor fragmentación implica tablas muy grandes. • La solución es la Paginación. • Otra estrategia para aumentar el grado de multiprogramación es el uso de memoria virtual.
Objetivos de la administración de memoria (11) • Proporcionar a los procesos mapas de memoria muy grandes. • Resuelto gracias al uso de memoria virtual. • Antes se usaban los overlays • Programa dividido en fases que se ejecutaban sucesivamente. • En cada momento solo hay una fase residente en memoria. • Cada fase realiza su labor y carga la siguiente. • No es transparente para el programador.
Modelo de memoria de un proceso • El mapa inicial de un proceso está muy vinculado con el archivo que contiene el programa ejecutable. • La generación de un archivo ejecutable puede dividirse en dos fases: • Compilación • Resuelve referencias dentro de cada módulo fuente. • Genera un módulo objeto. • Montaje (o enlace) • Resuelve referencias entre módulos objeto. • Resuelve referencias a símbolos de bibliotecas. • Genera el ejecutable incluyendo bibliotecas.
Modelo de memoria de un proceso (2) • En la generación del archivo ejecutable intervienen las bibliotecas y pueden ser de dos tipos: • Estáticas: • Se obtiene un ejecutable autocontenido. • Ejecutables grandes. • Código de biblioteca repetido en muchos ejecutables. • Actualización de la biblioteca implica volver a montar. • Dinámicas: • Carga y montaje de la biblioteca en tiempo de ejecución. • El ejecutable contiene: (1) el nombre de la biblioteca y (2) rutina de carga y montaje en tiempo de ejecución. • Se carga en la primera referencia que se haga a ella.
Modelo de memoria de un proceso (3) • Formato del ejecutable • Como parte final del proceso de compilación y montaje, se genera un archivo ejecutable que contiene el código máquina del programa. Distintos fabricantes han usado diferentes formatos de archivos (p. ej. ELF de Unix)
Modelo de memoria de un proceso (4) • El mapa de memoria de un proceso tiene las siguientes características: • No es algo homogéneo. • Esta formado por un conjunto de distintas regiones o segmentos. • Región: • Zona contigua de memoria tratada como unidad al proteger o compartir. • Tiene asociada una determinada información (“objeto de memoria”). • Cada región se caracteriza por: • Dirección de comienzo y tamaño inicial. • Soporte: donde se almacena su contenido inicial. • Protección: lectura (r), escritura (w) y ejecución (x). • Uso compartido o privado. • Tamaño fijo o variable.
Modelo de memoria de un proceso (5) • Al crear el mapa de memoria desde el ejecutable las regiones de memoria se corresponderán básicamente con las secciones del ejecutable más la pila inicial del proceso. Compartida, (r,x), T. Fijo, Soporte en ejecutable Privada, (r,w), T. Fijo, Soporte en ejecutable Privada, (r,w), T. Fijo, Sin Soporte Privada, (r,w), T. Variable, Sin Soporte, Crece hacia direcciones más bajas Pila inicial, argumentos del programa
Modelo de memoria de un proceso (6) • Durante la ejecución de un proceso se crean nuevas regiones, así el mapa de memoria tiene un carácter dinámico. Algunas otras regiones del mapa de memoria son: • Región de Heap • Soporte de memoria dinámica (malloc en C) • Es: Privada, RW, Tam. Variable, Sin Soporte y crece hacia direcciones más altas • Archivo proyectado • Región asociada al archivo proyectado • Tam. Variable, Soporte en Archivo • Protección y carácter compartido o privado especificado en proyección. • Memoria compartida • Región asociada a la zona de memoria compartida. • Compartida, Tam. Variable, Sin Soporte y Protección especificada en proyección. • Pilas de threads • Cada pila de thread corresponde con una región • Mismas características de la pila de proceso • Carga de biblioteca dinámica • Se crean regiones asociadas al código y datos de la biblioteca.
Modelo de memoria de un proceso (7) • Durante la vida de un proceso, su mapa de memoria va evolucionando y con él sus regiones. Existen cuatro operaciones genéricas sobre dichas regiones: • Crear región • Se da de forma implícita al crear el mapa inicial, o por solicitud del programa (p. ej. Proyectar un archivo). • Eliminar región • Se da implícitamente al terminar el proceso o por solicitud del programa en tiempo de ejecución (p. ej. Desproyectar un archivo). • Cambiar de tamaño la región • Se da implícitamente para la pila o por solicitud del heap. • Duplicar la región • Operación requerida por el servicio fork()
Esquemas de memoria basados en asignación contigua • Un esquema simple de administración de memoria consiste en asignar a cada proceso una zona contigua de memoria para que en ella resida su mapa de memoria. • Dentro de este esquema se da la gestión contigua basada en particiones dinámicas • Cada vez que se crea un proceso el SO busca un hueco de tamaño suficiente para el mapa. • El SO reserva la parte del hueco necesaria para crear en ella el mapa inicial del proceso • Es necesario que el procesador tenga dos registros de propósito especial para tratar las direcciones que generen los programas.
Esquemas de memoria basados en asignación contigua (2) • El hardware requerido típicamente son dos registros en el procesador: • Registro límite • Para comprobar que cada dirección que genere el proceso no es mayor que el valor almacenado. De ser así se genera una excepción. • Registro base • Una vez comprobado el registro límite, el procesador le sumará el valor de este registro a la dirección generada por el programa, obteniéndose con ello la dirección física.
Esquemas de memoria basados en asignación contigua (3) • Gestión del SO • Almacenar en el BCP los registros límite y base del proceso. Y carga dichos registros cuando se activa un proceso. • Mantiene información sobre el estado de ocupación de la memoria • Utiliza estructuras de datos que identifican huecos y zonas asignadas • Bajo este esquema se genera fragmentación externa: • Se generan pequeños fragmentos libres entre zonas asignadas. • Posible solución : compactación. Sin embargo, este puede ser un proceso muy costoso.
Esquemas de memoria basados en asignación contigua (4) • Políticas de asignación de espacio • Qué hueco usar para satisfacer una petición de memoria. • Posibles políticas: • Mejor ajuste • Asignar el menor hueco con tamaño suficiente • Requiere una lista ordenada por tamaño o buscar en toda la lista • Se generan nuevos espacios libres muy pequeños • Peor ajuste • Asignar el mayor hueco con tamaño suficiente • Requiere una lista ordenada por tamaño o buscar en toda la lista. • Primer ajuste • Asignar el primer hueco con tamaño suficiente. • Suele ser la mejor política
Esquemas de memoria basados en asignación contigua (5) • Valoración del esquema de asignación contigua • Espacios lógicos independientes • Se logra mediante los registros límite y base • Protección • El uso de los registros límite y base asegura que un proceso no pueda acceder a la memoria de otros procesos o del sistema operativo. • Compartir memoria. • No es posible • Soporte de las regiones • No existe • Se reserva espacio para huecos • Maximizar rendimiento y mapas grandes • Mal aprovechamiento de memoria por fragmentación externa • No permite memoria virtual
Intercambio • En su momento significó la manera de permitir que los sistemas de tiempo compartido tuvieran más procesos de los que caben en la memoria. • En un disco o partición de este (swap) se tiene un respaldo de la memoria, en lo que respecta a las imágenes de los procesos. • Cuando no caben en memoria todos los procesos activos, entonces algún proceso debe ser expulsado (swap out), pero en algún momento el proceso expulsado deberá ser reactivado (swap in).
Intercambio (2) • Swap out • Cuando un proceso es expulsado de la memoria su imagen es copiada al swap. • Los criterios de selección del proceso a expulsar pueden ser diversos: • Dependiendo de la prioridad del proceso. • Preferiblemente un proceso bloqueado • No expulsar si esta activo DMA sobre el mapa del proceso • No es necesario copiar todo el mapa al swap (ni código ni huecos). • Swap in • Cuando existe espacio suficiente en memoria. • Cuando un proceso necesita ser reactivado • Al cumplir cierto tiempo de estar expulsado • En este caso antes del swap in se hace el swap out de otro.
Intercambio (3) • La asignación de espacio en el dispositivo swap tiene dos alternativas • Preasignación • Al crear el proceso ya se reserva espacio de swap suficiente para albergarlo. • Sin Preasignación • Sólo se reserva espacio cuando se expulsa el proceso • Usado en sistemas tipo Unix • Una solución más general es el uso de memoria virtual. Aún cuando se utiliza conjuntamente con la técnica de intercambio (swaping)
Memoria Virtual • En esta técnica el SO administra la memoria principal y la memoria secundaria para almacenar información perteneciente a los procesos.
Memoria Virtual (2) • De forma general se puede decir que el SO transfiere bloques entre ambas memorias. • De memoria principal a memoria secundaria por expulsión. • De memoria secundaria a memoria principal por demanda. • Los beneficios obtenidos son: • Aumento en el grado de multiprogramación • Permite la ejecución de programas más grandes que la memoria principal. • Por otro lado, no es adecuada para sistemas de tiempo real
Memoria Virtual (3) (Paginación) • Paginación • Surge como un intento para satisfacer los objetivos de la administración de memoria sofisticando considerablemente el hardware del procesador y aumentando la cantidad de información de traducción por proceso. • La unidad básica de trabajo en este esquema es obviamente la página, la cual corresponde con una zona de memoria contigua de determinado tamaño (potencias de 2, típicamente 4kb). • El mapa de memoria de cada proceso esta dividido en páginas. A su vez, la memoria principal esta dividida en marcos de página (en un determinado momento contiene una página del proceso).
Memoria Virtual (4) (Paginación) • Tablas de páginas (TP) • Contiene la información de dónde residen las páginas de un programa en ejecución. • Relacionan cada página con el marco que la contiene. • El MMU usa TP direcciones lógicas a direcciones físicas. • El procesador tiene un registro que almacena la dirección de la TP de un proceso.
Memoria Virtual (5) (Paginación) • Ejemplo de traducción con tablas de páginas
Memoria Virtual (6) (Paginación) • Fragmentación interna en paginación • Seda debido a que cada proceso tiene un número entero de marcos de página, lo que ocasiona que la memoria asignada sea mayor que la memoria requerida, por lo tanto puede desperdiciarse parte de un marco asignado.
Memoria Virtual (7) (Paginación) • Contenido de un registro de la TP • Número de marco asociado • Información de protección: (R, W, X) • Si se hace una operación no permitida se lanza una excepción • Bit de página válida/inválida • Bit de página accedida • Bit de página modificada • Bit de desactivación de cache • Cuando la entrada corresponde con direcciones de E/S • Tamaño de la página • Es un aspecto importante en el rendimiento de un sistema de paginación. • El tamaño óptimo es un compromiso entre diversos factores • Tamaño pequeño: menor fragmentación y se ajusta mejor al conjunto de trabajo • Tamaño grande: tablas más pequeñas y mejor rendimiento del dispositivo de E/S.
Memoria Virtual (8) (Paginación) • Gestión del SO • Mantiene una TP por cada proceso • En cada contexto notifica al MMU cuál debe usar a través del registro identificador del espacio de direccionamiento (RIED). • Mantiene una única TP para el propio SO • Todos los procesos pueden compartir el SO. • Cuando se ejecuta una llamada al sistema, invocada por un proceso, puede acceder a su propio mapa y al del proceso. • Mantiene una tabla de marcos • Permite conocer cuales marcos están libres y cuales ocupados • Mantiene una tabla de regiones por proceso • Contiene las características de cada región especificando el rango de páginas que pertenecen a cada región. • Mucho mayor gasto en tablas que con asignación contigua • Es el precio de mucha mayor funcionalidad
Memoria Virtual (9) (Paginación) • Valoración de la paginación • Espacios lógicos independientes • Se logra mediante TP al corresponder las páginas del mapa memoria del proceso con los marcos que tiene asignados. • Protección • Se logra mediante TP al restringir la parte de memoria que puede ser accedida por los procesos. • Compartir memoria • Bajo el control del SO es posible que entradas de TP diferentes correspondan con un mismo marco. • Soporte de regiones • Bits de protección • Bits de validez • Maximizar rendimiento y mapas grandes • A pesar de la fragmentación interna permite un buen aprovechamiento de la memoria. • Permite esquemas de memoria virtual
Memoria Virtual (10) (Paginación) • Implementación de la TP • Involucra dos problemas: • Eficiencia • Cada acceso lógico requiere de dos accesos a memoria principal (a la tabla de páginas + al dato o instrucción) • La solución está en un cache de traducciones (TLB) • Memoria asociativa con información sobre las últimas páginas accedidas. • Puede ser gestionada por Hardware o por Software. • Gasto de almacenamiento • Tablas muy grandes • Ejemplo: páginas de 4K, dir. Lógica de 32 bits y 4 bytes por entrada: Tamaño de TP 4MB/Proceso (220 * 4). • Una soluciones posibles • Tablas multinivel • Tablas invertidas
Memoria Virtual (11) (Paginación) • Tabla de páginas multinivel (dos niveles) • Es más flexible • Ocupa el espacio en memoria requerido realmente • Necesita tres accesos a memoria principal para un dato o instrucción.
Memoria Virtual (12) (Paginación) • Ejemplo de traducción con TP de dos niveles
Memoria Virtual (13) (Paginación) • Ventajas de tablas multinivel • Si un proceso usa una parte pequeña de su espacio lógico • Ahorro en espacio para almacenar TPs • Ejemplo: Proceso que usa 12 MB superiores y 4MB inferiores • 2 niveles, páginas de 4K, dir. lógica de 32 bits (10 bits por nivel) y 4 bytes por entrada: 1 TP N1 + 4 TP N2 = 5 * 4KB = 20KB (frente a 4MB) • Ventajas adicionales: • Permite compartir TPs intermedias • Sólo requiere que este en memoria la TP de nivel Superior.
Memoria Virtual (14) (Segmentación) • Segmentación • Esquema por hw que intenta dar soporte a las regiones • Es una generalización del registro base y límite • Una pareja por cada segmento • Dirección lógica • Número de Segmento + Dirección en el Segmento • MMU usa una tabla de segmentos (TS) • El SO mantiene una TS por proceso • En cada contexto notifica al MMU cuál debe usar • Cada registro en la TS contiene, entre otros: • Registros base y límite • Protección: R, W, X • El segmento es la unidad de asignación y existe fragmentación externa • El SO mantiene información sobre el estado de la memoria • Estructuras de datos que identifiquen huecos y zonas asignadas
Memoria Virtual (15) (Segmentación) Esquema de traducción con segmentación • Valoración de la segmentación: • Espacios independientes para procesos • Mediante TS • Protección • Mediante TS • Compartir memoria • Compartir segmentos: misma entrada diferente TS • Soporte de regiones • Bits de protección • Maximizar resultados y mapas grandes • Presenta fragmentación externa • No facilita esquemas de memoria virtual debido a tamaño variable de segmentos • Esquema apenas usado
Memoria Virtual (16) (Segmentación Paginada) • Segmentación Paginada • Intenta unir lo mejor de los dos esquemas • Una entrada en TS apunta a una TP para el segmento • Segmentación: • Soporte directo a segmentos • Facilita operaciones sobre regiones • Para establecer protección solo se modifica una entrada de la TS • Para definir la compartición de segmentos una entrada de TS apunta a la misma TP del segmento • Paginación • Asignación no contigua de segmento • Fragmentación interna
Memoria Virtual (17) (Segmentación Paginada) • Valoración de la segmentación paginada • Espacios independientes para procesos • Mediante TS • Protección • Mediante TS • Compartir memoria • Compartir segmentos: mismas entradas diferentes TS • Soporte de regiones • Bits de protección Esquema de traducción con Segmentación Paginada • Maximizar rendimiento y mapas grandes • Permite esquemas de memoria virtual • Comparado con la paginación • Facilita al SO gestión de regiones pero requiere hw más complejo
Memoria Virtual (18) • Paginación por demanda • Segmentación pura no adecuada para memoria virtual • Tamaño de segmentos variable • Paginación y segmentación paginada sí lo son: • Los bloque transferidos son páginas • Memoria virtual + paginación = paginación por demanda. • Estrategia de implementación: uso de bit de validez. • Si la página no reside se marca como no válida. • En acceso: Excepción de fallo de página • El SO trae la página correspondiente de memoria secundaria • El SO debe diferenciar entre una página no residente y página no válida • Prepaginación: traer páginas por anticipado (no por demanda) • En fallo de página se traen otras páginas que posiblemente necesite el proceso • Beneficiosa si se acierta en la predicción
Memoria Virtual (19) • Tratamiento de fallo de página • Tratamiento de la excepción • Si la dirección es inválida se aborta el proceso o se le manda una señal. • Si no hay ningún marco libre (consulta T. marcos) • Selecciona una victima (Aplica un algoritmo de reemplazo) • Si la página fue modificada, entonces, se guarda en memoria secundaria • Si hay marco libre • Se escribe la página sobre el marco • Se marca la entrada de la página como válida • El marco se establece como ocupado en TM sin no lo estaba • Un fallo de página puede implicar dos accesos a disco
Memoria Virtual (20) • Políticas de administración de la memoria virtual • Política de reemplazo • ¿Qué página reemplazar si hay fallo y no hay marco libre? • Reemplazo local • Solo se usan marcos asignados al proceso que causa el fallo • Reemplazo global • Se utiliza cualquier marco • Política de asignación de espacio a los procesos • ¿Cómo se reparten los marcos entre los proceso? • Asignación fija o asignación dinámica
Memoria Virtual (21) • Algoritmos de reemplazo • Objetivo: minimizar la tasa de fallos de página • Cada algoritmo tiene su versión local y global • Algoritmos más comunes: • Óptimo • FIFO • Reloj • LRU
Memoria Virtual (22) • Algoritmo óptimo • Criterio: Página residente que tardará más en accederse. • Irrealizable • Interés para estudios analíticos y comparativos. • Versiones local y global • Algoritmo FIFO • Criterio: página que lleva más tiempo residente • Fácil implementáción • Páginas residentes en orden FIFO (se expulsa la primera) • No requiere el bit de página accedida • No es una buena estrategia • Página que lleva mucho tiempo residente puede seguir accediéndose frecuentemente. • Su criterio no se basa en el uso de la página • Anomalía de Belady: (entre más marcos más fallas)