Capítulo 5 Gestión de memoria - UPM

183
Sistemas operativos 2ª edición Capítulo 5 Gestión de memoria

Transcript of Capítulo 5 Gestión de memoria - UPM

Page 1: Capítulo 5 Gestión de memoria - UPM

Sistemas operativos 2ª edición

Capítulo 5 Gestión de memoria

Page 2: Capítulo 5 Gestión de memoria - UPM

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

Page 3: Capítulo 5 Gestión de memoria - UPM

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

Page 4: Capítulo 5 Gestión de memoria - UPM

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

Page 5: Capítulo 5 Gestión de memoria - UPM

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

Page 6: Capítulo 5 Gestión de memoria - UPM

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

Page 7: Capítulo 5 Gestión de memoria - UPM

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

Page 8: Capítulo 5 Gestión de memoria - UPM

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

Page 9: Capítulo 5 Gestión de memoria - UPM

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

Page 10: Capítulo 5 Gestión de memoria - UPM

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

Page 11: Capítulo 5 Gestión de memoria - UPM

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

Page 12: Capítulo 5 Gestión de memoria - UPM

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.................

Page 13: Capítulo 5 Gestión de memoria - UPM

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

Page 14: Capítulo 5 Gestión de memoria - UPM

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

Page 15: Capítulo 5 Gestión de memoria - UPM

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

Page 16: Capítulo 5 Gestión de memoria - UPM

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

Page 17: Capítulo 5 Gestión de memoria - UPM

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

Page 18: Capítulo 5 Gestión de memoria - UPM

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

Page 19: Capítulo 5 Gestión de memoria - UPM

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

Page 20: Capítulo 5 Gestión de memoria - UPM

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

Page 21: Capítulo 5 Gestión de memoria - UPM

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)

Page 22: Capítulo 5 Gestión de memoria - UPM

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

Page 23: Capítulo 5 Gestión de memoria - UPM

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

Page 24: Capítulo 5 Gestión de memoria - UPM

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

Page 25: Capítulo 5 Gestión de memoria - UPM

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

Page 26: Capítulo 5 Gestión de memoria - UPM

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

Page 27: Capítulo 5 Gestión de memoria - UPM

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)

Page 28: Capítulo 5 Gestión de memoria - UPM

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

Page 29: Capítulo 5 Gestión de memoria - UPM

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

Page 30: Capítulo 5 Gestión de memoria - UPM

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

Page 31: Capítulo 5 Gestión de memoria - UPM

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

Page 32: Capítulo 5 Gestión de memoria - UPM

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

Page 33: Capítulo 5 Gestión de memoria - UPM

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

Page 34: Capítulo 5 Gestión de memoria - UPM

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

Page 35: Capítulo 5 Gestión de memoria - UPM

Sistemas operativos, 2ª edición © J. Carretero, F. García, P. de Miguel, F. Pérez35

0000000000000000111111111111111111111111000000000000000000000000

Mapas de bits

Page 36: Capítulo 5 Gestión de memoria - UPM

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

Page 37: Capítulo 5 Gestión de memoria - UPM

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

Page 38: Capítulo 5 Gestión de memoria - UPM

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’

Page 39: Capítulo 5 Gestión de memoria - UPM

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

Page 40: Capítulo 5 Gestión de memoria - UPM

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]

Page 41: Capítulo 5 Gestión de memoria - UPM

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

Page 42: Capítulo 5 Gestión de memoria - UPM

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

Page 43: Capítulo 5 Gestión de memoria - UPM

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

Page 44: Capítulo 5 Gestión de memoria - UPM

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

Page 45: Capítulo 5 Gestión de memoria - UPM

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

Page 46: Capítulo 5 Gestión de memoria - UPM

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

Page 47: Capítulo 5 Gestión de memoria - UPM

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

Page 48: Capítulo 5 Gestión de memoria - UPM

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

Page 49: Capítulo 5 Gestión de memoria - UPM

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:

Page 50: Capítulo 5 Gestión de memoria - UPM

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

Page 51: Capítulo 5 Gestión de memoria - UPM

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

Page 52: Capítulo 5 Gestión de memoria - UPM

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

Page 53: Capítulo 5 Gestión de memoria - UPM

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

Page 54: Capítulo 5 Gestión de memoria - UPM

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

Page 55: Capítulo 5 Gestión de memoria - UPM

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

Page 56: Capítulo 5 Gestión de memoria - UPM

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

Page 57: Capítulo 5 Gestión de memoria - UPM

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

Page 58: Capítulo 5 Gestión de memoria - UPM

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

