Está en la página 1de 52

DSO 2015

Gestión de memoria
Contenido

• Introducción
• Funciones del sistema de gestión de memoria
• Modelo de memoria de un proceso
• Evolución de los sistemas de gestión de
memoria
– Gestión de la memoria con particiones fijas
– Gestión de la memoria con particiones variables
– Paginación
– Segmentación
• Memoria virtual
– Políticas de sustitución de páginas

DSO 2015 2 Gestión de Memoria


Arquitectura Von Neumann

DSO 2015 3 Gestión de Memoria


Jerarquía de memoria
n La jerarquización de la memoria es un intento de aumentar el
rendimiento de los computadores
n Para ello se aprovechan los avances tecnológicos en el diseño de
memorias y la localidad de los programas
n Memorias rápidas: tienen un coste elevado y una capacidad pequeña
n Memorias lentas: son baratas y tienen una capacidad alta

Registros internos
del procesador
Mayor rapidez
menor tamaño y Menor rapidez
mayor precio Caché on-chip L1 mayor tamaño y
Caché externa L2 menor precio

Memoria principal

Discos magnéticos

CD-ROM - Cintas

DSO 2015 4 Gestión de Memoria


Memoria Principal
n La memoria es una amplia tabla de celdas, cada una de
las cuales con su propia dirección
n Tanto el tamaño de la tabla (memoria), como el de las
celdas, dependen de cada arquitectura concreta
n Para que los programas puedan ser ejecutados es
necesario que estén cargados en memoria principal
n 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

DSO 2015 5 Gestión de Memoria


Funciones del gestor de memoria
• Los objetivos del sistema de g.m. son:

– Conocer el estado de una localización de memoria


– Subdividir la memoria para hacer sitio a varios procesos.
– Proteger las zonas de memoria de los procesos
– Mapear/Trasladar direcciones logicas a dir. físicas
– Hace falta repartir eficientemente la memoria para
introducir tantos procesos como sea posible.
– Cargar programas en MP para su ejecución.
– Proporcionar memoria a los procesos cuando la soliciten
y liberarla cuando se requiera.
– Las rutinas del sistema operativo también deberán residir
en memoria.

DSO 2015 6 Gestión de Memoria


Administración de Memoria

• Gestión de memoria: Objetivos


– Conseguir que varios procesos puedan ejecutarse de
forma concurrente
• Evitar los conflictos de uso entre procesos
• Proteger al sistema operativo
• Aprovechar eficazmente el espacio disponible:
– Minimizar la memoria desaprovechada
» Evitar fragmentación
» Memoria ocupada por varias copias de un mismo objeto
• Carga parcial de programas sin perjudicar el rendimiento:
– Tiempo de acceso a memoria
• Un gestor de memoria ideal debería:
• Minimizar la memoria desaprovechada
• Tener una complejidad temporal mínima
(Ejecutarse rápido o suponer poca sobrecarga)
• Proporcionar una buena protección y una compartición flexible

DSO 2015 7 Gestión de Memoria


Administración de Memoria
• Ciclo de vida de un programa

DSO 2015 8 Gestión de Memoria


Modelo de memoria de un proceso

• Un proceso está formado por una serie de


regiones.
• Región: zona contigua del espacio de
direcciones de un proceso con las mismas
propiedades.
• Tipos de regiones básicos:
– Texto: código
– Datos
– Pila

DSO 2015 9 Gestión de Memoria


Crear mapa desde ejecutable
Fichero Ejecutable
0 Número mágico
Cabecera Contador de programa inicial
....................
Tabla de secciones Mapa de memoria
0
1000
Código Código

5000 4000
Secciones Datos con valor inicial Datos con valor inicial

5000
“0” Datos sin valor inicial
................

8000
Tabla de símbolos

Argumentos del programa


Pila

DSO 2015 10 Gestión de Memoria


DSO 2015 11 Gestión de Memoria
Reubicación y protección
Direcciones
l Dirección lógica:
l La generada por la CPU
l Es una referencia a una posición de memoria
independiente de la asignación actual de datos a la
memoria.
l Se debe hacer una traducción a una dirección física.
l El dispositivo que traduce direcciones virtuales a físicas se
llama unidad de manejo de memoria (MMU, en inglés)
l Dirección física:
l la que llega al chip de memoria
l La dirección absoluta o la posición real en la memoria
principal.

DSO 2015 13 Gestión de Memoria


Reubicación

• En un sistema multiprogramado es imposible


conocer en tiempo de compilación y montaje
qué direcciones ocupará un proceso en
memoria

• Solución: emplear direcciones lógicas

DSO 2015 14 Gestión de Memoria


Administración de Memoria
– El programador no conoce qué otros programas residirán en la
memoria en el momento de la ejecución de su programa.
Generalmente, tampoco conoce en que zona de memoria se
colocará su programa

