Sie sind auf Seite 1von 62

Captulo 3

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

Clases de gestores de memoria


Con intercambio
Swapping y paginacin

Sin intercambio

Gestin bsica de memoria (1)


Monoprogramacin sin intercambio ni paginacin
Solo un programa en memoria (junto con el SO)
Se carga y se queda ah hasta que acaba (CP/M)
BIOS
(Basic Input
Ouput System)

MSDOS

minis

palmTop, empotrados

Gestin bsica de memoria (2)


Multiprogramacin con particiones fijas

Gestin bsica de memoria (3)


Multiprogramacin con particiones fijas
Planificacin: queda libre una particin, qu trabajo cargar?
El primero en la cola que quepa
Fragmentacin interna

El ms grande de la cola que quepa


Se perjudica a los pequeos (y debe ser al revs)
Disponer de una particin pequea
No retrasar un trabajo ms de k veces

OS/360, MFT (Multiprogramming with a Fixed number of


Task)
6

Gestin bsica de memoria (4)


Modelo de multiprogramacin

Grado de multiprogramacin

La utilizacin de CPU es funcin del n. de procesos en memoria

Gestin bsica de memoria (5)


Modelo de multiprogramacin
- Los procesos son independientes
- n: grado de multiprogramacin
- p: fraccin de tiempo que un proceso est esperando una I/O
- Utilizacin de la CPU = 1 pn
- Los procesos no son independientes: 1 sola CPU-> los otros en preparados
(esperando).
Aproximacin vlida. Ejemplo:
32Mb memoria,
el SO ocupa 16Mb
cada proceso de usuario 4Mb => n = 4; si p=0.8, CPU = 60%
Si compramos 16Mb => n = 8; si p=0.8, CPU = 83%; ganancia: 38%
Si compramos otros 16Mb CPU=93%; ganancia: 12%

(La seccin 4.1.4 no entra para el examen)

Gestin bsica de memoria (6)


Reubicacin y proteccin
Reubicacin: dnde reside un programa? esttica, dinmica
Las direcciones de un programa suelen ser relativas a su direccin de comienzo.
PERO ... al montar un programa no se sabe dnde se va a ejecutar.

SOLUCIONES

Modificacin de direcciones durante la carga (esttico)


Registro de Reubicacin (o registro base)
(permite reubicacin dinmica)
6000

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

Gestin bsica de memoria (7)


Reubicacin y proteccin
Proteccin: acceso indiscriminado a cualquier rea de memoria
tamao del programa
direccin comienzo particin

Direccin
Virtual

Registro
Lmite

Registro
Base

<

ERROR de
direccionamiento

RAM

!
1

Intercambio (swapping) (1)


Batch
Tiempo
Compartido

Se aceptan tantos trabajos como


quepan en memoria
Suele haber ms procesos de usuario
de los que caben en memoria
y hay que atenderlos a todos!

Dos aproximaciones:
Intercambio (entre RAM y disco)
Memoria virtual (solo una parte del programa en RAM)

Intercambio (swapping) (2)


PARTICIONES DE TAMAO VARIABLE
(el n, tamao y direccin vara con el tiempo)

Fragmentacin Externa !

COMPACTACIN

Intercambio (swapping) (3)


P.ejem: 4 bytes: 40ns. 256Mb: 2,7 s.
T4.4 (1ed) Ciertos sistemas con intercambio eliminan la fragmentacin externa
mediante compactacin. Suponga que una computadora con 1Mb de memoria
para usuario hace una compactacin cada segundo. Si tarda 0,5 microseg
en copiar un byte y el tamao medio de los huecos es de 0,4 el tamao medio
de los segmentos Cul es la fraccin del tiempo total de CPU que se utiliza
para la compactacin?

Intercambio (swapping) (4)


Puede crecer dinmicamente la memoria de un proceso?
Pila de B

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.

Intercambio (swapping) (5)


Gestin de memoria con mapa de bits
Se debe llevar la cuenta
de la memoria utilizada y
de los huecos libres

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

Tamao de la Unidad de Asignacin?


Pequeo

Mapa Grande

Grande

Mapa Pequeo
Fragmentacin Interna

Es caro buscar una zona libre de tamao K.

Intercambio (swapping) (6)


Gestin de memoria con listas enlazadas

Intercambio (swapping) (7)


