Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Gestin de Memoria
3.1 Gestin bsica de memoria
3.2 Intercambio (swapping)
3.3 Memoria virtual
3.4 Algoritmos de sustitucin de pginas
3.5 Modelando algoritmos de sustitucin de pginas
3.6 Cuestiones de diseo en sistemas paginados
3.7 Cuestiones de implementacin
3.8 Segmentacin
Introduccin (1)
Idealmente, los programadores quieren memoria
mucha, rpida, no voltil, barata
Historia
1980s: MDS (64k), monousuario, CP/M, overlays
1980s: VAX (4Mb), multiusuario (docenas)
2000s: Windows, 64Mb (normal 512 Mb)
Jerarqua de memorias
Cach: poca, rpida, cara
RAM: Mb, velocidad y precio medios
Disco: Gb, lenta y barata
Es un problema de costes
2
Introduccin (2)
Trabajos del gestor de memoria
Qu memoria est libre/ocupada
Asignacin/liberacin de memoria a procesos
Intercambio RAM-disco
Sin intercambio
MSDOS
minis
palmTop, empotrados
Grado de multiprogramacin
SOLUCIONES
1345
Dir.
Virtual
Registro de
Reubicacin
Ra = 2854
Rb = 4418
Rc = 512
Direccin
Real
5166
4418
747
4200
A
2854
2341
0
Espacio Virtual
512
Espacio Real
Direccin
Virtual
Registro
Lmite
Registro
Base
<
ERROR de
direccionamiento
RAM
!
1
Dos aproximaciones:
Intercambio (entre RAM y disco)
Memoria virtual (solo una parte del programa en RAM)
Fragmentacin Externa !
COMPACTACIN
Para
crecimiento
Datos de B
En uso
Cdigo de B
Pila de A
Para
crecimiento
A
(a)
S. O.
Para
crecimiento
Para
crecimiento
Datos de A
En uso
Cdigo de A
(b)
S. O.
Mapa de Bits
Lista de Bloques Libres
Sistema Buddy
Mapa de Bits
A
0
11111000
11111111
11001111
11111000
00111111
B
8
C
16
E
24
32
Mapa Grande
Grande
Mapa Pequeo
Fragmentacin Interna
creciente de tamaos
el primero que sirva = el que mejor se adapte
siguiente que sirva no tiene sentido
sobrecarga: mantener la lista ordenada en:
asignacin y
liberacin (compactar con vecinos?)
Algoritmo Quick Fit
lista separadas por tamao (2k, 4k, )
asignacin rpida; liberacin: compactacin
Cada nodo de la lista puede ser el propio bloque
2
20, 10, 18
12, 10, 9
20, 18, 15
20, 18, 9
Trozos de
tamao variable
PAGINACIN
SEGMENTACIN
2
Elegir vctima
Escribir a disco (si hace falta)
Cargar la nueva pgina.
Reiniciar MOV REG, 32780
P.ejem:
1. Vctima la del marco 1.
2. escribir? Indicar que pgina 1: X
3. Cargar pgina 8 en marco 1.
Indicar que pgina 8 en marco 1
1. Reiniciar MOV REG, 32780
Direccin fsica: 4108
Tamao de la tabla
Velocidad de traduccin
Pag. 0
Pag. 1
Pag. 2
Pag. 3
CPU
dir.
virtual
Tabla de
Pginas
Marco 0
Marco 1
...
...
...
.
dir ica
fs
Marco 2
...
...
...
...
...
...
...
Marco m
...
Pag. n
Memoria
Principal
Espacio de
Direcciones Virtuales
Stack
Gap
Datos
4 Mb (210*212=22*220)
Texto
Solo cargadas 4 TP
dir. fsica
1023
3
2
1
0
n marco
12288
4Mb (4194304))
Soluciones:
Todas las entradas en registros
Muy caro (hw)
Mucho tiempo en cambio contexto
Toda la tabla en memoria (de todos los procesos)
Registro RBTP (Registro Base de la Tabla de Pginas)
Dir. Entrada = [RBTP] + (n.pag * tamao de la entrada)
Cambio de contexto: recargar RBTP
Mantener en memoria slo la TP del proceso ejecutndose
Otras soluciones?
Elegir victima
Llevar victima a disco (si sucia)
En TP: victima no presente
Traer nueva pgina al marco donde estaba la vctima
Actualizar TP: nueva est presente y marco y dems info
R M
0 0
0 1
1 0
1 1
no referenciada, no modificada
no referenciada, modificada
referenciada, no modificada
referenciada, modificada
cab.
cola
0
7
15 Faltas de Pgina
Variante del FIFO para evitar sacar una pgina (vieja) muy utilizada
Si es la ms vieja y no ha sido referenciada (R=0), es la vctima
Si es la ms vieja y ha sido referenciada (R=1) entonces:
- R=0
- poner al final de la cola (como si fuese la ms nueva)
- Mirar la siguiente pgina en la lista
Implementaciones
Por hardware
Por software
0
7
cima
cargada
126
230
120
160
ltima referencia
280
265
270
285
R
1
0
0
1
M
0
0
0
1
Necesita 7 pginas
4.096-1.424 = 2.672
Fragmentacin
Interna
PERO
Pginas pequeas
Muchas pginas
Tabla de Pginas grande
p 2se
s = 1Mb,
p = 4kb
e = 8 bytes