Вы находитесь на странице: 1из 37

1.

Gestin de Memoria

1. Objetivos del sistema de gestin de memoria


En sistemas con multiproceso, el S.O. debe repartir los
recursos entre los procesos existentes:
Reparto de procesador: Gestin de procesos
Reparto de memoria: Gestin de memoria
Objetivos del Gestor de Memoria
A. Espacios lgicos independientes
B. Proteccin entre procesos
C. Comparticin de Memoria (procesos ligeros)
D. Soporte a las regiones del proceso
E. Maximizar el grado de multiprogramacin
F. Mapas de memoria de un tamao
(normalmente grandes)

adecuado

1. Objetivos del sistema de gestin de memoria


A.Espacios lgicos independientes
A priori no se conoce la posicin de memoria que
ocupar un programa cuando vaya a ejecutarse
(estado de ocupacin de la memoria)
Cdigo en ejecutable genera referencias entre 0 y N
Ejemplo: Programa que copia un vector
F ic h e r o E je c u ta b le
0
4
....
96
100
104
108
11 2
11 6
120
124
128
132
136

C a b e c e ra
LO A D R 1, #1000
LO A D R 2, #2000
L O A D R 3 , /1 5 0 0
L O A D R 4 , [R 1 ]
S T O R E R 4 , [R 2 ]
IN C R 1
IN C R 2
D E C R 3
J N Z /1 2
.................

Vector destino a partir de


direccin 2000
Tamao del vector en direccin
1500
Vector origen a partir de direccin
1000

1. Objetivos del sistema de gestin de memoria


Se supone que el cdigo del SO reside en
las posiciones ms altas.
El programa se carga en la posicin 0 y
para que se ejecute ha de pasrsele el
control (es decir, que el contador del
programa apunte a esta posicin).
Problema:Como se ve, no coinciden las
direcciones usadas en el programa con la
posicin a partir de la cual se carga el
programa. Suponer por ejemplo, que el
programa se cargara a partir de la
posicin 10000....
Solucin: Reubicacin de direcciones
lgicas a fsicas

M e m o r ia
0
4
8
12
16
20
24
28
32
36
....

LO AD R 1, #1000
LO AD R 2, #2000
L O A D R 3 , /1 5 0 0
L O A D R 4 , [R 1 ]
S T O R E R 4 , [R 2 ]
IN C R 1
IN C R 2
D EC R 3
J N Z /1 2
.................

S is te m a O p e r a tiv o

1. Objetivos del sistema de gestin de memoria


Reubicacin: Traducir direcciones lgicas a direcciones fsicas
dependientes del hardware mediante una funcin de traduccin. La
reubicacin permite crear un espacio lgico independiente para
cada proceso y el S.O. debe poder acceder a los espacios lgicos
para realizar la traduccin.
Direcciones lgicas: direcciones de memoria generadas por el
programa
Direcciones fsicas: direcciones de memoria principal asignadas
Funcin de traduccin:
Traduccin(IdProc, dir_lgica) dir_fsica
Ejemplo:
El programa tiene asignada memoria a partir de la direccin 10000
Reubicacin: sumar 10000 a direcciones lgicas

Implementacin:
o Hardware
o Software

1. Objetivos del sistema de gestin de memoria


Reubicacin Hardware: la MMU (memory
management unit) se encarga de la traduccin
Proceso:
Programa se carga en memoria sin modificar
El S.O. almacena por cada proceso su funcinM ede
m o ria
traduccin
El S.O. especifica a la MMU qu funcin aplicar para cada
10000
LO AD R 1, #1000
P ro c e s a d o r
10004
proceso
LO AD R 2, #2000
PC
8
R . I n s tr u c c i n
L O A D R 3 , /1 5 0 0

H W tr a d u c c i n
10000

1500

11 5 0 0

10008
10012
10016
10020
10024
10028
10032
10036
..........

L O A D R 3 , /1 5 0 0
L O A D R 4 , [R 1 ]
S T O R E R 4 , [R 2 ]
IN C R 1
IN C R 2
D EC R 3
J N Z /1 2
.................

1. Objetivos del sistema de gestin de memoria