Gestin de memoria con listas enlazadas
T4.4 Se trata de comparar la memoria necesaria para mantener la pista de los
bloques de memoria libre utilizando un mapa de bits o una lista enlazada.
La memoria es de 128 Mb y la unidad de asignacin es de n bytes. Para
El caso de la lista enlazada, suponer que la memoria consiste de una
secuencia alternada de segmentos y huecos, cada uno de 64kb. Tambin
suponer que cada nodo en la lista necesita una direccin de memoria de
32 bits, una longitud de 16 bits y un campo (siguiente nodo) de 16 bits.
Cuntos bytes se necesitan para mantener el mapa de bits y cuntos para
mantener la lista enlazada? Qu mtodo es el mejor?

Intercambio (swapping) (8)


Gestin de memoria con listas enlazadas
Lista de Bloques Libres (ordenados por direccin: liberacin)

Intercambio (swapping) (9)


Gestin de memoria con listas enlazadas
Lista de Bloques Libres (ordenados por direccin: asignacin)
El

primero que sirva


siempre se comienza en la cabecera
se generan muchos huecos pequeos al principio
Siguiente que sirva
lista circular; la cabecera se desplaza
fragmentacin externa: distribucin uniforme
El que mejor se adapte
recorrer toda la lista: lento
desperdicia ms memoria
El que peor se adapte
no es buena idea
1

Intercambio (swapping) (10)


Gestin de memoria con listas enlazadas
Lista de Bloques Libres (ordenados por tamao: asignacin)
Orden

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

Intercambio (swapping) (11)


T4.5 Considerar un sistema de intercambio en el que la memoria consiste de
Los siguientes huecos (en tamao) en el siguiente orden en memoria: 10kb,
4kb, 20kb, 18kb, 7kb, 9kb, 12kb y 15kb Qu hueco se elegir para
Satisfacer la prxima peticin de memoria:
a) 12kb
b) 10kb
c) 9kb
Para los algoritmos:
1) El primero que sirva
2) El que mejor se adapte
3) El que peor se adapte
4) El siguiente que sirva
1)
2)
3)
4)

20, 10, 18
12, 10, 9
20, 18, 15
20, 18, 9

Memoria Virtual (1)


No es necesario tener todo el programa en memoria RAM
Se podran ejecutar programas mayores que la RAM
Se podran tener ms procesos en memoria principal
Menos E/S por intercambio: ms velocidad
Se ocupa de tener la memoria de un proceso partida en
trozos, e ir cargando en memoria principal el trozo que es
necesario para poder continuar su ejecucin.
Trozos Iguales

Trozos de
tamao variable

PAGINACIN

SEGMENTACIN
2

Memoria Virtual (2). Paginacin

Posicin y funcin de la MMU


2

Memoria Virtual (3). Paginacin


La memoria virtual se divide en pginas
La memoria fsica en marcos de pgina
tamao pgina = tamao marco
Conversin:
MOV REG, 0
- Direccin 0 est en pgina 0
- Pgina 0 est en marco 2
- Direccin fsica es 8192
MOV REG, 8192
- Direccin 8192 est en pgina 2
- Pgina 2 est en marco 6
- Direccin fsica es 24576

MOV REG, 32780 ?

Memoria Virtual (4). Paginacin


32780 est en la pgina 8 (32768)
La pgina tiene X
La MMU genera un TRAP
FALTA de PGINA:
1.
2.
3.
4.

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

Memoria Virtual (5). Paginacin

Memoria Virtual (6). Tabla de pginas


Tabla de pginas: marco = TP (pgina)

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

Memoria Virtual (7). Tabla de pginas


Tamao de la tabla:

Direcciones virtuales = 32 bits (232 = 4Gb)


Si tamao pgina = 4Kb (212)
Nmero de pginas = 232/212 = 220 = 1Mg = n de entradas TP

Direccin virtual = 64 bits (264)


Si tamao de pgina = 4Kb (212)
Nmero de pginas = 264/212 = 252=222*230=222 G =
4,5 Peta entradas = 4,5 * 1015 entradas

Cada proceso tiene su propia tabla de pginas.


El n de entrada * tamao (bytes) de cada entrada.

Memoria Virtual (8). Tabla de pginas


Tablas de pgina multinivel:
- Evita mantener todas las
tablas de pgina en memoria

Stack

Gap

Datos
4 Mb (210*212=22*220)

Texto

Memoria Virtual (9). Tabla de pginas


