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
9
Direccin
Virtual
Registro
Lmite
Registro
Base
<
ERROR de
direccionamiento
RAM
!
10
Tiempo
Compartido
Dos aproximaciones:
Intercambio (entre RAM y disco)
Memoria virtual (slo una parte del programa en RAM)
11
Fragmentacin Externa !
COMPACTACIN
12
13
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.
14
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
16
17
18
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
20
20, 10, 18
12, 10, 9
20, 18, 15
20, 18, 9
21
Trozos de
tamao variable
PAGINACIN
SEGMENTACIN
22
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
25
26
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
27
28
Stack
Gap
Datos
4 Mb (210*212=22*220)
Texto
29
Solo cargadas 4 TP
dir. fsica
1023
3
2
1
0
n marco
12288
4Mb (4194304))
30
31
32
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?
33
34
35
36
37
38
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
40
0
0
1
1
0
1
0
1
R M
no referenciada, no modificada
no referenciada,
modificada
referenciada, no modificada
referenciada,
modificada
cab.
cola
0
7
15 Faltas de Pgina
43
44
45
Implementaciones
Por hardware
Por software
46
47
48
0
7
cima
50
51
52
cargada
126
230
120
160
ltima referencia
280
265
270
285
R
1
0
0
1
M
0
0
0
1
53
kk
57
58
Necesita 7 pginas
4.096-1.424 = 2.672
Fragmentacin
Interna
PERO
Pginas pequeas
Muchas pginas
Tabla de Pginas grande
60
p 2se
s = 1Mb,
p = 4kb
e = 8 bytes
61
62