Reubicacin software: traduccin
de direcciones durante carga del
programa. Esta solucin se usa en
sistemas sin el hardware especfico
de traduccin (MMU).
Proceso:
El programa se carga con las
direcciones ya traducidas
Se genera un cdigo diferente del
programa ejecutable
Desventajas:
No asegura proteccin (no se
verifica cada direccin a usar, sino
que
se
usan
las
direcciones
generadas tras el proceso de carga)
No permite mover programa en
tiempo de ejecucin (suponer que
es necesaria la reubicacin del
espacio asignado al proceso, por
necesitar ms espacio.....)

M e m o r ia

10000
10004
10008
10012
10016
10020
10024
10028
10032
10036
..........

L O A D R 1 , # 110 0 0
LO AD R 2, #12000
L O A D R 3 , /1 1 5 0 0
L O A D R 4 , [R 1 ]
S T O R E R 4 , [R 2 ]
IN C R 1
IN C R 2
D EC R 3
J N Z /1 0 0 1 2
.................

1. Objetivos del sistema de gestin de memoria

B.Proteccin entre procesos

La proteccin es diferente segn sea un sistema Mono o


Multi programado:
Sistema MonoProgramado: La intrusin se dar solamente
entre el programa y el S.O.
Sistema MultiProgramado: La intrusin puede venir tanto de
otros procesos como de otros usuarios adems del riesgo
del sistema Monoprogramado.
Acciones
La traduccin de direcciones debe crear espacios disjuntos
Es necesario validar todas las direcciones que genera el
programa

La deteccin de alguna intrusin debe realizarla el hardware


del procesador (MMU), ya que hay que realizarla en tiempo
de ejecucin
El tratamiento de alguna intrusin lo hace el SO

En sistemas con mapa de E/S y memoria comn:


Traduccin permite impedir que los procesos accedan
directamente a dispositivos de E/S

1. Objetivos del sistema de gestin de memoria


C.Comparticin de Memoria (procesos ligeros)

La comparticin de memoria entre procesos da soporte a


la creacin de procesos ligeros y est controlado por el
S.O.
Acciones:
Las direcciones lgicas de 2 o ms procesos se
correspondern con una misma direccin fsica.
La memoria asignada a cada proceso no puede ser ya
M a p a p ro c e s o 1
contigua.
M e m o r ia
Ventajas:
z o n a p r iv a d a 1
Procesos

ejecutando
mismo en estos casos se va haciendo
La funcin
de traduccin
z o n a p r iv . 1 ( P 1 )
z o n a c o m p a r t id a
programa
comparten su
ms compleja.
cdigo
Mecanismo de comunicacin
entre procesos muy rpido

z o n a p r iv a d a 2

z o n a p r iv . 1 ( P 2 )

z o n a c o m p a r t id a

M a p a p ro c e s o 2
z o n a p r iv a d a 1

z o n a p r iv . 2 ( P 2 )
z o n a p r iv . 2 ( P 1 )

z o n a c o m p a r t id a
z o n a p r iv a d a 2

1. Objetivos del sistema de gestin de memoria


Problemas:
Requiere asignacin no contigua
Si
la
posicin
de
zona
compartida contiene referencia
a otra posicin de la zona
compartida, no se puede saber
a qu direccin se refiere puesto
que cada proceso ligero ver
esa direccin de forma diferente

Ejemplo: Si el cdigo, que es


comn, contiene una bifurcacin,
no se podr determinar a qu
direccin
se
debe
saltar,
dependiendo del proceso que
est ejecutando el cdigo

M a p a p ro c e s o 1

M e m o r ia

2000
z o n a c o m p a r tid a
10000

z o n a c o m p a r tid a
110 0 21 0 0 ?

10100

M a p a p ro c e s o 2
1000
z o n a c o m p a r tid a

lgico

fsico

1. Objetivos del sistema de gestin de memoria

D. Soporte de las regiones del proceso

El mapa de memoria de un proceso no es homogneo, ya


que las regiones contienen diferentes tipos de informacin
(cdigo, datos y pila normalmente) y poseen diferentes
caractersticas
Acciones:
Hacer mapa de memoria dinmico:

Regiones cambian de tamao (p.ej. pila)


