Está en la página 1de 102

Captulo 4

Gestin de memoria

Fundamentos de Computadores II
Sistemas Operativos

ndice
1. Objetivos del sistema de gestin de memoria
2. Modelo de memoria de un proceso
3. Esquemas de memoria basados en asignacin
contigua
4. Memoria virtual
5. Archivos proyectados en memoria
6. Servicios de gestin de memoria

Fundamentos de Computadores II
Sistemas Operativos

1. Objetivos del sistema de


gestin de memoria

Fundamentos de Computadores II
Sistemas Operativos

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)

Fundamentos de Computadores II
Sistemas Operativos

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
.................

Fundamentos de Computadores II
Sistemas Operativos

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

Fundamentos de Computadores II
Sistemas Operativos

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

Fundamentos de Computadores II
Sistemas Operativos

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 funcin de traduccin
El S.O. especifica a la MMU qu funcin aplicar para cada proceso
M e m o ria

P ro c e s a d o r
PC
8
R . I n s tr u c c i n
L O A D R 3 , /1 5 0 0

Fundamentos de Computadores II
Sistemas Operativos

H W tr a d u c c i n
10000
1500

11 5 0 0

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

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
.................

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.....)

Fundamentos de Computadores II
Sistemas Operativos

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

Fundamentos de Computadores II
Sistemas Operativos

10

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 contigua.
La funcin de traduccin en estos casos se va haciendo ms
M a p a p ro c e s o 1
compleja.
Ventajas:
Procesos ejecutando mismo
programa comparten su
cdigo
Mecanismo de comunicacin
entre procesos muy rpido

M e m o r ia

z o n a p r iv a d a 1
z o n a c o m p a r tid a
z o n a p r iv a d a 2

z o n a p r iv . 1 ( P 1 )
z o n a p r iv . 1 ( P 2 )
z o n a c o m p a r tid 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

Fundamentos de Computadores II
Sistemas Operativos

11

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

Fundamentos de Computadores II
Sistemas Operativos

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 t id a
10000

z o n a c o m p a r t id 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 t id a

lgico

fsico
12

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

Fundamentos de Computadores II
Sistemas Operativos

13

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)
inutilizables
(fragmentacin)
Tablas requeridas por gestor de
memoria
Acciones
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
Fundamentos de Computadores II
Sistemas Operativos

Aprovechamiento de memoria
ptimo es irrealizable!!!!
Tablas de gestin demasiado
grandes
M e m o r ia
0

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
14

1. Objetivos del sistema de gestin de memoria


F. Mapas de memoria de
(normalmente grandes)

un

tamao

adecuado

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

Fundamentos de Computadores II
Sistemas Operativos

15

2. Modelo de memoria de un
proceso
2.1.
2.2.
2.3.
2.4.

Introduccin
Fases en la generacin de un ejecutable
Mapa de memoria de un proceso
Operaciones sobre regiones

Fundamentos de Computadores II
Sistemas Operativos

16

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?
Fundamentos de Computadores II
Sistemas Operativos

17

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

Fundamentos de Computadores II
Sistemas Operativos

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

B ib lio te c a s

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

18

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

Fundamentos de Computadores II
Sistemas Operativos

M a in
F u n c i n A
C d ig o

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

19

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

Fundamentos de Computadores II
Sistemas Operativos

20

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

Fundamentos de Computadores II
Sistemas Operativos

21

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)

Fundamentos de Computadores II
Sistemas Operativos

22

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

Fundamentos de Computadores II
Sistemas Operativos

23

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

Fundamentos de Computadores II
Sistemas Operativos

24

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

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

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

Fundamentos de Computadores II
Sistemas Operativos

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

25

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)

Fundamentos de Computadores II
Sistemas Operativos

26

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

Fundamentos de Computadores II
Sistemas Operativos

27

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 */

Fundamentos de Computadores II
Sistemas Operativos

28

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

Fundamentos de Computadores II
Sistemas Operativos

29

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

Fundamentos de Computadores II
Sistemas Operativos

30

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

Pila

Argumentos del programa


Fundamentos de Computadores II
Sistemas Operativos

31

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

Fundamentos de Computadores II
Sistemas Operativos

32

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

Fundamentos de Computadores II
Sistemas Operativos

por usuario Comp./Priv. Variable

33

Modelo de memoria de un proceso

Fundamentos de Computadores II
Sistemas Operativos

34

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
Fundamentos de Computadores II
Sistemas Operativos

35

3. Esquemas de memoria basados


en asignacin contigua
3.1.
3.2.
3.3.
3.4.

Esquema hardware
Gestin del SO
Poltica de asignacin de espacio
Valoracin del esquema contiguo

Fundamentos de Computadores II
Sistemas Operativos

36

Esq. de mem. basados en asignacin contigua


3.1. Esquema Hardware
El mapa de proceso se ubica en una zona contigua de la memoria
principal.
Proceso:
El S.O. busca un hueco en memoria de tamao suficiente para
alojar su mapa de memoria del proceso que comienza.
El S.O. reserva la parte del hueco necesaria y crea en ella el
mapa inicial del proceso
Se establece la funcin de traduccin, de forma que las
direcciones del programa se correspondan con las direcciones
existentes en el hueco asignado.
Hardware requerido:
Registros valla (registro base y registro lmite). Estos dos registros
slo son accesibles en modo privilegiado.
Los registros valla estn desocupados cuando el S.O. toma el control
para acceder a todo el mapa de memoria.
Fundamentos de Computadores II
Sistemas Operativos

37

Esq. de mem. basados en asignacin contigua

Registro lmite: Se comprobar que las direcciones usadas por el


proceso no excedan el valor almacenado en l.
Registro base: Una vez realizada la comprobacin anterior, se suma a
cada direccin el valor contenido en este registro, de forma que se
obtiene la direccin fsica pertinente.
0

Memoria
Proceso 4

Procesador
PC

10000

Hard. traduccin (MMU)

R. lmite

4000
Registro instruccin
LOAD R3, /1500

21000
NO

>
SI

Excepcin

Fundamentos de Computadores II
Sistemas Operativos

R. base

10200
Proceso 7
15036
Proceso 3
20500
21000
22500

Proceso 2

25000
N
38

Esq. de mem. basados en asignacin contigua


