Gestin de la memoria
Antecedentes Tcnicas bsicas: recubrimientos, intercambio Gestin de memoria contigua Segmentacin Paginacin Tcnicas mixtas
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 ?
Carga (enlazador o cargador) => Reubicacin esttica Ejecucin (hardware) => Reubicacin dinmica
T1
10
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
11
Espacios de direcciones
Fichero fuente (principal.cc)
#include<stream.h> main() { int cont; ... cont++ ... }
Memoria fsica
MR
Proceso
12
CPU
Memoria
CPU
dir. lgica 1234
Disco
MMU
Controlador de memoria
Direccin fsica
Controlador de disco
MMU
dir. fsica 81234
memoria
13
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
14
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:
15
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
16
17
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
18
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:
19
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)
20
Otras consideraciones:
Operaciones de E/S pendientes ? Un proceso intercambiado, regresa al mismo espacio de memoria que ocup previamente ? Versiones modificadas del intercambio estandar:
21
SO
Proceso
256K
22
MFT
Memoria fsica
SO
23
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
24
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
25
Proteccin
Para garantizar seguridad, el hardware puede trabajar con un par de registros base/lmite
5000
lmite
80000
base
CPU
<
excepcin
memoria
MMU
26
Proteccin
Comprobacin: tiempo de ejecucin SO => Clave maestra nica que le da acceso sin restricciones a todos los bloques de memoria
27
Comparticin
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)
28
Comparticin
Redundancia => 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
29
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
30
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
T7
31
FRAGMENTACION
T8
32
FRAGMENTACION
Soluciones:
permitir que un proceso puede ubicarse en zonas de memoria no necesariamente contiguas compactacin 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
Es posible siempre?
Slo requiere mover el programa y los datos y modificar el registro base para que refleje la nueva direccin base
33
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
T9
34
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. S1 S3 S2
T.seg.
35
Segmentacin
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
36
Hardware de segmentacin
Tabla de segmentos (S)
lmite
base
S
dir. lgica
D
s dir. fsica
<
no
T10
37
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
38
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
39
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
T11
40
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)
41
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.
T12
42
Hardware de paginacin
Tabla de pginas
(P)
CPU
P
dir. lgica
F
dir. fsica
Memoria fsica
43
Paginacin/Ejemplo
44
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 !!
45
La tabla de pginas consta por tanto de ocho entradas que se mantienen en registros rpidos
46
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
47
TLB
48
Pequeo cache especial en hardware Cada registro consta de dos partes: clave y valor Funcionamiento:
49
TLB
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
T13
50
TLB
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%
51
Paginacin
La gestin del espacio libre consiste simplemente en saber qu marcos estn libres El SO posee una tabla de marcos de pginas (TMP)
Implementacin?
T14
52
Paginacin/Marcos Libres
53
Paginacin
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 La E/S de disco es ms eficiente cuando la cantidad de datos transferidos es mayor Aumentar a medida que los procesos, los conjuntos de datos y la memoria principal se han vuelto ms grandes 2-4 Kbytes
Grande
54
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
T15
55
Bit Validez
56
Proteccin
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 pgians y se coteja con cada direccin lgica para asegurar que la direccin est en el intervalo valido para el proceso
57
Comparticin
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
T16
58
Comparticin de pginas
59
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)
T17
60
61
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
T18
62
T.Pginas Invertidas
63
Ventajas
Reduce la cantidad de memoria necesaria Tiempo de bsqueda en la tabla de pginas invertida Soluciones:
Desventaja
64
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
T19