Se crean y destruyen regiones (el sistema de memoria debe
controlar qu regiones estn presentes, as como su tamao)
Existen zonas sin asignar (huecos, con carcter dinmico)

Detectar accesos no permitidos a una regin ( de slo


lectura por ej)
Detectar accesos a huecos
Evitar reservar espacio para huecos
Guardar y gestionar una tabla de regiones para cada
proceso

1. Objetivos del sistema de gestin de memoria


E. Maximizar el grado de multiprogramacin
El reparto de memoria debe ser tal que
maximize
el
grado
de
multiprogramacin
para
evitar
el
desperdicio de memoria
Memoria desperdiciada

Restos
(huecos)
(fragmentacin)
Tablas requeridas por
memoria

M e m o r ia

inutilizables
gestor

de

Acciones

Aprovechamiento de memoria
ptimo es irrealizable!!!!
Tablas de gestin demasiado
grandes

Crear bloques de asignacin de menor


tamao
Gestionar las tablas de asignacin ms
eficientemente
Se opta por la paginacin
Uso de memoria virtual para aumentar
grado de multiprogramacin

D ir e c c i n 5 0 d e l p r o c e s o 4

D ir e c c i n 1 0 d e l p r o c e s o 6

D ir e c c i n 9 5 d e l p r o c e s o 7

D ir e c c i n 5 6 d e l p r o c e s o 8

D ir e c c i n 0 d e l p r o c e s o 1 2

D ir e c c i n 5 d e l p r o c e s o 2 0

D ir e c c i n 0 d e l p r o c e s o 1
.........................................
.........................................

N -1

D ir e c c i n 8 8 d e l p r o c e s o 9

D ir e c c i n 5 1 d e l p r o c e s o 4

1. Objetivos del sistema de gestin de memoria

F. Mapas de memoria de un tamao adecuado (normalmente


grandes)

Los procesos necesitan cada vez mapas ms grandes:


aplicaciones ms novedosas, ms recursos grficos, ms carga
computacional....
Acciones

Utilizar Memoria Virtual


Hacer que el usuario disponga virtualmente de una enorme
cantidad de memoria fsica

Otras opciones (antigua)

Overlays

Programa dividido en fases que se ejecutan sucesivamente


En cada momento slo hay una fase residente en memoria
Cada fase realiza su labor y carga la siguiente
No es transparente: Toda la labor realizada por programador

2. Modelo de memoria de un
proceso

Modelo de memoria de un proceso


2.1. Introduccin
El S.O. es el responsable de la gestin de memoria de
cualquier proceso.
El mapa inicial de memoria de un proceso est relacionado
con el archivo ejecutable que generar el proceso
Cmo generar el mapa de memoria inicial a partir del
ejecutable?
Cmo se organiza el mapa de memoria?
Cules son sus caractersticas bsicas?
Qu operaciones se pueden realizar en el mapa de
memoria?

Modelo de memoria de un proceso


2.2. Fases en la generacin de un ejecutable
Aplicacin: conjunto de mdulos en lenguaje de alto nivel
Procesado en dos fases: Compilacin y Montaje

Compilacin:

Se asignan direcciones a los


smbolos definidos
Resuelve referencias a los
smbolos de cada mdulo
Genera mdulo objeto

Montaje (o enlace):

Resuelve referencias entre


mdulos objeto
Resuelve referencias a smbolos
de bibliotecas
Genera resultado (archivo
ejecutable), que incluye las
bibliotecas usadas

M d u lo
fu e n te A

M d u lo
fu e n te B
C o m p ila d o r

M d u lo
o b je t o A

M d u lo
o b je t o B
M o n ta d o r
F ic h e r o
e je c u t a b le

B ib lio te c a s

Modelo de memoria de un proceso


Biblioteca: coleccin de mdulos objeto relacionados. Algunas bibliotecas
son proporcionadas a los usuarios (bibliotecas) del sistema, mientras
que otras habrn sido creadas por los usuarios (propias) (por ejemplo,
bibliotecas de entrada salida, incluyendo las funciones como printf,
getchar, etc, o las llamadas al sistema de POSIX)