3.2. Gestin del SO
El S.O. almacena en el BCP cules son los valores de los registros
valla.
Dedica una estructura para conocer en todo momento el estado de la
memoria, identificando qu huecos estn libres. Normalmente se usa
una lista en la que se almacena la direccin inicial y el tamao de cada
hueco.
La gestin de esta lista obliga a comprobar, al desocupar espacio, si el
nuevo espacio libre puede unirse a huecos vecinos.
Problema:Segn se van ejecutando procesos van quedando fragmentos de
memoria libres, que debido a su tamao no podrn ser usados en
asignaciones de espacio a memoria. Este problema se denomina
fragmentacin externa y conlleva una mala gestin de memoria.
Solucin tradicional: Compactar los huecos de forma que queden
contiguos. Para ello es necesario reajustar los registros valla de los
procesos. INEFICIENTE.
Fundamentos de Computadores II
Sistemas Operativos

39

Esq. de mem. basados en asignacin contigua


3.3. Poltica de asignacin de espacio
El S.O. debe considerar qu espacio, de los huecos libres, se usar
intentando encontrar un equilibrio entre buen aprovechamiento de
espacio y tiempo de respuesta corto, es decir, se aplica un algoritmo
de decisin que debe ser eficiente.
Este problema es un clsico: Cmo asignar espacio para su
aprovechamiento ptimo?. Existen tres posibles enfoques:
a) Mejor ajuste (best-fit). Se elige la zona libre ms pequea donde
quepa el mapa del proceso.

Problema: Conlleva crear nuevos huecos de tamao pequeo.


Adems, elegir el hueco ms pequeo obliga a mantener
ordenados por tamao los huecos disponibles. No es eficiente
b) Peor ajuste. Se busca el hueco ms grande, intentando evitar la
generacin de huecos pequeos. Sigue precisando mantener el
control de los tamaos
c) El primero que ajuste (first-fit). Suele ser la mejor poltica. Muy
eficiente, ya que basta con encontrar una zona libre de tamao
suficiente, y ofrece un aprovechamiento aceptable
Fundamentos de Computadores II
Sistemas Operativos

40

Esq. de mem. basados en asignacin contigua


3.4. Valoracin del esquema contiguo

Valoracion:
Espacios independientes para procesos: mediante registros valla
Proteccin: mediante registros valla
Compartir memoria: no es posible
Soporte de regiones:
No existe (no hay mecanismo de permisos sobre el espacio
asignado a cada proceso)
Se reserva espacio para huecos, ya que el espacio asignado al
proceso en primera instancia debe servir para todo su tiempo de
vida
Maximizar rendimiento:
Mal aprovechamiento de memoria por fragmentacin externa
Mapas de MV de tamao adecuado:
No permite memoria virtual

Fundamentos de Computadores II
Sistemas Operativos

41

4. Intercambio

Fundamentos de Computadores II
Sistemas Operativos

42

Intercambio
Qu hacer si no caben todos los programas en memoria principal?
Usar disco (dispositivo swap) como respaldo de la memoria principal. Si
no caben en memoria todos los procesos activos, se elige un proceso
residente y se copia en disco su imagen de memoria
Expulsar (swap-out) a los procesos bloqueados. El proceso de
expulsin no implica copiar toda la imagen del proceso (por ejemplo, no
es preciso ocupar los huecos ni el cdigo, al poder recuperarse
fcilmente del ejecutable). Un proceso expulsado vuelve a cargarse
(swap-in) cuando est listo para ejecutar y haya espacio en memoria.
Polticas de asignacin de espacio en swap:
Preasignacin: al crear el proceso se reserva espacio de swap.
NO Preasignacin: slo se reserva espacio de swap al expulsar.
(Semejanza con estado suspendido?)

Fundamentos de Computadores II
Sistemas Operativos

43

5. Memoria virtual
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
5.7.

Introduccin
Paginacin
Segmentacin
Segmentacin paginada
Paginacin por demanda
Polticas de reemplazo
Poltica de asignacin de marcos de
pgina
5.8. Hiperpaginacin
5.9. Gestin del espacio de swap
5.10. Operaciones sobre las regiones de un
proceso
Fundamentos de Computadores II
Sistemas Operativos

44

Memoria virtual
5.1. Introduccin
La tcnica de la MV se usa prcticamente en todos los SSOO modernos.
Esta tcnica se basa en transferir informacin entre memoria
principal y memoria secundaria (por lo que involucra varios niveles
de la jerarqua de memoria)
Suele implementarse en un esquema de paginacin (es decir, la unidad
de informacin intercambiada entre los diferentes niveles de la jerarqua
de memoria es la pgina)
Elemento Clave: Proximidad referencial habitual de los procesos. Esta
propiedad permite que un proceso puede funcionar disponiendo en
memoria de una parte de su imagen de memoria (conjunto residente).
Objetivo final: conseguir que la informacin necesaria para un proceso
(conjunto de trabajo) vaya ocupando la memoria principal segn se va
necesitando (es decir, conjunto de trabajo === conjunto
residente)
Fundamentos de Computadores II
Sistemas Operativos

45

Memoria virtual
Ventajas:
a) Aumento del grado de multiprogramacin. Por tanto, aumento
en el rendimiento del sistema
b) Posibilidad de ejecutar programas ms grandes que la MV
disponible
El uso de la MV no implica que se acelere la ejecucin del programa
(ms bien al contrario, debido a la sobrecarga asociada a los
movimientos de informacin entre niveles de la jerarqua). Este
mecanismo no es apropiado para sistemas de tiempo real.

Fundamentos de Computadores II
Sistemas Operativos

46

Memoria virtual
5.2. Paginacin

Pgina: Zona contigua de memoria de determinado tamao. (Por


motivos de eficiencia se suele trabajar siempre con tamaos potencia
de 2. Ej:4 KB.)
Organizacin:
El mapa de memoria del proceso se considera dividido en pginas.
La memoria principal se considera dividida en marcos de pgina
(tamao de marco = tamao de pgina).
Los marcos contendrn pginas de los procesos en ejecucin
La tabla de pginas (TP) relaciona cada pgina con el marco que
la contiene. El hardware de traduccin (MMU) usa la tabla de
pginas para traducir direcciones lgicas a fsicas
Tpicamente la MMU usa dos tablas de pginas (TP):
a) TP del usuario: Por ejemplo, direcciones lgicas que empiezan
por 0
b) TP del sistema: Por ejemplo, direcciones lgicas que empiezan
por 1. Estas slo se podrn usar en modo sistema

