Gestión de Memoria
Gestión de Memoria
Gestión de Memoria
- No se encontraron etiquetas…
¡Convierta sus PDFs en revista en línea y aumente sus ingresos!
Optimice sus revistas en línea para SEO, use backlinks potentes y contenido multimedia para aumentar su visibilidad y ventas.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Objetivos <strong>de</strong>l Gestor <strong>de</strong> <strong>Memoria</strong>• S.O. multiplexa recursos entre procesos.– Cada proceso cree que tiene una máquina para él solo.– Gestión <strong>de</strong> procesos: Reparto <strong>de</strong>l procesador.– Gestión <strong>de</strong> memoria: Reparto <strong>de</strong> memoria.• Objetivos:– Ofrecer a cada proceso un espacio lógico propio.– Proporcionar protección entre procesos.– Permitir que procesos compartan memoria.– Dar soporte a las regiones <strong>de</strong>l proceso.– Maximizar el grado <strong>de</strong> multiprogramación.– Proporcionar a los procesos mapas <strong>de</strong> memoria gran<strong>de</strong>s.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Espacios lógicos in<strong>de</strong>pendientes• No se conoce posición <strong>de</strong> memoria don<strong>de</strong> un programaejecutará.• Código en ejecutable genera referencias entre 0 y N.• Ejemplo: Programa que copia un vector.• Vector <strong>de</strong>stino a partir <strong>de</strong>dirección 2000.• Tamaño <strong>de</strong>l vector en dirección1500.• Vector origen a partir <strong>de</strong>dirección 1000.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Ejecución en S.O. monoprogramado• S.O. En direcciones altas.• Programa se carga en dirección 0.• Se le pasa el control al programa
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Reubicación• Necesaria en S.O. con multiprogramación:– Reubicar: Traducir direcciones <strong>de</strong> memoria lógicas a físicas.• Direcciones lógicas:Direcciones <strong>de</strong> memoria generadaspor el programa.• Direcciones físicas: Direcciones <strong>de</strong> memoria principalasignadas al proceso.• Traducción(pid, dirección lógica) --> dirección física.• Espacios lógicos (mapas) in<strong>de</strong>pendientes por proceso.• Reubicación pue<strong>de</strong> ser hardware o software.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Reubicación hardware• Hardware (MMU) encargado <strong>de</strong> la traducción.• El sistema operativo:– Almacena la función <strong>de</strong> traducción para cada proceso.– Indica al hardware qué función usar para un proceso.• El programa se carga en memoria sinmodificar.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Reubicación software• Traducción <strong>de</strong> direcciones durantela carga <strong>de</strong>l programa.• El programa en memoria esdistinto que el ejecutable.• Desventajas:– No asegura protección.– No permite mover programa entiempo <strong>de</strong> ejecución (seránecesario en memoria virtual).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Protección• Monoprogramación: Protección <strong>de</strong>l S.O.• Multiprogramación: A<strong>de</strong>más protección entre procesos.• Traducción <strong>de</strong>be crear espacios disjuntos.• Necesario validar todas las direcciones que genera elprograma:– Detección realizada por el hardware <strong>de</strong>l procesador.– Tratamiento por el sistema operativo.• Sistemas con mapa E/S y memoria común:– Traducción permite impedir que procesos accedandirectamente a dispositivos <strong>de</strong> E/S.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Compartimiento <strong>de</strong> memoria• Direcciones lógicas <strong>de</strong> dos o másprocesos se correspon<strong>de</strong>n conuna misma dirección física.• Bajo control <strong>de</strong>l S.O.• Beneficios:– Procesos ejecutando mismoprograma comparten código.– Mecanismo <strong>de</strong> comunicaciónentre procesos muy rápido.• Requiere asignación nocontigua.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Problemas al compartir memoria• Referencias <strong>de</strong> memoria <strong>de</strong>ntro<strong>de</strong> la propia zona compartida.• Ejemplo <strong>de</strong> código:– Instrucción <strong>de</strong> bifurcación enzona compartida.• Ejemplo con datos:– Lista con punteros en la zonacompartida.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Soporte <strong>de</strong> Regiones• Mapa <strong>de</strong> proceso no homogéneo.– Conjunto <strong>de</strong> regiones con distintas características.– Ejemplo: región <strong>de</strong> código no es modificable.• Mapa <strong>de</strong> proceso dinámico.– Regiones cambian <strong>de</strong> tamaño (por ejemplo: pila).– Se crean y <strong>de</strong>struyen regiones.– Existen zonas sin asignar (huecos).• Gestor <strong>de</strong> memoria <strong>de</strong>be proporcionar estas características– Detectar accesos no permitidos a una región.– Detectar acceso a huecos– Evitar reserva <strong>de</strong> espacio para huecos.• S.O. guarda tabla <strong>de</strong> regiones por proceso.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Maximizar rendimiento• Reparto <strong>de</strong> memoria maximizando grado <strong>de</strong>multiprogramación. Política <strong>de</strong> asignación.• Desperdicia memoria por “restos” inutilizables(fragmentación) y tablas necesarias para el gestor.• Compromiso: paginación.• Uso <strong>de</strong> memoria virtual para aumentar el grado <strong>de</strong>multiprogramación.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Mapas <strong>de</strong> memoria gran<strong>de</strong>s para procesos• Requisitos <strong>de</strong> memoria cada vez mayores segúnaparecen nuevas aplicaciones.• <strong>Memoria</strong> virtual aporta la solución.• Antes overlays:– Programa dividido en fases que se ejecutaban sucesivamente.– En cada momento una sola fase resi<strong>de</strong>nte en memoria.– Cada fase realiza su labor y carga la siguiente.– No es transparente: Labor realizada por el programador.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Contenido• Objetivos <strong>de</strong>l sistema <strong>de</strong> gestión <strong>de</strong> memoria.• Mo<strong>de</strong>lo <strong>de</strong> memoria <strong>de</strong> un proceso.• Esquemas <strong>de</strong> memoria basados en asignacióncontigua.• <strong>Memoria</strong> virtual.• Archivos proyectados en memoria.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Fases en generación <strong>de</strong> ejecutable• Aplicación: conjunto <strong>de</strong>módulos en lenguaje <strong>de</strong>alto nivel.• Procesado en dos fases:Compilación y montaje.• Compilación:– Resuelve referencias <strong>de</strong>ntro <strong>de</strong> cada módulo fuente.– Genera módulo objeto.• Montaje (o enlace):– Resuelve referencias entre módulos objeto.– Resuelve referencias a símbolos <strong>de</strong> referencia.– Genera ejecutable incluyendo biblioteca
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Bibliotecas <strong>de</strong> objetos• Biblioteca: Colección <strong>de</strong> módulos objeto relacionados.• Bibliotecas <strong>de</strong>l sistema o creadas por el usuario.• Bibliotecas Estáticas:– Montaje: Enlaza módulos objeto <strong>de</strong>l programa y lasbibliotecas.– Ejecutable autocontenido.• Desventajas <strong>de</strong>l montaje estático:– Ejecutables gran<strong>de</strong>s.– Código <strong>de</strong> función <strong>de</strong> biblioteca repetido en muchosejecutables.– Múltiples copias en memoria <strong>de</strong> función <strong>de</strong> biblioteca.– Actualización <strong>de</strong> biblioteca implica volver a montar.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Bibliotecas dinámicas• Carga y montaje <strong>de</strong> la biblioteca en tiempo <strong>de</strong> ejecución.• Ejecutable contiene:– Nombre <strong>de</strong> la biblioteca.– Rutina <strong>de</strong> carga y montaje en tiempo <strong>de</strong> ejecución.• Primera referencia a símbolo <strong>de</strong> biblioteca en ejecución:– Rutina carga y monta la biblioteca correspondiente.– Ajusta instrucción que realiza referencia para que próximasreferencias accedan al símbolo <strong>de</strong> la biblioteca• Problema: Se modifica el código <strong>de</strong>l programa.• Solución típica: Referencia indirecta mediante una tabla.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Ventajas <strong>de</strong> bibliotecas dinámicas• Ventajas:– Menor tamaño ejecutables.– Código <strong>de</strong> rutinas <strong>de</strong> bibliotecas sólo en archivo <strong>de</strong> biblioteca.– Procesos pue<strong>de</strong>n compartir código <strong>de</strong> biblioteca.– Actualización automática <strong>de</strong> bibliotecas: Uso <strong>de</strong> versiones.• Desventajas:– Mayor tiempo <strong>de</strong> ejecución <strong>de</strong>bido a carga y montaje• Tolerable: Compensado con el resto <strong>de</strong> las ventajas.– Ejecutable no autocontenido.• Uso <strong>de</strong> bibliotecas dinámicas es transparente– Mandatos <strong>de</strong> compilación y montaje como las estáticas.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Uso explícito <strong>de</strong> bibliotecas dinámicas• Forma <strong>de</strong> uso habitual:– Se especifica en tiempo <strong>de</strong> montaje qué biblioteca usar, pero sepospone su carga y montaje a tiempo <strong>de</strong> ejecución.• Uso explícito:– Requerido por aplicaciones que <strong>de</strong>terminan en tiempoejecución qué bibliotecas <strong>de</strong>ben usar.– No se especifica biblioteca en mandato <strong>de</strong> montaje.– Programa solicita carga <strong>de</strong> bibliotecas mediante servicio <strong>de</strong>lsistema (dlopen en UNIX y LoadLibrary en Win32).– Acceso “no” transparente a símbolos <strong>de</strong> la biblioteca:• Programa necesita usar servicios <strong>de</strong>l sistema para ello– dlsym en UNIX y GetProcAddress en Win32.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Formato <strong>de</strong>l ejecutable• Distintos fabricantes usan diferentes formatos– Ejemplo: En Linux Executable and Linkable Format (ELF)• Estructura: Cabecera y conjunto <strong>de</strong> secciones.• Cabecera:– Número mágico que i<strong>de</strong>ntifica a ejecutable.– Punto <strong>de</strong> entrada <strong>de</strong>l programa.– Tabla <strong>de</strong> secciones.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Formato <strong>de</strong>l ejecutable
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Secciones <strong>de</strong>l ejecutable• Diferentes tipos <strong>de</strong> secciones.• Las secciones más relevantes se volcarán en el mapa <strong>de</strong>memoria <strong>de</strong>l proceso:– Código(texto): contiene el código <strong>de</strong>l programa.– Datos con valor inicial: Variables globales inicializadas.– Datos sin valor inicial: Variables globales no inicializadas• Aunque aparece en la tabla <strong>de</strong> secciones no se almacena en el ejecutable(contenido no relevante).• No hay secciones vinculadas a variables locales.– Tienen carácter dinámico. En la pila cuando se invocan losprocedimientos.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Variables globales frente a variables locales• Variables globales– Estáticas– Se crean al iniciarse programa– Existen durante ejecución <strong>de</strong>l mismo– Dirección fija en memoria y en ejecutable• Variables locales y parámetros– Dinámicas.– Se crean al invocar la función.– Se <strong>de</strong>struyen al retornar.– La dirección se calcula en tiempo <strong>de</strong> ejecución.– Recursividad: varias instancias <strong>de</strong> una variable.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Variables globales frente a variables locales• Ejemplo:int x=8; /* Variable global con valor inicial */int y; /* Variable global sin valor inicial */f(int t){ /* Parámetro */int z; /* Variable local */…….}main(){…….}
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Mapa <strong>de</strong> memoria <strong>de</strong> un proceso• Mapa <strong>de</strong> memoria o imagen <strong>de</strong>l proceso: conjunto <strong>de</strong>regiones• Región:– Tiene asociada una información (un “objeto <strong>de</strong> memoria”)– Zona contigua tratada como unidad al proteger o compartir.• Cada región se caracteriza por:– dirección <strong>de</strong> comienzo y tamaño inicial.– soporte:don<strong>de</strong> se almacena su contenido inicial.– protección: RWX– uso compartido o privado– tamaño fijo o variable
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Crear mapa <strong>de</strong> memoria <strong>de</strong>s<strong>de</strong> ejecutable• Ejecución <strong>de</strong> un programa: Crea mapa a partir <strong>de</strong> ejecutable.– Regiones <strong>de</strong> mapa inicial correspon<strong>de</strong>n a secciones <strong>de</strong>l ejecutable.• Regiones– Código: Uso compartido, lectura y ejecución, tamaño fijo, soporteen archivo ejecutable.– Datos con valor inicial: Uso privado, lectura y escritura, tamaño fijoy soporte en archivo ejecutable.– Datos sin valor inicial. Uso privado, lectura y escritura, tamaño fijoy sin soporte (rellena con ceros en algunos lenguajes).– Pila: Privada, lectura y escritura, tamaño variable y sin soporte(rellena con 0). Crece hacia direcciones más bajas. La pila inicialsólo contiene argumentos que se le proporcionan al programa.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Crear mapa <strong>de</strong> memoria <strong>de</strong>s<strong>de</strong> ejecutable
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Otras regiones <strong>de</strong>l mapa <strong>de</strong> memoria• Durante la ejecución <strong>de</strong> un proceso se crean nuevasregiones:– Mapa <strong>de</strong> memoria tiene carácter dinámico.• Región <strong>de</strong> Heap.– Soporte <strong>de</strong> memoria dinámica. (malloc en C).– Uso privado, lectura y escritura, tamaño variable y sin soporte.– Crece hacia direcciones más altas.• Archivos proyectados– Región asociada al archivo.– Tamaño variable, soporte en archivo.– Protección y carácter compartido o privado especificado por elprograma al solicitar la proyección.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Otras regiones <strong>de</strong>l mapa <strong>de</strong> memoria• <strong>Memoria</strong> Compartida.– Región asociada a la zona <strong>de</strong> memoria compartida.– Uso compartido, tamaño variable, sin soporte.– La protección se especifica por el programa al proyectarla.• Pilas <strong>de</strong> Threads.– Cada pila correspon<strong>de</strong> con una región.– Mismas características que la pila <strong>de</strong> proceso.• Carga <strong>de</strong> biblioteca dinámica.– Regiones asociadas a los datos y código <strong>de</strong> la biblioteca.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Ejemplo <strong>de</strong> mapa <strong>de</strong> memoria <strong>de</strong> un proceso
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Operaciones sobre regiones• Sobre las regiones <strong>de</strong>l mapa <strong>de</strong> memoria se pue<strong>de</strong>n aplicarlas siguientes operaciones:– Crear región: Implícitamente, al crear el mapa inicial o por solicitud<strong>de</strong>l programa en tiempo <strong>de</strong> ejecución (por ejemplo: proyectar unarchivo).– Eliminar región: Implícitamente, al terminar el proceso o porsolicitud <strong>de</strong>l programa en tiempo <strong>de</strong> ejecución (por ejemplo:<strong>de</strong>sproyectar un archivo).– Cambiar tamaño <strong>de</strong> la región: Implícitamente para la pila o bajosolicitud <strong>de</strong>l programa en el heap.– Duplicar una región: Para el servicio FORK <strong>de</strong> POSIX (Duplicaríael mapa <strong>de</strong> memoria <strong>de</strong>l proceso padre).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Contenido• Objetivos <strong>de</strong>l sistema <strong>de</strong> gestión <strong>de</strong> memoria.• Mo<strong>de</strong>lo <strong>de</strong> memoria <strong>de</strong> un proceso.• Esquemas <strong>de</strong> memoria basados en asignacióncontigua.• <strong>Memoria</strong> virtual.• Archivos proyectados en memoria.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Asignación contigua• Mapa <strong>de</strong> proceso en zona contigua <strong>de</strong> memoriaprincipal.• Hardware requerido: Registros valla (Registro base ylímite).– Sólo accesibles en modo privilegiado.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Asignación contigua• Sistema Operativo mantiene información sobre:– Copia <strong>de</strong>l valor <strong>de</strong>l registro valla en el BCP <strong>de</strong> cada proceso.• En el cambio <strong>de</strong> contexto (al activar el proceso) se carga el valora<strong>de</strong>cuado en el registro.– Estado <strong>de</strong> ocupación <strong>de</strong> memoria.• Estructuras <strong>de</strong> datos que i<strong>de</strong>ntifican las zonas ocupadas y los huecos.– Regiones <strong>de</strong> cada proceso.• La asignación continua presenta fragmentaciónexterna:– Pequeños fragmentos libres entre zonas asignadas.– Posible solución: compactación. Proceso costoso y sólo conreubicación dinámica (hardware).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Política <strong>de</strong> asignación <strong>de</strong> espacios• ¿Qué hueco usar para satisfacer una petición?• Posibles políticas:– Primer ajuste: Asignar el primer hueco <strong>de</strong> suficiente tamaño.– Mejor ajuste: Asignar al menor hueco con tamaño suficiente.• Lista or<strong>de</strong>nada por tamaño o buscar en toda la lista.– Peor ajuste: Asignar el mayor hueco con tamaño suficiente.• Lista or<strong>de</strong>nada por tamaño o buscar en toda la lista.• Primer ajuste es más eficiente y proporciona buenaprovechamiento <strong>de</strong> la memoria.• Estrategia más sofisticada: Sistema Buddy– Listas <strong>de</strong> huecos con tamaños potencia <strong>de</strong> 2.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Operaciones sobre regiones: asignación contigua• Al crear proceso se le asigna zona <strong>de</strong> memoria <strong>de</strong>tamaño fijo.– Suficiente para regiones iniciales.– Con huecos para permitir cambio <strong>de</strong> tamaño y nuevasregiones (p.ej.: pilas <strong>de</strong> threads). Fragmentación interna.• Peligro <strong>de</strong> <strong>de</strong>sperdiciar espacio o quedarse corto.• Crear/liberar/cambiar tamaño usan la tabla <strong>de</strong> regionespara gestionar la zona asignada al proceso.• Duplicar región: crear región nueva y copiar contenido.• Limitaciones hardware impi<strong>de</strong>n compartir memoria y<strong>de</strong>tectar accesos erróneos o <strong>de</strong>sbordamiento <strong>de</strong> pila.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Valoración <strong>de</strong>l esquema <strong>de</strong> asignación contigua• Relación con los objetivos planteados:– Espacios in<strong>de</strong>pendientes para procesos:• mediante registros valla.– Protección:• mediante registros valla.– Compartir memoria:• no es posible– Soporte <strong>de</strong> regiones:• no existe• se reserva espacio para huecos– Maximizar rendimiento y mapas gran<strong>de</strong>s• mal aprovechamiento <strong>de</strong> memoria por fragmentación externa.• no permite memoria virtual (limitado a memoria física).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Intercambio• Cuando no caben todos los programas en memoriaprincipal.• Uso <strong>de</strong> intercambio (swapping).• Swap: partición <strong>de</strong> disco que almacena imágenes <strong>de</strong>procesos.• Swap out:– Cuando no caben en memoria procesos activos, se expulsa unproceso <strong>de</strong> memoria copiando su imagen a swap.– Diversos criterios <strong>de</strong> selección al expulsar• Ej: Dependiendo <strong>de</strong> prioridad <strong>de</strong>l proceso.• Preferiblemente los bloqueados. No si está activo DMA sobre proceso– No es necesario copiar todo el mapa (ni códigos ni huecos).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)• Swap in:Intercambio– Cuando haya espacio en memoria principal, se lee proceso amemoria copiando imagen <strong>de</strong>s<strong>de</strong> swap.– También cuando lleva un cierto tiempo expulsado.• Antes <strong>de</strong> swap in habrá un swap out <strong>de</strong> otro proceso.• Asignación <strong>de</strong> espacio en el dispositivo swap:– Con preasignación: se asigna espacio al crear el proceso.– Sin preasignación: se asigna espacio al expulsarlo.• Usado en las primeras versiones <strong>de</strong> UNIX.• Solución general: Esquemas con <strong>Memoria</strong> Virtual.– Se usa integrado con intercambio.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Contenido• Objetivos <strong>de</strong>l sistema <strong>de</strong> gestión <strong>de</strong> memoria.• Mo<strong>de</strong>lo <strong>de</strong> memoria <strong>de</strong> un proceso.• Esquemas <strong>de</strong> memoria basados en asignacióncontigua.• <strong>Memoria</strong> virtual.• Archivos proyectados en memoria.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Jerarquía <strong>de</strong> <strong>Memoria</strong>• Elementos <strong>de</strong> información replicados en varios niveles<strong>de</strong> la jerarquía• Problema <strong>de</strong> coherencia• Migración <strong>de</strong> información– Automática– Por <strong>de</strong>manda explícita.• Traducción <strong>de</strong> direcciones
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)• Migración automática:Jerarquía <strong>de</strong> <strong>Memoria</strong>– Política <strong>de</strong> extracción, ubicación y reemplazo. Tamaño <strong>de</strong>bloques. Política <strong>de</strong> actualización.• Parámetros:– Tasa <strong>de</strong> acierto <strong>de</strong>l nivel k (Hr k ). Depen<strong>de</strong> <strong>de</strong> tamaño <strong>de</strong>bloques, capacidad <strong>de</strong>l nivel k, políticas <strong>de</strong> reemplazo yubicación.– Tasa <strong>de</strong> fallos <strong>de</strong>l nivel k (Fr k = 1- Hr k )– Tiempo medio <strong>de</strong> acierto (Tef). Depen<strong>de</strong> <strong>de</strong>l tiempo <strong>de</strong>acceso en caso <strong>de</strong> acierto, la penalización por fallo y Hr k .Esun valor promedio
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)<strong>Memoria</strong> Virtual• <strong>Memoria</strong> virtual: El sistema operativo gestiona niveles<strong>de</strong> memoria principal y secundaria.– Transferencia <strong>de</strong> bloques entre ambos niveles.– De memoria secundaria a principal: por <strong>de</strong>manda.– De memoria principal a secundaria: por expulsión.• Aplicable porque procesos exhiben proximidad <strong>de</strong>referencias– Procesos sólo usan parte <strong>de</strong> su mapa en intervalo <strong>de</strong> tiempo.– <strong>Memoria</strong> Virtual: intenta que parte usada (conjunto <strong>de</strong>trabajo) resida en memoria principal (conjunto resi<strong>de</strong>nte).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)• Beneficios:<strong>Memoria</strong> Virtual– Aumenta el grado <strong>de</strong> multiprogramación.– Permite ejecución <strong>de</strong> programas que no caben en memoriaprincipal.• No a<strong>de</strong>cuada para sistemas <strong>de</strong> tiempo real.• Normalmente basada en paginación.– <strong>Memoria</strong> secundaria: dispositivo <strong>de</strong> paginación o <strong>de</strong> swap.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Paginación. Aspectos Hardware• Asignación no contigua. Páginas(tamaño potencia <strong>de</strong> 2)• Mapa <strong>de</strong> memoria <strong>de</strong>l proceso dividido en páginas.• <strong>Memoria</strong> principal dividida en marcos <strong>de</strong> tamaño igualal <strong>de</strong> las páginas.• Dirección lógica: número <strong>de</strong> página + <strong>de</strong>splazamiento.• Tabla <strong>de</strong> páginas (TP). Relaciona página con marcoque la contiene.• MMU usa TP para traducir direcciones lógicas a físicas• Típicamente 2 TPs (<strong>de</strong> usuario y <strong>de</strong> sistema).• Si mapa <strong>de</strong> E/S y memoria común, direcciones lógicas<strong>de</strong> E/S en TP <strong>de</strong>l sistema.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Esquema <strong>de</strong> traducción
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Fragmentación interna en paginación• <strong>Memoria</strong> asignada mayor que la requerida.– Pue<strong>de</strong> <strong>de</strong>sperdiciarse parte <strong>de</strong> un marco asignado.De media la mitad <strong>de</strong> una página (tolerable).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Contenido <strong>de</strong> entrada <strong>de</strong> TP• Número <strong>de</strong> marco asociado.• Información <strong>de</strong> protección (RWX)– Si se intenta una operación no permitida se lanza excepción.• Bit <strong>de</strong> página válida / inválida.– Si se acce<strong>de</strong> a inválida se lanza excepción.– Usado en memoria principal para indicar si página presente.• Bit <strong>de</strong> página accedida y bit <strong>de</strong> página modificada.– Activados por la MMU cuando se acce<strong>de</strong> o modifica lapágina respectivamente.• Bit <strong>de</strong> <strong>de</strong>sactivación <strong>de</strong> caché,– Usada, por ejemplo, con el mapa <strong>de</strong> entrada / salida.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Tamaño <strong>de</strong> la página• Condicionado por varios factores:– Potencia <strong>de</strong> 2 y múltiplo <strong>de</strong>l tamaño <strong>de</strong>l bloque <strong>de</strong> disco.– Mejor pequeño por:• Menor fragmentación• Se ajusta mejor al conjunto <strong>de</strong> trabajo.– Mejor gran<strong>de</strong> por:• Tablas más pequeñas• Mejor rendimiento <strong>de</strong>l dispositivo <strong>de</strong> E/S (acceso a disco).– Compromiso (entre 2KB y 16KB)
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Gestión <strong>de</strong>l sistema operativo• Mantiene una TP por proceso.– Al cambiar <strong>de</strong> contexto notifica a la MMU cuál usar.• Una única TP para el propio sistema operativo.– Proceso en modo sistema acce<strong>de</strong> directamente a su mapa y alsistema operativo.• Mantiene tabla <strong>de</strong> marcos:– Estado <strong>de</strong> cada marco (libre / ocupado).• Almacena una tabla <strong>de</strong> regiones por proceso.• Mucho mayor gasto en tablas que con asignacióncontigua, pero mucha mayor funcionalidad.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Valoración <strong>de</strong> la paginación• Relación con los objetivos planteados:– Espacios in<strong>de</strong>pendientes para procesos:• mediante tabla <strong>de</strong> páginas.– Protección:• mediante tabla <strong>de</strong> páginas– Compartir memoria:• entradas <strong>de</strong> la tabla <strong>de</strong> cada proceso correspon<strong>de</strong>n con mismo marco.– Soporte <strong>de</strong> regiones:• bits <strong>de</strong> protección• bits <strong>de</strong> vali<strong>de</strong>z. No hay espacio reservado para huecos.– Maximizar rendimiento y mapas gran<strong>de</strong>s• permite esquemas <strong>de</strong> memoria virtual.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Implementación <strong>de</strong> la tabla <strong>de</strong> páginas• Se mantiene, normalmente, en memoria principal.• 2 problemas: eficiencia y gasto <strong>de</strong> almacenamiento.• Eficiencia:– Cada acceso lógico requiere dos accesos a memoria principal.Primero a tabla <strong>de</strong> páginas y luego al dato o instrucción.– Solución: cache <strong>de</strong> direcciones. TLB• Gasto <strong>de</strong> almacenamiento– Tablas muy gran<strong>de</strong>s• Ejemplo: página 4K, dir. lógica 32 bits y cada entrada ocupa 4 bytes.Tamaño TP= 2 20 *4 = 4 MB/Proceso– Solución: tablas multinivel o tablas invertidas.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Translation Lookasi<strong>de</strong> buffer (TLB)• <strong>Memoria</strong> asociativa con información <strong>de</strong> las últimaspáginas accedidas. Caché <strong>de</strong> entradas <strong>de</strong> la tabla <strong>de</strong>paginación para esos accesos.• Entradas en TLB pue<strong>de</strong>n no incluir información sobreproceso (invalidar en cambio contexto) o clasificar porproceso (registro <strong>de</strong> procesador con id. <strong>de</strong> procesoactual).• Gestionada por hardware.– MMU consulta TLB: Si hay fallo consulta la TP en memoria– Casi transparente al S.O. Volcado e invalidación.• Diseño alternativo: TLB gestionada por software.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)TLB gestionada por software• Alternativa <strong>de</strong> bastante uso en la actualidad. El S.O.realiza parte <strong>de</strong> la gestión <strong>de</strong> la TLB.• S.O. mantiene las tablas <strong>de</strong> páginas.• MMU sólo consulta el TLB.• En caso <strong>de</strong> fallo <strong>de</strong> página se produce una excepción.Se activa el sistema operativo.• Se encarga <strong>de</strong> buscar la traducción <strong>de</strong> la páginasolicitada y rellenar el TLB con la traducción.• Flexibilidad en diseño <strong>de</strong>l S.O. frente a eficiencia.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Tabla <strong>de</strong> páginas multinivel• Tabla organizada en varios niveles (M):– Entrada <strong>de</strong> nivel K apunta a la tabla <strong>de</strong> nivel K+1.– Entrada <strong>de</strong> último nivel apunta a marco <strong>de</strong> página.• Dirección lógica especifica la entrada a usar en cadanivel. Un campo por nivel + <strong>de</strong>splazamiento.• Un acceso lógico implica M+1 accesos a memoria.– Uso <strong>de</strong> TLB• Si todas las entradas <strong>de</strong> una tabla son inválidas– No se almacena la tabla.– Se pone inválida la entrada correspondiente <strong>de</strong> la TPsuperior.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Esquema <strong>de</strong> traducción con 2 niveles
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Ventajas <strong>de</strong> tabla multinivel• Si proceso usa una parte pequeña <strong>de</strong> su espacio lógico– Ahorro en espacio para almacenar TPs• Ejemplo: Proceso que usa 12MB superiores y 4MBinferiores.– 2 Niveles, páginas <strong>de</strong> 4K, dir. lógica 32 bits (10 bits pornivel) y 4 bytes por entrada• Tamaño: 1 TP N 1+ 4 TP N 2= 5 * 4KB = 20KB (frente a 4 MB)• Ventajas adicionales:– Permite compartir tablas intermedias.– Sólo se requiere que esté en memoria la TP <strong>de</strong> nivel superior• TPs restantes pue<strong>de</strong>n estar en disco y traerse por <strong>de</strong>manda.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Ventajas <strong>de</strong> tabla multinivel
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Tabla <strong>de</strong> páginas invertida• Procesadores actuales espacio lógico enorme(direcciones <strong>de</strong> 64 bits)– TPs muy gran<strong>de</strong>s incluso usando multinivel.• Posible solución alternativa: Uso <strong>de</strong> TPs invertidas.– Una entrada por cada marco indica página almacenada en él.• Tamaño <strong>de</strong> TP proporcional a memoria principal.– Necesario guardar número <strong>de</strong> página e id. <strong>de</strong> proceso.• Procedimiento <strong>de</strong> traducción:– MMU usa TLB convencional– Si fallo en TLB, MMU busca traducción en TP invertida.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Tabla <strong>de</strong> páginas invertida• Para evitar búsquedasecuencial: tabla hash.• Difícil compartirmemoria.• TP pequeña. S.O.<strong>de</strong>be guardarinformación <strong>de</strong>páginas no resi<strong>de</strong>ntesen memoria.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Segmentación• Esquema HW que intenta dar soporte directo a las regiones.• Mapa memoria <strong>de</strong> proceso compuesta por segmentos. Cadaregión un segmento.• Generalización registros base y límite (por segmento).• Dirección lógica: nº <strong>de</strong> segmento + dirección en segmento.• MMU usa tabla <strong>de</strong> segmentos (TS)• S.O. guarda una TS por segmento.– Cambio contexto notifica a MMU cuál <strong>de</strong>be usar.• Entrada TS con registros base y límite y protección RWX• Fragmentación externa: segmento es unidad <strong>de</strong> asignación.• S.O. mantiene información <strong>de</strong> huecos y zonas asignadas.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Esquema <strong>de</strong> traducción con segmentación
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Valoración <strong>de</strong> la segmentación• Relación con los objetivos planteados:– Espacios in<strong>de</strong>pendientes para procesos:• mediante tabla <strong>de</strong> segmentos– Protección:• mediante tabla <strong>de</strong> segmentos– Compartir memoria:• compartir segmentos: misma entrada en distintas tablas <strong>de</strong> segmentos– Soporte <strong>de</strong> regiones:• bits <strong>de</strong> protección– Maximizar rendimiento y mapas gran<strong>de</strong>s• no facilita uso <strong>de</strong> memoria virtual por segmentos con tamaño variable.• presenta fragmentación externa.• Apenas usado.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Segmentación paginada• Entrada en TS apunta a una TP para el segmento.• Ventajas <strong>de</strong> ambos esquemas.• Segmentación– Soporte directo a regiones <strong>de</strong>l proceso– Facilita operaciones sobre regiones:• Establecer protección: Modificar sólo una entrada <strong>de</strong> TS.• Compartir segmento: Entradas <strong>de</strong> TS apuntando a misma TP.• Paginación– Asignación no contigua <strong>de</strong> segmento.– Facilita el uso <strong>de</strong> esquemas <strong>de</strong> memoria virtual.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Esquema <strong>de</strong> traducción: segmentación paginada
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Valoración <strong>de</strong> la segmentación paginada• Relación con los objetivos planteados:– Espacios in<strong>de</strong>pendientes para procesos:• mediante tabla <strong>de</strong> segmentos– Protección:• mediante tabla <strong>de</strong> segmentos– Compartir memoria:• compartir segmentos: misma entrada en distintas tablas <strong>de</strong> segmentos– Soporte <strong>de</strong> regiones:• bits <strong>de</strong> protección– Maximizar rendimiento y mapas gran<strong>de</strong>s• permite esquemas <strong>de</strong> memoria virtual• Frente a paginación: Facilita gestión <strong>de</strong> regiones, perocon HW más complejo.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Paginación por <strong>de</strong>manda• Segmentación pura no a<strong>de</strong>cuada para memoria virtual.– Tamaño <strong>de</strong> segmentos variable.• Paginación y segmentación paginada sí lo son:– Bloque transferido: página.– M. Virtual + paginación: paginación por <strong>de</strong>manda.• Estrategia <strong>de</strong> implementación: Uso <strong>de</strong>l bit <strong>de</strong> vali<strong>de</strong>z.– Página no resi<strong>de</strong>nte se marca como no válida.– En acceso: Excepción <strong>de</strong> fallo <strong>de</strong> página• S.O. trae página correspondiente <strong>de</strong> memoria secundaria.• S.O. <strong>de</strong>be diferenciar entre página no resi<strong>de</strong>nte e inválida (hueco).• Prepaginación: Páginas se traen por anticipado. En fallo <strong>de</strong>página se traen más suponiendo que serán accedidas pronto.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Tratamiento <strong>de</strong> fallo <strong>de</strong> página• Tratamiento <strong>de</strong> excepción (dirección <strong>de</strong> fallo disponibleen registro)– Dirección inválida: Aborta proceso o manda señal.– Si no hay marcos libres (tabla marcos): selecciona cuál reemplazará(algoritmo), la marca inválida y si está modificada la guarda enmemoria secundaria.– Hay marco libre (o se ha liberado):• Lee la página al marco seleccionado• Marca válida la entrada <strong>de</strong> página referenciando al marco.• Establece el marco como ocupado si no lo estaba (tabla <strong>de</strong> marcos).• Fallo <strong>de</strong> página pue<strong>de</strong> implicar dos operaciones endisco.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Políticas <strong>de</strong> administración <strong>de</strong> memoria virtual• Política <strong>de</strong> reemplazo.– Página que reemplazar si hubo fallo y no hay marcos libres.– Reemplazo local: El marco seleccionado ha <strong>de</strong> estar asignadoa ese mismo proceso.– Reemplazo global: Pue<strong>de</strong> seleccionar cualquier marco.• Política <strong>de</strong> asignación <strong>de</strong> espacio a los procesos.– Repartición <strong>de</strong> marcos entre procesos.– Asignación fija o dinámica.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Algoritmos <strong>de</strong> reemplazo• Objetivo: Minimizar la tasa <strong>de</strong> fallos <strong>de</strong> página.• Cada algoritmo <strong>de</strong>scrito tiene versión local y global• Algoritmos presentados:– Óptimo– FIFO– Reloj (o segunda oportunidad).– LRU– LFU y MFU• Uso <strong>de</strong> técnicas <strong>de</strong> buffering <strong>de</strong> páginas.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Algoritmo óptimo• Criterio: página resi<strong>de</strong>nte que tardará más en acce<strong>de</strong>rse.• Irrealizable.• Versión local y global.• Interés para estudios analíticos comparativos.Referencias: 1 0 1 2 3 4 0 1 0 2 0 3 0 3 4 3 0Marcos: 1 11112300000023444
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Algoritmo FIFO• Criterio: página que lleva más tiempo resi<strong>de</strong>nte.• Fácil implementación.– Páginas resi<strong>de</strong>ntes en or<strong>de</strong>n FIFO. Se expulsa la primera.– No necesita el bit <strong>de</strong> página accedida.• No es buena estrategia.– Página seleccionada pue<strong>de</strong> seguir accediéndose mucho.– Criterio no basado en uso <strong>de</strong> página.• Anomalía <strong>de</strong> Belady– En algunos ejemplos, al aumentar el número <strong>de</strong> marcos,aumenta el número <strong>de</strong> fallos <strong>de</strong> página.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Algoritmo <strong>de</strong>l reloj (o 2ª oportunidad)• FIFO + uso <strong>de</strong> bit <strong>de</strong> referencia <strong>de</strong> página accedida.• Criterio:– Si página elegida por FIFO no tiene activo el bit <strong>de</strong> referencia• Se expulsa.– Si está activo (2ª oportunidad)• Se <strong>de</strong>sactiva el bit.• Se pone la página al final <strong>de</strong> la FIFO.• Se pasa a la siguiente página.• Posible implementación como lista circular conreferencia a la primera página <strong>de</strong> la lista (como un relojcon la referencia como aguja).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Algoritmo <strong>de</strong>l reloj mejorado• Se consi<strong>de</strong>ra también el bit <strong>de</strong> modificación.• Las páginas se clasifican en cuatro grupos según elestado <strong>de</strong> los bits <strong>de</strong> referencia y modificación (R, M)– (0,0) Mejor página que se pue<strong>de</strong> 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 página <strong>de</strong>l mejor tipo posible(or<strong>de</strong>n anterior). Pue<strong>de</strong> ser necesario explorar la colavarias veces.• Macintosh
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Algoritmo LRU• Criterio: Página resi<strong>de</strong>nte usada hace más tiempo.• Por proximidad <strong>de</strong> referencias:– Pasado reciente condiciona futuro próximo.• Difícil implementación estricta (hay aproximaciones).• Posible implementación con HW específico.– En entrada <strong>de</strong> TP hay un contador.– Cada acceso a memoria, MMU copia contador <strong>de</strong>l sistema.– Reemplazo: Página con contador más bajo
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Algoritmos LFU y MFU• Se basan en el número <strong>de</strong> ocasiones que han sidoaccedidas las páginas. Son difíciles <strong>de</strong> implementar yno se aproximan al óptimo.• LFU. Menos frecuentemente accedida. Reemplaza lapágina que se ha accedido en menos ocasiones.– Problema si una página se usó mucho, pero nunca más.• MFU. Más frecuentemente accedida. Reemplaza lapágina que más veces se accedió. Supone que la menosaccedida se trajo hace poco a memoria.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Buffering <strong>de</strong> páginas• Peor caso en tratamiento <strong>de</strong> fallo <strong>de</strong> página:– 2 accesos a dispositivo.• Alternativa: mantener una reserva <strong>de</strong> marcos libres• Fallo <strong>de</strong> página: siempre usa marco libre (no reemplazo)• Si número libres < umbral:– “<strong>de</strong>monio <strong>de</strong> paginación” aplica repetidamente el algoritmo<strong>de</strong> reemplazo.• Páginas no modificadas pasan a lista <strong>de</strong> marcos libres.• Páginas modificadas pasan a lista <strong>de</strong> marcos modificados. Seescribirán a disco (en tandas mejor rendimiento) y entonces pasan alistos.• Si se referencia una página <strong>de</strong> esas listas. Fallo <strong>de</strong> página larecupera <strong>de</strong> la lista. Para mejorar algoritmos “malos”.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Retención <strong>de</strong> páginas en memoria• Páginas marcadas como no reemplazables.• Se aplica a las páginas <strong>de</strong>l propio S.O. Generalmente elmapa <strong>de</strong> memoria <strong>de</strong>l S.O. es fijo.• También cuando DMA sobre una página.• Algunos sistemas ofrecen un servicio para que lasaplicaciones fijen en memoria páginas <strong>de</strong> su mapa.– A<strong>de</strong>cuado para procesos <strong>de</strong> tiempo real.– Pue<strong>de</strong> afectar al rendimiento <strong>de</strong>l sistema.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Estrategia <strong>de</strong> asignación fija• Número <strong>de</strong> marcos asignados al proceso (conjuntoresi<strong>de</strong>nte) es constante.• Pue<strong>de</strong> <strong>de</strong>pen<strong>de</strong>r <strong>de</strong> las características <strong>de</strong>l proceso(tamaño, prioridad, ...)• No se adapta a la evolución <strong>de</strong>l programa.• Comportamiento relativamente pre<strong>de</strong>cible.• Sólo tiene sentido reemplazo local.• Arquitectura <strong>de</strong>fine el número mínimo <strong>de</strong> marcos:– Instrucción capaz <strong>de</strong> generar mayor número fallos <strong>de</strong> página– Por ejemplo MOVE /DIR1, /DIR2 requiere un mínimo <strong>de</strong> tresmarcos. (Instrucción y dos operandos resi<strong>de</strong>ntes).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Estrategia <strong>de</strong> asignación dinámica• Número <strong>de</strong> marcos asignados varía <strong>de</strong>pendiendo <strong>de</strong> sucomportamiento <strong>de</strong>l proceso (y pue<strong>de</strong> que <strong>de</strong> los otros).• Asignación dinámica + reemplazo local.– Proceso va aumentando o disminuyendo su conjunto resi<strong>de</strong>nte– Comportamiento relativamente pre<strong>de</strong>cible.• Asignación dinámica + reemplazo global.– Procesos se quitan las páginas entre ellos.– Comportamiento difícilmente pre<strong>de</strong>cible (tasa <strong>de</strong> fallos<strong>de</strong>pen<strong>de</strong> <strong>de</strong> característica <strong>de</strong> otros procesos).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Hiperpaginación (Thrashing)• Tasa excesiva <strong>de</strong> fallos <strong>de</strong> un proceso o en el sistema.• Con asignación fija: Hiperpaginación en proceso P– Si conjunto resi<strong>de</strong>nte <strong>de</strong> P < conjunto <strong>de</strong> trabajo <strong>de</strong> P+• Con asignación variable: Hiperpaginación en sistema:– Si nº <strong>de</strong> marcos disponibles < suma <strong>de</strong> conjuntos <strong>de</strong> trabajo– Grado <strong>de</strong> utilización <strong>de</strong>l procesador cae drásticamente.– Procesos están casi siempre en colas <strong>de</strong> dispositivo <strong>de</strong>paginación.– Solución (similar al swapping): Control <strong>de</strong> carga• disminuir el grado <strong>de</strong> multiprogramación.• Suspen<strong>de</strong>r 1 o más procesos liberando sus páginas resi<strong>de</strong>ntes.– Problema para <strong>de</strong>tectar esta situación
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Hiperpaginación (Thrashing)
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Estrategia <strong>de</strong>l conjunto <strong>de</strong> trabajo• Intenta conocer el conjunto <strong>de</strong> trabajo <strong>de</strong> cada proceso– páginas usadas por el proceso en las últimas N referencias.– N es la ventana <strong>de</strong>l conjunto <strong>de</strong> trabajo.• Si el conjunto <strong>de</strong> trabajo <strong>de</strong>crece, se liberan marcos.• Si crece, se asignan nuevos marcos.– Si no hay disponibles, suspen<strong>de</strong>r uno o más procesos.– Se reactivan cuando haya marcos suficientes para el conjunto<strong>de</strong> trabajo.• Asignación dinámica con reemplazo local.• Difícil implementación estricta (HW específico).• Aproximaciones: Implementación basada en controlar latasa <strong>de</strong> fallos <strong>de</strong> página <strong>de</strong> cada proceso.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Estrategia basada en frecuencia <strong>de</strong> fallos• Si tasa < límite inferior, se liberan marcos aplicando unalgoritmo <strong>de</strong> reemplazo.• Si tasa > límite superior se asignan nuevos marcos. Sino hay libres se suspen<strong>de</strong> algún proceso.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Control <strong>de</strong> carga y reemplazo global• Algoritmos <strong>de</strong> reemplazo global no controlanhiperpaginación.– Necesitan cooperar con uno <strong>de</strong> control <strong>de</strong> carga• Ejemplo Unix BSD:– Reemplazo global con algoritmo reloj (dos manecillas).– Buffering <strong>de</strong> páginas.– Si nº marcos libres < umbral, el <strong>de</strong>monio <strong>de</strong> paginación aplicareemplazo.– Si se repite con frecuencia la falta <strong>de</strong> marcos libres: Procesoswapper suspen<strong>de</strong> procesos.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Dispositivo <strong>de</strong> paginación (swap)• Preasignación <strong>de</strong> espacio– Cuando se crea una región se le asigna espacio en swap.– Al expulsar una página siempre tiene espacio reservado.– Permite <strong>de</strong>tectar <strong>de</strong> forma síncrona la falta <strong>de</strong> espacio swap.• Sin preasignación <strong>de</strong> espacio.– No se asigna espacio en swap al crear la región.– En primera expulsión se le asigna espacio en swap.– Página que nunca se expulsa no gasta espacio en swap– Mejor aprovechamiento <strong>de</strong> espacio <strong>de</strong> almacenamiento
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Dispositivo <strong>de</strong> paginación (swap)• Mientras no se modifique la página no va a swap.• Regiones compartidas no suelen usar swap.• Algunos sistemas permiten añadir dispositivos <strong>de</strong> swap<strong>de</strong> forma dinámica o utilizar archivos como swap.– Acceso a archivos más lento que a dispositivos.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Operaciones sobre regiones <strong>de</strong> memoria virtual• Creación <strong>de</strong> región– Al crear mapa inicial o por solicitud posterior.• Liberación <strong>de</strong> región– Al terminar el proceso o por solicitud posterior.• Cambio <strong>de</strong> tamaño <strong>de</strong> región– Del heap o <strong>de</strong> la pila• Duplicado <strong>de</strong> región– Para sistemas operativos que generen procesos como copia <strong>de</strong>otros (fork).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Creación <strong>de</strong> región• Nueva región no se le asigna memoria principal (carga por<strong>de</strong>manda)• Páginas se marcan como inválidas (por no tener marco).• S.O. actualiza tabla <strong>de</strong> regiones y entradas <strong>de</strong> tabla <strong>de</strong>páginas asociadas. Busca hueco en mapa para región.• Dependiendo <strong>de</strong>l tipo <strong>de</strong> soporte:– En archivo: Páginas marcadas como “cargar <strong>de</strong> archivo” (CA). Sealmacena dirección <strong>de</strong>l bloque <strong>de</strong>l archivo correspondiente.– Sin soporte: Se marcan las páginas como “rellenar con ceros” (RC).Fallo <strong>de</strong> página no implica lectura <strong>de</strong>l dispositivo.• Si privada y preasignación swap, se reserva espacio <strong>de</strong> swap• Pila. Se copian argumentos <strong>de</strong>l programa en bloques swap.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Creación <strong>de</strong> región• Una vez creada región, cuando se expulsa páginamodificada:– Si región privada: Se escribe página en swap. Posterioresfallos se sirven <strong>de</strong> ese bloque.– Si región compartida, se escribe página en soporte. Los fallosse sirven <strong>de</strong>l soporte.• En creación <strong>de</strong> mapa inicial:– Se crean regiones según sus características.• Código (CA, Compartida, RX), datos valor inicial (CA, Privada, RW),datos sin valor inicial (RC, Privada, RW), pila inicial (contenidoinicial en swap).– Huecos se marcan como inválidos también para S.O.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Creación <strong>de</strong>l mapa inicial
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Liberación <strong>de</strong> región• Actualizar tabla <strong>de</strong> regiones para eliminar región.• Marcar como inválidas páginas asociadas.• Si región privada, se libera espacio <strong>de</strong> swap• La liberación pue<strong>de</strong> <strong>de</strong>berse a:– Solicitud explícita.– Finalización <strong>de</strong> proceso– Otras razones (exec <strong>de</strong> POSIX).
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Cambio <strong>de</strong> tamaño• Si disminuye, similar a liberación, pero sólo parteafectada.– Ajusta tabla regiones, marca páginas como inválidas y liberaswap.• Si aumenta tamaño:– Comprobar no solapamiento, fijar nuevas páginas como noresi<strong>de</strong>ntes con mismas características que la región. Sipreasignación, se reserva espacio para páginas en swap.• Expansión <strong>de</strong>l heap:– Solicitada por programa mediante servicio <strong>de</strong>l S.O.– Marca las páginas correspondientes como RC, privadas, RW.• Expansión <strong>de</strong> pila más compleja: es “automática”
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Expansión <strong>de</strong> la región <strong>de</strong> pila• Expansión “automática”– Programa disminuye valor <strong>de</strong> SP y acce<strong>de</strong> a zona expandida.Fallo <strong>de</strong> página que el sistema <strong>de</strong>be <strong>de</strong>tectar como especial.• Tratamiento <strong>de</strong> fallo <strong>de</strong> página– Si dirección realmente inválida• Si dirección < SP. Aborta proceso o le manda señal.• Si no, expansión <strong>de</strong> pila.• Expansión <strong>de</strong> pila:– S.O. verifica no solapamiento, marca páginas RC, privadas,RW. Si hay preasignación, reserva espacio en swap.• Siempre <strong>de</strong>be haber al menos una página inválida entrepila y región mas cercana.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Duplicado <strong>de</strong> una región• Necesario para fork <strong>de</strong> UNIX– Duplicar regiones privadas <strong>de</strong>l padre y compartir las noprivadas.• Copia <strong>de</strong> región <strong>de</strong> un proceso en mapa <strong>de</strong> otro.– Es costoso pues se <strong>de</strong>be copiar el contenido.• fork sería muy ineficiente– Muchas veces ni se usa el mapa porque hay un exec.• Optimización: copy-on-write (COW)– Se comparte una página mientras no se modifique.– Si un proceso la modifica, se crea una copia <strong>de</strong> él.– “Duplicado por <strong>de</strong>manda”.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)• Implementación <strong>de</strong> COWCopy-on-write– Se comparten páginas <strong>de</strong> regiones duplicadas, pero:• Se marcan <strong>de</strong> sólo lectura y con bit <strong>de</strong> COW.• Primera escritura provoca un fallo <strong>de</strong> protección que se atien<strong>de</strong> y segenera una copia privada.– Pue<strong>de</strong> haber varios procesos con misma región duplicada.• Contador <strong>de</strong> uso por página.• Al crear copia privada se <strong>de</strong>crementa el contador.• Si llega a 1 se <strong>de</strong>sactiva el COW porque no hay duplicados.• fork con COW. Se comparten todas las regiones. Lasregiones privadas se marcan como COW en padre e hijo• Resultado: En vez <strong>de</strong> duplicar espacio <strong>de</strong> memoria, sólose duplica la tabla <strong>de</strong> páginas.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Contenido• Objetivos <strong>de</strong>l sistema <strong>de</strong> gestión <strong>de</strong>memoria.• Mo<strong>de</strong>lo <strong>de</strong> memoria <strong>de</strong> un proceso.• Esquemas <strong>de</strong> memoria basados enasignación contigua.• <strong>Memoria</strong> virtual.• Archivos proyectados en memoria.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Archivos proyectados en memoria• Generalización <strong>de</strong> la memoria virtual– Entradas <strong>de</strong> la tabla <strong>de</strong> página referencian a un archivo <strong>de</strong>usuario.• Programa solicita proyección <strong>de</strong> archivo (o parte) en sumapa <strong>de</strong> memoria.– Pue<strong>de</strong> especificar protección y si privada o compartida.• S.O. rellena las entradas correspondientes con:– No resi<strong>de</strong>nte, CA– Privada/Compartida y Protección según especifica la llamada.• Cuando programa acce<strong>de</strong> a posición <strong>de</strong> memoriaasociada a archivo, está accediendo al archivo.
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Archivos proyectados en memoria• Forma alternativa <strong>de</strong> acceso a archivos frente aread/write.– Menos llamadas al sistema.– Se evitan copias intermedias en caché <strong>de</strong>l sistema <strong>de</strong> archivos.– Se facilita programación pues el archivo proyectado se acce<strong>de</strong>como a estructuras <strong>de</strong> datos en memoria.• Se usa para carga <strong>de</strong> bibliotecas dinámicas– La zona <strong>de</strong> código se proyecta como compartida.– La zona <strong>de</strong> datos con valor inicial se proyecta como privada
AT3148 – Ampliación <strong>de</strong> Sistemas OperativosA. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)Archivo proyectado