– Mientras que se está ejecutando el programa, puede que se


descargue en el disco y que vuelva a la memoria principal, pero en
una ubicación distinta a la anterior (reubicación)
à Un programa debe poder moverse por la memoria a
consecuencia de intercambios

– Se deben traducir las referencias a la memoria encontradas en el


código del programa a las direcciones físicas reales.

– El compilador traduce direcciones de memoria simbólicas a


direcciones binarias.

DSO 2015 15 Gestión de Memoria


Administración de Memoria
• Reubicación:
– Reubicación estática
• Se lleva a cabo durante la carga del programa
• Se emplea direccionamiento indirecto a partir de la dirección de
carga del programa
• El programa no se mueve después de la carga
– Reubicación dinámica
• Se lleva a cabo durante la ejecución el programa
• El direccionamiento se realiza dinámicamente a medida que se
van produciendo las referencias a memoria
• El programa se puede desplazar en cualquier instante

DSO 2015 16 Gestión de Memoria


Administración de Memoria
• Vinculación de Direcciones
– Compilación: si en el momento de la compilación se
sabe en qué parte de la memoria va a residir el
proceso, es posible generar código absoluto.
– Carga: Si al compilar el programa no se sabe en qué
parte de la memoria va a residir el proceso, el
compilador deberá generar código reubicable. En este
caso la vinculación final se efectuará en el momento de
la carga
– Ejecución: Si durante la ejecución los procesos
cambian de segmento, la vinculación hay que realizarla
durante la ejecución.

DSO 2015 17 Gestión de Memoria


Reubicación
n La reubicación hace referencia al hecho de poder
localizar a los programas para su ejecución en
diferentes zonas de memoria. Registro de inicio del
programa
n Reubicación estática
n Se realiza antes o durante la carga del programa en
memoria
n Los programas no pueden ser movidos una vez iniciados
n Reubicación dinámica
n Los programas pueden moverse en tiempo de ejecución
n El paso de dirección virtual a dirección real, se realiza en
tiempo de ejecución
n Necesita hardware adicional (MMU)
DSO 2015 18 Gestión de Memoria
Reubicación

l Cuando el proceso se carga en la memoria, se


determina la ubicación real (absoluta) de la
memoria.
l Un proceso puede ocupar diferentes particiones a
lo largo de su ciclo de vida, lo que significa
diferentes posiciones absolutas de la memoria
durante su ejecución (a partir de la carga).
l La compactación también hará que un programa
ocupe una partición distinta, lo que significa que las
ubicaciones absolutas de la memoria cambien.

DSO 2015 19 Gestión de Memoria


Reubicación y protección

• Memoria física vs. memoria lógica

– De igual manera que un computador


dispone de una memoria física (o memoria
primaria), podemos considerar que cada
proceso tiene su memoria lógica.

• Memoria lógica: es el espacio o rango de


direcciones de un proceso:

» con su comienzo en la dirección 0


» independiente de la memoria física de un
computador determinado.

DSO 2015 20 Gestión de Memoria


Reubicación hardware
• Hardware encargado de traducción
• El S.O. se encarga de:
– Almacena por cada proceso su función de traducción
– Especifica al hardware qué función aplicar para cada
proceso
• Programa se carga en memoria sin modificar
• Para el ejemplo anterior: Memoria

Procesador 10000 LOAD R1, #1000


10004 LOAD R2, #2000
HW traducción 10008 LOAD R3, /1500
PC 10012 LOAD R4, [R1]
8 10000 10016 STORE R4, [R2]
11500
R. Instrucción 1500 10020 INC R1
+ 10024 INC R2
LOAD R3, /1500
10028 DEC R3
10032 JNZ /12
10036 .................
..........

DSO 2015 21 Gestión de Memoria


Reubicacion

Registro base Registro límite

Dirección Dirección
lógica física Si
+ <
CPU Memoria
No

Error de acceso a memoria (modo supervisor)

DSO 2015 22 Gestión de Memoria


Dirección relativa

Bloque de control
de proceso
Registro base

Sumador Programa

Direcció
n
Registro límite Comparador absoluta

Datos
Interrupción al
sistema
operativo

Pila

Imagen de un proceso
en la memoria
principal

Soporte de hardware para la reubicación.


DSO 2015 23 Gestión de Memoria
Registros utilizados durante la ejecución

l Registro base:
l Se carga con la dirección en la memoria
principal del proceso.
l Registro límite:
l Indica la posición final del programa.
l Estos valores deben asignarse cuando se
carga el programa y cuando se carga el
proceso.

DSO 2015 24 Gestión de Memoria


Registros utilizados durante la ejecución

l Se añade el valor del registro base a la