Fundamentos de Computadores II
Sistemas Operativos

47

Memoria virtual

Cada entrada de la tabla de pginas contendr, adems del nmero


de marco asociado con la pgina:
a) Informacin de proteccin: tipo de acceso permitido RWX
b) Bit de pgina vlida/invlida: para indicar si dicha entrada
contiene una traduccin asociada, es decir, si se corresponde
realmente con un marco
c) Bit de pgina accedida (Ref): activado cuando se accede
d) Bit de pgina modificada (Mod): activado cuando se escribe
e) Bit de desactivacin de cach: se usa cuando la entrada
corresponde con direcciones de E/S
Tamao de pgina: La eleccin de tamao de pgina est
condicionada por diversos factores, entre los que hay que conseguir
equilibrio:
Potencia de 2 y mltiplo del tamao del bloque de disco
mejor pequeo por:
Menor fragmentacin
Se ajusta mejor al conjunto de trabajo
mejor grande por:
Tablas ms pequeas
Mejor rendimiento de dispositivos de E/S
Compromiso (entre 2K y 16K)

Fundamentos de Computadores II
Sistemas Operativos

48

Memoria virtual

Direccin:Una direccin lgica se obtiene a partir de:


n pgina + desplazamiento
Problema:
La paginacin no ofrece una solucin ptima. Lo ideal sera que
cada palabra del mapa de memoria de un proceso pudiera ubicarse
en cualquier direccin. Esta solucin es inviable debido al coste de
traduccin
Al no ser as, con la paginacin se asigna a cada proceso un
nmero entero de marcos de pgina, aunque el espacio de su
mapa de memoria no sea un mltiplo entero del tamao de pgina.
Por tanto, se irn generando huecos (memoria no aprovechada, en
la ltima de las pginas que no se llena de forma completa). Este
proceso se denomina fragmentacin interna (implica que, en
trmino medio, cada proceso desperdicia la mitad de una pgina)

Fundamentos de Computadores II
Sistemas Operativos

49

Memoria virtual
Direccin lgica

Pgina

0
1
2
3

Byte

Marcos de pgina

Registro base de la TP
(RIED)

MP: direcciones fsicas


Fundamentos de Computadores II
Sistemas Operativos

50

Memoria virtual

T. Pginas Proceso 1
Pgina 0

Marco 2

Pgina 1

Marco N
..............

Pgina M

Marco 3

T. Pginas Proceso 2
Pgina 0

Marco 4

Pgina 1

Marco 0
..............

Pgina P

Memoria
Pg. 1 Pr. 2

Marco 0

Pg. P Pr. 2

Marco 1

Pg. 0 Pr. 1

Marco 2

Pg. M Pr. 1

Marco 3

Pg. 0 Pr. 2

Marco 4

............
Pg. 1 Pr. 1

Marco N

Marco 1

Problema: Fragmentacin, la memoria asignada es mayor que la


memoria requerida y por lo tanto, se desperdicia cierta cantidad de
espacio

Fundamentos de Computadores II
Sistemas Operativos

51

Memoria virtual

Otras cuestiones:
En este esquema, el S.O. mantiene una tabla de pginas por
cada proceso. Cuando se produce un cambio de contexto se indica
a la MMU qu tabla de pginas usar
El S.O. mantiene una nica tabla de pginas para s mismo. As,
todos los procesos comparten el SO. Cuando un proceso se ejecuta
en modo sistema accede directamente a su mapa y al del SO
S.O. mantiene tabla de marcos, como forma de mantener
informacin de estado de la memoria principal. De cada marco se
conoce su estado (libre, ocupado, etc)
S.O. mantiene tabla de regiones por cada proceso, indicando las
caractersticas de cada regin y qu rango de pginas pertenecen a
cada regin
Desperdicio de espacio: Mucho mayor gasto en tablas que con
asignacin contigua: es el precio de mucha mayor funcionalidad

Fundamentos de Computadores II
Sistemas Operativos

52

Memoria virtual

Implementacin de la tabla de pginas:


Las tablas de pginas se mantiene normalmente en memoria
principal. Problemas: eficiencia y gasto de almacenamiento
a) Eficiencia: cada acceso lgico requiere dos accesos a memoria
principal, a la tabla de pginas + al propio dato o instruccin.
Solucin: cach de traducciones TLB
b)Gasto de almacenamiento: tablas muy grandes. Ejemplo:
pginas 4K, dir. lgica 32 bits y 4 bytes por entrada, la tabla de
pginas de cada proceso tendr 4MB. Solucin: tablas
multinivel y tablas invertidas
Valoracin :
Espacios independientes para procesos: mediante tablas de pginas
Proteccin: mediante tablas de pginas
Compartir memoria: entradas corresponden con mismo marco (bajo
supervisin del SO dos procesos pueden compartir una pgina
asociada al mismo marco)
Soporte de regiones: bits de proteccin, bit de validez: no se
reserva espacio para huecos
Maximizar rendimiento: Si, al permitir esquemas de memoria ms
flexibles
Mapas de tamao adecuado: s, al permitir esquemas de memoria
virtual

Fundamentos de Computadores II
Sistemas Operativos

53

Memoria virtual
TLB (Translation Look-aside Buffer): Consta de una memoria asociativa con
informacin sobre ltimas pginas accedidas.
Para el multiproceso, existen varias posibilidades:
La TLB no incluye informacin del proceso. En este caso, habr que
invalidar la TLB en los cambios de contexto
Entradas en TLB incluyen informacin sobre proceso: en este caso,
debe existir un registro de UCP para mantener la identificacin del
proceso actual
Implementacin
HW: La MMU consulta la TLB y si falla, se usa la TP en memoria.
Ventajas: Es un proceso muy rpido
Inconvenientes: Actualizar la TP en cambios de contexto y hay que
invalidar la TLB cuando se produce un cambio de contexto (si no tiene
informacin del PID)
SW: La MMU no usa la TP, sino que slo consulta TLB. En caso de fallo,
se activa el SO, que ha de buscar la entrada en la tabla de pginas
(mediante programa), e insertar en la TLB la traduccin hecha, de forma
que se pueda reutilizar.
Ventajas: flexibilidad, ya que la tabla de pginas puede ser definida a
conveniencia, sin restricciones impuestas por el hardware
Inconvenientes: Es menos eficiente, ya que parte del proceso de
traduccin se realiza mediante programa.
Fundamentos de Computadores II
Sistemas Operativos

