Sistemas Operativos Tema 8. Gestión De Memoria - University Of Las .

Transcription

Sistemas OperativosTema 8. Gestión de memoria 1998-2012 José Miguel Santos – Alexis Quesada – Francisco Santana –Belén Esteban1

Contenidosn n n n n n AntecedentesTécnicas básicas: recubrimientos,intercambioGestión de memoria contiguaSegmentaciónPaginaciónTécnicas mixtas2

Gestión de la memoriaAntecedentesn n n La memoria física es un conjunto de celdasreferenciables por medio de una dirección lineal(p.ej. de la 00000h a la FFFFFh)Para que un programa se ejecute, su código ysus datos necesitan estar cargados en memoria(al menos en parte)En un sistema multitarea, la memoria ha derepartirse entre los diferentes procesos3

Gestión de la memoriaAntecedentes (2)n n Las rutinas del sistema operativo tambiéndeberán residir en memoria, en todo o enpartePuede ser que la memoria principal no tengacapacidad suficiente para todos los procesosen ejecución4

Gestión de la memoriaObjetivo principaln Conseguir que varios procesos puedan ejecutarse deforma concurrente,q q q evitando los conflictos de usoprotegiendo al sistema operativoaprovechando eficazmente el espacio disponible:n Minimizar la memoria desaprovechadaq q q n q Evitar fragmentaciónMemoria ocupada por varias copias de un mismo objetoMemoria ocupada por las estructuras de datos necesarias para laoperación del gestor de memoriaCarga parcial de programassin perjudicar el rendimiento:n n Complejidad temporalTiempo de acceso a memoria5

Gestión de la memoriaObjetivo principal (2)n Un gestor de memoria ideal debería por tanto,q q q q minimizar la memoria desaprovechadatener una complejidad temporal mínimay presentar un recargo por acceso a memoria mínimoademás de proporcionar una buena protección y unacompartición flexible6

Ciclo de vida de un programaprograma fuentecompiladorcompilaciónmódulo objetootros objetosy bibliotecasenlazador(linker)programa ejecutablebibliotecasdel sistemabibliotecasdinámicascargadorcargaprograma y datosbinarios en memoriaHARDWAREejecución7

Conversión de direcciones:reubicaciónn n n El compilador traduce direcciones de memoriasimbólicas a direcciones binarias.Si las direcciones binarias son absolutas, elprograma sólo se puede ejecutar en una zonafija de la memoria: NO ES REUBICABLE.Ej.: los programas con formato .COM de MSDOS8

Conversión de direcciones:reubicación (2)n n Nos interesa que el compilador no generedirecciones definitivas, sino direccionesprovisionales, reubicables.Cuando se sepa dónde van a residir el código ylos datos, se convertirán a direccionesabsolutas.¿ En qué momento (etapa) se realiza estareubicación ?q q Carga (enlazador o cargador) à Reubicación estáticaEjecución (hardware) à Reubicación dinámica9

Reubicación dinámica:direcciones lógicas/direcciones físicasn n n n n Dirección física: la que llega al chip dememoriaDirección lógica o virtual: la generada porla CPUEl dispositivo que traduce direccionesvirtuales a físicas se llama unidad demanejo de memoria (MMU, en inglés)El espacio de direcciones lógicas y elespacio de direcciones físicas no tienen porqué coincidirEjemplo: registro base10

Espacios de direccionesFichero fuente(principal.cc)#include stream.h main(){int cont;.cont .}Fichero adosMemoria lógica delprocesoMemoria físicacódigodatosinicializadosdatos sininicializarMRProcesopilaEspacio de direccionessimbólicasEspacio de direcciones lógicas/físicas11

Direcciones lógicas/direccionesfísicasDirecciónlógica roladordediscoCPUdir. lógica1234 80000registro baseDirección físicaMMUdir. física81234memoria12

Carga dinámican Proceso se ejecuteq n Consecuencia:q n Código Datos à Memoria físicaTamaño de un proceso limitado al tamaño de lamemoria físicaCarga dinámicaq postergar la carga en memoria de un módulo hastaque el programa llame a alguna rutina del mismo13