direccin virtual: 0x00403004 (4206596, 0000 0000 0100 0000 0011 0000 0000 0100)
PT1 = 0000 0000 01 (4M-8M)

Solo cargadas 4 TP

PT2 = 00 0000 0011


Offset = 0000 0000 0100

dir. fsica

1023
3
2
1
0

n marco

12288
4Mb (4194304))

Memoria Virtual (10). Tabla de pginas


Estructura de una entrada:
32 bits aprox.

Nmero de marco en el que reside


Presente/ausente: 1 est; 0 no est.
Proteccin: 0 RW; 1 R
o
RWX
Modificada (bit de ensuciado): 1 sucia; 0 limpia
Referenciada: 0 cuando se carga; 1 cuando RW. Para sustitucin
Caching disabled: mquinas con E/S mapeada en memoria. No usar una copia
vieja de la cach (de la pgina que contiene la memoria E/S)

Memoria Virtual (11). Tabla de pginas


T4.13 Una computadora con direcciones de 32 bits utiliza una tabla de pginas de
dos niveles. Las direcciones virtuales se dividen en un campo de 9 bits para
la tabla de nivel superior y un campo de 11 bits para la tabla de nivel secundario;
el resto es para el desplazamiento dentro de una pgina. Cul es el tamao
de la pgina? Cuntas pginas existen en el espacio virtual de
direccionamiento?

Memoria Virtual (12). TLB


Tabla de pginas: Velocidad de traduccin

Una instruccin: 1, 2 o ms referencias a memoria


Cada referencia a memoria: consulta a la TP

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?

Memoria Virtual (13). TLB


Localidad referencial
TLB (Translation Lookaside Buffers) (memoria asociativa)
dentro de la MMU

(La seccin Software TLB Management no entra para el examen)

Memoria Virtual (14)


T4.17 En un ordenador los procesos tienen un espacio de direccionamiento de
1024 pginas y mantienen en memoria su tabla de pginas. La sobrecarga
por lectura de una palabra desde la tabla de pginas es de 5 ns. Para reducir
esta sobrecarga, el ordenador tiene una TLB con 32 entradas (pgina virtual,
num. marco) que tarda 1 ns en realizar una consulta. Cul debe ser la tasa
de aciertos en dicha memoria asociativa para reducir la sobrecarga a 2 ns.?

Memoria Virtual (15)


Tabla invertida de pginas
Tabla de pginas: Velocidad de traduccin

(Proceso, pgina virtual)

Memoria Virtual (16).


T4.21 Un ordenador con pginas de 8kB, memoria principal de 256MB y un
espacio de direccionamiento virtual de 64GB, utiliza una tabla invertida de
pginas para implementar su memoria virtual. Cmo de grande debera ser la
tabla hash para asegurar que por trmino medio la cadena hash tiene una longitud
menor que 1? Suponga que el tamao de la tabla hash es potencia de 2.

Memoria Virtual (17)


T4.12 Una mquina tiene un espacio de direcciones de 32 bits y una pgina de 8k.
la tabla de pginas est en hardware, con una palabra de 32 bits por cada
entrada. Al iniciar un proceso, la tabla de pginas se copia al hardware desde
la memoria, con una palabra cada 100ns. Si cada proceso se ejecuta durante
100ms (incluyendo el tiempo de carga de la tabla de pginas), cul es la
fraccin del tiempo de CPU que se dedica a la carga de las tablas de pginas?

Algoritmos de sustitucin de pginas (1)


Se produce una falta de pgina y no hay memoria libre:
1.
2.
3.
4.
5.

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

Cmo elegir la vctima?

Algoritmos de sustitucin de pgina


Problemas similares:
Memoria cach
Cach de un servidor web

Algoritmos de sustitucin de pginas (2)


Objetivo de todos los algoritmos de sustitucin:
Elegir pginas que generen el menor nmero de faltas de pgina.
En todos los algoritmos hay una constante: el n de marcos existentes

Algoritmo ptimo de sustitucin de pginas


Quitar la pgina que tardar ms tiempo en ser referenciada
Imposible implementar

Algoritmos de sustitucin de pginas (3)


No utilizada recientemente (NRU: Not Recently Used)
Basado en los bits R (referenciada) y M (modificada, ensuciado)
Inicialmente todas las pginas (en TP) R=0 M=0
Cada interrupcin de reloj, todas las pginas R=0
Clase 0:
Clase 1:
Clase 2:
Clase 3:

R M
0 0
0 1
1 0
1 1

no referenciada, no modificada
no referenciada, modificada
referenciada, no modificada
referenciada, modificada

Seleccionar una de la menor clase no vaca.


Por qu mejor eliminar de la clase 1 antes que de la clase 2?

Algoritmos de sustitucin de pginas (4)


FIFO (First-In First-Out)
El SO mantiene una lista de todas las pginas en memoria
La primera es la ms vieja; la ltima, la ms reciente
Eliminar la primera de la lista
Aadir la nueva a la cola de la lista

cab.
cola

0
7

15 Faltas de Pgina

Desventaja: la pgina ms vieja puede que sea frecuentemente accedida

Algoritmos de sustitucin de pginas (5)


FIFO (Anomala de Belady)

Suposicin: cuantos ms marcos menos faltas de pgina, PERO !!

Algoritmos de sustitucin de pginas (6)


Segunda Oportunidad (Second Chance)

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

Algoritmos de sustitucin de pginas (7)


Segunda oportunidad (Reloj)

Segunda oportunidad mueve pginas al final de la lista:


Si todas tienen R=1, las mueve todas (al final es FIFO)
Mejora mantener una lista circular (en forma de reloj)

Algoritmos de sustitucin de pginas (8)


Menos recientemente utilizada (LRU: Least Recently Used)
Supone que las pginas utilizadas recientemente, se utilizarn de nuevo
Vctima: la pgina que lleva ms tiempo sin ser referenciada
Hay que mantener una lista de todas las pginas en memoria
Cabeza: ms recientemente utilizada
Cola: menos recientemente utilizada
Problemas:
actualizar la lista en cada referencia a memoria!!
Sobrecarga en buscar una pgina, eliminarla, moverla a la cabeza

Implementaciones
Por hardware
Por software

Algoritmos de sustitucin de pginas (9)


Menos recientemente utilizada (LRU)
Hardware (1): Contador por cada entrada en la TP
En HW hay un contador C especial
C se incrementa despus de ejecutar cada instruccin
Despus de cada referencia a memoria, se almacena C en la entrada
correspondiente
Se elige como victima la que tenga el contador ms pequeo
Problemas eficiencia:
-

Almacenar el contador en cada referencia a memoria


Buscar en la TP el contador ms pequeo

Hardware (2): matriz NxN (N = n marcos que existen)


