Escolar Documentos
Profissional Documentos
Cultura Documentos
Gestin de Memoria
Transparencias basadas en el libro de referencia: Sistemas operativos. Una visin aplicada. J. Carretero, F.Garca, P. de Miguel, F. P rez. McGraw Hill 2001 Curso 2005-2006
AT3148 Ampliacin de Sistemas Operativos A. Snchez-Macin, J.A. Maestro, M.P. Sesmero (2004/05) Contenido
Objetivos del sistema de gestin de memoria. Modelo de memoria de un proceso. Esquemas de memoria basados en asignacin contigua.
Objetivos:
Ofrecer a cada proceso un espacio lgico propio. Proporcionar proteccin entre procesos. Permitir que procesos compartan memoria. Dar soporte a las regiones del proceso. Maximizar el grado de multiprogramacin. Proporcionar a los procesos mapas de memoria grandes.
No se conoce posicin de memoria donde un programa ejecutar. Cdigo en ejecutable genera referencias entre 0 y N.
Reubicacin
Direcciones lgicas:Direcciones de memoria generadas por el programa. Direcciones fsicas: Direcciones de memoria principal asignadas al proceso. Traduccin(pid, direccin lgica) --> direccin fsica. Espacios lgicos (mapas) independientes por proceso. Reubicacin puede ser hardware o software.
Reubicacin hardware
Hardware (MMU) encargado de la traduccin. El sistema operativo:
Almacena la funcin de traduccin para cada proceso. Indica al hardware qu funcin usar para un proceso.
Reubicacin software
Traduccin de direcciones durante la carga del programa. El programa en memoria es distinto que el ejecutable. Desventajas:
No asegura proteccin. No permite mover programa en tiempo de ejecucin (ser necesario en memoria virtual).
Proteccin
Monoprogramacin: Proteccin del S.O. Multiprogramacin: Adems proteccin entre procesos. Traduccin debe crear espacios disjuntos. Necesario validar todas las direcciones que genera el programa:
Deteccin realizada por el hardware del procesador. Tratamiento por el sistema operativo.
Compartimiento de memoria
Direcciones lgicas de dos o ms procesos se corresponden con una misma direccin fsica. Bajo control del S.O. Beneficios:
Procesos ejecutando mismo programa comparten cdigo. Mecanismo de comunicacin entre procesos muy rpido.
Requiere asignacin
Soporte de Regiones
Maximizar rendimiento
Reparto de memoria maximizando grado de multiprogramacin. Poltica de asignacin. Desperdicia memoria por restos inutilizables (fragmentacin) y tablas necesarias para el gestor. Compromiso: paginacin. Uso de memoria virtual para aumentar el grado de multiprogramacin.
Requisitos de memoria cada vez mayores segn aparecen nuevas aplicaciones. Memoria virtual aporta la solucin. Antes overlays:
Programa dividido en fases que se ejecutaban sucesivamente. En cada momento una sola fase residente en memoria. Cada fase realiza su labor y carga la siguiente. No es transparente: Labor realizada por el programador.
Contenido
Objetivos del sistema de gestin de memoria. Modelo de memoria de un proceso. Esquemas de memoria basados en asignacin contigua. Memoria virtual. Archivos proyectados en memoria.
Aplicacin: conjunto de mdulos en lenguaje de alto nivel. Procesado en dos fases: Compilacin y montaje. Compilacin: Resuelve referencias dentro de cada mdulo fuente.
Genera mdulo objeto.
Montaje (o enlace):
Resuelve referencias entre mdulos objeto. Resuelve referencias a smbolos de referencia. Genera ejecutable incluyendo biblioteca
Bibliotecas de objetos
Biblioteca: Coleccin de mdulos objeto relacionados. Bibliotecas del sistema o creadas por el usuario. Bibliotecas Estticas:
Montaje: Enlaza mdulos objeto del programa y las bibliotecas. Ejecutable autocontenido.
Bibliotecas dinmicas
Ventajas:
Menor tama o ejecutables. Cdigo de rutinas de bibliotecas slo en archivo de biblioteca. Procesos pueden compartir cdigo de biblioteca. Actualizacin automtica de bibliotecas: Uso de versiones.
Desventajas:
Mayor tiempo de ejecucin debido a carga y montaje
Tolerable: Compensado con el resto de las ventajas.
Ejecutable no autocontenido.
Uso explcito:
Requerido por aplicaciones que determinan en tiempo ejecucin qu bibliotecas deben usar. No se especifica biblioteca en mandato de montaje. Programa solicita carga de bibliotecas mediante servicio del sistema (dlopen en UNIX y LoadLibrary en Win32). Acceso no transparente a smbolos de la biblioteca:
Programa necesita usar servicios del sistema para ello
dlsym en UNIX y GetProcAddress en Win32.
Diferentes tipos de secciones. Las secciones ms relevantes se volcarn en el mapa de memoria del proceso:
Cdigo(texto): contiene el cdigo del programa. Datos con valor inicial: Variables globales inicializadas. Datos sin valor inicial: Variables globales no inicializadas
Aunque aparece en la tabla de secciones no se almacena en el ejecutable (contenido no relevante).
Variables globales
Estticas Se crean al iniciarse programa Existen durante ejecucin del mismo Direccin fija en memoria y en ejecutable
Regiones
Cdigo: Uso compartido, lectura y ejecucin, tamao fijo, soporte en archivo ejecutable. Datos con valor inicial: Uso privado, lectura y escritura, tamao fijo y soporte en archivo ejecutable. Datos sin valor inicial. Uso privado, lectura y escritura, tamao fijo y sin soporte (rellena con ceros en algunos lenguajes). Pila: Privada, lectura y escritura, tamao variable y sin soporte (rellena con 0). Crece hacia direcciones ms bajas. La pila inicial slo contiene argumentos que se le proporcionan al programa.
Regin de Heap.
Soporte de memoria dinmica. (malloc en C). Uso privado, lectura y escritura, tamao variable y sin soporte. Crece hacia direcciones ms altas.
Archivos proyectados
Regin asociada al archivo. Tamao variable, soporte en archivo. Protecci n y carcter compartido o privado especificado por el programa al solicitar la proyeccin.
Memoria Compartida.
Regin asociada a la zona de memoria compartida. Uso compartido, tamao variable, sin soporte. La proteccin se especifica por el programa al proyectarla.
Pilas de Threads.
Cada pila corresponde con una regi n. Mismas caractersticas que la pila de proceso.
Sobre las regiones del mapa de memoria se pueden aplicar las siguientes operaciones:
Crear regin: Implcitamente, al crear el mapa inicial o por solicitud del programa en tiempo de ejecucin (por ejemplo: proyectar un archivo). Eliminar regin: Implcitamente, al terminar el proceso o por solicitud del programa en tiempo de ejecuci n (por ejemplo: desproyectar un archivo). Cambiar tamao de la regin: Implcitamente para la pila o bajo solicitud del programa en el heap. Duplicar una regin: Para el servicio FORK de POSIX (Duplicara el mapa de memoria del proceso padre).
Contenido
Objetivos del sistema de gestin de memoria. Modelo de memoria de un proceso. Esquemas de memoria basados en asignacin contigua. Memoria virtual. Archivos proyectados en memoria.
Asignacin contigua
Mapa de proceso en zona contigua de memoria principal. Hardware requerido: Registros valla (Registro base y lmite).
Slo accesibles en modo privilegiado.
Asignacin contigua
Primer ajuste es ms eficiente y proporciona buen aprovechamiento de la memoria. Estrategia ms sofisticada: Sistema Buddy
Listas de huecos con tamaos potencia de 2.
Peligro de desperdiciar espacio o quedarse corto. Crear/liberar/cambiar tamao usan la tabla de regiones para gestionar la zona asignada al proceso. Duplicar regin: crear regin nueva y copiar contenido. Limitaciones hardware impiden compartir memoria y detectar accesos errneos o desbordamiento de pila.
Proteccin:
mediante registros valla.
Compartir memoria:
no es posible
Soporte de regiones:
no existe se reserva espacio para huecos
Intercambio
Cuando no caben todos los programas en memoria principal. Uso de intercambio (swapping). Swap: particin de disco que almacena im genes de procesos. Swap out:
Cuando no caben en memoria procesos activos, se expulsa un proceso de memoria copiando su imagen a swap. Diversos criterios de seleccin al expulsar
Ej: Dependiendo de prioridad del proceso. Preferiblemente los bloqueados. No si est activo DMA sobre proceso
Intercambio
Swap in:
Cuando haya espacio en memoria principal, se lee proceso a memoria copiando imagen desde swap. Tambin cuando lleva un cierto tiempo expulsado.
Antes de swap in habr un swap out de otro proceso.
Usado en las primeras versiones de UNIX. Solucin general: Esquemas con Memoria Virtual.
Se usa integrado con intercambio.
Contenido
Objetivos del sistema de gestin de memoria. Modelo de memoria de un proceso. Esquemas de memoria basados en asignacin contigua. Memoria virtual. Archivos proyectados en memoria.
Jerarqua de Memoria
Elementos de informacin replicados en varios niveles de la jerarqua Problema de coherencia Migracin de informacin
Automtica Por demanda explcita.
Traduccin de direcciones
Jerarqua de Memoria
Migracin automtica:
Poltica de extraccin, ubicacin y reemplazo. Tamao de bloques. Poltica de actualizacin.
Parmetros:
Tasa de acierto del nivel k (Hrk). Depende de tamao de bloques, capacidad del
nivel k, polticas de reemplazo y ubicacin.
Tasa de fallos del nivel k (Frk = 1- Hrk) Tiempo medio de acierto (Tef). Depende del tiempo de acceso en caso de acierto, la penalizacin por fallo y Hrk.Es
un valor promedio
Memoria Virtual
Memoria Virtual
Beneficios:
Aumenta el grado de multiprogramacin. Permite ejecucin de programas que no caben en memoria principal.
Asignacin no contigua. Pginas(tamao potencia de 2) Mapa de memoria del proceso dividido en pginas. Memoria principal dividida en marcos de tamao igual al de las pginas. Direccin lgica: nmero de pgina + desplazamiento. Tabla de pginas (TP). Relaciona pgina con marco que la contiene. MMU usa TP para traducir direcciones lgicas a fsicas Tpicamente 2 TPs (de usuario y de sistema). Si mapa de E/S y memoria comn, direcciones lgicas de E/S en TP del sistema.
Esquema de traduccin
Contenido de entrada de TP
Tamao de la pgina
Condicionado por varios factores:
Potencia de 2 y mltiplo del tama o del bloque de disco. Mejor pequeo por:
Menor fragmentacin Se ajusta mejor al conjunto de trabajo.
Almacena una tabla de regiones por proceso. Mucho mayor gasto en tablas que con asignacin contigua, pero mucha mayor funcionalidad.
Valoracin de la paginacin
Proteccin:
mediante tabla de pginas
Compartir memoria:
entradas de la tabla de cada proceso corresponden con mismo marco.
Soporte de regiones:
bits de proteccin bits de validez. No hay espacio reservado para huecos.
Gasto de almacenamiento
Tablas muy grandes
Ejemplo: pgina 4K, dir. lgica 32 bits y cada entrada ocupa 4 bytes. Tamao TP= 220*4 = 4 MB/Proceso
Memoria asociativa con informacin de las ltimas pginas accedidas. Cach de entradas de la tabla de paginacin para esos accesos. Entradas en TLB pueden no incluir informacin sobre proceso (invalidar en cambio contexto) o clasificar por proceso (registro de procesador con id. de proceso actual). Gestionada por hardware.
MMU consulta TLB: Si hay fallo consulta la TP en memoria Casi transparente al S.O. Volcado e invalidacin.
Alternativa de bastante uso en la actualidad. El S.O. realiza parte de la gestin de la TLB. S.O. mantiene las tablas de pginas. MMU slo consulta el TLB. En caso de fallo de pgina se produce una excepcin. Se activa el sistema operativo. Se encarga de buscar la traduccin de la pgina solicitada y rellenar el TLB con la traduccin. Flexibilidad en diseo del S.O. frente a eficiencia.
Direccin lgica especifica la entrada a usar en cada nivel. Un campo por nivel + desplazamiento. Un acceso lgico implica M+1 accesos a memoria.
Uso de TLB
Ventajas adicionales:
Permite compartir tablas intermedias. Slo se requiere que est en memoria la TP de nivel superior
TPs restantes pueden estar en disco y traerse por demanda.
Procedimiento de traduccin:
MMU usa TLB convencional Si fallo en TLB, MMU busca traduccin en TP invertida.
Segmentacin
Esquema HW que intenta dar soporte directo a las regiones. Mapa memoria de proceso compuesta por segmentos. Cada regin un segmento. Generalizacin registros base y lmite (por segmento). Direccin lgica: n de segmento + direccin en segmento. MMU usa tabla de segmentos (TS) S.O. guarda una TS por segmento.
Cambio contexto notifica a MMU cul debe usar.
Entrada TS con registros base y lmite y proteccin RWX Fragmentacin externa: segmento es unidad de asignacin. S.O. mantiene informacin de huecos y zonas asignadas.
Valoracin de la segmentacin
Proteccin:
mediante tabla de segmentos
Compartir memoria:
compartir segmentos: misma entrada en distintas tablas de segmentos
Soporte de regiones:
bits de proteccin
Apenas usado.
Segmentacin paginada
Paginacin
Asignacin no contigua de segmento. Facilita el uso de esquemas de memoria virtual.
Proteccin:
mediante tabla de segmentos
Compartir memoria:
compartir segmentos: misma entrada en distintas tablas de segmentos
Soporte de regiones:
bits de proteccin
Prepaginacin: Pginas se traen por anticipado. En fallo de pgina se traen ms suponiendo que sern accedidas pronto.
Poltica de reemplazo.
Pgina que reemplazar si hubo fallo y no hay marcos libres. Reemplazo local: El marco seleccionado ha de estar asignado a ese mismo proceso. Reemplazo global: Puede seleccionar cualquier marco.
Algoritmos de reemplazo
Objetivo: Minimizar la tasa de fallos de pgina. Cada algoritmo descrito tiene versin local y global Algoritmos presentados:
ptimo FIFO Reloj (o segunda oportunidad). LRU LFU y MFU
Algoritmo ptimo
Criterio: pgina residente que tardar ms en accederse. Irrealizable. Versin local y global. Inters para estudios analticos comparativos.
Referencias: 1 0 1 2 3 4 0 1 0 2 0 3 0 3 4 3 0 1 1 1 0 0 0 2 3 4 1 1 2 3
0 4
0 4
Marcos:
Algoritmo FIFO
No es buena estrategia.
Pgina seleccionada puede seguir accedindose mucho. Criterio no basado en uso de pgina.
Anomala de Belady
En algunos ejemplos, al aumentar el nmero de marcos, aumenta el nmero de fallos de pgina.
Posible implementacin como lista circular con referencia a la primera pgina de la lista (como un reloj con la referencia como aguja).
Se considera tambin el bit de modificacin. Las pginas se clasifican en cuatro grupos segn el estado de los bits de referencia y modificacin (R, M)
(0,0) Mejor pgina que se puede reemplazar. (0,1) No tan buena porque se tendr que almacenar en disco. (1,0) Se us recientemente, pero no se ha modificado. (1,1) Se us y modific. Peor para reemplazar.
Se busca la primera pgina del mejor tipo posible (orden anterior). Puede ser necesario explorar la cola varias veces. Macintosh
Algoritmo LRU
Se basan en el nmero de ocasiones que han sido accedidas las pginas. Son difciles de implementar y no se aproximan al ptimo. LFU. Menos frecuentemente accedida. Reemplaza la pgina que se ha accedido en menos ocasiones.
Problema si una pgina se us mucho, pero nunca ms.
MFU. Ms frecuentemente accedida. Reemplaza la pgina que ms veces se accedi. Supone que la menos accedida se trajo hace poco a memoria.
Buffering de pginas
Alternativa: mantener una reserva de marcos libres Fallo de pgina: siempre usa marco libre (no reemplazo) Si nmero libres < umbral:
demonio de paginacin aplica repetidamente el algoritmo de reemplazo.
Pginas no modificadas pasan a lista de marcos libres. Pginas modificadas pasan a lista de marcos modificados. Se escribirn a disco (en tandas mejor rendimiento) y entonces pasan a listos.
Si se referencia una pgina de esas listas. Fallo de pgina la recupera de la lista. Para mejorar algoritmos malos.
Pginas marcadas como no reemplazables. Se aplica a las pginas del propio S.O. Generalmente el mapa de memoria del S.O. es fijo. Tambin cuando DMA sobre una pgina. Algunos sistemas ofrecen un servicio para que las aplicaciones fijen en memoria pginas de su mapa.
Adecuado para procesos de tiempo real. Puede afectar al rendimiento del sistema.
Nmero de marcos asignados al proceso (conjunto residente) es constante. Puede depender de las caractersticas del proceso (tamao, prioridad, ...) No se adapta a la evolucin del programa. Comportamiento relativamente predecible. Slo tiene sentido reemplazo local. Arquitectura define el nmero mnimo de marcos:
Instruccin capaz de generar mayor nmero fallos de pgina Por ejemplo MOVE /DIR1, /DIR2 requiere un mnimo de tres marcos. (Instruccin y dos operandos residentes).
Nmero de marcos asignados vara dependiendo de su comportamiento del proceso (y puede que de los otros). Asignacin dinmica + reemplazo local.
Proceso va aumentando o disminuyendo su conjunto residente Comportamiento relativamente predecible.
Hiperpaginacin (Thrashing)
Tasa excesiva de fallos de un proceso o en el sistema. Con asignacin fija: Hiperpaginacin en proceso P
Si conjunto residente de P < conjunto de trabajo de P+
Hiperpaginacin (Thrashing)
Asignacin dinmica con reemplazo local. Difcil implementacin estricta (HW especfico). Aproximaciones: Implementacin basada en controlar la tasa de fallos de pgina de cada proceso.
Preasignacin de espacio
Cuando se crea una regin se le asigna espacio en swap. Al expulsar una pgina siempre tiene espacio reservado. Permite detectar de forma sncrona la falta de espacio swap.
Creacin de regin
Al crear mapa inicial o por solicitud posterior.
Liberacin de regin
Al terminar el proceso o por solicitud posterior.
Duplicado de regin
Para sistemas operativos que generen procesos como copia de otros (fork).
Creacin de regin
Nueva regin no se le asigna memoria principal (carga por demanda) Pginas se marcan como invlidas (por no tener marco). S.O. actualiza tabla de regiones y entradas de tabla de pginas asociadas. Busca hueco en mapa para regin. Dependiendo del tipo de soporte:
En archivo: Pginas marcadas como cargar de archivo (CA). Se almacena direccin del bloque del archivo correspondiente. Sin soporte: Se marcan las pginas como rellenar con ceros (RC). Fallo de pgina no implica lectura del dispositivo.
Si privada y preasignacin swap, se reserva espacio de swap Pila. Se copian argumentos del programa en bloques swap.
Creacin de regin
Liberacin de regin
Actualizar tabla de regiones para eliminar regin. Marcar como invlidas pginas asociadas. Si regin privada, se libera espacio de swap La liberacin puede deberse a:
Solicitud explcita. Finalizacin de proceso Otras razones (exec de POSIX).
Cambio de tamao
Si aumenta tamao:
Comprobar no solapamiento, fijar nuevas pginas como no residentes con mismas caractersticas que la regin. Si preasignacin, se reserva espacio para pginas en swap.
Expansin automtica
Programa disminuye valor de SP y accede a zona expandida. Fallo de pgina que el sistema debe detectar como especial.
Expansin de pila:
S.O. verifica no solapamiento, marca pginas RC, privadas, RW. Si hay preasignacin, reserva espacio en swap.
Copy-onwrite
Implementacin de COW
Se comparten pginas de regiones duplicadas, pero:
Se marcan de slo lectura y con bit de COW. Primera escritura provoca un fallo de proteccin que se atiende y se genera una copia privada.
fork con COW. Se comparten todas las regiones. Las regiones privadas se marcan como COW en padre e hijo Resultado: En vez de duplicar espacio de memoria, slo se duplica la tabla de pginas.
Contenido
Objetivos del sistema de gestin de memoria. Modelo de memoria de un proceso. Esquemas de memoria basados en asignacin contigua. Memoria virtual. Archivos proyectados en memoria.
Cuando programa accede a posicin de memoria asociada a archivo, est accediendo al archivo.
Archivo proyectado