Enlace dinámicon n n n Similar a la carga dinámica, pero efectuando el enlaceen tiempo de ejecución: bibliotecas dinámicas (DLL)La DLL se carga en memoria cuando algún procesollama a una de sus rutinas. Las llamadas a susfunciones se efectúan a través de una tabla de punteros.Si varios procesos emplean la biblioteca dinámica, sólose mantiene una copia de ella en memoria.Ejemplos de enlace dinámico:q q UNIX: shared libraries (shlib)Windows: dynamic load libraries (dll)14

Recubrimientos (overlays)n n n n Muchos programas no necesitan todo elcódigo al mismo tiempo, sino que seejecutan por fases (ej. un compilador)El programa se descompone en módulosseparados (recubrimientos), que secargan en un área de memoria al efectoSi se carga un recubrimiento, borra al quese encontraba ya cargadoEl programa de usuario es responsable decargar recubrimientos según se necesiten15

Recubrimientos (overlays) (2)rutinas ydatos comunesmanejador derecubrimientosfase 1fase 2(disponible pararecubrimientos)fase 316

Intercambio (swapping)n n Objetivo: cuando un proceso queda bloqueado o enespera, la memoria que ocupa podría desasignársele.Intercambio: Cuando un proceso pierde la CPU, sevuelca su imagen de la memoria al disco (swap out).Cuando se decide reanudar el proceso, se recuperasu imagen del disco (swap in)sistema operativoP1memoriapara usuariosP217

Intercambio (swapping) (2)n Problemas:q q n aumenta el tiempo de cambio de contextoE/S que accede por DMAMejoras:q q varios procesos en memoriaintercambio un proceso mientras se ejecuta otro18

Intercambio (swapping) (3)n ¿Qué se necesita para llevarlo a cabo?q q q q Proceso intercambiador (efectúa la mayoría de las funciones delPMP)Criterios para la elección de la víctima (política de swapping out)Criterios para elegir los procesos que entran (política deswapping in)Espacio en disco donde almacenar las imágenes de los procesosn n q Area específica para el intercambio (área de swap)Ficheros de intercambioCriterios para la gestión del espacio de intercambio (política degestión del área de swap)19

Intercambio (swapping) (4)n Otras consideraciones:q q q ¿ Operaciones de E/S pendientes ?Un proceso intercambiado, ¿ regresa al mismoespacio de memoria que ocupó previamente ?Versiones modificadas del intercambio estándar:n n UnixMicrosoft Windows 3.120

Gestión de memoria contiguan Caso trivial: una sola partición (sistemaoperativo área de usuario)q como mucho, utilizar un registro base para proteger alS.O.0Memoria físicaSORegistro baseProceso256K21

Gestión de memoria contiguan Evolución: particiones múltiplesq q particiones de tamaño fijo (MFT)particiones de tamaño variable (MVT)MFTMVTMemoria físicaMemoria físicaMemoria físicaSOSOSOPartición 1Partición 2Partición 3Partición 4Partición 1Partición 2Partición 3Partición 422

Memoria contigua: estructuras dedatosn Mecanismos de gestión de la memoria contiguaq q q Tabla de descripción de particiones (TDP)El S.O. gestionará una lista de huecos libres enmemoria y seleccionará qué procesos puedencargarse en memoria para ejecutarsePrimitivas internas de pedir y liberar memoria23

Memoria contigua: cómo reservarespacio a un proceson POLÍTICAS DE UBICACIÓNq El problema general se conoce como la gestión dememoria dinámican n n q q Primer hueco (first-fit)Mejor hueco (best-fit)Peor hueco (worst-fit)las políticas de “primer hueco” y “mejor hueco” sonsimilares en rendimiento; y mejores que la de “peorhueco”Otras políticas: siguiente ajuste, buddies24

Memoria contigua: protecciónn Pareja de registros base y límite500080000límiteCPUdir. lógica1234 síbase dir. física81234memorianoexcepciónMMU25

