Académique Documents
Professionnel Documents
Culture Documents
Gestin de memoria
1998-2012 Jos Miguel Santos Alexis Quesada Francisco Santana Beln Esteban
1
Contenidos
Antecedentes !! Tcnicas bsicas: recubrimientos, intercambio !! Gestin de memoria contigua !! Segmentacin !! Paginacin !! Tcnicas mixtas
!!
2
!!
!!
La memoria fsica es un conjunto de celdas referenciables por medio de una direccin lineal (p.ej. de la 00000h a la FFFFFh) Para que un programa se ejecute, su cdigo y sus datos necesitan estar cargados en memoria (al menos en parte) En un sistema multitarea, la memoria ha de repartirse entre los diferentes procesos
!!
Las rutinas del sistema operativo tambin debern residir en memoria, en todo o en parte Puede ser que la memoria principal no tenga capacidad suficiente para todos los procesos en ejecucin
evitando los conflictos de uso protegiendo al sistema operativo aprovechando eficazmente el espacio disponible:
!!
Evitar fragmentacin Memoria ocupada por varias copias de un mismo objeto Memoria ocupada por las estructuras de datos necesarias para la operacin del gestor de memoria
!!
"!
minimizar la memoria desaprovechada tener una complejidad temporal mnima y presentar un recargo por acceso a memoria mnimo adems de proporcionar una buena proteccin y una comparticin flexible
compilacin
mdulo objeto otros objetos y bibliotecas enlazador (linker) programa ejecutable bibliotecas del sistema bibliotecas dinmicas cargador programa y datos binarios en memoria HARDWARE
carga
ejecucin
!!
!!
El compilador traduce direcciones de memoria simblicas a direcciones binarias. Si las direcciones binarias son absolutas, el programa slo se puede ejecutar en una zona fija de la memoria: NO ES REUBICABLE. Ej.: los programas con formato .COM de MSDOS
!!
Nos interesa que el compilador no genere direcciones definitivas, sino direcciones provisionales, reubicables. Cuando se sepa dnde van a residir el cdigo y los datos, se convertirn a direcciones absolutas. En qu momento (etapa) se realiza esta reubicacin ?
"! "!
!!
!!
Direccin fsica: la que llega al chip de memoria Direccin lgica o virtual: la generada por la CPU El dispositivo que traduce direcciones virtuales a fsicas se llama unidad de manejo de memoria (MMU, en ingls) El espacio de direcciones lgicas y el espacio de direcciones fsicas no tienen por qu coincidir Ejemplo: registro base
10
Espacios de direcciones
Fichero fuente (principal.cc)
#include<stream.h> main() { int cont; ... cont++ ... }
Memoria fsica
MR Proceso
11
CPU
Memoria
Disco
CPU
dir. lgica 1234
MMU
Controlador de memoria
Direccin fsica
Controlador de disco
MMU
dir. fsica 81234
memoria
12
Carga dinmica
!!
Proceso se ejecute
"!
Cdigo + Datos # Memoria fsica Tamao de un proceso limitado al tamao de la memoria fsica postergar la carga en memoria de un mdulo hasta que el programa llame a alguna rutina del mismo
!!
Consecuencia:
"!
!!
Carga dinmica
"!
13
Enlace dinmico
!!
!!
!!
!!
Similar a la carga dinmica, pero efectuando el enlace en tiempo de ejecucin: bibliotecas dinmicas (DLL) La DLL se carga en memoria cuando algn proceso llama a una de sus rutinas. Las llamadas a sus funciones se efectan a travs de una tabla de punteros. Si varios procesos emplean la biblioteca dinmica, slo se mantiene una copia de ella en memoria. Ejemplos de enlace dinmico:
"! "!
14
Recubrimientos (overlays)
Muchos programas no necesitan todo el cdigo al mismo tiempo, sino que se ejecutan por fases (ej. un compilador) !! El programa se descompone en mdulos separados (recubrimientos), que se cargan en un rea de memoria al efecto !! Si se carga un recubrimiento, borra al que se encontraba ya cargado !! El programa de usuario es responsable de cargar recubrimientos segn se necesiten
!!
15
16
Intercambio (swapping)
!! !!
Objetivo: cuando un proceso queda bloqueado o en espera, la memoria que ocupa podra desasignrsele. Intercambio: Cuando un proceso pierde la CPU, se vuelca su imagen de la memoria al disco (swap out). Cuando se decide reanudar el proceso, se recupera su imagen del disco (swap in)
sistema operativo P1
P2
17
Problemas:
"! "!
aumenta el tiempo de cambio de contexto E/S que accede por DMA varios procesos en memoria intercambio un proceso mientras se ejecuta otro
!!
Mejoras:
"! "!
18
"!
Proceso intercambiador (efecta la mayora de las funciones del PMP) Criterios para la eleccin de la vctima (poltica de swapping out) Criterios para elegir los procesos que entran (poltica de swapping in) Espacio en disco donde almacenar las imgenes de los procesos
!! !!
"!
Criterios para la gestin del espacio de intercambio (poltica de gestin del rea de swap)
19
Otras consideraciones:
"! "!
"!
Operaciones de E/S pendientes ? Un proceso intercambiado, regresa al mismo espacio de memoria que ocup previamente ? Versiones modificadas del intercambio estndar:
!! !!
20
SO
Proceso
256K
21
MFT
SO Particin 1 Particin 2 Particin 3 Particin 4 SO Particin 1 Particin 2 Particin 3 Particin 4 SO
22
"!
Tabla de descripcin de particiones (TDP) El S.O. gestionar una lista de huecos libres en memoria y seleccionar qu procesos pueden cargarse en memoria para ejecutarse Primitivas internas de pedir y liberar memoria
23
POLTICAS DE UBICACIN
"!
"!
"!
las polticas de primer hueco y mejor hueco son similares en rendimiento; y mejores que la de peor hueco Otras polticas: siguiente ajuste, buddies
24
80000
base
CPU
<
excepcin
memoria
MMU
25
"! "!
Comprobacin: tiempo de ejecucin SO # Clave maestra nica que le da acceso sin restricciones a todos los bloques de memoria
26
"!
SO grande y monoltico, lo que hace ms difcil su desarrollo, mantenimiento y verificacin No se podran incorporar dinmicamente nuevos objetos (slo permite la inclusin de nuevos objetos durante la generacin del sistema)
27
"!
Redundancia # las modificaciones deben ser propagadas a todas las copias restantes (SO sera el encargado cada vez que se realice un cambio de contexto) Si se soporta intercambio, OJO, podran existir copias de los objetos compartidos en disco
28
Comparticin
!!
!!
Registros base/lmite: requerira conjuntos separados de pares de registros base/limite dedicados para acceder a los espacio de memoria privado y compartido
!!
Implica la existencia de algn mecanismo que indique en cada acceso que conjunto de registros emplear
29
Comparticin
!!
Claves de proteccin: requerira controlar los bloques compartidos para que en los conmutaciones de contexto se cambien las claves de proteccin
"!
Necesidad de llevar la cuenta de que bloques estn siendo compartidos y por quin
!!
MVT => Permite que particiones adyacentes en memoria fsica puedan solaparse
"!
30
La fragmentacin de la memoria
!!
31
Fragmentacin: soluciones
!!
!! !!
Permitir que un proceso puede ubicarse en zonas de memoria no necesariamente contiguas Y si no se puede lo anterior # compactacin Es posible siempre?
"!
"!
Si la reubicacin es esttica y se efecta durante el ensamblado o la carga, no puede haber compactacin Esta slo es posible si la reubicacin es dinmica y se efecta en tiempo de ejecucin
!!
Slo requiere mover el programa y los datos y modificar el registro base para que refleje la nueva direccin base
32
Compactacin
!!
Estrategia a seguir
"!
Raras veces es implementado debido al gasto en que se incurre al evaluar las opciones
"!
El recargo por copia es generalmente ms alto que el de un traslado ms selectivo Copiar en disco los procesos que tienen que cambiar de lugar
"!
Compactacin + intercambio
!!
33
Segmentacin
!!
!!
Un programa se puede descomponer en varios segmentos de memoria (cdigo, datos, pila...) Con el hardware adecuado, podemos ubicar esos segmentos en zonas de memoria no contiguas.
T.seg.
S1 S3 S2
34
Segmentacin (2)
!!
!!
!!
El compilador tiene que generar cdigo que haga referencias a direcciones de memoria con dos componentes: <segmento,desplazamiento> El S.O. ubica cada segmento en un hueco contiguo de memoria El hardware se encarga de la reubicacin dinmica mediante una tabla de segmentos
35
Hardware de segmentacin
Tabla de segmentos (S)
lmite
base
S
dir. lgica
D
s dir. fsica
<
no
Tabla de segmentos
!!
Registros
"!
Problema: muchos segmentos Registro base de la tabla de segmentos (RBTS) Registro de longitud de la tabla de segmentos (RLTS)
!!
Memoria
"! "!
37
Tabla de segmentos
!!
"! "!
Se comprueba que s<RLTS Se calcula la direccin de la entrada de la tabla de segmentos (RBTS+s) y se lee dicha entrada Se coteja el desplazamiento con la longitud del segmento Se calcula la direccin fsica del byte deseado como la suma de la base del segmento y el desplazamiento
!!
!!
Proceso de traduccin: requiere dos referencias a memoria por cada direccin lgica Solucin: usar un conjunto de registros asociativos para guardar las entradas de la tabla de segmentos que se usaron mas recientemente
38
Segmentacin: ventajas
!! !! !!
!!
Atena el problema de la fragmentacin Permite definir protecciones selectivamente Permite comparticin de zonas de memoria de forma eficaz Todo ello sin aadir complejidad a los algoritmos de gestin de espacio
39
Segmentacin: inconvenientes
!!
!! !!
!!
El compilador/enlazador debe reconocer un espacio segmentado (desventaja leve) Necesita soporte del hardware Incurre en un acceso adicional a memoria (para la tabla de segmentos) No soluciona del todo los problemas de las tcnicas de ubicacin contigua (fragmentacin)
40
Paginacin
!! !!
!!
!!
!!
Tcnica que soluciona la fragmentacin externa La idea: Trocear la memoria disponible en pginas de tamao fijo (ej. 4Kb). Un programa puede residir en varias pginas no contiguas Las pginas disponibles en memoria se llaman marcos de pgina (page frames). Toda direccin lgica se descompone en dos partes: nmero de pgina y desplazamiento. La MMU se encarga de asociar el nmero de pgina lgico con el marco de pgina asignado. Para ello emplea una tabla de pginas.
41
Paginacin/Ejemplo
42
Ejemplo de paginacin
Ubicacin de un proceso en memoria y creacin de la tabla de pginas: tamao de pgina 4kbytes, tamao de la memoria 48kbytes
Memoria fsica
0 4k 8k 12k 16k 20k 24k 28k 32k 36k 40k 44k 48k
m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11
Memoria fsica
0
Proceso 1 (10k)
Pg0 Pg1 Pg2
4k 8k
S0 SO P1-Pg1 P1-Pg2
Marco 10 3 6
10k/4k=2.5 ! 3 pginas
P1-Pg0
Fragmentacin interna!!
48k/4k=12 marcos
43
!!
La gestin del espacio libre consiste simplemente en saber qu marcos estn libres El SO posee una tabla de marcos de pginas (TMP)
"!
Implementacin?
44
Paginacin/Marcos Libres
45
4k=212
12 bits
0010
000000000100
Direccin lgica:(8196)
Tabla de Pginas
0110
000000000100
46
Hardware de paginacin
Tabla de pginas
(P)
CPU
P
dir. lgica
F
dir. fsica
Memoria fsica
47
BCP
!! !!
!!
Despachador cargar los registros con los valores del nuevo proceso y A partir de la tabla de pginas almacenada, cargar los valores correctos de la tabla de pginas en hardware !!
48
!!
La tabla de pginas consta por tanto de ocho entradas que se mantienen en registros rpidos
49
Esquema de registros
"!
Problema: tablas de pginas grandes Mantener la tabla de pginas en memoria Registro base de la tabla de pginas (RBTP) que apunta a la TP
!!
!!
Solucin
"! "!
!!
Cambio de contexto: ms rpido (slo cambiar el valor de este registro) Gran inconveniente: tiempo de traduccin
50
51
Pequeo cache especial en hardware Cada registro consta de dos partes: clave y valor Funcionamiento:
!!
"!
52
"!
Obtiene el nmero de pgina donde se encuentra i Si est en TLB # Obtenemos el marco de pgina donde se encuentra sino, acceso a la tabla de pginas y actualizar TLB
!!
!!
53
54
Tasa de aciertos
"!
"! "!
porcentaje de las veces que un nmero de pgina se encuentra en los registros asociativos relacionada con el nmero de registros asociativos 16-512 => pueden obtenerse tasas de aciertos entre 80 y 98%. Motorola 68030 => TLB de 22 entradas Intel 80486 => TLB de 32 entradas
!!
!!
Ejemplos
"! "!
Sus fabricantes dicen que tiene una tasa de aciertos del 98%
55
!!
Problema: tamao que puede llegar a ocupar la tabla de pginas Idea: usar una tabla de pginas invertida
"!
"!
"!
Tiene una entrada por cada marco real de la memoria Cada entrada consiste en la pgina virtual almacenada en dicho marco y el proceso al que pertenece Por tanto, slo hay una tabla de pginas en el sistema que contiene una entrada por cada marco de pgina
56
57
Ventajas
"!
Reduce la cantidad de memoria necesaria Tiempo de bsqueda en la tabla de pginas invertida Soluciones:
!! !!
!!
Desventaja
"!
"!
58
Paginacin: inconvenientes
!!
Pequeo
"! "!
mejora fragmentacin interna Aumenta el tamao de la tabla de pgina Peor desde el punto de vista de la fragmentacin interna Tamao de las tablas de pginas menor Aumentar a medida que los procesos, los conjuntos de datos y la memoria principal se han vuelto ms grandes 2-4 Kbytes
!!
Grande
"! "!
!!
"!
59
Paginacin: proteccin
!!
!!
Las pginas pueden tener asignados bits de proteccin (ej. lectura, escritura, ejecucin) Bit de validez/no validez
"!
Indica si la pgina correspondiente est en el espacio de direcciones lgico del proceso y por tanto es vlida
60
61
En estos casos sera un desperdicio crear una tabla de pginas con entradas para todas las pginas del intervalo de direcciones
!!
Indica el tamao de la tabla de pginas y se coteja con cada direccin lgica para asegurar que la direccin est en el intervalo vlido para el proceso
62
Comparticin de pginas
!!
!!
Varios procesos podran tener la misma memoria fsica apuntada en sus respectivas tablas de pginas La comparticin de cdigo exige que el cdigo sea reentrante, es decir, no puede modificarse a s mismo
63
Comparticin de pginas
64
!!
Sistemas modernos => espacio de direcciones lgico muy grande (232 a 264) Problema: tamao de la tabla de pginas
"!
"!
Por ejemplo, si tamao de pgina es de 4k, un proceso podra requerir hasta 4 Mb de espacio fsico para la tabla de pginas Solucin: paginar la tabla de pginas, teniendo varios niveles de pginas (ej. 80386)
65
66
Como mximo hay un total de : 2(n1+n2) pginas por proceso 2n2 entradas en cada tabla de pginas interior 2n1 entradas en la tabla de pginas exterior 2n1 tablas de pginas interiores
67
!!
La paginacin y la segmentacin pueden combinarse (ej. MULTICS, 80386). Motivacin: aprovecharse de las ventajas que ofrecen los esquemas por separado
"!
"!
Segmentacin: flexibilidad y facilidad para la organizacin lgica Paginacin: mejorar el problema de la fragmentacin
68
69