Gestión de memoria
Fundamentos de Computadores II
Sistemas Operativos
0
Índice
1. Objetivos del sistema de gestión de memoria
2. Modelo de memoria de un proceso
3. Esquemas de memoria basados en asignación
contigua
4. Memoria virtual
5. Archivos proyectados en memoria
6. Servicios de gestión de memoria
Fundamentos de Computadores II
Sistemas Operativos
1
1. Objetivos del sistema de
gestión de memoria
Fundamentos de Computadores II
Sistemas Operativos
2
1. Objetivos del sistema de gestión de memoria
• En sistemas con multiproceso, el S.O. debe “repartir” los
recursos entre los procesos existentes:
– Reparto de procesador: Gestión de procesos
– Reparto de memoria: Gestión de memoria
• Objetivos del Gestor de Memoria
A. Espacios lógicos independientes
B. Protección entre procesos
C. Compartición de Memoria (procesos ligeros)
D.Soporte a las regiones del proceso
E. Maximizar el grado de multiprogramación
F. Mapas de memoria de un tamaño
(normalmente grandes)
Fundamentos de Computadores II
Sistemas Operativos
adecuado
3
1. Objetivos del sistema de gestión de memoria
A. Espacios lógicos independientes
•
•
•
A priori no se conoce la posición de memoria que ocupará un
programa cuando vaya a ejecutarse (estado de ocupación de la
memoria)
Código en ejecutable genera referencias entre 0 y N
Ejemplo: Programa que copia un vector
F ic h e ro 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
DEC R3
J N Z /1 2
.................
Fundamentos de Computadores II
Sistemas Operativos
–Vector destino a partir de
dirección 2000
–Tamaño del vector en dirección
1500
–Vector origen a partir de dirección
1000
4
1. Objetivos del sistema de gestión de memoria
Se supone que el código del SO reside en
las posiciones más altas.
El programa se carga en la posición 0 y para
que se ejecute ha de pasársele el control
(es decir, que el contador del programa
apunte a esta posición).
• Problema:Como se ve, no coinciden las
direcciones usadas en el programa con la
posición a partir de la cual se carga el
programa. Suponer por ejemplo, que el
programa se cargara a partir de la
posición 10000....
• Solución: Reubicación de direcciones
lógicas a físicas
Fundamentos de Computadores II
Sistemas Operativos
M e m o ria
0
4
8
12
16
20
24
28
32
36
....
L O A D R 1 , # 10 0 0
L O A D R 2 , # 20 0 0
L O A D R 3 , /15 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
DEC R 3
JN Z /1 2
.................
S is te m a O p e ra tiv o
5
1. Objetivos del sistema de gestión de memoria
•
Reubicación: Traducir direcciones lógicas a direcciones físicas
dependientes del hardware mediante una función de traducción. La
reubicación permite crear un espacio lógico independiente para cada
proceso y el S.O. debe poder acceder a los espacios lógicos para realizar
la traducción.
– Direcciones lógicas: direcciones de memoria generadas por el
programa
– Direcciones físicas: direcciones de memoria principal asignadas
•
Función de traducción:
Traducción(IdProc, dir_lógica)  dir_física
– Ejemplo:
El programa tiene asignada memoria a partir de la dirección 10000
Reubicación: sumar 10000 a direcciones lógicas
– Implementación:
o Hardware
o Software
Fundamentos de Computadores II
Sistemas Operativos
6
1. Objetivos del sistema de gestión de memoria
•
Reubicación Hardware: la MMU (memory management unit) se
encarga de la traducción
•
Proceso:
– Programa se carga en memoria sin modificar
– El S.O. almacena por cada proceso su función de traducción
– El S.O. especifica a la MMU qué función aplicar para cada proceso
M e m o ria
P ro c e s a d o r
PC
H W tra du cció n
8
R . In stru cció n
L O A D R 3 , /1 50 0
Fundamentos de Computadores II
Sistemas Operativos
1 0 00 0
1 5 00
+
11 5 0 0
1 0 00 0
1 0 00 4
1 0 00 8
10012
10016
10020
10024
10028
10032
10036
..........
L O A D R 1 , # 10 0 0
L O A D R 2 , # 20 0 0
L O A D R 3 , /1 50 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
DEC R 3
JN Z /1 2
.................
7
1. Objetivos del sistema de gestión de memoria
•
•
•
Reubicación software: traducción de
direcciones durante carga del programa.
Esta solución se usa en sistemas sin el
hardware específico de traducción
(MMU).
Proceso:
– El programa se carga con las
direcciones ya traducidas
– Se genera un código diferente del
programa ejecutable
Desventajas:
– No asegura protección (no se
verifica cada dirección a usar, sino
que
se
usan
las
direcciones
generadas tras el proceso de carga)
– No permite mover programa en
tiempo de ejecución (suponer que
es necesaria la reubicación del
espacio asignado al proceso, por
necesitar más espacio.....)
Fundamentos de Computadores II
Sistemas Operativos
M e m o ria
1 0 00 0
1 0 00 4
1 0 00 8
1 0 01 2
1 0 01 6
1 0 02 0
1 0 02 4
1 0 02 8
1 0 03 2
1 0 03 6
..........
L O A D R 1 , # 110 0 0
L O A D R 2 , # 12 0 0 0
L O A D R 3 , /11 50 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
DEC R 3
JN Z /1 0 0 1 2
.................
8
1. Objetivos del sistema de gestión de memoria
B. Protección entre procesos
La protección es diferente según sea un sistema Mono o Multi programado:
Sistema MonoProgramado: La intrusión se dará solamente entre el
programa y el S.O.
Sistema MultiProgramado: La intrusión puede venir tanto de otros
procesos como de otros usuarios además del riesgo del sistema
Monoprogramado.
• Acciones
– La traducción de direcciones debe crear espacios disjuntos
– Es necesario validar todas las direcciones que genera el programa
• La detección de alguna intrusión debe realizarla el hardware del
procesador (MMU), ya que hay que realizarla en tiempo de
ejecución
• El tratamiento de alguna intrusión lo hace el SO
– En sistemas con mapa de E/S y memoria común:
– Traducción permite impedir que los procesos accedan directamente
a dispositivos de E/S
Fundamentos de Computadores II
Sistemas Operativos
9
1. Objetivos del sistema de gestión de memoria
C. Compartición de Memoria (procesos ligeros)
La compartición de memoria entre procesos da soporte a la creación de
•
•
procesos ligeros y está controlado por el S.O.
Acciones:
– Las direcciones lógicas de 2 o más procesos se corresponderán con
una misma dirección física.
– La memoria asignada a cada proceso no puede ser ya contigua.
– La función de traducción en estos casos se va haciendo más
M a p a p ro c e so 1
compleja.
M e m o ria
zo n a p riva d a 1
Ventajas:
– Procesos ejecutando mismo
zo n a p riv. 1 (P 1 )
zo n a co m p artid a
programa comparten su
zo n a p riv. 1 (P 2 )
zo n a p riva d a 2
código
zo n a co m p artid a
– Mecanismo de comunicación
M a p a p ro c e so 2
zo n a p riv. 2 (P 2 )
entre procesos muy rápido
zo n a p riva d a 1
zo n a p riv. 2 (P 1 )
zo n a co m p artid a
zo n a p riva d a 2
Fundamentos de Computadores II
Sistemas Operativos
10
1. Objetivos del sistema de gestión de memoria
•
Problemas:
– Requiere
asignación
no
contigua
– Si la posición de zona
compartida
contiene
referencia a otra posición de
la zona compartida, no se
puede saber a qué dirección
se refiere puesto que cada
proceso
ligero
verá
esa
dirección de forma diferente
Ejemplo: Si el código, que es común,
contiene una bifurcación, no se
podrá determinar a qué dirección
se debe saltar, dependiendo del
proceso que esté ejecutando el
código
Fundamentos de Computadores II
Sistemas Operativos
M a p a p ro ce so 1
M e m o ria
2 0 00
zo n a co m pa rtid a
1 0 00 0
zo n a co m pa rtid a
¿ 110 0 ó 21 0 0 ?
1 0 10 0
M a p a p ro ce so 2
1 0 00
zo n a co m pa rtid a
lógico
físico
11
1. Objetivos del sistema de gestión de memoria
D. Soporte de las regiones del proceso
El mapa de memoria de un proceso no es homogéneo, ya que las regiones
contienen diferentes tipos de información (código, datos y pila
normalmente) y poseen diferentes características
•
Acciones:
– Hacer mapa de memoria dinámico:
• Regiones cambian de tamaño (p.ej. pila)
• Se crean y destruyen regiones (el sistema de memoria debe
controlar qué regiones están presentes, así como su tamaño)
• Existen zonas sin asignar (huecos, con carácter dinámico)
– Detectar accesos no permitidos a una región ( de sólo 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
12
1. Objetivos del sistema de gestión de memoria
E. Maximizar el grado de multiprogramación
El reparto de memoria debe ser tal que
maximize el grado de multiprogramación
para evitar el desperdicio de memoria
• Memoria desperdiciada
– Restos
(huecos)
inutilizables
(fragmentación)
– Tablas requeridas por gestor de
memoria
• Acciones
– Crear bloques de asignación de
menor tamaño
– Gestionar las tablas de asignación
más eficientemente
– Se opta por la paginación
– Uso
de
memoria
virtual
para
aumentar
grado
de
multiprogramación
Fundamentos de Computadores II
Sistemas Operativos
Aprovechamiento de memoria
óptimo es irrealizable!!!!
Tablas de gestión demasiado
grandes
M e m o ria
0
D ire cció n 5 0 d e l pro ce so 4
1
D ire cció n 1 0 d e l pro ce so 6
2
D ire cció n 9 5 d e l pro ce so 7
3
D ire cció n 5 6 d e l pro ce so 8
4
D ire cció n 0 d e l p ro ce so 12
5
D ire cció n 5 d e l p ro ce so 20
6
D ire cció n 0 d e l p ro ce so 1
.........................................
.........................................
N -1
D ire cció n 8 8 d e l pro ce so 9
N
D ire cció n 5 1 d e l pro ce so 4
13
1. Objetivos del sistema de gestión de memoria
F. Mapas de memoria de
(normalmente grandes)
un
tamaño
adecuado
Los procesos necesitan cada vez mapas más grandes: aplicaciones más
novedosas, más recursos gráficos, más carga computacional....
•
Acciones
– Utilizar Memoria Virtual
– Hacer que el usuario disponga virtualmente de una enorme cantidad
de memoria física
•
Otras opciones (antigua)
– Overlays
• Programa dividido en fases que se ejecutan sucesivamente
• En cada momento sólo 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
14
2. Modelo de memoria de un
proceso
2.1.
2.2.
2.3.
2.4.
Introducción
Fases en la generación de un ejecutable
Mapa de memoria de un proceso
Operaciones sobre regiones
Fundamentos de Computadores II
Sistemas Operativos
15
Modelo de memoria de un proceso
2.1. Introducción
– El S.O. es el responsable de la gestión de memoria de
cualquier proceso.
– El mapa inicial de memoria de un proceso está relacionado
con el archivo ejecutable que generará el proceso
– ¿Cómo generar el mapa de memoria inicial a partir del
ejecutable?
– ¿Cómo se organiza el mapa de memoria?
– ¿Cuáles son sus características básicas?
– ¿Qué operaciones se pueden realizar en el mapa de
memoria?
Fundamentos de Computadores II
Sistemas Operativos
16
Modelo de memoria de un proceso
2.2. Fases en la generación de un ejecutable
•
•
Aplicación: conjunto de módulos en lenguaje de alto nivel
Procesado en dos fases: Compilación y Montaje
•
Compilación:
•
– Se asignan direcciones a los
símbolos definidos
– Resuelve referencias a los
símbolos de cada módulo
– Genera módulo objeto
Montaje (o enlace):
– Resuelve referencias entre
módulos objeto
– Resuelve referencias a símbolos
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 to A
M ó d u lo
o b je to B
B ib lio te ca s
M o n ta d o r
F ich e ro
e je cu ta b le
17
Modelo de memoria de un proceso
Biblioteca: colección de módulos objeto relacionados. Algunas bibliotecas
son proporcionadas a los usuarios (bibliotecas) del sistema, mientras
que otras habrán 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:
Estáticas: el montaje enlaza los módulos
objeto del programa y de las bibliotecas,
dando
como
resultado
un
ejecutable
autocontenido.
• Desventajas:
– Ejecutables grandes
– Código de función de biblioteca
repetido
– Múltiples copias en memoria del
código de función de biblioteca
– La
actualización
de
biblioteca
implicaría volver a montar
Fundamentos de Computadores II
Sistemas Operativos
M a in
F u n ció n A
C ó d ig o
F u n ció n B
F u n ció n d e b ib lio te ca F 1
F u n ció n d e b ib lio te ca F 2
18
Modelo de memoria de un proceso
Dinámicas: la carga y montaje se hace en tiempo de ejecución. El
ejecutable contiene únicamente el nombre de la biblioteca y la
rutina de carga y montaje en tiempo de ejecución
• Proceso de carga:
– La rutina de carga y montaje incorpora la biblioteca
correspondiente.
– Se ajustan las instrucciones que realizan las referencias
a dicho símbolo, de forma que las próximas referencias
accedan al símbolo de biblioteca correspondiente, sin que
sea necesario activar de nuevo el proceso de montaje de la
biblioteca.
– Para evitar modificar el código del programa, en este
proceso, se suelen utilizar referencias indirectas
mediante una tabla que recoge todos los símbolos
correspondientes a bibliotecas dinámicas. Hay que tener en
cuenta que en algunos S.O. los segmentos de código
ejecutables no son modificables
Fundamentos de Computadores II
Sistemas Operativos
19
Modelo de memoria de un proceso
• Ventajas:
–
–
–
–
Menor tamaño ejecutables
Código de rutinas de biblioteca sólo en archivo de biblioteca
Procesos pueden compartir código de biblioteca
Actualización automática 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 símbolos, se busca la versión adecuada
• Desventajas:
– Mayor tiempo de ejecución 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
20
Modelo de memoria de un proceso
• Forma de uso :
1. Enlace dinámico implícito: Se especifica en tiempo de
montaje qué biblioteca usar, pero se pospone su carga y
montaje a tiempo de ejecución.
2. Uso explícito:
» Requerido por aplicaciones que determinan en tiempo
de ejecución 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 símbolos 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
21
Modelo de memoria de un proceso
•
•
•
El uso de bibliotecas dinámicas es transparente. Es decir, los
mandatos de compilación y montaje son idénticos que en el caso de las
estáticas
Si la biblioteca dinámica contiene referencias internas (a símbolos
definidos en la misma) existe el problema, ya comentado, de la zona
compartida con autoreferencias
Tres posibles soluciones:
1. A cada biblioteca dinámica se le asigna un rango de direcciones
fijo
• Inconveniente: Poco flexible
2. En montaje en tiempo de ejecución se reajustan
autoreferencias
• Inconveniente: Impide compartir código de biblioteca
3. Crear biblioteca con código independiente de posición (PIC)
• Se genera código con direccionamiento relativo a registro
• Inconveniente (tolerable): direccionamiento relativo menos
eficiente
Fundamentos de Computadores II
Sistemas Operativos
22
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: información de control que permite interpretar el contenido
del ejecutable. Suele incluir la siguiente información:
– Número mágico 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,
dirección de comienzo en el archivo y tamaño.
Ejemplo:
» Tabla de símbolos para depuración
» Lista de bibliotecas dinámicas usadas
Fundamentos de Computadores II
Sistemas Operativos
23
Modelo de memoria de un proceso
F ic h e ro E je c u ta b le
0
C a b e c e ra
N ú m ero m ág ic o
C o n tad o r d e p ro g ram a in icial
....................
Ta b la d e seccio n es
100 0
C ó d ig o
D esp l.
C ó d ig o
100 0
400 0
D ato s c o n v.i. 500 0
D ato s s in v.i. -----...................... ........
100 0
500
........
T. S ím b o lo s
100 0
800 0
500 0
S e c c io n e s
D ato s c o n valo r in icial
... ...... ...... .
800 0
Ta b la d e sím b o lo s
Fundamentos de Computadores II
Sistemas Operativos
Tam .
24
Modelo de memoria de un proceso
•
Las secciones más relevantes se volcarán en el mapa de memoria del
proceso: código, datos con valor inicial y datos sin valor inicial
– Código (texto): contiene el código 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 sección vinculada a variables locales, ya que estas tienen
carácter dinámico (se crearán en la pila del proceso, cuando los
procedimientos en que aparecen sean invocados)
Fundamentos de Computadores II
Sistemas Operativos
25
Modelo de memoria de un proceso
•
Variables globales
– Estáticas
– Se crean al iniciarse programa
– Existen durante toda la ejecución del proceso
– Dirección fija en memoria y en ejecutable
•
Variables locales y parámetros
– Dinámicas
– Se crean al invocar la función
– Se destruyen al retornar
– La dirección se calcula en tiempo de ejecución
– Recursividad: varias instancias de una variable
Fundamentos de Computadores II
Sistemas Operativos
26
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(){
.......
}
/* Parámetro */
/* Variable local */
Fundamentos de Computadores II
Sistemas Operativos
27
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 información
•
Cada región:
– Tiene asociada una información (un “objeto de memoria”)
– Consiste en una zona contigua tratada como unidad al proteger o
compartir
– Se caracteriza por:
• Dirección de comienzo y tamaño inicial
• Soporte: donde se almacena su contenido inicial (soporte en
archivo y sin soporte, es decir, objeto sin contenido inicial)
• Protección: RWX
• Uso compartido o privado
• Tamaño fijo o variable
Fundamentos de Computadores II
Sistemas Operativos
28
Modelo de memoria de un proceso
•
La ejecución de un programa crea un mapa de memoria a partir
del archivo ejecutable. Cada sección del ejecutable da lugar a una
región del mapa inicial.
– Código (texto): compartida, lectura y ejecución, tamaño fijo,
soporte en archivo ejecutable
– Datos con valor inicial: privada, lectura y escritura, tamaño fijo,
soporte en archivo ejecutable
– Datos sin valor inicial: privada, lectura y escritura, tamaño fijo, sin
soporte (se rellena a ceros en algunos lenguajes)
– Pila: privada, lectura y escritura, tamaño variable, sin soporte. Crece
hacia direcciones más bajas. La pila inicial sólo contiene los
argumentos de llamada al programa
Fundamentos de Computadores II
Sistemas Operativos
29
Modelo de memoria de un proceso
0
Fichero ejecutable
Número mágico
Contador de programa
inicial
Cabecera
1000
Secciones
Tabla de secciones
Código
5000
8000
Mapa de memoria
0
Código
4000
Datos con valor
inicial
5000
5500
Datos sin valor
inicial
Datos con valor
inicial
Tabla de símbolos
Pila
Argumentos del programa
Fundamentos de Computadores II
Sistemas Operativos
30
Modelo de memoria de un proceso
•
Durante ejecución de proceso se crean nuevas regiones. Es decir, el mapa
de memoria tiene un carácter dinámico. Las nuevas regiones creadas en tiempo
de ejecución pueden ser:
– Región de Heap
• Soporte de memoria dinámica (malloc en C)
• Privada, lectura y escritura, tamaño variable, sin soporte (inicializada a
cero)
• Crece hacia direcciones más altas
– Archivo proyectado
• Región asociada al archivo proyectado
• Tamaño variable, soporte en archivo
• Protección y carácter compartido o privado especificado en la proyección
– Memoria compartida
• Región asociada a la zona de memoria compartida
• Compartida, tamaño variable, sin soporte (inicializada a 0)
• Protección especificada en proyección
– Pilas de threads
• Cada pila de thread corresponde con una región.
• Estas regiones constan de las mismas características que las asociadas a
la pila del proceso
Fundamentos de Computadores II
Sistemas Operativos
31
Modelo de memoria de un proceso
R e g ió n
S o p o rte
P ro te c c ió n C o m p / P riv T a m a ñ o
C ó d ig o
F ic h e ro
RX
C o m p a rtid a
F ijo
D a t. c o n v .i. F ic h e ro
RW
P riv a d a
F ijo
D a t. s in v .i.
S in s o p o rte
RW
P riv a d a
F ijo
P ila s
S in s o p o rte
RW
P riv a d a
V a ria b le
Heap
S in s o p o rte
RW
P riv a d a
V a ria b le
F . P ro y e c t.
F ic h e ro
p o r u s u a rio
C o m p ./P riv . V a ria b le
M . Com p.
S in s o p o rte
p o r u s u a rio
C o m p a rtid a
Fundamentos de Computadores II
Sistemas Operativos
V a ria b le
32
Modelo de memoria de un proceso
Fundamentos de Computadores II
Sistemas Operativos
33
Modelo de memoria de un proceso
2.4. Operaciones sobre regiones
Para estudiar la evolución del mapa de memoria a lo largo de la ejecución
de un proceso, se pueden distinguir las siguientes operaciones:
– Crear región: Implícitamente al crear mapa inicial (por parte del
SO) o por solicitud del programa en tiempo de ejecución de
ejecución (por ejemplo, al cargar una biblioteca dinámica)
– Eliminar región: Implícitamente al terminar el proceso o por
solicitud del programa en tiempo de ejecución (por ejemplo, al
desproyectar un archivo)
– Cambiar tamaño de la región: Implícitamente para la pila o por
solicitud del programa para el heap (cuando se hace malloc)
– Duplicar región: Operación requerida por el servicio fork de POSIX
Fundamentos de Computadores II
Sistemas Operativos
34
3. Esquemas de memoria basados
en asignación contigua
3.1.
3.2.
3.3.
3.4.
Esquema hardware
Gestión del SO
Política de asignación de espacio
Valoración del esquema contiguo
Fundamentos de Computadores II
Sistemas Operativos
35
Esq. de mem. basados en asignación 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 tamaño 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 función de traducción, 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 límite). Estos dos registros
sólo son accesibles en modo privilegiado.
– Los registros valla están desocupados cuando el S.O. toma el control
para acceder a todo el mapa de memoria.
Fundamentos de Computadores II
Sistemas Operativos
36
Esq. de mem. basados en asignación contigua
•
•
Registro límite: Se comprobará que las direcciones usadas por el
proceso no excedan el valor almacenado en él.
Registro base: Una vez realizada la comprobación anterior, se suma a
cada dirección el valor contenido en este registro, de forma que se
obtiene la dirección física pertinente.
0
Memoria
Proceso 4
Procesador
PC
10000
Hard. traducción (MMU)
8
R. límite
4000
Registro instrucción
LOAD R3, /1500
21000
NO
>
SI
Excepción
Fundamentos de Computadores II
Sistemas Operativos
R. base
+
10200
Proceso 7
15036
Proceso 3
20500
21000
22500
Proceso 2
25000
N
37
Esq. de mem. basados en asignación contigua
3.2. Gestión del SO
El S.O. almacena en el BCP cuáles son los valores de los registros
valla.
Dedica una estructura para conocer en todo momento el estado de la
memoria, identificando qué huecos están libres. Normalmente se usa
una lista en la que se almacena la dirección inicial y el tamaño de cada
hueco.
La gestión de esta lista obliga a comprobar, al desocupar espacio, si el
nuevo espacio libre puede unirse a huecos vecinos.
Problema:Según se van ejecutando procesos van quedando fragmentos de
memoria libres, que debido a su tamaño no podrán ser usados en
asignaciones de espacio a memoria. Este problema se denomina
fragmentación externa y conlleva una mala gestión de memoria.
Solución 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
38
Esq. de mem. basados en asignación contigua
3.3. Política de asignación 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 decisión que debe ser eficiente.
Este problema es un clásico: ¿Cómo asignar espacio para su
aprovechamiento óptimo?. Existen tres posibles enfoques:
a) Mejor ajuste (best-fit). Se elige la zona libre más pequeña donde
quepa el mapa del proceso.
•
Problema: Conlleva crear nuevos huecos de tamaño pequeño.
Además, elegir el hueco más pequeño obliga a mantener
ordenados por tamaño los huecos disponibles. No es eficiente
b) Peor ajuste. Se busca el hueco más grande, intentando evitar la
generación de huecos pequeños. Sigue precisando mantener el
control de los tamaños
c) El primero que ajuste (first-fit). Suele ser la mejor política. Muy
eficiente, ya que basta con encontrar una zona libre de tamaño
suficiente, y ofrece un aprovechamiento aceptable
Fundamentos de Computadores II
Sistemas Operativos
39
Esq. de mem. basados en asignación contigua
3.4. Valoración del esquema contiguo
•
Valoracion:
– Espacios independientes para procesos: mediante registros valla
– Protección: 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 fragmentación externa
– Mapas de MV de tamaño adecuado:
• No permite memoria virtual
Fundamentos de Computadores II
Sistemas Operativos
40
4. Intercambio
Fundamentos de Computadores II
Sistemas Operativos
41
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
expulsión no implica copiar toda la imagen del proceso (por ejemplo, no
es preciso ocupar los huecos ni el código, al poder recuperarse
fácilmente del ejecutable). Un proceso expulsado vuelve a cargarse
(swap-in) cuando esté listo para ejecutar y haya espacio en memoria.
Políticas de asignación de espacio en swap:
Preasignación: al crear el proceso se reserva espacio de swap.
NO Preasignación: sólo se reserva espacio de swap al expulsar.
(¿Semejanza con estado “suspendido”?)
Fundamentos de Computadores II
Sistemas Operativos
42
5. Memoria virtual
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
5.7.
Introducción
Paginación
Segmentación
Segmentación paginada
Paginación por demanda
Políticas de reemplazo
Política de asignación de marcos de
página
5.8. Hiperpaginación
5.9. Gestión del espacio de swap
5.10. Operaciones sobre las regiones de un
proceso
Fundamentos de Computadores II
Sistemas Operativos
43
Memoria virtual
5.1. Introducción
La técnica de la MV se usa prácticamente en todos los SSOO modernos.
Esta técnica se basa en transferir información entre memoria
principal y memoria secundaria (por lo que involucra varios niveles
de la jerarquía de memoria)
Suele implementarse en un esquema de paginación (es decir, la unidad
de información intercambiada entre los diferentes niveles de la jerarquía
de memoria es la página)
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 información necesaria para un proceso
(conjunto de trabajo) vaya ocupando la memoria principal según se va
necesitando (es decir, conjunto de trabajo === conjunto
residente)
Fundamentos de Computadores II
Sistemas Operativos
44
Memoria virtual
Ventajas:
a) Aumento del grado de multiprogramación. Por tanto, aumento
en el rendimiento del sistema
b) Posibilidad de ejecutar programas más grandes que la MV
disponible
El uso de la MV no implica que se acelere la ejecución del programa
(más bien al contrario, debido a la sobrecarga asociada a los
movimientos de información entre niveles de la jerarquía). Este
mecanismo no es apropiado para sistemas de tiempo real.
Fundamentos de Computadores II
Sistemas Operativos
45
Memoria virtual
5.2. Paginación
•
•
Página: Zona contigua de memoria de determinado tamaño. (Por
motivos de eficiencia se suele trabajar siempre con tamaños potencia
de 2. Ej:4 KB.)
Organización:
— El mapa de memoria del proceso se considera dividido en páginas.
— La memoria principal se considera dividida en marcos de página
(tamaño de marco = tamaño de página).
— Los marcos contendrán páginas de los procesos en ejecución
— La tabla de páginas (TP) relaciona cada página con el marco que
la contiene. El hardware de traducción (MMU) usa la tabla de
páginas para traducir direcciones lógicas a físicas
— Típicamente la MMU usa dos tablas de páginas (TP):
a) TP del usuario: Por ejemplo, direcciones lógicas que empiezan
por 0
b) TP del sistema: Por ejemplo, direcciones lógicas que empiezan
por 1. Estas sólo se podrán usar en modo sistema
Fundamentos de Computadores II
Sistemas Operativos
46
Memoria virtual
•
– Cada entrada de la tabla de páginas contendrá, además del número
de marco asociado con la página:
a) Información de protección: tipo de acceso permitido RWX
b) Bit de página válida/inválida: para indicar si dicha entrada
contiene una traducción asociada, es decir, si se corresponde
realmente con un marco
c) Bit de página accedida (Ref): activado cuando se accede
d) Bit de página modificada (Mod): activado cuando se escribe
e) Bit de desactivación de caché: se usa cuando la entrada
corresponde con direcciones de E/S
Tamaño de página: La elección de tamaño de página está
condicionada por diversos factores, entre los que hay que conseguir
equilibrio:
– Potencia de 2 y múltiplo del tamaño del bloque de disco
– mejor pequeño por:
• Menor fragmentación
• Se ajusta mejor al conjunto de trabajo
– mejor grande por:
• Tablas más pequeñas
• Mejor rendimiento de dispositivos de E/S
– Compromiso (entre 2K y 16K)
Fundamentos de Computadores II
Sistemas Operativos
47
Memoria virtual
•
•
Dirección:Una dirección lógica se obtiene a partir de:
nº página + desplazamiento
Problema:
– La paginación no ofrece una solución óptima. Lo ideal sería que
cada palabra del mapa de memoria de un proceso pudiera ubicarse
en cualquier dirección. Esta solución es inviable debido al coste de
traducción
– Al no ser así, con la paginación se asigna a cada proceso un
número entero de marcos de página, aunque el espacio de su
mapa de memoria no sea un múltiplo entero del tamaño de página.
Por tanto, se irán generando huecos (memoria no aprovechada, en
la última de las páginas que no se llena de forma completa). Este
proceso se denomina fragmentación interna (implica que, en
término medio, cada proceso desperdicia la mitad de una página)
Fundamentos de Computadores II
Sistemas Operativos
48
Memoria virtual
Dirección lógica
Página
0
1
2
3
Byte
Marcos de página
Registro base de la TP
(RIED)
n
MP: direcciones físicas
Fundamentos de Computadores II
Sistemas Operativos
49
Memoria virtual
T. Páginas Proceso 1
Página 0
Marco 2
Página 1
Marco N
..............
Página M
Marco 3
T. Páginas Proceso 2
Página 0
Marco 4
Página 1
Marco 0
..............
Página P
•
Memoria
Pág. 1 Pr. 2
Marco 0
Pág. P Pr. 2
Marco 1
Pág. 0 Pr. 1
Marco 2
Pág. M Pr. 1
Marco 3
Pág. 0 Pr. 2
Marco 4
............
Pág. 1 Pr. 1
Marco N
Marco 1
Problema: Fragmentación, 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
50
Memoria virtual
•
•
Otras cuestiones:
– En este esquema, el S.O. mantiene una tabla de páginas por cada
proceso. Cuando se produce un cambio de contexto se indica a la
MMU qué tabla de páginas usar
– El S.O. mantiene una única tabla de páginas 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
información 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
características de cada región y qué rango de páginas pertenecen a
cada región
Desperdicio de espacio: Mucho mayor gasto en tablas que con
asignación contigua: es el precio de mucha mayor funcionalidad
Fundamentos de Computadores II
Sistemas Operativos
51
Memoria virtual
•
•
Implementación de la tabla de páginas:
– Las tablas de páginas se mantiene normalmente en memoria
principal. Problemas: eficiencia y gasto de almacenamiento
a) Eficiencia: cada acceso lógico requiere dos accesos a memoria
principal, a la tabla de páginas + al propio dato o instrucción.
Solución: caché de traducciones –› TLB
b)Gasto de almacenamiento: tablas muy grandes. Ejemplo:
páginas 4K, dir. lógica 32 bits y 4 bytes por entrada, la tabla de
páginas de cada proceso tendrá 4MB. Solución: tablas
multinivel y tablas invertidas
Valoración :
– Espacios independientes para procesos: mediante tablas de páginas
– Protección: mediante tablas de páginas
– Compartir memoria: entradas corresponden con mismo marco (bajo
supervisión del SO dos procesos pueden compartir una página
asociada al mismo marco)
– Soporte de regiones: bits de protección, bit de validez: no se
reserva espacio para huecos
– Maximizar rendimiento: Si, al permitir esquemas de memoria más
flexibles
– Mapas de tamaño adecuado: sí, al permitir esquemas de memoria
virtual
Fundamentos de Computadores II
Sistemas Operativos
52
Memoria virtual
TLB (Translation Look-aside Buffer): Consta de una memoria asociativa con
información sobre últimas páginas accedidas.
• Para el multiproceso, existen varias posibilidades:
– La TLB no incluye información del proceso. En este caso, habrá que
invalidar la TLB en los cambios de contexto
– Entradas en TLB incluyen información sobre proceso: en este caso,
debe existir un registro de UCP para mantener la identificación del
proceso actual
• Implementación
– HW: La MMU consulta la TLB y si falla, se usa la TP en memoria.
• Ventajas: Es un proceso muy rápido
• Inconvenientes: Actualizar la TP en cambios de contexto y hay que
invalidar la TLB cuando se produce un cambio de contexto (si no tiene
información del PID)
– SW: La MMU no usa la TP, sino que sólo consulta TLB. En caso de fallo,
se activa el SO, que ha de buscar la entrada en la tabla de páginas
(mediante programa), e insertar en la TLB la traducción hecha, de forma
que se pueda reutilizar.
• Ventajas: flexibilidad, ya que la tabla de páginas puede ser definida a
conveniencia, sin restricciones impuestas por el hardware
• Inconvenientes: Es menos eficiente, ya que parte del proceso de
traducción se realiza mediante programa.
Fundamentos de Computadores II
Sistemas Operativos
53
Memoria virtual
Una de las opciones disponibles para disminuir el tamaño requerido por las
tablas de páginas es la tabla de páginas multinivel
•
Organización:Se trata de una tabla de páginas 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 página
•
Dirección: La dirección lógica especifica la entrada a usar en cada nivel
• 1 campo por nivel + desplazamiento
•
Accesos:Un acceso lógico supone M + 1 accesos a memoria. Solución:
uso de TLB
•
Invaliadación:Si todas las entradas de una TP son inválidas, no se
almacena esa TP y se pone inválida la entrada correspondiente de la TP
superior
•
Ahorro de espacio:Si el proceso usa una parte pequeña de su espacio
lógico, se consigue ahorro en espacio para almacenar TPs
Fundamentos de Computadores II
Sistemas Operativos
54
Memoria virtual
Página
1er nivel
2º nivel
Dirección lógica
Byte
0
1
2
3
Marcos de página
0
1
2
3
n
Registro base de la TP
(RIED)
n
0
1
2
3
n
Fundamentos de Computadores II
Sistemas Operativos
MP: direcciones físicas
55
Memoria virtual
•
Ejemplo: Proceso que usa 12MB superiores y 4MB inferiores
– 2 niveles, páginas de 4K, dir. lógica 32 bits (10 bits por nivel) y 4
bytes por entrada
– Tamaño: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)
•
Ventajas adicionales: permite compartir TPs intermedias y sólo 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
56
Memoria virtual
m e m o ria
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
Ta b la d e p á g in a s
p rim e r n iv e l
V
..
.
P á g in a 0
V
P á g in a 1 0 2 4
V
I
P á g in a 2 0 4 7
I
V
..
.
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
57
Memoria virtual
Otra alternativa para disminuir el espacio necesario por la tabla de páginas
es la tabla de páginas invertida
• Organización:
– La tabla contendrá tantas entradas como marcos de página haya.
– Cada entrada almacena la página cargada en dicho marco junto con
sus características:
• Número de página,
• Proceso dueño de la página
– El tamaño de la tabla de páginas es proporcional a la memoria
disponible.
• Accesos:La MMU usa una TLB convencional, pero si falla la traducción se
accede a la tabla de páginas invertida. Al estar la tabla organizada por
marcos no se puede hacer una búsqueda directa. Debería accederse a
todas las entradas en busca de la página correspondiente. Por esta
razón se suele organizar como una tabla hash
• Ahorro de espacio: Se reduce el espacio de almacenamiento necesario,
ya que sólo se guarda información sobre las páginas válidas
Fundamentos de Computadores II
Sistemas Operativos
58
Memoria virtual
Dirección lógica
pid
Página
Byte
i
pid
página
i
Byte
Dirección física
Fundamentos de Computadores II
Sistemas Operativos
59
Memoria virtual
5.3. Segmentación
Con la paginación la MMU no dispone de información sobre las regiones
de los procesos y sólo entiende de páginas. Por esta razón, el SO debe
mantener una lista de las páginas que componen cada región, lo
que supone varias desventajas:
• Al crear una región hay que cuidar que todas las páginas
asociadas tengan la misma información de control
• Para poder compartir una región es preciso que las entradas de
varios procesos apunten a los mismos marcos
Segmentación: 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 generalización de los
registros valla base y límite, pero usando un par de registros por
cada segmento
Fundamentos de Computadores II
Sistemas Operativos
60
Memoria virtual
•
•
Dirección:Una dirección lógica estará compuesta por un número de
segmento y un desplazamiento en el mismo.
Traducción: La forma de realizar la traducción puede apreciarse en la
imagen siguiente:
d ire cc ió n ló g ic a
s
d
ta b la d e se g m e n to s
b a se
lím ite
>
NO
+
m e m o ria
SI
E x c e p c ió n
Fundamentos de Computadores II
Sistemas Operativos
61
Memoria virtual
•
•
•
Tabla de segmentos:En este caso, la MMU usa una tabla de segmentos
(TS).
Organización:
– El SO mantiene una TS por proceso, de forma que en cada cambio
de contexto se notifica a MMU cuál debe usar
– Cada entrada de TS contiene (entre otros):
• Registro base y límite del segmento
• protección: RWX
Problema: Fragmentación Externa
– En este esquema se produce fragmentación 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 están libres y cuáles ocupadas: es decir, estructuras de
datos que identifiquen huecos y zonas asignadas
Fundamentos de Computadores II
Sistemas Operativos
62
Memoria virtual
•
Valoración:
– Espacios independientes para procesos: mediante su propia TS, que
crea un espacio lógico independiente
– Protección: mediante TS, ofreciendo espacios disjuntos de memoria
– Compartir memoria: bajo control del SO es posible que dos o más
procesos tengan un segmento asociado a la misma zona de memoria
– Soporte de regiones: bits de protección
– Maximizar rendimiento : No lo maximiza, por la fragmentación
externa
– Mapas de tamaño 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
63
Memoria virtual
5.4. Segmentación paginada
Se intenta aunar las ventajas de ambos esquemas: segmentación y
paginación:
– Segmentación: soporte para regiones.
– Paginación: mejor uso del espacio de memoria.
•
Organización:
– Entrada en TS apunta a una TP para el segmento.
– El espacio del segmento está compuesto de varias páginas, de
forma que su espacio no tiene que ser contiguo.
Fundamentos de Computadores II
Sistemas Operativos
64
Memoria virtual
•Traducción:La traducción se lleva a cabo según se indica.
d ire cc ió n ló g ic a
s
p
d
ta b la d e s e g m e n to s
d ir. T. P á g .
lím ite
>
NO
SI
E xce p ció n
Fundamentos de Computadores II
Sistemas Operativos
ta b la d e p á g in a s
p a ra s e g m e n to s
p
m
m
d
m e m o ria
d ire cc ió n
físic a
65
Memoria virtual
•
Valoración:
– Espacios independientes para procesos: mediante TS
– Protección: 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 protección
– Maximizar rendimiento: la paginación aprovecha eficientemente el
espacio de memoria.
– Mapas de tamaño adecuado: permite esquemas de memoria virtual
•
Ventajas: Frente a paginación sin segmentos facilita al SO la gestión de
las regiones, pero requiere HW más complejo
Fundamentos de Computadores II
Sistemas Operativos
66
Memoria virtual
5.5. Paginación por demanda
Una vez analizados los diferentes esquemas hardware vamos a ver cómo
se articulan para construir un esquema de memoria virtual (estos
esquemas también 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
paginación pura o segmentada. De esta forma, la unidad de información
intercambiada entre memoria principal y secundaria es la página.
•
Normalmente la transferencia de información se lleva a cabo bajo
demanda (paginación por demanda). De esta forma, cuando un
proceso necesita acceder a una página que no está en memoria
principal, se genera un fallo de página 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 páginas actuales (ello se
hace mediante un algoritmo de reemplazo)
Fundamentos de Computadores II
Sistemas Operativos
67
Memoria virtual
•
La construcción de un sistema de memoria virtual sobre un procesador
con paginación implica usar un bit de validez en las entradas de la
tabla de páginas, que indica si la página es válida. Estarán marcadas
como inválidas todas las páginas que no residen en MP, así como las
que constituyen huecos en el mapa de memoria.
•
Para las entradas correspondientes a páginas no residentes en MP, la
entrada principal, en lugar de almacenar el marco donde reside
contendrá la dirección del dispositivo de memoria en que se
encuentra almacenada. De forma que cuando se produce un acceso a
una de estas páginas, se produce una excepción y se activa el SO,
responsable de hacer la transferencia desde memoria secundaria.
•
Algunos sistemas también usan la técnica de prepaginación. Al ocurrir
un fallo de página no sólo traen la página en cuestión, sino también las
cercanas, al suponerse que se usarán en un corto plazo de tiempo. La
efectividad de esta técnica dependerá del acierto de la predicción.
Fundamentos de Computadores II
Sistemas Operativos
68
Memoria virtual
Veamos cómo se gestiona la ocurrencia de un fallo de página:
• La MMU genera una excepción. Normalmente deja en un registro
especial la dirección que causó el fallo
• Se activa el SO, que comprueba:
– Si la página es inválida, se aborta el proceso (solución normal,
aunque también podría bastar con el envío de una señal).
– Si la página es ausente se siguen los pasos siguientes:
a) Se consulta la tabla de marcos para ver si hay algún hueco
libre:
i. Si no hay ningún marco libre se aplica el algoritmo de
reemplazo, que decidirá el marco a desalojar. La página
almacenada hasta entonces se marca como inválida. 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, marcándose como válida
dicha entrada en la TP y apuntando el marco en que está
almacenada
Fundamentos de Computadores II
Sistemas Operativos
69
Memoria virtual
•
En el peor de los casos un fallo de página puede suponer dos
operaciones de E/S:
a) Salvaguarda de la página expulsada
b) Lectura de la página nueva
Dos políticas definen el funcionamiento del sistema de memoria
•
Política de reemplazos:
– Reemplazo local: Sólo puede usarse para reemplazo un marco
asignado al proceso que causa fallo
– Reemplazo global: Puede usarse para reemplazo cualquier marco
•
Política de asignación de espacio a los procesos:
– Asignación fija: El número de marcos de página para cada proceso
es fijo.
– Asignación dinámica: El número de marcos de página para cada
proceso es dinámico
Fundamentos de Computadores II
Sistemas Operativos
70
Memoria virtual
5.6. Políticas de reemplazo
•
Objetivo: Minimizar la tasa de fallos de página.
•
Cada algoritmo descrito tiene versión local y global:
– Local: criterio se aplica a las páginas residentes del proceso
– Global: criterio se aplica a todas las páginas residentes
•
Algoritmos a estudiar
A. Óptimo
B. FIFO
C. Reloj (o segunda oportunidad)
D. LRU
E. Buffering de páginas
F. Retención de páginas en memoria
Fundamentos de Computadores II
Sistemas Operativos
71
Memoria virtual
A) Algoritmo óptimo
•
•
•
•
Criterio: Página residente que tardará más en accederse
Implementación: Irrealizable, ya que supone disponer de una predicción
fiable del uso de las páginas en un futuro a medio plazo
Versión local y global
Interés para estudios analíticos comparativos
Fundamentos de Computadores II
Sistemas Operativos
72
Memoria virtual
B) Algoritmo FIFO
•
Criterio: se elimina la página que lleva más tiempo residente
•
Implementación: Fácil
– Páginas residentes en orden FIFO –› se expulsa la primera
– No requiere hardware especial
– En el caso de estrategia local se mantiene una lista de páginas por
cada proceso. En el caso global, basta con una única lista
•
Problema:
– Una página que lleva mucho tiempo residente puede seguir
accediéndose frecuentemente.
– Su criterio no se basa en el uso de la página.
– Anomalía de Belady: Se pueden encontrar ejemplos en que al
aumentar el número de marcos aumenta el número de fallos de
página
Fundamentos de Computadores II
Sistemas Operativos
73
Memoria virtual
C) Algoritmo de segunda oportunidad o del reloj
Se trata de una modificación del algoritmo FIFO, para evitar que una
página residente desde hace tiempo sea desalojada pese a estar siendo
usada. Para ello se usa el bit de referencia Ref de las páginas, con lo
que se detecta su uso
•
Criterio:
– Si la página elegida por FIFO no tiene activo el bit Ref, es la página
expulsada
– Si lo tiene activo se da 2ª oportunidad antes de expulsar: se
desactiva el bit Ref, se pone página al final de FIFO, se aplica
criterio a la siguiente página
•
Implementación: Se puede implementar el orden FIFO mediante una
lista circular con una referencia a la primera página de la lista: se
visualiza como un reloj donde la referencia a la primera página es la
aguja del reloj
Fundamentos de Computadores II
Sistemas Operativos
74
Memoria virtual
D) Algoritmo LRU (last recently used)
•
•
•
Criterio: Basado en proximidad temporal de referencias: página
residente menos recientemente usada como página a eliminar
Implementación:Posible implementación con HW específico 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: página con contador más bajo
– Difícil implementación estricta (hay aproximaciones): precisaría una
MMU específica, ya que habría que controlar los accesos realizados a
cada marco para actualizar los contadores de los accesos en la TP
Nota: en su versión global, hay que considerar los contadores de las
páginas menos recientemente usadas teniendo en cuenta el tiempo
lógico de cada proceso
Fundamentos de Computadores II
Sistemas Operativos
75
Memoria virtual
E) Buffering de páginas
•
Criterio:Esta técnica intenta evitar el problema con las páginas
modificadas que han de ser desalojadas. En este caso, el tratamiento
del fallo de página implica realizar dos accesos a disco, uno para
almacenar la página modificada y para traer la nueva
•
Implementación:
– Mantiene una reserva de marcos libres. Cuando se produce un
fallo de página, siempre se usa un marco libre (es decir, en verdad
no hay reemplazo)
– Cuando el número de marcos libres queda por debajo de cierto
umbral se activa un “demonio de paginación”, que aplica
repetidamente el algoritmo de reemplazo:
• Páginas no modificadas pasan a lista de marcos libres
• Páginas modificadas pasan a lista de marcos modificados:
cuando se escriban a disco pasan a lista de libres; suelen
escribirse en tandas (lo que mejora el rendimiento)
– Si se referencia una página 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
76
Memoria virtual
F) Retención de páginas en memoria
•
Criterio:No todas las páginas son reemplazables
•
Aplicación:
– Se aplica a páginas del propio S.O: si sus páginas están fijas en
memoria, su gestión es más sencilla
– También se aplica mientras se hace DMA sobre una página. La
página no será reemplazable hasta que finalice la operación sobre
ella
•
Implementación: Algunos S.O. ofrecen a las aplicaciones un servicio
para fijar en memoria una o más páginas 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
77
Memoria virtual
5.7. Política de asignación de marcos de página
El SO deberá decidir cuántos marcos de página asigna a cada proceso:
a) Asignación Fija
b) Asignación Dinámica
A) Asignación fija
•
•
•
•
Número constante de marcos asignados al proceso. Puede depender
de las características del proceso: tamaño, prioridad,...
No se adapta a las distintas fases de ejecución. Como positivo, el
comportamiento del proceso es relativamente predecible
Sólo tiene sentido usar estrategia de reemplazo local
La arquitectura impone el Nº mínimo de marcos de página: mínimo
número de marcos a asignar igual al número de referencias que
aparezca en la instrucción que más fallos de página pueda generar
Fundamentos de Computadores II
Sistemas Operativos
78
Memoria virtual
B) Asignación dinámica
•
•
•
El número de marcos asignados a un proceso es variable
dependiendo del comportamiento del proceso (y posiblemente de los
demás procesos).
Se adapta a las diferentes fases por las que puede pasar un proceso
Se pueden usar tanto estrategias de reemplazo global como local.
– Asignación dinámica + reemplazo local: el proceso va aumentando o
disminuyendo su conjunto residente dependiendo de su
comportamiento (comportamiento relativamente predecible)
– Asignación dinámica + reemplazo global: los procesos compiten por
el uso de las páginas entre ellos (comportamiento difícilmente
predecible)
Fundamentos de Computadores II
Sistemas Operativos
79
Memoria virtual
5.8. Hiperpaginación (thrashing)
•
Definición:Tasa excesiva de fallos de página de un proceso o en el
sistema, debido a que el número de marcos de página asignados es
insuficiente para albergar el conjunto residente
– Con asignación fija. Hiperpaginación en el proceso Pi si
conjunto residente de Pi < conjunto de trabajo Pi
– Con asignación variable. Hiperpaginación en el sistema si
nº marcos disponibles <  conjuntos de trabajo de los procesos
•
•
Problema: decae el grado de uso de la CPU. Los procesos están casi
siempre en colas de dispositivo de paginación.
Solución: controlar la carga:
– Disminuir el grado de multiprogramación,
– Suspender uno o más procesos liberando sus páginas residentes
•
¿Cómo detectar esta situación?
Fundamentos de Computadores II
Sistemas Operativos
80
U tiliza c ió n d e la U C P
Memoria virtual
g ra d o d e m u ltip ro g ra m a c ió n
Se verán a continuación algunas estrategias de control de la carga de
trabajo:
A. Estrategia del conjunto de Trabajo
B. Estrategia de administración basada en la frecuencia de fallos
de página
C. Estrategia de control de carga para algoritmos de reemplazo
globales
Fundamentos de Computadores II
Sistemas Operativos
81
Memoria virtual
A) Estrategia del conjunto de trabajo
•
Objetivo: Determinar el conjunto de trabajo de cada proceso, es decir,
las páginas 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á algún(os) proceso(s),
que se reactivan cuando haya marcos suficientes
•
Condición: Si el SO es capaz de detectar el conjunto de trabajo de cada
proceso, puede especificarse una estrategia de asignación dinámica
con reemplazo local
•
Implementación: Difícil, ya que precisaría una MMU específica que
controlara las páginas accedidas por cada proceso.
•
Aproximación: Estrategia basada en frecuencia de fallos de página
(PFF), controlando la tasa de fallos de página de cada proceso
Fundamentos de Computadores II
Sistemas Operativos
82
Memoria virtual
B) Estrategia basada en frecuencia de fallos de página
Objetivo: Controlar la tasa de fallos de página por proceso
Proceso:
– Si tasa < límite inferior, se liberan marcos aplicando un algoritmo de
reemplazo
– Si tasa > límite superior, se asignan nuevos marcos. Si no hay
marcos libres se suspende algún proceso
ta sa d e fa llo s d e p á g in a
•
•
lím ite su p e rio r
lím ite in fe rio r
n ú m e ro d e m a rco s
Fundamentos de Computadores II
Sistemas Operativos
83
Memoria virtual
C) Estrategia de control de carga para algoritmos de
reemplazo globales
•
Objetivo: Controlar la hiperpaginación 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 páginas. Un demonio de paginación controla el
número de marcos libres
– Si el número de marcos libres < umbral, el demonio de paginación
aplica reemplazo
– Si se repite con frecuencia la falta de marcos libres: un proceso
“swapper” suspende procesos
Fundamentos de Computadores II
Sistemas Operativos
84
Memoria virtual
5.9. Gestión del espacio de swap
La asignación del espacio de swaping puede seguir dos técnicas:
a) Preasignación de swap:
Al crear la nueva región se reserva espacio de swap para ella. Al
expulsar una página, con esta estrategia, ya habrá espacio de
swap para almacenar su contenido
b) Sin preasignación de swap:
Al crear una región no se hace reserva de swap. Las páginas de la
región se irán trayendo a MP por demanda desde el soporte de
la región. Sólo se reserva espacio de swap para una página
cuando es expulsada por primera vez
Tendencia actual: Se suele utilizar más la estrategia sin preasignación,
puesto que la preasignación de swap conlleva un peor aprovechamiento
de memoria secundaria (toda página debe tener reservado espacio de
swap).
Fundamentos de Computadores II
Sistemas Operativos
85
Memoria virtual
5.10. Operaciones sobre regiones de un proceso
Se considerarán a continuación las siguientes operaciones sobre las
regiones de un proceso en un sistema con memoria virtual:
a) Creación de región:
Al crear el mapa inicial o por solicitud posterior
b) Liberación de región:
Al terminar el proceso o por solicitud posterior
c) Cambio de tamaño de región:
Aumento de tamaño: hay que comprobar que no se solape con
otra región y equiparar las nuevas páginas a las ya existentes
en la región.
El caso de expansión de la pila es algo más complejo.
Disminución de tamaño
d) Duplicado de región:
Operación requerida por el servicio fork de POSIX
Se duplica todo y se trata de una operación costosa
Fundamentos de Computadores II
Sistemas Operativos
86
Memoria virtual
a) Creación de nueva región
Acciones:
• Al crear una región no se asigna MP ( se hará por demanda).
• Se marcarán las páginas como no residentes y válidas (fallo de
página cuando se intenten acceder)
• El S.O. actualiza la tabla de regiones y guarda la información
correspondiente a las páginas de la región, rellenando las entradas de la
TP. Debe buscar un hueco en el mapa de memoria para asignar a nueva
región.
• Según el soporte:
– Soporte en archivo: Páginas marcadas como Cargar de archivo
(CA) y se almacena dirección del bloque del archivo correspondiente
– Sin soporte: Páginas marcadas como Rellenar con ceros (RC) y se
inicializa cuando hay un fallo de página.
• Si la región es privada con preasignación de swap, se reserva espacio
de swap
• Si la región es la pila:
– Se copian los argumentos iniciales del proceso en bloque(s) de swap
Fundamentos de Computadores II
Sistemas Operativos
87
Memoria virtual
•
Algoritmo de expulsión:
– Si la región es privada se escribe página en swap. Si no hay
preasignación de espacio swap, en la primera expulsión se reserva
espacio. Posteriores fallos se sirven de ese bloque de swap
– Si la región es compartida se escribe página en soporte, para que
todos los procesos puedan ver las modificaciones. Todos los fallos se
sirven del soporte
•
En la creación del mapa inicial (servicio exec en POSIX), se crean las
regiones según sus características
• Código: 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 páginas inválidas, tanto para el HW como
para el S.O.
Fundamentos de Computadores II
Sistemas Operativos
88
Memoria virtual
Swap
A rc h ivo E je cu ta b le
Ta b la d e p á g in a s
1ªpág.
C ódigo
1ªpág.
D at.v.i.
RX
C abe ce ra
A B lo q u e T (a rch .)
...........................
B loqu e T
R W A B lo q u e U (a rch .)
...........................
B loqu e U
RW A
B lo q u e S (sw a p)
D atos co n valor in icial
... ...... ..... ..
1ªpág.
R W A R e lle n a r co n 0
D at.n o.v.i.
...........................
1ªpág.
P ila
C ódigo
B loqu e S
P ila
Estado inicial de ejecución en un sistema sin preasignación de swap
Fundamentos de Computadores II
Sistemas Operativos
89
Memoria virtual
b) Liberación de región
• Acciones:
– Actualizar tabla de regiones para eliminar región
– Marcar como inválidas páginas asociadas
– Si la región es privada, se libera el espacio de swap asociado
• Cuando:
– Solicitud explícita (p.ej. desproyección de región).
– Finalización 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
90
Memoria virtual
c) Cambio de tamaño
• Acciones:
– Si disminuye:
• Se ajusta la tabla de regiones.
• Se marcan páginas como inválidas.
• Se libera espacio de swap
– Si aumenta:
• Se comprueba que no haya solapamiento.
• Se fijan nuevas páginas como no residentes y con las mismas
características que otras páginas de la región.
• Si hay preasignación se reserva espacio en swap para las nuevas
páginas.
• Casos especiales:
– Expansión del heap: Solicitada por programa mediante servicios
del S.O. Se marcan las páginas correspondientes como RC,
privadas, RW
– Expansión de pila no proviene de una solicitud del proceso, sino de
la propia evolución de la pila. Por esta razón esta operación es
automática
Fundamentos de Computadores II
Sistemas Operativos
91
Memoria virtual
d) Duplicado de una región
• Acciones:
– Se duplican las regiones privadas del padre y se comparten las no
privadas
•
La copia de una región de un proceso en el mapa de memoria de otro
proceso es una operación costosa, ya que también se debe copiar el
contenido.
•
•
Problema: La ejecución de fork sería muy ineficiente.
Solución: copy-on-write (COW). Se comparte una página mientras no se
modifique. Si un proceso la modifica, se crea una copia para él. Esta
operación se denomina duplicado por demanda
Fundamentos de Computadores II
Sistemas Operativos
92
Memoria virtual
•
Implementación de COW
– Se comparten las páginas de regiones duplicadas
– Se marcan de sólo lectura y con bit de COW.
– Al realizar la primera escritura se produce un fallo de proteccción y
se genera una copia privada para el proceso que escribe.
– Lo normal es que haya varios procesos con misma región duplicada,
por lo que existe un contador de uso por página.
– 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 optimización es
que en vez de duplicar todo el espacio de memoria sólo se duplica la TP.
Fundamentos de Computadores II
Sistemas Operativos
93
5. Archivos proyectados en
memoria
Fundamentos de Computadores II
Sistemas Operativos
94
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 técnica de la proyección 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 páginas asociadas al archivo.
Servicio:
– La generalización de la técnica de memoria virtual permite ofrecer a
los usuarios una forma alternativa de acceder a los archivos.
Fundamentos de Computadores II
Sistemas Operativos
95
Archivos proyectados en memoria
• Proceso: Se rellenan las entradas de la TP correspondientes con :
—Página no residente,
—CA (cargar de archivo),
—Privada/compartida y
—Protección (indicada en la llamada).
M ap a d e m em oria
De esta forma,
cuando el
programa accede
a una posición
de memoria
1ªpág.
A rchivo
asociada al
archivo proyectado,Ú ltim a pág.
A rchivo
está accediendo
realmente
al archivo
C ódigo
Ta bla de pá gin as
D atos con valor in icial
...........................
A rc hivo
D atos sin valor in icial
B loqu e 0
RW A B loque 0 (arch.)
...........................
B loqu e 1
RW A
B loque N (arch.)
...........................
102 40
B loqu e 2
A rchivo Proyectado
.............
B loqu e N
P ila
Fundamentos de Computadores II
Sistemas Operativos
96
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 información ya que el S.O.
transfiere directamente la información entre la región de memoria y
el archivo.
– Se facilita la programación, ya que una vez proyectado se accede
al archivo como si fuera una estructura de datos en memoria
•
Ejemplo: Típicamente las bibliotecas dinámicas se cargan usando este
tipo de proyección: la zona de código se proyecta como compartida y la
zona de datos con valor inicial se proyecta como privada
Fundamentos de Computadores II
Sistemas Operativos
97
6. Servicios de gestión de
memoria
Fundamentos de Computadores II
Sistemas Operativos
98
Servicios de gestión de memoria
El gestor de memoria realiza funciones internas. Por eso, ofrece pocos
servicios directos para las aplicaciones. Básicamente están relacionados
con la proyección de archivos:
– POSIX
• Proyectar un archivo: mmap
• Desproyectar un archivo: munmap
– Win32
• Proyectar un archivo: 2 pasos:
– Crear proyección: CreateFileMapping
– Realizar proyección: MapViewOfFile
• Desproyectar un archivo: UnmapViewOfFile
Fundamentos de Computadores II
Sistemas Operativos
99
Servicios de gestión de memoria
void *mmap(void *direc, size_t lon, int prot, int indic, int desc, off_t desp);
Establece la proyección entre el espacio de direcciones de un proceso y un
archivo.
– Devuelve la dirección de memoria donde se ha proyectado el archivo
– direc: dirección donde proyectar. Generalmente se utiliza NULL,
con lo que el S.O. elige la dirección por su cuenta
– lon: especifica el número de bytes a proyectar
– prot: el tipo de acceso, lectura (PROT_READ), escritura
(PROT_WRITE) o ejecución (PROT_EXEC), o cualquier combinación
de ellas
– indic: propiedades sobre la región, compartida (MAP_SHARED, un
proceso hijo compartirá la región con el padre), privada
(MAP_PRIVATE, el hijo obtiene copia propia de la región), fija
(MAP_FIXED, el archivo ha de proyectarse en una direc´ción
específica)
– desc: representa el descriptor de archivo a proyectar.
– Desp: desplazamiento dentro del archivo a partir del cual se realiza
la proyección.
Fundamentos de Computadores II
Sistemas Operativos
100
Servicios de gestión de memoria
void munmap(void *direc, size_t lon);
Desproyecta parte del espacio de direcciones de un proceso desde la
dirección direc hasta direc+lon.
Fundamentos de Computadores II
Sistemas Operativos
101
Descargar

Gestión de memoria