54

Memoria virtual
Una de las opciones disponibles para disminuir el tamao requerido por las
tablas de pginas es la tabla de pginas multinivel

Organizacin:Se trata de una tabla de pginas organizadas en M niveles:


Entrada de TP de nivel K apunta a TP de nivel K+1
Entrada de ltimo nivel apunta a marco de pgina

Direccin: La direccin lgica especifica la entrada a usar en cada nivel


1 campo por nivel + desplazamiento

Accesos:Un acceso lgico supone M + 1 accesos a memoria. Solucin:


uso de TLB

Invaliadacin:Si todas las entradas de una TP son invlidas, no se


almacena esa TP y se pone invlida la entrada correspondiente de la TP
superior

Ahorro de espacio:Si el proceso usa una parte pequea de su espacio


lgico, se consigue ahorro en espacio para almacenar TPs

Fundamentos de Computadores II
Sistemas Operativos

55

Memoria virtual
Pgina

1er nivel

2 nivel

Direccin lgica

Byte
0
1
2
3

Marcos de pgina

0
1
2
3

Registro base de la TP
(RIED)

n
0
1
2
3

Fundamentos de Computadores II
Sistemas Operativos

MP: direcciones fsicas


56

Memoria virtual

Ejemplo: Proceso que usa 12MB superiores y 4MB inferiores


2 niveles, pginas de 4K, dir. lgica 32 bits (10 bits por nivel) y 4
bytes por entrada
Tamao: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)

Ventajas adicionales: permite compartir TPs intermedias y slo se


requiere que est en memoria la TP de nivel superior. Las restantes
pueden estar en disco y traerse por demanda

Fundamentos de Computadores II
Sistemas Operativos

57

Memoria virtual
m e m o r ia
ta b la s d e p g in a s
s e g u n d o n iv e l

P g in a 2 0 4 8

..
.
P g in a 1 0 2 3

T a b la d e p g in a s
p r im e r n iv e l
V

..
.

P g in a 1 0 2 4

V
I

I
V

P g in a 0

P g in a 2 0 4 7

..
.

P g in a 3 0 7 1

..
.

P g in a 1 0 4 8 5 7 5 ( 2 ^ 2 0 - 1 )

P g . 1 0 4 7 5 5 2 (2 ^2 0 -1 0 2 4 )

Fundamentos de Computadores II
Sistemas Operativos

58

Memoria virtual
Otra alternativa para disminuir el espacio necesario por la tabla de pginas
es la tabla de pginas invertida
Organizacin:
La tabla contendr tantas entradas como marcos de pgina haya.
Cada entrada almacena la pgina cargada en dicho marco junto con
sus caractersticas:
Nmero de pgina,
Proceso dueo de la pgina
El tamao de la tabla de pginas es proporcional a la memoria
disponible.
Accesos:La MMU usa una TLB convencional, pero si falla la traduccin se
accede a la tabla de pginas invertida. Al estar la tabla organizada por
marcos no se puede hacer una bsqueda directa. Debera accederse a
todas las entradas en busca de la pgina correspondiente. Por esta
razn se suele organizar como una tabla hash
Ahorro de espacio: Se reduce el espacio de almacenamiento necesario,
ya que slo se guarda informacin sobre las pginas vlidas

Fundamentos de Computadores II
Sistemas Operativos

59

Memoria virtual
Direccin lgica
pid

Pgina

Byte

i
pid

pgina

Byte
Direccin fsica

Fundamentos de Computadores II
Sistemas Operativos

60

Memoria virtual
5.3. Segmentacin
Con la paginacin la MMU no dispone de informacin sobre las regiones
de los procesos y slo entiende de pginas. Por esta razn, el SO debe
mantener una lista de las pginas que componen cada regin, lo
que supone varias desventajas:
Al crear una regin hay que cuidar que todas las pginas
asociadas tengan la misma informacin de control
Para poder compartir una regin es preciso que las entradas de
varios procesos apunten a los mismos marcos
Segmentacin: es un esquema HW que intenta dar soporte directo a las
regiones. En l se considera el mapa de memoria como compuesto por
varios segmentos.
Se puede considerar que consisten en una generalizacin de los
registros valla base y lmite, pero usando un par de registros por
cada segmento
Fundamentos de Computadores II
Sistemas Operativos

61

Memoria virtual

Direccin:Una direccin lgica estar compuesta por un nmero de


segmento y un desplazamiento en el mismo.
Traduccin: La forma de realizar la traduccin puede apreciarse en la
imagen siguiente:
d ir e c c i n l g ic a
s

d
t a b la d e s e g m e n t o s

base

lm ite

>

N O

m e m o r ia

S I

E x c e p c i n

Fundamentos de Computadores II
Sistemas Operativos

62

Memoria virtual

Tabla de segmentos:En este caso, la MMU usa una tabla de segmentos


(TS).
Organizacin:
El SO mantiene una TS por proceso, de forma que en cada cambio
de contexto se notifica a MMU cul debe usar
Cada entrada de TS contiene (entre otros):
Registro base y lmite del segmento
proteccin: RWX
Problema: Fragmentacin Externa
En este esquema se produce fragmentacin externa, ya que el
almacenamiento de los segmentos se realiza de forma contigua.
El SO debe mantener una lista que le permita conocer qu zonas de
memoria estn libres y cules ocupadas: es decir, estructuras de
datos que identifiquen huecos y zonas asignadas

Fundamentos de Computadores II
Sistemas Operativos

63

Memoria virtual

Valoracin:
Espacios independientes para procesos: mediante su propia TS, que
crea un espacio lgico independiente
Proteccin: mediante TS, ofreciendo espacios disjuntos de memoria
Compartir memoria: bajo control del SO es posible que dos o ms
procesos tengan un segmento asociado a la misma zona de
memoria
Soporte de regiones: bits de proteccin
Maximizar rendimiento : No lo maximiza, por la fragmentacin
externa
Mapas de tamao adecuado: No cumple este objetivo porque no
permite implementar eficientemente un sistema de memoria virtual