Memoria contigua: protecciónn Registrar los derechos de acceso en la propiamemoriaq A cada dirección se le añade un número de bits paraidentificar al propietarion n q q Problema: costosoMejora: asociar estos bits a bloques de memoria físicaComprobación: tiempo de ejecuciónSO à Clave “maestra” única que le da acceso sinrestricciones a todos los bloques de memoria26

Compartir zonas de memorian Confiar los objetos compartidos al SOq q Forma de acceder a estos objetos: llamadas alsistemaInconvenientes:n n SO grande y monolítico, lo que hace más difícil sudesarrollo, mantenimiento y verificaciónNo se podrían incorporar dinámicamente nuevos objetos(sólo permite la inclusión de nuevos objetos durante lageneración del sistema)27

Compartir zonas de memoria (2)n Mantener múltiples copias de los objetoscompartidosq q Redundancia à las modificaciones deben serpropagadas a todas las copias restantes (SOsería el encargado cada vez que se realice uncambio de contexto)Si se soporta intercambio, OJO, podrían existircopias de los objetos compartidos en disco28

Comparticiónn n Utilizar particiones de memoria compartidas(comunes)¿Protección?q Registros base/límite: requeriría conjuntos separadosde pares de registros base/limite dedicados paraacceder a los espacio de memoria privado ycompartidon Implica la existencia de algún mecanismo que indique encada acceso que conjunto de registros emplear29

Comparticiónn Claves de protección: requeriría controlar losbloques compartidos para que en losconmutaciones de contexto se cambien lasclaves de protecciónq n Necesidad de llevar la cuenta de que bloques estánsiendo compartidos y por quiénMVT Permite que particiones adyacentes enmemoria física puedan solaparseq Compartición de datos y código (dos procesos)30

La fragmentación de la memorian Es el gran problema de la memoria contiguaq q Fragmentación interna (MFT)Fragmentación externa (MVT)31

Fragmentación: solucionesn n n Permitir que un proceso puede ubicarse enzonas de memoria no necesariamente contiguasY si no se puede lo anterior à compactación¿Es posible siempre?q q Si la reubicación es estática y se efectúa durante elensamblado o la carga, no puede haber compactaciónEsta sólo es posible si la reubicación es dinámica y seefectúa en tiempo de ejecuciónn Sólo requiere mover el programa y los datos y modificar elregistro base para que refleje la nueva dirección base32

Compactaciónn Estrategia a seguirq Seleccionar una estrategia óptima de trasladosn q Reubicar todas las particiones en un extremo de lamemorian q Raras veces es implementado debido al gasto en que seincurre al evaluar las opcionesEl recargo por copia es generalmente más alto que el de untraslado más selectivoCompactación intercambion Copiar en disco los procesos que tienen que cambiar de lugar33

Segmentaciónn n Un programa se puede descomponer en variossegmentos de memoria (código, datos, pila.)Con el hardware adecuado, podemos ubicar esossegmentos en zonas de memoria no contiguas.T.seg.S1S3S234

Segmentación (2)n n n El compilador tiene que generar código quehaga referencias a direcciones de memoria condos componentes: segmento,desplazamiento El S.O. ubica cada segmento en un huecocontiguo de memoriaEl hardware se encarga de la reubicacióndinámica mediante una tabla de segmentos35

Hardware de segmentaciónTabla de segmentos(S)límiteSbaseDdir. lógicadir. físicasí DnoExcepción:dirección ilegal36

Tabla de segmentosn Registrosq n Problema: muchos segmentosMemoriaq q Registro base de la tabla de segmentos (RBTS)Registro de longitud de la tabla de segmentos (RLTS)37

Tabla de segmentosn Proceso de traducción: dirección lógica (s,d)q q q q n n Se comprueba que s RLTSSe calcula la dirección de la entrada de la tabla de segmentos(RBTS s) y se lee dicha entradaSe coteja el desplazamiento con la longitud del segmentoSe calcula la dirección física del byte deseado como la suma dela base del segmento y el desplazamientoProceso de traducción: requiere dos referencias amemoria por cada dirección lógicaSolución: usar un conjunto de registros asociativos paraguardar las entradas de la tabla de segmentos que seusaron mas recientemente38

