Está en la página 1de 41

Memoria

Sebastián Sánchez Prieto


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

F0B50011 33
F0B50012 C0
F0B50013 BF

 1999-2003 S2P, OGP & IGT Memoria 2


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 3


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 4


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!!!
Registros internos
del procesador

Mayor rapidez Menor rapidez


menor tamaño y Caché on-chip L1 mayor tamaño y
mayor precio Caché externa L2 menor precio

Memoria principal

Discos magnéticos

CD-ROM - Cintas

 1999-2003 S2P, OGP & IGT Memoria 5


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 6


Direcciones Simbólicas/Físicas

Otros Bibliotecas
objetos dinámicas
Compilador o
Ensamblador
Enlazador
Programa Programa Programa
fuente objeto ejecutable
Cargador

Bibliotecas

Memoria

 1999-2003 S2P, OGP & IGT Memoria 7


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 8


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 9


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 10


Caché de correspondencia directa

1 0 0 1 1 1 0 0 1 1 Dirección generada por el procesador


9 6 3

0 1 2 3 4 5 6 7
0 0
1 15
2 3
3 12
4 6
5 1
6 2 Fallo
7 4
TAG

 1999-2003 S2P, OGP & IGT Memoria 11


Caché completamente asociativa

1 0 0 1 1 1 0 0 1 1 Dirección generada por el procesador


78 3

0 1 2 3 4 5 6 7
0 126
1 16
2 20
3 105
4 19
5 78 Acierto
6 79
7 80
TAG
 1999-2003 S2P, OGP & IGT Memoria 12
Caché asociativa por conjuntos

1 0 0 1 1 1 0 0 1 1 Dirección generada por el procesador


19 2 3

0 1 2 3 4 5 6 7
31
0
16
20
1
12
19 Acierto
2
15
0
3
1
TAG
 1999-2003 S2P, OGP & IGT Memoria 13
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 14


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 15


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 80x86
mov 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 16


Segmentación (esquema lógico)

Espacio de direccionamiento virtual Espacio de direccionamiento real

Memoria
Código física

Dátos
Dátos

MMU
Datos Datos
compartidos compartidos
Pila
Código

Pila

 1999-2003 S2P, OGP & IGT Memoria 17


Segmentación (HW)

D Memoria
Procesador S D

¡¡¡ Error !!!


< +

Tabla de segmentos

RPBTS Base 1 Límite 1


Base 2 Límite 2
S Base 3 Límite 3
Base 4 Límite 4
Base 5 Límite 5
RLTS
Base 6 Límite 6
Base 7 Límite 7
Base 8 Límite 8
Base 5

 1999-2003 S2P, OGP & IGT Memoria 18


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 19


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 20


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 21


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 22


Paginación (esquema lógico)

Espacio de direccionamiento virtual Espacio de direccionamiento real

Memoria
Código física

A
B
B
Páginas C
D MMU D Marcos
E
F
G A
C

 1999-2003 S2P, OGP & IGT Memoria 23


Paginación (HW)

D Memoria
Procesador P D

M D

Tabla de páginas
RPBTP Marco 1
Marco 2
P Marco 3
Marco 4
Marco 5
RLTP
Marco 6
Marco 7
Marco 8
Marco 5

 1999-2003 S2P, OGP & IGT Memoria 24


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 25


Paginación con TLBs (HW)

D Memoria
Procesador P D M D

Marco 5
TLB
A 3
X 24
V 89
C 19
P 5
Tabla de páginas T 18
RPBTP Marco 1 S 5
Marco 2 R 10
P Marco 3
Marco 4
Marco 5
RLTP
Marco 6
Marco 7
Marco 8

 1999-2003 S2P, OGP & IGT Memoria 26


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 27


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 28


Paginación de la TDP

Dirección virtual
D Memoria
Dir P D

M D

Directorio de páginas Tabla de páginas


RPBTP Tabla 1 Marco 1
Tabla 2 Marco 2
Dir Tabla 3 Marco 3
P
Tabla 4 Marco 4
Tabla 5 Marco 5
RLTP
Tabla 6 Marco 6
Tabla 7 Marco 7
Tabla 8 Marco 8

 1999-2003 S2P, OGP & IGT Memoria 29


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 30


Segmentación paginada (HW)

Dirección virtual
Memoria
S P D

M D

Tabla de segmentos

RPBTS + Tabla de páginas

RLTS Base de la tabla


de páginas

 1999-2003 S2P, OGP & IGT Memoria 31


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

13 1 2
Selector de segmento
16 bits
Índice

0-GDT
1-LDT

Nivel de privilegio

 1999-2003 S2P, OGP & IGT Memoria 32


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

Límite
Base 0-15
P DPL Tipo Base 16-23
Base 24-31 G D 0 Límite 16-19

0: Límite en bytes
Granularidad
1: Límite en páginas

 1999-2003 S2P, OGP & IGT Memoria 33


MMU del Pentium

Selector Offset

Límite
Base +
Misc
Límite
Descriptor Base
Misc
Límite
Base
Misc Dirección lineal 32 bits

 1999-2003 S2P, OGP & IGT Memoria 34


MMU del Pentium

Dirección lineal 32 bits


Si la paginación está activada

10 bits 10 bits 12 bits

Dir. Pág. Offset

32 bits 32 bits
Marco de página

Directorio de páginas # marco rwx

 1999-2003 S2P, OGP & IGT Memoria 35


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 36


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 37


Memoria virtual basada en paginación

Memoria Memoria
principal secundaria
(P3) (P0)
(P1)
(P0)
IN y (P4) (P2)
OUT
OUT (P3)
IN x
IN z (P4)
OUT (P5)
Tabla del
mapa de páginas Tabla del mapa
de archivos

 1999-2003 S2P, OGP & IGT Memoria 38


Carga dinámica

La página está
S. O. 3 en memoria auxiliar
Programa

Referencia Memoria
2
1 Excepción secundaria
LOAD M 0
6
Reiniciar
Memoria
la instr. principal
Tabla de
páginas
5 Marco libre 4 Cargar la
Actualizar la
página que
tabla de páginas
falla

 1999-2003 S2P, OGP & IGT Memoria 39


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 40


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

 1999-2003 S2P, OGP & IGT Memoria 41

También podría gustarte