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