Por tanto, tal y como se ha presentado se usa en muy pocos


SO reales

Fundamentos de Computadores II
Sistemas Operativos

64

Memoria virtual
5.4. Segmentacin paginada
Se intenta aunar las ventajas de ambos esquemas: segmentacin y
paginacin:
Segmentacin: soporte para regiones.
Paginacin: mejor uso del espacio de memoria.

Organizacin:
Entrada en TS apunta a una TP para el segmento.
El espacio del segmento est compuesto de varias pginas, de forma
que su espacio no tiene que ser contiguo.

Fundamentos de Computadores II
Sistemas Operativos

65

Memoria virtual
Traduccin:La traduccin se lleva a cabo segn se indica.

d ir e c c i n l g ic a
s

d
t a b la d e s e g m e n t o s

d ir. T . P g .

lm ite

>

NO

SI

E x c e p c i n

Fundamentos de Computadores II
Sistemas Operativos

t a b la d e p g in a s
p a ra s e g m e n to s

m e m o r ia

d ir e c c i n
f s ic a

66

Memoria virtual

Valoracin:
Espacios independientes para procesos: mediante TS
Proteccin: mediante TS
Compartir memoria: bajo control del SO, podemos hacer que una
misma entrada aparezca en diferentes TS (es decir, pueda ser usado
por varios procesos)
Soporte de regiones: bits de proteccin
Maximizar rendimiento: la paginacin aprovecha eficientemente el
espacio de memoria.
Mapas de tamao adecuado: permite esquemas de memoria virtual

Ventajas: Frente a paginacin sin segmentos facilita al SO la gestin de


las regiones, pero requiere HW ms complejo

Fundamentos de Computadores II
Sistemas Operativos

67

Memoria virtual
5.5. Paginacin por demanda
Una vez analizados los diferentes esquemas hardware vamos a ver cmo
se articulan para construir un esquema de memoria virtual (estos
esquemas tambin pueden usarse sin memoria virtual, pero en la
actualidad su uso est siempre vinculado a la memoria virtual)

Normalmente la memoria virtual se construye sobre esquemas de


paginacin pura o segmentada. De esta forma, la unidad de informacin
intercambiada entre memoria principal y secundaria es la pgina.

Normalmente la transferencia de informacin se lleva a cabo bajo


demanda (paginacin por demanda). De esta forma, cuando un
proceso necesita acceder a una pgina que no est en memoria
principal, se genera un fallo de pgina y el SO se encarga de transferirla
desde la memoria secundaria. Si al traerla no hay espacio suficiente en
MP, ser necesario desalojar alguna de las pginas actuales (ello se
hace mediante un algoritmo de reemplazo)

Fundamentos de Computadores II
Sistemas Operativos

68

Memoria virtual

La construccin de un sistema de memoria virtual sobre un procesador


con paginacin implica usar un bit de validez en las entradas de la
tabla de pginas, que indica si la pgina es vlida. Estarn marcadas
como invlidas todas las pginas que no residen en MP, as como las que
constituyen huecos en el mapa de memoria.

Para las entradas correspondientes a pginas no residentes en MP, la


entrada principal, en lugar de almacenar el marco donde reside
contendr la direccin del dispositivo de memoria en que se
encuentra almacenada. De forma que cuando se produce un acceso a
una de estas pginas, se produce una excepcin y se activa el SO,
responsable de hacer la transferencia desde memoria secundaria.

Algunos sistemas tambin usan la tcnica de prepaginacin. Al ocurrir


un fallo de pgina no slo traen la pgina en cuestin, sino tambin las
cercanas, al suponerse que se usarn en un corto plazo de tiempo. La
efectividad de esta tcnica depender del acierto de la prediccin.

Fundamentos de Computadores II
Sistemas Operativos

69

Memoria virtual
Veamos cmo se gestiona la ocurrencia de un fallo de pgina:
La MMU genera una excepcin. Normalmente deja en un registro
especial la direccin que caus el fallo
Se activa el SO, que comprueba:
Si la pgina es invlida, se aborta el proceso (solucin normal,
aunque tambin podra bastar con el envo de una seal).
Si la pgina es ausente se siguen los pasos siguientes:
a) Se consulta la tabla de marcos para ver si hay algn hueco
libre:
i. Si no hay ningn marco libre se aplica el algoritmo de
reemplazo, que decidir el marco a desalojar. La pgina
almacenada hasta entonces se marca como invlida. Si ha
sido modificada, antes hay que salvar su contenido en
memoria secundaria
ii. Si hay marco libre: se inicia la lectura desde memoria
secundaria y se vuelca al marco, marcndose como vlida
dicha entrada en la TP y apuntando el marco en que est
almacenada
Fundamentos de Computadores II
Sistemas Operativos

70

Memoria virtual

En el peor de los casos un fallo de pgina puede suponer dos


operaciones de E/S:
a) Salvaguarda de la pgina expulsada
b) Lectura de la pgina nueva

Dos polticas definen el funcionamiento del sistema de memoria

Poltica de reemplazos:
Reemplazo local: Slo puede usarse para reemplazo un marco
asignado al proceso que causa fallo
Reemplazo global: Puede usarse para reemplazo cualquier marco

Poltica de asignacin de espacio a los procesos:


Asignacin fija: El nmero de marcos de pgina para cada proceso
es fijo.
Asignacin dinmica: El nmero de marcos de pgina para cada
proceso es dinmico

Fundamentos de Computadores II
Sistemas Operativos

71

Memoria virtual
5.6. Polticas de reemplazo

Objetivo: Minimizar la tasa de fallos de pgina.

Cada algoritmo descrito tiene versin local y global:


Local: criterio se aplica a las pginas residentes del proceso
Global: criterio se aplica a todas las pginas residentes

Algoritmos a estudiar
A. ptimo
B. FIFO
C. Reloj (o segunda oportunidad)
D. LRU
E. Buffering de pginas
F. Retencin de pginas en memoria

Fundamentos de Computadores II
Sistemas Operativos

72

Memoria virtual
A) Algoritmo ptimo

Criterio: Pgina residente que tardar ms en accederse


Implementacin: Irrealizable, ya que supone disponer de una prediccin
fiable del uso de las pginas en un futuro a medio plazo
Versin local y global
Inters para estudios analticos comparativos

Fundamentos de Computadores II
Sistemas Operativos