Tipos:
Estticas: el montaje enlaza los mdulos
objeto del programa y de las
bibliotecas, dando como resultado un
ejecutable autocontenido.
Desventajas:
Ejecutables grandes
Cdigo de funcin de biblioteca repetido
Mltiples copias en memoria del cdigo de
funcin de biblioteca
La actualizacin de biblioteca implicara
volver a montar

M a in
F u n c i n A
F u n c i n B
F u n c i n d e b ib lio t e c a F 1
F u n c i n d e b ib lio te c a F 2

C d ig o

Modelo de memoria de un proceso


Dinmicas: la carga y montaje se hace en tiempo de
ejecucin. El ejecutable contiene nicamente el nombre
de la biblioteca y la rutina de carga y montaje en tiempo
de ejecucin
Proceso de carga:
La rutina de carga y montaje incorpora la biblioteca
correspondiente.
Se ajustan las instrucciones que realizan las referencias a dicho
smbolo, de forma que las prximas referencias accedan al smbolo
de biblioteca correspondiente, sin que sea necesario activar de
nuevo el proceso de montaje de la biblioteca.
Para evitar modificar el cdigo del programa, en este proceso, se
suelen utilizar referencias indirectas mediante una tabla que
recoge todos los smbolos correspondientes a bibliotecas
dinmicas. Hay que tener en cuenta que en algunos S.O. los
segmentos de cdigo ejecutables no son modificables

Modelo de memoria de un proceso

Ventajas:

Menor tamao ejecutables


Cdigo de rutinas de biblioteca slo en archivo de biblioteca
Procesos pueden compartir cdigo de biblioteca
Actualizacin automtica de bibliotecas: uso de versiones.
Suele haber en un sistemas varias versiones de la misma
biblioteca. Cuando un programa hace referencia a uno de
sus smbolos, se busca la versin adecuada

Desventajas:
Mayor tiempo de ejecucin debido a carga y montaje. Se
trata de un retraso tolerable, ya que se compensan el resto
de las ventajas
Ejecutable no autocontenido

Modelo de memoria de un proceso

Forma de uso :
1. Enlace dinmico implcito: Se especifica en tiempo de
montaje qu biblioteca usar, pero se pospone su carga
y montaje a tiempo de ejecucin.
2. Uso explcito:

Requerido por aplicaciones que determinan en tiempo de


ejecucin qu bibliotecas deben usar
No se especifica la biblioteca en mandato de montaje
Es el programa quien solicita la carga de bibliotecas
mediante servicio del sistema (dlopen en UNIX y
LoadLibrary en Win32)
El acceso a los smbolos de la biblioteca ya no es
transparente, sino que se ha de hacer desde el propio
programa, mediante los servicios apropiados del sistema
(dlsym en UNIX y GetProcAddress en Win32)

Modelo de memoria de un proceso

El uso de bibliotecas dinmicas es transparente. Es decir,


los mandatos de compilacin y montaje son idnticos que en
el caso de las estticas
Si la biblioteca dinmica contiene referencias internas (a
smbolos definidos en la misma) existe el problema, ya
comentado, de la zona compartida con autoreferencias
Tres posibles soluciones:
1. A cada biblioteca dinmica se le asigna un rango de direcciones
fijo

Inconveniente: Poco flexible

2. En montaje en tiempo de ejecucin se reajustan


autoreferencias

Inconveniente: Impide compartir cdigo de biblioteca

3. Crear biblioteca con cdigo independiente de posicin (PIC)

Se genera cdigo con direccionamiento relativo a registro


Inconveniente (tolerable): direccionamiento relativo menos eficiente

Modelo de memoria de un proceso


Ficheros ejecutables
Distintos fabricantes usan diferentes formatos
Ejemplo: En Linux Executable and Linkable Format (ELF)

Estructura: Cabecera y conjunto de secciones


Cabecera: informacin de control que permite interpretar el
contenido del ejecutable. Suele incluir la siguiente informacin:
Nmero mgico que identifica a ejecutable. Por ejemplo, en
formato ELF el primer byte debe contener el valor hexadecimal
7f, los tres siguientes los caracteres E, L y F
Punto de entrada del programa: es decir, el valor que
inicialmente contendr el contador del programa
Tabla de secciones. Para cada una de ellas se especifica: tipo,
direccin de comienzo en el archivo y tamao.
Ejemplo:

Tabla de smbolos para depuracin


