Está en la página 1de 44

Gestión de memoria

Gestión de memoria 1
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

Gestión de 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

Gestión de 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

Gestión de 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

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

Gestión de 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

Gestión de memoria 6
Direcciones Simbólicas/Físicas

Otros Bibliotecas
objetos dinámicas
Compilador o
Ensamblador
Enlazador
Programa Programa Programa

Cargador

Bibliotecas

Memoria

Gestión de 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)

Gestión de memoria 8
• Esquemas de gestión de memoria
• Máquina desnuda
• Monitor monolítico o residente
• Asignación de memoria particionada contigua
• Asignación de memoria particionada no contigua
• Memoria virtual

Gestión de memoria 9
Máquina desnuda

• Es la manera más sencilla de gestionar la memoria: no existe ningún


gestor
• El usuario controla toda la memoria
• El sistema no porporciona ningún servicio

Memoria

Usuario

Gestión de memoria 10
Monitor monolítico o residente
MEMORIA
• Protección:

MONITOR

Dirección límite


CPU Dirección>Límite

No
Error de direccionamiento

Gestión de memoria 11
Memoria particionada contigua

• Se asigna una partición de memoria a cada proceso


MFT MVT
Sistema multiprogramado con Sistema multiprogramado con
tamaño y número de particiones tamaño y número de particiones
fijo variable
Fragmentación interna y externa Fragmentación externa
Desventaja en la asignación Ventaja en la asignación dinámica
dinámica de memoria de memoria
Problema: intercambio de Requiere algoritmos de gestión de
trabajos con E/S pendiente memoria más complejos

• Protección: registros límite o base-límite


• Fragmentación externa: compactación

Gestión de memoria 12
Registros límite

• No soporta reubicación dinámica


MEMORIA
Límite Límite
inferior inferior

Programa X

CPU <= >=


Sí Sí

No No

Error de direccionamiento

Gestión de memoria 13
Registros base-límite

• Soporta reubicación dinámica


MEMORIA

Límite Base

Límite
CPU < + Programa X

No

Error de direccionamiento

Gestión de memoria 14
Tabla de descripción de particiones
0K Sistema operativo
100K Número Base Tamaño Estado
de la de la de la de la
partición partición partición partición
0K 100K ASIGNADA
0
400K 100K 300K LIBRE
Pi 1
500K 2 400K 100K ASIGNADA
Pj 3 500K 250K ASIGNADA

750K 4 700K 150K ASIGNADA

Pk 5 900K 100K LIBRE


900K
1000K

Gestión de memoria 15
Memoria particionada no contigua

• Esquemas:
• Segmentación
• Paginación
• Segmentación paginada
• Paginación segmentada

Gestión de 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 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

Gestión de memoria 17
Segmentación (esquema lógico)
Espacio de direccionamiento real
Espacio de direccionamiento virtual

Código Memoria
física
Dátos
Dátos

MMU
Datos Datos
compartidos compartidos
Pila
Código

Pila

Gestión de memoria 18
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

Gestión de 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

Gestión de 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

Gestión de 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

Gestión de 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

Gestión de memoria 23
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

Gestión de memoria 24
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

Gestión de 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)

Gestión de memoria 26
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

Gestión de 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

Gestión de 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

Gestión de memoria 29
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

Gestión de 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

Gestión de memoria 31
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

Gestión de memoria 32
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

Gestión de memoria 33
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é?

Gestión de memoria 34
Memoria cache

Parámetros de un sistema con memoria cache:


• Política de ubicación
• Las políticas de ubicación establecen la correspondencia entre los
bloques de la MP y de la MCa
Política de extracción
• Determinan cuándo y qué información se envía de MP a MCa
• Política de reemplazo
• Determinan cuándo y qué bloque se sustituye de las MCa con política de
ubicación asociativa
• Política de actualización
• Determinan el instante en que se actualiza la información en MP cuando
se produce una escritura en MCa  Problema de coherencia de la MCa

Gestión de memoria 35
Políticas de ubicación
• Las políticas de ubicación establecen la correspondencia entre los
bloques de la MP y de la MCa
• Las políticas de ubicación más importantes son:
• Directa
• Asociativa
• Asociativa por conjuntos
Ejemplo de aplicación:
• Establecer la correspondencia entre MP y MCa en un sistema con:
• Dirección física: 20 bits
• Tamaño de bloque: 8 bytes = 23 bytes/bloque
• Capacidad MCa: 1Kbytes= 210 bytes  Nº bloques MCa = 210
 27  128
23
• Capacidad MP: 1 Mbyte = 220 bytes  Nº bloques de MP = 2 20
 217  131.072
23

Gestión de memoria 36
Políticas de ubicación

Correspondencia
Dirección directa
de MP (I):
Etiqueta Bloque de MCa Palabra Memoria principal
10 bits 7 bits 3 bits
Bloque 0
Bloque 1
Memoria caché
.
Etiqueta (B0) Bloque 0 .
Etiqueta (B1) Bloque 1 .
Etiqueta (B2) Bloque 2