73

Memoria virtual
B) Algoritmo FIFO

Criterio: se elimina la pgina que lleva ms tiempo residente

Implementacin: Fcil
Pginas residentes en orden FIFO se expulsa la primera
No requiere hardware especial
En el caso de estrategia local se mantiene una lista de pginas por
cada proceso. En el caso global, basta con una nica lista

Problema:
Una pgina que lleva mucho tiempo residente puede seguir
accedindose frecuentemente.
Su criterio no se basa en el uso de la pgina.
Anomala de Belady: Se pueden encontrar ejemplos en que al
aumentar el nmero de marcos aumenta el nmero de fallos de
pgina

Fundamentos de Computadores II
Sistemas Operativos

74

Memoria virtual
C) Algoritmo de segunda oportunidad o del reloj
Se trata de una modificacin del algoritmo FIFO, para evitar que una
pgina residente desde hace tiempo sea desalojada pese a estar siendo
usada. Para ello se usa el bit de referencia Ref de las pginas, con lo
que se detecta su uso

Criterio:
Si la pgina elegida por FIFO no tiene activo el bit Ref, es la pgina
expulsada
Si lo tiene activo se da 2 oportunidad antes de expulsar: se
desactiva el bit Ref, se pone pgina al final de FIFO, se aplica
criterio a la siguiente pgina

Implementacin: Se puede implementar el orden FIFO mediante una


lista circular con una referencia a la primera pgina de la lista: se
visualiza como un reloj donde la referencia a la primera pgina es la
aguja del reloj

Fundamentos de Computadores II
Sistemas Operativos

75

Memoria virtual
D) Algoritmo LRU (last recently used)

Criterio: Basado en proximidad temporal de referencias: pgina


residente menos recientemente usada como pgina a eliminar
Implementacin:Posible implementacin con HW especfico y un
contador de accesos a memoria:
Cada entrada de la TP posee un contador
Cada acceso a memoria la MMU copia el contador del sistema a
entrada referenciada
Reemplazo: pgina con contador ms bajo
Difcil implementacin estricta (hay aproximaciones): precisara una
MMU especfica, ya que habra que controlar los accesos realizados a
cada marco para actualizar los contadores de los accesos en la TP
Nota: en su versin global, hay que considerar los contadores de las
pginas menos recientemente usadas teniendo en cuenta el tiempo
lgico de cada proceso

Fundamentos de Computadores II
Sistemas Operativos

76

Memoria virtual
E) Buffering de pginas

Criterio:Esta tcnica intenta evitar el problema con las pginas


modificadas que han de ser desalojadas. En este caso, el tratamiento
del fallo de pgina implica realizar dos accesos a disco, uno para
almacenar la pgina modificada y para traer la nueva

Implementacin:
Mantiene una reserva de marcos libres. Cuando se produce un
fallo de pgina, siempre se usa un marco libre (es decir, en verdad
no hay reemplazo)
Cuando el nmero de marcos libres queda por debajo de cierto
umbral se activa un demonio de paginacin, que aplica
repetidamente el algoritmo de reemplazo:
Pginas no modificadas pasan a lista de marcos libres
Pginas modificadas pasan a lista de marcos modificados:
cuando se escriban a disco pasan a lista de libres; suelen
escribirse en tandas (lo que mejora el rendimiento)
Si se referencia una pgina mientras est en estas listas: se
recupera directamente de la lista (no hay E/S), lo que puede
mejorar el comportamiento de algoritmos poco eficientes

Fundamentos de Computadores II
Sistemas Operativos

77

Memoria virtual
F) Retencin de pginas en memoria

Criterio:No todas las pginas son reemplazables

Aplicacin:
Se aplica a pginas del propio S.O: si sus pginas estn fijas en
memoria, su gestin es ms sencilla
Tambin se aplica mientras se hace DMA sobre una pgina. La
pgina no ser reemplazable hasta que finalice la operacin sobre
ella

Implementacin: Algunos S.O. ofrecen a las aplicaciones un servicio


para fijar en memoria una o ms pginas de su mapa: adecuado para
procesos de tiempo real, aunque puede afectar al rendimiento del
sistema. En POSIX se trata del servicio mlock

Fundamentos de Computadores II
Sistemas Operativos

78

Memoria virtual
5.7. Poltica de asignacin de marcos de pgina
El SO deber decidir cuntos marcos de pgina asigna a cada proceso:
a) Asignacin Fija
b) Asignacin Dinmica

A) Asignacin fija

Nmero constante de marcos asignados al proceso. Puede depender


de las caractersticas del proceso: tamao, prioridad,...
No se adapta a las distintas fases de ejecucin. Como positivo, el
comportamiento del proceso es relativamente predecible
Slo tiene sentido usar estrategia de reemplazo local
La arquitectura impone el N mnimo de marcos de pgina: mnimo
nmero de marcos a asignar igual al nmero de referencias que
aparezca en la instruccin que ms fallos de pgina pueda generar

Fundamentos de Computadores II
Sistemas Operativos

79

Memoria virtual
B) Asignacin dinmica

El nmero de marcos asignados a un proceso es variable


dependiendo del comportamiento del proceso (y posiblemente de los
dems procesos).
Se adapta a las diferentes fases por las que puede pasar un proceso
Se pueden usar tanto estrategias de reemplazo global como local.
Asignacin dinmica + reemplazo local: el proceso va aumentando o
disminuyendo su conjunto residente dependiendo de su
comportamiento (comportamiento relativamente predecible)
Asignacin dinmica + reemplazo global: los procesos compiten por
el uso de las pginas entre ellos (comportamiento difcilmente
predecible)

Fundamentos de Computadores II
Sistemas Operativos

80

Memoria virtual
5.8. Hiperpaginacin (thrashing)

Definicin:Tasa excesiva de fallos de pgina de un proceso o en el


sistema, debido a que el nmero de marcos de pgina asignados es
insuficiente para albergar el conjunto residente
Con asignacin fija. Hiperpaginacin en el proceso Pi si
conjunto residente de Pi < conjunto de trabajo Pi
Con asignacin variable. Hiperpaginacin en el sistema si
n marcos disponibles < conjuntos de trabajo de los procesos

Problema: decae el grado de uso de la CPU. Los procesos estn casi