dirección relativa para obtener una dirección
absoluta.
l La dirección obtenida se compara con el valor
del registro límite.
l Si la dirección no está dentro de los límites, se
generará una interrupción en el sistema
operativo.

DSO 2015 25 Gestión de Memoria


MMU
• La Unidad de Manejo de Memoria (MMU)

• los procesos emiten siempre direcciones lógicas


• La memoria recibe siempre direcciones físicas
• La MMU (Memory Management Unit) es un circuito de
soporte que se intercala entre la CPU y la memoria que realiza
la traducción de direcciones lógicas a direcciones físicas
– La traducción de direcciones se realiza en función de unas
tablas que, en general, denominaremos mapas de memoria.
– Los mapas de memoria mantienen información que
relaciona la memoria lógica de un proceso con la memoria
física
– El mapa de memoria de un proceso lo elabora el sistema
operativo cuando asigna memoria al proceso al ponerlo en
ejecución.

DSO 2015 26 Gestión de Memoria


MMU

DSO 2015 27 Gestión de Memoria


DSO 2015 28 Gestión de Memoria
Reubicación software

• Traducción de direcciones durante carga del


programa
• Programa en memoria distinto del ejecutable
• Desventajas:

– No asegura protección
– No permite mover programa en tiempo de ejecución

DSO 2015 29 Gestión de Memoria


Protección

El código de un proceso no puede hacer referencia a


posiciones de memoria de otros procesos sin permiso.
Es imposible comprobar las direcciones absolutas de los
programas, puesto que se desconoce la ubicación de un
programa en la memoria principal.
Debe comprobarse durante la ejecución:
– El sistema operativo no puede anticiparse a todas las referencias a
la memoria que hará un programa.
– El Hardware del procesador debe poseer la capacidad de proteger
los accesos a memoria

DSO 2015 30 Gestión de Memoria


Protección

• Monoprogramación: Protección del SO


• Multiprogramación: Además procesos entre sí
• Traducción debe crear espacios disjuntos
• Necesario validar todas las direcciones que
genera el programa
– La detección debe realizarla el hardware del
procesador
– El tratamiento lo hace el SO (envía KILL al proceso)

DSO 2015 31 Gestión de Memoria


Asignación de memoria a procesos
Asignación de memoria

– La memoria física puede ser asignada a los procesos siguiendo


diversas técnicas:
• Asignación contigua: el espacio de direcciones lógicas de un
proceso se mapea sobre una única zona (partición) de la
memoria física: las direcciones de memoria son contiguas.
– Simple
– Particionada
» Particiones fijas
» Particiones variables
• Asignación dispersa: La memoria lógica se divide en fragmentos
(páginas, segmentos), que se mapean sobre zonas de la
memoria física no contiguas: el espacio de direcciones físicas
de un proceso consta de varias zonas no contiguas:
– Paginación.
– Segmentación

DSO 2015 33 Gestión de Memoria


Asignación de memoria

Sistemas de Gestión de Memoria

Un sólo proceso Varios procesos


Monitor Multiprogramación

Fragmentación Particiones Fijas Particiones Variables Fragmentación


Interna Intercambio/Reubicación primero en ajustarse... Externa

Paginación Segmentación Pag./Seg.

Memoria
Virtual

Políticas de sustitución:
FIFO,óptimo, LRU,Reloj,...

DSO 2015 34 Gestión de Memoria


Asignacion de memoria

Contigua Dispersa
DSO 2015 35 Gestión de Memoria
Asignación Contigua Simple
Una unica Partición por proceso: Valido si el sistema
no es multiprogramado

S.O La MP se
El usuario controla
reparte entre
toda la MP
el usuario y el
SO

•La memoria está toda asignada al proceso.

•Los programas consiguen memoria al ser planificados

•Toda la memoria se libera al acabar el programa

DSO 2015 36 Gestión de Memoria


Asignación Contigua particionada
La memoria se divide en particiones cada una de las cuales
se asigna a un programa
Pueden ser de diferente
tamaño . En ambos casos un
proceso cualquiera debe
cargarse entero en una de las
particiones.

•Hace falta conocer el estado (asignado o no) de cada partición y su tamaño.


•La selección de programa para residir en memoria es efectuada por el
planificador y se hace por particiones completas no ocupadas si son de
suficiente tamaño.
•La liberación, asímismo es por particiones completas.
DSO 2015 37 Gestión de Memoria
Particiones Fijas

• Se divide la memoria
disponible en particiones
fijas (al arrancar el
sistema) OS 8M OS 8M

4M
• Cada proceso se asigna a 8M
8M
una UNICA partición 8M
8M
8M

12M
8M

Igual Tamaño Distinto

DSO 2015 38 Gestión de Memoria


Particiones fijas

• Particiones de tamaño fijo:


