Está en la página 1de 87

Tema 5.

Gestión de memoria

José Raúl Fernández del Castillo Díez


1. Definición
Proceso gestor de memoria.
• Proceso encargado de la gestión de la memoria:
• Acceso a la memoria por varios procesos.
• Uso compartido de MEM: Protección: Evitar accesos a las zonas de otros procesos.
• Compartición: Acceso simultáneo de varios procesos a una zona de memoria.
• Se persigue:
• Poco uso de la memoria, en su forma y en su ejecución.
• Rápido: En la asignación de la memoria.

2
2. Conceptos de Memoria (I)

• Gestiona el uso compartido de la MEM.


• Protección: Acceso de un proceso a la zona de otro.
• Compartición: Acceso compartido a una zona de memoria.
• Directrices:
• Ocupar poca memoria (en su tamaño y su gestión).
• No fragmentar memoria.
• Rápido: en asignaciones.
• Los procesos para ejecutarse necesitan estar en memoria.
1. Los procesos se asignan a particiones.
2. Las particiones pueden existir (Gestión Estática) o crearse para ellos
(Gestión Dinámica).
3. Durante la vida del proceso su posición puede variar.

3
2. Conceptos de Memoria (II)
• Sistemas tradicionales:
• 1 Proceso => memoria principal divida en:
• Sistema operativo (monitor residente, núcleo).
• Programa que se ejecuta.
• Sistemas multiproceso:
• Sistema operativo (monitor residente, núcleo).
• Parte de “usuario”: subdividida para varios procesos.

• Se necesita:
• Subdivisión dinámica (sistema operativo) => gestión de memoria.
• Reparto eficientemente la memoria. Máximo número de procesos.
• La memoria y la CPU han de compartirse. Máximo número de procesos, CPU al 100%.

4
3. Requisitos (I)

• Requisitos:
• Organización lógica.
• Organización física.
• Reubicación.
• Protección.
• Compartición.

5
3. Requisitos (II)
Organización Lógica.
• La memoria de un sistema informático se organiza como un espacio de direcciones
lineal o unidimensional (secuencia de bytes).

• La mayoría de los programas se organizan en módulos: no son modificables (lectura,


ejecución) y modificables.

Módulos:
1. Cada módulo puede escribirse y compilarse independientemente. El sistema
resuelve durante la ejecución todas las referencias de un módulo a otro.
2. Distintos grados de protección (sólo lectura, sólo ejecución) a los distintos
módulos.
3. Mecanismos para compartir módulos. La ventaja de la compartición a nivel de
módulo.
4. Reubicación por módulos.

6
3. Requisitos (III)
Organización Física.
• La memoria del computador se organiza en dos niveles: memoria principal y memoria
secundaria. En otros se añade la cache.
• La memoria principal:
• Acceso rápido con un coste relativamente alto.
• Volátil, no almacenamiento permanente.
• La memoria secundaria:
• Lenta y barata.
• No es volátil. Almacenamiento a largo plazo de programas y datos.

• El sistema ha de gestionar el flujo de procesos entre ellas (S.O.).


• Su gestión puede ser realizada por el programador: Overlaying: Un programa y los datos se
organizan con varios módulos asignados a la misma región de memoria. Un módulo principal es el
responsable del intercambio de los módulos.

• En entornos multiproceso el programador no conoce durante la codificación cuánto


espacio habrá disponible o dónde estará este espacio (Reubicación).

7
3. Requisitos (IV)
Protección.
• El espacio de cada proceso ha de ser protegido de las acciones de otros procesos.
• Un proceso no puede hacer referencia a posiciones de memoria de otros procesos sin permiso.
• La reubicación dificulta la protección: Es imposible comprobar las direcciones absolutas para
asegurar la protección.
• Las referencias a memoria deben comprobarse durante la ejecución.
• Los mecanismos que respaldan la reubicación permiten la gestión de la protección.
Métodos:
– Registros límite y base:
• Se almacenan el PCB (Bloque de Control de Procesos) y marcan las zonas del proceso.
– Bits de protección:
• Cada bloque de MEM tiene asignados unos bits que marcan qué proceso puede acceder.
– Segmentación:
• Derechos específicos en la tabla de páginas o segmentos.
Segmentos:
– Las direcciones virtuales son válidas si están entre la base y el límite (comprobación vía
hardware).
– Descriptores del segmento: distintos derechos de acceso a cada bloque o segmento.
– Compartición de bloques o segmentos.
Páginas:
– Bits de acceso a cada página.
8
3. Requisitos (V)
Compartición.

• Se ha de permitir el acceso de varios procesos a una misma zona de memoria.


• Una serie de procesos ejecutando una misma zona de programa.
• Acceso compartido a la misma estructura de datos (paso de info.).
• El sistema de gestión de memoria ha de permitir accesos controlados a las áreas compartidas
de la memoria, sin comprometer la protección.

9
3. Requisitos (VI)
Reubicación.
• El Sistema es compartido por varios procesos.
• Durante la programación no se conoce el número de programas que residirán en memoria
en el momento de la ejecución.
• Se realiza la multiprogramación entre los procesos con sitio en MEM.
• Se cargan y descargan de la memoria principal los procesos activos para maximizar el uso del
procesador.
• Se mantiene una reserva de procesos listos.
• El programa puede moverse en memoria por un swap.