Segmentación: ventajasn n n n Atenúa el problema de la fragmentaciónPermite definir protecciones selectivamentePermite compartición de zonas de memoriade forma eficazTodo ello sin añadir complejidad a losalgoritmos de gestión de espacio39

Segmentación: inconvenientesn n n n El compilador/enlazador debe reconocer unespacio segmentado (desventaja leve)Necesita soporte del hardwareIncurre en un acceso adicional a memoria(para la tabla de segmentos)No soluciona del todo los problemas de lastécnicas de ubicación contigua(fragmentación)40

Paginaciónn n n n n Técnica que soluciona la fragmentación externaLa idea: Trocear la memoria disponible en páginas detamaño fijo (ej. 4Kb). Un programa puede residir envarias páginas no contiguasLas páginas disponibles en memoria se llaman marcosde página (page frames).Toda dirección lógica se descompone en dos partes:número de página y desplazamiento.La MMU se encarga de asociar el número de páginalógico con el marco de página asignado. Para elloemplea una tabla de páginas.41

Paginación/Ejemplo42

Ejemplo de paginaciónUbicación de un proceso en memoria y creación de la tabla de páginas:tamaño de página 4kbytes, tamaño de la memoria 48kbytesMemoria m4m5m6m7m8m9m10m11Memoria física0Proceso 1 (10k)Pg0Pg1Pg24k8k 12k16kP1-Pg110k/4k 2.5 3 páginas24k28kTabla de páginasProceso 1Marco10320kP1-Pg2632k36k40k44k48k48k/4k 12 marcosS0SOP1-Pg0¡¡Fragmentacióninterna!!43

Paginación: gestión del espaciolibren n La gestión del espacio libre consistesimplemente en saber qué marcos están libresEl SO posee una tabla de marcos de páginas(TMP)q ¿Implementación?44

Paginación/Marcos Libres45

Paginación:traducción de direccionesTraducción de direcciones: direcciones de 16 bits y tamaño de página 4kbytes16-12 4bitsDesplazamientodentro de lapáginaNúmero de página00100000000001004k 21212 bitsDirección lógica:(8196)Tabla de PáginasMarco101000110110Marco de página0110000000000100Dirección física: (24580)46

Hardware de paginaciónTabla de páginas(P)CPUPdir. lógicaDFFDMemoriafísicadir. física47

Estructura de la tabla depáginasn n Depende del SODenominador comúnq n Una tabla de páginas para cada proceso¿cómo localiza el SO la tabla de páginas de unproceso?q BCPn n n Contador de instrucciones, registros, info. de E/S, etc. YPuntero a la tabla de páginas¿Qué ocurre en un cambio de contexto?q q Despachador cargará los registros con los valores del nuevoproceso yA partir de la tabla de páginas almacenada, cargará los valorescorrectos de la tabla de páginas en “hardware” !!48

Implementación en hardware de latabla de páginasn Conjunto de registros dedicadosq Ejemplo: Computador DEC PDP-11n la dirección consiste en 16 bits y el tamaño depágina es de 8k)16 bitsDirecciónn 3 bits13 bitsLa tabla de páginas consta por tanto de ochoentradas que se mantienen en registros rápidos49

Implementación en hardware de latabla de páginasn Esquema de registrosq n Problema: tablas de páginas grandesSoluciónq q Mantener la tabla de páginas en memoriaRegistro base de la tabla de páginas (RBTP)que apunta a la TPn n Cambio de contexto: más rápido (sólo cambiar elvalor de este registro)Gran inconveniente: tiempo de traducción50

PaginaciónTraducción de direcciones51

Implementación en hardware de latabla de páginasn Solución: usar un TLB (translation lookaheadbuffer)q q q Pequeño cache especial en hardwareCada registro consta de dos partes: clave y valorFuncionamiento:n q Se presenta una clave y, si encuentra algunacoincidencia, devuelve el valor correspondientePermite búsquedas rápidas pero el hardware escostoso52

TLB: cómo funcionan Funcionamiento: acceso posición iq q q Obtiene el número de página donde se encuentra iSi está en TLB à Obtenemos el marco de páginadonde se encuentrasino, acceso a la tabla de páginas y actualizar TLBn n Si TLB llena à Sustitución de una de las existentesOJO, cambio de contextoq Desalojar (borrar) el TLB53