Lista de bibliotecas dinmicas usadas

Modelo de memoria de un proceso

C a b e c e ra

F ic h e r o E je c u ta b le
N m e r o m g ic o
C o n t a d o r d e p r o g r a m a in ic ia l
....................
T a b la d e s e c c io n e s

1000
C d ig o
5000

S e c c io n e s

D a to s c o n v a lo r in ic ia l

. . . . . . . . . . . . . . . .
8000

T a b la d e s m b o lo s

D e s p l.
C d ig o
1000
D a t o s c o n v .i. 5 0 0 0
D a t o s s in v .i. - - -- -..... ... .......... .... ........

Tam .
4000
1000
500
........

T . S m b o lo s

1000

8000

Modelo de memoria de un proceso


Las secciones ms relevantes se volcarn en el mapa de
memoria del proceso: cdigo, datos con valor inicial y datos
sin valor inicial
Cdigo (texto): contiene el cdigo del programa
Datos con valor inicial: variables globales inicializadas
Datos sin valor inicial: variables globales no inicializadas:
aunque aparece en la tabla de secciones no se almacena en el
ejecutable, ya que su contenido no es relevante

No hay seccin vinculada a variables locales, ya que estas


tienen carcter dinmico (se crearn en la pila del proceso,
cuando los procedimientos en que aparecen sean invocados)

Modelo de memoria de un proceso


Variables globales

Estticas
Se crean al iniciarse programa
Existen durante toda la ejecucin del proceso
Direccin fija en memoria y en ejecutable

Variables locales y parmetros

Dinmicas
Se crean al invocar la funcin
Se destruyen al retornar
La direccin se calcula en tiempo de ejecucin
Recursividad: varias instancias de una variable

Modelo de memoria de un proceso


Ejemplo:

int x=8;
int y;

/* Variable global con valor inicial */


/* Variable global sin valor inicial */

f(int t){
int z;
.......
}
main(){
.......
}

/* Parmetro */
/* Variable local */

Modelo de memoria de un proceso


2.3. Mapa de memoria de un proceso
El mapa de memoria o imagen del proceso estar compuesto
por un conjunto de regiones o segmentos; cada una de ellas
almacena cierto tipo de informacin
Cada regin:
Tiene asociada una informacin (un objeto de memoria)
Consiste en una zona contigua tratada como unidad al proteger o
compartir
Se caracteriza por:
Direccin de comienzo y tamao inicial
Soporte: donde se almacena su contenido inicial (soporte en archivo
y sin soporte, es decir, objeto sin contenido inicial)
Proteccin: RWX
Uso compartido o privado
Tamao fijo o variable

Modelo de memoria de un proceso


La ejecucin de un programa crea un mapa de
memoria a partir del archivo ejecutable. Cada seccin del
ejecutable da lugar a una regin del mapa inicial.
Cdigo (texto): compartida, lectura y ejecucin, tamao fijo,
soporte en archivo ejecutable
Datos con valor inicial: privada, lectura y escritura, tamao
fijo, soporte en archivo ejecutable
Datos sin valor inicial: privada, lectura y escritura, tamao fijo,
sin soporte (se rellena a ceros en algunos lenguajes)
Pila: privada, lectura y escritura, tamao variable, sin soporte.
Crece hacia direcciones ms bajas. La pila inicial slo contiene
los argumentos de llamada al programa

Modelo de memoria de un proceso

Fichero ejecutable
Nmero mgico
Contador de programa
inicial

Cabecera

1000

Secciones

Tabla de secciones
Cdigo

5000
8000

Mapa de memoria
0
Cdigo

4000
Datos con valor
inicial

5000
5500

Datos sin valor


inicial

Datos con valor


inicial

Tabla de smbolos

Argumentos del programa

Pila

Modelo de memoria de un proceso