• El programa no puede ser escrito en direcciones absolutas.
• Cambio en el direccionamiento.
• El Sistema ha de conocer la ubicación de la información:
• Control del proceso.
• Pila de ejecución.
• Punto de partida de la ejecución del programa.

10
3. Requisitos (VII)
Reubicación: conceptos.
•Dirección lógica:
 Es una referencia a una posición de memoria independiente de la asignación actual de datos a
la memoria.
 Se debe hacer una traducción a una dirección física.
•Dirección relativa:
 La dirección se expresa como una posición relativa a algún punto conocido.
•Dirección física:
 La dirección absoluta o la posición real en la memoria principal.

Reubicación: tipos.
Reubicación estática:
– Durante la carga del programa en MEM se calculan todas las direcciones relativas a direcciones absolutas en
MEM (según el punto de carga).
– El programa no puede ser trasladado. Partición fija. 
– Una vez que un programa haya sido descargado al disco, se limitará a declarar que, cuando vuelva a ser
cargado, debe situarse en la misma región de memoria principal que antes.

Reubicación dinámica:
– Las direcciones se convierten dinámicamente para cada acceso.
– Las direcciones generadas son traducidas a físicas en tiempo real.
– Los procesos pueden cambiarse de sitio una vez comenzada su ejecución.

11
3. Requisitos (VIII)

Soporte de hardware para la reubicación.

12
4. Gestión de memoria (I)
Fragmentación.

Efectos de la partición dinámica.

13
4. Gestión de memoria (II)
Fragmentación.

Efectos de la partición dinámica.

14
4. Gestión de memoria (III)
Fragmentación.
S.O.
• Fragmentación Interna: Proceso
– Generada por la diferencia entre el tamaño
de una partición de MEM. y el módulo de
programa situado en ella.
Partición
– Provocada al no llenar la partición.
vacía
– Ej: MEM de 10k dividida en regiones de 2k.
Un módulo de 1.5 k desperdicia 0.5 k.

• Fragmentación Externa:
– Por la mala gestión del espacio libre entre
procesos: Espacios entre procesos.
S.O.
– Provocada por el espacio muerto entre
particiones. Proceso
– Ej.: Cuatro procesos dejando espacios entre si de
2, 5 y 7 k. La llegada de un proceso requiriendo
14k no atendida aun teniendo ese espacio libre
en MEM. Proceso

15
5. Particiones de memoria: tipos
Carga de programas: tipos.
• Contigua simple.
• Particiones estáticas.
• Particiones estáticas: varios tamaños.
• Particiones dinámicas.
• Segmentación.
• Paginación.

16
5. Particiones de memoria (I)
Carga de programas : Contigua simple.
• Un solo proceso en MEM.
• No se permite la multiprogramación.
• División en: S.O., área de programa y área sin uso.
• Protección: limitado el acceso a la zona del sistema operativo (posición fija).

S.O.

Proceso
Sin uso

17
5. Particiones de memoria (II)
Carga de programas: Particiones estáticas (IBM OS/360).
• Particiones de igual tamaño.
• Cada partición contiene el espacio de direcciones de un programa.
• Los procesos de tamaño menor o igual al de la partición pueden ser ejecutados.
• Útil si son conocidas las necesidades de MEM de los procesos.

Problemas
• Programas muy grandes:
• No partición suficiente.
• Diseño mediante overlays (superposición). Consiste en mantener en memoria solo aquellas
instrucciones y datos que se requieren en un momento determinado. 
• Uso ineficiente de MEM:
• Programas muy pequeños ocuparán una partición completa.
• Problemas si el proceso crece.

18
5. Particiones de memoria (III)
Carga de programas: Particiones estáticas de varios tamaños.

• Las particiones pueden tener distinto tamaño.


• Depende de las características del sistema. Distribución de las necesidades de los procesos.
• Ej.: Particiones de 8, 32, 32, 120, 520K
procesos con necesidades de 5, 9, 9, 35 y 120.
=> utilización del 25.7%
• Los procesos pueden ser clasificados según su uso de MEM para acceder a un tamaño de
partición.
=> no óptimo.

• El número de tareas a multiprogramar es fijo (nº de particiones).


• Protección:
 Registro base => no es posible la reubicación
 Registro base y límite => sí es posible la reubicación
• La información de las particiones está contenida en la PDT
(tabla de descripción de particiones).

19
5. Particiones de memoria (IV)
Carga de programas: Particiones estáticas .

20
5. Particiones de memoria (V)
Carga de programas: Particiones estáticas de varios tamaños.
• Colas independientes:
• Una cola para cada partición o tipo.
• Los trabajos se asignan a las colas en la ejecución.
• Se reduce la fragmentación interna.
• No óptimo en espacio.
• Cola única:
• Mayor fragmentación.
• Todas las particiones en uso.
• Necesario un algoritmo de asignación a la partición.

Asignaciones
 Los procesos entran en la cola de entrada.
 El sistema los asigna en función de la MEM disponible y necesitada.
 La cola se ordena según el algoritmo de asignación.

21
5. Particiones de memoria (VI)
Carga de programas: Particiones Dinámicas.

• Las particiones se crean durante la ejecución del programa.


• El tamaño de las particiones se ajusta a los procesos.
• La gestión de las particiones se realiza mediante tablas:
• Zonas de MEM asignada.
• Zonas de MEM libre.

• No existe fragmentación interna (o es pequeña).


• Necesaria compactación de MEM: agrupación de la MEM libre.

