Beruflich Dokumente
Kultur Dokumente
Semana 3: Memoria
Conceptos basicos
Gestión de memoria contigüa
Segmentación
Paginación
2
Gestión de la memoria
La memoria básica es un conjunto de celdas
referenciables por medio de una dirección lineal
(p.ej. de la 00000h a la FFFFFh)
Para que un programa ejecute su código y sus
datos necesitan estar cargados en memoria (al
menos en parte)
En un Sistema multitarea la memoria ha de
reparirse entre los diferentes procesos
3
Gestión de la memoria
Las rutinas del sistema operativo también deben
residir en memoria en todo o en parte.
Puede ser que la memoria principal no tenga
capacidad suficiente para todos los procesos que
quieren ejecutarse
4
Gestión de la memoria: objetivos
Rendimiento:
Aprovechar al maximo la memoria disponible
Conseguir tener cargados en memoria varios procesos
y que el sistema no se venga abajo
Que un programa no necesite estar totalmente cargado
en memoria para poder ejecutarse y que pueda apoyarse
en la memoria secundaria si es preciso.
Protección y compartición:
Proteger al SO de accesos indebidos
Proteger el espacio de memoria de cada proceso.
Permiir que varios procesos puedan comparir zonas de
memoria (para comunicación o para reuilizar código o
datos)
5
Gestión de la memoria: cuestiones críticas
ó
Ciclo de vida de un programa
programa fuente
modulo.
modulo.o compilador
mlstrlng.o
mistring
mistring.o
módulo objeto compilación
otros objetos y
bibliotecas enlazador
programa ejecutable
llbm.soo
pthread.so carga
cargador
libc.so
programa y datos
bibliotecas dinamicas binarios en memoria
ejecución
HARDWARE
7
Espacios de direcciones
Fichero fuente Fichero ejecutable Memoria lógica del
(hola.c) (hola) proceso Memoria física
#include<stdio.h>
cabecera
main() código
{
int cont; código
... datos código
datos
cont++ inicializados inicializados
... Proceso
Otros datos
heap
} datos Otros datos
inicializados pila
heap
pila
8
Reubicación dinámica: ejemplo mínimo
(registro base)
CPU
dir. lógica
1234
+ 80000
registro base
MMU
dir. física
81234
memoria
11
Reubicación dinámica:
direcciones lógicas/direcciones físicas
Dirección lógica o virtual: la generada por la CPU.
Dirección Física: la que llega al chip de memoria.
Unidad de manejo de memoria (MMU): Es el
dispositivo que traduce direcciones lógicas a
básicas.
12
Enlace dinámico / carga dinámica
Postergar la carga en memoria de un módulo de código
hasta que se ejecute por primera vez.
Windows: DLL (dynamic link libraries)
Unix: shared libraries
La DLL se carga en memoria cuando algún proceso llama
a una de sus rutinas. Las llamadas a sus funciones se
efectúan a través de una tabla de punteros.
Código compartido si varios procesos emplean la
biblioteca dinamica sólo se maniene una copia de ella
en memoria.
El SO revisa las DLL que estan en memoria pero
que nadie utiliza.
13
Intercambio (swapping)
sistema operativo
P1
memoria P2
para usuarios
14