tema 4 gestión de memoria. sistemas operativos 1 gestión de memoria 2001 contenido requisitos de...
Post on 02-Feb-2016
234 Views
Preview:
TRANSCRIPT
Tema 4Gestión de memoria
Sistemas operativos 2 Gestión de Memoria 2001
Contenido
• Requisitos de la gestión de memoria• Modelo de memoria de un proceso• Fases en la generación de un ejecutable• Ficheros proyectados en memoria• Servicios de gestión de memoria• Evolución de los sistemas de gestión de memoria• Memoria virtual
Sistemas operativos 3 Gestión de Memoria 2001
Requisitos de gestión de memoria
• S.O. multiplexa recursos entre procesos– Cada proceso cree que tiene una máquina para él solo– Gestión de procesos: Reparto de procesador– Gestión de memoria: Reparto de memoria
• Propiedades deseables:– Ofrecer a cada proceso un espacio lógico propio– Proporcionar protección entre procesos– Permitir que procesos compartan memoria– Dar soporte a regiones del proceso– Maximizar rendimiento del sistema
Sistemas operativos 4 Gestión de Memoria 2001
Funciones del gestor de memoria
• Saber qué partes de la memoria están siendo utilizadas. • Cargar programas en MP para su ejecución. • Proporcionar memoria a los procesos cuando la soliciten. • Liberarla cuando se requiera. • Gestionar el intercambio (swapping). • Protección.
– Entre procesos. – Entre el SO y los procesos
• Memoria compartida. – Procesos que ejecutan el mismo código. – Como mecanismo de comunicación.
Sistemas operativos 5 Gestión de Memoria 2001
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
Sistemas operativos 6 Gestión de Memoria 2001
Programa ejemploint a; int b = 5;void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
}main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
Tipos de memoria1.- Código2.- Datos declarados
GlobalesCon valor inicialSin valor inicial
LocalesCon valor inicialSin valor inicial
Sistemas operativos 7 Gestión de Memoria 2001
Programa ejemplo: Fichero ejecutableint a; int b = 5;void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
}main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
C abecera
C ódigo
b = 5e = 2
Tablas y o train form ación
Nº m ágico Registros
D atos
F ichero e jecutab le
Sistemas operativos 8 Gestión de Memoria 2001
Programa ejemplo: Execint a; int b = 5;void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
}main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
C ódigo
b = 5
p = ?
e = 2
argc
re torno m ain
a = ?
argv
E ntorno
D atos con Valor In ic.
D ato s in Va lor In ic.
P ila
Imagen de memoria
B loque deactivaciónde m ain
Sistemas operativos 9 Gestión de Memoria 2001
Programa ejemplo: mallocint a; int b = 5;void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
}main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
C ódigo
b = 5
p =
e = 2
argc
a = ?
argv
E ntorno
D atos con Valor In ic.
D ato s in Va lor In ic.
P ila
Im agen de m em oria
B loque deactivaciónde m ain
re torno m ain
M alloc1024
Sistemas operativos 10 Gestión de Memoria 2001
Programa ejemplo: Llamada a fint a; int b = 5;void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
}main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
C ódigo
b = 5
p =
e = 2
d = ?
argc
re torno m ain
a = ?
c = 5
argv
E ntorno
D atos con Valor In ic.
D ato s in Va lor In ic.
P ila
Im agen de m em oria
re torno f
M alloc1024
B loque deactivaciónde f
B loque deactivaciónde m ain
Sistemas operativos 11 Gestión de Memoria 2001
Gestión de memoria en sistemas monoprogramados
• Modelo de memoria
SOFFF...
0
SO
Usuario
Usuario
Sistemas operativos 12 Gestión de Memoria 2001
Gestión de memoria en sistemas monoprogramados II
• Overlays
SO
Zonacomún
Zona desolapamiento
•Mod 1
•Mod 2•Mod 3
0
FFF...
Sistemas operativos 13 Gestión de Memoria 2001
Multiprogramación
• Ventajas: – Facilita la programación, dividiendo los programas en
procesos. – Permite el servicio interactivo simultáneo a varios usuarios
de forma eficiente. – Aprovecha los tiempos que los procesos pasan esperando a
que se completen sus operaciones de E/S. – Aumenta el uso de la CPU.
• Grado de multiprogramación: número de procesos en memoria.
Sistemas operativos 14 Gestión de Memoria 2001
Modelo de multiprogramación
• Un proceso gasta p % de tiempo por E/S. • Si el grado de multiprogramación es n =>
– La probabilidad de que todos estén esperando es pn . – Utilización de la CPU: 1 - pn.
• Este modelo es sólo una aproximación (supone que los n procesos son independientes).
• En un sistema monoprocesador esto no es cierto (un proceso ha de esperar cuando la CPU está ocupada).
• Este modelo puede proporcionar predicciones aproximadas sobre el rendimiento de la CPU.
Sistemas operativos 15 Gestión de Memoria 2001
Modelo de multiprogramación II
00
20
40
60
80
100
2 3 4 5 6 7 8 9 10 111
Nivel de multiprogramación
80 % espera E/S
50 % espera E/S
20 % espera E/S
% u
tiliz
aci
ón
de
CP
U
Sistemas operativos 16 Gestión de Memoria 2001
Reubicación
• En un sistema multiprogramado es imposible conocer en tiempo de compilación y montaje qué direcciones ocupará un proceso en memoria => reubicación
• Solución: emplear direcciones lógicas• Tres alternativas:
– Reubicación hardware– Reubicación software– Programa reubicable (no tiene direcciones absolutas)
Sistemas operativos 17 Gestión de Memoria 2001
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: LO AD R1, #1000
LO AD R2, #2000LO AD R3, /1500LO AD R4, [R1]STO RE R4, [R2]INC R1INC R2DEC R 3JNZ /12.................
M em oria
10000100041000810012100161002010024100281003210036..........
Procesador
R. Instrucción
HW traducción
LO AD R3, /1500
1150010000
+1500
PC8
Sistemas operativos 18 Gestión de Memoria 2001
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• Para el ejemplo anterior:
LO AD R1, #11000LO AD R2, #12000LO AD R3, /11500LO AD R4, [R1]STO RE R4, [R2]INC R1INC R2DEC R 3JNZ /10012.................
M em oria
10000100041000810012100161002010024100281003210036..........
Sistemas operativos 19 Gestión de Memoria 2001
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)
Sistemas operativos 20 Gestión de Memoria 2001
Reubicación y protección
Memoria principal
Espacio asignado al proceso A
Registro base
Registro límite
Sumador
Trap
Dirección relativa
Dirección absoluta
Comparador
Sistemas operativos 21 Gestión de Memoria 2001
Compartir memoria
• Direcciones lógicas de 2 o más procesos se corresponden con misma dirección física
• Bajo control del S.O.• Beneficios:
– Procesos ejecutando mismo programa comparten su código
– Mecanismo de comunicación entre procesos muy rápido
• Requiere asignación no contigua:
zona com partida
zona com partida
zona privada 1
zona privada 2
zona privada 1
zona privada 2
M apa proceso 1
M apa proceso 2
zona com partida
M em oria
zona priv. 1 (P 2)
zona priv. 1 (P 1)
zona priv. 2 (P 1)
zona priv. 2 (P 2)
Sistemas operativos 22 Gestión de Memoria 2001
Maximizar rendimiento• Reparto de memoria maximizando grado de multiprogramación
– Aprovechamiento de memoria óptimo e irrealizable:
– Paginación: solución factible con aprovechamiento aceptable
• Uso de memoria virtual para aumentar grado de multiprogramación
Dirección 50 del proceso 4
D irección 10 del proceso 6
D irección 95 del proceso 7
D irección 56 del proceso 8
D irección 0 de l proceso 12
D irección 5 de l proceso 20
D irección 0 de l proceso 1
D irección 51 del proceso 4
D irección 88 del proceso 9
.........................................
.........................................
M em oria
0
1
2
3
4
5
6
N-1
N
Sistemas operativos 23 Gestión de Memoria 2001
Fases en generación de ejecutable
• Aplicación: conjunto de módulos en lenguaje de alto nivel• Procesado en dos fases: Compilación y Montaje• Compilación:
– Resuelve referencias dentro cada módulo fuente– Genera módulo objeto
• Montaje (o enlace): – Resuelve referencias
entre módulos objeto– Resuelve referencias a
símbolos de bibliotecas– Genera fichero ejecutable
• Carga en memoria– Añade rutinas de
biblioteca
M ódulofuente A
M ódulofuente B
M óduloobjeto A
M óduloobjeto B
M ontador
Ficheroejecutable
Bibliotecas
Bibliotecasde sistem a
Códigoen mem oria
Cargador del SO
Com pilador
Sistemas operativos 24 Gestión de Memoria 2001
Bibliotecas estáticas• Biblioteca: colección de módulos objeto relacionados• Bibliotecas del sistema o creadas por el usuario• Bibliotecas Estáticas:
– Montaje: enlaza los módulos objeto del programa y de las bibliotecas– Ejecutable autocontenido
• Desventajas del montaje estático:– Ejecutables grandes– Código de función de biblioteca repetido en muchos ejecutables– Múltiples copias en memoria del código de función de biblioteca– Actualización de biblioteca implica volver a montar
M ain
C ódigoFunción A
Función B
Función de b ib lio teca F1
Función de b ib lio teca F2
Sistemas operativos 25 Gestión de Memoria 2001
Bibliotecas dinámicas
• Carga y montaje de biblioteca en tiempo de ejecución• Ejecutable contiene:
– Nombre de la biblioteca– Rutina encargada de carga y montaje en tiempo de ejecución
ante primera referencia• Ventajas del montaje dinámico:
– Menor tamaño ejecutables– Código de rutinas de biblioteca sólo en fichero de biblioteca– Procesos pueden compartir código de biblioteca– Actualización automática de bibliotecas: Uso de versiones
Sistemas operativos 26 Gestión de Memoria 2001
Bibliotecas dinámicas
Pseudo XXllam a a l S .O .
XX
Program aPrincipal
C ódigoC all X X
Sistemas operativos 27 Gestión de Memoria 2001
Bibliotecas dinámicas
• Proceso:– El programa principal llama a la pseudo función XX– Esta función contacta con el SO y le pide la función XX– El SO comprueba que la función XX está definida en una
biblioteca dinámica.– El SO operativo comprueba si XX ya está cargada en
memoria por algún proceso• En caso negativo la carga• En caso positivo comparte esa zona de memoria con este
proceso– El SO devuelve un puntero a la Pseudo XX para que pase la
llamada a XX
Sistemas operativos 28 Gestión de Memoria 2001
Formato del ejecutable
• Distintos fabricantes usan diferentes formatos– Ejemplo: Executable and Linkable Format (ELF)
• Estructura: Cabecera y conjunto de secciones• Cabecera:
– Número mágico– Punto de entrada del programa– Tabla de secciones
Sistemas operativos 29 Gestión de Memoria 2001
Formato del ejecutable
Cabecera
Fichero EjecutableNúm ero m ágico
Contador de program a inicial
Tabla de secciones
Código
Datos con valor inicial
Tabla de sím bolos
....................
CódigoDatos con v.i.Datos sin v.i....................... ........ ........
T. Sím bolos
10005000------
8000
40001000500
1000
Despl. Tam .
. . . . . . . . . . . . . . . .
0
1000
5000
8000
Secciones
Sistemas operativos 30 Gestión de Memoria 2001
Secciones del ejecutable
• Variedad de tipos de secciones. Ejemplo:– Tabla de símbolos para depuración– Lista de bibliotecas dinámicas usadas
• Más relevantes en mapa de memoria del proceso:– Código, Datos con valor inicial y Datos sin valor inicial
• Código (texto)– Contiene código del programa
• Datos con valor inicial– Variables globales inicializadas
• Datos sin valor inicial– Variables globales no inicializadas– Aparece en tabla de secciones pero no se almacena en ejecutable
• ¿Por qué no hay sección vinculada a variables locales?
Sistemas operativos 31 Gestión de Memoria 2001
Variables globales versus locales
• Variables globales– Estáticas– Se crean al iniciarse programa– Existen durante ejecución del mismo– Dirección fija en memoria y en ejecutable
• Variables locales y parámetros– Dinámicas– Se crean al invocar función– Se destruyen al retornar– La dirección se calcula en tiempo de ejecución– Recursividad: varias instancias de una variable
Sistemas operativos 32 Gestión de Memoria 2001
Variables globales versus locales
• Ejemplo: int x=8; /* Variable global con valor inicial */ int y; /* Variable global sin valor inicial */
f(){ int z; /* Variable local */ ....... } main(){ ....... }
Sistemas operativos 33 Gestión de Memoria 2001
Crear mapa de memoria desde ejecutable
• Código– Compartida, RX, T. Fijo, Soporte en Ejecutable
• Datos con valor inicial– Privada, RW, T. Fijo, Soporte en Ejecutable
• Datos sin valor inicial– Privada, RW, T. Fijo, Sin Soporte (rellenar 0)
• Pila– Privada, RW, T. Variable, Sin Soporte (rellenar 0)– Crece hacia direcciones más bajas– Pila inicial: argumentos del programa
Sistemas operativos 34 Gestión de Memoria 2001
Crear mapa desde ejecutable
Sistemas operativos 35 Gestión de Memoria 2001
Otras regiones del mapa creadas durante ejecución
• Región de Heap– Soporte de memoria dinámica (malloc en C)– Privada, RW, T. Variable, Sin Soporte (rellenar 0)– Crece hacia direcciones más altas
• Fichero proyectado– Región asociada al fichero proyectado – Compartida, T. Variable, Soporte en Fichero– Protección especificada en proyección
• Memoria compartida– Región asociada a la zona de memoria compartida– Compartida, T. Variable, Sin Soporte (rellenar 0)– Protección especificada en proyección
• Pilas de threads– Cada pila de thread corresponde con una región– Mismas características que pila del proceso
• Biblioteca dinámica– Regiones asociadas al código y datos de la biblioteca
Sistemas operativos 36 Gestión de Memoria 2001
Mapa de memoria de un proceso hipotético
Sistemas operativos 37 Gestión de Memoria 2001
Servicios de gestión de memoria
• Gestor de memoria realiza funciones internas• Ofrece pocos servicios directos a aplicaciones• Servicios POSIX de gestión de memoria más usados:
– Uso de memoria compartida (shm_open)– Proyección de ficheros y m. compartida (mmap)– Bloqueo de páginas en memoria principal– Asignación de memoria
• Ya han sido estudiados• Presentamos ejemplos de proyección de ficheros
Sistemas operativos 38 Gestión de Memoria 2001
Ficheros proyectados en memoria
Marcos de página
MemoriaprincipalImagen de memoria
de un proceso
Ficheroproyectado en memoria
Fichero
Swap
Sistemas operativos 39 Gestión de Memoria 2001
Ficheros proyectados en memoria II
• Una región del proceso recibe el fichero. • Fichero como extensión del swap. • Habrá páginas del fichero en memoria principal. • El proceso direcciona dentro del fichero (región) con las
instrucciones de acceso a memoria.
Sistemas operativos 40 Gestión de Memoria 2001
Ficheros proyectados: Servicios
void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);• Establece una proyección entre el espacio de direcciones de un proceso y un
descriptor de fichero u objeto de memoria compartida. – Devuelve la dirección de memoria donde se ha proyectado el fichero. – addr dirección donde proyectar. Si NULL el SO elige una. – len especifica el número de bytes a proyectar. – prot el tipo de acceso (lectura, escritura o ejecución). – flags especifica información sobre el manejo de los datos proyectados
(compartidos, privado, etc.). – fildes representa el descriptor de fichero del fichero o descriptor del
objeto de memoria a proyectar. – off desplazamiento dentro del fichero a partir del cual se realiza la
proyección.
void munmap(void *addr, size_t len);• Desproyecta parte del espacio de direcciones de un proceso comenzando en
la dirección addr.
Sistemas operativos 41 Gestión de Memoria 2001
Ejemplo: copia de ficheros
#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>
main(int argc, char **argv){ int i, fdo, fdd; char *org, *dst, *p, *q; struct stat bstat;
/* Abre el fichero origen para lectura */ fdo=open(argv[1], O_RDONLY);
fdd=open(argv[2], O_CREAT|O_TRUNC|O_RDWR, 0640);
Sistemas operativos 42 Gestión de Memoria 2001
/* Averigua la longitud del fichero origen */ fstat(fdo, &bstat)
/* Asigna tamaño al fichero destino */ ftruncate(fdd, bstat.st_size);
/* Se proyecta todo el fichero origen (ver "man mmap") */ org=mmap(NULL, bstat.st_size, PROT_READ, MAP_SHARED, fdo, 0);
/* Se proyecta todo el fichero destino (ver "man mmap" */ dst=mmap(NULL, bstat.st_size, PROT_WRITE, MAP_SHARED, fdd, 0);
if (org == MAP_FAILED || dst == MAP_FAILED) perror("Error en mmap");
/* Se cierran los ficheros */ close(fdo); close(fdd);
Ejemplo: copia de ficheros
Sistemas operativos 43 Gestión de Memoria 2001
/* Bucle de copia */
p=org; q=dst;
for (i=0; i<bstat.st_size; i++)
*q++= *p++;
/* Se eliminan las proyecciones */
munmap(org, bstat.st_size);
munmap(dst, bstat.st_size);
}
Ejemplo: copia de ficheros
Sistemas operativos 44 Gestión de Memoria 2001
Ejemplo II
• Ejemplo: Cuántas veces aparece carácter en fichero
int main(int argc, char **argv) {
......................................
fd=open(argv[2], O_RDONLY)); /* Abre fichero */
fstat(fd, &bstat); /* Averigua long. fichero */
/* Se proyecta el fichero */
org=mmap((caddr_t) 0, bstat.st_size, PROT_READ,
MAP_SHARED, fd, 0));
close(fd); /* Se cierra el fichero */
Sistemas operativos 45 Gestión de Memoria 2001
Ejemplo II
/* Bucle de acceso */
p=org;
for (i=0; i<bstat.st_size; i++)
if (*p++==caracter) contador++;
/* Se elimina la proyeccion */
munmap(org, bstat.st_size);
printf("%d\n", contador);
}
Sistemas operativos 46 Gestión de Memoria 2001
Memoria compartida
• La región puede proyectarse en cada proceso sobre direcciones virtuales diferentes.
Marcos de página
Memoriaprincipal
Imagen de memoriaproceso A
Región de memoria
compartida Región de memoria
compartida
SWAP
Imagen de memoriaproceso B
Sistemas operativos 47 Gestión de Memoria 2001
Memoria compartida: Servicios
int shm_open(char *name, int oflag, mode_t mode); – Crea un objeto de memoria a compartir entre procesos
int shm_unlink(const char *name); – Borra una zona de memoria compartida.
void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); – Establece una proyección entre el espacio de direcciones de un proceso y
un descriptor de fichero u objeto de memoria compartida.
void munmap(void *addr, size_t len); – Desproyecta parte del espacio de direcciones de un proceso comenzando
en la dirección addr.
int close(int fd);– Cierra el descriptor de objeto de memoria compartida
int ftruncate(int fd);– Asigna espacio a un fichero u objeto de memoria compartida.
Sistemas operativos 48 Gestión de Memoria 2001
Memoria compartida: Ejemplo (I)
• Creación de un segmento de memoria compartida (proceso A):
char *buffer; /* buffer a compartir */
int shd;
/* se crea el objeto en un proceso */
shd = shm_open("BUFFER", O_CREAT|O_RDWR, 0777);
/* se asigna espacio al segmento */
ftruncate(shd, MAX_BUFFER * sizeof(char));
/* se proyecta */
buffer = (char *) mmap(NULL, MAX_BUFFER * sizeof(char),
PROT_READ | PROT_WRITE, MAP_SHARED, shd, 0);
Sistemas operativos 49 Gestión de Memoria 2001
Memoria compartida: Ejemplo (II)
• Acceso a un segmento de memoria compartida (proceso B):
char *buffer; /* buffer a compartir */
int shd;
/* se crea el objeto en un proceso */
/* debe existir */
shd = shm_open("BUFFER"", O_RDWR);
/* se proyecta */
buffer = (char *) mmap(NULL, MAX_BUFFER * sizeof(char),
PROT_READ | PROT_WRITE, MAP_SHARED, shd, 0);
Sistemas operativos 50 Gestión de Memoria 2001
Utilización de memoria asignada
• Se proyecta sobre la zona asignada una estructura• Se utiliza la estructura mediante un manejador (puntero)• Errores típicos de utilización:
– Utilizar el manejador (puntero) después de haber liberado la memoria. Se utiliza una memoria que ya no está asignada
– No liberar la memoria una vez terminado su uso. El sistema se puede quedar sin memoria
• Para memoria compartida– Proyectar la misma estructura en todos los programas.
¿Compartir la definición de la estructura?
Sistemas operativos 51 Gestión de Memoria 2001
Utilización de memoria asignadastruct datos {
int a; char b; float c;
inte v[10];
}
main () {
struct datos *p;
/* Se reserva memoria y se proyecta la estructura de datos */
p = malloc (sizeof (struct datos));
/* se utiliza la memoria asignada a través de p */
p->a = 5;
p->b = 'a';
p->c = 2.5;
p-> v[3] = 25;
....
}
Sistemas operativos 52 Gestión de Memoria 2001
Reserva de memoria
• malloc: es una función de librería del lenguaje C• UNIX
– El malloc se puede construir con el servicio brk– tamaño = brk (addr)
• Coloca , si es posible, el fin del heap en la dirección addr• Supone que aumenta o disminuye el heap del segmento de
datos
• Wn 32– Un proceso puede crear varios heaps mediante: HeapCreate
– Se puede asignar memoria a cada heap mediante: HeapAlloc
Sistemas operativos 53 Gestión de Memoria 2001
Liberar memoria
• free: es una función de librería del lenguaje C• UNIX
– El free se puede construir con el servicio brk– tamaño = brk (addr)
• Coloca , si es posible, el fin del heap en la dirección addr• Supone que aumenta o disminuye el heap del segmento de
datos
• Wn 32– Un proceso puede crear destruir un heap mediante: HeapDestroy
– Se puede liberar memoria de un heap mediante: HeapFree
Sistemas operativos 54 Gestión de Memoria 2001
Bloquear páginas en marcos de memoria principal
• mlockall– Bloquea todo el espacio de direcciones de un proceso en
memoria– mlockall (MCL_CURRENT)
• Bloquea todas las páginas actuales del proceso– mlockall (MCL_FUTURE)
• Bloquea todas las páginas del proceso, tanto las actuales como las futuras
– El mandato está reservado al superusuario
• munlockall– Desbloquea el espacio de direcciones del proceso– El mandato está reservado al superusuario
Sistemas operativos 55 Gestión de Memoria 2001
• int mlock (void *addr, int len);– Bloquea todas las páginas que contengan posiciones contenidas
entre addr y addr + len– Está reservado al superusuario
• int munlock (void *addr, int len);– Restablece las páginas que contengan parte del espacio de
direcciones comprendido entre addr y addr + len– Está reservado al superusuario
Bloquear páginas en marcos de memoria principal
Sistemas operativos 56 Gestión de Memoria 2001
Evolución de gestión de memoria
• Muy ligada al desarrollo del hardware– HW más sofisticado permite estrategias más efectivas
• Por simplicidad, sólo dos etapas:– Asignación contigua– Paginación
• ¿Cumplen estos esquemas los requisitos planteados?
Sistemas operativos 57 Gestión de Memoria 2001
Asignación contigua (1/2)
• Zona contigua de memoria contiene mapa del proceso• Entre diversas alternativas, nos centramos en:
– Esquema basado en particiones dinámicas• Hardware requerido: registros valla
– Registro límite– Registro base
Sistemas operativos 58 Gestión de Memoria 2001
Asignación contigua (2/2)
• S.O. almacena en BCP valor de R. valla del proceso• En cambio de proceso S.O. carga R. valla de BCP a procesador• Fragmentación externa
– Quedan pequeños fragmentos no utilizables• ¿Cumple requisitos?
– Espacios independientes: Mediante R. valla– Protección: Mediante R. valla– Compartir memoria: No posible– Soporte de regiones: No hay
• Se reserva espacio para huecos– Maximizar rendimiento
• Mal aprovechamiento (f. externa)• No permite memoria virtual
Sistemas operativos 59 Gestión de Memoria 2001
Paginación (1/2)
• Hardware más sofisticado• Unidad de asignación: Página• Mapa de memoria dividido en páginas• Memoria física dividida en marcos de página• Tabla de páginas (T.P.) por proceso:
– Relaciona cada página con el marco que la contiene• MMU usa T.P. para traducir direcciones lógicas• S.O. mantiene T.P. de procesos y notifica a MMU cuál debe
usar
Sistemas operativos 60 Gestión de Memoria 2001
Paginación (2/2)• Entrada de la T.P.
– Número de marco asociado– Protección (RWX)– Página presente (P) o ausente (A)
• Fragmentación interna– Puede desperdiciarse parte de último marco asignado a proceso
• ¿Cumple requisitos?– Espacios independientes: Mediante T.P.– Protección: Mediante T.P.– Compartir memoria: Páginas asociadas a mismo marco– Soporte de regiones: se usa información de la T.P.
• Tipo de acceso no permitido: Protección• Accesos a huecos: Página presente• No se reserva espacio para huecos
– Maximizar rendimiento• Buen aprovechamiento• Permite memoria virtual
Sistemas operativos 61 Gestión de Memoria 2001
Memoria virtual
• Gestión automática de la parte de la jerarquía de memoria formada por los dos niveles de memoria principal y de disco.
Mapa de memoria virtual(direcciones generadas por el procesador)
MMU
Memoria principal
Procesador(Intercambio)
MemoriaSecundariaDirección físicaDirección
virtual Fallo página
Sistemas operativos 62 Gestión de Memoria 2001
Memoria virtual• Jerarquía de memoria: Niveles de almacenamiento• Procesos exhiben proximidad de referencias• Memoria virtual
– Transferencias M. principal y M. secundaria (swap)• Basada en paginación:
– Página no residente se marca ausente– Se guarda dir. de bloque de swap que la contiene
• De M. secundaria a M. principal (por demanda):– Acceso a pág. no residente: Fallo de página– S.O. lee página de M. secundaria
• De M. principal a M. secundaria (por expulsión):– No hay espacio en M. principal para traer página– Se expulsa (reemplaza) una página residente– S.O. escribe página expulsada a M. secundaria
• Beneficios:– Aumento grado de multiprogramación
• ¡¡Cuidado con Hiperpaginación!!– Ejecución de programas que no caben en M. ppal.
Sistemas operativos 63 Gestión de Memoria 2001
Gestión de espacio de swap
• Asignación de espacio de swap cuando se crea región• Dos alternativas: Con y sin preasignación• Creación de región con preasignación
– Se asigna espacio de swap– Se copia en él contenido inicial desde soporte– Páginas se traen por demanda desde swap– En expulsión ya tiene espacio reservado
• Creación de región sin preasignación– No se asigna espacio de swap– Páginas se traen por demanda desde su soporte– En expulsión se reserva espacio de swap (si pág. modificada)
• Sin preasignación más usada actualmente• Región compartida con soporte no usa swap
Sistemas operativos 64 Gestión de Memoria 2001
Ejecución de programas
• Creación de regiones iniciales desde ejecutable• No se asigna espacio en M. principal• No se carga nada en M. principal
– Se traerá bajo demanda• Se rellena cada entrada de T.P.:
– Protección: Depende de tipo de región– Ausente– Dir. en M. secundaria donde está almacenada
• Último valor depende del tipo de gestión de swap
Sistemas operativos 65 Gestión de Memoria 2001
Con preasignación de swap
• S.O. reserva espacio en swap para regiones• Copia del soporte al swap:
– Código: De ejecutable– Datos con v.i.: De ejecutable– Datos sin v.i.: Rellenar a 0– Pila: Argumentos del programa
• Entradas T.P referencian a bloques del swap
Sistemas operativos 66 Gestión de Memoria 2001
Sin preasignación de código
• Región de código: compartida con soporte• No es necesario usar swap
– Se usa directamente ejecutable
Sistemas operativos 67 Gestión de Memoria 2001
Sin preasignación de swap
• Entradas T.P. referencian a bloques del soporte (si hay):– Código: Bloques del ejecutable– Datos con v.i.: Bloques del ejecutable– Datos sin v.i.: Valor que indica rellenar a 0– Pila: Bloque del swap con argumentos del programa
• Al expulsar por primera vez una página modificada se reserva espacio de swap– Excepto si compartida y con soporte -> se actualiza soporte
Sistemas operativos 68 Gestión de Memoria 2001
Ficheros proyectados en memoria
• Generalización de M. Virtual– Entradas de T.P. referencian a fichero de usuario
• Programa solicita proyección de fichero en su mapa• Forma alternativa de acceso al fichero:
– En vez de read y write– Acceso directo a memoria
• Ventajas– Menos llamadas al sistema– Menos copias intermedias– Más fácil programación
Sistemas operativos 69 Gestión de Memoria 2001
Ficheros proyectados en memoria
Sistemas operativos 70 Gestión de Memoria 2001
Memoria virtual II
• El proceso sólo ve direcciones virtuales. • El mapa virtual de un proceso está soportado en memoria
secundaria (swap). • No es necesario que todo el proceso esté cargado en memoria =>
– Más procesos en MP, uso más eficiente del procesador. – Un proceso puede ser mayor que la MP. – Arranque más rápido.
• Conjunto residente: parte del proceso cargado en MP.
Sistemas operativos 71 Gestión de Memoria 2001
Requisitos de la memoria virtual
• Soporte en almacenamiento secundario. • Espacio virtual mayor que la memoria física => fallos en los
accesos a memoria. • Cuando se produce un fallo de acceso => trap al SO. • Hay que continuar o reiniciar la instrucción en la que se produjo
el fallo de acceso. – MOV (R1), (R2) => tres fallos de página.
• Esquemas HW de memoria virtual: – Paginación. – Segmentación. – Segmentación paginada.
Sistemas operativos 72 Gestión de Memoria 2001
Paginación I
MEMORIA PRINCIPAL
MAPA VIRTUAL(RESIDENTE EN DISCO)
22-1· p
22-1· p
2·2p
2·2p3·2-1p
3·2-1p
3·2p
3·2p2-1p
2-1p
2 -1m
2 -1n
2p
2p
0
0A
A'
n > m
Proyec
ción d
e pág
inavirt
ual a
memo
ria fís
ica
Páginas
Marcos depágina
Sistemas operativos 73 Gestión de Memoria 2001
Mecanismo de traducción
• Necesario una tabla de páginas.
P á g in a V i r t u a l D i re c c i ó n V i r t u a l
D i re c c i ó n F í s i c a
P a l a b ra e nla P á g i n a
P a l a b ra e nla P á g i n a
T r a d u c t o r
P á g in a F í s i c a
n-1 0
0
p p-1
p p-1m-1
Sistemas operativos 74 Gestión de Memoria 2001
Tabla de páginas I
• La información de traducción se organiza en tablas de páginas. • La tabla de páginas está formada por entradas de tablas de
página (ETP). • Cada entrada permite traducir una página virtual. • Permite saber si una página:
– Está en MP => marco de página. – Está en almacenamiento secundario => página en disco.
Sistemas operativos 75 Gestión de Memoria 2001
Tabla de páginas II
• Si la página no se encuentra en MP => fallo de página (trap al SO).
Presente
ETP
Tabla depáginas
Memoria principal
Memoria secundaria
Si
No
Sistemas operativos 76 Gestión de Memoria 2001
Información de una ETP I
Nº de marco/bloque de disco
Presente/Ausente
Modificada
ReferenciadaOtra información
Válida
Protección
Sistemas operativos 77 Gestión de Memoria 2001
Información de una ETP II
• Otra información: – Copy-on-write – No paginada (fija en memoria física). – Cache desactivada. – Rellenar a ceros. – Rellenar de fichero.
Sistemas operativos 78 Gestión de Memoria 2001
Paginación por demanda
• Los procesos residen en memoria secundaria y no se carga inicialmente ninguna página en MP.
• El SO ha creado previamente la TP y las entradas están marcadas como no presentes.
• A medida que se referencian direcciones se producen fallos de página que trata el SO.
• Ventajas: – Sólo se cargan en MP las páginas que se referencian. – Acelera la carga de un proceso (no se cargan páginas que no se
referencian). – Mejor uso de la MP.
• Esquema implementado en los SO actuales. – UNIX. – LINUX. – Windows NT.
Sistemas operativos 79 Gestión de Memoria 2001
Manejo del fallo de página
• El HW genera un trap de fallo de página. • Se salva el estado del proceso actual y se bifurca a la rutina de gestión del
fallo de página. • El SO debe conocer qué página hace falta => el HW lo da en un registro. • El SO comprueba si el acceso está permitido (búsqueda en la TP). Si no
está permitido se mata al proceso o se envía una señal. • El SO busca un marco de página libre. Si no hay se ejecuta el algoritmo
de reemplazo. • Si el marco de página esta sucio se escribe a disco y se lanza otro proceso. • Cuando el marco de página queda libre se bloquea el marco en MP, se
manda leer y se lanza otro proceso. • Cuando llega la interrupción de E/S de la lectura se actualiza la ETP
correspondiente y se marca el marco de página como normal. • El proceso se marca como ejecutable. • Se continua o se reinicia la instrucción que produjo el fallo.
Sistemas operativos 80 Gestión de Memoria 2001
Soporte de la imagen de memoria• Regiones con soporte propio • Regiones sin soporte propio => swap.
Fichero
SWAP
FicheroEjecutable
Texto
Datos con valor inicial
Datos sin valor inicial
Fichero proyectadoen memoria
Memoriacompartda
Pila
Espacio virtual no asignado Marcos asignados al proceso
Memoriasecundaria
Espacio de direccionesvirtual de un proceso
Memoria principal
Sistemas operativos 81 Gestión de Memoria 2001
Creación de la imagen a partir de un fichero ejecutable
• Inicialmente ninguna página cargada en MP a excepción de la pila inicial.
• Uso más eficiente de los recursos. • Sólo se cargan las páginas que realmente se usan. • Sólo se reserva espacio de swap cuando se necesita.
D A T O S S I N
V A L O R I N I C I A L
P I L A
D A T O S V A L O R
I N I C I A L
C Ó D I G O
E S P A C I O D E
D I R E C C I O N E S V I R T U A L
D E L P R O C E S O
C Ó D I G O
D A T O S V A L O R
I N I C I A L
M E M O R I A
P R I N C I P A L
p á g i n a
d e n t r o / f u e r a
p r i m e r f a l l o
r e l l e n a r c o n c e r o s
p á g i n a d e n t r o
S I N
S O P O R T E
p á g i n a
d e n t r o / f u e r a
D I S P O S I T I V O
D E S W A P
p r im e r f a l l o
F I C H E R O
E J E C U T A B L E
p á g i n a
d e n t r o / f u e r a
p r i m e r f a l l o
r e l l e n a r c o n c e r o s
D A T O S
D A T O S S I N
V A L O R I N I C I A L
P I L A
C Ó D I G O
Sistemas operativos 82 Gestión de Memoria 2001
Ejecución de un programa en LINUX
• Ejemplo de código.
#include <math.h>#include <stdio.h>
main(){ double x = 30; double res; void *p;
p= sbrk(40000);
res = sin(x); printf("res = %f \n", res);}
• Bibliotecas: – libc.so – libm.so
Sistemas operativos 83 Gestión de Memoria 2001
Ejecución de un programa en LINUX II
• Mandato strace – open("/lib/libm.so", O_RDONLY) – mmap() => se proyecta el código. – open("/lib/libc.so", O_RDONLY) – mmap() => se proyecta el código. – Comienza a ejecutar el proceso
• Fichero /proc/PID/maps direccion perms offset dev nodo-i08048000-08049000 r-xp 00000000 08:11 630795 Código08049000-0804a000 rw-p 00000000 08:11 630795 Datos sin VI0804a000-08054000 rwxp 00000000 00:00 0 Datos dinámicos40000000-4000a000 r-xp 00000000 08:01 30602 ld.so4000a000-4000b000 rw-p 00009000 08:01 3060240010000-40028000 r-xp 00000000 08:01 30614 libm.so40028000-40029000 rw-p 00017000 08:01 3061440029000-400ba000 r-xp 00000000 08:01 30606 libc.so400ba000-400c2000 rw-p 00090000 08:01 30606400c2000-400ce000 rw-p 00000000 00:00 0bfffc000-c0000000 rwxp ffffd000 00:00 0 Pila
Sistemas operativos 84 Gestión de Memoria 2001
Reemplazo de páginas
• Objetivo: reducir la tasa de fallos. • Algoritmos:
– Óptimo. – FIFO. – NRU. – Segunda oportunidad. – Algoritmo del reloj. – LRU.
• Buffering de páginas. • Demonio de paginación.
– Se activa cuando se necesitan páginas. – Objetivo: disponer de páginas libres.
Sistemas operativos 85 Gestión de Memoria 2001
Hiperpaginación
• Solución: reducir el grado de multiprogramación, suspendiendo uno o más procesos
N iv e l d e M u l t ip r o g r a m a c ió n
L im i ta d o p o r e l d is p o s it iv o
d e p a g in a c ió n
% U
tiliz
ació
n d
e U
CP
1 0 0 %
M E M O R I A P E Q U E Ñ A
N iv e l d e M u l t ip r o g r a m a c ió n
% U
tiliz
ació
n de
UC
P
M E M O R I A G R A N D E
L im i ta d o p o r e l d i s p o s it iv o
d e p a g in a c i ó n
1 0 0 %
top related