capítulo 5 gestión de memoria - upm
TRANSCRIPT
Sistemas operativos 2ª edición
Capítulo 5 Gestión de memoria
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez2
Contenido
◙ Introducción◙ Aspectos generales de la gestión de memoria◙ Modelo de memoria de un proceso◙ Esquemas de gestión de la memoria del sistema◙ Memoria virtual◙ Servicios de gestión de memoria
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez3
Introducción
◙ SO multiplexa recursos entre procesos• Gestión de procesos: Reparto de procesador• Gestión de memoria: Reparto de memoria
◙ Gestión integral de la memoria: no sólo SO• Compilador, montador y hardware de gestión de memoria
◙ Gestor de memoria: elevada complejidad
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez4
◙ Niveles de gestión de memoria◙ Necesidades de los programas◙ Objetivos del sistema de gestión de memoria◙ El problema general de la asignación de memoria◙ El largo camino desde el acceso simbólico al real
Aspectos generales de la gestión de memoria
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez5
EdificioEdificioEdificio
apartamento
apartamento
apartamento
apartamento
Edificio habitación
habit.
apartam.
apartam.
hab
Niveles de gestión de espacio
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez6
Niveles de gestión de memoria
◙ Nivel de procesos• Reparto de memoria entre procesos
◙ Nivel de regiones• Reparto de memoria del proceso entre regiones
◙ Nivel de zonas (si aplicable)• Reparto de espacio de región entre sus zonas
◙ Segmentación: Nivel de procesos y regiones fusionado
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez7
◙ Crear mapa de memoria del proceso (crear_mapa)• UNIX exec; Windows CreateProcess
◙ Eliminar mapa (eliminar_mapa)• UNIX también en exec,
◙ Duplicar mapa (duplicar_mapa)• UNIX fork
◙ Cambiar de mapa (cambiar_mapa)• En cambio de contexto
Operaciones en el nivel de procesos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez8
◙ Crear región en mapa del proceso (crear_región)• Iniciales y las que aparezcan
◙ Eliminar región (eliminar_región)• Al terminar proceso y las que desaparezcan antes
◙ Cambiar tamaño de región (redimensionar_región)• Regiones de tamaño dinámico (pila y heap)
◙ Duplicar región de un proceso en otro (duplicar_región)• Requerido por fork
Operaciones en el nivel de regiones
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez9
◙ Donde sea aplicable◙ Reservar zona (reservar_zona)
• C malloc; C++ y Java new◙ Liberar una zona reservada (liberar_zona)
• C free; C++ delete; Java automática◙ Cambiar tamaño de zona (redimensionar_zona)
• C realloc
Operaciones en el nivel de zonas
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez10
◙ Espacio lógico independiente◙ Protección de otros procesos◙ Compartir memoria◙ Soporte de sus regiones◙ Mapa de memoria muy grande◙ Facilidades para depuración◙ Uso de distintos tipos de objetos de memoria◙ Persistencia de datos◙ Desarrollo modular◙ Carga dinámica de módulos
Necesidades de los programas
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez11
◙ Código en ejecutable incluye referencias entre 0 y N
Espacio lógico independiente
LOAD R1, #1000LOAD R2, #2000LOAD R3, (1500)LOAD R4, (R1)STORE R4, (R2)INC R1INC R2DEC R3JNZ 12.................
Cabecera
Fichero Ejecutable04
....96
100104108112116120124128132136
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez12
Ejecución en SO mono y multiprogramado
Memoria048
12162024283236....
Sistema Operativo
LOAD R1, #1000LOAD R2, #2000LOAD R3, (1500)LOAD R4, (R1)STORE R4, (R2)INC R1INC R2DEC R3JNZ 12.................
Memoria
100104108112116120124128132.....
Sistema Operativo
LOAD R1, #1000LOAD R2, #2000LOAD R3, (1500)LOAD R4, (R1)STORE R4, (R2)INC R1INC R2DEC R3JNZ 12.................
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez13
Reubicación y protección
◙ Reubicar: Traducir direcciones lógicas a físicas• Dir. lógicas: generadas por programa• Dir. físicas: de m. principal
◙ Reubicación en nivel de procesos• Crea espacio lógico independiente para proceso
◙ Dos alternativas:• Reubicación software: previa a la ejecución del proceso• Reubicación hardware: en tiempo de ejecución
◙ Protección: Aislamiento de proceso frente a otros• Necesita apoyo hardware
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez14
◙ Dir. lógicas de procesos corresponden con misma dir. física
Compartimiento de memoria para comunicación
zona compartida
zona compartida
Mapa proceso 1
Mapa proceso 2
zona compartida
Memoria
1000
2000
¿1100 ó 2100?1000010100
Problema de las autorreferencias
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez15
Soporte de regiones y mapas muy grandes
◙ Mapa de proceso no homogéneo• Conjunto de regiones con distintas características
◙ Mapa de proceso dinámico• Regiones cambian de tamaño, se crean y destruyen• Huecos en el mapa del proceso
◙ Aplicaciones con espacio de direcciones disperso◙ Aplicaciones con requisitos de memoria muy elevados
• SO debe permitirles usar toda la memoria disponible• O incluso “más”: Uso de memoria virtual
◙ Facilidades para depuración• Error más frecuente: referencias a memoria erróneas• Uso de programa depurador
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez16
Diversos tipos de objetos y persistencia
◙ Constantes o variables◙ Por su tiempo de vida:
• Datos estáticos○ Existen durante toda la ejecución del programa
• Datos dinámicos asociados a la ejecución de una función• Datos dinámicos controlados por programa (región de heap)
◙ Aplicaciones necesitan almacenar datos de forma persistente• Sistema de ficheros ofrece servicios para hacerlo• Modo alternativo: (basado en proyección de ficheros)
○ Datos afectados se marcan como persistentes○ Programa los accede igual que al resto
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez17
◙ Desarrollo de cada módulo de manera independiente• Facilita desarrollo incremental y fomenta reutilización
◙ Compilación de módulo:• Código objeto con referencias a direcciones entre 0 y N
◙ Se requiere un proceso de traducción (reubicación)• Reubicación de módulos• No labor del SO, sino de compilador y montador
◙ Carga dinámica de código en t. de ejecución (p.e. plugins)• Técnica de montaje explícito de bibliotecas dinámicas
Desarrollo modular y carga dinámica
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez18
Objetivos del sistema de gestión de memoria
◙ Necesidades de procesos + necesidades de SO:• Espacio lógico propio• Protección ante procesos• Compartir memoria para optimizar su uso• Soporte de sus regiones• Satisfacer necesidades de memoria del SO• Carga dinámica de código de SO• Aprovechamiento de la memoria• Gestión de la jerarquía de memoria• Soporte a sistemas multiprocesador
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez19
Espacio lógico propio y protección del SO
◙ ¿Es necesaria reubicación de direcciones en SO?• Problema: SO compilado para rango no disponible• Uso de reubicación proporciona más flexibilidad
◙ SO especifica a MMU qué función de traducción usar• ¡Pero función debe estar activa para que ejecute el SO!
◙ SO no sólo requiere utilizar su mapa sino toda la memoria• Además, necesita “ver” espacio lógico de cada proceso
◙ SO debe protegerse a sí mismo de procesos en ejecución◙ Protección de acceso directo a dispositivos de E/S
• Direcciones de dispositivos no incluidas en mapa de proceso
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez20
◙ Compartir memoria permite mejor aprovechamiento• Compartir código de programas o de bibliotecas
◙ Datos de programa y de biblioteca no deben compartirse• Pero inicialmente idénticos• Diferir copia de cada dato hasta que se modifique (COW)• También aplicable a fork
◙ SO debe controlar cuando la región deja de ser usada◙ Si d. lógicas distintas: problema si zona incluye autorreferencia◙ Mapa de memoria de SO también está organizado en regiones
• SO debe dar soporte a sus propias regiones
Compartimiento de memoria y soporte de regiones
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez21
Soporte de necesidades de memoria de SO
◙ SO usa estructuras de datos similares a cualquier otro programa◙ Tendencia: uso de estructuras dinámicas
• Mejor uso de la memoria y único punto de agotamiento◙ Carga dinámica de código del sistema operativo
• Tradicionalmente, SO es un ejecutable de gran tamaño• En sistemas actuales, carga en t. de ejecución de código• Solución más flexible• Facilita implementación de técnicas sofisticadas (hot-plugging)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez22
◙ Todo byte debería almacenar información de utilidad pero...• Desperdicio inherente a la propia gestión (fragmentación)• Gasto de propia gestión de memoria (estructuras de datos)
◙ Mejor aprovechamiento → mayor grado de multiprogramación→ mejor rendimiento
◙ Para mejorar rendimiento, uso de memoria virtual
Buen aprovechamiento de la memoria
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez23
Gestión de la jerarquía y soporte multiprocesador
◙ Información en uso debe estar en niveles rápidos de jerarquía• En nivel de memoria virtual, SO se encarga de hacerlo
◙ Jerarquía presenta múltiples problemas de coherencia• Algunos resueltos por hardware; otros por SO
◙ En multiprocesador, la jerarquía de memoria se complica• Cada procesador posee su propia caché y MMU
◙ En MP: evitar “cuellos de botella” que disminuyan paralelismo◙ Soporte NUMA: Objetivo del SO
• Memoria asignada a proceso “cercana” al mismo
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez24
El problema general de la asignación de memoria
◙ Planteamiento del problema general• Espacio de almacenamiento de N bytes• Peticiones de espacio contiguo de diversos tamaños• Cuando ya no se necesita espacio, se libera• Puede existir tamaño de reserva mínimo• Según evoluciona: bloques y huecos• Objetivos: buen aprovechamiento (fragmentación) y eficiencia
◙ Cada nivel es un caso independiente del problema general• En cada nivel se puede usar esquema diferente• Un nivel reparte espacio proporcionado por nivel superior
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez25
Compactación: no es la solución
Bloque 1
Bloque 2
Bloque 3
Bloque 4
Bloque 1
Bloque 3
Bloque 4
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez26
0
140160
Bloque
300
420
Bloque
Bloque
400
500520
Bloque
Fragmentación
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez27
0
140
220
Bloque
Bloque300
0
140
220
Bloque
Bloque300
Bloque 210
0
140
220
Bloque
Bloque300
Bloque
Fragmentación externa versus interna
Generar hueco (fragmentación externa)
Asignar todo el hueco (fragmentación interna)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez28
Algoritmo de asignación de espacio
◙ El mejor ajuste (best fit). • Selección: comprobar todos u ordenados por tamaño
◙ El peor ajuste (worst fit)• Selección: comprobar todos u ordenados por tamaño
◙ El primero que ajuste (first fit)• Suele ser la mejor política en muchas situaciones
◙ El próximo que ajuste (next fit)• Variación del primero que ajuste
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez29
◙ Información sobre bloques y huecos almacenada:• Internamente o externamente
◙ Múltiples soluciones• Lista única• Múltiples listas con huecos de tamaño variable• Múltiples listas con particiones estáticas• Sistema buddy binario• Mapa de bits
Gestión de la información de estado
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez30
Lista única
Próximo
42012 12
42012 44
Próximo
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez31
168 16 32
1616 32 64
60
1616 32 64
2036
1616 32 64
836 8
Múltiples listas con huecos de tamaño variable
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez32
4 4 12
4 4 124 4 12
168 16
168 16
Múltiples listas con particiones estáticas
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez33
168 16 32
168 16 32
4
168 16 32
4 12
Sistema buddy binario
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez34
Relación entre huecos en buddy binario
000000 001000 010000 011000 100000 101000 110000 111000
000000 010000 100000 110000
000000 100000
Huecos de tamaño 32
Huecos de tamaño 16
Huecos de tamaño 8
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez35
0000000000000000111111111111111111111111000000000000000000000000
Mapas de bits
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez36
El largo camino desde el acceso simbólico al real
◙ Código de programa hace referencia a variables y a funciones◙ En tiempo de ejecución programa genera accesos a memoria◙ P ejecuta instrucción que referencia a S y genera dirección Df
[P, S] → [Df]◙ 1ª etapa: resolución simbólica (Compilador o montador)
[P, S] → [P, M, Dm]◙ Después, de dirección tridimensional a unidimensional
[P, M, Dm] → [Df]◙ Requiere varias etapas de transformación
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez37
◙ Simple: Cjto. direcciones contiguas en origen → Cjto. en destinoReubicación(D) → D’ ∪ Error
• Reubicación lineal o no lineal (contiguas en destino o no)◙ Basada en contexto: múltiples espacios origen en un destino
Reubicación(C, D) → D’
Espacio origen 10
500
Espacio destino 1100
600
Espacio origen 20
600
Espacio destino 2100
600
400500
700
900
Reubicación simple y basada en contexto
Reubicación simple
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez38
100
700
1100
0
600
0
400
200
700
1200
0
500
0
500
200
500
1300
1100
1500
1900
2100
2400
2700
Reubicaciones basadas en contexto
Espacio origen 2
Espacio destino
100
700
1100
Espacio origen 1 0
600
0
400
DD’
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez39
Edificio
EdificioEdificio
Edificio
Edificio
apartamento
apartam.
Edificio
Edificio
Edificio
Edificio
Edificio
apartam.
Terreno
Transformación geográfica
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez40
Secuencia de reubicaciones
◙ Reubicación de módulos (montador)• Módulo (unid. compilación) vs. Región (parte del mapa)
◙ Reubicación de regiones (¿?)◙ Reubicación de procesos (¿?)
[P, S] → [P, M, Dm] → [P, R, Dr] → [P, Dp] → [Df]◙ Si nivel de procesos y regiones fusionados (segmentación)
[P, S] → [P, M, Dm] → [P, R, Dr] → [Df]◙ Puede haber reubicación simple adicional (reubicación global)
• Con nivel procesos y regiones no fusionados[P, S] → [P, M, Dm] → [P, R, Dr] → [P, Dp] → [Dg] → [Df]• Con nivel procesos y regiones fusionados
[P, S] → [P, M, Dm] → [P, R, Dr] → [Dg] → [Df]
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez41
◙ Implementación de diversos tipos de objetos de memoria◙ Ciclo de vida de un programa◙ Protección interna del proceso◙ Modelo de desarrollo de programas en Java◙ Mapa de memoria de un proceso
Modelo de memoria de un proceso
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez42
Implementación de datos estáticos
◙ Existe durante vida del programa: asignada dirección fija◙ Distintos tipos:
• Visibilidad (no incumbe a esta presentación):• Variables o constantes:
○ Constante: región no modificable• Con o sin valor inicial asignado
○ Con valor: almacenado en ejecutable◙ Implementación habitual de referencia:
• Direccionamiento absoluto○ Igual que referencias a instrucciones○ Requiere reubicación
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez43
Código independiente de la posición (PIC)
Memoria
100104108112116120124128132136.....
LOAD R4, 32(PC)CALL 8 PCINC R1INC R2DEC R3.................................................................... DATO
Memoria
120124128132136140144148152156.....
LOAD R4, 32(PC)CALL 8 PCINC R1INC R2DEC R3.................................................................... DATO
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez44
Implementación de datos asociados a función
◙ Parámetros y variables locales no estáticas◙ No espacio en mapa inicial ni ejecutable◙ Uso de pila para almacenarse◙ Dirección se determina en tiempo de ejecución◙ Cumple PIC: No reubicación◙ Compilador resuelve implementación◙ Pueden tener valor inicial, pero lo carga el propio programa◙ Gestión de la pila: nivel de gestión de zonas
• Caso trivial del problema general de asignación de memoria
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez45
int a; /* variable estática global sin valor inicial */ int b=8; /* variable estática global con valor inicial */static int c; /* variable estática de módulo sin valor inicial */ static int d=8;/* variable estática de módulo con valor inicial */const int e=8; /* constante estática global */static const int f=8;/* constante estática de módulo */extern int g; /* referencia a variable global de otro módulo */ void funcion(int h) /* parámetro: variable dinámica de función */{
int i; /* variable dinámica de función sin valor inicial */int j=8; /* variable dinámica de función con valor inicial */static int k; /* variable estática local sin valor inicial */static int l=8; /* variable estática local con valor inicial */{
int m; /* variable dinámica de bloque, sin valor inicial */int n=8;/* variable dinámica de bloque, con valor inicial */
}}
Ejemplo de uso de distintos datos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez46
◙ Creados por programa usando mecanismos del lenguaje• Almacenados en la región de heap
◙ Liberados explícitamente o por recolección de basura• Java todos los objetos en heap; recolección de basura
◙ Dirección se determina en tiempo de ejecución• Direccionamiento indirecto• Cumple PIC: No reubicación
◙ Compilador y biblioteca del lenguajes resuelven implementación• SO sólo ofrece región de heap como soporte
Implementación de datos dinámicos de heap
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez47
Ejemplo de uso de los tres tipos
struct tipo {int a;int b;
};int main(int argc, char *argv[]) {
static struct tipo v_estatica;struct tipo v_dinamica;struct tipo *v_heap;v_heap=malloc(sizeof(struct tipo));v_estatica.b=11; v_dinamica.b=22;v_heap->b=33;return 0;
}
Memoria
200204208212216
STORE #11, (204)STORE #22, 8(SP)LOAD R1, (SP)STORE #33, 4(R1)
v_estatica.av_estatica.b
v_heap->av_heap->b
v_heap=212v_dinamica.av_dinamica.b
SP
Código
Datos
Heap
Pila
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez48
Gestión del heap
◙ Gestionado por lenguaje de programación no por SO• Más eficiente y flexible
◙ Instancia del problema general con sus peculiaridades:• Espacio a gestionar con tamaño dinámico• Muchas peticiones, muy urgentes, aprovechamiento memoria
◙ Solución habitual:• Múltiples listas huecos de tamaño variable con info. interna
◙ Multithread/multiprocesador: Acceso al heap cuello de botella• Uso de múltiples heaps
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez49
Operaciones sobre el heap
◙ reservar_zona (malloc en C) • Reservar bloque• Si no hueco disponible, redimensionar_región (sbrk)
◙ liberar_zona (free en C) • Liberar bloque (habitualmente no se contrae)
◙ redimensionar_zona (realloc en C) • Si más pequeña: generar hueco• Si más grande: ¿hueco adyacente suficiente?
○ Sí, se usa, generando hueco○ No, requiere copia:
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez50
int main(int argc, char *argv[]) {int i;int v[10];int *p, *q;/* uso de un puntero sin tener memoria asignada */*p=5;/* uso de un puntero suelto */p=malloc(sizeof(int));*p=7;free(p);i=*p; /* puntero suelto *//* dos liberaciones sucesivas */p=malloc(sizeof(int));free(p);free(p);/* liberación de sólo parte de una zona */p=malloc (5*sizeof(int));p++;free(p);
Uso de memoria dinámica propenso a errores
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez51
/* liberación de espacio que no pertenece al heap */free(v);/* desbordamiento superior */p=malloc (5 * sizeof(int));p[5]=4;free(p);/* goteras en memoria */p=malloc(sizeof(int));q=malloc(sizeof(int));p=q; /* primera zona reservada queda inutilizable *//* no contar con que redimensionar puede mover la zona */p=malloc(5 * sizeof(int));realloc(p,7 * sizeof(int));
/* debería ser: p=realloc(p,7 * sizeof(int)); */p[6]=666;
}
Uso de memoria dinámica propenso a errores
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez52
Recolección de basura
◙ Mayoría de fallos: liberar erróneamente. • Solución: Liberación automática
◙ Diversas opciones de diseño del recolector de basura• Recorrido de referencias vs. contador de referencias• Con servicio parado o concurrente
◙ Recolección de basura menos eficiente: ¿Siempre?• Repetir 100.000 veces crear y destruir mismo objeto
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez53
Ciclo de vida de un programa
Módulofuente A
Módulofuente B
Móduloobjeto A
Móduloobjeto B
Montador
Ficheroejecutable
Bibliotecasestáticas
Bibliotecasdinámicas
Códigoen memoria
Cargador del SO
Compilador Compilador
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez54
Compilación
◙ Genera código y calcula tamaño datos estáticos• Tres secciones: código+constantes; datos con y sin v. inicial
◙ Asigna direcciones a datos estáticos definidos en el módulo◙ Resuelve referencias a símbolos estáticos (código o datos)
• Si definidos en el módulo: Direcc. absoluto o relativo a PC• Si externos, pendiente; Montador resolverá
◙ Referencias a datos dinámicos (son PIC):• De función: relativo a SP; De heap: dir. indirecto
◙ Otras secciones:• Info. de reubicación y depuración + Tabla de símbolos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez55
const int constante = 5;static int v_con_valor = 7;int v_sin_valor;extern int v_externa;int main() {
f(5); /* CALL /200 */v_externa = v_con_valor;
/* LOAD R1, /300STORE R1, ??? */
...................void f(int x) {
...................
Construcción de código objeto
Código+
constantes
Datos convalor inicial
0
200
250
300
450
CALL 200..................
LOAD R1, (300)STORE R1, ???
..................Inicio de función f
..................constante = 5
..................v_con_valor = 7
v_sin_valorDatos sin
valor inicial
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez56
Cabecera
Fichero objetoNúmero mágico
Tabla de secciones
Código+
constantes
Datos con valor inicial
Información de depuración
............ ....... .CódigoDatos con v.i.Datos sin v.i.T. Símbolos
100500------
400200300
100
Despl. Tam. Mapa Perm.0
100
500
700
800
900
SeccionesTabla de símbolos
Información de reubicación
I. depuraciónI. reubicación
700800900
100
100
SíSíSíNoNoSí
R-XRW-RW-
Formato de objeto
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez57
Montaje
◙ Ejecutable: unión de objetos◙ Completa resolución:
[P, S] → [P, M, Dm]◙ Agrupa secciones◙ Reubicación de módulos:
[P, M, Dm] → [P, R, Dr]
Código+
constantes
Datos convalor inicial
0
200
250
300
450
CALL 200..................
LOAD R1, (300)STORE R1, ???
..................Inicio de función f
..................constante = 5
..................v_con_valor = 7
v_sin_valorDatos sin
valor inicial
Código+
constantes
Datos convalor inicial
0
200
300
450
Datos sinvalor inicial
Módulo 1
Módulo 2
Código+
constantes
Datos convalor inicial
0
100
200
300
Datos sinvalor inicial
Módulo 3
Código 1
Datos ini 1
Datos no ini 1
Código 3
Datos no ini 3
Código 1
v_externa = 9
Región 1
CALL 400..................
LOAD R1, (Región 2:100)STORE R1, (Región 2:250)
..................Inicio de función f
..................constante = 5
..................
Código 3
Región 2
Datos ini 1v_con_valor = 7
v_externa =9
Región 3
Datos no ini 1
Datos no ini 3
v_sin_valor
0
200
400
500
0
100
250
0
150
300
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez58
Reubicación de módulos: direcc. relativo a PC
Código+
constantes
Datos convalor inicial
0
200
250
300
450
CALL 150 PC..................
LOAD R1, 200(PC)....................................
Inicio de función f..................
constante = 5..................
v_con_valor = 7
v_sin_valorDatos sin
valor inicial
Código+
constantes
Datos convalor inicial
0
200
300
450
Datos sinvalor inicial
Módulo 1
Módulo 2
Código+
constantes
Datos convalor inicial
0
100
200
300
Datos sinvalor inicial
Módulo 3
Código 1
Datos ini 1
Datos no ini 1
Código 3
Datos no ini 3
Código 1
v_externa = 9
Región 1
Código 3
Región 2
Datos ini 1v_con_valor = 7
v_externa =9
Región 3
Datos no ini 1
Datos no ini 3
v_sin_valor
0
200
400
500
0
100
250
0
150
300
CALL 150 PC..................
LOAD R1, 200(PC)....................................
Inicio de función f..................
constante = 5..................
X
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez59
Montaje: reubicación regiones[P, R, Dr] → [P, Dp]
No si fusión n. procesos y regiones• 1 región → 1 segmento
Región 1
CALL /400..................
LOAD R1, /Región 2:100STORE R1, /Región 2:250
..................Inicio de función f
..................constante = 5
..................
Región 2
v_con_valor = 7
v_externa =9
Región 3
v_sin_valor
0
200
400
0
100
250
0
150
0
200
400
600
700
850
950
1100
CALL /400..................
LOAD R1, /700STORE R1, /850
..................Inicio de función f
..................constante = 5
..................
v_con_valor = 7
v_externa =9
Mapa del proceso
v_sin_valor
Código+
constantes
Datos convalor inicial
Datos sinvalor inicial
Reubicación de regiones
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez60
Cabecera
Fichero ejecutableNúmero mágico
Tabla de regiones
Código+
constantes
Datos con valor inicial
Información de depuración
.... ........ ....... . CódigoDatos con v.i.Datos sin v.i.
100500------
400200300
Despl. Tam. Perm.0
100
500
700
Regiones
I. depuración 700 100
R-XRW-RW-
Dir. de inicio del programa
Formato del ejecutable
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez61
◙ Segmentación: Hardware reubica regiones y procesos[P, R, Dr] → [Df]
◙ Resto de sistemas: Montador ya reubicó regiones, falta procesos:[P, Dp] → [Df]
• Puede hacerlo el hardware• O el software: reubicación en la carga
Carga y ejecución
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez62
Bibliotecas
◙ Biblioteca: colección de módulos objeto relacionados◙ Bibliotecas de SO, de cada lenguaje, creadas por usuario...◙ Usuario especifica bibliotecas requeridas en montaje◙ Si programa referencia símbolo en biblioteca
• Montador extrae objeto(s) requerido(s) de biblioteca◙ Una vez extraídos objetos requeridos, montaje convencional◙ Desventajas del montaje estático de bibliotecas:
• Ejecutables grandes• Código de biblioteca repetido en ejecutables y memoria • Actualización de biblioteca implica volver a montar
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez63
Bibliotecas dinámicas
◙ Solución: Dynamically Linked Library (biblioteca dinámica)• Carga y montaje en tiempo de ejecución• Transparente y con sobrecarga tolerable
◙ Generada también por el montador• Reubicación de módulos resuelta (organizada en regiones)• Pendiente resolución de símbolos y reubicación
◙ Montaje de programa que usa biblioteca• No se realiza resolución ni se incluye código de biblioteca• En ejecutable: anota su uso e incluye cargador/montador
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez64
Módulofuente A
Módulofuente B
Móduloobjeto A
Móduloobjeto B
Montador (opción shared)
Bibliotecasestáticas
Bibliotecasdinámicas
Compilador
Generación de una biblioteca dinámica
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez65
Implementación de bibliotecas dinámicas
◙ Tres aspectos a resolver (segmentación estudio separado):• Referencias de la biblioteca a sus propios símbolos• Referencias de programa a símbolos de biblioteca• Cuándo cargar/montar la biblioteca dinámica
◙ Dos primeros ¿ya resueltos?: montaje en ejecución• Pero modifica código de programa y biblio: compartir
◙ 2 opciones: bibliotec. compartidas o dinámicamente montadas
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez66
Bibliotecas compartidas
◙ Resolución de símbolos y reubicación de regiones en t. montaje• Menos flexible pero más sencilla y eficiente• Asignar rango de direcciones fijo a cada biblioteca○ Si rango previsto ocupado, reubicación (compartir)
◙ Actualización de bibliotecas compartidas• Refer. externa: acceso indirecto usando posición de tabla• Nueva versión mantiene posiciones en la tabla• Compilador no sabe si se precisa indirección en refer. ext.○ Referencia a función: uso de función de resguardo○ Referencia a variable: Implementaciones no transparentes
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez67
Programa que usa biblioteca compartida
0
100
200
300
600
650
700
800
900
950
LOAD R1, (650)STORE #666, (R1)
..................CALL 300..................
JMP (600)JMP ........JMP ........
v_externa =9
Mapa del proceso
Códigodel programa
800..................
950..................
Funcionesde resguardo
Códigode la biblioteca
..................Inicio de función F
..................
Datosde la biblioteca
Tabla de funciones yvariables exportadas
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez68
Bibliotecas dinámicas en Windows
◙ DLL (Dynamically Linked Libraries)• Son bibliotecas compartidas
◙ Para indicar acceso a variable externa de biblioteca compartida• Uso de directiva dllimport• Aplicable a referencia a función externa de bib. compartida
◙ Peculiaridad:• En código de biblioteca deben indicarse símbolos exportados• Uso de directiva dllexport
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez69
Bibliotecas dinámicamente montadas
◙ Resolución símbolos y reubicación de regiones en t. ejecución• Permite técnicas sofisticadas como interposición
◙ Uso de código PIC en biblioteca◙ Direccionamiento indirecto a través de tabla
• En ejec. resolución de símbolos externos: actualiza tabla• Compilador no sabe si se precisa indirección en refer. ext.○ Referencia a función: resguardo○ Ref. a variable: se asocia al programa (bib. usa indirecto)
◙ Resolución t. de ejecución puede ser ineficiente: Preenlazado
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez70
Biblioteca que usa bib. dinámicamente montada
0
100
200
300
400
500
600
650
700
800
900
950
LOAD R1, 300(PC)STORE #666, (R1)
..................CALL 300..................
JMP 96(PC)JMP ........,,,JMP ...........
v_externa =9
Mapa del proceso
800950
..................
Código de labiblioteca 2
..................Inicio de función F
..................
Datos de labiblioteca 2
Tabla deindirección
Código de labiblioteca 1
Datos de labiblioteca 1
Funcionesde resguardo
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez71
Programa que usa bib. dinámicamente montada
0
100
200
300
400
500
600
650
700
800
900
950
STORE #666, (500)..................CALL 300..................
JMP (400)JMP ........JMP ........
v_externa =9
Mapa del proceso
Código delprograma
800..................
Código de labiblioteca
..................Inicio de función F
..................
Datos de labiblioteca
Datos delprograma
Funcionesde resguardoTabla deindirección
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez72
Tiempo de carga y montaje
◙ Solución inmediata:• Carga y montaje de todas bibliotecas antes de empezar
◙ Solución perezosa:• Esperar primer acceso a símbolo para cargar/montar• Si símbolo es función: valor inicial, llamada a cargador• Si símbolo es dato: ¿Cómo enterarse?
◙ Solución intermedia:• En inicio se cargan bibliotecas y se resuelven ref. a datos• Referencias a funciones igual que en solución perezosa
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez73
Resolución de referencias diferida
0
100
200
300
400
500
600
700
800
850
900
950
LOAD R1, 300(PC)STORE #666, (R1)
..................CALL 300CALL 304..................
JMP 96 (PC)JMP 100(PC)JMP ............
v_externa =9
Mapa del proceso
800950600
Código de labiblioteca 2
Datos de labiblioteca 2
Tabla deindirección
Código de labiblioteca 1
Datos de labiblioteca 1
Funcionesde resguardo
..................Inicio de función F
..................Inicio de función G
Código de carga y montaje
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez74
Ventajas de bibliotecas dinámicas
◙ Ventajas: las desventajas de las estáticas• Cuidado con actualización automática: Uso de versiones
◙ Desventajas:• Ejecutable no autocontenido (“El infierno de las DLL”)• Menos eficiente
◙ Montaje explícito de bib. dinámicas:• No se especifica biblioteca en mandato de montaje• Programa solicita carga de bib. mediante servicio del sistema• Acceso “no” transparente a símbolos de la biblioteca• Permite carga dinámica de código
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez75
Protección interna del proceso
◙ Modelo “tradicional” de proceso: es un todo integrado• No es necesario proteger distintas partes del código entre sí
◙ Nuevo modelo: proceso carga código externo (p. ej. applet)• Puede acceder a recursos y mapa del proceso
◙ Ejecución confinada de código externo (sandbox)• Filtrado de llamadas• Control de accesos al mapa. Alternativas:
○ Uso de lenguajes con un sistema seguro de tipos○ Entorno de compilación que incluye código de control de accesos○ Uso de lenguaje interpretado○ Ejecución en una máquina virtual
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez76
Modelo de desarrollo de programas de Java
◙ Presenta características específicas interesantes• Uso de máquina virtual (JVM)• Lenguaje con un sistema seguro de tipos• Carga de clases por demanda en tiempo de ejecución• Validación de código objeto durante su carga• Resolución de símbolos en t. ejecución (montaje dinámico)• Máquina virtual proporciona sandbox
◙ Java adecuado para desarrollar extensiones
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez77
Mapa de memoria de un proceso
◙ Evolución del mapa de memoria del proceso: Nivel de regiones• Si segmentación: Lo estudiaremos de forma separada
◙ Mapa de memoria o imagen del proceso: conjunto de regiones◙ Región: zona contigua tratada como unidad
• dirección de comienzo y tamaño inicial• soporte: En fichero o sin soporte (anónima)• protección: RWX• uso compartido o privado• tamaño fijo o variable
◙ Ejecución de programa: Crea mapa a partir de ejecutable• Regiones de mapa inicial → Regiones de ejecutable
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez78
Fichero ejecutableNúmero mágico
Tabla de regiones
Código(constantes)
Datos con valor inicial
.... ........ ....... .
. . . . . . . . . . . . . . . .
0
1000
5000
6000
Datos con valor inicial
0
4000
5000 Datos sin valor inicial
Pila
Variables de entorno yargumentos del programa
“0”
Cabecera
Regiones
Código(constantes)
Dir. de inicio del programa
Mapa del proceso
Crear mapa desde ejecutable
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez79
Regiones del mapa de memoria
Región Soporte Protección Comp/Priv Tam Ubicación
Código Fichero RX Compartida Fijo Prefijada
Dat. con v.i. Fichero RW Privada Fijo Prefijada
Dat. sin v.i. Sin soporte RW Privada Fijo Prefijada
Pilas Sin soporte RW Privada Var Cualquiera
Heap Sin soporte RW Privada Var Cualquiera
F. Proyect. Fichero por usuario Comp./Priv. Fijo Cualquiera
M. Comp. Sin soporte por usuario Compartida Fijo Cualquiera
Bib.dinám. Regiones para código y datos (con y sin valor inicial)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez80
Mapa de memoria
Datos con valor inicial
Datos sin valor inicial
Pila del proceso
Heap
Zona de memoria compartida
Pila de 1thread
Fichero proyectado F
Código biblioteca dinámica BDatos biblioteca dinámica B
Código
Privado, RW
Compartido, R X
Com./Priv., ??
Privado, RW
Privado, RW
Compartido, ??
Compartido, R X
Privado, RW
Mapa de memoria de un proceso hipotético
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez81
Determinar el tamaño del mapa
◙ Suficiente para albergar todas las regiones (iniciales y nuevas)• Y, para regiones dinámicas, su máximo tamaño
◙ SO no puede conocerlo a priori• Si se queda corto, proceso falla durante ejecución• Si se pasa, desaprovechamiento de memoria
◙ En sistemas basados en paginación no hay problema• Huecos no consumen espacio en nivel de procesos• Mapa muy grande con pila al final del mismo
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez82
Gestión del nivel de regiones
◙ Instancia del problema general. Diferencias con heap:• Menos peticiones, dinamismo y urgencia• Multithread/multiprocesador: conflicto poco probable• Gestión del SO, hay que asegurar integridad• Tamaño de peticiones significativamente mayor
◙ Solución habitual:• Información de estado externa (en memoria del SO)• Uso de lista única
○ SO mantiene tabla de regiones (lista de regiones)• Mecanismo de sincronización controla accesos concurrentes
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez83
Implementación de la tabla de regiones
Mapa de memoria de P50
800010000
Región 1
Región 2
16000
21000
Región 3
Región 426000
22000
0
8000
10000
16000
16000
21000
22000
26000
BCP de P5
t. de regiones
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez84
Operaciones sobre regiones
◙ crear_región• Reserva espacio en mapa y para descriptor de región• Cargar de fichero o rellenar a 0 (inmediata o diferida)
◙ eliminar_región• Libera espacio en mapa y en lista de regiones
◙ redimensionar_región• Crece: detecta no solape y asigna espacio contiguo en mapa• Decrece: libera espacio no requerido
◙ duplicar_región• Reserva de espacio en mapa y para descriptor de región• Copia de contenido (inmediata o diferida)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez85
◙ Nivel de gestión de procesos• ¿Cómo se reparte la memoria entre mapas de los procesos?• Muy ligado al hardware de gestión de memoria
◙ Esquemas de gestión analizados:• Asignación contigua• Segmentación• Paginación• Segmentación paginada
Esquemas de gestión de la memoria del sistema
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez86
Asignación contigua
Memoria0
800010000
Proceso 4
Proceso 7
16000
21000
Proceso 3
Proceso 226000
22000
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez87
Asignación contigua: gestión software
◙ ¿Es posible?: Similitud con bib. dinámicas◙ Reubicación en el nivel de procesos
• Reubicación en la carga (impide compartir)• Código del ejecutable PIC
◙ Protección en el nivel de procesos• Uso de lenguajes con un sistema seguro de tipos• Entorno de compilación incluye código de control de accesos• Uso de lenguaje interpretado• Ejecución en una máquina virtual
◙ Soluciones poco generales y/o poco eficientes
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez88
LOAD R1, #1000LOAD R2, #2000LOAD R3, (1500)LOAD R4, (R1)STORE R4, (R2)INC R1INC R2DEC R3JNZ 12.................
Cabecera
Fichero Ejecutable04
....96
100104108112116120124128132136
LOAD R1, #11000LOAD R2, #12000LOAD R3, (11500)LOAD R4, (R1)STORE R4, (R2)INC R1INC R2DEC R3JNZ 10012.................
Memoria
10000100041000810012100161002010024100281003210036..........
Reubicación en la carga
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez89
◙ Proporciona protección por hardware◙ Requiere reubicación por software
Registros límite
Memoria
Excepción
Procesador
PC
R. Instrucción
Hardware de traducción
LOAD R3,(15000)
10100
<1500016000
R.lím.inf. R.l m.sup.í10000
>
Excepción
0
800010000
Proceso 4
Proceso 7
16000
21000
Proceso 3
Proceso 226000
22000
10100 Instrucci nó15000
Dato15000SÍ SÍ
NONO
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez90
◙ Protección + reubicación de procesos por hardware[P, Dp] → [Df]
Registros base y límite
Excepción
Procesador
PC
R. Instrucción
Hardware de traducción
LOAD R3,(5000)
100 6000
>500010000
+
R.límite R.base
SÍNO
Memoria0
800010000
Proceso 4
Proceso 7
16000
21000
Proceso 3
Proceso 226000
22000
1500010100 Instrucci nó
Dato15000
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez91
Creación de espacio lógico independiente
◙ Registros desactivados en modo núcleo• SO no posee espacio
lógico propio
Memoria0
800010000
Proceso 4
Proceso 7
16000
21000
Proceso 3
Proceso 226000
22000
0 8000
10000 6000
16000 5000
22000 4000
BCP de P4
BCP de P7
BCP de P3
BCP de P2
base límite
base límite
base límite
base límite
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez92
Gestión del espacio y operaciones de memoria
◙ Deficiencias de asignación contigua• No soporte regiones, no compartir, no base de m. virtual
◙ Dos alternativas: Particiones fijas o variables◙ Operaciones:
• crear_mapa: Buscar hueco suficiente para mapa• duplicar_mapa: Nuevo mapa y copiar contenido• eliminar_mapa: Liberar bloque• cambiar_mapa: Instalar registros valla en cambio contexto
◙ Operaciones de regiones usan mapa como espacio de 0 a N
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez93
Gestión basada en particiones estáticas
Memoria0
8000
14000
Proceso 1
20000
30000
0 3500
4000 4000
14000 5500
20000 4000
BCP de P6
BCP de P1
BCP de P5
BCP de P3
base límite
base límite
base límite
base límite
Listas de huecos
4000
6000
10000
Proceso 6
Proceso 5
Proceso 3
4000
Hueco
Hueco
00
10
01
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez94
Gestión basada en particiones variablesMemoria
0
800010000
Proceso 4
Proceso 7
16000
21000
Proceso 3
Proceso 226000
22000
0 8000
10000 6000
16000 5000
22000 4000
BCP de P4
BCP de P7
BCP de P3
BCP de P2
base límite
base límite
base límite
base límite
8000
2000
21000
1000
Lista de huecos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez95
Espacio de instrucciones y de datos separados
Excepción
Procesador
PC
R. Instrucción
Hardware de traducción
LOAD R3,(2000)
100
3000
>10010000
+
R.límiteI R.baseI
Memoria0
800010000
Datos de proceso 4
C digo de proceso 7ó
16000
21000
26000
23000Excepción
3000
> +
R.límiteD R.baseD
C digo de proceso 3ó
Datos de proceso 7
1300010100
200023000
25000
Datos de proceso 3
10100 Instrucci nó
Datos de proceso 2
C digo de proceso 4ó
C digo de proceso 2ó
Dato25000
SÍ
SÍ
NO
NO
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez96
Compartir con espacio de I/D separados
Memoria0
4000
10000
Datos de proceso 3
16000
20000
26000
22000
10000 6000
BCP de P1
base límite
C digoó
Datos de proceso 1
Datos de proceso 2
16000 4000
10000 6000
BCP de P2
base límite
22000 4000
10000 6000
BCP de P3
base límite
0 4000
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez97
Segmentación
Memoria0
800010000
Región 3 del Proceso 5
16000
21000
26000
23000
Región 2 del Proceso 4
Región 1 del Proceso 4
Región 3 del Proceso 7
Región 1 del Proceso 7Región 1 del Proceso 5
Región 3 del Proceso 4
Región 2 del Proceso 5
Región 2 del Proceso 7
2000
5000
1200014000
1800019000
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez98
Segmentación: Aspectos hardware
◙ Esquema que intenta dar soporte directo a las regiones◙ Generalización de registro base y límite: 1 pareja/segmento◙ Dirección lógica: núm. de segmento + dirección en segmento◙ MMU usa una tabla de segmentos (TS)
• Si pocos segmentos se puede almacenar en MMU• Si no, en memoria; Necesidad de caché
◙ Entrada de TS contiene (entre otros):• r. base y límite del segmento• protección: RWX + bit de validez
◙ Dir. lógicas de usuario y de sistema (p.e. empiezan por 0 ó 1)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez99
memoria
límite base
s d
Dirección lógica
Excepción
> +NO
Direcciónfísica
Registro a tablade segmentos
d‘
RWX V/I
based
d‘
SÍ
Esquema de traducción con segmentación
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez100
Esquema de segmentación: usuario y sistema
0 s d
Dirección lógica
Excepción
> +NO
Direcciónfísica
Registro a tabla desegmentos de usuario
d‘
1 s d
Dirección lógica
Excepción
> +NO
Direcciónfísica
Registro a tabla desegmentos de sistema
d‘
memoria
límite baseRWX V/I
límite baseRWX V/I
SÍ
SÍ
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez101
Creación de espacio lógico independiente
◙ SO mantiene TSU por proceso (t. de regiones)• En c. contexto notifica a MMU qué TSU debe usar
◙ SO mantiene una única TSS que no cambia• Procesos comparten mapa del sistema operativo• SO interpreta directamente direcciones de usuario de p. actual• SO usa asociaciones temporales para acceso a resto de memoria
◙ Segmentación: reubicación (doble) de regiones y de procesos[P, R, Dr] → [Df]
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez102
Ejemplo de segmentación
BCP de P4
BCP de P7
BCP de P5
8000
2000
18000
1000
Lista de huecos
Memoria0
800010000
Región 3 del Proceso 5
16000
21000
26000
23000
Región 2 del Proceso 4
Región 1 del Proceso 4
Región 1 del SO
Región 1 de Procesos 7 y 5Región 2 del SO
Región 3 del Proceso 4
Región 2 del Proceso 5
Región 2 del Proceso 7
2000
5000
1200014000
1800019000
5000 3000 R-X V 0 2000 RW- V16000 2000 RW- V
Región 3 del Proceso 7
14000 2000 R-X V 23000 3000 RW- V
21000 2000 RW- V
0 2000 RW- V
14000 2000 R-X V
14000 2000 R-X V 19000 2000 RW- V
2000 3000 RW- V
14000 2000 R-X V
Registro a tabla desegmentos de usuario
10000 2000 R-X V 12000 2000 RW- V
Registro a tabla desegmentos de sistema
t.segmentos
t.segmentos
t.segmentos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez103
Ejemplo de referencias a memoria
BCP de P1
Memoria0
8000 A000
1A000
17000
2000
C000 E000
1200013000
Registro a tabla desegmentos de usuario
2000 6000 R-X V E000 4000 RW- V
Registro a tabla desegmentos de sistema
t.segmentos A000 2000 RW- V 13000 4000 R-X V
LOAD (01000000)JMP 00000000
18000
BCP de P2
t.segmentos 18000 2000 RW- V 13000 4000 R-X V
Dato del programa
Dato del programa
LOAD (81000000)JMP 80000000
Dato del SO
01000000 → P1 (0A000) P2 (18000) 81000000→ P1 (E000) P2 (E000)00000000 → P1 (13000) P2 (13000) 80000000 → P1 (2000) P2 (2000)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez104
Soporte de regiones, compartir y m. virtual
◙ Soporte directo de regiones (punto fuerte)◙ Compartir: directo (región = segmento)
• 2 entradas iguales en 2 TSU• Pero sigue habiendo problemas con autorreferencias• Afecta a bibliotecas dinámicas. Mismas dos opciones:
○ Preasignar número de segmento versus Tabla de indirección◙ Soporte de memoria virtual
• No adecuado para m. virtual por tamaño variable de segmentos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez105
Problemas al compartir una región
zona compartida
Memoria
00000100 ó 010001001000010100
BCP de P1
BCP de P2
---- ---- ---- -- 10000 500 RW- Vt.segmentos
t.segmentos
---- ---- ---- --
---- ---- ---- -- ---- ---- ---- --
10000 500 RW- V
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez106
Gestión de espacio y operaciones de memoria
◙ Nivel de procesos y regiones fusionado• Espacio de regiones se busca en m. del sistema no en mapa
◙ Operaciones de procesos:• crear_mapa: Sólo crea tabla de segmentos• eliminar_mapa: Libera tabla de segmentos• duplicar_mapa: Copia de tabla de segmentos• cambiar_mapa: Cambia de TSU en cambio contexto
◙ Operaciones de regiones:• crear_región: Reserva entrada TSU (fija o no) y hueco• eliminar_región: Libera espacio y entrada en TSU• duplicar_región: Reserva de espacio y entrada, y copia• redimensionar_región: si crece, asignar; si decrece, liberar
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez107
Paginación: Fundamento
◙ Asignación contigua: mal aprovechamiento por frag. externa◙ Óptimo es irrealizable◙ Paginación: cambio de escala de byte a página
• Cualquier página de proceso en cualquier marco de página• Peor aprovechamiento (f. interna) pero t. de traducción menor• Asignación no contigua: Reubicación no lineal
◙ Función de reubicación• Ejemplo: dirección lógica 1536 en física 2560 (pág. 1024)
○ Tabla[1536/1024].marco*1024 + 1536%1024 =2560○ Cálculo complejo: no si tamaño de página es potencia de 2
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez108
Aprovechamiento óptimo
Dirección 50 del proceso 4
Dirección 10 del proceso 6
Dirección 95 del proceso 7
Dirección 56 del proceso 8
Dirección 0 del proceso 12
Dirección 5 del proceso 20
Dirección 0 del proceso 1
Dirección 51 del proceso 4
Dirección 88 del proceso 9
.........................................
.........................................
Memoria
0
1
2
3
4
5
6
N-1
N
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez109
Aprovechamiento con paginación
Página 5 del proceso 20
Página 50 del proceso 4
Página 10 del proceso 6
Página 95 del proceso 7
Página 56 del proceso 8
Página 0 del proceso 12
Página 0 del proceso 1
Página 51 del proceso 4
Página 88 del proceso 9
.........................................
.........................................
Memoria
0
1
2
3
4
5
6
N-1
N
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez110
Reubicación no lineal en paginación
◙ Dir. lógica (1536) 00000000000000000000011000000000◙ Tabla[0000000000000000000001]=0000000000000000000010◙ Dir. física (2560) 00000000000000000000101000000000
Marco 0
Memoria
Marco 1Marco 2
Marco 3
Marco 4
Marco N
P gina 0á
Mapa del proceso
P gina 1áP gina 2á
P gina 3á
Página 1
Página 0
Página 3
Página 2
0
1024
2048
3072
1536
0
1024
2048
3072
..... ...
..... ...
..... ...
2560P gina 0á
Mapa del proceso
P gina 1áP gina 2á
P gina 3á
0
1024
2048
3072
1536
Tabla de p ginasá
Marco N
Marco 2
Marco 0
Marco 3
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez111
Paginación. Aspectos hardware
◙ Mapa de memoria del proceso dividido en páginas◙ Memoria principal dividida en marcos (tam. marco=tam. página)◙ Tabla de páginas (TP): Asocia página y marco que la contiene◙ Normalmente espacio lógico ≥ físico (bits de p ≥ bits de m)
• Excepción: Intel PAE (Physical Address Extension)◙ Tabla de páginas única vs 2 tablas de páginas separadas◙ Si mapa de E/S y memoria común: dir. lógica → dir. de E/S
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez112
Esquema de traducción con TP única
memoria
Marco m
p d
Dirección lógica
Direcciónfísica
Registro a tablade páginas
m d
RWX V/Id
Marco m
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez113
Esquema de traducción con TP usuario y sistema
memoria
Marco m
0 p d
Dirección lógica
Direcciónfísica
Registro a tabla depáginas de usuario
m d
RWX V/I
Marco m
Dirección lógica
Direcciónfísica
m d
RWX V/I
1 p d
Registro a tabla depáginas de sistema
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez114
Contenido de entrada de TP
◙ Número de marco asociado◙ Información de protección: RWX◙ Bit de página válida/inválida◙ Bit de página accedida (Ref)◙ Bit de página modificada (Mod)◙ Bit de desactivación de caché (para direcciones de E/S)◙ Entrada de sistema (S): Presente en MMU con TP única◙ Indicador de página global (G): accesible por todos◙ Indicador de superpágina
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez115
Tamaño de la tabla de páginas
◙ Condicionado por diversos factores contrapuestos:• Potencia de 2 y múltiplo de sector de disco• Compromiso (entre 1K y 16K)• Pequeño: Menor f. interna, mejor ajuste a conjunto de trabajo• Grande: Tablas más pequeñas, mejor rendimiento de disco
◙ Lo fija el procesador• Algunos permiten configurar distintos tamaños• Algunos implementan superpáginas
○ Por ejemplo: superpáginas de 4M y páginas de 4K
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez116
Creación de espacio lógico independiente
◙ SO mantiene una TP por cada proceso• En c. contexto notifica a MMU cuál debe usar
[P, Dp] → [Df]◙ Si TP separadas, SO mantiene una única TP para propio SO◙ Si TP única, cada TP incluye entradas para SO marcadas con S
• TP única más flexible pero propagar cambios en entradas S◙ Proceso modo sistema acceso directo a su mapa y al de SO
• Procesos comparten mapa del sistema operativo• SO interpreta directamente direcciones de usuario de p. actual• SO usa asociaciones temporales para acceso a resto memoria
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez117
Paginación con TP usuario y sistema
BCP de P4
BCP de P7
BCP de P5
MemoriaMarco 0 (0KB) P gina 2 del Proceso 4á
0000A V
Registro a tabla dep ginas de usuarioá
Registro a tabla dep ginas de sistemaá
t. páginas
t. páginas
t. páginas
00007 V00000 V
00006 V00001 V0000B V
00003 V00004 V00008 V
00005 V00002 V00009 V
P gina 1 del Proceso 7áP gina 1 del SOáP gina 0 del Proceso 5áP gina 1 del Proceso 5áP gina 0 del SOáP gina 0 del Proceso 7áP gina 1 del Proceso 4áP gina 2 del Proceso 5áP gina 2 del SOá
................................
P gina 0 del Proceso 4áP gina 2 del Proceso 7á
Marco 3 (12KB)Marco 4 (16KB)Marco 5 (20KB)Marco 6 (24KB)
Marco 7 (28KB)Marco 8 (32KB)Marco 9 (36KB)Marco A (40KB)Marco B (44KB)
Marco 1 (4KB)Marco 2 (8KB)
.........
.........
.........
.........
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez118
Paginación con TP única
BCP de P4
BCP de P7
BCP de P5
MemoriaMarco 0 (0KB) P gina 2 del Proceso 4á
0000A V U
Registro a tablade p ginas á
t. páginas
t. páginas
t. páginas
00007 V U00000 V U
00005 V S00002 V S00009 V S
P gina 1 del Proceso 7áP gina 1 del SOáP gina 0 del Proceso 5áP gina 1 del Proceso 5áP gina 0 del SOáP gina 0 del Proceso 7áP gina 1 del Proceso 4áP gina 2 del Proceso 5áP gina 2 del SOá
................................
P gina 0 del Proceso 4áP gina 2 del Proceso 7á
Marco 3 (12KB)Marco 4 (16KB)Marco 5 (20KB)Marco 6 (24KB)
Marco 7 (28KB)Marco 8 (32KB)Marco 9 (36KB)Marco A (40KB)Marco B (44KB)
Marco 1 (4KB)Marco 2 (8KB)
.........
.........
00006 V U00001 V U0000B V U
00005 V S00002 V S00009 V S
.........
.........
00003 V U00004 V U00008 V U
00005 V S00002 V S00009 V S
.........
.........
Entrada C0000
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez119
Soporte de regiones, compartir y m. virtual
◙ No soporte directo de regiones pero fácil conseguirlo• Región ocupa número entero de páginas• SO mantiene tabla de regiones por cada proceso• Protección de región: uso de bits de protección de sus páginas• No reserva espacio para huecos: bit de validez desactivado• También soporte de regiones de SO (uso de superpáginas)
◙ Compartir región:• Entradas corresponden con mismo marco (sinónimos)
◙ Permite esquemas de memoria virtual• Unidad de transferencia: página (tamaño fijo)• Uso de bit validez: página no residente con bit desactivado
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez120
Visión global de la paginación
08192
BCP de P1
t. de regiones
t. páginas
00004 V R-X p00001 V R-X p
.........
-------- I ----- --
Mapa de memoria de P1
Región 1 (R-X)
Región 2 (RW-)
Región 3 (RW-)
.........
81924096
0
819212288
163844096
16384
MemoriaP gina 4 del Proceso 1á
P gina 0 de Procesos 1 y 2á
P gina 4 del Proceso 2áP gina 2 del Proceso 2á
P gina 2 del Proceso 1á
Superpágina 1 del SO
................................0
8192
BCP de P2
t. de regiones
t. páginas
Mapa de memoria de P281924096
163844096
Registro a tabla depáginas de usuario
Registro a tabla dep ginas de sistemaá
00C00 V R-X P
.........
Región 1 (R-X)
Región 2 (RW-)
Región 3 (RW-)
.........
0
81921228816384
Región 1 (R-X)
Región 2 (RW-)
Región 3 (RW-)
.........
0
81921228816384
Región 1 (R-X)
Región 2 (RW-)
Región 3 (RW-)
.........
0
81921228816384
00006 V RW- p
00000 V RW- p
00004 V R-X p
.........
-------- I ----- --00003 V RW- p
00002 V RW- p
P gina 1 de Procesos 1 y 2á
................................
Mapa de memoria del SO
Región 1 (R-X)
.........
0Región 1 (R-X)
Región 2 (RW-)
.........
x80000000
.........
.........
Superpágina 0 del SO
00400 V RW- P
Mapa de bits de marcos
1111101...
00001 V R-X p
Marco 0Marco 1Marco 2Marco 3Marco 4Marco 5Marco 6
Marco 400
Marco C00
........
........
x80400000
x80800000................................ ........
................................
................................
........
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez121
Gestión del espacio y operaciones sobre el mapa
◙ Asignación no contigua: Instancia especial del problema general• Todas las peticiones de 1 página• SO usa tabla de marcos: marco libre/ocupado (mapa de bits)
◙ Nivel de regiones y de procesos separados como a. contigua pero• Reserva de mem. sólo para regiones: página no usada no gasta
◙ Operaciones del nivel de procesos:• crear_mapa: Sólo crea TP con entradas inválidas • eliminar_mapa: Liberar tabla de páginas• duplicar_mapa: Copia de tabla de páginas• cambiar_mapa: Cambiar de TP en cambio contexto
◙ Operaciones de regiones igual que en asignación contigua• Pero también con acciones de nivel de procesos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez122
Operaciones sobre regiones
◙ crear_región:• Reserva marcos, busca zona libre en mapa (si ubicación libre)• Reserva entrada t.reg, conecta entradas TP a marcos y carga
◙ eliminar_región:• Libera marcos y entrada t.reg, invalida entradas TP
◙ duplicar_región: • Reserva marcos y entrada t.reg, conecta entradas TP y copia
◙ redimensionar_región: • Reserva o libera marcos, conecta o invalida entradas TP
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez123
Implementación de TP
◙ TP se mantiene normalmente en memoria principal◙ 2 problemas: eficiencia y gasto de almacenamiento◙ Eficiencia:
• Cada acceso lógico requiere 2 accesos a memoria principal• Solución: caché de traducciones → TLB
◙ Gasto de almacenamiento: Tablas muy grandes• Ejemplo: páginas 4K, dir. lógica 32 bits y 4 bytes/entrada
○ Tamaño TP: 220 *4 = 4MB/proceso• Solución: tablas multinivel y tablas invertidas
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez124
Translation Look-aside Buffer (TLB)
◙ Memoria asociativa con info. sobre últimas páginas accedidas◙ Entradas en TLB no incluyen información sobre proceso
• Invalida TLB en c. contexto (no entradas G)◙ Entradas en TLB incluyen información sobre proceso
• Registro UCP mantiene ID de p. actual: No invalidar◙ Gestionada por MMU: Si fallo usa la TP en memoria
• MMU activa Mod y Ref en TP◙ “Casi” transparente al SO
• Invalidar, si no PID, y coherencia en memoria virtual
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez125
TLB sin información de proceso
p d
Dirección lógica
Consultar la tabla de páginas
m d
P7 M5 R-X L ....
.........
P1 M6 RW- L ....P8 M0 R-X G ....
Acierto
NO
SÍ
Direcciónfísica
TLB
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez126
TLB con información de proceso
p d
Dirección lógica
Consultar la tabla de páginas
m d
P7 M5 ....ID7 R-X
.........
P1 M6 RW- .... ID6 P8 M0 R-X ....ID0
Acierto
NO
SÍ
Direcciónfísica
Registro identificadorde proceso
ID
TLB
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez127
◙ Alternativa: traspasar al SO parte del trabajo de traducción ◙ MMU no usa tablas de páginas, sólo consulta TLB◙ SO mantiene TPs que son independientes del HW◙ Fallo en TLB → Activa SO◙ SO se encarga de:
• Buscar “a mano” en TP la traducción• Rellenar TLB con la traducción• Propagar bits Ref y Mod a TP
◙ Flexibilidad en diseño de SO pero menor eficiencia
TLB gestionada por software
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez128
Tablas de páginas multinivel
◙ Fundamento• Tablas de páginas muy grandes con muchas entradas nulas• Fragmentar tabla y acceder mediante tabla maestra
◙ Tablas de páginas organizadas en M niveles:• Entrada de TP de nivel K apunta a TP 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:• 1 campo por nivel + desplazamiento
◙ Si todas las entradas de una TP son inválidas• No se almacena esa TP e inválida entrada de TP superior
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez129
R egistro basede la TP
Tabla de páginasde pri mer nivel
Tab la de página sde s egundo niv el
Byte1 niveler 2º nive lDirec ción lógic a
...
...
...
M arco depágina
Esquema de traducción con 2 niveles
memoria
Dirección lógica
Direcciónfísica
Registro a tablade páginas
m d
dMarco m
p1 p2 d
...
...
m
...
...
...Superp ginaá m’
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez130
Ventajas de tablas de páginas 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ág. 4K, dir. lógica 32 bits (10 bits/nivel), 4B/entrada
○ Tamaño: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)◙ Ventajas adicionales:
• Permite compartir TPs intermedias• Sólo se requiere que esté en memoria la TP de nivel superior
◙ Facilita implementación de superpáginas• Entrada de primer nivel de superpágina apunta a m. física
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez131
Ventajas de tablas de páginas multinivelMemoria
de primer nivelTabla de páginas
. . .
Tablas de páginasde segundo nivel
. . .
. . .
. . .
Tabla de páginas
V
V
V
VI
I
Página 0
Página 1023
Página 1024
Página 2047
Página 2048
Página 3071
Página 1048575 (2^20-1)
Pág. 1047552 (2^20-1024)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez132
Tabla de páginas invertida
◙ Procesadores actuales espacio lógico enorme (dirs. de 64 bits)• TPs muy grandes incluso usando multinivel
◙ Uso de TPs invertidas• Entrada por cada marco indica página almacenada en él• Necesario guardar núm. de página e id. de proceso
◙ Procedimiento de traducción:• MMU usa TLB convencional• Si fallo en TLB → se busca traducción en TP invertida
◙ Tabla hash para evitar búsqueda secuencial◙ Difícil compartir. Alternativa: guardar marco en entrada de TP◙ TP pequeña pero SO debe guardar info. de páginas no residentes
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez133
Esquema de traducción con TP invertida
p d
Dirección lógica
m d
M0 P7 ID5 R-X ....
.........
M1 P1 ID6 RW- ....M2 P8 ID0 R-X ....
DirecciónfísicaTabla de p ginas
invertidaá
Registro identificadorde proceso
ID
hash
Memoria
d
Marco m
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez134
Segmentación paginada: esquema de traducción
Memoria
Tabla de segmentos
límite base
s d
Dirección lógica
Excepción
> +NO p d '
m
Tabla de páginas
m d '
Registro a tablade segmentos
Registro a tablade páginas
Registro a tablade páginas
SÍ
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez135
Creación de espacio lógico independiente
◙ Segmentación paginada local: 1TS/proceso y 1TP/proceso• Espacio lógico por proceso
[P, R, Dr] → [P, Dp] → [Df]• Mayor similitud con paginación
◙ Segmentación paginada global: 1TS/proceso y TP única• Espacio lógico global
[P, R, Dr] → [Dg] → [Df]• Mayor similitud con segmentación simple
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez136
Segmentación paginada localMemoriaMapa de proceso 1
Mapa de proceso 2
Región 1 de proceso 1
Región 2 de proceso 1
Región 1 de proceso 2
Región 2 de proceso 2
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez137
Segmentación paginada globalRegión 1 de proceso 1
Región 2 de proceso 1
Región 1 de proceso 2
Región 2 de proceso 2
Espacio lógico global Memoria
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez138
Espacio de direcciones único
◙ Problema de las autorreferencias en todos esquemas: ¿por qué?• Proteger vs compartir + fusión de reubicación y protección
◙ SASOS, Single Address-Space Operating Systems• Espacio global no segmentado• Procesos comparten en mismo rango: autorreferencias• Reubicación software (en carga) en nivel de procesos• Paginación proporciona reubicación global
◙ Capabilities: también espacio de direcciones único
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez139
Comparativa de esquemas de gestión de memoria
Esquema de gestión Resolución/R.módulos R. regiones R. procesos R. global Registros límite Compilador/montador Montador Cargador ― Registro base y límite Compilador/montador Montador MMU ― Segmentación Compilador/montador MMU (seg) ― Paginación Compilador/montador Montador MMU (pág) ― Seg. paginada global Compilador/montador MMU (seg) MMU (pág) Seg. paginada local Compilador/montador MMU (seg) MMU (pág) ― SASOS Compilador/montador Montador Cargador MMU (pág)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez140
◙ Intercambio (swapping): más procesos de los que caben en mem• Disco (swap): respaldo de memoria• Swap out: expulsa/suspende proceso si no hay sitio
○ Diversos criterios para expulsar: mejor si bloqueado• Swap in: reanudación de proceso expulsado (y listo)• Preasignación de swap o no
◙ Overlays: Programas más grandes que memoria disponible• No transparente a programador: info. de uso de módulos• Montador genera ejecutable con código de carga y descarga
M. virtual: Antecedentes
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez141
Fundamento de la memoria virtual
◙ M. virtual: SO gestiona niveles de m. principal y m. secundaria • Sube por demanda; Baja por expulsión
◙ Aplicable por proximidad de referencias• Procesos sólo usan parte de su mapa en intervalo de tiempo• Parte usada (cjto de trabajo) en m. principal (cjto residente)
◙ Beneficios:• Aumenta el grado de multiprogramación• Permite ejecución de programas que no quepan en mem. ppal
◙ No adecuada para sistemas de tiempo real◙ Basada en paginació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
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez142
Ciclo de vida de página compartida y en fichero
Fichero
MemoriaFallo
Expulsión ymodificada
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez143
Ciclo de vida de página privada y en fichero
Fichero
Memoria
Fallos y expulsionesuna vez modificada
Expulsión ymodificada
Swap
Fallo (mientras nomodificada una vez)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez144
Ciclo de vida de página anónima
Memoria
Fallos y expulsionesuna vez modificada
Expulsión ymodificada
Swap
Fallo (mientras nomodificada una vez)
Rellenarcon ceros
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez145
Políticas de administración
◙ Localización◙ Extracción◙ Ubicación:
• Cualquiera, aunque puede usarse coloración de páginas◙ Reemplazo◙ Actualización
• Escritura diferida◙ Reparto de espacio
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez146
Política de localización: posibles ubicaciones
08192
R-X Comp.F Bl. inicial 0
BCP de P1
t. de regiones
t. páginas
00004 V R-X00000 I 000
Mapa de memoria de P1
Región 1 (R-X)
Región 2 (RW-)
Región 3 (RW-)
.........
0
8192
16384
Memoria
P gina 0 de P1á
Región 1 (R-X)
Región 3 (RW-)
.........
0
8192
16384
00001 I SW1
Marco 0Marco 1Marco 2Marco 3Marco 4
......................... ........
Fichero
20480
Cód. 0Cód. 1DVI 0DVI 1
.........81928192
RW- Privada F Bl. inicial 2
163844096
RW- Privada An nimaó
Fichero F
00000 I 00000000 I 000
Fichero
Bloq. 0
.........
Swap (SW1)
Bloq. 1Bloq. 2Bloq. 3
.........00000 I 000
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez147
Política de extracción: Fallo de página
◙ Si dirección inválida → Aborta proceso o le manda señal◙ Si no hay ningún marco libre (consulta T. marcos)
• Reemplazo: pág P marco M → P inválida ○ Si mod → escribir fichero (comp) o swap (priv)
◙ Hay marco libre (se ha liberado o lo había previamente):• Inicia lectura de página en marco M• Conecta entrada de TP a M
◙ Fallo de página en modo sistema no siempre es error:• Acceso a página de usuario no residente• Página de SO no residente o propagar cambios mapa SO
◙ Prepaginación: trae páginas por anticipado (no por demanda)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez148
Creación de tablas de páginas por demanda
Memoria
de primer nivel
Tablas de páginasde segundo nivel
Tabla de páginas
V
I
I
II
I
V
I
II
I
V
08192
R-X Comp.F Bl. inicial 0
BCP de P1
t. de regiones
t. páginas
81928192
RW- Privada F Bl. inicial 2
.............
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez149
◙ Tipo de reemplazo: local o global◙ Factores a tener en cuenta:
• Tiempo de residencia• Frecuencia de uso• Frescura de la página
◙ También en caché de sistemas de ficheros◙ Objetivo: Minimizar la tasa de fallos de página.
• Poca sobrecarga y MMU estándar◙ Algoritmo óptimo (MIN): Irrealizable
• Página residente que tardará más en accederse
Política de reemplazo
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez150
◙ Página que lleva más tiempo residente◙ Fácil implementación:
• Páginas residentes en orden FIFO• No requiere el bit de página accedida (Ref)
◙ No es una buena estrategia: basado sólo en tiempo de residencia◙ Anomalía de Belady
• Ejemplos donde: ↑ nº marcos ⇒ ↑ nº fallos
Algoritmo FIFO
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez151
Algoritmo LFU (Least Frequently Used)
◙ Página residente menos frecuentemente usada◙ Problema: muchos accesos en una fase y ninguno después◙ No anomalía de Belady: algoritmo de pila ◙ Difícil implementación estricta (hay aproximaciones):
• Precisaría una MMU específica
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez152
Algoritmo LRU (Least Recently Used)
◙ Página residente menos recientemente usada (frescura)◙ Proximidad de referencias: pasado reciente → futuro próximo◙ No anomalía de Belady: algoritmo de pila ◙ Sutileza: ¿en tiempo de proceso o de sistema?◙ Difícil implementación estricta (hay aproximaciones):
• Precisaría una MMU específica◙ Sí se usa como tal en caché de sistemas de ficheros
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez153
Algoritmo del reloj (o 2ª oportunidad)
Ref = 1
Ref = 0
Ref = 1
Ref = 1
Ref = 0
Ref = 0
Ref = 1
Ref = 0
Ref = 1
Ref = 0
Inicio
Expulsada
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez154
Más allá de LRU: ARC
◙ Limitaciones LRU: páginas que se acceden sólo una vez• Añadir frecuencia a frescura → LRU/K
◙ ARC (Adaptive Replacement Cache): autoconfigurable• 2 LRU: L1 frescura (|L1|=p), L2 frecuencia (|L2|=2N-p),
○ Info 2N pág: N residentes y N últimas expulsadas (históricos H)• Si |L1|>p reemplazo LRU de L1, sino de L2
• Ajuste de p: si fallo en H de L1, p++; si en H de L2, p--◙ ARC requiere hardware específico
• CAR (Clock with Adaptive Replacement): reloj + ARC
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez155
Buffering de páginas
◙ Reemplazo bajo demanda: Mejor por anticipado◙ Reserva de marcos libres◙ Fallo de página: siempre usa marco libre (no reemplazo)◙ Si nº marcos libres < umbral
• “demonio de paginación” aplica algoritmo de reemplazo○ páginas no modificadas → lista de marcos libres○ páginas modificadas → lista de marcos modificados
► cuando se escriban a disco pasan a lista de libres◙ Si se referencia una página mientras está en estas listas:
• fallo de página la recupera directamente de la lista (no E/S)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez156
Caché de páginas
◙ Encontrar eficientemente si página está residente:• Necesario en buffering y al compartir• [Fichero|Disp. swap, nº bloque] → {nº marco | !residente}• Págs. anónimas no en caché de páginas
◙ Cargar página de fichero o swap en fallo• Insertar en caché de páginas
◙ Sistema de ficheros también incluye caché de bloques• Tendencia: fusión de caché de páginas y de bloques
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez157
Retención de páginas en memoria
◙ Páginas marcadas como no reemplazables◙ Se aplica a páginas del propio SO
• SO con páginas fijas en memoria es más sencillo◙ También se aplica mientras se hace DMA sobre una página◙ Servicio para fijar en memoria una o más páginas de su mapa
• Adecuado para procesos de tiempo real• Puede afectar al rendimiento del sistema• En POSIX servicio mlock
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez158
Política de reparto de espacio
◙ Estrategia de asignación fija (reemplazo local)• Nª marcos asignados a proceso (cjto residente) es constante• No se adapta a las distintas fases del programa• Comportamiento relativamente predecible• Arquitectura impone nº mínimo
◙ Estrategia de asignación dinámica• Nº marcos varía según evolución de proceso(s)• Asignación dinámica + reemplazo local
○ comportamiento relativamente predecible• Asignación dinámica + reemplazo global
○ comportamiento difícilmente predecible
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez159
grado de multiprogramación
Util
izac
ión
de la
UC
P
Hiperpaginación (Thrashing)
Tasa excesiva de fallos de página de proceso o de sistemaCon asignación fija: Hiperpaginación en procesoCon asignación variable: Hiperpaginación en el sistema
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez160
Políticas de control de carga
◙ Estrategia del conjunto de trabajo• Páginas usadas por proceso en últimas N referencias• Si conjunto de trabajo decrece se liberan marcos • Si conjunto de trabajo crece se asignan nuevos marcos
○ si no hay disponibles: suspender proceso(s)• Requiere MMU específica
◙ Estrategia basada en frecuencia de fallos de página (PFF)◙ Control de carga y reemplazo global
• No control de hiperpaginación• Algoritmo de control de carga empírico
○ Si nº marcos frecuentemente debajo de umbral
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez161
◙ Si tasa < inferior se liberan marcos aplicando reemplazo◙ Si tasa > límite superior se asignan nuevos marcos
• Si no marcos libres se suspende algún proceso
número de marcos
tasa
de
fallo
s de
pág
ina
límite superior
límite inferior
Estrategia basada en frecuencia de fallos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez162
Dispositivo de paginación (swap)
◙ Disco, partición o fichero (más lento)• Incorporación dinámica y configurable de espacio de swap
◙ Estructura: cabecera y bloques; mapa de bits sólo en memoria◙ Preasignación de espacio (reserva vs recuento)
• Al crear región privada o sin soporte• Permite detectar síncronamente la falta de espacio de swap
◙ Sin preasignación de espacio• En primera expulsión se le asigna espacio en swap• Mejor aprovechamiento de espacio de almacenamiento
◙ Regiones privadas o sin soporte usan el swap• Compartidas con soporte usan directamente fichero
◙ Bloque de swap puede compartirse: contador de referencias
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez163
Compartimiento de páginas
◙ Escenarios:• Zona de memoria compartida• Compartir código de programa o biblioteca• Fichero proyectado en modo compartido• Regiones compartidas después de fork
◙ Compartir igual que con paginación convencional pero:• Caché de páginas para localizar pág compartida ya residente• Traducción inversa al expulsar página compartida
○ De marco de página a entradas de TP que lo referencian
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez164
Duplicado perezoso de páginas
◙ Escenarios de uso duplicado:• Datos con valor inicial de programas y bibliotecas• Regiones compartidas después de fork• Fichero proyectado en modo privado
◙ Optimización: Duplicado por demanda (copy-on-write, COW) • Se comparte una página mientras no se modifique• Si un proceso la modifica se crea una copia para él
◙ Implementación de COW• Se comparten páginas de regiones duplicadas pero:
○ se marcan de sólo lectura en TP (no en t. regiones)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez165
Tratamiento del fallo de COW
◙ Si dirección ∉ región WR → Aborta (o señal) proceso◙ Si ref > 1
• Reserva marco libre, copia contenido y conecta a TP• Devuelve permiso WR a entrada, ref--, no inserta caché págs
◙ Si ref == 1• Devuelve permiso WR a entrada, elimina de caché págs
◙ Si página con bloque de swap asignado, desvincular del mismo
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez166
Gestión de memoria del SO
◙ Gestión de la memoria física• En iniciación SO recibe información de memoria física• SO crea e inicia tabla de marcos
◙ Gestión del mapa del SO• Fase inicial: SO crea e inicia TP del sistema
○ SO contiguo en memoria → uso de superpáginas• Fase estable: Marcos restantes para procesos y SO
○ Para SO: asociación de marco con mapa SO○ Para proceso: asociación con mapa usuario + a. temporal de SO○ Alternativa: mapa de SO incluye toda memoria física
► No requiere asociación temporal pero menos flexible
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez167
Esquemas de asignación de espacio del SO
◙ Reserva de espacio contiguo lógico versus físico◙ Distintos gestores de memoria del SO:
• Reserva de págs contiguas en espacio físico (get_free_pages)• Reserva de un cierto tamaño (kmalloc)• Reserva de objetos del mismo tipo (p.ej. BCP) (slabs)• Reserva de espacio contiguo lógico (vmalloc)
◙ Diversos gestores usan cachés• Equilibrio entre reclamar espacio de caché o de usuario
◙ SO con mapa residente vs con parte del mapa paginable◙ En multiprocesadores, prerreservas por cada UCP
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez168
Coherencia de la jerarquía de memoria
◙ Modelo donde cada nivel se caracteriza por:• Función de traducción: ID objeto → bloque de ese nivel
○ Espacio lógico por proceso: ID = [P, Dp]○ Espacio lógico global: ID = [Dg]○ Espacio físico: ID = [Df]
► No es un ID único en la vida de un proceso
• Jerarquía de niveles de traducción• Existencia de múltiples componentes• Entidades que pueden acceder al nivel (procesos, E/S)• Tipo de multiplexación para multiproceso: temporal/espacial
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez169
Niveles de la jerarquía de memoria
◙ Memoria secundaria• Componente único con multiplexación espacial• Traducción: t. regiones y páginas, no jerarquía de traducción
◙ Memoria principal• Componente único con multiplexación espacial/temporal• Traducción: t. páginas, jerarquía de traducción (TP/TLB)
○ TLB con o sin PID. En MP una TLB/UCP◙ Memoria caché (en general N niveles)
• Puede tener N componentes (MP o caché de I/D separadas)• No jerarquía de traducción. Dos esquemas de traducción:
○ virtual: ID lógico; acceso TLB y caché en paralelo: con o sin PID ○ física: ID físico; acceso TLB y caché no en paralelo
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez170
Problemas de coherencia entre niveles
◙ Niveles adyacentes• Entre caché y m. principal si E/S por DMA
○ Escritura en nivel rápido/lectura del otro y viceversa► Si SO responsable: volcados e invalidaciones, respectivamente
• En la jerarquía de traducción: TLB y TP○ SO actualiza directamente TP → SO invalida entrada TLB
◙ Mismo nivel• Coherencia entre múltiples cachés en multiproc. → HW• Coherencia entre múltiples TLB → SO
○ Propagar invalidación de TLB (IPI)• Caché de I/D separadas:
○ Si SO responsable: volcados e invalidaciones
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez171
Problemas por homónimos y sinónimos
◙ Homónimos: mismo nombre para objetos diferentes• Problema sólo si espacio lógico por proceso• Sólo en TLB y caché si no incluyen PID
○ Invalidar en cambio de contexto◙ Sinónimos: distintos nombres para mismo objeto (compartir)
• Problema si un nivel no los detecta• Puede darse en caché virtual con PID. Soluciones:
○ Resuelto por hardware○ Restricciones de alineamiento en regiones compartidas○ En cambio de contexto, eliminar entradas conflictivas○ Uso de un espacio único global → No sinónimos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez172
Operaciones del nivel de procesos y de regiones
◙ Nivel de procesos igual que en paginación sin m. virtual◙ N. regiones: igual pero reserva m. física en fallo página o COW
• crear_región○ No asigna memoria principal ni entrada TP (excepto pila)○ Si preasignación, reserva swap
• eliminar_región: igual + liberar swap si privada• redimensionar_región (heap o pila)
○ Decrece: igual + liberar swap○ Crece: Ajuste t. regiones + reserva swap si preasignación
► Cuidado expansión pila• duplicar_región:
○ Duplicar entradas TP y RO → Fork optimizado
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez173
Creación del mapa inicial0
8192R-X Comp.
F Bl. inicial 0
BCP
t. de regiones
t. páginas
00000 I 000
Mapa de memoria inicial
Datos con valor inicial
.........
0
8192
16384
MemoriaCódigo
C0000000
8192
16384
Marco 0Marco 1Marco 2Marco 3Marco 4
......................... ........
Fichero
20480
.........
81928192
RW- Privada F Bl. inicial 1
163844096
RW- Privada An nimaó
Fichero F
00000 I 000
Fichero
Bloq. 0
.........
Swap (SW1)
Bloq. 1Bloq. 2
.........
Datos sin valor inicial
00000 I 000
00000 I 000
BFFFF000 Pila
00002 I SW100000 I 000................
BFFFF0004096
RW- Privada An nimaó
00000 I 000
Bloq. 0Bloq. 1Bloq. 2
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez174
Expansión de la región de pila
◙ Expansión automática: programa ↓SP y accede → fallo página◙ Extensión de tratamiento de fallo de página:
• Si dirección inválida (∉ región)○ Si dirección < SP –› Aborta proceso o le manda señal○ Si no –› Expansión de pila (redimensionar_región)
◙ Sutileza:• Al menos 1 página inválida entre pila y región más cercana
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez175
Resultado del fork
08192
R-X Comp.F Bl. inicial 0
t. de regiones
t. páginas
00000 I 000
Datos con valor inicial
.........
0
8192
16384
Memoria
Código
C0000000
8192
16384
Marco 0Marco 1Marco 2Marco 3Marco 4
......................... ........
20480 81928192
RW- Privada F Bl. inicial 1
163844096
RW- Privada An nimaó
Fichero F
00000 I 000
Swap (SW1)
.........
Datos sin valor inicial
BFFFF000 Pila
00002 I SW100000 I 000................
BFFFF0004096
RW- Privada An nimaó
00004 V R-X
00001 I SW1
P gina 0 de P1 P2á
BCP de P1
Mapa de memoria de P1
Datos con valor inicial
.........
0
8192
16384
Código
C0000000
8192
1638420480
Datos sin valor inicial
BFFFF000 Pila
Mapa de memoria de P2
P gina 4 de P1 P2á
00004 V R--
08192
R-X Comp.F Bl. inicial 0
t. de regiones
t. páginas
00000 I 000
81928192
RW- Privada F Bl. inicial 1
163844096
RW- Privada An nimaó
00000 I 000
.........
00002 I SW100000 I 000................
BFFFF0004096
RW- Privada An nimaó
00004 V R-X
00001 I SW1
BCP de P2
00004 V R--
Fichero.........
Fichero
Bloq. 0
.........
Bloq. 1Bloq. 2
Bloq. 0Bloq. 1Bloq. 2
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez176
Ficheros proyectados en memoria
◙ Generalización de memoria virtual• Entradas de TP referencian a un fichero de usuario
◙ Programa solicita proyección de fichero (o parte) en su mapa• Puede especificar protección y si privada o compartida
◙ Programa accede a posición de memoria asociada a fichero• Está accediendo al fichero
◙ Forma alternativa de acceso a ficheros frente a read/write• Menos llamadas al sistema• Se evitan copias intermedias en caché de sistema de ficheros• Se facilita programación: acceso a estructuras de datos
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez177
Proyección de un fichero
BCP
t. de regiones
t. páginas
00000 I 000
Mapa de memoria
Datos con valor inicial
.........
CódigoFichero
20480
.........
2048040000
RW- CompF Bl. inicial 0
Fichero F
00000 I 000
.........
Datos sin valor inicial
Pila
00000 I 000................00000 I 000
Bloq. 0Bloq. 1Bloq. 2
MemoriaMarco 0Marco 1Marco 2Marco 3Marco 4
......................... .................00000 I 000................
............
............
............
............
............
............
............
............
............
............Fichero proyectado F
00004 V RW-
Bloque 0 de F
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez178
Servicios de gestión de memoria
◙ Gestor de memoria realiza funciones internas◙ Ofrece pocos servicios directos a aplicaciones◙ Proyección de ficheros:
• Proyectar/Desproyectar fichero◙ Montaje explícito de bibliotecas dinámicas
• Carga/Descarga de biblioteca• Acceso a símbolo de la biblioteca
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez179
void *mmap(void *dir, size_t lon, int pro, int ind, int desc, off_t desp);◙ Establece proyección entre espacio de dir. de proceso y fichero
• Devuelve dirección de memoria donde se ha proyectado fichero•dir dirección donde proyectar. Si NULL SO elige una•lon especifica el número de bytes a proyectar•pro tipo de acceso: PROT_READ PROT_WRITE PROT_EXEC•ind info. sobre proyección
○ Compartida (MAP_SHARED) o privada (MAP_PRIVATE)○ Anónima (MAP_ANON)○ Carga sólo en dirección especificada en dir (MAP_FIXED)
•desc representa el descriptor de fichero a proyectar•desp desplazamiento a partir del que se realiza la proyección
void munmap(void *direc, size_t lon);◙ Desproyecta desde la dirección direc hasta direc+lon
Servicios de proyección de UNIX
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez180
void *dlopen(const char *biblioteca, int indicadores);◙ Carga y montaje de una biblioteca dinámica
• Devuelve descriptor de biblioteca cargada•biblioteca indica la biblioteca a cargar•indicadores: opciones de carga. Sólo es obligatorio:
○ RTLD_LAZY,RTLD_NOW: resolución símb. perezosa o inmediatavoid *dlsym(void *descriptor, char *simbolo);◙ Permite acceder a símbolo exportado por biblioteca
• Devuelve dirección de memoria de ese símbolo•descriptor de la biblioteca
○ RTLD_NEXT busca en la siguiente biblioteca especificada•simbolo a buscar
int dlclose(void *descriptor);◙ Descarga biblioteca especificada por descriptor
Servicios de bibliotecas de UNIX
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez181
HANDLE CreateFileMapping (HANDLE fichero,LPSECURITY_ATTRIBUTES segur, DWORD prot, DWORD tam_max_alta, DWORD tam_max_baja, LPCTSTR nombre);
◙ Crea una proyección de un fichero• Devuelve identificador de la proyección•fichero fichero del que se crea una proyección•segur atributos de seguridad•prot el tipo de acceso (lectura, lectura/escritura o privada)
○ PAGE_READONLY PAGE_READWRITE PAGE_WRITECOPY•tam_max_alta y tam_max_baja
○ tamaño máximo de la proyección•nombre nombre de la proyección
Servicios de proyección de Windows (1/2)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez182
LPVOID MapViewOfFile (HANDLE id_proy, DWORD acceso,DWORD desp_alta, DWORD desp_baja, DWORD tamaño);◙ Crea región asociada a una proyección•id_proy identificador de la proyección•acceso lectura, escritura o lectura/escritura
○ FILE_MAP_WRITE FILE_MAP_READFILE_MAP_ALL_ACCESS
•desp_alta y desp_baja○ desplazamiento dentro del fichero
•tamaño tamaño de zona proyectadaBOOL UnmapViewOfFile (LPVOID dir);◙ Desproyecta el fichero•dir dirección de comienzo de la región a desproyectar
Servicios de proyección de Windows (2/2)
Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez183
HINSTANCE LoadLibrary(LPCTSTR biblioteca);◙ Carga y montaje de una biblioteca dinámica
• Devuelve descriptor de biblioteca cargada•biblioteca indica la biblioteca a cargar
FARPROC GetProcAddress(HMODULE desc, LPCSTR simbolo);◙ Permite acceder a símbolo exportado por biblioteca
• Devuelve dirección de memoria de ese símbolo•desc de la biblioteca•simbolo a buscar
BOOL FreeLibrary(HINSTANCE descriptor);◙ Descarga biblioteca especificada por descriptor
Servicios de bibliotecas de Windows