22
5. Particiones de memoria (VII)
• Sistema con tres procesos de 8k, 32 k y 120k. 1
Nº Tamaño Direcc. Situación Nº Tamaño Direcc. Situación
P1
1 8k 312 Asign. 1 32k 352 Utilizable
2 32k 320 Asign. 2 520k 504 Utilizable.
P2
3 --- ---- Vacía. 3 ---- ---- Vacía.
4 120k 384 Asign. 4 ---- ---- Vacía.
P3 • Llegan P4 (24k), P5 (128k) y P6 (256k). 0 0
• Terminan los procesos P2 y P3. S.O. S.O.
312 312
P1 8K P1 8K
320 320
P2 32K P2 32K
352 352
N1 384
P4 24K
384
P3 120 K P3 120 K
504 504
P5 128K
632
N2 P6 256 K
888
1024
1024

23
5. Particiones de memoria (VIII)
Nº Tamaño Direcc. Situación Nº Tamaño Direcc. Situación
P1 1 8k 312 Asign. 2
1. 32k 320 Utilizable.
2 32k 320 Vacía. 2. 128k 376 Utilizable.
P4 3 24k 352 Asign.
3. 136k 888 Vacía.
4 8k 376 Vacía.
5 120k 384 Vacía.
P5 6 128k 504 Asign. 0 0
7 256k 632 Asign. S.O. S.O.
8 136k 888 Vacía.
P6
312 312
P1 8K P1 8K
320
N2 P2 32K
N1 32 K
320

352 352
P4 24K P4 24K
N4 384 384

N5
P3 120 K N2 = N4 + 128K
504
N5 504
P5 128K P5 128K
632 632
P6 256 K P6 256 K
888 888
N3
1024 1024

24
5. Particiones de memoria (IX)
Swapping
• Los procesos para ejecutarse han de estar en MEM.
• Multiprogramación: una planificación rápida necesita varios procesos en MEM.
• Los procesos figuran en una cola. El proceso planificado es cargado en MEM. Si es
necesario se descarga otro proceso (inactivo, sin I/O pendientes).
• Necesidades de MEMs mayores que las MEMs existentes.
• Los procesos que tardarán en ser usados se guardan en el HD.
• El espacio de memoria del proceso se vuelca al HD.
• Organización en particiones.
• La posición de regreso depende de la capacidad de reubicación del sistema.
• En algunos sistemas se asigna un área de swapping durante la creación del proceso.
• El tiempo de intercambio es prácticamente el de transferencia, que es proporcional a la MEM
intercambiada.
• El swapping es muy costoso.
• En sistemas UNIX se activa para un umbral de carga.

25
5. Particiones de memoria (X)
Carga de programas: Segmentación
• Generalización de la asignación de particiones variables.
• Los bloques de un proceso pueden estar en áreas distintas y no contiguas (segmentos).
• Se permite la reubicación dinámica.
• Fácil protección y uso compartido.
• Direccionamiento: segmento:desplazamiento.

– Uso compartido de segmentos.


• Ventajas:
 No tiene fragmentación interna.
 La memoria asignada puede crecer dinámicamente (reg. límite).
 Uso compartido de segmentos.
 Protección:
• Registros base y límite.
• Permisos distintos a cada segmento.
• Inconvenientes:
 Necesidad de compactación.
 Tamaño fijo de un segmento (según los sistemas, 64k)
 Acceso lento a MEM si el hardware no lo soporta.
26
5. Particiones de memoria (XI)
Carga de programas: Segmentación.

Proceso crece:
1. Se usa memoria contigua.
2. Se desplaza a un hueco suficiente.
3. Swapping de procesos para liberar espacio.
4. En caso contrario: Espera o muerte.

• Se puede reservar una zona de MEM para el posible crecimiento.

27
5. Particiones de memoria (XII)
Carga de programas: Paginación.
• División de la MEM en particiones fijas.
• Cada proceso se distribuye en varias de estas particiones.
• Tamaño de las particiones es pequeño en relación con el tamaño de los procesos.
• Los trozos del proceso se denominan páginas y los trozos libres de memoria se denominan
marcos.
• El sistema operativo mantiene una tabla de páginas para cada proceso:Muestra la posición
del marco de cada página del proceso.
• La dirección de la memoria consta de un número de página y de un desplazamiento dentro de la
página.

Proceso1 Proceso2
Tabla páginas.
Proc1

Tabla páginas.
Proc2

28
5. Particiones de memoria (XIII)
Gestión de las Asignaciones: Métodos.
• Mapas de bits.
• Listas enlazadas.
• Tablas de particiones.
• Tablas de páginas.

29
5. Particiones de memoria (XIV)
Asignaciones: Métodos.
A B C D
1 1 1 1 1 0 0 0

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23
E

24 25 26 27 28 29

Lista enlazada.
Mapa de Bits P, 0, 5 ,0 P: proceso
11111000 H, 5, 3 ,0 H: hueco

11111111 P, 8, 6 , 0
11001111 P, 14, 4, 0 P/H Inic tamaño Puntero
H, 18, 2, 0
11111000 P, 20, 6, 0
P, 26,3,0
H, 29, 3, 0

30
5. Particiones de memoria (XV)
Asignaciones: Métodos.