Durante ejecucin de proceso se crean nuevas regiones. Es decir, el mapa de
memoria tiene un carcter dinmico. Las nuevas regiones creadas en tiempo de
ejecucin pueden ser:
Regin de Heap
Soporte de memoria dinmica (malloc en C)
Privada, lectura y escritura, tamao variable, sin soporte (inicializada a cero)
Crece hacia direcciones ms altas
Archivo proyectado
Regin asociada al archivo proyectado
Tamao variable, soporte en archivo
Proteccin y carcter compartido o privado especificado en la proyeccin
Memoria compartida
Regin asociada a la zona de memoria compartida
Compartida, tamao variable, sin soporte (inicializada a 0)
Proteccin especificada en proyeccin
Pilas de threads
Cada pila de thread corresponde con una regin.
Estas regiones constan de las mismas caractersticas que las asociadas a la
pila del proceso

Modelo de memoria de un proceso


Regin

Soporte

Proteccin Comp/Priv Tamao

Cdigo

Fichero

RX

Compartida Fijo

RW

Privada

Fijo

Dat. sin v.i.

Sin soporte RW

Privada

Fijo

Pilas

Sin soporte RW

Privada

Variable

Heap

Sin soporte RW

Privada

Variable

F. Proyect.

Fichero

M. Comp.

Sin soporte por usuario Compartida Variable

Dat. con v.i. Fichero

por usuario Comp./Priv. Variable

Modelo de memoria de un proceso

Modelo de memoria de un proceso


2.4. Operaciones sobre regiones
Para estudiar la evolucin del mapa de memoria a lo largo de la
ejecucin de un proceso, se pueden distinguir las siguientes
operaciones:
Crear regin: Implcitamente al crear mapa inicial (por parte del SO)
o por solicitud del programa en tiempo de ejecucin de ejecucin
(por ejemplo, al cargar una biblioteca dinmica)
Eliminar regin: Implcitamente al terminar el proceso o por solicitud
del programa en tiempo de ejecucin (por ejemplo, al desproyectar
un archivo)
Cambiar tamao de la regin: Implcitamente para la pila o por
solicitud del programa para el heap (cuando se hace malloc)
Duplicar regin: Operacin requerida por el servicio fork de POSIX

4. Archivos proyectados en
memoria

Archivos proyectados en memoria


En qu consiste?
Recordemos que en un sistema con MV se hacen
corresponder las entradas de la TP con bloques de un archivo
ejecutable.
La tcnica de la proyeccin permite usar esta misma idea,
pero con cualquier archivo.
El S.O. permite que un programa solicite la correspondencia
de una zona de su mapa de memoria con los bloques de un
archivo cualquiera (ya sea completo o en parte).
En la solicitud el programa indicar el tipo de acceso que
desea para las pginas asociadas al archivo.

Servicio:
La generalizacin de la tcnica de memoria virtual permite
ofrecer a los usuarios una forma alternativa de acceder a
los archivos.

Archivos proyectados en memoria


Proceso: Se rellenan las entradas de la TP correspondientes con :
Pgina no residente,
CA (cargar de archivo),
Privada/compartida y
Proteccin (indicada en la llamada).
De esta forma,
cuando el
programa accede
a una posicin
de memoria
asociada al
archivo proyectado,
T a b la d e p g in a s
est accediendo
...........................
realmente
1 p g .
al archivo
R W A B lo q u e 0 ( a r c h . )
A r c h iv o
lt im a p g .
RW
A r c h iv o

...........................
A B lo q u e N ( a r c h .)

...........................

M a p a d e m e m o r ia
C d ig o

D a t o s c o n v a lo r in ic ia l
D a t o s s i n v a l o r in ic ia l

A r c h iv o
B lo q u e 0
B lo q u e 1

10240
A r c h iv o P r o y e c t a d o

B lo q u e 2
.............

P ila

B lo q u e N

Archivos proyectados en memoria


Ventajas: Se trata por tanto de una forma alternativa de acceso
a archivos, frente a las llamadas read/write. De esta forma se
producen:
Menos llamadas al sistema lo que se traduce en una notable
mejora de los tiempos de acceso.
Se evitan copias intermedias de la informacin ya que el S.O.
transfiere directamente la informacin entre la regin de memoria
y el archivo.
Se facilita la programacin, ya que una vez proyectado se
accede al archivo como si fuera una estructura de datos en
memoria

Ejemplo: Tpicamente las bibliotecas dinmicas se cargan


usando este tipo de proyeccin: la zona de cdigo se proyecta
como compartida y la zona de datos con valor inicial se
proyecta como privada

Вам также может понравиться