Publicado el 29 de Junio del 2019
685 visualizaciones desde el 29 de Junio del 2019
2,1 MB
83 paginas
Creado hace 9a (27/04/2015)
SISTEMAS OPERATIVOS
GESTIÓN DE MEMORIA
Pedro de Miguel Anasagasti
ÍNDICE
© UPM 2015
● Servidor de memoria
● Regiones de memoria del proceso
● Fichero ejecutable
● Utilización de memoria en bruto
● Necesidades de memoria de un proceso
● Memoria virtual
● Protección de memoria
● Fichero proyectado en memoria
● Bibliotecas dinámicas
● Servicios UNIX de gestión de memoria
2
SERVIDOR DE MEMORIA
INTRODUCCIÓN
El gestor de memoria de un SO de propósito general
tiene dos facetas complementarias.
● Servidor de memoria para los procesos.
● Soporte a la memoria virtual.
Los procesos no entienden del soporte físico del mapa
de memoria, ya sea este soporte memoria principal o
memoria virtual, solamente entienden de direcciones
dentro del mapa de memoria del procesador.
Cuando el gestor de memoria asigna un marco de
página a un proceso, no significa que el proceso vea
más memoria. Simplemente establece un soporte físico
más rápido a una zona de la memoria del proceso.
0
Programa
n > m
Datos
Pila
Mapa de
memoria
2 -1n
0
Memoria
principal
2 -1m
Disco
© UPM 2015
Mapa de
memoria
o
s
e
c
o
r
p
l
e
d
a
i
r
o
m
e
m
e
d
n
e
g
a
m
I
1
i
n
ó
g
e
R
2
i
n
ó
g
e
R
3
i
n
ó
g
e
R
Página en memoria
Página en disco
4
REQUISITOS DE LA GESTIÓN DE MEMORIA
El S.O. multiplexa los recursos entre los 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.
Funciones del servidor de memoria
© UPM 2015
● Crear la imagen de los procesos a partir de los ficheros ejecutables.
• Ofreciendo a cada proceso los recursos de memoria necesarios, dando
soporte a las regiones necesarias.
• Proporcionando grandes espacios de memoria a los procesos.
● Proporcionar protección entre procesos. Aislar los procesos.
• Pero permitir que los procesos compartan memoria de forma controlada.
● Controlar los recursos:
• Direcciones de los mapas de memoria ocupadas y libres.
• Direcciones de memoria principal y de intercambio ocupadas y libres.
• Recuperar los recursos de memoria liberados por los procesos.
● Tratar los errores de acceso a memoria: detectados por el HW.
● Optimizar las prestaciones del sistema.
5
REGIONES DE MEMORIA DEL PROCESO
MEMORIA DEL PROCESO I
Las necesidades de memoria de un proceso se resuelven a dos
niveles:
● Por el SO: Visión global o macroscópica consistente en regiones.
● Por las bibliotecas del lenguaje usado para el programa: Visión de
detalle o microscópica consistente en objetos dentro de las
regiones.
Los lenguajes de programación suelen permitir la asignación dinámica
de objetos de memoria, lo que puede obligar a modificar las regiones.
El SO tiene un visión macroscópica de la memoria de un proceso,
consistente en las regiones, que son grandes trozos de memoria
contigua.
● El proceso tiene unas pocas regiones (p.e. código, datos y pila).
● En un sistema con memoria real (sin memoria virtual) todas las
regiones están en una misma zona contigua de memoria principal.
• Se deja un espacio de memoria principal para el crecimiento
dinámico de las regiones (desaprovechamiento de recursos).
● En memoria virtual las regiones están separadas, alineadas a
página y están formadas por un número entero de páginas.
• Al crear o crecer es cuando se requiere asignar soporte físico.
• Los espacios entre regiones no tienen soporte físico.
o
s
e
c
o
r
p
l
e
d
a
i
r
o
m
e
m
e
d
n
e
g
a
m
I
© UPM 2015
Mapa de
memoria
1
i
n
ó
g
e
R
2
i
n
ó
g
e
R
3
i
n
ó
g
e
R
Página en memoria
Página en disco
7
MEMORIA DEL PROCESO II
© UPM 2015
El programa tiene una visión microscópica de la memoria, consistente en
variables y estructuras de datos.
● Crear una variable dinámica que quepa en la correspondiente región no
implica al SO (lo resuelven las bibliotecas del lenguaje).
● Crear una variable dinámica que no quepa en la correspondiente región
implica activar al SO para que aumente dicha región, o cree una nueva. De
ello se encargan las bibliotecas del lenguaje, liberando al programador de
esta tarea.
● Las bibliotecas del lenguaje utilizado en el desarrollo del programa
gestionan el espacio disponible en la región de datos dinámicos.
• Solamente llaman al SO cuando tienen que variar el tamaño de la
región, o crear una nueva región.
8
IMAGEN DE MEMORIA
Imagen de memoria: conjunto de regiones (o segmentos) de
memoria asignados a un proceso.
Características de una región
● Es una zona contigua de direcciones de memoria definida
por:
• Una dirección de comienzo
• y un tamaño.
● Fuente: lugar donde se almacena el valor inicial.
● Puede ser compartida o privada.
● Niveles de protección típicos: RWX.
● Puede tener tamaño fijo o variable.
o
s
e
c
o
r
p
l
e
d
a
i
r
o
m
e
m
e
d
n
e
g
a
m
I
© UPM 2015
Mapa de
memoria
1
i
n
ó
g
e
R
2
i
n
ó
g
e
R
3
i
n
ó
g
e
R
Página en memoria
Página en disco
9
REGIONES DEL PROCESO
© UPM 2015
Las regiones más relevantes de la imagen de memoria del proceso son:
● Código (texto): Contiene el código máquina del programa.
● Datos, que se organiza en:
• Datos con valor inicial: Variables globales inicializadas.
• Datos sin valor inicial: Variables globales no inicializadas.
• Datos creados dinámicamente o heap.
● Pila: soporta los registros de activación de los procedimientos.
La estructuración en regiones depende del diseño del SO.
● Puede haber una sola región que englobe datos con valor inicial, datos sin
valor inicial y datos creados dinámicamente.
● O puede haber regiones separadas para distintos tipos de datos.
En un sistema con memoria virtual las regiones se alinean a página,
ocupando un número entero de páginas.
10
OPERACIONES SOBRE REGIONES
© UPM 2015
● Creación de región
• Al crear el mapa inicial o por una solicitud posterior
• En sistemas con memoria virtual no se asignan marcos de memoria
principal, se asigna swap o rellenar con 0
● Liberación de región
• Al terminar el proceso o por solicitud posterior
• Se recuperan los recursos (swap y marcos)
● Cambio de tamaño de región
• Del heap o de la pila
• En sistemas con memoria virtual no se asigna memoria principal
● Duplicado de región
• Operación requerida por el servicio FORK de POSIX
11
MAPA DE MEMORIA DE UN PROCESO HIPOTÉTICO
© UPM 2015
Mapa de memoria
Código
Datos con valor inicial
Datos sin valor inicial
Heap
Compartido
Privado
Privado
Privado
R–X
RW–
RW–
RW–
Tamaño
Fijo
Fijo
Fijo
Variable
Fuente
Ejecutable
Ejecutable
← 0
0
←
Fichero proyectado F
Com./Priv.
??–
Variable
Fichero
Zona de memoria compartida
Compartido
??–
Variable
←
0
Código biblioteca dinámica B
Datos con val. inic. bibl. B
Datos sin val. inic. bibl. B
Compartido
Privado
Privado
R–X
RW–
RW–
Fijo
Fijo
Fijo
Biblioteca
Biblioteca
←
0
Pila de thread 1
Privado
RW–
Variable
←
0
Pila del proceso
Privado
RW–
Variable
←
0 (pila inicial)
12
CARACTERÍSTICAS DE LAS REGIONES
© UPM 2015
Características típicas de las regiones creadas en el arranque del proceso
Región de código.
● Compartida, RX, tamaño fijo, fuente: el fichero ejecutable.
Región de datos con valor inicial.
● Privada, RW, tamaño fijo, fuente: el fichero ejecutable.
Región de datos sin valor inicial.
● Privada, RW, tamaño fijo, fuente: rellenar con 0.
Región de pila.
● Privada, RW, tamaño variable, fuente: rellenar con 0.
● Pila inicial (creada al arrancar el programa):
• Variables de entorno.
• Argumentos del programa.
(En la sección de protección se tratará el porqué de rellenar con 0).
13
Otras regiones de la imagen creadas durante ejecución
Región de Heap.
© UPM 2015
● Soporte de memoria dinámica gestionada por el lenguaje (p.e. malloc en C).
● Persistencia controlada por el programador.
● Privada, RW, tamaño variable, fuente: rellenar con 0.
Memoria compartida.
● Región asociada a la zona de memoria compartida.
● Compartida, tamaño variable, fuente: rellenar con 0.
● Protección especificada en proyección.
Fichero proyectado.
● Región asociada a cada fichero proyectado.
● Compartida o privada, tamaño variable, fuente: el fichero proyectado.
● 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 cada biblioteca dinámica.
14
CREACIÓN DE REGIONES
© UPM 2015
El gestor de memoria crea las regiones de memoria cuando:
● se crea un proceso (fork),
● se cambia el programa del proceso (exec),
● o se solicita una nueva región.
15
FICHERO EJECUTABLE
El fichero ejecutable contiene toda la información para crear el proceso.
Existen distintos formatos (p.e. Executable and Linkable Format (ELF)).
Estructura del ejecutable: Cabecera y conjunto de secciones.
Cabecera:
© UPM 2015
Cabecera
Secciones
0
1000
5000
8000
Fichero Ejecutable
Número mágico
Contador de programa inicial
....................
Tabla de secciones
Código
(constantes)
Datos con valor inicial
. . . . . . . . . . . . . . . .
Tabla de símbolos
Despl. Tam.
Código
4000
1000
Datos con v.i.
5000
1000
------
Datos sin v.i.
500
...................... ........ ........
T. Símbolos
1000
8000
17
SECCIONES DEL EJECUTABLE
© UPM 2015
Secciones principales
● Sección de código (texto): Contiene código del programa. Suele incluir
también las constantes del programa y cadenas de caracteres.
● Sección de datos con valor inicial: Variables globales inicializadas.
Otras secciones
● Tabla de símbolos para depuración y montaje dinámico.
● Lista de bibliotecas dinámicas usadas.
No existen secciones para
● Datos estáticos sin valor inicial: Variables globales no inicializadas.
• Aparece en tabla de secciones pero no se a
Comentarios de: Sistemas operativos - Gestión de memoria (0)
No hay comentarios