• Mapas de bits.
• Cada zona de MEM está representada por un bit:
• 1 => ocupada.
• 0 => libre.
• Bloque memoria grande =>
• Consumo.
• Particiones pequeñas => poca fragmentación.
• Bloque memoria pequeño =>
• Poco consumo.
• Particiones grandes => gran fragmentación.

31
5. Particiones de memoria (XVI)
Asignaciones: Métodos.
• Listas enlazadas.
• La MEM se presenta como una lista enlazada de segmentos.
• Se indica si es hueco (h) o proceso (p), dirección de inicio, longitud, puntero al siguiente
elemento.

P/H Inic tamaño Puntero

32
5. Particiones de memoria (XVII)
Asignaciones: Aceleración

• Mejora en prestaciones si se mantienen listas de huecos y de procesos


por separado.
• Búsquedas rápidas.
• Actualizaciones lentas.
• Mayores optimizaciones se obtienen mediante la ordenación de las
listas de huecos por tamaño.

33
5. Particiones de memoria (XVIII)
Asignaciones: Métodos
Sistema de colegas (Buddy system)
• El espacio entero disponible para la asignación se trata como un solo bloque de
tamaño 2U.
• Si se hace una solicitud de tamaño s tal que 2U-1 < s <= 2U, entonces el bloque
entero se asigna:
• En otro caso, el bloque se divide en dos colegas de igual tamaño.
• Este proceso continúa hasta que el bloque más pequeño sea mayor o igual que s
generándose.
• The buddy system
• Ventaja:
• Al liberar MEM solo se ha de buscar en la lista correspondiente para consolidaciones.
• Inconveniente:
• Fragmentación interna. Redondeo a 2 n.

34
5. Particiones de memoria (XIX)
Asignaciones: Métodos.
Sistema de colegas (Buddy system)

35
5. Particiones de memoria (XX)
Asignaciones: Métodos.
Sistema de colegas (Buddy system)
• The buddy system:
• Gestión de las zonas de MEM y huecos en potencias de 2.
2^20 = 1.048.576 + 2^0
• Listas separadas según tamaño: 1,2, 4, 8, 16, 32, 64 , etc. (1MB => 21 listas).
• Inicio: todas las listas vacías (excepto la total).
• Ej. Sistema con 1MB.
• Entrada de un proceso 70k => 27 = 128k
• Se ha de crear una partición del tamaño.

128k 256k 512k 1MB

58k

P1-70k
36
5. Particiones de memoria (XXI)
Asignaciones: Métodos.
Sistema de colegas (Buddy system)
• The buddy system.
• Llega P2 de 35k => 26 = 64k.
128k 64k 256k 512k 1MB

58k 29k

P1-70k P2-35k
Llega P3 de 80k => 27 = 128k

128k 64k 512k 1MB


256k 128k

58k 29k 48k

P1-70k P2-35k P3-80k

37
5. Particiones de memoria (XXII)
Asignaciones: Métodos.
Sistema de colegas (Buddy system)

• The Buddy system.


• Se consolidan particiones potencia de 2.
• P4 de 60k llega. => 26=64k.
• P1 sale: Libera todo el bloque de 128k. (lista de bloques de 128k).

128k 512k 1MB


64k 256k 128k

29k 4k 48k

P2-35k P3-80k

P4-60k

38
5. Particiones de memoria (XXIII)
Asignaciones: Métodos.
Sistema de colegas (Buddy system)
• The Buddy system.
• Se consolidan particiones potencia de 2.
• Sale P2.

256k
128k 64k 512k 1MB
128k

64k 4k 48k

P3-80k

P4-60k P3-80k P4-60k

39
5. Particiones de memoria (XXIV)

Ejemplo del sistema de colegas.

40
5. Particiones de memoria (XXV)
Análisis de la gestión. Memoria desperdiciada.

• Asimetría por fundir huecos adyacentes: dos procesos contiguos son dos
procesos, y dos huecos contiguos, son un hueco más grande. Por tanto, hay
doble número de procesos que de huecos:
• Nº procesos (n) = 2 * Nº huecos. A esto se le conoce como la regla del 50 por
100.
– F: % memoria desperdiciada en huecos.
– s : tamaño medio de los n procesos.
– k : tamaño huecos/tamaño procesos.
– k*s : tamaño medio del hueco para alguna k > 0.
• Con una memoria de m bytes, los n/2 huecos ocupan:
– Huecos = m – n*s o también Huecos = (n/2) k*s
– Haciendo cálculos: (n/2)*k*s = m – n*s; m = n*s + (n/2)*k*s;
m = n*s (1 + k/2)
• Por tanto, F será igual a:

– F = ((n/2)*k*s)/m = ((n/2)*k*s)/(n*s*(1+k/2)) = (n*s*(k/2))/(n*s*(k/2+1)) =


(k/2)/((k/2)+1) = 2*k/(4+2*k) = k/(k+2)
41
6. Algoritmos de Asignaciones (I)
• First fit.
– Se busca cualquier hueco en el que quepa el proceso.
– Por cada asignación se crea una entrada de proceso y
otra de hueco.
– Rápido.
• Next fit.
– Si el flujo de llegada de procesos es uniforme todos
con las mismas necesidades de memoria.
– Comienza donde se realizó la última asignación.
• Best fit.
– Busca en toda la lista el hueco que mejor se adapta a
las necesidades (más pequeño de los posibles).
– Lento (busca siempre toda la lista).
– Desaprovecha memoria por dejar huecos muy
pequeños.
• Worst fit.
– Busca el espacio vacío más grande.
Ejemplo de una configuración de
– El hueco sobrante es grande: utilizable. memoria antes y después de asignar un
bloque de 16 MB.