. . Bloque 127
. . Bloque128
. . Bloque 129

.
Etiqueta (B127) Bloque 127 .
.
Acierto
Comparador Palabra enviada
al procesador Bloque 131.071
Fallo
Gestión de memoria 37
Políticas de ubicación
Correspondencia directa (II):
• Consiste en hacer corresponder a todo bloque
i de MP el bloque i mod k de MCa, donde k es
el número total de bloques de la MCa Ventajas:
• Una dirección en MCa consta de: • La lectura permite el acceso
simultáneo:
• Etiqueta • al directorio y
• Nº de bloque de MCa • a la palabra dentro del
• Posición en el bloque (palabra) bloque de MCa
Solución: • Algoritmo de reemplazo trivial
• 23 bytes/bloque 3 bits para la posición
dentro del bloque Inconveniente:
• 27 bloques de MCa 7 bits para cada bloque • Incremento de la tasa de fallos
• de la MCa, si dos bloques de MP,
 10 bits para que corresponden a un mismo
cada etiqueta bloque de MCa, se utilizan de
forma alternativa

217 bloques MP
7
 210
2 bloques MCa
Gestión de memoria 38
Memoria cache
Políticas de ubicación
Correspondencia
Dirección asociativa
de MP (I):
Etiqueta Palabra Memoria principal
17 bits 3 bits
Bloque 0
Bloque 1
Memoria caché
.
Etiqueta (B0) = Bloque 0 .
Etiqueta (B1) = Bloque 1 .
Etiqueta (B2) = Bloque 2
Acierto
. . . Bloque 127
. . . Bloque128
. . . Bloque 129

.
Etiqueta (B127) = Bloque 127 .
.
Fallo
Palabra enviada Bloque 131.071
al procesador
Gestión de memoria 39
Memoria cache
Políticas de ubicación
Correspondencia asociativa (II):
Ventaja:
• Cualquier bloque de MP puede ubicarse • Flexibilidad (permite la
en cualquiera de los bloques de la cache implantación de gran variedad
• Una dirección en MCa consta de: de algoritmos de reemplazo)
• Etiqueta
• Posición en el bloque (palabra)
Inconveniente:
Solución: • Coste de las comparaciones
• 23 bytes/bloque 3 bits para la posición
dentro del bloque
• 217 bloques de MP  17 bits para cada
etiqueta

Gestión de memoria 40
Memoria cache
Políticas de ubicación
Correspondencia
Dirección deasociativa
MP por conjuntos (I): Memoria principal
Etiqueta Conjunto de MCa Palabra
11 bits 6 bits 3 bits Bloque 0
Bloque 1
Memoria caché
Etiqueta (B0) Bloque 0
...
C0 C0
Etiqueta (B1) Bloque 1 Bloque 63
Etiqueta (B2) Bloque 2 Bloque 64
C1 C1
Etiqueta (B3) Bloque 3 Bloque 65
. .
. . ...
. .
Bloque 127
Etiqueta
Etiqueta(B127)
(B126) Bloque 126
C63 C63 Bloque128
Etiqueta (B127) Bloque 127
Bloque 129

...
Fallo
Comparador 0 Bloque 131.071
Acierto Palabra enviada
Comparador 1 al procesador

Gestión de memoria 41
Políticas de ubicación
Correspondencia asociativa por conjuntos (II):
Consiste en dividir la MCa en C conjuntos • Solución (asignando 2 bloqs./cjto.):
de B bloques cada uno • 23 bytes/bloque 3 bits para la
• Se aplica: posición dentro del bloque
• Correspondencia directa a nivel de • 26 conjuntos en MCa 6 bits para cada
conjunto conjunto
• Correspondencia asociativa a nivel de
• 11 bits para cada etiqueta
bloque
• Un bloque i de MP puede ubicarse en • El coste de la búsqueda depende del
cualquier bloque del conjunto i mod C de número y longitud de las etiquetas que
MCa se tienen que comparar
simultáneamente
• Una dirección en MCa consta de:
Ventaja:
• Etiqueta,
• Conjunto y • Reduce el coste de la totalmente
• Posición en el bloque asociativa proporcionando un
rendimiento cercano a esta última

Gestión de memoria 42
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

Gestión de memoria 43
Ejercicio

• Sea una computadora que dispone de una memoria principal


entrelazada y memorias caché separadas con las siguientes
características:
•         El tamaño de un bloque de memoria es de 32 bytes
•         Memoria principal:
•         Capacidad: 256 Mbytes
•         Memoria caché:
•         Asociativa por conjuntos, estructurada según:
•         Memoria caché de instrucciones: 8 Kbytes con 4 bloques por
conjunto.
•      Memoria caché de datos: 8 Kbytes con 2 bloques por conjunto.

Gestión de memoria 44

También podría gustarte