Gestión de Memoria

Anuncio
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Gestión de Memoria
Transparencias basadas en el libro de referencia:
Sistemas operativos. Una visión aplicada.
J. Carretero, F.García, P. de Miguel, F. Pérez. McGraw Hill 2001
Curso 2005-2006
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Contenido
• Objetivos del sistema de gestión de memoria.
• Modelo de memoria de un proceso.
• Esquemas de memoria basados en asignación
contigua.
• Memoria virtual.
• Archivos proyectados en memoria.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Objetivos del Gestor de Memoria
• S.O. multiplexa recursos entre procesos.
– Cada proceso cree que tiene una máquina para él solo.
– Gestión de procesos: Reparto del procesador.
– Gestión de memoria: Reparto de 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 del proceso.
Maximizar el grado de multiprogramación.
Proporcionar a los procesos mapas de memoria grandes.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Espacios lógicos independientes
• No se conoce posición de memoria donde un programa
ejecutará.
• Código en ejecutable genera referencias entre 0 y N.
• Ejemplo: Programa que copia un vector.
• Vector destino a partir de
dirección 2000.
• Tamaño del vector en dirección
1500.
• Vector origen a partir de
dirección 1000.
AT3148 – Ampliación de Sistemas Operativos
A. 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 de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Reubicación
• Necesaria en S.O. con multiprogramación:
– Reubicar: Traducir direcciones de memoria lógicas a físicas.
• Direcciones lógicas:Direcciones de memoria generadas
por el programa.
• Direcciones físicas: Direcciones de memoria principal
asignadas al proceso.
• Traducción(pid, dirección lógica) --> dirección física.
• Espacios lógicos (mapas) independientes por proceso.
• Reubicación puede ser hardware o software.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Reubicación hardware
• Hardware (MMU) encargado de la traducción.
• El sistema operativo:
– Almacena la función de traducción para cada proceso.
– Indica al hardware qué función usar para un proceso.
• El programa se carga en memoria sin
modificar.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Reubicación software
• Traducción de direcciones durante
la carga del programa.
• El programa en memoria es
distinto que el ejecutable.
• Desventajas:
– No asegura protección.
– No permite mover programa en
tiempo de ejecución (será
necesario en memoria virtual).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Protección
•
•
•
•
Monoprogramación: Protección del S.O.
Multiprogramación: Además protección entre procesos.
Traducción debe crear espacios disjuntos.
Necesario validar todas las direcciones que genera el
programa:
– Detección realizada por el hardware del procesador.
– Tratamiento por el sistema operativo.
• Sistemas con mapa E/S y memoria común:
– Traducción permite impedir que procesos accedan
directamente a dispositivos de E/S.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Compartimiento de memoria
• Direcciones lógicas de dos o más
procesos se corresponden con
una misma dirección física.
• Bajo control del S.O.
• Beneficios:
– Procesos ejecutando mismo
programa comparten código.
– Mecanismo de comunicación
entre procesos muy rápido.
• Requiere asignación no
contigua.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Problemas al compartir memoria
• Referencias de memoria dentro
de la propia zona compartida.
• Ejemplo de código:
– Instrucción de bifurcación en
zona compartida.
• Ejemplo con datos:
– Lista con punteros en la zona
compartida.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Soporte de Regiones
• Mapa de proceso no homogéneo.
– Conjunto de regiones con distintas características.
– Ejemplo: región de código no es modificable.
• Mapa de proceso dinámico.
– Regiones cambian de tamaño (por ejemplo: pila).
– Se crean y destruyen regiones.
– Existen zonas sin asignar (huecos).
• Gestor de memoria debe proporcionar estas características
– Detectar accesos no permitidos a una región.
– Detectar acceso a huecos
– Evitar reserva de espacio para huecos.
• S.O. guarda tabla de regiones por proceso.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Maximizar rendimiento
• Reparto de memoria maximizando grado de
multiprogramación. Política de asignación.
• Desperdicia memoria por “restos” inutilizables
(fragmentación) y tablas necesarias para el gestor.
• Compromiso: paginación.
• Uso de memoria virtual para aumentar el grado de
multiprogramación.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Mapas de memoria grandes para procesos
• Requisitos de memoria cada vez mayores según
aparecen nuevas aplicaciones.
• Memoria virtual aporta la solución.
• 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.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Contenido
• Objetivos del sistema de gestión de memoria.
• Modelo de memoria de un proceso.
• Esquemas de memoria basados en asignación
contigua.
• Memoria virtual.
• Archivos proyectados en memoria.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Fases en generación de ejecutable
• Aplicación: conjunto de
módulos en lenguaje de
alto nivel.
• Procesado en dos fases:
Compilación y montaje.
• Compilación:
– Resuelve referencias dentro de cada módulo fuente.
– Genera módulo objeto.
• Montaje (o enlace):
– Resuelve referencias entre módulos objeto.
– Resuelve referencias a símbolos de referencia.
– Genera ejecutable incluyendo biblioteca
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Bibliotecas de objetos
• Biblioteca: Colección de módulos objeto relacionados.
• Bibliotecas del sistema o creadas por el usuario.
• Bibliotecas Estáticas:
– Montaje: Enlaza módulos objeto del programa y las
bibliotecas.
– Ejecutable autocontenido.
• Desventajas del montaje estático:
– Ejecutables grandes.
– Código de función de biblioteca repetido en muchos
ejecutables.
– Múltiples copias en memoria de función de biblioteca.
– Actualización de biblioteca implica volver a montar.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Bibliotecas dinámicas
• Carga y montaje de la biblioteca en tiempo de ejecución.
• Ejecutable contiene:
– Nombre de la biblioteca.
– Rutina de carga y montaje en tiempo de ejecución.
• Primera referencia a símbolo de biblioteca en ejecución:
– Rutina carga y monta la biblioteca correspondiente.
– Ajusta instrucción que realiza referencia para que próximas
referencias accedan al símbolo de la biblioteca
• Problema: Se modifica el código del programa.
• Solución típica: Referencia indirecta mediante una tabla.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Ventajas de bibliotecas dinámicas
• Ventajas:
–
–
–
–
Menor tamaño ejecutables.
Código de rutinas de bibliotecas sólo en archivo de biblioteca.
Procesos pueden compartir código de biblioteca.
Actualización automática de bibliotecas: Uso de versiones.
• Desventajas:
– Mayor tiempo de ejecución debido a carga y montaje
• Tolerable: Compensado con el resto de las ventajas.
– Ejecutable no autocontenido.
• Uso de bibliotecas dinámicas es transparente
– Mandatos de compilación y montaje como las estáticas.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Uso explícito de bibliotecas dinámicas
• Forma de uso habitual:
– Se especifica en tiempo de montaje qué biblioteca usar, pero se
pospone su carga y montaje a tiempo de ejecución.
• Uso explícito:
– Requerido por aplicaciones que determinan en tiempo
ejecución 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 símbolos de la biblioteca:
• Programa necesita usar servicios del sistema para ello
– dlsym en UNIX y GetProcAddress en Win32.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Compartir bibliotecas dinámicas
• Biblioteca dinámica con referencias internas:
– Problema de zona compartida con autoreferencias ya visto.
• Tres posibles soluciones:
– Rango fijo de direcciones para cada biblioteca dinámica:
• Inconveniente: Poco flexible.
– En montaje en tiempo de ejecución se reajustan las
autoreferencias.
• Inconveniente: Impide compartir código de la biblioteca.
– Crear biblioteca con código independiente de posición (PIC)
• Se genera código con direccionamiento relativo a registro.
• Inconveniente (tolerable): direccionamiento relativo menos eficiente.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Formato del ejecutable
• Distintos fabricantes usan diferentes formatos
– Ejemplo: En Linux Executable and Linkable Format (ELF)
• Estructura: Cabecera y conjunto de secciones.
• Cabecera:
– Número mágico que identifica a ejecutable.
– Punto de entrada del programa.
– Tabla de secciones.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Formato del ejecutable
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Secciones del ejecutable
• Diferentes tipos de secciones.
• Las secciones más relevantes se volcarán en el mapa de
memoria del proceso:
– Código(texto): contiene el código 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).
• No hay secciones vinculadas a variables locales.
– Tienen carácter dinámico. En la pila cuando se invocan los
procedimientos.
AT3148 – Ampliación de Sistemas Operativos
A. 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 del mismo
Dirección fija en memoria y en ejecutable
• Variables locales y parámetros
–
–
–
–
–
Dinámicas.
Se crean al invocar la función.
Se destruyen al retornar.
La dirección se calcula en tiempo de ejecución.
Recursividad: varias instancias de una variable.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Variables globales frente a variables locales
• Ejemplo:
int x=8;
int y;
/* Variable global con valor inicial */
/* Variable global sin valor inicial */
f(int t){
/* Parámetro */
int z; /* Variable local */
…….
}
main(){
…….
}
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Mapa de memoria de un proceso
• Mapa de memoria o imagen del proceso: conjunto de
regiones
• Región:
– Tiene asociada una información (un “objeto de memoria”)
– Zona contigua tratada como unidad al proteger o compartir.
• Cada región se caracteriza por:
–
–
–
–
–
dirección de comienzo y tamaño inicial.
soporte:donde se almacena su contenido inicial.
protección: RWX
uso compartido o privado
tamaño fijo o variable
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Crear mapa de memoria desde ejecutable
• Ejecución de un programa: Crea mapa a partir de ejecutable.
– Regiones de mapa inicial corresponden a secciones del ejecutable.
• Regiones
– Código: Uso compartido, lectura y ejecución, tamaño fijo, soporte
en archivo ejecutable.
– Datos con valor inicial: Uso privado, lectura y escritura, tamaño fijo
y soporte en archivo ejecutable.
– Datos sin valor inicial. Uso privado, lectura y escritura, tamaño fijo
y 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 inicial
sólo contiene argumentos que se le proporcionan al programa.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Crear mapa de memoria desde ejecutable
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Otras regiones del mapa de memoria
• Durante la ejecución de un proceso se crean nuevas
regiones:
– Mapa de memoria tiene carácter dinámico.
• Región de Heap.
– Soporte de 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 el
programa al solicitar la proyección.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Otras regiones del mapa de memoria
• Memoria Compartida.
– Región asociada a la zona de memoria compartida.
– Uso compartido, tamaño variable, sin soporte.
– La protección se especifica por el programa al proyectarla.
• Pilas de Threads.
– Cada pila corresponde con una región.
– Mismas características que la pila de proceso.
• Carga de biblioteca dinámica.
– Regiones asociadas a los datos y código de la biblioteca.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Ejemplo de mapa de memoria de un proceso
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Operaciones sobre regiones
• Sobre las regiones del mapa de memoria se pueden aplicar
las siguientes operaciones:
– Crear región: Implícitamente, al crear el mapa inicial o por solicitud
del programa en tiempo de ejecución (por ejemplo: proyectar un
archivo).
– Eliminar región: Implícitamente, al terminar el proceso o por
solicitud del programa en tiempo de ejecución (por ejemplo:
desproyectar un archivo).
– Cambiar tamaño de la región: Implícitamente para la pila o bajo
solicitud del programa en el heap.
– Duplicar una región: Para el servicio FORK de POSIX (Duplicaría
el mapa de memoria del proceso padre).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Contenido
• Objetivos del sistema de gestión de memoria.
• Modelo de memoria de un proceso.
• Esquemas de memoria basados en asignación
contigua.
• Memoria virtual.
• Archivos proyectados en memoria.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Asignación contigua
• Mapa de proceso en zona contigua de memoria
principal.
• Hardware requerido: Registros valla (Registro base y
límite).
– Sólo accesibles en modo privilegiado.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Asignación contigua
• Sistema Operativo mantiene información sobre:
– Copia del valor del registro valla en el BCP de cada proceso.
• En el cambio de contexto (al activar el proceso) se carga el valor
adecuado en el registro.
– Estado de ocupación de memoria.
• Estructuras de datos que identifican las zonas ocupadas y los huecos.
– Regiones de cada proceso.
• La asignación continua presenta fragmentación
externa:
– Pequeños fragmentos libres entre zonas asignadas.
– Posible solución: compactación. Proceso costoso y sólo con
reubicación dinámica (hardware).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Política de asignación de espacios
• ¿Qué hueco usar para satisfacer una petición?
• Posibles políticas:
– Primer ajuste: Asignar el primer hueco de suficiente tamaño.
– Mejor ajuste: Asignar al menor hueco con tamaño suficiente.
• Lista ordenada por tamaño o buscar en toda la lista.
– Peor ajuste: Asignar el mayor hueco con tamaño suficiente.
• Lista ordenada por tamaño o buscar en toda la lista.
• Primer ajuste es más eficiente y proporciona buen
aprovechamiento de la memoria.
• Estrategia más sofisticada: Sistema Buddy
– Listas de huecos con tamaños potencia de 2.
AT3148 – Ampliación de Sistemas Operativos
A. 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 de memoria de
tamaño fijo.
– Suficiente para regiones iniciales.
– Con huecos para permitir cambio de tamaño y nuevas
regiones (p.ej.: pilas de threads). Fragmentación interna.
• Peligro de desperdiciar espacio o quedarse corto.
• Crear/liberar/cambiar tamaño usan la tabla de regiones
para gestionar la zona asignada al proceso.
• Duplicar región: crear región nueva y copiar contenido.
• Limitaciones hardware impiden compartir memoria y
detectar accesos erróneos o desbordamiento de pila.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Valoración del esquema de asignación contigua
• Relación con los objetivos planteados:
– Espacios independientes para procesos:
• mediante registros valla.
– Protección:
• mediante registros valla.
– Compartir memoria:
• no es posible
– Soporte de regiones:
• no existe
• se reserva espacio para huecos
– Maximizar rendimiento y mapas grandes
• mal aprovechamiento de memoria por fragmentación externa.
• no permite memoria virtual (limitado a memoria física).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Intercambio
• Cuando no caben todos los programas en memoria
principal.
• Uso de intercambio (swapping).
• Swap: partición 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 selección al expulsar
• Ej: Dependiendo de prioridad del 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 de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Intercambio
• Swap in:
– Cuando haya espacio en memoria principal, se lee proceso a
memoria copiando imagen desde swap.
– También cuando lleva un cierto tiempo expulsado.
• Antes de swap in habrá un swap out de otro proceso.
• Asignación de 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 de UNIX.
• Solución general: Esquemas con Memoria Virtual.
– Se usa integrado con intercambio.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Contenido
• Objetivos del sistema de gestión de memoria.
• Modelo de memoria de un proceso.
• Esquemas de memoria basados en asignación
contigua.
• Memoria virtual.
• Archivos proyectados en memoria.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Jerarquía de Memoria
• Elementos de información replicados en varios niveles
de la jerarquía
• Problema de coherencia
• Migración de información
– Automática
– Por demanda explícita.
• Traducción de direcciones
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Jerarquía de Memoria
• Migración automática:
– Política de extracción, ubicación y reemplazo. Tamaño de
bloques. Política de actualización.
• Parámetros:
– Tasa de acierto del nivel k (Hrk). Depende de tamaño de
bloques, capacidad del nivel k, políticas de reemplazo y
ubicación.
– Tasa de fallos del nivel k (Frk = 1- Hrk)
– Tiempo medio de acierto (Tef). Depende del tiempo de
acceso en caso de acierto, la penalización por fallo y Hrk.Es
un valor promedio
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Memoria Virtual
• Memoria virtual: El sistema operativo gestiona niveles
de memoria principal y secundaria.
– Transferencia de bloques entre ambos niveles.
– De memoria secundaria a principal: por demanda.
– De memoria principal a secundaria: por expulsión.
• Aplicable porque procesos exhiben proximidad de
referencias
– Procesos sólo usan parte de su mapa en intervalo de tiempo.
– Memoria Virtual: intenta que parte usada (conjunto de
trabajo) resida en memoria principal (conjunto residente).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Memoria Virtual
• Beneficios:
– Aumenta el grado de multiprogramación.
– Permite ejecución de programas que no caben en memoria
principal.
• No adecuada para sistemas de tiempo real.
• Normalmente basada en paginación.
– Memoria secundaria: dispositivo de paginación o de swap.
AT3148 – Ampliación de Sistemas Operativos
A. 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 de 2)
• Mapa de memoria del proceso dividido en páginas.
• Memoria principal dividida en marcos de tamaño igual
al de las páginas.
• Dirección lógica: número de página + desplazamiento.
• Tabla de páginas (TP). Relaciona página con marco
que la contiene.
• MMU usa TP para traducir direcciones lógicas a físicas
• Típicamente 2 TPs (de usuario y de sistema).
• Si mapa de E/S y memoria común, direcciones lógicas
de E/S en TP del sistema.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Esquema de traducción
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Fragmentación interna en paginación
• Memoria asignada mayor que la requerida.
– Puede desperdiciarse parte de un marco asignado.
De media la mitad de una página (tolerable).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Contenido de entrada de TP
• Número de marco asociado.
• Información de protección (RWX)
– Si se intenta una operación no permitida se lanza excepción.
• Bit de página válida / inválida.
– Si se accede a inválida se lanza excepción.
– Usado en memoria principal para indicar si página presente.
• Bit de página accedida y bit de página modificada.
– Activados por la MMU cuando se accede o modifica la
página respectivamente.
• Bit de desactivación de caché,
– Usada, por ejemplo, con el mapa de entrada / salida.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Tamaño de la página
• Condicionado por varios factores:
– Potencia de 2 y múltiplo del tamaño del bloque de disco.
– Mejor pequeño por:
• Menor fragmentación
• Se ajusta mejor al conjunto de trabajo.
– Mejor grande por:
• Tablas más pequeñas
• Mejor rendimiento del dispositivo de E/S (acceso a disco).
– Compromiso (entre 2KB y 16KB)
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Gestión del sistema operativo
• Mantiene una TP por proceso.
– Al cambiar de contexto notifica a la MMU cuál usar.
• Una única TP para el propio sistema operativo.
– Proceso en modo sistema accede directamente a su mapa y al
sistema operativo.
• Mantiene tabla de marcos:
– Estado de cada marco (libre / ocupado).
• Almacena una tabla de regiones por proceso.
• Mucho mayor gasto en tablas que con asignación
contigua, pero mucha mayor funcionalidad.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Valoración de la paginación
• Relación con los objetivos planteados:
– Espacios independientes para procesos:
• mediante tabla de páginas.
– Protección:
• mediante tabla de páginas
– Compartir memoria:
• entradas de la tabla de cada proceso corresponden con mismo marco.
– Soporte de regiones:
• bits de protección
• bits de validez. No hay espacio reservado para huecos.
– Maximizar rendimiento y mapas grandes
• permite esquemas de memoria virtual.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Implementación de la tabla de páginas
• Se mantiene, normalmente, en memoria principal.
• 2 problemas: eficiencia y gasto de almacenamiento.
• Eficiencia:
– Cada acceso lógico requiere dos accesos a memoria principal.
Primero a tabla de páginas y luego al dato o instrucción.
– Solución: cache de direcciones. TLB
• Gasto de almacenamiento
– Tablas muy grandes
• 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 de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Translation Lookaside buffer (TLB)
• Memoria asociativa con información de las últimas
páginas accedidas. Caché de entradas de la tabla de
paginación para esos accesos.
• Entradas en TLB pueden no incluir información 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 invalidación.
• Diseño alternativo: TLB gestionada por software.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
TLB gestionada por software
• Alternativa de bastante uso en la actualidad. El S.O.
realiza parte de la gestión de la TLB.
• S.O. mantiene las tablas de páginas.
• MMU sólo consulta el TLB.
• En caso de fallo de página se produce una excepción.
Se activa el sistema operativo.
• Se encarga de buscar la traducción de la página
solicitada y rellenar el TLB con la traducción.
• Flexibilidad en diseño del S.O. frente a eficiencia.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Tabla de páginas multinivel
• Tabla organizada en varios niveles (M):
– Entrada de nivel K apunta a la tabla de nivel K+1.
– Entrada de último nivel apunta a marco de página.
• Dirección lógica especifica la entrada a usar en cada
nivel. Un campo por nivel + desplazamiento.
• Un acceso lógico implica M+1 accesos a memoria.
– Uso de TLB
• Si todas las entradas de una tabla son inválidas
– No se almacena la tabla.
– Se pone inválida la entrada correspondiente de la TP
superior.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Esquema de traducción con 2 niveles
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Ventajas de tabla multinivel
• Si proceso usa una parte pequeña de su espacio lógico
– Ahorro en espacio para almacenar TPs
• Ejemplo: Proceso que usa 12MB superiores y 4MB
inferiores.
– 2 Niveles, páginas de 4K, dir. lógica 32 bits (10 bits por
nivel) y 4 bytes por entrada
• Tamaño: 1 TP N1 + 4 TP N2 = 5 * 4KB = 20KB (frente a 4 MB)
• Ventajas adicionales:
– Permite compartir tablas intermedias.
– Sólo se requiere que esté en memoria la TP de nivel superior
• TPs restantes pueden estar en disco y traerse por demanda.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Ventajas de tabla multinivel
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Tabla de páginas invertida
• Procesadores actuales espacio lógico enorme
(direcciones de 64 bits)
– TPs muy grandes incluso usando multinivel.
• Posible solución alternativa: Uso de TPs invertidas.
– Una entrada por cada marco indica página almacenada en él.
• Tamaño de TP proporcional a memoria principal.
– Necesario guardar número de página e id. de proceso.
• Procedimiento de traducción:
– MMU usa TLB convencional
– Si fallo en TLB, MMU busca traducción en TP invertida.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Tabla de páginas invertida
• Para evitar búsqueda
secuencial: tabla hash.
• Difícil compartir
memoria.
• TP pequeña. S.O.
debe guardar
información de
páginas no residentes
en memoria.
AT3148 – Ampliación de Sistemas Operativos
A. 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 de proceso compuesta por segmentos. Cada
región un segmento.
• Generalización registros base y límite (por segmento).
• Dirección lógica: nº de segmento + dirección en segmento.
• MMU usa tabla de segmentos (TS)
• S.O. guarda una TS por segmento.
– Cambio contexto notifica a MMU cuál debe usar.
• Entrada TS con registros base y límite y protección RWX
• Fragmentación externa: segmento es unidad de asignación.
• S.O. mantiene información de huecos y zonas asignadas.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Esquema de traducción con segmentación
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Valoración de la segmentación
• Relación con los objetivos planteados:
– Espacios independientes para procesos:
• mediante tabla de segmentos
– Protección:
• mediante tabla de segmentos
– Compartir memoria:
• compartir segmentos: misma entrada en distintas tablas de segmentos
– Soporte de regiones:
• bits de protección
– Maximizar rendimiento y mapas grandes
• no facilita uso de memoria virtual por segmentos con tamaño variable.
• presenta fragmentación externa.
• Apenas usado.
AT3148 – Ampliación de Sistemas Operativos
A. 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 de ambos esquemas.
• Segmentación
– Soporte directo a regiones del proceso
– Facilita operaciones sobre regiones:
• Establecer protección: Modificar sólo una entrada de TS.
• Compartir segmento: Entradas de TS apuntando a misma TP.
• Paginación
– Asignación no contigua de segmento.
– Facilita el uso de esquemas de memoria virtual.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Esquema de traducción: segmentación paginada
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Valoración de la segmentación paginada
• Relación con los objetivos planteados:
– Espacios independientes para procesos:
• mediante tabla de segmentos
– Protección:
• mediante tabla de segmentos
– Compartir memoria:
• compartir segmentos: misma entrada en distintas tablas de segmentos
– Soporte de regiones:
• bits de protección
– Maximizar rendimiento y mapas grandes
• permite esquemas de memoria virtual
• Frente a paginación: Facilita gestión de regiones, pero
con HW más complejo.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Paginación por demanda
• Segmentación pura no adecuada para memoria virtual.
– Tamaño de segmentos variable.
• Paginación y segmentación paginada sí lo son:
– Bloque transferido: página.
– M. Virtual + paginación: paginación por demanda.
• Estrategia de implementación: Uso del bit de validez.
– Página no residente se marca como no válida.
– En acceso: Excepción de fallo de página
• S.O. trae página correspondiente de memoria secundaria.
• S.O. debe diferenciar entre página no residente e inválida (hueco).
• Prepaginación: Páginas se traen por anticipado. En fallo de
página se traen más suponiendo que serán accedidas pronto.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Tratamiento de fallo de página
• Tratamiento de excepción (dirección de fallo disponible
en 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 en
memoria secundaria.
– Hay marco libre (o se ha liberado):
• Lee la página al marco seleccionado
• Marca válida la entrada de página referenciando al marco.
• Establece el marco como ocupado si no lo estaba (tabla de marcos).
• Fallo de página puede implicar dos operaciones en
disco.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Políticas de administración de memoria virtual
• Política de reemplazo.
– Página 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.
• Política de asignación de espacio a los procesos.
– Repartición de marcos entre procesos.
– Asignación fija o dinámica.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Algoritmos de reemplazo
• Objetivo: Minimizar la tasa de fallos de página.
• Cada algoritmo descrito tiene versión local y global
• Algoritmos presentados:
–
–
–
–
–
Óptimo
FIFO
Reloj (o segunda oportunidad).
LRU
LFU y MFU
• Uso de técnicas de buffering de páginas.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Algoritmo óptimo
•
•
•
•
Criterio: página residente que tardará más en accederse.
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 0
Marcos:
1
1
0
1 1 1
0 0 0
2
0
3
0
2 3 4
4
4
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Algoritmo FIFO
• Criterio: página que lleva más tiempo residente.
• Fácil implementación.
– Páginas residentes en orden FIFO. Se expulsa la primera.
– No necesita el bit de página accedida.
• No es buena estrategia.
– Página seleccionada puede seguir accediéndose mucho.
– Criterio no basado en uso de página.
• Anomalía de Belady
– En algunos ejemplos, al aumentar el número de marcos,
aumenta el número de fallos de página.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Algoritmo del reloj (o 2ª oportunidad)
• FIFO + uso de bit de referencia de página accedida.
• Criterio:
– Si página elegida por FIFO no tiene activo el bit de referencia
• Se expulsa.
– Si está activo (2ª oportunidad)
• Se desactiva el bit.
• Se pone la página al final de la FIFO.
• Se pasa a la siguiente página.
• Posible implementación como lista circular con
referencia a la primera página de la lista (como un reloj
con la referencia como aguja).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Algoritmo del reloj mejorado
• Se considera también el bit de modificación.
• Las páginas se clasifican en cuatro grupos según el
estado de los bits de referencia y modificación (R, M)
–
–
–
–
(0,0) Mejor página 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 página del mejor tipo posible
(orden anterior). Puede ser necesario explorar la cola
varias veces.
• Macintosh
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Algoritmo LRU
• Criterio: Página residente usada hace más tiempo.
• Por proximidad de referencias:
– Pasado reciente condiciona futuro próximo.
• Difícil implementación estricta (hay aproximaciones).
• Posible implementación con HW específico.
– En entrada de TP hay un contador.
– Cada acceso a memoria, MMU copia contador del sistema.
– Reemplazo: Página con contador más bajo
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Algoritmos LFU y MFU
• Se basan en el número de ocasiones que han sido
accedidas las páginas. Son difíciles de implementar y
no se aproximan al óptimo.
• LFU. Menos frecuentemente accedida. Reemplaza la
pá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 la
página que más veces se accedió. Supone que la menos
accedida se trajo hace poco a memoria.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Buffering de páginas
• Peor caso en tratamiento de fallo de página:
– 2 accesos a dispositivo.
• Alternativa: mantener una reserva de marcos libres
• Fallo de página: siempre usa marco libre (no reemplazo)
• Si número libres < umbral:
– “demonio de paginación” aplica repetidamente el algoritmo
de reemplazo.
• Páginas no modificadas pasan a lista de marcos libres.
• Páginas modificadas pasan a lista de marcos modificados. Se
escribirán a disco (en tandas mejor rendimiento) y entonces pasan a
listos.
• Si se referencia una página de esas listas. Fallo de página la
recupera de la lista. Para mejorar algoritmos “malos”.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Retención de páginas en memoria
• Páginas marcadas como no reemplazables.
• Se aplica a las páginas del propio S.O. Generalmente el
mapa de memoria del S.O. es fijo.
• También cuando DMA sobre una página.
• Algunos sistemas ofrecen un servicio para que las
aplicaciones fijen en memoria páginas de su mapa.
– Adecuado para procesos de tiempo real.
– Puede afectar al rendimiento del sistema.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Estrategia de asignación fija
• Número de marcos asignados al proceso (conjunto
residente) es constante.
• Puede depender de las características del proceso
(tamaño, prioridad, ...)
• No se adapta a la evolución del programa.
• Comportamiento relativamente predecible.
• Sólo tiene sentido reemplazo local.
• Arquitectura define el número mínimo de marcos:
– Instrucción capaz de generar mayor número fallos de página
– Por ejemplo MOVE /DIR1, /DIR2 requiere un mínimo de tres
marcos. (Instrucción y dos operandos residentes).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Estrategia de asignación dinámica
• Número de marcos asignados varía dependiendo de su
comportamiento del proceso (y puede que de los otros).
• Asignación dinámica + reemplazo local.
– Proceso va aumentando o disminuyendo su conjunto residente
– Comportamiento relativamente predecible.
• Asignación dinámica + reemplazo global.
– Procesos se quitan las páginas entre ellos.
– Comportamiento difícilmente predecible (tasa de fallos
depende de característica de otros procesos).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Hiperpaginación (Thrashing)
• Tasa excesiva de fallos de un proceso o en el sistema.
• Con asignación fija: Hiperpaginación en proceso P
– Si conjunto residente de P < conjunto de trabajo de P+
• Con asignación variable: Hiperpaginación en sistema:
– Si nº de marcos disponibles < suma de conjuntos de trabajo
– Grado de utilización del procesador cae drásticamente.
– Procesos están casi siempre en colas de dispositivo de
paginación.
– Solución (similar al swapping): Control de carga
• disminuir el grado de multiprogramación.
• Suspender 1 o más procesos liberando sus páginas residentes.
– Problema para detectar esta situación
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Hiperpaginación (Thrashing)
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Estrategia del conjunto de trabajo
• Intenta conocer el conjunto de trabajo de cada proceso
– páginas usadas por el proceso en las últimas N referencias.
– N es la ventana del conjunto de trabajo.
• Si el conjunto de trabajo decrece, se liberan marcos.
• Si crece, se asignan nuevos marcos.
– Si no hay disponibles, suspender uno o más procesos.
– Se reactivan cuando haya marcos suficientes para el conjunto
de trabajo.
• Asignación dinámica con reemplazo local.
• Difícil implementación estricta (HW específico).
• Aproximaciones: Implementación basada en controlar la
tasa de fallos de página de cada proceso.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Estrategia basada en frecuencia de fallos
• Si tasa < límite inferior, se liberan marcos aplicando un
algoritmo de reemplazo.
• Si tasa > límite superior se asignan nuevos marcos. Si
no hay libres se suspende algún proceso.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Control de carga y reemplazo global
• Algoritmos de reemplazo global no controlan
hiperpaginación.
– Necesitan cooperar con uno de control de carga
• Ejemplo Unix BSD:
– Reemplazo global con algoritmo reloj (dos manecillas).
– Buffering de páginas.
– Si nº marcos libres < umbral, el demonio de paginación aplica
reemplazo.
– Si se repite con frecuencia la falta de marcos libres: Proceso
swapper suspende procesos.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Dispositivo de paginación (swap)
• Preasignación de espacio
– Cuando se crea una región se le asigna espacio en swap.
– Al expulsar una página siempre tiene espacio reservado.
– Permite detectar de forma síncrona la falta de espacio swap.
• Sin preasignación de 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 de espacio de almacenamiento
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Dispositivo de 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 de swap
de forma dinámica o utilizar archivos como swap.
– Acceso a archivos más lento que a dispositivos.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Operaciones sobre regiones de memoria virtual
• Creación de región
– Al crear mapa inicial o por solicitud posterior.
• Liberación de región
– Al terminar el proceso o por solicitud posterior.
• Cambio de tamaño de región
– Del heap o de la pila
• Duplicado de región
– Para sistemas operativos que generen procesos como copia de
otros (fork).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Creación de región
• Nueva región no se le asigna memoria principal (carga por
demanda)
• Páginas se marcan como inválidas (por no tener marco).
• S.O. actualiza tabla de regiones y entradas de tabla de
páginas asociadas. Busca hueco en mapa para región.
• Dependiendo del tipo de soporte:
– En archivo: Páginas marcadas como “cargar de archivo” (CA). Se
almacena dirección del bloque del archivo correspondiente.
– Sin soporte: Se marcan las páginas como “rellenar con ceros” (RC).
Fallo de página no implica lectura del dispositivo.
• Si privada y preasignación swap, se reserva espacio de swap
• Pila. Se copian argumentos del programa en bloques swap.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Creación de región
• Una vez creada región, cuando se expulsa página
modificada:
– Si región privada: Se escribe página en swap. Posteriores
fallos se sirven de ese bloque.
– Si región compartida, se escribe página en soporte. Los fallos
se sirven del soporte.
• En creación de 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 (contenido
inicial en swap).
– Huecos se marcan como inválidos también para S.O.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Creación del mapa inicial
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Liberación de región
•
•
•
•
Actualizar tabla de regiones para eliminar región.
Marcar como inválidas páginas asociadas.
Si región privada, se libera espacio de swap
La liberación puede deberse a:
– Solicitud explícita.
– Finalización de proceso
– Otras razones (exec de POSIX).
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Cambio de tamaño
• Si disminuye, similar a liberación, pero sólo parte
afectada.
– Ajusta tabla regiones, marca páginas como inválidas y libera
swap.
• Si aumenta tamaño:
– Comprobar no solapamiento, fijar nuevas páginas como no
residentes con mismas características que la región. Si
preasignación, se reserva espacio para páginas en swap.
• Expansión del heap:
– Solicitada por programa mediante servicio del S.O.
– Marca las páginas correspondientes como RC, privadas, RW.
• Expansión de pila más compleja: es “automática”
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Expansión de la región de pila
• Expansión “automática”
– Programa disminuye valor de SP y accede a zona expandida.
Fallo de página que el sistema debe detectar como especial.
• Tratamiento de fallo de página
– Si dirección realmente inválida
• Si dirección < SP. Aborta proceso o le manda señal.
• Si no, expansión de pila.
• Expansión de pila:
– S.O. verifica no solapamiento, marca páginas RC, privadas,
RW. Si hay preasignación, reserva espacio en swap.
• Siempre debe haber al menos una página inválida entre
pila y región mas cercana.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Duplicado de una región
• Necesario para fork de UNIX
– Duplicar regiones privadas del padre y compartir las no
privadas.
• Copia de región de un proceso en mapa de otro.
– Es costoso pues se debe 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 de él.
– “Duplicado por demanda”.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Copy-on-write
• Implementación de COW
– Se comparten páginas de regiones duplicadas, pero:
• Se marcan de sólo lectura y con bit de COW.
• Primera escritura provoca un fallo de protección que se atiende y se
genera una copia privada.
– Puede haber varios procesos con misma región duplicada.
• Contador de uso por página.
• Al crear copia privada se decrementa el contador.
• Si llega a 1 se desactiva el COW porque no hay duplicados.
• 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, sólo
se duplica la tabla de páginas.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Contenido
• Objetivos del sistema de gestión de
memoria.
• Modelo de memoria de un proceso.
• Esquemas de memoria basados en
asignación contigua.
• Memoria virtual.
• Archivos proyectados en memoria.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Archivos proyectados en memoria
• Generalización de la memoria virtual
– Entradas de la tabla de página referencian a un archivo de
usuario.
• Programa solicita proyección de archivo (o parte) en su
mapa de memoria.
– Puede especificar protección y si privada o compartida.
• S.O. rellena las entradas correspondientes con:
– No residente, CA
– Privada/Compartida y Protección según especifica la llamada.
• Cuando programa accede a posición de memoria
asociada a archivo, está accediendo al archivo.
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Archivos proyectados en memoria
• Forma alternativa de acceso a archivos frente a
read/write.
– Menos llamadas al sistema.
– Se evitan copias intermedias en caché del sistema de archivos.
– Se facilita programación pues el archivo proyectado se accede
como a estructuras de datos en memoria.
• Se usa para carga de bibliotecas dinámicas
– La zona de código se proyecta como compartida.
– La zona de datos con valor inicial se proyecta como privada
AT3148 – Ampliación de Sistemas Operativos
A. Sánchez-Macián, J.A. Maestro, M.P. Sesmero (2004/05)
Archivo proyectado
Descargar