Se referencia el marco k:
1. Fila k a 1s
2. Columna k a 0`s

La fila con menor valor binario es la menos recientemente utilizada

Algoritmos de sustitucin de pginas (10)


Menos recientemente utilizada (LRU)
0

Algoritmos de sustitucin de pginas (11)


Menos recientemente utilizada (LRU)
Software (1): Mantener una pila con las pginas en memoria
Cuando se referencia una pgina, a la cima
La pgina del fondo de la pila es la menos recientemente usada
Problemas eficiencia: actualizar la pila en cada referencia a
memoria
7

0
7

cima

12 Faltas de Pgina. Con FIFO 15

Algoritmos de sustitucin de pginas (12)


Menos recientemente utilizada (LRU)
Software (2): aging
Cada pgina con un contador inicialmente a 0
Cada interrupcin de reloj mirar el contador de cada pgina
-

Desplazar un bit a la derecha cada contador


Sumar a la izquierda el bit R

La vctima es la pgina con menor contador


Problemas:
-

No se distingue qu pgina fue la ltima referenciada en un mismo


intervalo de reloj
Los contadores tienen un nmero finito de bits

Algoritmos de sustitucin de pginas (13)


Menos recientemente utilizada (LRU)
Software (2): aging

Algoritmos de sustitucin de pginas (14)


Resumen de los algoritmos de sustitucin
Optimo: No implementable
No utilizada recientemente: fcil implementar, pero los hay mejores
FIFO: puede expulsar pginas importantes
Segunda oportunidad: mejora sobre FIFO
Segunda oportunidad (reloj): ms eficiente que el anterior
LRU: excelente, pero difcil de implementar
Aging: buena aproximacin a LRU

(Las secciones 4.4.8 y 4.4.9 no entra para el examen)

Algoritmos de sustitucin de pginas (15)


T4.29 Un ordenador tiene cuatro marcos de pgina. El tiempo de carga, el
tiempo del ltimo acceso y los bits R y M para cada pgina son los que
aparecen a continuacin.
Pgina
0
1
2
3
(a)
(b)
(c)
(d)

cargada
126
230
120
160

ltima referencia
280
265
270
285

R
1
0
0
1

M
0
0
0
1

Qu pagina es reemplazada por NRU?


Qu pagina es reemplazada por FIFO?
Qu pagina es reemplazada por LRU?
Qu pagina es reemplazada por segunda oportunidad?

Cuestiones de diseo en sistemas paginados (1)


Conjunto de Trabajo y Trasiego
Los programas exhiben localidad en sus referencias
Conjunto de Trabajo:
El conjunto de pginas que actualmente est usando un proceso
Trasiego (Thrashing)
Un proceso causa faltas de pgina cada pocas instrucciones
Solucin: mantener en memoria el conjunto de trabajo
Problema: Qu pginas forman el conjunto de trabajo?
W (k,t): tamao del conjunto de trabajo
- en el instante t
- tomando las k ltimas referencias

Cuestiones de diseo en sistemas paginados (2)


Conjunto de Trabajo y Trasiego

Debe determinarse el valor de k para obtener w(k,t)


W(k,t) indica el conjunto de marcos que necesita un proceso en t

Cuestiones de diseo en sistemas paginados (3)


Poltica de asignacin local vs. global

Local: asignacin de memoria constante


Global: asignacin de memoria variable

Cuestiones de diseo en sistemas paginados (4)


Poltica de asignacin local vs. global
La global da mejores resultados si cambia el tamao conjunto de trabajo
Cunta memoria se asigna a cada proceso?
Algoritmo PFF (Page Fault Frequency)
indica cundo incrementar/decrementar el tamao del conjunto de trabajo
no indica qu pgina reemplazar frente a una falta de pgina

Cuestiones de diseo en sistemas paginados (5)


Control de carga
A pesar de todo, el sistema puede entrar en trasiego
PPF indica
Algn proceso necesita ms memoria
Pero no que un proceso necesita menos
Solucin :
Reducir el nmero de procesos que compiten por memoria
Sacar uno o ms a disco y repartir sus pginas
Reconsiderar el grado de multiprogramacin

Cuestiones de diseo en sistemas paginados (6)


Tamao de la pgina
Deben considerarse varios factores en competencia.
No existe ningn ptimo global
Si el tamao de un programa no
llena un nmero exacto de pginas
Programa:
26.000 bytes
Tamao de pgina: 4.096 bytes

Queda espacio sin utilizar


en la ltima de ellas

Necesita 7 pginas

Ocupa 6 pginas completas: 6x4.096 = 24.576


De la ltima pgina ocupa: 26.000-24.576 = 1.424
Desaprovecha:

4.096-1.424 = 2.672

Fragmentacin
Interna

Para un tamao de pgina t,


por trmino medio, se desaprovecha t/2 por programa
Interesan pginas pequeas

Cuestiones de diseo en sistemas paginados (7)


Tamao de la pgina

PERO
Pginas pequeas
Muchas pginas
Tabla de Pginas grande

Hw. ms caro, mquina ms cara


Ms tiempo de transferencia desde memoria
secundaria

Cuestiones de diseo en sistemas paginados (8)


Tamao de la pgina
Si solo consideramos la fragmentacin interna y la tabla de pginas:
s, tamao del programa (bytes)
p, tamao de la pgina (bytes)
e, tamao de cada entrada a la TP (bytes)
Desperdicio = se/p + p/2
Primera derivada con respecto a p e igualando a 0:
-se/p2 + = 0;

p 2se

s = 1Mb,
p = 4kb

e = 8 bytes

(Las secciones 4.6.4, 4.6.5, 4.6.6 y 4.6.7 no entra para el examen)

Cuestiones de diseo en sistemas paginados (9)


T4.31 Un ordenador proporciona a cada proceso 65536 bytes de espacio virtual
De direccionamiento, dividido en pginas de 4KB. Un programa particular tiene un
segmento de texto de tamao 32768 bytes, un tamao de datos de 16386 bytes
y un tamao de pila de 15870 bytes Cabe este programa en el espacio de
direccionamiento? Si el tamao de la pgina fuese de 512 bytes cabra?
Recuerde que una pgina no debe contener partes de dos segmentos distintos.

Das könnte Ihnen auch gefallen