Lección 6
La gestión de memoria
Grupo ARCOS
Diseño de Sistemas Operativos
Grado en Ingeniería Informática
Universidad Carlos III de Madrid
Objetivos
2
Conocimiento de los métodos de gestión interna de
recursos en un sistema operativo.
Usar herramientas de monitorización, gestión y ajuste
de sistemas operativos.
ARCOS @ UC3M
Alejandro Calderón Mateos
Lecturas recomendadas
Base
Recomendada
Carretero 2007:
1.
1.
Tanenbaum 2006(en):
1.
Cap.4
1.
Stallings 2005:
2.
1.
Parte tres
Silberschatz 2006:
3.
1.
3
Cap.4
Cap. 4
ARCOS @ UC3M
Alejandro Calderón Mateos
¡ATENCIÓN!
4
Estas transparencias son un guión para la clase.
Los libros dados en la bibliografía junto con lo
explicado en clase representa el material de estudio
para el temario de la asignatura.
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
1.
Introducción
2.
Arquitectura del subsistema de memoria
1.
Objetivos principales
3.
Regiones de memoria de un proceso
4.
Memoria virtual
5.
Gestión a nivel del sistema operativo
5
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
1.
Introducción
2.
Arquitectura del subsistema de memoria
1.
Objetivos principales
3.
Regiones de memoria de un proceso
4.
Memoria virtual
5.
Gestión a nivel del sistema operativo
6
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
7
Definiciones
Entornos
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
8
Definiciones
Entornos
ARCOS @ UC3M
Alejandro Calderón Mateos
Programa y proceso
Programa: conjunto de datos e instrucciones ordenadas que
permiten realizar una tarea o trabajo específico.
Disco
Fichero
ejecutable
9
ARCOS @ UC3M
Alejandro Calderón Mateos
Programa y proceso
Programa: conjunto de datos e instrucciones ordenadas que
permiten realizar una tarea o trabajo específico.
Para su ejecución, ha de estar en memoria
Memoria principal
Disco
Fichero
ejecutable
Sistema
Operativo
10
ARCOS @ UC3M
Alejandro Calderón Mateos
Programa y proceso
Programa: conjunto de datos e instrucciones ordenadas que
Interfaz
funcional:
permiten realizar una tarea
o trabajo
específico.
valor = read (dirección)
Para su ejecución, ha de estar
en memoria
write (dirección, valor)
Memoria principal
Disco
Fichero
ejecutable
Sistema
Operativo
11
ARCOS @ UC3M
Alejandro Calderón Mateos
Programa y proceso
Proceso: programa en ejecución.
Memoria principal
Disco
pila
datos
instrucciones
proceso1
Fichero
ejecutable
Sistema
Operativo
12
ARCOS @ UC3M
Alejandro Calderón Mateos
Programa y proceso
Proceso: programa en ejecución.
Es posible un mismo programa ejecutarlo varias veces
(lo que da lugar a varios procesos)
Memoria principal
pila
datos
proceso2
instrucciones
Disco
pila
datos
instrucciones
proceso1
Fichero
ejecutable
Sistema
Operativo
13
ARCOS @ UC3M
Alejandro Calderón Mateos
Imagen de un proceso
Imagen de memoria: conjunto de direcciones de memoria asignadas
al programa que se está ejecutando (y contenido)
Memoria principal
pila
datos
proceso2
instrucciones
Disco
pila
datos
instrucciones
proceso1
Fichero
ejecutable
Sistema
Operativo
14
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
15
Definiciones
Entornos
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas monoprogramados
memoria
Proceso
Sistema operativo
16
Ejecución un proceso como
máximo
Memoria compartida entre el
sistema operativo y el proceso
Ej.: MS-DOS, DR-DOS, etc.
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas multiprogramados
memoria
Proceso 1
Se mantiene más de un proceso
en memoria
Se mejorar ocupación de CPU:
Proceso 2
La gestión de memoria es una
tarea de optimización bajo
restricciones
Ej.: Unix, Windows NT, etc.
Proceso 3
Sistema operativo
17
proceso bloqueado -> ejecuta otro
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas multiprogramados
memoria
Proceso 1
Se mantiene más de un proceso
en memoria
Se mejorar ocupación de CPU:
Proceso 2
La gestión de memoria es una
tarea de optimización bajo
restricciones
Ej.: Unix, Windows NT, etc.
Proceso 3
Sistema operativo
18
proceso bloqueado -> ejecuta otro
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas multiprogramados
ejemplo de cálculo de utilización
memoria
p = % tiempo un proceso está bloqueado
pn = probabilidad de que n procesos
independientes estén todos bloqueados
1- pn = probabilidad de que la CPU
no esté ociosa (no idle)
Proceso 1
Proceso 2
Proceso 3
Sistema operativo
19
n = 5 procesos independientes
p = 0,8 del tiempo bloqueado (20% en CPU)
utilización = 5*20% → 100%
utilización = 1-0,85 → 67%
1-0,810 → 89%
http://www.cs.rutgers.edu/~pxk/416/notes/content/09-memory_management-slides-6.pdf
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
1.
Introducción
2.
Arquitectura del subsistema de memoria
1.
Objetivos principales
3.
Regiones de memoria de un proceso
4.
Memoria virtual
5.
Gestión a nivel del sistema operativo
20
ARCOS @ UC3M
Alejandro Calderón Mateos
Arquitectura de la gestión de memoria
antigua arquitectura
proceso
Interfaz del Sistema Operativo
Sistema de
ficheros
21
Gestión de
memoria
Gestión de
procesos
Red
ARCOS @ UC3M
Alejandro Calderón Mateos
Arquitectura de la gestión de memoria
nueva arquitectura
proceso
Interfaz del Sistema Operativo
Sistema de
ficheros
Gestión de
procesos
Red
Gestión de memoria
22
ARCOS @ UC3M
Alejandro Calderón Mateos
Ámbito de la gestión de E/S
Encargado de la gestión de la
memoria entre procesos y el
kernel
El resto del sistema operativo
es su mejor cliente:
proceso
Interfaz del Sistema Operativo
Sistema de
ficheros
Gestión de
procesos
Gestión de
memoria
23
Red
Gestión de procesos
Gestión de ficheros
Pero es un reflejo de las
necesidades de los procesos
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos generales de la E/S
1.
Localización de referencias a memoria
proceso
2.
Protección de espacios de memoria
Interfaz del Sistema Operativo
3.
Gestión de
procesos
Red
4.
5.
los programas se dividen en módulos
independientes
Organización física (de la memoria)
24
permitir que varios procesos accedan a
un espacio de memoria común
Organización lógica (de programas)
Gestión de
memoria
prohibir referencias entre procesos
distintos
Compartición de espacios de memoria
Sistema de
ficheros
ha de traducir las referencias a memoria
a direcciones físicas
rellenar la memoria con múltiples
programas y módulos
http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos generales de la E/S
1.- Localización de referencias a memoria
El programador no tiene porque saber
dónde se colocará el programa en
memoria cuando se ejecute
25
Un programa puede ser ejecutado varias
veces (cada una de ellas irá a una parte de
memoria diferente)
Mientras que el programa sea
ejecutado también puede mandarse a
disco y volver a memoria en una
posición diferente
Memoria principal
pila
proceso2
datos
instrucciones
pila
proceso1
datos
instrucciones
Sistema
Operativo
Por tanto, las referencias lógicas
(relativas) de memoria han de
traducirse a direcciones físicas
(absolutas)
http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf
Disco
Fichero ejecutable
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos generales de la E/S
2.- Protección de espacios de memoria
Los procesos no han de usar
posiciones de memoria de otros
procesos
Memoria principal
pila
Excepción: depurador, …
proceso2
datos
Las posiciones de memoria tendrían
que ser comprobadas en tiempo de
ejecución
Las posiciones de memoria han de
comprobarse por hardware
26
No es posible comprobar los accesos a
memoria física en tiempo de compilación
instrucciones
pila
proceso1
datos
instrucciones
Sistema
Operativo
El sistema operativo no puede anticipar
las referencias de memoria (calculadas)
que un proceso va a realizar
http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos generales de la E/S
3.- Compartición de espacios de memoria
Opuesto al punto anterior
(aparentemente) debe ser posible que
varios procesos puedan acceder a la
misma porción de memoria:
pila
proceso2
datos
instrucciones
pila
proceso1
datos
instrucciones
Sistema
Operativo
Debe ser solicitado y concedido
explícitamente
27
Procesos ejecutando el mismo código
podrían compartir la misma copia de
código en memoria
Procesos que cooperan en la misma tarea
pueden necesitar acceder a las mismas
estructuras de datos
Memoria principal
Depurador, etc.
http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos generales de la E/S
4.- Organización lógica (de los programas)
Los datos de un proceso no son
homogéneos
Ej.: código, variables locales, etc.
Cada tipo de información tiene distintas
necesidades
Lectura, escritura, ejecución, etc.
Creación estática o dinámica
La información de un proceso (su imagen)
se divide en diferentes regiones
Cada región se adapta a un tipo de datos
concreto (código, variable dinámica, etc.)
28
Memoria principal
pila
proceso2
datos
instrucciones
pila
proceso1
datos
instrucciones
Sistema
Operativo
Hay que gestionar las zonas sin asignar (huecos)
Gestionar la memoria de un proceso es
gestionar cada una de sus regiones
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos generales de la E/S
5.- Organización física (de la memoria)
Poder ejecutar un proceso cuando su
imagen de memoria es más grande que la
memoria principal:
proceso3
Poder ejecutar un conjunto de procesos
cuya ocupación de memoria es mayor que
la memoria principal
proceso2
Evitar pérdida de memoria por
fragmentación:
29
Memoria principal
(512 MB)
Se guardan en disco las partes del proceso que
no se usen en el momento
Hay memoria física libre pero está
fragmentada en espacios no contiguos que el
sistema de gestión no puede aprovechar
32 bits
(4 GB)
proceso1
Sistema
Operativo
Disco
(1 TB)
Fichero ejecutable
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
1.
Introducción
2.
Arquitectura del subsistema de memoria
1.
Objetivos principales
3.
Regiones de memoria de un proceso
4.
Memoria virtual
5.
Gestión a nivel del sistema operativo
30
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
Variable globales
• Estáticas
• Se crean al iniciar el programa
• Existen durante ejecución
• Dirección fija en memoria y ejecutable
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
31
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
Variable locales y parámetros
• Dinámicas
• Se crean al invocar la función
• Se destruyen al retornar
• Recursividad: varias instancias de una variable
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
32
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
Variable dinámicas
• Variables locales o globales sin espacio
asignado en tiempo de compilación
• Se reserva (y libera) espacio en tiempo
de ejecución
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
33
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
b = d + 5;
.......
return;
Código
• Estático
• Se conoce en tiempo de compilación
• Secuencia de instrucciones a ser ejecutadas
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
34
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
35
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
extern void decir_hola( void ) ;
Módulo
objeto A
Módulo
int main
(int argc, char
*argv[])
Bibliotecas
objeto B
estáticas
{
decir_hola() ;
return
0;
Montador
}
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
36
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
gcc –Wall –g –c a.c –o a.o
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
37
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Compilador
#include <stdio.h>
Conjunto de módulos en
Módulo
void
decir_hola(
void )
lenguaje de alto nivel
objeto A
{
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Módulo
objeto B
Bibliotecas
estáticas
printf("Hola mundo...\n") ;
}
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
38
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Compilación
Montaje
Enlazado dinámico
Ejecución
Compilador
gcc –Wall –g –c b.c –o b.o
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Módulo
fuente B
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
39
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Compilador
Módulo
objeto A
Fases:
Módulo
fuente B
Compilación
Montaje
gcc –Wall –g –o a.exe a.o b.o -lc
Enlazado dinámico
Ejecución
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
40
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Compilador
Módulo
objeto A
Fases:
Módulo
fuente B
Módulo
objeto B
Bibliotecas
estáticas
Montador
Compilación
Montaje
Enlazado dinámico
Ejecución
Ejecutable A
Bibliotecas
dinámicas
Cargador
./a.exe
41
Proceso 1
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
Módulo
fuente A
Aplicación
Conjunto de módulos en
lenguaje de alto nivel
Fases:
Compilación
Montaje
Enlazado dinámico
Ejecución
Módulo
fuente B
Compilador
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
42
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Biblioteca
Colección de módulos objetos relacionados
Biblioteca
Módulo
objeto X
Carga y montaje en tiempo de compilación
Biblioteca dinámica
43
…
Biblioteca estática
Módulo
objeto Y
Carga y montaje en tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
ARCOS @ UC3M
Alejandro Calderón Mateos
b.c
Bibliotecas de objetos
#include <stdio.h>
void decir ( char * str )
{
printf("%s",str) ;
}
Biblioteca
Colección de módulos objetos relacionados
a.c
Biblioteca
Módulo
objeto X
extern void decir ( char * str ) ;
Módulo
…
objeto Y void decir_hola( void )
{
decir("Hola mundo...\n") ;
}
main.c
void decir_hola(
void ) ;
extern
Biblioteca
estática
Carga
y montaje
en
intmain
(int argc,
char *argv[])
{
decir_hola() ;
return 0 ;
} Carga y montaje en
tiempo de compilación
Biblioteca dinámica
44
tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Biblioteca
Colección de módulos objetos relacionados
Módulo
objeto X
Biblioteca gcc –Wall –g –o a.o –c a.c
gcc –Wall –g –o b.o –c b.c
Módulo
…
ar rcs libestatica.a
a.o b.o
objeto Y
gcc -Wall -g -o main.exe main.c -lestatica -L./
./main.exe
Biblioteca estática
Biblioteca dinámica
45
Carga y montaje en tiempo de compilación
Carga y montaje en tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
ARCOS @ UC3M
Alejandro Calderón Mateos
Bibliotecas de objetos
Biblioteca
Colección de módulos objetos relacionados
Biblioteca
Módulo
objeto X
Biblioteca estática
…
gcc –Wall –g –fPIC –o a.o –c a.c
gcc –Wall –g –fPIC –o b.o –c b.c
gcc -shared -Wl,-soname,libdinamica.1 \
-o libdinamica.so.1.0 a.o b.o
ln –s libdinamica.so.1.0 libdinamica.so
gcc –Wall –g –o main.exe main.c –ldinamica –L./
Carga y montaje en tiempo
de compilación
env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
./main.exe
Biblioteca dinámica
46
Módulo
objeto Y
Carga y montaje en tiempo de ejecución
Se indica al montar qué biblioteca usar, carga y montaje posterior
ARCOS @ UC3M
Alejandro Calderón Mateos
Generación y ejecución de programas
resumen
Módulo
fuente A
Código:
Globales
Locales y parámetros
Dinámicas
Código
Módulo
fuente B
Compilador
Módulo
objeto A
Módulo
objeto B
Bibliotecas
estáticas
Montador
Compilación:
Compilación
Montaje
Enlazado dinámico
Ejecución
Ejecutable A
Bibliotecas
dinámicas
Cargador
Proceso 1
47
ARCOS @ UC3M
Alejandro Calderón Mateos
Organización lógica (de los programas)
modelo de memoria de un proceso
Un proceso está formado por
una serie de regiones.
Una región es una zona contigua del
espacio de direcciones de
un proceso con las mismas propiedades.
Principales propiedades:
48
Permisos: lectura, escritura y ejecución.
Compartición entre hilos: private o shared
Tamaño (fijo/variable)
Valor inicial (con/sin soporte)
Creación estática o dinámica
Sentido de crecimiento
Sistemas operativos: una visión aplicada
0xFFFF..
pila
datos
código
0x0000..
ARCOS @ UC3M
Alejandro Calderón Mateos
Organización lógica (de los programas)
modelo de memoria de un proceso
Código o Texto
Compartida, RX, T. Fijo, soporte en ejecutable
0xFFFF..
pila
Datos
Con valor inicial
Privada, RW, T. Fijo, soporte en ejecutable
Sin valor inicial
Privada, RW, T. Fijo, sin soporte (rellenar 0)
datos
Pila
49
Privada, RW, T. Variable, sin soporte (rellenar 0)
Crece hacia direcciones más bajas
Pila inicial: argumentos del programa
Sistemas operativos: una visión aplicada
código
0x0000..
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
0xFFFF..
pila
b = d + 5;
.......
return;
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
50
datos estáticos
sin valor inicial
datos estáticos
con valor inicial
código
0x0000..
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
0xFFFF..
pila
b = d + 5;
.......
return;
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
51
datos estáticos
sin valor inicial
datos estáticos
con valor inicial
código
0x0000..
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
0xFFFF..
pila
b = d + 5;
.......
return;
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
52
datos estáticos
sin valor inicial
datos estáticos
con valor inicial
código
0x0000..
ARCOS @ UC3M
Alejandro Calderón Mateos
Organización lógica (de los programas)
modelo de memoria de un proceso
53
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
0xFFFF..
pila
…
Memoria compartida
Región de una zona de memoria compartida
Compartida, T. Variable, sin soporte (rellenar 0)
Protección especificada por programa
Pilas de threads
datos
código
Cada pila de thread corresponde con una región
Mismas características que pila del proceso
Sistemas operativos: una visión aplicada
0x0000..
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de programa
int a;
int b = 5;
void f(int c) {
int d;
static e = 2;
0xFFFF..
pila
b = d + 5;
.......
return;
}
main (int argc, char **argv) {
char *p;
p = (char *) malloc (1024)
f(b)
.......
free (p)
....
exit (0)
}
54
datos
dinámicos
datos
estáticos
código
0x0000..
ARCOS @ UC3M
Alejandro Calderón Mateos
Organización lógica (de los programas)
modelo de memoria de un proceso
0xFFFF..
Ficheros proyectados
Región asociada al fichero proyectado
Compartida, T. Variable, soporte en fichero
Protección especificada en proyección
Biblioteca dinámica
Regiones asociadas al código y datos de la
biblioteca
pila
…
datos
código
0x0000..
55
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Organización lógica (de los programas)
modelo de memoria de un proceso
0xFFFF..
Ficheros proyectados
Región asociada al fichero proyectado
Compartida, T. Variable, soporte en fichero
Protección especificada en proyección
Biblioteca dinámica
Regiones asociadas al código y datos de la
biblioteca
pila
…
datos
código
0x0000..
56
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Ficheros proyectados en memoria (1/4)
Imagen de
memoria de
un proceso
Memoria
principal
Fichero
proyectado
en memoria
fichero
swap
57
Una región de un proceso se asocia a un fichero
Habrá páginas del fichero en memoria principal
El proceso direcciona dentro del fichero con instrucciones de
acceso a memoria (en lugar de read/write)
ARCOS @ UC3M
Alejandro Calderón Mateos
Ficheros proyectados en memoria (2/4)
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.
58
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Ficheros proyectados en memoria (3/4)
Cuántas veces aparece carácter en fichero proyectando en memoria.
/* 1) Abrir el fichero */
fd=open(argv[2], O_RDONLY)); /* Abre fichero */
fstat(fd, &fs); /* Averigua long. fichero */
/* 2) Proyectar el fichero */
org=mmap((caddr_t)0, fs.st_size, PROT_READ, MAP_SHARED, fd, 0));
close(fd); /* Se cierra el fichero */
/* 3) Bucle de acceso */
p=org;
for (i=0; i<bstat.st_size; i++)
if (*p++==caracter) contador++;
/* 4) Eliminar la proyección */
munmap(org, bstat.st_size);
printf("%d\n", contador);
59
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Ficheros proyectados en memoria (4/4)
Posibilidad de conocer los archivos proyectados del proceso
con identificador <PID>
# cat /proc/<PID>/maps
08048000-08049000
08049000-0804a000
0804a000-08054000
40000000-4000a000
4000a000-4000b000
40010000-40028000
40028000-40029000
40029000-400ba000
400ba000-400c2000
400c2000-400ce000
bfffc000-c0000000
direccion
60
r-xp
rw-p
rwxp
r-xp
rw-p
r-xp
rw-p
r-xp
rw-p
rw-p
rwxp
00000000
00000000
00000000
00000000
00009000
00000000
00017000
00000000
00090000
00000000
ffffd000
08:11
08:11
00:00
08:01
08:01
08:01
08:01
08:01
08:01
00:00
00:00
perms
offset
dev
630795
630795
0
30602
30602
30614
30614
30606
30606
0
0
nodo-i
<ruta de ejecución>
<ruta de ejecución>
ld.so
libm.so
libc.so
nombre
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de mapa de memoria
0xFFFF..
pila del proceso
pila del hilo 1
biblioteca dinámica B
zona de memoria compartida
fichero proyectado F
datos dinámicos (heap)
datos estáticos sin valor inicial
datos estáticos con valor inicial
código
0x0000..
61
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de formato de ejecutable
Cabecera
Número mágico
0
Despl.
PC inicial
…
Tabla de secciones
1000
Código
Secciones
Datos con valor inicial
Tam.
Código
1000
4000
Datos con v.i.
5000
1000
Datos sin v.i.
---
…
…
…
T. Símbolos
8000
1000
500
5000
Datos sin valor inicial
...
8000
Tabla de símbolos
62
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria
Crear mapa desde ejecutable
Disco
P1
S.O.
Fichero ejecutable
0
Ejecutable
Número mágico
PC inicial
…
Tabla de secciones
1000
Código
5000
Mapa de memoria
0
Código
Datos con valor inicial
4000
Datos sin valor inicial
5000
Datos con valor inicial
Datos sin valor inicial
...
8000
Tabla de símbolos
Pila
Argumentos del programa
63
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria
Inspeccionar un ejecutable
Disco
P1
S.O.
Ejecutable
Dependencias de un ejecutable (lib. dinámicas):
acaldero@phoenix:~/infodso/$ ldd main.exe
linux-gate.so.1 => (0xb7797000)
libdinamica.so.1 => not found
libc.so.6 => /lib/libc.so.6 (0xb761c000)
/lib/ld-linux.so.2 (0xb7798000)
Símbolos de un ejecutable:
acaldero@phoenix:~/infodso/$ nm main.exe
08049f20 d _DYNAMIC
08049ff4 d _GLOBAL_OFFSET_TABLE_
0804856c R _IO_stdin_used
w _Jv_RegisterClasses
08049f10 d __CTOR_END__
08049f0c d __CTOR_LIST__
...
64
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria
Inspeccionar un ejecutable
Disco
P1
S.O.
Ejecutable
Detalles de las secciones de un ejecutable:
acaldero@phoenix:~/infodso/$ objdump –x main.exe
...
Program Header:
...
DYNAMIC off
filesz
...
STACK off
filesz
...
Dynamic Section:
NEEDED
NEEDED
INIT
...
65
0x00000f20 vaddr 0x08049f20 paddr 0x08049f20 align 2**2
0x000000d0 memsz 0x000000d0 flags rw0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
0x00000000 memsz 0x00000000 flags rw-
libdinamica.so
libc.so.6
0x08048368
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria
Inspeccionar un ejecutable
Disco
P1
S.O.
Ejecutable
(continuación)
Sections:
Idx Name
0 .interp
...
12 .text
...
23 .bss
Size
VMA
LMA
File off
00000013 08048134 08048134 00000134
CONTENTS, ALLOC, LOAD, READONLY, DATA
Algn
2**0
0000016c 080483e0 080483e0 000003e0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2**4
00000008
ALLOC
2**2
0804a014
0804a014
00001014
...
SYMBOL TABLE:
08048134 l
d .interp
08048148 l
d .note.ABI-tag
08048168 l
d .note.gnu.build-id
...
0804851a g
F .text 00000000
08048494 g
F .text 00000014
08048368 g
F .init 00000000
66
00000000
00000000
00000000
.interp
.note.ABI-tag
.note.gnu.build-id
.hidden __i686.get_pc_thunk.bx
main
_init
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria
Inspeccionar un proceso
Disco
P1
S.O.
Ejecutable
Detalles de las secciones de un proceso:
acaldero@phoenix:~/infodso/$ cat /proc/1/maps
b7688000-b7692000
b7692000-b7693000
b7693000-b7694000
b7694000-b769d000
b769d000-b769e000
b769e000-b769f000
b769f000-b76b2000
b76b2000-b76b3000
b76b3000-b76b4000
b76b4000-b76b6000
..
b78b7000-b78b8000
b78b8000-b78d4000
b78d4000-b78d5000
b78d5000-b78d6000
b78d6000-b78ef000
b78ef000-b78f0000
b78f0000-b78f1000
b81e5000-b8247000
bf851000-bf872000
67
r-xp
r--p
rw-p
r-xp
r--p
rw-p
r-xp
r--p
rw-p
rw-p
00000000
00009000
0000a000
00000000
00008000
00009000
00000000
00012000
00013000
00000000
08:02
08:02
08:02
08:02
08:02
08:02
08:02
08:02
08:02
00:00
1491
1491
1491
3380
3380
3380
1414
1414
1414
0
/lib/libnss_files-2.12.1.so
/lib/libnss_files-2.12.1.so
/lib/libnss_files-2.12.1.so
/lib/libnss_nis-2.12.1.so
/lib/libnss_nis-2.12.1.so
/lib/libnss_nis-2.12.1.so
/lib/libnsl-2.12.1.so
/lib/libnsl-2.12.1.so
/lib/libnsl-2.12.1.so
r-xp
r-xp
r--p
rw-p
r-xp
r--p
rw-p
rw-p
rw-p
00000000
00000000
0001b000
0001c000
00000000
00019000
0001a000
00000000
00000000
00:00
08:02
08:02
08:02
08:02
08:02
08:02
00:00
00:00
0
811
811
811
1699
1699
1699
0
0
[vdso]
/lib/ld-2.12.1.so
/lib/ld-2.12.1.so
/lib/ld-2.12.1.so
/sbin/init
/sbin/init
/sbin/init
[heap]
[stack]
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejercicio
completar características de regiones
Región
Soporte
Protección
Comp./Priv.
Tamaño
Código
Fichero
RX
Compartida
Fijo
…
…
…
…
…
68
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
1.
Introducción
2.
Arquitectura del subsistema de memoria
1.
Objetivos principales
3.
Regiones de memoria de un proceso
4.
Memoria virtual
5.
Gestión a nivel del sistema operativo
69
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas sin memoria virtual
asignación continua
memoria
Proceso 1
Proceso 2
Mapa de proceso en zona contigua de memoria
Referencias relativas + overlays (en desuso)
Protección mediante registros valla
Compartición no posible
Problemas de fragmentación externa
S.O. mantiene información en cada BCP sobre el
comienzo y el final de:
Proceso 3
Sistema operativo
El bloque de direcciones asignado al proceso
Regiones dentro del bloque asignado
S.O. mantiene información global de:
La gestión de espacio libre
70
compactación –› costoso
Primer ajuste, mejor ajuste, peor ajuste, etc.
ARCOS @ UC3M
Alejandro Calderón Mateos
Localización de referencias en memoria
reubicación
int vector[1024];
.data
vector: .space 4*1024
int main ( void ) {
int i;
for (i = 0; i<1024; i++)
vector[i] = i;
}
.text
.globl main
main: li $t0 0
la $t1 vector
b2: bge $t0 1024 finb2
mult $t2 $t0 4
add $t2 $t1 $t2
sw
$t0 ($t2)
add $t0 $t0 1
b b2
finb2: jr $ra
71
ARCOS @ UC3M
Alejandro Calderón Mateos
Localización de referencias en memoria
reubicación
.data
vector: .space 4*1024
.text
.globl main
main: li $t0 0
la $t1 vector
b2: bge $t0 1024 finb2
mult $t2 $t0 4
add $t2 $t1 $t2
sw
$t0 ($t2)
add $t0 $t0 1
b b2
finb2: jr $ra
72
•
•
•
•
•
Cabecera
Tipo de ejecutable
Tamaño inicial de pila
Tamaño inicial de datos
Tamaño inicial de código
Etc.
00:
04:
08:
12:
16:
20:
24:
28:
32:
li $t0 0
la $t1 ini_datos+0
b2: bge $t0 1024 ini_codigo+32
mult $t2 $t0 4
add $t2 $t1 $t2
sw
$t0 ($t2)
add $t0 $t0 1
b ini_codigo+8
jr $ra
Disco
Fichero ejecutable
ARCOS @ UC3M
Alejandro Calderón Mateos
Localización de referencias en memoria
reubicación
Memoria principal
.
.
10000
10004
10008
10012
10016
10020
10024
10028
10032
.
.
li $t0 0
la $t1 20000+0
bge $t0 1024 10000+32
mult $t2 $t0 4
add $t2 $t1 $t2
sw $t0 ($t2)
add $t0 $t0 1
b 10000+8
jr $ra
•
•
•
•
•
Cabecera
Tipo de ejecutable
Tamaño inicial de pila
Tamaño inicial de datos
Tamaño inicial de código
Etc.
00:
04:
08:
12:
16:
20:
24:
28:
32:
li $t0 0
la $t1 ini_datos+0
b2: bge $t0 1024 ini_codigo+32
mult $t2 $t0 4
add $t2 $t1 $t2
sw
$t0 ($t2)
add $t0 $t0 1
b ini_codigo+8
jr $ra
Disco
Fichero ejecutable
73
ARCOS @ UC3M
Alejandro Calderón Mateos
Protección de espacios de memoria
registros valla
Si hay varios procesos en memoria, es necesario asegurar que un
programa no accede a la zona de memoria que otro tiene asignado.
CPU
Memoria principal
proceso2
MAR
proceso1
MBR
Sistema
Operativo
74
ARCOS @ UC3M
Alejandro Calderón Mateos
Protección de espacios de memoria
registros valla
Si hay varios procesos en memoria, es necesario asegurar que un
programa no accede a la zona de memoria que otro tiene asignado.
CPU
Memoria principal
Lsup
proceso2
MAR
Linf
proceso1
MBR
Sistema
Operativo
75
ARCOS @ UC3M
Alejandro Calderón Mateos
Protección de espacios de memoria
registros valla
Si hay varios procesos en memoria, es necesario asegurar que un
programa no accede a la zona de memoria que otro tiene asignado.
CPU
Memoria principal
Lsup
• ok
• excepción
proceso2
MAR
Linf
proceso1
MBR
Sistema
Operativo
76
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas con memoria virtual
1
Dirección
virtual
2
MMU
3b
3a
M. virtual
77
M. principal
M. secundaria
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas con memoria virtual
1
Dirección
virtual
2
MMU
3b
3a
M. virtual
78
Los programas manejan un
espacio virtual de direcciones
principalvirtual
M.
El espacio
M. secundaria
(y real)
se divide
en bloques (tamaño potencia de 2)
siendo este bloque
la unidad de asignación
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas con memoria virtual
1
Dirección
virtual
2
MMU
3a
La
3b de
MMU (unidad de gestión
memoria) se encarga de traducir la
dirección virtual a la dirección física
M. virtual
79
M. principal
M. secundaria
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas con memoria virtual
1
Dirección
virtual
2
MMU
3a
Para la
traducción el S.O.3btiene una
tabla de bloques con la traducción en el
formato que usa la MMU
M. virtual
80
Hay
tabla por proceso M. secundaria
M.una
principal
Adicionalmente el S.O. tiene:
Tabla de marcos
Tabla de regiones de cada proceso
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
M. virtual
81
M. principal
M. secundaria
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
…
lw $t0 vector
…
M. virtual
82
M. principal
M. secundaria
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
…
lw $t0 vector
…
M. virtual
83
M. principal
M. secundaria
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
…
lw $t0 vector
…
M. virtual
84
M. principal
M. secundaria
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
Fallo de página
M. virtual
M. principal
M. secundaria
El fallo de página es una excepción que provoca que el procesador
ejecute la rutina de tratamiento asociada.
Está implementada en el sistema operativo.
85
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
M. virtual
M. principal
M. secundaria
El sistema operativo transfiere el ‘bloque’ solicitado a memoria
principal y actualiza la tabla de ‘bloques’
86
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
M. virtual
M. principal
M. secundaria
El sistema operativo transfiere el ‘bloque’ solicitado a memoria
principal y actualiza la tabla de ‘bloques’
87
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
Acierto
…
lw $t0 vector
…
M. virtual
M. principal
M. secundaria
Se reanuda la ejecución de la instrucción que provocó el fallo.
88
ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción a memoria virtual
Acierto
…
lw $t0 vector+4
…
M. virtual
M. principal
M. secundaria
La siguiente instrucción del mismo bloque no provoca fallo.
89
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual: Windows
90
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual: Linux
91
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual
Dirección virtual
Dirección real
Desplazamiento
Desplazamiento
N.º marco
Registro
Puntero a tabla
de páginas
N.º página
Tabla de páginas
+
Programa
Segmentación
N.º marco
Mecanismo de paginación
Dirección virtual
Dirección real
Desplazamiento (d)
N.º seg.
Memoria principal
base + d
+
Programa
Segmentación paginada
long.
base
Mecanismo de segmentación
Dirección virtual
N
.
º
s
e
g
.
N
.
º
p
a
g
.
Memoria principal
Dirección real
Desplazamiento
N.º marco
Desplazamiento
Puntero a tabla
de segmentos
Programa
92
Tabla de
segmentos
Mecanismo de
segmentación
Tabla de
página
+
N.º pág.
+
N.º segmento
+
Tabla de segmentos
d
N.º segmento
Puntero a tabla
de segmentos
Mecanismo de
paginación
Marco de
página
Marco
de
página
segmento
N.º pág.
Desplazamiento
Paginación
desp.
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual
Dirección virtual
Dirección real
Desplazamiento
Desplazamiento
N.º marco
Registro
Puntero a tabla
de páginas
N.º página
Tabla de páginas
+
Programa
Segmentación
N.º marco
Mecanismo de paginación
Dirección virtual
Dirección real
Desplazamiento (d)
N.º seg.
Memoria principal
base + d
+
Programa
Segmentación paginada
long.
base
Mecanismo de segmentación
Dirección virtual
N
.
º
s
e
g
.
N
.
º
p
a
g
.
Memoria principal
Dirección real
Desplazamiento
N.º marco
Desplazamiento
Puntero a tabla
de segmentos
Programa
93
Tabla de
segmentos
Mecanismo de
segmentación
Tabla de
página
+
N.º pág.
+
N.º segmento
+
Tabla de segmentos
d
N.º segmento
Puntero a tabla
de segmentos
Mecanismo de
paginación
Marco de
página
Marco
de
página
segmento
N.º pág.
Desplazamiento
Paginación
desp.
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo
32 bits
011010001001010
22 bits
Dirección virtual
1111100100000
Dirección física
Memoria secundaria
94
ARCOS @ UC3M
Ejemplo
32 bits
011010001001010
22 bits
Dirección virtual
1111100100000
Dirección física
Memoria secundaria
División en bloques del mismo tamaño -> páginas
95
ARCOS @ UC3M
Ejemplo
20 bits
Id. página
12 bits
Desplazamiento
Dirección virtual
22 bits
1111100100000
Dirección física
Id. página
División en bloques del mismo tamaño -> páginas
96
ARCOS @ UC3M
Ejemplo
20 bits
Id. página
12 bits
Desplazamiento
Dirección virtual
10 bits
Marco
12 bits
Desplazamiento
Dirección física
Marco
Id. página
División en bloques del mismo tamaño -> páginas
97
ARCOS @ UC3M
Ejemplo
20 bits
Id. página
12 bits
Desplazamiento
Dirección virtual
10 bits
Marco
12 bits
Desplazamiento
Dirección física
Marco
Tabla de páginas
Id. página
Correspondencia entre Id. página y marco -> T. páginas
98
ARCOS @ UC3M
Ejemplo
20 bits
Id. página
12 bits
Desplazamiento
10 bits
Dirección virtual
Marco
12 bits
Desplazamiento
Dirección física
Marco
Tabla de páginas
Id. página
PM
+ bits de control
Id. marco
…
…
Correspondencia entre Id. página y marco -> T. páginas
99
ARCOS @ UC3M
Ejemplo
20 bits
Id. página
12 bits
Desplazamiento
10 bits
Dirección virtual
Marco
12 bits
Desplazamiento
Dirección física
Marco
Tabla de páginas
09
Id. página 10
10
11
100
1M
+ bits de control
Id. marco
…
…
ARCOS @ UC3M
Ejemplo
20 bits
Id. página
12 bits
Desplazamiento
10 bits
Dirección virtual
Marco
12 bits
Desplazamiento
Dirección física
Marco
Tabla de páginas
09
Id. página 10
10
0M
11
+ bits de control
Id. marco
…
…
Intercambio
o swap
Memoria secundaria
101
ARCOS @ UC3M
Tratamiento (general) del fallo de página
Si dirección inválida –› aborta proceso o le manda señal
Si no hay ningún marco libre (consulta T. marcos)
Selección de víctima (alg. de reemplazo): página P marco M
Marca P como inválida
Si P modificada (bit Mod de P activo)
Inicia escritura P en memoria secundaria
Hay marco libre (se ha liberado o lo había previamente):
Inicia lectura de página en marco M
Marca entrada de página válida referenciando a M
Pone M como ocupado en T. marcos (si no lo estaba)
102
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejercicio
Sea un computador con direcciones virtuales de 32
bits y una memoria principal de 512 MB, que emplea
páginas de 4 KB.
Se pide:
a) Indique el formato de la dirección virtual y el número de
marcos de página.
103
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejercicio (sol.)
Formato de la dirección virtual:
1
Id. de página
3
desplazamiento
2
log2(4KB) = 12 bits
Número de marcos de página:
Tamaño de M.P.
Tamaño de página
104
32-12 = 20 bits
32 bits
512 MB
4 KB
512 * 220
4 * 210
128 * 210
ARCOS @ UC3M
Alejandro Calderón Mateos
Entradas de la tabla de páginas
(formato típico)
Dirección virtual
20 bits
Número de página
12 bits
Desplazamiento
Entrada de la tabla de páginas
P M
Otros bits de control
Número de marco
• Bit P: indica si está presente la página en M.P.
• Bit M: indica si ha sido modificada la página en M.P.
• Otros bits: protección (lectura, escritura, ejecución, etc.), gestión (cow, etc.)
105
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de la tabla de páginas
Inicialmente:
Uso:
La crea el sistema operativo cuando se va a ejecutar el programa.
La consulta la MMU en la traducción.
Actualización:
106
La modifica el sistema operativo en los fallos de página.
ARCOS @ UC3M
Alejandro Calderón Mateos
Traducción de direcciones (paginación)
N.º pág.
Dirección real
Desplazamiento
N.º marco
Registro
Puntero a tabla
de páginas
+
Programa
107
N.º página
Tabla de páginas
Desplazamiento
Desplazamiento
Dirección virtual
Marco
de
página
N.º marco
Mecanismo de paginación
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Movimiento de las páginas
Inicialmente:
De M. secundaria a M. principal (por demanda):
Página no residente se marca ausente
Se guarda dirección del bloque de swap que la contiene
Acceso a pág. no residente: Fallo de página
S.O. lee página de M. secundaria y la lleva a M. principal
De M. principal a M. secundaria (por expulsión):
108
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 (si bit M=1)
ARCOS @ UC3M
Alejandro Calderón Mateos
Movimiento de las páginas
Inicialmente:
De M. secundaria a M. principal (por demanda):
Página no residente se marca ausente
Se guarda dirección del bloque de swap que la contiene
Acceso a pág. no residente: Fallo de página
S.O. lee página de M. secundaria y la lleva a M. principal
De M. principal a M. secundaria (por expulsión):
109
No hay espacio en M. principal para traer página
Se necesita
Se expulsa (reemplaza) una página residente
soporte en
S.O. escribe página expulsada a M. secundaria (si bit M=1) hardware
ARCOS @ UC3M
Alejandro Calderón Mateos
Políticas de administración
Política de reemplazo:
Algoritmos de reemplazo: validos para local y global
Reemplazo local: dentro del proceso
Reemplazo global
Óptimo
FIFO
Reloj (o segunda oportunidad)
LRU
Política de asignación de marcos a los procesos:
Asignación fija (siempre con reemplazo local):
Asignación dinámica (reemplazo local o global):
110
conjunto residente del proceso es constante
conjunto residente del proceso es variable
ARCOS @ UC3M
Alejandro Calderón Mateos
Algoritmos de no reemplazo
Bloqueo de marcos:
Ejemplos de cuándo se bloquea un marco:
Cuando un marco está bloqueado, la página cargada
en ese marco no puede ser reemplazada.
La mayoría del núcleo del sistema operativo.
Estructuras de control.
Buffers de E/S (Ej.: los usados con DMA).
El bloqueo se consigue asociando
un bit de bloqueo a cada marco.
B P M
111
Otros bits de control
Número de marco
ARCOS @ UC3M
Alejandro Calderón Mateos
Algoritmos de reemplazo
Qué página se va a reemplazar.
La página que se va a reemplazar tiene que ser la que
tenga una menor posibilidad de ser referenciada en un
futuro cercano.
La mayoría de las políticas intentan predecir el
comportamiento futuro en función del comportamiento
pasado.
Ejemplo de políticas: LRU, FIFO, etc.
112
ARCOS @ UC3M
Alejandro Calderón Mateos
Algoritmos básicos de reemplazo
Política óptima:
Selecciona para reemplazar la página que tiene que esperar
una mayor cantidad de tiempo hasta que se produzca la
referencia siguiente.
Es imposible de implementar porque requiere que el sistema
operativo tenga un conocimiento exacto de los sucesos
futuros.
113
ARCOS @ UC3M
Alejandro Calderón Mateos
Algoritmos básicos de reemplazo
Política ‘la usada menos recientemente’ (LRU):
Reemplaza la página de memoria que no ha sido
referenciada desde hace más tiempo.
Debido al principio de cercanía, ésta sería la página con
menor probabilidad de ser referenciada en un futuro
cercano.
Una solución sería etiquetar cada página con el
momento de su última referencia.
114
ARCOS @ UC3M
Alejandro Calderón Mateos
Algoritmos básicos de reemplazo
Política ‘primera en entrar, primera en salir’ (FIFO):
Reemplazar la página en memoria que primero se cargo
(que ha estado más tiempo en memoria)
Estas páginas pueden necesitarse de nuevo y
en un plazo de tiempo corto.
Es una de las políticas de reemplazo más sencillas
de implementar:
115
Trata los marcos asignados a un proceso como un buffer circular.
Las páginas se suprimen de la memoria según la técnica de turno
rotatorio (round-robin).
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual
Dirección virtual
Dirección real
Desplazamiento
Desplazamiento
N.º marco
Registro
Puntero a tabla
de páginas
N.º página
Tabla de páginas
+
Programa
Segmentación
N.º marco
Mecanismo de paginación
Dirección virtual
Dirección real
Desplazamiento (d)
N.º seg.
Memoria principal
base + d
+
Programa
Segmentación paginada
long.
base
Mecanismo de segmentación
Dirección virtual
N
.
º
s
e
g
.
N
.
º
p
a
g
.
Memoria principal
Dirección real
Desplazamiento
N.º marco
Desplazamiento
Puntero a tabla
de segmentos
Programa
116
Tabla de
segmentos
Mecanismo de
segmentación
Tabla de
página
+
N.º pág.
+
N.º segmento
+
Tabla de segmentos
d
N.º segmento
Puntero a tabla
de segmentos
Mecanismo de
paginación
Marco de
página
Marco
de
página
segmento
N.º pág.
Desplazamiento
Paginación
desp.
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo
32 bits
011010001001010
32 bits
Dirección virtual
1111100100000
Dirección física
117
ARCOS @ UC3M
Ejemplo
32 bits
011010001001010
32 bits
Dirección virtual
1111100100000
Dirección física
La paginación usa zonas de
tamaño fijo (paginas)
División en zonas de tamaño variable -> segmentos
118
ARCOS @ UC3M
Ejemplo
8 bits
Id. segmento
16 bits
Desplazamiento
Dirección virtual
32 bits
1111100100000
Dirección física
División en zonas de tamaño variable -> segmentos
119
ARCOS @ UC3M
Ejemplo
8 bits
Id. segmento
16 bits
Desplazamiento
Dirección virtual
8 bits
Base
16 bits
Desplazamiento
Dirección física
División en zonas de tamaño variable -> segmentos
120
ARCOS @ UC3M
Ejemplo
8 bits
Id. segmento
16 bits
Desplazamiento
Dirección virtual
8 bits
Base
16 bits
Desplazamiento
Dirección física
Base
Id. segmento
Tabla de segmentos
Correspondencia M.V. y M.F. -> tabla de segmentos
121
ARCOS @ UC3M
Ejemplo
8 bits
Id. segmento
16 bits
Desplazamiento
Dirección virtual
8 bits
Base
16 bits
Desplazamiento
Dirección física
Base
Id. segmento
Tabla de segmentos
P M + bits
Long.
Base
…
…
Correspondencia M.V. y M.F. -> tabla de segmentos
122
ARCOS @ UC3M
Ejemplo
8 bits
Id. segmento
16 bits
Desplazamiento
Dirección virtual
8 bits
Base
16 bits
Desplazamiento
Dirección física
Base
Id. segmento
Tabla de segmentos
P M + bits
Long.
Base
…
…
Correspondencia M.V. y M.F. -> tabla de segmentos
123
ARCOS @ UC3M
Entradas de la tabla de segmentos
formato típico
Dirección virtual
Número de segmento
Desplazamiento
Entrada de la tabla de segmentos
P M Otros bits de control
Longitud
Base del segmento
• Bit P: presente
• Bit M: modificado
• Otros bits de control: R,W,X,COW,…
124
ARCOS @ UC3M
Alejandro Calderón Mateos
Traducción de direcciones (segmentación)
Dirección virtual
Desplazamiento (d)
base + d
+
Programa
125
N.º segmento
Tabla de segmentos
segmento
+
Puntero a tabla
de segmentos
d
N.º seg.
Dirección real
long. base
Mecanismo de segmentación
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Movimiento de los segmentos
Inicialmente:
De M. secundaria a M. principal (por demanda):
Se configuran desde el ejecutable de una aplicación
Código se carga, pila se inicializa, etc.
Acceso a seg. no residente: Fallo de segmento
S.O. lee el segmento de M. secundaria y la lleva a MP
De M. principal a M. secundaria (por expulsión):
126
No hay espacio en M. principal para traer un segmento
Se expulsa (reemplaza) un segmento residente
S.O. escribe segmento expulsado a M. secundaria (si bit M=1)
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual
Dirección virtual
Dirección real
Desplazamiento
Desplazamiento
N.º marco
Registro
Puntero a tabla
de páginas
N.º página
Tabla de páginas
+
Programa
Segmentación
N.º marco
Mecanismo de paginación
Dirección virtual
Dirección real
Desplazamiento (d)
N.º seg.
Memoria principal
base + d
+
Programa
Segmentación paginada
long.
base
Mecanismo de segmentación
Dirección virtual
N
.
º
s
e
g
.
N
.
º
p
a
g
.
Memoria principal
Dirección real
Desplazamiento
N.º marco
Desplazamiento
Puntero a tabla
de segmentos
Programa
127
Tabla de
segmentos
Mecanismo de
segmentación
Tabla de
página
+
N.º pág.
+
N.º segmento
+
Tabla de segmentos
d
N.º segmento
Puntero a tabla
de segmentos
Mecanismo de
paginación
Marco de
página
Marco
de
página
segmento
N.º pág.
Desplazamiento
Paginación
desp.
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual:
segmentación y paginación
Lo mejor de las dos soluciones:
Segmentación:
Paginación:
Facilita operaciones con regiones de memoria
Evita la fragmentación interna (tiene externa)
Optimiza el acceso a la M. secundaria
Evita la fragmentación externa (tiene interna)
Entrada en la tabla de segmentos ‘apunta’
a una tabla de páginas asociada al segmento
128
Los segmentos de tamaño variable se fragmentan
en páginas de tamaño fijo
ARCOS @ UC3M
Alejandro Calderón Mateos
Traducción de direcciones
(segmentación paginada)
Dirección virtual
N.º
seg.
N.º
pag.
Dirección real
Desplazamiento
N.º marco
Desplazamiento
Programa
129
Mecanismo de
segmentación
+
Mecanismo de
paginación
Marco de
página
Tabla de
página
N.º pág.
+
N.º segmento
Tabla de
segmentos
desp.
Puntero a tabla
de segmentos
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Segmentación Paginada:
Esquema de traducción
1.
2.
3.
4.
La MMU toma la parte
asociada al número de
segmento y lo busca
en la TS.
dirección lógica
s
p
d
tabla de segmentos
3
1
dir. T. Pág.
límite
Se verifica si el
desplazamiento está
dentro de los límites
Se obtiene la tabla de
páginas de la TS y se
determina el MP.
tabla de páginas
para segmento s
>
2
NO
SI
Excepción
p
m
m
memoria
d
dirección
física
4
Indexa el byte dentro
del MP de la memoria
física.
130
ARCOS @ UC3M
Alejandro Calderón Mateos
Entradas de la tablas
formato típico
Dirección virtual
Número de segmento
Número de página
Desplazamiento
Tabla de segmentos
P M Otros bits de control
Longitud
Base del segmento
Entrada de la T.S.
Tabla de páginas (del segmento)
P M Otros bits de control
Número de marco
Entrada de la T.P.
131
ARCOS @ UC3M
Alejandro Calderón Mateos
Memoria virtual
resumen
Dirección virtual
Dirección real
Desplazamiento
Desplazamiento
N.º marco
Registro
Puntero a tabla
de páginas
N.º página
Tabla de páginas
+
Programa
Segmentación
N.º marco
Mecanismo de paginación
Dirección virtual
Dirección real
Desplazamiento (d)
N.º seg.
Memoria principal
base + d
+
Programa
Segmentación paginada
long.
base
Mecanismo de segmentación
Dirección virtual
N
.
º
s
e
g
.
N
.
º
p
a
g
.
Memoria principal
Dirección real
Desplazamiento
N.º marco
Desplazamiento
Puntero a tabla
de segmentos
Programa
132
Tabla de
segmentos
Mecanismo de
segmentación
Tabla de
página
+
N.º pág.
+
N.º segmento
+
Tabla de segmentos
d
N.º segmento
Puntero a tabla
de segmentos
Mecanismo de
paginación
Marco de
página
Marco
de
página
segmento
N.º pág.
Desplazamiento
Paginación
desp.
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Objetivos generales de la E/S
usando memoria virtual
1.
Localización de referencias a memoria
proceso
2.
Protección de espacios de memoria
Interfaz del Sistema Operativo
3.
Gestión de
procesos
Red
4.
Gestión de
memoria
133
Entradas de tabla de página que apuntan
a los mismos marcos de páginas
Organización lógica (de programas)
5.
Cada proceso ve su propio espacio
Compartición de espacios de memoria
Sistema de
ficheros
La MMU se encarga de traducir un
espacio virtual al real
Uso de segmentación
Organización física (de la memoria)
Segmentación paginada ofrecen mayor
flexibilidad en la organización
ARCOS @ UC3M
Alejandro Calderón Mateos
Sistemas con memoria virtual
aspectos avanzados
1
Dirección
virtual
2
MMU
3b
3a
M. virtual
M. secundaria
Optimizaciones:
134
M. principal
TLB (eficiencia)
Tablas multinivel (espacio)
ARCOS @ UC3M
Alejandro Calderón Mateos
Cache de traducciones
Memoria virtual basado en tablas de páginas:
Problema: sobrecarga de acceso a memoria (2 accesos)
Solución: TLB
A la tabla de páginas/segmentos + al propio dato o instrucción
Caché de traducciones
TLB (buffer de traducción adelantada)
135
Memoria caché asociativa que almacena las entradas de la tabla
de página usadas más recientemente
Permite acelerar el proceso de búsqueda del marco
ARCOS @ UC3M
Alejandro Calderón Mateos
Traducción de direcciones (con TLB)
Memoria
principal
Dirección virtual
N.º pág.
Memoria
secundaria
Desplazamiento
Acierto
de TLB
Desplazamiento
Cargar
página
Tabla de páginas
Fallo de
TLB
N.º marco
Desplazamiento
Dirección real
Fallo de página
136
ARCOS @ UC3M
Alejandro Calderón Mateos
Tablas multinivel
Memoria virtual basado en tablas de páginas:
Problema: consumo de memoria para las tablas
Ej.: páginas 4KB, dir. lógica 32 bits y 4 bytes por entrada:
220 *4 = 4MB/proceso
Solución: tablas multinivel
Tabla multinivel
Esquema de traducción en dos niveles:
137
En memoria la tabla de primer nivel
Solo en memoria las tablas de segundo nivel que se necesiten
Tablas de cada nivel mucho más compactas: 210 *4 = 4KB/tabla
ARCOS @ UC3M
Alejandro Calderón Mateos
Tablas multinivel
Dirección virtual
1
nivel
2
nivel
Dirección real
Desplazamiento
N.º marco
Desplazamiento
Programa
138
+
Mecanismo de paginación multinivel
Marco de
página
Tabla de
página (2 nivel)
N.º pág.
+
N.º T.P.
Tabla de
páginas (1 nivel)
desp.
Registro base
de la TP
Memoria principal
ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
1.
Introducción
2.
Arquitectura del subsistema de memoria
1.
Objetivos principales
3.
Regiones de memoria de un proceso
4.
Memoria virtual
5.
Gestión a nivel del sistema operativo
139
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de memoria
aspectos gestionados por el sistema operativo
1
Dirección
virtual
2
MMU
3b
3a
Principales parámetros:
140
M. virtual
M. principal
M. secundaria
Tamaño de página
Conjunto residente
Grado de multiprogramación
Operaciones sobre regiones
Visión desde el kernel
Memoria dinámica
ARCOS @ UC3M
Alejandro Calderón Mateos
Grado de multiprogramación (1/4)
Hay una tabla de página por
proceso
Un registro apunta a la T.P. del
proceso en ejecución en un
instante dado.
Grado de multiprogramación:
número de procesos en memoria
en un instante dado
Conjunto residente:
número de páginas que tiene un
proceso en M.P. en un instante
dado
141
p
T.P. 1
p
(RAM)
T.P. 2
…
(HDisk)
ARCOS @ UC3M
Alejandro Calderón Mateos
Grado de multiprogramación (2/4)
Hay que equilibrar:
El número de procesos en
memoria (grado de
multiprogramación)
El número de páginas que tiene
cada proceso en M.P. (conjunto
residente) con el mínimo que
necesita para trabajar
(conjunto de trabajo)
El tamaño de la página.
142
Comportamiento típico de
la paginación en un programa.
Tamaño de T.P., transferencia con
M.S., número de fallos, etc.
P = Tamaño del proceso completo
W = Tamaño del conjunto de trabajo
N = Número total de páginas del proceso
ARCOS @ UC3M
Alejandro Calderón Mateos
Grado de multiprogramación (3/4)
Comportamiento típico de
la paginación en un programa.
Hay que equilibrar:
143
El número de procesos en
memoria (grado de
multiprogramación)
El número de páginas que tiene
cada proceso en M.P. (conjunto
residente) con el mínimo que
necesita para trabajar (conjunto
de trabajo)
El tamaño de la página.
P = Tamaño del proceso completo
W = Tamaño del conjunto de trabajo
N = Número total de páginas del proceso
ARCOS @ UC3M
Alejandro Calderón Mateos
Grado de multiprogramación (4/4)
Hay que equilibrar:
Comportamiento típico de
la paginación con varios programas.
El número de procesos en
memoria (grado de
multiprogramación)
% Utilización de UCP
100 %
Limitado por el dispositivo
de paginación
Trasiego de información entre
M. Principal y M. secundaria.
Hiperpaginación:
Nivel de Multiprogramación
MEMORIA GRANDE
144
Swaping:
Se produce cuando el número
de fallos es muy elevado
El sistema está más tiempo
intercambiando fragmentos
que ejecutando instrucciones
de usuario.
…
ARCOS @ UC3M
Alejandro Calderón Mateos
Soluciones a la hiperpaginación (1/2)
Soluciones con reemplazo local
Estrategia del conjunto de trabajo
Intentar conocer el conjunto de trabajo de cada proceso
Si conjunto de trabajo decrece se liberan marcos
Si conjunto de trabajo crece se asignan nuevos marcos
Estrategia basada en frecuencia de fallos
Si tasa < límite inferior se liberan marcos
Si tasa > límite superior se asignan nuevos marcos
145
si no hay disponibles: suspender proceso(s)
se reactivan cuando hay marcos suficientes para el conjunto de trabajo
Si no marcos libres se suspende algún proceso
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Soluciones a la hiperpaginación (2/2)
Soluciones con reemplazo global
No existe soluciones adecuadas
BSD: Uso de buffering activando el demonio con un umbral.
Si se activa frecuentemente -> suspender algún proceso.
Idea general: mantener una reserva de marcos libres
Si número de marcos libres < umbral
146
“demonio de paginación” aplica repetidamente el algoritmo de reemplazo:
páginas no modificadas pasan a lista de marcos libres
páginas modificadas pasan a lista de marcos modificados
Si se referencia una página de las listas se usa sin más.
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de memoria
aspectos gestionados por el sistema operativo
1
Dirección
virtual
2
MMU
3b
3a
Principales parámetros:
147
M. virtual
M. principal
M. secundaria
Tamaño de página
Conjunto residente
Grado de multiprogramación
Operaciones sobre regiones
Visión desde el kernel
Memoria dinámica
ARCOS @ UC3M
Alejandro Calderón Mateos
Operaciones sobre regiones
creación de región
Nueva región no se le asigna m. principal (carga por demanda)
Págs. de región se marcan como inválidas
Dependiendo del tipo de soporte:
Soporte en archivo
Sin soporte
Por seguridad, las páginas se marcan como Rellenar con ceros (RC)
Fallo de página no implica lectura de dispositivo
Una vez creada región, cuando se expulsa página modificada
Páginas se marcan como Cargar de archivo (CA)
Se almacena dirección del bloque del archivo correspondiente
Si la región es privada se escribe página en swap
Si la región es compartida se escribe página en soporte
Pila es “especial”: debe contener argumentos del programa
148
Típicamente se copian los argumentos en bloque(s) de swap
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Operaciones sobre regiones
liberación de región
Actualizar tabla de regiones para eliminar región
Marcar como inválidas páginas asociadas
Si región privada, se libera espacio de swap
La liberación puede deberse a:
149
Solicitud explícita (Ej.: desproyección de región)
Finalización del proceso (EXIT en POSIX)
EXEC de POSIX libera mapa actual del proceso antes de
construir nuevo mapa vinculado al ejecutable
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Operaciones sobre regiones
cambio de tamaño de una región
Si disminuye, similar a liberación pero sólo parte afectada
Si aumenta tamaño:
Comprobar no solapamiento
Si preasignación: reserva espacio en swap para nuevas páginas
Casos especiales:
Expansión del heap y archivos proyectados
Solicitada por programa mediante servicio de S.O.
Expansión de pila más compleja: es “automática”
Programa disminuye valor de SP y accede a zona expandida
Fallo de página
Tratamiento de fallo de página:
Si dirección realmente inválida
150
Si dirección < SP –› Aborta proceso o le manda señal
Si no –› Expansión de pila
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Operaciones sobre regiones
duplicación de una región
Necesario para FORK de UNIX
Operación costosa e ineficiente: se debe copiar contenido
Optimización: copy-on-write (COW)
Se comparten páginas de regiones duplicadas pero:
Puede haber varios procesos con misma región duplicada
151
se marcan de sólo lectura y con bit de COW
primera escritura –› Fallo de protección –› copia privada
Existe un contador de uso por página
Cada vez que se crea copia privada se decrementa contador
Si llega a 1, se desactiva COW ya que no hay duplicados
El FORK no duplicar espacio de memoria, sólo duplica la TP
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Operaciones sobre regiones
archivos proyectados en memoria
Programa solicita proyección de archivo (o parte) en su mapa
S.O. rellena entradas correspondientes con:
Puede especificar protección y si privada o compartida
No residente, CA
Privada/Compartida y Protección según especifica la llamada
Entradas de TP referencian a un archivo de usuario
Se usa como:
152
Forma alternativa de acceso a archivos frente a read/write
Carga de bibliotecas dinámicas
Globalmente: generalización de memoria virtual
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de memoria
aspectos gestionados por el sistema operativo
1
Dirección
virtual
2
MMU
3b
3a
Principales parámetros:
153
M. virtual
M. principal
M. secundaria
Tamaño de página
Conjunto residente
Grado de multiprogramación
Operaciones sobre regiones
Visión desde el kernel
Memoria dinámica
ARCOS @ UC3M
Alejandro Calderón Mateos
Vista desde el kernel
Un proceso ve un espacio de direcciones lineal y plano
Acceder a regiones de memoria proyectadas en el kernel provocan un fallo de
página
Punto de vista del kernel:
El espacio de direcciones está dividido en dos partes
Usuario: cambia con los cambios de contexto
Kernel: permanece constante
División configurable
Ej.: x86 32-bit, PAGE_OFFSET: 3GB proceso + 1 GB kernel
Kernel
(1 GB)
0xffffffff
0xc0000000
Kernel
(1 GB)
0x80000000
Proceso
(3 GB)
0x00000000
154
0xffffffff
Proceso
(2 GB)
0x00000000
http://www.cs.rutgers.edu/~pxk/416/notes/content/09-memory_management-slides-6.pdf
ARCOS @ UC3M
Alejandro Calderón Mateos
Vista desde el kernel
El espacio usado por el kernel es compartido por todos los procesos
La mayoría del espacio del kernel no puede leerse ni escribirse,
pero si ejecutarse
Llamadas al sistema más rápidas
Kernel
(1 GB)
0xffffffff
0xffffffff
Proceso
(3 GB)
Proceso
(3 GB)
0x00000000
155
Kernel
(1 GB)
0x00000000
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de memoria
aspectos gestionados por el sistema operativo
1
Dirección
virtual
2
MMU
3b
3a
Principales parámetros:
156
M. virtual
M. principal
M. secundaria
Tamaño de página
Conjunto residente
Grado de multiprogramación
Operaciones sobre regiones
Visión desde el kernel
Memoria dinámica
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de memoria dinámica
¿Por qué es tan ‘delicado’ el uso de memoria dinámica?
157
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
Header
freep
ptr
size
0x05
0x00
0
static Header base :
typedef long Align;
/* for alignment to long boundary */
union header {
/* block header */
struct {
Primer elemento de la lista
Con tamaño 0 (cabeceras)
union header *ptr; /* next block if on free list */
unsigned size;
/* size of this block */
} s;
Align x;
/* force alignment of blocks */
};
typedef union header Header;
158
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
morecore
freep
0
size
size
0x10
ptr
ptr
0x05
0x00 18
freep->ptr
morecore (int n_cab)
159
SI (n_cab < min_ncab)
n_cab = min_ncab; // 144 bytes = 18 cabeceras
freep->ptr = sbrk(n_cab*2*sizeof(int))
freep->ptr->ptr=null;
freep->ptr->size=n_cab;
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
malloc
freep
0x00 13
‘lo que queda del bloque de morecore’
int *v1;
char *v2 ;
v1 = malloc(8*sizeof(int)) ;
160
size
ptr
0
size
size
0x10
ptr
ptr
0x05
0x00 5
‘lo que pide malloc’
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
malloc
freep
0x00 13
size
ptr
0
size
size
0x10
ptr
ptr
0x05
0x00 5
v1
int *v1;
char *v2 ;
v1 = malloc(8*sizeof(int)) ;
161
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
malloc
freep
ptr
size
ptr
size
0
0x00
7
0x00
6
size
size
0x10
ptr
ptr
0x05
0x00 5
v2
int *v1;
char *v2 ;
v1 = malloc(8*sizeof(int)) ;
v2 = malloc(41 ) ;
162
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
problema de fragmentación interna
freep
ptr
size
ptr
size
0
0x00
7
0x00
6
size
size
0x10
ptr
ptr
0x05
0x00 5
6*8=48
v2
int *v1;
char *v2 ;
v1 = malloc(8*sizeof(int)) ;
v2 = malloc(41 ) ;
163
• Unidad de asignación es 8 bytes
(1 cabecera de 2 enteros)
• Se redondea a múltiplo de la
unidad de asignación
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
problema de sobreescritura
freep
ptr
size
ptr
size
0
0x00
7
0x00
6
v2
0x00 5
v1
// se ha reservado solo 41 caracteres para v2
for (int i=0; i<64; i++)
size
size
0x10
ptr
ptr
0x05
v2[i] = ‘x’ ;
free(v1) ;
164
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
problema de sobreescritura
freep
ptr
size
ptr
size
ptr
size
ptr
size
0x05
0x10
0
0x00
7
0x00
6
?
?
v2
// se ha reservado solo 41 caracteres para v2
for (int i=0; i<64; i++)
v1
v2[i] = ‘x’ ;
free(v1) ;
165
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
problema de sobreescritura
freep
ptr
size
ptr
size
ptr
size
ptr
size
0x05
0x10
0
0x00
7
0x00
6
?
?
v2
// se ha reservado solo 41 caracteres para v2
for (int i=0; i<64; i++)
v1
v2[i] = ‘x’ ;
free(v1) ; <- incapaz de recuperar la cabecera válida… SIGSEV
166
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
otros problemas típicos
freep
ptr
size
ptr
size
ptr
size
ptr
size
0x05
0x10
0
0x00
7
0x00
6
?
?
v2
Liberar una zona de memoria no gestionada:
v1
int i; free(&i);
Liberar dos veces una misma zona de memoria
Acceder a memoria no pedida anteriormente
167
char *pchar; printf("%s",pchar);
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
free
freep
ptr
size
ptr
size
0
0x00
7
0x00
6
v2
size
size
0x10
ptr
ptr
0x05
0x00 5
v1
free(v1) ;
168
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
free
freep
ptr
size
ptr
size
0
0x78
7
0x00
6
size
size
0x10
ptr
ptr
0x05
0x00 5
v2
free(v1) ;
169
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplo de libc storage allocator
problema de fragmentación externa
freep
ptr
size
ptr
size
0
0x78
7
0x00
6
7*8=56
size
size
0x10
ptr
ptr
0x05
0x00 5
5*8=40
v2
v1 = malloc(20*sizeof(int)) ; // 20*4 = 80 bytes
Con el paso del tiempo, secuencias de llamadas a malloc+free que dejan
muchos huecos entre bloques usados
Búsquedas lentas en listas enlazadas
Espacio libre hay para satisfacer la petición, pero no hueco de ese tamaño
170
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de la memoria en el kernel
Con menor fragmentación externa y menor sobrecarga en la
compactación: buddy memory allocator
171
https://secure.wikimedia.org/wikipedia/en/wiki/Buddy_memory_allocation
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de la memoria en el kernel
En muchos kernels se utiliza el slab allocation
Basado en el Mach’s zone allocator
Tiene preasignado porciones de memoria del tamaño de los
tipos de datos (objetos) más frecuentemente usados
Ej.: Solaris, FreeBSD, Linux, etc.
De esta manera se elimina la búsqueda de hueco y la compactación
después de la liberación
En estas condiciones, más eficiente y elimina fragmentación
Es posible ver el uso en el kernel de dicho gestor mediante:
172
cat /proc/slabinfo
•
•
http://www.ibm.com/developerworks/linux/library/l-linux-slab-allocator/
http://www.arl.wustl.edu/~fredk/Courses/cse522/fall03/Lectures/kmem.ppt
ARCOS @ UC3M
Alejandro Calderón Mateos
Gestión de memoria
Linux
Incluye todas características habituales en sistemas modernos:
Memoria virtual
Mapa del proceso dinámico
Bibliotecas dinámicas
Archivos proyectados
Modelo de memoria independiente del procesador
Paginación con tres niveles
Capa inferior adapta hardware real a este modelo
Dispositivos y archivos como soporte de memoria secundaria
Algoritmo de reemplazo: versión modificada del reloj
173
Sistemas operativos: una visión aplicada
ARCOS @ UC3M
Alejandro Calderón Mateos
Modelo de memoria
Windows
00000000
Programas
de usuario
Único por
proceso
Modo
usuario
7FFFFFFF
80000000
Memoria
compartida
Único por
sistema
C0000000
FFFFFFFF
174
Sistema
operativo
Sistemas operativos: una visión aplicada
Modo
kernel
ARCOS @ UC3M
Alejandro Calderón Mateos
Lección 6
La gestión de memoria
Grupo ARCOS
Diseño de Sistemas Operativos
Grado en Ingeniería Informática
Universidad Carlos III de Madrid