Page 59: Capítulo 5 Gestión de memoria - UPM

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

Page 60: Capítulo 5 Gestión de memoria - UPM

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

Page 61: Capítulo 5 Gestión de memoria - UPM

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

Page 62: Capítulo 5 Gestión de memoria - UPM

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

Page 63: Capítulo 5 Gestión de memoria - UPM

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

Page 64: Capítulo 5 Gestión de memoria - UPM

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

Page 65: Capítulo 5 Gestión de memoria - UPM

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

Page 66: Capítulo 5 Gestión de memoria - UPM

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

Page 67: Capítulo 5 Gestión de memoria - UPM

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

Page 68: Capítulo 5 Gestión de memoria - UPM

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

Page 69: Capítulo 5 Gestión de memoria - UPM

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

Page 70: Capítulo 5 Gestión de memoria - UPM

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

Page 71: Capítulo 5 Gestión de memoria - UPM

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

Page 72: Capítulo 5 Gestión de memoria - UPM

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

Page 73: Capítulo 5 Gestión de memoria - UPM

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

Page 74: Capítulo 5 Gestión de memoria - UPM

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

Page 75: Capítulo 5 Gestión de memoria - UPM

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

Page 76: Capítulo 5 Gestión de memoria - UPM

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

Page 77: Capítulo 5 Gestión de memoria - UPM

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

Page 78: Capítulo 5 Gestión de memoria - UPM

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

Page 79: Capítulo 5 Gestión de memoria - UPM

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)

Page 80: Capítulo 5 Gestión de memoria - UPM

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

Page 81: Capítulo 5 Gestión de memoria - UPM

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

Page 82: Capítulo 5 Gestión de memoria - UPM

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

Page 83: Capítulo 5 Gestión de memoria - UPM

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

Page 84: Capítulo 5 Gestión de memoria - UPM

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)

Page 85: Capítulo 5 Gestión de memoria - UPM

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

Page 86: Capítulo 5 Gestión de memoria - UPM

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

Page 87: Capítulo 5 Gestión de memoria - UPM

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

Page 88: Capítulo 5 Gestión de memoria - UPM

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

Page 89: Capítulo 5 Gestión de memoria - UPM

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

Page 90: Capítulo 5 Gestión de memoria - UPM

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

Page 91: Capítulo 5 Gestión de memoria - UPM

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

Page 92: Capítulo 5 Gestión de memoria - UPM

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

Page 93: Capítulo 5 Gestión de memoria - UPM

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

Page 94: Capítulo 5 Gestión de memoria - UPM

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

Page 95: Capítulo 5 Gestión de memoria - UPM

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

NO

NO

Page 96: Capítulo 5 Gestión de memoria - UPM

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

Page 97: Capítulo 5 Gestión de memoria - UPM

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

Page 98: Capítulo 5 Gestión de memoria - UPM

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)

Page 99: Capítulo 5 Gestión de memoria - UPM

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‘

Esquema de traducción con segmentación

Page 100: Capítulo 5 Gestión de memoria - UPM

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

Page 101: Capítulo 5 Gestión de memoria - UPM

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]

Page 102: Capítulo 5 Gestión de memoria - UPM

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

Page 103: Capítulo 5 Gestión de memoria - UPM

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)

Page 104: Capítulo 5 Gestión de memoria - UPM

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

Page 105: Capítulo 5 Gestión de memoria - UPM

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

Page 106: Capítulo 5 Gestión de memoria - UPM

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

Page 107: Capítulo 5 Gestión de memoria - UPM

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

Page 108: Capítulo 5 Gestión de memoria - UPM

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

Page 109: Capítulo 5 Gestión de memoria - UPM

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

Page 110: Capítulo 5 Gestión de memoria - UPM

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

Page 111: Capítulo 5 Gestión de memoria - UPM

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

Page 112: Capítulo 5 Gestión de memoria - UPM

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

Page 113: Capítulo 5 Gestión de memoria - UPM

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

Page 114: Capítulo 5 Gestión de memoria - UPM

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

Page 115: Capítulo 5 Gestión de memoria - UPM

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

Page 116: Capítulo 5 Gestión de memoria - UPM

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

Page 117: Capítulo 5 Gestión de memoria - UPM

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)

.........

.........

.........

.........

Page 118: Capítulo 5 Gestión de memoria - UPM

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

Page 119: Capítulo 5 Gestión de memoria - UPM

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

Page 120: Capítulo 5 Gestión de memoria - UPM

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................................ ........

................................

................................

........