TLB: esquema general54

TLB: tasa de aciertosn Tasa de aciertosq q q n porcentaje de las veces que un número de páginase encuentra en los registros asociativosrelacionada con el número de registros asociativos16-512 pueden obtenerse tasas de aciertosentre 80 y 98%.Ejemplosq q Motorola 68030 TLB de 22 entradasIntel 80486 TLB de 32 entradasn Sus fabricantes dicen que tiene una tasa de aciertos del98%55

Tabla de páginas invertidasn n Problema: tamaño que puede llegar a ocuparla tabla de páginasIdea: usar una tabla de páginas invertidaq q q Tiene una entrada por cada marco real de lamemoriaCada entrada consiste en la página virtualalmacenada en dicho marco y el proceso al quepertenecePor tanto, sólo hay una tabla de páginas en elsistema que contiene una entrada por cada marcode página56

Tabla de páginas invertida57

Tabla de páginas invertidan Ventajasq n Reduce la cantidad de memoria necesariaDesventajaq q Tiempo de búsqueda en la tabla de páginasinvertidaSoluciones:n n Tabla de dispersión (hash)Registros asociativos (caché)58

Paginación: inconvenientesn Pequeño inconveniente: fragmentación internaq ¿Tamaño de las páginas?n Pequeñoq q n Grandeq q n mejora fragmentación internaAumenta el tamaño de la tabla de páginaPeor desde el punto de vista de la fragmentación internaTamaño de las tablas de páginas menorTendencia en los últimos añosq q Aumentar a medida que los procesos, los conjuntos de datos y lamemoria principal se han vuelto más grandes2-4 Kbytes59

Paginación: protecciónn n Las páginas pueden tener asignados bits deprotección (ej. lectura, escritura, ejecución)Bit de validez/no validezq Indica si la página correspondiente está en elespacio de direcciones lógico del proceso y por tantoes válida60

Paginación: bit de validez61

Paginación: protección contraaccesos fuera de límitesn Un proceso casi nunca utiliza todo su intervalode direccionesq n En estos casos sería un desperdicio crear una tablade páginas con entradas para todas las páginas delintervalo de direccionesAlgunos sistemas: registro de longitud de latabla de páginas (RLTP)q Indica el tamaño de la tabla de páginas y se cotejacon cada dirección lógica para asegurar que ladirección esté en el intervalo válido para el proceso62

Compartición de páginasn n Varios procesos podrían tener la mismamemoria física apuntada en sus respectivastablas de páginasLa compartición de código exige que el códigosea reentrante, es decir, no puede modificarse así mismo63

Compartición de páginas64

Paginación de varios nivelesn n Sistemas modernos espacio dedirecciones lógico muy grande (232 a 264)Problema: tamaño de la tabla de páginasq q Por ejemplo, si tamaño de página es de 4k, unproceso podría requerir hasta 4 Mb de espaciofísico para la tabla de páginasSolución: paginar la tabla de páginas, teniendovarios niveles de páginas (ej. 80386)65

Paginación de varios niveles66

Paginación de varios niveles:80386Como máximo hay un total de :2(n1 n2) páginas por proceso2n2 entradas en cada tabla de páginas interior2n1 entradas en la tabla de páginas exterior2n1 tablas de páginas interiores67

Esquema combinadosegmentado/paginadon n La paginación y la segmentación puedencombinarse (ej. MULTICS, 80386).Motivación: aprovecharse de las ventajas queofrecen los esquemas por separadoq q Segmentación: flexibilidad y facilidad para laorganización lógicaPaginación: mejorar el problema de la fragmentación68

Esquema combinado segmentado/paginado: 8038669

Gestión de la memoria Antecedentes ! La memoria física es un conjunto de celdas referenciables por medio de una dirección lineal (p.ej. de la 00000h a la FFFFFh) ! Para que un programa se ejecute, su código y sus datos necesitan estar cargados en memoria (al menos en parte) ! En un sistema multitarea, la memoria ha de