– Cualquier proceso cuyo tamaño sea menor o igual
que el tamaño de la partición puede cargarse en
cualquier partición libre.
– Si todas las particiones están ocupadas, el sistema
operativo puede sacar un proceso de una partición.
– Un programa puede que no se ajuste a una
partición. Hay que diseñar los programas para que
quepan en una particion

DSO 2015 39 Gestión de Memoria


Sistema operativo Sistema operativo
8M 8M
2M
8M 4M

6M
8M

8M
8M

8M

8M

12M
8M

8M

16M
8M

(a) Particiones de igual tamaño (a) Particiones de distinto tamaño

DSO 2015 Ejemplo de partición fija en40una memoria de 64Mb. Gestión de Memoria
Particiones fijas

• El uso de la memoria principal es ineficiente.


Cualquier programa, sin importar lo pequeño
que sea, ocupará una partición completa.
Este fenómeno se denomina fragmentación
interna. (Se debe a la diferencia de tamaño
entre la partición de memoria y el objeto
residente dentro de ella)

DSO 2015 41 Gestión de Memoria


Algoritmo de ubicación en particiones fijas

• Particiones de igual tamaño:


– Puesto que todas las particiones son de igual
tamaño, no importa la partición que se use.
• Particiones de distintos tamaños:
– Pueden asignar cada proceso a la partición
más pequeña en la que quepa.
– Hace falta una cola para cada partición.
– Los procesos están asignados de forma que
se minimiza la memoria desaprovechada
dentro de cada partición.

DSO 2015 42 Gestión de Memoria


Sistema Sistema
operativo operativo

Procesos Procesos
nuevos nuevos

(a) Una cola de procesos por partición (b) Cola única de procesos

Asignación de memoria en partición estática.


DSO 2015 43 Gestión de Memoria
Particiones dinámicas

• Las particiones son variables en número y longitud.


• Al contrario que en las fijas, en las estrategias de particiones
dinámicas, éstas se ajustan al tamaño de los programas, por lo cual
se crean durante el procesamiento.
• Al proceso se le asigna exactamente tanta memoria como necesite.
• Finalmente, hay varios huecos en la memoria. Este fenómeno se
denomina fragmentación externa, (Se debe al desaprovechamiento
de memoria entre particiones)
• Se debe usar la compactación para desplazar los procesos que estén
contiguos, de forma que toda la memoria libre quede junta en un
bloque. Este mecanismo no se utiliza, se utilizan las listas
encadenadas y los algoritmos de asignacion

DSO 2015 44 Gestión de Memoria


Algoritmo de ubicación con particiones dinámicas

• Algoritmo del primer ajuste (first-fit):


– Es más rápido.
– Puede tener varios procesos cargados en el
extremo inicial de la memoria que es necesario
recorrer cuando se intente encontrar un bloque
libre.

DSO 2015 45 Gestión de Memoria


Algoritmo de ubicación con particiones dinámicas

• Algoritmo del siguiente ajuste (next-fit):


– Lleva frecuentemente a la asignación de un
bloque de memoria de la última ubicación,
donde se encuentra el bloque más grande.
– El bloque de memoria más grande se divide
en fragmentos pequeños.
– Hará falta la compactación para obtener un
bloque de memoria grande al final del espacio
de memoria.

DSO 2015 46 Gestión de Memoria


8M 8M

12M 12M
Primer ajuste
22M
6M
Mejor
ajuste
Último bloque 18M
2M
asignado (14K)

8M 8M

6M 6M

Bloque asignado
14M Bloque libre 14M

Siguiente ajuste

36M
20M

(a) Antes (b)


Después

Ejemplo de una configuración de memoria antes y después de asignar


un bloque de 16 Mbytes.
DSO 2015 47 Gestión de Memoria
Algoritmo de ubicación

2M
Donde guardo
este proceso?
Primer encaje
5M ¬

8M

Siguiente encaje
ultimo
bloque 7M
alojado

6M
Mejor encaje

DSO 2015 48 Gestión de Memoria


Problemas asignación particionada

DSO 2015 49 Gestión de Memoria


Problemas asignacion particionada

Solucion: Compactacion

DSO 2015 50 Gestión de Memoria


Problemas

• Todas las estrategias vistas hasta ahora:


– Asignación contigua de memoria: Si dos direcciones
lógicas son contiguas, sus equivalentes direcciones
físicas también
– Problemas de fragmentación: interna y externa
• Solución:
– Asignación no consecutiva de la memoria
– Paginación: páginas
– Segmentación: segmentos

DSO 2015 51 Gestión de Memoria


Siguiente tema: Memoria Virtual

• Este tema podemos verlo en:


– A. Silberschatz Tema 8
– W. Stallings
• Tema 7: 7.3, 7.4
• Tema 8: 8.1.
– A. Tanenbaum Tema 4: 4.3

DSO 2015 52 Gestión de Memoria

También podría gustarte