42
6. Algoritmos de Asignaciones (II)

Ejemplo de una configuración de memoria antes y después de asignar


un bloque de 16 MB.

43
6. Algoritmos de Asignaciones (III)
Algoritmos de Asignaciones: Aceleración.

• Listas separadas:
• Los algoritmos pueden ser acelerados mediante listas separadas de huecos y
procesos.
• Los alg. Sólo buscan en la lista de huecos.
• Actualizaciones de las listas son complejas.
• Ordenación según el tamaño.
• Mejora en el Best fit.
• Quick fit:
• Listas separadas para los tamaños más usados.
• Las búsquedas son rápidas.
• Actualizaciones lentas.

44
7. Memoria Virtual: conceptos (I)

• Conceptos de MV [Fotheringhan 1961]


• Principio de Cercanía.
• Working-Set
• Fallo de página

45
7. Memoria Virtual: conceptos (II)
• Fotheringham, 1961: “El programa (pila, datos, programa) puede ser mayor
que la memoria. El S.O. mantiene las partes en uso del programa en memoria y
el resto en el disco duro. Se tiene una memoria virtual.”

• Posible gracias al Principio de Cercanía: las referencias a los datos y al


programa dentro de un proceso tienden a agruparse.

• Se pueden mantener más procesos en la memoria principal:


• Se cargan sólo algunos fragmentos de un proceso particular.
• Con tantos procesos en la memoria principal es muy probable que uno de los procesos
esté en estado Listo en un instante determinado.
• Es posible que un proceso sea más grande que toda la memoria principal.

• El sistema operativo comienza trayendo sólo unos pocos fragmentos del


programa.
• Resident set: Es la parte de un proceso que está realmente en la memoria
principal.
• Working set: Es la porción cargada en memoria necesaria para que un proceso
funcione. Forma parte del Resident set.
46
7. Memoria Virtual: conceptos (III)

• Si el procesador encuentra una dirección lógica que no está en la


memoria principal:
1.Genera una interrupción que indica un fallo de acceso a la memoria.
2.El sistema operativo pone al proceso interrumpido en estado Bloqueado.
• La solución tradicional para programas mayores que la memoria física.
• Overlays:
• Distribución del programa en módulos cargados según necesidades.
• Control: El programador.

• El programa se ejecuta hasta llegar a zona de programa no presente en memoria.


• Fallo de página para cargar la página.
• La CPU ha de poder retomar la ejecución:
• Transacciones.
• Anticipo de fallos.

47
7. Memoria Virtual: Soporte
Soportes de la memoria virtual.
• Tiene que existir un soporte de hardware para la paginación y la
segmentación.
• El sistema operativo debe incluir un software para gestionar el movimiento
de páginas o segmentos entre memoria secundaria y memoria principal.

• Memoria virtual:
• Espacio de direcciones >> Memoria.
• El espacio virtual dividido en páginas (512 B< página < 8 KB).
• Cada página se corresponde con un marco de página.
• Tamaño marco = tamaño página.
• Transferencias memoria  disco son del tamaño de la página.

48
8. Tablas de páginas (I)

49
8. Tablas de páginas (II)

Lista de
Tabla de
Tabla de Tabla de marcos
páginas del
páginas del proceso B páginas del Tabla de libres
proceso A proceso C páginas del
proceso D

Estructuras de datos para el ejemplo anterior en el instante de tiempo (f).

50
8. Tablas de páginas: Traducción (I)
Sistema con VM de 64k
MEM Física de 32k.
Espacio del proceso
PÁGINAS
Espacio de memoria física 0 010 1
0, 4k 0
MARCOS
1 001 1
000 0, 4k
4, 8k 1
001 4, 8k
2 111 1
8, 12k 2
010 8, 12k 3 000 1
3
12, 16k 011 12, 16k 4 101 1
4
16, 20k 100 16, 20k
20, 24k
5
101
5 011 1
20, 24k
24, 28k
6
110 6 000 0
7 24, 28k
28, 32k 111
28, 32k 7 000 0
8
32, 36k
9 8 000 0
36, 40k
10 9 100 1
40, 44k •
11 La página no presente => bit de ausencia. 10 000 0
44, 48k 12
48, 52k 13
• Su acceso genera un fallo de página. 11 110 1
52, 56k 14
1. Detiene ejecución. 12 000 0
56, 60k 15 2. Salva el contenido de un marco en el HD. 13 000 0
60, 64k 3. Se carga la página llamada.
14 000 0
4. Retorna la ejecución del programa en la
dirección que generó el fallo. 15 000 0

51
8. Tablas de páginas: Traducción (II)

Traducción de direcciones en un sistema de paginación.

52
8. Tablas de páginas: Traducción (III)

Posición de memoria
dentro de la página.

Conversión en binario
Conversión en binario

Conversión en binario

53
8. Tablas de páginas: Traducción (IV)

• Ejemplo:

54
8. Tablas de páginas: Traducción (IV)

• El sistema mapea la memoria virtual en la memoria mediante la MMU (Memory


Management Unit).

• Resolución ejemplo anterior:


• El cálculo para convertir la dirección lógica en física se hace de la siguiente manera:
1.Pasamos la dirección a convertir a byte si nos lo dan en MB o KB (1MB=1024KB y
1KB=1024 byte) 20500 está en byte y no hace falta la conversión.
2.Calculamos el número de página donde encaja esta dirección dividiéndolo por el
tamaño de pagina (también en byte): 20500 / 4096 pertenece a la pagina = 5,004 (los
decimales no se tiene en cuenta), es decir la página 5.
3.Calculamos el inicio de esta página multiplicando el Nº de página por el tamaño del
bloque, en este caso 5 x 4096 = 20480.

55
8. Tablas de páginas: Traducción (V)

4.Calculamos el desplazamiento de la página restando de la dirección lógica que nos dan, la


dirección del inicio de la página que le corresponde (en este caso la página 5).
5.Ahora que sabemos cuántos byte por encima de la posición inicial de esa página está la
dirección o lo que es lo mismo el desplazamiento, se los sumamos a la dirección de inicio del
Marco de direcciones físicas que le corresponde. A la página 5 le corresponde el marco 3, lo
multiplicamos por el tamaño de marco y obtenemos la dirección de inicio de ese marco: 3 x
4096 = 12288.
6.Ahora le sumamos el desplazamiento y obtenemos la dirección física que se pide. 12288 + 20
= 12308 byte.

Pregunta: ¿y para la dirección lógica 9300?

56
8. Tablas de páginas: Implementación (I)

• Dependiendo del tamaño de la tabla de páginas la gestión se realiza:


• Tablas de páginas en registros.
• Tablas de páginas en memoria.
• Tablas de páginas multinivel.
• MEM asociativa.

57
8. Tablas de páginas: Implementación (II)

Tablas de páginas en registros.


• Cada proceso tiene asociado un número de registros.
• Cada registro tiene asociado un marco de página.
• La carga de un proceso => carga en los registros.
• Durante la ejecución del proceso no se realizan accesos a MEM para traducir
direcciones.

58
8. Tablas de páginas: Implementación (III)

Tablas de páginas en memoria.


• Un registro apunta al comienzo de la tabla de páginas.
• Cambio de contexto => cambio de dirección del registro.
• Varias referencias a MEM para traducir los accesos a MEM.

59
8. Tablas de páginas: Implementación (III)

TP multinivel TP1 10bits TP2 10bits Offset 12 bits


• TP muy grandes (32 bits => 4GB -> 2^32).
• TP por partes.

TP1 4MB
1024
Dirección
PT2 1024
2^10

• 4206896 = 4MB + 12292


• 00000000010000000011000000000100
 PT1 = 1 => entre 4M y 8 M
 PT2 = 3 => entre 12288 y 16383 (encima de 4M)
 Offset = 4

60
8. Tablas de páginas: Implementación (IV)
Esquema de dos niveles para direcciones de 32 bits
4 Kbytes para la
raíz de la tabla
de páginas

4 Mbytes para la
tabla de páginas
de usuario

4 Gbytes para el
espacio de direc-
ciones de usuario

Tabla de páginas jerárquica de dos niveles [JACO98a].

61
8. Tablas de páginas: Implementación (V)

MEM asociativa.
– Por la lentitud en las traducciones.
– Tablas P grandes => en MEM, no en registros.
– Localidad en las referencias a memoria.
– Solución:
• Componente del MMU con 8-32 entradas.
• Cada entrada:
1. nº página virtual.
2. Bit de modificado.
3. Protección (rwx).
4. Marco de página (real).
5. Validez.
• El cambio de contexto borra la MEM asoc.
– Comienza limpia para cada proceso.
– Solución: un juego de MEM asoc. Por proceso.

62
8. Tablas de páginas: Implementación (VI)

Tabla de páginas: Protección.


• Gestión mediante bits.
• Bits en la TP por cada página.

Entrada en la tabla de páginas:


1. Nº marco
2. Presencia/ausencia 1/0
3. Protección 1 -> R // 0 -> WR
4. Modificado Necesario actualizar la página al HD.
5. Referenciado Página en uso.
6. Cache Página en caché (página sobre registros).

63
8. Tablas de páginas: Implementación (VII)

Entradas de la tabla de páginas

Dirección virtual

Número de página Desplazamiento

Entrada de la tabla de páginas

P M Otros bits de control Número de marco

(a) Sólo paginación

Formatos típicos de gestión de memoria.

64
8. Tablas de páginas: Implementación (VIII)
Buffer de traducción adelantada.
• Cada referencia a la memoria virtual puede generar dos accesos a la memoria:
• Uno para obtener la entrada de la tabla de páginas correspondiente.
• Otro para obtener el dato deseado.
• Para solucionar este problema, los esquemas de memoria virtual hacen uso de
un cache especial para las entradas de la tabla de páginas:
• Se trata de la buffer de traducción adelantada (TLB, Translation Lookaside Buffer).
• Contiene aquellas entradas de la tabla de páginas usadas hace menos tiempo.
• Funciona del mismo modo que una memoria cache.

• Dada una dirección virtual,


1. El procesador examinará primero la TLB.
A. Si la entrada de la tabla de páginas buscada está presente (un “acierto en la TLB”), se obtiene el
número de marco y se forma la dirección real.
B. Si la entrada de la tabla de páginas no se encuentra (un “fallo en la TLB”), el procesador emplea
el número de página como índice para buscar en la tabla de páginas del proceso y examinar la
entrada correspondiente de la tabla de páginas.