Page 121: Capítulo 5 Gestión de memoria - UPM

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

Page 122: Capítulo 5 Gestión de memoria - UPM

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

Page 123: Capítulo 5 Gestión de memoria - UPM

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

Page 124: Capítulo 5 Gestión de memoria - UPM

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

Page 125: Capítulo 5 Gestión de memoria - UPM

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

Direcciónfísica

TLB

Page 126: Capítulo 5 Gestión de memoria - UPM

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

Direcciónfísica

Registro identificadorde proceso

ID

TLB

Page 127: Capítulo 5 Gestión de memoria - UPM

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

Page 128: Capítulo 5 Gestión de memoria - UPM

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

Page 129: Capítulo 5 Gestión de memoria - UPM

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’

Page 130: Capítulo 5 Gestión de memoria - UPM

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

Page 131: Capítulo 5 Gestión de memoria - UPM

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)

Page 132: Capítulo 5 Gestión de memoria - UPM

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

Page 133: Capítulo 5 Gestión de memoria - UPM

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

Page 134: Capítulo 5 Gestión de memoria - UPM

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

Page 135: Capítulo 5 Gestión de memoria - UPM

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

Page 136: Capítulo 5 Gestión de memoria - UPM

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

Page 137: Capítulo 5 Gestión de memoria - UPM

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

Page 138: Capítulo 5 Gestión de memoria - UPM

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

Page 139: Capítulo 5 Gestión de memoria - UPM

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)

Page 140: Capítulo 5 Gestión de memoria - UPM

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

Page 141: Capítulo 5 Gestión de memoria - UPM

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

Page 142: Capítulo 5 Gestión de memoria - UPM

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

Page 143: Capítulo 5 Gestión de memoria - UPM

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)

Page 144: Capítulo 5 Gestión de memoria - UPM

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

Page 145: Capítulo 5 Gestión de memoria - UPM

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

Page 146: Capítulo 5 Gestión de memoria - UPM

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

Page 147: Capítulo 5 Gestión de memoria - UPM

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)

Page 148: Capítulo 5 Gestión de memoria - UPM

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

.............

Page 149: Capítulo 5 Gestión de memoria - UPM

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

Page 150: Capítulo 5 Gestión de memoria - UPM

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

Page 151: Capítulo 5 Gestión de memoria - UPM

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

Page 152: Capítulo 5 Gestión de memoria - UPM

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

Page 153: Capítulo 5 Gestión de memoria - UPM

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

Page 154: Capítulo 5 Gestión de memoria - UPM

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

Page 155: Capítulo 5 Gestión de memoria - UPM

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)

Page 156: Capítulo 5 Gestión de memoria - UPM

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

Page 157: Capítulo 5 Gestión de memoria - UPM

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

Page 158: Capítulo 5 Gestión de memoria - UPM

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

Page 159: Capítulo 5 Gestión de memoria - UPM

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

Page 160: Capítulo 5 Gestión de memoria - UPM

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

Page 161: Capítulo 5 Gestión de memoria - UPM

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

Page 162: Capítulo 5 Gestión de memoria - UPM

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

Page 163: Capítulo 5 Gestión de memoria - UPM

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

Page 164: Capítulo 5 Gestión de memoria - UPM

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)

Page 165: Capítulo 5 Gestión de memoria - UPM

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

Page 166: Capítulo 5 Gestión de memoria - UPM

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

Page 167: Capítulo 5 Gestión de memoria - UPM

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

Page 168: Capítulo 5 Gestión de memoria - UPM

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

Page 169: Capítulo 5 Gestión de memoria - UPM

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

Page 170: Capítulo 5 Gestión de memoria - UPM

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

Page 171: Capítulo 5 Gestión de memoria - UPM

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

Page 172: Capítulo 5 Gestión de memoria - UPM

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

Page 173: Capítulo 5 Gestión de memoria - UPM

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

Page 174: Capítulo 5 Gestión de memoria - UPM

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

Page 175: Capítulo 5 Gestión de memoria - UPM

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

Page 176: Capítulo 5 Gestión de memoria - UPM

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

Page 177: Capítulo 5 Gestión de memoria - UPM

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

Page 178: Capítulo 5 Gestión de memoria - UPM

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

Page 179: Capítulo 5 Gestión de memoria - UPM

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

Page 180: Capítulo 5 Gestión de memoria - UPM

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

Page 181: Capítulo 5 Gestión de memoria - UPM

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)

Page 182: Capítulo 5 Gestión de memoria - UPM

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)

Page 183: Capítulo 5 Gestión de memoria - UPM

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