siempre en colas de dispositivo de paginacin.
Solucin: controlar la carga:
Disminuir el grado de multiprogramacin,
Suspender uno o ms procesos liberando sus pginas residentes

Cmo detectar esta situacin?

Fundamentos de Computadores II
Sistemas Operativos

81

U t iliz a c i n d e la U C P

Memoria virtual

g r a d o d e m u lt ip r o g r a m a c i n

Se vern a continuacin algunas estrategias de control de la carga de


trabajo:

A. Estrategia del conjunto de Trabajo


B. Estrategia de administracin basada en la frecuencia de fallos
de pgina
C. Estrategia de control de carga para algoritmos de reemplazo
globales
Fundamentos de Computadores II
Sistemas Operativos

82

Memoria virtual
A) Estrategia del conjunto de trabajo

Objetivo: Determinar el conjunto de trabajo de cada proceso, es decir, las


pginas usadas por el proceso en las ltimas N referencias

Proceso:
Si el conjunto de trabajo decrece se liberan marcos.
Si el conjunto de trabajo crece se asignan nuevos marcos.
Si no hay marcos disponibles se suspender algn(os) proceso(s), que
se reactivan cuando haya marcos suficientes

Condicin: Si el SO es capaz de detectar el conjunto de trabajo de cada


proceso, puede especificarse una estrategia de asignacin dinmica
con reemplazo local

Implementacin: Difcil, ya que precisara una MMU especfica que


controlara las pginas accedidas por cada proceso.

Aproximacin: Estrategia basada en frecuencia de fallos de pgina (PFF),


controlando la tasa de fallos de pgina de cada proceso

Fundamentos de Computadores II
Sistemas Operativos

83

Memoria virtual
B) Estrategia basada en frecuencia de fallos de pgina
Objetivo: Controlar la tasa de fallos de pgina por proceso
Proceso:
Si tasa < lmite inferior, se liberan marcos aplicando un algoritmo de
reemplazo
Si tasa > lmite superior, se asignan nuevos marcos. Si no hay
marcos libres se suspende algn proceso
ta s a d e fa llo s d e p g in a

l m it e s u p e r io r

l m it e in f e r io r

n m e ro d e m a rc o s
Fundamentos de Computadores II
Sistemas Operativos

84

Memoria virtual
C) Estrategia de control de carga para algoritmos de
reemplazo globales

Objetivo: Controlar la hiperpaginacin utilizando un algoritmo de control


de carga. Se da en algoritmos de reemplazo global.

Proceso: Ejemplo: UNIX 4.3 BSD


Reemplazo global con algoritmo del reloj. Variante con dos
manecillas: hay dos punteros en vez de uno
Uso de buffering de pginas. Un demonio de paginacin controla el
nmero de marcos libres
Si el nmero de marcos libres < umbral, el demonio de paginacin
aplica reemplazo
Si se repite con frecuencia la falta de marcos libres: un proceso
swapper suspende procesos

Fundamentos de Computadores II
Sistemas Operativos

85

Memoria virtual
5.9. Gestin del espacio de swap
La asignacin del espacio de swaping puede seguir dos tcnicas:
a) Preasignacin de swap:
Al crear la nueva regin se reserva espacio de swap para ella. Al
expulsar una pgina, con esta estrategia, ya habr espacio de
swap para almacenar su contenido
b) Sin preasignacin de swap:
Al crear una regin no se hace reserva de swap. Las pginas de la
regin se irn trayendo a MP por demanda desde el soporte de
la regin. Slo se reserva espacio de swap para una pgina
cuando es expulsada por primera vez
Tendencia actual: Se suele utilizar ms la estrategia sin preasignacin,
puesto que la preasignacin de swap conlleva un peor aprovechamiento
de memoria secundaria (toda pgina debe tener reservado espacio de
swap).

Fundamentos de Computadores II
Sistemas Operativos

86

Memoria virtual
5.10. Operaciones sobre regiones de un proceso
Se considerarn a continuacin las siguientes operaciones sobre las
regiones de un proceso en un sistema con memoria virtual:
a) Creacin de regin:
Al crear el mapa inicial o por solicitud posterior
b) Liberacin de regin:
Al terminar el proceso o por solicitud posterior
c) Cambio de tamao de regin:
Aumento de tamao: hay que comprobar que no se solape con
otra regin y equiparar las nuevas pginas a las ya existentes
en la regin.
El caso de expansin de la pila es algo ms complejo.
Disminucin de tamao
d) Duplicado de regin:
Operacin requerida por el servicio fork de POSIX
Se duplica todo y se trata de una operacin costosa

Fundamentos de Computadores II
Sistemas Operativos

87

Memoria virtual
a) Creacin de nueva regin
Acciones:
Al crear una regin no se asigna MP ( se har por demanda).
Se marcarn las pginas como no residentes y vlidas (fallo de
pgina cuando se intenten acceder)
El S.O. actualiza la tabla de regiones y guarda la informacin
correspondiente a las pginas de la regin, rellenando las entradas de la
TP. Debe buscar un hueco en el mapa de memoria para asignar a nueva
regin.
Segn el soporte:
Soporte en archivo: Pginas marcadas como Cargar de archivo
(CA) y se almacena direccin del bloque del archivo correspondiente
Sin soporte: Pginas marcadas como Rellenar con ceros (RC) y se
inicializa cuando hay un fallo de pgina.
Si la regin es privada con preasignacin de swap, se reserva espacio
de swap
Si la regin es la pila:
Se copian los argumentos iniciales del proceso en bloque(s) de swap

Fundamentos de Computadores II
Sistemas Operativos

88

Memoria virtual

Algoritmo de expulsin:
Si la regin es privada se escribe pgina en swap. Si no hay
preasignacin de espacio swap, en la primera expulsin se reserva
espacio. Posteriores fallos se sirven de ese bloque de swap
Si la regin es compartida se escribe pgina en soporte, para que
todos los procesos puedan ver las modificaciones. Todos los fallos se
sirven del soporte

En la creacin del mapa inicial (servicio exec en POSIX), se crean las


regiones segn sus caractersticas
Cdigo: CA, Compartida, RX
Datos v. inicial: CA, Privada, RW
Datos sin v. inicial: RC, Privada, RW
Pila inicial: contenido inicial en swap
Los huecos se marcan como pginas invlidas, tanto para el HW como
para el S.O.