65
8. Tablas de páginas: Implementación (IX)

Funcionamiento de la paginación con buffer de traducción adelantada (TLB) [FUTH87].

66
8. Tablas de páginas: Implementación (X)

Uso de un Buffer de Traducción Adelantada.

67
9. Algoritmos de reemplazo (I)

• Rigen el criterio de sustitución de los marcos tras el fallo.


• Máximas:
• Baja sobrecarga del sistema: Velocidad en la determinación de la víctima.
• No ajustes: Algoritmos independientes de la máquina (problemas por el bajo nivel).
• Elección óptima: Elección de la víctima cercana a la óptima.
• Evaluación respecto de cadena de referencia (aleatoria o real) y un número de
marcos.

68
9. Algoritmos de reemplazo (II)
• FIFO:
– Primera página en entrar es la primera en salir.
– Trata los marcos asignados a un proceso como un buffer circular.
– Las páginas se suprimen de la memoria según la técnica de turno rotatorio (round-robin).
– Es una de las políticas de reemplazo más sencillas de implementar.
– Se reemplaza la página que ha estado más tiempo en la memoria.
– Problema: Estas páginas pueden necesitarse de nuevo y en un plazo de tiempo corto.

• Óptimo:
– Víctima será la página que más tardará en ser usada.
– Tiene la menor tasa de fallos.
– No es implementable: Conocer los accesos futuros.
– Se usa como patrón de evaluación.

69
9. Algoritmos de reemplazo (III)
• Menos recientemente usada (Least Recently Used).
• Se predice el futuro en función del pasado.
• Víctima: página menos usada en el pasado.
• Cada página asociada con el instante del acceso.
• Necesarias estructura de información para gestionar la historia:
• Contador de tiempo / página.
• Cola de accesos/página.
• Pila: con los accesos. Al principio siempre el último acceso.

70
9. Algoritmos de reemplazo (IV)
Aproximaciones a LRU:
• Bit de referencia: Bit en ON por cada acceso.
• Bits de ref. adicionales: Histórico de los accesos con cadenas de bits. Se ponderan los
accesos.
• Segunda oportunidad: FIFO + bit de referencia.
• Puntero que barre los marcos.
• Bit = 0 => reemplazo.
• Bit = 1 => bit = 0: avance de posición.
• Least frequetly used (LFU)
• Bits de ref. adicionales.
• Contador de accesos.
• Problema: Fijar el origen de tiempos no es bueno por la localidad.
• Reloj:
– Requiere asociar un bit adicional a cada marco, denominado bit de uso.
– Cuando se carga una página por primera vez en un marco de memoria, el bit de uso de dicho marco
se pone a cero.
– Cuando se hace referencia a la página posteriormente, el bit de uso se pone a 1.
– Cuando llega el momento de reemplazar una página, el primer marco encontrado con el bit de uso
a 0 es reemplazado.
– Durante la búsqueda para realizar reemplazos cada bit de uso a 1 se cambia a 0.

71
9. Algoritmos de reemplazo (V)

(a) Estado del buffer justo antes del


reemplazo de página

Ejemplo de funcionamiento de la política del reloj.

72
9. Algoritmos de reemplazo (VI)

(b) Estado del buffer justo después del


siguiente reemplazo de página

Ejemplo de funcionamiento de la política del reloj.

73
9. Algoritmos de reemplazo (VII)
CACHÉ de páginas.

• Almacenamiento intermedio de páginas:


• La pista de la página reemplazada se asigna a una de las dos listas siguientes:
• La lista de páginas libres, si la página no ha sido modificada.
• La lista de páginas modificadas, si lo ha sido.

74
10. Tamaño de página (I)
• Cuanto menor sea el tamaño de página,
• Menor será la cantidad de fragmentación interna.
– Mayor será el número de páginas que se necesitan por proceso.
– Tabla de páginas grandes o mayor número de registros en la MMU.
• Un número mayor de páginas por proceso significa que las tablas de páginas serán mayores.
– Una gran parte de las tablas de páginas de los procesos activos deben estar en la memoria virtual.
• La memoria secundaria está diseñada para transferir eficazmente los bloques de datos de mayor
tamaño, de manera que es propicia para tamaños de página mayores.

• Si el tamaño de página es muy pequeño, estarán disponibles en la memoria


principal un gran número de páginas para cada proceso.
• Después de un tiempo, todas las páginas de la memoria contendrán parte de las
referencias más recientes del proceso. La tasa de fallos de página será menor.
• Cuando se incrementa el tamaño de la página, cada página individual
contendrán posiciones cada vez más distantes de cualquier referencia reciente.
La tasa de fallos será mayor.

75
10. Tamaño de página (II)

• Múltiples tamaños de página proporcionan la flexibilidad necesaria para usar


una TLB eficazmente.
• Las páginas grandes se pueden utilizar para traducir instrucciones de
programa.
• Las páginas de pequeño tamaño se pueden emplear para las pilas de los hilos.
• La mayoría de los sistemas operativos favorecen el uso de un solo tipo de
página.

76
10. Tamaño de página: Hiperpaginación
Hiperpaginación.
• El número de páginas de cada programa (working set) es inferior al necesario para el
principio de proximidad.
• El sistema operativo expulsa un fragmento de un proceso justo antes de ser usado.
• El procesador consume más tiempo intercambiando fragmentos que ejecutando
instrucciones de usuario.

