Memoria
Sebastián Sánchez Prieto
1999-2003 S2P, OGP & IGT Memoria 2
Definición
La memoria es una amplia tabla de datos, cada uno de los cuales con su propia dirección
Tanto el tamaño de la tabla (memoria), como el de los datos incluidos en ella dependen de cada arquitectura concreta
Para que los programas puedan ser ejecutados es necesario que estén cargados en memoria principal
La información que es necesario almacenar de modo permanente se guarda en dispositivos de almacenamiento secundarios también conocidos como memoria secundaria
Memoria
BF
33C0F0B50012
F0B50011
F0B50013
1999-2003 S2P, OGP & IGT Memoria 3
Localidad
Los procesos tienden a concentrar sus referencias en un intervalo de tiempo en un subconjunto de su espacio de direcciones
Según Donald Knuth [1971]: Los programas, normalmente, tienen un perfil muy desigual, con unos
pocos picos agudos... También encontramos que menos del 4 por 100 de un programa, generalmente, representa más de la mitad de su tiempo de ejecución
Es una propiedad empírica más que teórica La localidad puede ser de dos tipos:
Localidad espacial Localidad temporal
1999-2003 S2P, OGP & IGT Memoria 4
Localidad espacial y temporal
Localidad espacial: una vez hecha una referencia a una posición de memoria, es muy probable que las localidades cercanas sean también referenciadas.
En apoyo a esta observación encontramos: Ejecución secuencial del código Tendencia de los programadores a colocar próximas entre sí las
variables relacionadas Acceso a estructuras de datos de tipo matriz o pila
Localidad temporal: una vez hecha una referencia a una posición de memoria en un determinado instante t, es muy probable que esa misma posición sea accedida en un instante t + t
Justificada por: Formación de ciclos Subrutinas Pilas
1999-2003 S2P, OGP & IGT Memoria 5
Jerarquía de memoria
La jerarquización de la memoria es un intento de aumentar el rendimiento de los computadores
Para ello se aprovechan los avances tecnológicos en el diseño de memorias y la localidad de los programas
Memorias rápidas: tienen un coste elevado y una capacidad pequeña Memorias lentas: son baratas y tienen una capacidad alta
COMPROMISO!!!
CD-ROM - Cintas
Discos magnéticos
Memoria principal
Caché externa L2
Caché on-chip L1
Registros internosdel procesador
Mayor rapidezmenor tamaño ymayor precio
Menor rapidez
mayor tamaño ymenor precio
1999-2003 S2P, OGP & IGT Memoria 6
Fragmentación
Fragmentación = memoria desaprovechada Puede ser de dos tipos, interna y externa
Fragmentación interna Se debe a la diferencia de tamaño entre la partición de
memoria y el objeto residente dentro de ella Se produce siempre que se trabaje con bloques de
memoria de tamaño fijo Si el tamaño del objeto no coincide con el de la partición,
queda una zona que no se puede aprovechar Fragmentación externa
Se debe al desaprovechamiento de memoria entre particiones
1999-2003 S2P, OGP & IGT Memoria 7
Direcciones Simbólicas/Físicas
Programa
fuente
Compilador oEnsamblador
Programa
objeto
EnlazadorPrograma
ejecutable
Otrosobjetos
Bibliotecas
Memoria
Cargador
Bibliotecasdinámicas
1999-2003 S2P, OGP & IGT Memoria 8
Reubicación
La reubicación hace referencia al hecho de poder localizar a los programas para su ejecución en diferentes zonas de memoria
Reubicación estática Se realiza antes o durante la carga del programa en
memoria Los programas no pueden ser movidos una vez iniciados
Reubicación dinámica Los programas pueden moverse en tiempo de ejecución El paso de dirección virtual a dirección real, se realiza en
tiempo de ejecución Necesita hardware adicional (MMU)
1999-2003 S2P, OGP & IGT Memoria 9
Memoria caché
Intenta reducir el desajuste entre las velocidades del procesador y de las memorias
Su empleo se justifica por la localidad de los programas Es una solución de compromiso entre mejora de
rendimiento y precio La idea de emplear memorias caché consiste en
mantener en ellas los datos o instrucciones que el procesador necesita en cada momento
Si los datos o instrucciones se encuentran en la caché el acceso en muy rápido, si no es así, los datos se traen desde memoria principal en bloques
1999-2003 S2P, OGP & IGT Memoria 10
Diseño de la caché
A los bloques de transferencia entre memoria principal y memoria caché se les denomina líneas o vías de caché
Decisiones de diseño: ¿Qué tamaño deben tener las líneas de caché? ¿Cómo se sabe si un bloque está en la caché? ¿Cómo se establece la correspondencia entre líneas de
caché y bloques de MP? ¿Qué hacer cuando una línea de caché es modificada? ¿Qué estrategia se debe emplear cuando es necesario
reemplazar una línea de caché?
1999-2003 S2P, OGP & IGT Memoria 11
Caché de correspondencia directa
1 0 0 1 1 1 0 0 1 1Dirección generada por el procesador
0
15
3
12
6
1
2
4
9 6 3
0 1 3 4 5 6 72
TAG
01
34567
2
Fallo
1999-2003 S2P, OGP & IGT Memoria 12
Caché completamente asociativa
1 0 0 1 1 1 0 0 1 1Dirección generada por el procesador
126
16
20
105
19
78
79
80
78 3
0 1 3 4 5 6 72
TAG
01
34567
2
Acierto
1999-2003 S2P, OGP & IGT Memoria 13
Caché asociativa por conjuntos
1 0 0 1 1 1 0 0 1 1Dirección generada por el procesador
31
16
20
12
19
15
0
1
19 2 3
0 1 3 4 5 6 72
TAG
0
1
3
2Acierto
1999-2003 S2P, OGP & IGT Memoria 14
Memoria caché
Coherencia: ¿qué ocurre si un dato de la caché se modifica?
En tal caso se produce una inconsistencia entre los contenidos memoria caché y memoria principal
Problema grave en sistemas multiprocesador Estrategias de actualización:
Write back Write through
También cabe considerar las estrategias de sustitución de líneas de caché cuando existen varias vías por conjunto
Normalmente se emplean cachés separadas para instrucciones y para datos
1999-2003 S2P, OGP & IGT Memoria 15
Gestión de la memoria principal
Analizaremos dos de los mecanismos más ampliamente ofrecidos por las arquitecturas actuales: segmentación y paginación
En ambos casos debe existir una unidad de manejo de memoria (MMU) encargada de traducir direcciones virtuales a direcciones físicas
Cada esquema tiene sus propias ventajas e inconvenientes
Ambos aportan protección y posibilidad de compartir información entre procesos
Analizaremos también una combinación de los dos esquemas para tratar de obtener las ventajas de ambos
1999-2003 S2P, OGP & IGT Memoria 16
Segmentación
Es un esquema de gestión de memoria con varias ventajas:
Permite que los bloques de un proceso (código, datos, pila, DLLs, etc.) puedan estar situados en áreas de memoria no contiguas
Suministra reubicación dinámica Aporta protección y uso compartido
Las direcciones en estos sistemas tienen dos componentes: número de segmento y offset
En el 80x86mov eax, ds:esi
Para localizar el dato se utiliza el selector DS y el desplazamiento SI
Los segmentos pueden tener tamaños diferentes
1999-2003 S2P, OGP & IGT Memoria 17
Segmentación (esquema lógico)
MemoriafísicaCódigo
Espacio de direccionamiento virtual Espacio de direccionamiento real
Dátos
Datos
compartidos
PilaCódigo
Dátos
Datos
compartidos
Pila
MMU
1999-2003 S2P, OGP & IGT Memoria 18
Segmentación (HW)
Procesador S D
Base 1Base 2Base 3Base 4Base 5Base 6Base 7Base 8
S
Memoria
Límite 1Límite 2Límite 3Límite 4Límite 5Límite 6Límite 7Límite 8
<
Tabla de segmentos
+¡¡¡ Error !!!
Base 5
D
RPBTS
RLTS
1999-2003 S2P, OGP & IGT Memoria 19
Cuestiones
¿Qué ocurre si la tabla de segmentos es muy grande? Solución: se guarda en memoria apuntada por un registro
base (RPBTS) Problema: se necesitan dos referencias por cada acceso,
uno a la tabla de segmentos y el otro a la posición referenciada
Solución: utilizar registros internos dentro de la CPU (Intel) En estos registros se almacenan las últimas entradas
utilizadas de la tabla de segmentos Mientras el segmento no se cambie, la entrada se mantiene
en estos registros
1999-2003 S2P, OGP & IGT Memoria 20
Protección y uso compartido
Protección basada en los registros base y límite Se pueden establecer distintos derechos de acceso (rwx)
a cada segmento del proceso Estos derechos suelen guardarse en la tabla de
segmentos de cada proceso El uso compartido es uno de los argumentos más
importantes en favor de la segmentación ¿Cómo pueden dos o más procesos compartir un
segmento? Basta con que dos entradas en las dos tablas de
segmentos (que no tienen por qué coincidir en número) apunten a la misma dirección base
1999-2003 S2P, OGP & IGT Memoria 21
Ventajas e inconvenientes
Ventajas: Elimina de fragmentación interna Permite el crecimiento dinámico de los segmentos Aporta protección y uso compartido Permite un enlace y carga dinámicos
Inconvenientes: Necesita compactación de memoria En sistemas antiguos se fijaba un tamaño máximo fijo para
cada segmento Necesita hardware adicional Los bloques de memoria no son múltiplos enteros de los
bloques que se traen desde el disco
1999-2003 S2P, OGP & IGT Memoria 22
Paginación
Es un esquema de gestión de memoria en el que la asignación de memoria no es contigua
El espacio de direcciones virtuales de un proceso está dividido en bloques de tamaño fijo llamados páginas
La memoria física se divide en marcos de página La dirección virtual consta de un número de página virtual
y un desplazamiento La traducción de direcciones se lleva a cabo con la ayuda
de la tabla de páginas (TDP) La TDP se construye en tiempo de carga del proceso en
memoria
1999-2003 S2P, OGP & IGT Memoria 23
Paginación (esquema lógico)
MemoriafísicaCódigo
Espacio de direccionamiento virtual Espacio de direccionamiento real
MMU
A
Páginas
Marcos
B
C
D
E
F
G A
B
C
D
1999-2003 S2P, OGP & IGT Memoria 24
Paginación (HW)
Procesador P D
Marco 1Marco 2Marco 3Marco 4Marco 5Marco 6Marco 7Marco 8
P
Memoria
Tabla de páginas
Marco 5
D
RPBTP
RLTP
M D
1999-2003 S2P, OGP & IGT Memoria 25
Consideraciones
Si se piden “s” posiciones de memoria nº páginas asignadas=[s/p] p: tamaño de la página
Si el cociente anterior no es entero se produce la llamada fragmentación de página
Los marcos libres se suelen mantener en una lista enlazada
Si la TDP es muy grande, ésta se debe mantener en memoria principal
Para acelerar los accesos se emplean memorias asociativas (TLB)
1999-2003 S2P, OGP & IGT Memoria 26
Paginación con TLBs (HW)
Marco 1Marco 2Marco 3Marco 4Marco 5Marco 6Marco 7Marco 8
P
Memoria
Tabla de páginas
Marco 5
D
RPBTP
RLTP
M D
TLBAXVCPTSR
32489195
185
10
Procesador P D
1999-2003 S2P, OGP & IGT Memoria 27
Protección y uso compartido
Protección basada en bits de acceso de las entradas de la TDP
Compartir páginas es bastante sencillo Basta con que dos o más procesos tengan en una de sus
entradas de la TDP la misma referencia a un marco La paginación es gestionada por completo por el sistema
operativo La paginación elimina la fragmentación externa, pero no
la interna Con página grande aumentamos la fragmentación interna
pero disminuimos el tamaño de la TDP
1999-2003 S2P, OGP & IGT Memoria 28
Problemas de la paginación
Fragmentación interna (ya comentado) Si el número de páginas es grande, la zona de memoria
ocupada por la TDP puede ser excesiva Ejemplo:
Tamaño de cada entrada de la TDP: 4 bytes Espacio de direccionamiento: 32 bits Páginas de 4 Kbytes Tamaño de la TDP: 4 Mbytes
Solución Tabla de páginas paginada Se emplea un directorio de páginas
1999-2003 S2P, OGP & IGT Memoria 29
Paginación de la TDP
P D
Tabla 1Tabla 2Tabla 3Tabla 4Tabla 5Tabla 6Tabla 7Tabla 8
Dir
Memoria
Directorio de páginas
D
RPBTP
RLTP
M D
Dir
Tabla de páginas
Dirección virtual
Marco 1Marco 2Marco 3Marco 4Marco 5Marco 6Marco 7Marco 8
P
1999-2003 S2P, OGP & IGT Memoria 30
Segmentación paginada
Es posible combinar los esquemas de paginación y segmentación
De este modo podemos obtener las ventajas de ambos a costa de complicar el HW
Combinaciones: Segmentación paginada Paginación segmentada (no se emplea en la práctica)
En la segmentación paginada, cada segmento se divide en páginas
En la paginación segmentada, cada página se divide en segmentos
1999-2003 S2P, OGP & IGT Memoria 31
Segmentación paginada (HW)
S
Memoria
Tabla de segmentos
RPBTS
RLTS
P D
Dirección virtual
S
Tabla de páginas+
M D
Base de la tablade páginas
1999-2003 S2P, OGP & IGT Memoria 32
MMU del Pentium
El Pentium soporta segmentación, paginación y segmentación paginada
La dirección lógica está compuesta por un número de segmento (selector de segmento) y un desplazamiento
El selector de segmento es uno de los siguientes registros: CS, DS, ES, SS, FS, GS
ÍndiceSelector de segmento16 bits
0-GDT1-LDT
Nivel de privilegio
13 21
1999-2003 S2P, OGP & IGT Memoria 33
MMU del Pentium
LDT: Local Descriptor Table GDT: Global Descriptor Table Descriptor = entrada en la tabla de segmentos Tamaño del descriptor: 8 bytes Número máximo de entradas en cada tabla: 213
Base 0-15
Límite
Base 24-31 Límite 16-19
TipoDPLP Base 16-23
G 0D
Granularidad0: Límite en bytes1: Límite en páginas
1999-2003 S2P, OGP & IGT Memoria 34
MMU del Pentium
Selector
Límite
Base
Misc
Límite
Base
Misc
Límite
Base
Misc
Descriptor
Offset
+
Dirección lineal 32 bits
1999-2003 S2P, OGP & IGT Memoria 35
MMU del Pentium
Si la paginación está activada
Dirección lineal 32 bits
Dir. Pág. Offset
10 bits
32 bits
# marco rwx
Marco de página
10 bits 12 bits
Directorio de páginas
32 bits
1999-2003 S2P, OGP & IGT Memoria 36
Memoria virtual
Problema: ejecutar programas de mayor tamaño que la memoria disponible
Soluciones: Overlays: control directo por parte del programador Memoria virtual: control llevado a cabo por el sistema
operativo La memoria virtual se basa en el principio de localidad Los programas no se cargan por completo en memoria Ventajas:
Permite aumentar el tamaño de los programas Permite aumentar el grado de multiprogramación Proporciona transparencia cara al usuario Reduce la E/S, ya que evita cargar partes de un programa
que raramente se utilizan
1999-2003 S2P, OGP & IGT Memoria 37
Memoria virtual: implementación
Para soportar memoria virtual podemos basarnos tanto en segmentación como en paginación
Lo más típico es emplear paginación porque se trabaja con bloques de tamaño fijo
De este modo, las transferencias desde y hacia el disco se llevan a cabo de un modo mucho más sencillo
Los esquemas con memoria virtual basada en segmentación son escasos
Decisiones de diseño: ¿Qué tamaño deben tener las páginas? ¿Cómo se sabe si una página está en memoria principal? ¿Qué hacer cuando una página es modificada? ¿Qué estrategia se debe emplear cuando es necesario
reemplazar una página?
1999-2003 S2P, OGP & IGT Memoria 38
Memoria virtual basada en paginación
OUTININ
OUTOUTIN
zx
y
(P0)(P4)
(P3) (P0)(P1)
(P2)
(P5)(P4)(P3)
Tabla del mapa de páginas Tabla del mapa
de archivos
Memoriaprincipal
Memoriasecundaria
1999-2003 S2P, OGP & IGT Memoria 39
Carga dinámica
Programa
S. O.
Memoria principal
Marco libre
0
Tabla de páginas
2Excepción
3La página estáen memoria auxiliar
4 Cargar lapágina quefalla
Memoria secundaria
LOAD M6
1Referencia
Reiniciar la instr.
5Actualizar latabla de páginas
1999-2003 S2P, OGP & IGT Memoria 40
Soporte hardware
Requerimientos hardware: Tabla de páginas Bits en los descriptores de página:
Bit de validez: determina si la página se encuentra presente o no en memoria principal
Bit de referencia: se activa en cada acceso a la página. Lo emplean los algoritmos de reemplazo
Bit de modificación: determina si la página ha sido modificada desde que se cargó. Es importante para determinar si es necesario salvar sus contenidos
Interruptibilidad de las instrucciones Dispositivo de almacenamiento secundario
1999-2003 S2P, OGP & IGT Memoria 41
Tasa de fallos de página
Es la probabilidad de que se produzca un fallo de página p = número de fallos / número total de referencias 0 p 1
En general, cuantos más marcos se asignan a un proceso, menor es p
Cuando se produce un fallo se consume un tiempo de servicio de fallo
Los tiempos que más afectan son a este tiempo son: Los cambios de contexto Salvar una página modificada a disco (page out) Cargar la página referencia de disco a memoria (page in)
El planificador asigna la CPU a otros procesos mientras se realizan las lecturas (page in) y escrituras asociadas al fallo de página