Fundamentos de Computadores II
Sistemas Operativos

89

Memoria virtual

Swap
1 p g .
C d ig o

A B lo q u e T ( a r c h .)
...........................
1 p g .
B lo q u e U ( a r c h . )
D a t .v . i. R W A
...........................
1 p g .
R W A R e lle n a r c o n 0
D a t .n o .v . i.
...........................
1 p g .
P ila

A r c h iv o E je c u ta b le

T a b la d e p g in a s
R X

RW

B lo q u e S ( s w a p )

B lo q u e T
B lo q u e U

C a b e c e ra
C d ig o
D a t o s c o n v a lo r in ic ia l
. . . . . . . . . . . . . . . .

B lo q u e S

P ila

Estado inicial de ejecucin en un sistema sin preasignacin de swap


Fundamentos de Computadores II
Sistemas Operativos

90

Memoria virtual
b) Liberacin de regin
Acciones:
Actualizar tabla de regiones para eliminar regin
Marcar como invlidas pginas asociadas
Si la regin es privada, se libera el espacio de swap asociado
Cuando:
Solicitud explcita (p.ej. desproyeccin de regin).
Finalizacin del proceso (exit en POSIX).
El servicio exec de POSIX libera el mapa actual del proceso antes de
construir un nuevo mapa vinculado al ejecutable a usar

Fundamentos de Computadores II
Sistemas Operativos

91

Memoria virtual
c) Cambio de tamao
Acciones:
Si disminuye:
Se ajusta la tabla de regiones.
Se marcan pginas como invlidas.
Se libera espacio de swap
Si aumenta:
Se comprueba que no haya solapamiento.
Se fijan nuevas pginas como no residentes y con las mismas
caractersticas que otras pginas de la regin.
Si hay preasignacin se reserva espacio en swap para las nuevas
pginas.
Casos especiales:
Expansin del heap: Solicitada por programa mediante servicios
del S.O. Se marcan las pginas correspondientes como RC,
privadas, RW
Expansin de pila no proviene de una solicitud del proceso, sino
de la propia evolucin de la pila. Por esta razn esta operacin es
automtica
Fundamentos de Computadores II
Sistemas Operativos

92

Memoria virtual
d) Duplicado de una regin
Acciones:
Se duplican las regiones privadas del padre y se comparten las no
privadas

La copia de una regin de un proceso en el mapa de memoria de otro


proceso es una operacin costosa, ya que tambin se debe copiar el
contenido.

Problema: La ejecucin de fork sera muy ineficiente.


Solucin: copy-on-write (COW). Se comparte una pgina mientras no se
modifique. Si un proceso la modifica, se crea una copia para l. Esta
operacin se denomina duplicado por demanda

Fundamentos de Computadores II
Sistemas Operativos

93

Memoria virtual

Implementacin de COW
Se comparten las pginas de regiones duplicadas
Se marcan de slo lectura y con bit de COW.
Al realizar la primera escritura se produce un fallo de protecccin y
se genera una copia privada para el proceso que escribe.
Lo normal es que haya varios procesos con misma regin duplicada,
por lo que existe un contador de uso por pgina.
Cada vez que se crea copia privada se decrementa contador, ya que
hay un proceso menos trabajando sobre la copia compartida.
Si llega a 1, se desactiva el bit COW, al no haber duplicados

FORK con COW. Se comparten todas las regiones. Las regiones privadas
se marcan como COW en padre e hijo, el resultado de la optimizacin es
que en vez de duplicar todo el espacio de memoria slo se duplica la TP.

Fundamentos de Computadores II
Sistemas Operativos

94

5. Archivos proyectados en
memoria

Fundamentos de Computadores II
Sistemas Operativos

95

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.

Fundamentos de Computadores II
Sistemas Operativos

96

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).
M a p a d e m e m o r ia
De esta forma,
cuando el
programa accede
a una posicin
de memoria
1 p g .
A r c h iv o
asociada al
archivo proyectado, lt i m a p g .
A r c h iv o
est accediendo
realmente
al archivo

C d ig o

T a b la d e p g in a s

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

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

A r c h iv o

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

B lo q u e 0
B lo q u e 1

10240

B lo q u e 2

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

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

B lo q u e N

P il a

Fundamentos de Computadores II
Sistemas Operativos

97

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

Fundamentos de Computadores II
Sistemas Operativos

98

6. Servicios de gestin de
memoria

Fundamentos de Computadores II
Sistemas Operativos

99

Servicios de gestin de memoria


El gestor de memoria realiza funciones internas. Por eso, ofrece pocos
servicios directos para las aplicaciones. Bsicamente estn relacionados
con la proyeccin de archivos:
POSIX
Proyectar un archivo: mmap
Desproyectar un archivo: munmap
Win32
Proyectar un archivo: 2 pasos:
Crear proyeccin: CreateFileMapping
Realizar proyeccin: MapViewOfFile
Desproyectar un archivo: UnmapViewOfFile

Fundamentos de Computadores II
Sistemas Operativos

100

Servicios de gestin de memoria


void *mmap(void *direc, size_t lon, int prot, int indic, int desc, off_t desp);
Establece la proyeccin entre el espacio de direcciones de un proceso y un
archivo.
Devuelve la direccin de memoria donde se ha proyectado el archivo
direc: direccin donde proyectar. Generalmente se utiliza NULL,
con lo que el S.O. elige la direccin por su cuenta
lon: especifica el nmero de bytes a proyectar
prot: el tipo de acceso, lectura (PROT_READ), escritura
(PROT_WRITE) o ejecucin (PROT_EXEC), o cualquier combinacin
de ellas
indic: propiedades sobre la regin, compartida (MAP_SHARED, un
proceso hijo compartir la regin con el padre), privada
(MAP_PRIVATE, el hijo obtiene copia propia de la regin), fija
(MAP_FIXED, el archivo ha de proyectarse en una direccin
especfica)
desc: representa el descriptor de archivo a proyectar.
Desp: desplazamiento dentro del archivo a partir del cual se realiza
la proyeccin.
Fundamentos de Computadores II
Sistemas Operativos

101

Servicios de gestin de memoria


void munmap(void *direc, size_t lon);
Desproyecta parte del espacio de direcciones de un proceso desde la
direccin direc hasta direc+lon.

Fundamentos de Computadores II
Sistemas Operativos

102