Gestión de la Memoria

Anuncio
Marisa Gil
Introducción a los Sistemas Operativos
Gestión de la Memoria
1. Introducción
2. Modelos de gestión del espacio físico
3. Memoria Virtual
4. Otros modelos
Bibliografía
Silberschat and Galvin
Sistemas Operativos. Conceptos fundamentales.
Parte III: Administración de almacenamiento
Introducció als Sistemes Operatius
1
Marisa Gil
GESTION DE LA MEMORIA
Ideas a recapitular
• Todo lo que se ejecuta ha de estar en memoria principal
• Multiprogramación => varios procesos en memoria física
• Todos los procesos comparten el mismo espacio físico =>
• el SO ha de garantizar protección
• después de la CPU, la memoria es el recurso más importante para gestionar
.C
.EXE
0
M
espacio de nombres
espacio lógico del programa
espacio físico
Introducció als Sistemes Operatius
2
Marisa Gil
GESTION DE LA MEMORIA
Montaje de un fichero ejecutable
librerías con otros
módulos objeto
editor
DISCO
Introducció als Sistemes Operatius
montador
compilador
código compilar código
objeto
fuente
(LAN)
cargador
montar
código
ejecutable
cargar en
memoria
física
MEMORIA
3
Marisa Gil
GESTION DE LA MEMORIA
Multiprogramación
• Cuánta memoria asignar a cada proceso
• Equiparticiones
• Cantidad fija
• Cantidad variable
• Dónde ubicar a cada proceso
• Momento de vincular la dirección lógica a la física
• Vínculo estático/variable en ejecución
• Grado de multiprogramación
• Número máximo de procesos que se pueden cargar en memoria
Introducció als Sistemes Operatius
4
Marisa Gil
GESTION DE LA MEMORIA
MMU
Alguien se ha de encargar de:
• direcciones lógicas iguales convivan en el espacio físico sin problemas,
• exista protección entre procesos y para el SO,
• la gestión del espacio físico (libre y ocupado) sea eficiente
@ lógica
@ física
CPU
MMU
Introducció als Sistemes Operatius
5
Marisa Gil
GESTION DE LA MEMORIA
Registro de reubicación
• También se conoce como Registro Base:
• Contiene la dirección a partir de la cual está cargado el programa
• El Sistema Operativo tiene su propio Registro de Reubicación (RR)
• Además, el SO pude saltarse si quiere el RR y generar direcciones físicas
• utilizar el RR del programa de usuario
• generar directamente direcciones físicas
MMU
CPU
@ lógica
@física
@ física
(bypass del
circuíto)
Introducció als Sistemes Operatius
6
Marisa Gil
GESTION DE LA MEMORIA
Registro de reubicación
• Fijo: lo inicializamos al principio y ya no se modifica en toda
la ejecución del programa. REUBICACIÓN ESTÁTICA.
• Variable: puede modificarse su valor durante la ejecución de
un programa: un programa puede moverse en memoria
durante su ejecución. REUBICACIÓN DINÁMICA.
RRS
SO
RRU
0
Carga en memoria
P
PSW
RRU
RRS
00
01
10
11
modo
RRU
bypass
(inhibir el multiplexor)
CPU
Introducció als Sistemes Operatius
RRS
@lógica
+
@física
7
Marisa Gil
GESTION DE LA MEMORIA
Protección
• Controlar por hardware que no se supere la zona de memoria asignada
RRU
RRS
RRU
+
TAMAÑO
modo
TAMAÑO
CPU
@lógica
<
sí
+
@física
no
error
Introducció als Sistemes Operatius
8
Marisa Gil
GESTION DE LA MEMORIA
Gestión del espacio (I)
• Buscar espacio libre para un programa en memoria física.
• Fragmentación: hay memoria suficiente, pero no un trozo de tamaño adecuado.
• Compactación: reorganizar la memoria libre agrupando todo el espacio libre.
• Sólo es posible si hay reubicación dinámica.
• Costoso en tiempo: ver qué procesos son los más adecuados, dónde hacer el
hueco, parar los procesos,...
a)
Introducció als Sistemes Operatius
b)
9
Marisa Gil
GESTION DE LA MEMORIA
Gestión del espacio (II): SWAPPING
• Utilizar un dispositivo de almacenamiento secundario (disco) para aumentar el
espacio físico.
• Aumenta, por tanto, el grado de multiprogramación.
• Sólo se pueden ejecutar los procesos en memoria física.
• Dependiendo del tipo de reubicación es más o menos eficiente y útil.
swap out
swap in
a)
b)
a) Reubicación estática
(única ubicación permitida)
b) Reubicación dinámica
Introducció als Sistemes Operatius
10
Marisa Gil
GESTION DE LA MEMORIA
Gestión del espacio (y III):
Modelos no contiguos
• ¿Podemos trocear un programa e ir metiendo los fragmentos en los sitios libres
que encontremos?
• Cada fragmento necesita un registro de reubicación
• Permite aprovechar el espacio sin necesidad de compactación
A
B
C
RRA
RRC
RRB
• Modelos básicos:
• Paginación
• Segmentación
Introducció als Sistemes Operatius
11
Marisa Gil
GESTION DE LA MEMORIA
Paginación
• Se divide el EL del programa en bloques de igual tamaño
• El tamaño es fijo, definido por la arquitectura
• Cada bloque se llama página (o página lógica)
• La última página tendrá una parte no ocupada (fragmentación interna)
• La memoria física también se divide en trozos de igual tamaño
• Cada trozo se llama trama (o página física)
• Por simplicidad es del mismo tamaño que la página (a veces, múltiplo)
• Cargar un programa en memoria significa encontrar un sitio para cada página
• En general, encontrar tantas tramas libres como páginas ocupe
• Esta división en páginas es automática para la MMU
• No existe ninguna modificación en el espacio de direcciones lineal
• Es transparente al usuario, a los programas de traducción y a la CPU
Introducció als Sistemes Operatius
12
Marisa Gil
GESTION DE LA MEMORIA
Paginación
ESPACIO LÓGICO
ESPACIO FÍSICO
0
@lógica
CÓDIGO
0000110001101100 vista por la CPU
DATOS
...
vista por la MMU
página desplazamiento
0000110001101100
...
Reg. reubicación
+
...
PILA
2n-1
Introducció als Sistemes Operatius
13
Marisa Gil
GESTION DE LA MEMORIA
Paginación
MEMORIA
...
@lógica
d
n
TABLA de PÁGINAS
número de trama v
v
v
i
i
...
2n-1
Introducció als Sistemes Operatius
@física
m
d
...
i
v
14
Marisa Gil
GESTION DE LA MEMORIA
A tener en cuenta ...
• Existe una tabla de páginas por proceso
• Sólo está activa la del proceso que se está ejecutando
• Si el tamaño de la página es pequeño:
• Habrá poca fragmentación interna
• El número de páginas será grande (=> la TP será grande)
• La TP estará en memoria, no en la MMU (=> 2 accesos por traducción)
• la MMU será barata: sólo mantiene la dirección de la TP (RBTP)
• Si el tamaño de la página es grande:
• Habrá mucha fragmentación interna
• El número de páginas será pequeño (=> la TP será pequeña)
• Si la TP cabe en la MMU, la traducción de direcciones será rápida (1 acceso)
• la MMU será cara: mantiene la TP
• Tamaños comunes de páginas: 2K, 4K.
Introducció als Sistemes Operatius
15
Marisa Gil
GESTION DE MEMORIA
TLB (Translation Lookaside Buffer)
Objetivo: mejorar el rendimiento del acceso a memoria en paginación
• Memoria cache con las PTE últimamente referenciadas.
• Asociativa:
• contiene la página lógica referenciada
• el procesador pregunta al mismo tiempo a todas las entradas (hardware)
• 32, 48 entradas son valores habituales
William Stallings “Operating Systems”
Cap. 5.3 Virtual Memory
Maxwell McMillan, International Editions, 1992
Introducció als Sistemes Operatius
16
Marisa Gil
GESTION DE MEMORIA
TLB (Translation Lookaside Buffer)
p
CPU
@lógica
d
desplazamiento
...
TLB
n página n. trama val.
TLB
hit
t
d
@física
TLB
miss
TABLA
de
PÁGINAS
Introducció als Sistemes Operatius
MEMORIA
...
17
Marisa Gil
GESTION DE LA MEMORIA
Segmentación
• El EL del programa se construye en bloques
• El tamaño máximo de un bloque es fijo, definido por la arquitectura
• Cada bloque se llama segmento
• El número de bloques que conforman el programa lo determina el usuario
• Cada trozo puede tener una semántica asociada (código, datos,...)
• Se asocia memoria física a segmentos lógicos (segmentos físicos)
• Cargar un programa en memoria significa encontrar un sitio para cada segmento
• Aparece fragmentación externa.
• Esta división en segmentos es competencia del programador
• Se definen en la construcción del ejecutable (programador, compilador,...)
• El espacio de direcciones es de dos dimensiones, disperso.
Introducció als Sistemes Operatius
18
Marisa Gil
GESTION DE LA MEMORIA
Segmentación
ESPACIO LÓGICO
0
ESPACIO FÍSICO
@lógica
0000000001101100
CÓDIGO
segmento desplazamiento
0000000001101101
...
DATOS
...
no existen
0000001111111111
seg. de código
0000010000000000
...
segmento desplazamiento
seg. de datos
Reg. reubicación
+
...
PILA
2n-1
Introducció als Sistemes Operatius
19
Marisa Gil
GESTION DE LA MEMORIA
Segmentación
MEMORIA
...
@lógica
d
s
TABLA de SEGMENTOS
@inicio segmento
2s-1
seg. de código
<
longitud
no
@física
error
+
seg. de datos
...
Introducció als Sistemes Operatius
20
Marisa Gil
GESTION DE LA MEMORIA
A tener en cuenta
• Se elimina la fragmentación interna
• Se soporta el crecimiento dinámico de los segmentos
• Protección/uso compartido
• Desarrollo modular de programación: entidades menores de programa relacionadas lógicamente
Milan Milenkovic “Sistemas Operativos. Conceptos y diseño”
McGraw Hill
• Es más costoso buscar espacio libre para cargar un programa
• Reaparece la fragmentación externa
• Se gestiona la traducción a partir de registros especiales (ej: DS, SS,...)
• MMU cara
Introducció als Sistemes Operatius
21
Marisa Gil
GESTION DE LA MEMORIA
Modelos mixtos (I):
Paginación segmentada
• El espacio lógico de un programa lo forman todas las posibles direcciones
• El tamaño real de un programa es generalmente mucho más pequeño
• Muchas páginas no llegan a utilizarse
• Sólo un pequeño número de entradas de la tabla de páginas se accede
IDEA: Mantener sólo los grupos de páginas utilizadas por un programa,
dividiendo la tabla de páginas en segmentos.
Introducció als Sistemes Operatius
22
Marisa Gil
GESTION DE LA MEMORIA
Paginación segmentada
@lógica
MEMORIA
en qué tabla de páginas?
stp
dtp
...
T. de PÁGINAS
trama
+
@tabla
v
v
v
i
i
T. de PÁGINAS
trama
T. DE SEGMENTOS
Introducció als Sistemes Operatius
@física
v
v
v
i
...
23
Marisa Gil
GESTION DE LA MEMORIA
Modelos mixtos (II):
Segmentación paginada
• Los segmentos son de tamaño variable y generan fragmentación externa
• Cargar los segmentos en memoria es una operación “costosa”
• Puede no haber espacio contiguo para un segmento
• De todos los trozos de memoria libre hay que buscar el “adecuado”
IDEA: Los segmentos son conjuntos de páginas y cargar un segmento es
buscar tantas tramas libres como páginas lo componen.
Introducció als Sistemes Operatius
24
Marisa Gil
GESTION DE LA MEMORIA
Segmentación paginada
@lógica
MEMORIA
en qué página?
ps
ds
...
T. de PÁGINAS
trama
+
@tabla
v
v
v
i
i
T. de PÁGINAS
trama
T. DE SEGMENTOS
Introducció als Sistemes Operatius
@física
v
v
v
i
...
25
Marisa Gil
GESTION DE MEMORIA
Memoria Virtual
Definición:
Conjunto de mecanismos y técnicas, hardware y software, que permiten la ejecución de programas que no están enteramente cargados en memoria.
• Basta que éste en memoria la parte (código datos, pila) con la que se está trabajando actualmente.
• Hay que tener localizable y directamente accesible el resto del programa, para
cargarlo cuando sea referenciado: MEMORIA SECUNDARIA.
Ventajas
Permite aumentar el grado de multiprogramación
Reduce el tiempo de carga de los programas
Introducció als Sistemes Operatius
26
Marisa Gil
GESTION DE MEMORIA
Implementación de la memoria virtual
• Modelo de memoria no contiguo (paginación o segmentación)
• Mecanismos hardware para detectar que una dirección lógica no está presente
• Bit de presencia
• Mecanismos software y hardaware para gestionar la E/S del programa
• FALLO DE PÁGINA (interrupción)
• Almacenamiento secundario donde está el programa íntegro
• Memoria secundaria (disco, generalmente): ÁREA DE PAGINACIÓN
Introducció als Sistemes Operatius
27
Marisa Gil
GESTION DE MEMORIA
A tener en cuenta....
• Carga inicial del programa
• Paginación bajo demanda
• Prefetch
• Número de páginas que se asigna a cada programa
• Reemplazo de páginas si la memoria física ya está toda llena
• Hiperpaginación (THRASHING)
thrashing
utilización
de la CPU
Grado de multiprogramación
Introducció als Sistemes Operatius
28
Marisa Gil
GESTION DE MEMORIA
Principio de localidad
Localidad espacial:
Alta probabilidad de referenciar una dirección cercana a la actual
Localidad temporal
Alta probabilidad de referenciar la dirección actual en un intervalo corto de tiempo
Introducció als Sistemes Operatius
29
Marisa Gil
GESTION DE MEMORIA
A tener en cuenta ...
• El área de paginación es aconsejable que sea tres veces la memoria física
• Programar con una buena localidad:
• datos locales,
• organización rutinas,
• bucles...
• Tamaño de la página: compromiso entre tiempo E/S y frecuencia FP
• TLBs
Tacceso efectivo = (1 - p) x ma + p x tfp , 0 <= p <=1
Introducció als Sistemes Operatius
30
Marisa Gil
GESTION DE MEMORIA
Otros tipos de gestión de memoria: Java dynamic link
JVM
ficheros class
del programador
class loader
ficheros class de la API
JAVA (sólo los que se
necesitan)
bytecodes
execution engine
llamadas a métodos nativos del SO
SISTEMA OPERATIVO
Introducció als Sistemes Operatius
31
Marisa Gil
GESTION DE MEMORIA
Otros tipos de gestión de memoria: Java dynamic link
El orden en que se realizan estas tareas es estricto:
1. Cargar: buscar e importar los datos binarios de un tipo.
2. Linkar: realizar la verificación, preparación y (opcionalmente) resolución
a. Verificación: asegurar la correctitud del tipo importado
b. Preparación: asignar memoria para clases variables e inicializar la
memoria a los valores por defecto
c. Resolución: transformar las referencias simbólicas del tipo en referencias directas.
3. Inicialización: llamar al código JAVA que inicializa estas variables a sus propios valores iniciales.
Introducció als Sistemes Operatius
32
Descargar