77
Ejemplos de tamaños de páginas

Ejemplos de tamaños de páginas.

Computadora Tamaño de página


Atlas 512 palabras de 48 bits
Honeywell-Multics 1.024 palabras de 36 bits
IBM 370/XA y 370/ESA 4 Kbytes
Familia VAX 512 bytes
IBM AS/400 512 bytes
DEC Alpha 8 Kbytes
MIPS de 4 Kbytes a 16 Mbytes
UltraSPARC de 8 Kbytes a 4 Mbytes
Pentium de 4 Kbytes a 4 Mbytes
Power Pc 4 Kbytes

78
10. Tamaño de página: Working set
• Asignación fija:
• Otorga a cada proceso un número fijo de páginas en las que ejecutar.
• Cada vez que se produce un fallo de página en la ejecución de un proceso, se debe reemplazar una
de las páginas de dicho proceso.
• Asignación variable:
• Permite que el número de marcos asignados a un proceso cambie a lo largo de su vida.
• Sencilla de implementar.
• Usada por un buen número de sistemas operativos.
• Cuando se produce un fallo de página, se añade un marco libre al conjunto residente del proceso.
• Cuando no hay marcos libres, el sistema operativo debe elegir una página que esté en la memoria
para reemplazar. Cuando se carga un nuevo proceso en la memoria, se le asigna cierto número de
marcos en función del tipo de aplicación, las necesidades del programa u otros criterios.

• Cuando se produce un fallo de página, se selecciona la página a reemplazar de entre las del
conjunto residente del proceso que sufre el fallo.
• La asignación se evalua periodicamente.

79
• Resident set: Es la parte de un proceso que está realmente en
la memoria principal.
• Working set: Es la porción cargada en memoria necesaria
para que un proceso funcione. Forma parte del Resident set.

80
Working Set en WNT
Ej.: Working Set en WNT
• Dependencia del Working Set con la memoria.
• En situaciones de hiperpaginación se revisa el número de marcos disponibles.

• Para minimizar los fallos se anticipan las lecturas en un radio:

81
11. Política de carga (I)
Políticas de lectura.
• Política de lectura:
• Está relacionada con la decisión de cuándo se debe cargar una página en la memoria
principal.
• Con la paginación por demanda, se trae una página a la memoria principal sólo cuando se
hace referencia a una posición en dicha página:
• Cuando un proceso se ejecute por primera vez, se producirán muchos fallos de página.
• Con la paginación previa, se cargan más páginas de las necesarias:
• Es más eficiente traer a la memoria un número de páginas contiguas.

82
11. Política de carga (II)
Control de carga.
• Determina el número de procesos que pueden estar en la memoria principal.
• Cuando hay pocos procesos residentes en la memoria, habrá muchas ocasiones en las que
todos los procesos estén bloqueados y se gastará mucho tiempo en el intercambio.
• Si hay demasiados procesos residentes, el resultado será la hiperpaginación.

Suspensión de procesos: Selección del proceso suspendido.


1. Procesos con la prioridad más baja.
2. Procesos con fallos de página:
 Este proceso no tiene su conjunto de trabajo en la memoria principal, por lo que quedará
bloqueado de todas formas.
3. Último proceso activado:
 Este es el proceso con menos posibilidades de tener su conjunto de trabajo residente.
4. Proceso con el conjunto residente más pequeño:
 Proceso que necesita el menor esfuerzo futuro para volver a cargar el conjunto residente.
5. El proceso de mayor tamaño:
 Esta alternativa obtiene la mayor cantidad de marcos libres.
6. Procesos con la mayor ventana de ejecución restante.

83
12. Memoria Virtual: Segmentación
Segmentación.
• Los segmentos pueden ser de distintos tamaños, incluso variando de forma dinámica.
• Simplifica la gestión de estructuras de datos crecientes.
• Permite modificar y recopilar los programas independientemente.
• Mejoras en la compartición entre procesos.
• Mejoras en la protección.

• Entrada en la tabla de segmentos.


• Cada entrada de la tabla de segmentos contiene la longitud del segmento.
• Se necesita un bit para indicar si el segmento correspondiente está presente en la memoria
principal.
• Otro bit de control necesario es un bit de modificación que indique si el contenido del
segmento correspondiente ha sido modificado desde que se cargó por última vez en la
memoria principal.

84
Entradas de las tablas de segmentos

Dirección virtual
Número de segmento Desplazamiento

Entrada del segmento de tabla


P M Otros bits de control Longitud Base de segmento

(b) Sólo segmentación

Formatos típicos de gestión de memoria.

85
13. Paginación y segmentación combinadas (I)

• La paginación es transparente al programador.


• La paginación elimina la fragmentación externa.
• La segmentación es visible para el programador.
• La segmentación permite gestionar estructuras de datos que pueden crecer, la modularidad y el soporte
de la compartición y la protección.
• Cada segmento se divide en varias páginas de tamaño fijo.

86
13. Paginación y segmentación combinadas (II)

Dirección virtual
Nº. segmento Despla-
Número de segmento Número de página
zamiento

Entrada de la tabla de segmentos


Otros bits
Longitud Base de segmento
de control
Entrada de la tabla de páginas
Otros bits P = Bit de presencia
P M Número de marco M = Bit de modificación
de control

(c) Segmentación y paginación combinadas

Formatos típicos de gestión de memoria.

87

También podría gustarte