Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4 Memoria
4 Memoria
SOI
Fragmentacin
Compactacin
Esquemas no contiguos:
Paginacin
Segmentacin
Segmentacin paginada
Memoria Virtual: paginacin por
demanda
4
Memoria
Memoria
2
SOI
Conceptos generales
Conceptos generales
hardware
hardware
Jerarqua de
memoria:
Las cachs.
Tiempo efectivo
de acceso.
3
SOI
Jerarqua de Memoria
Jerarqua de Memoria
Los computadores usan una jerarqua de
memoria similar a la que muestra la figura.
CPU
Registros
Cach(s)
Hardware
Memoria
Principal
Almacn
Auxiliar
Bus de memoria Bus de E/S
Cach
Hardware
+ rpida en tiempo acceso
Tamao +
4
SOI
Cachs
Cachs
Cach contiene copia de instruccin/dato
que son accedidos +rpido que el original.
Hacer los casos frecuentes eficientes, los
caminos infrecuentes no importan tanto.
Denominamos:
Acierto de cach:
item en cach.
Fallo de cach:
no est en cach
operacin completa.
Cach Memoria CPU
Fallo
Acierto
I/D
5
SOI
Localidad
Localidad
Las cachs funcionan porque explotan las
localidad de las referencias del cdigo,
datos, y pila de los programas.
Tipos de localidad:
Espacial: si un item es referenciado, las
direcciones prximas a l tienden
tambin a ser referenciadas.
Temporal: si un item referenciado, tiende
de nuevo a ser referenciado en breve.
6
SOI
Tiempo de Acceso
Tiempo de Acceso
Efectivo
Efectivo
Cuando usamos cachs Cunto no cuesta
acceder a memoria? Denominamos
Tiempo efectivo de acceso (TAE) al tiempo
medio de acceso a una celda de memoria:
TAE = p*ta + (1-p)*tf TAE = p*ta + (1-p)*tf
Donde: p = probabilidad de acierto.
ta = tiempo de acceso si hay acierto.
1-p = probabilidad de fallo.
tf = tiempo de acceso si hay fallo.
7
SOI
Conceptos generales
Conceptos generales
software
software
Requisitos de la gestin de
memoria.
Niveles de gestin de
memoria.
Compilacin de programas:
Enlace y carga.
Espacios de direcciones:
lgico y fsico:
Traduccin de direcciones
Apoyo hardware a la
traduccin: la MMU
8
SOI
Requisitos de la gestin
Requisitos de la gestin
de memoria (i)
de memoria (i)
El SO asigna memoria a los procesos para su
ejecucin, garantizando:
Proteccin:
Un proceso no accede a memoria de otro.
Diferentes mdulos del programa deben
tener diferentes permisos de acceso.
Comparticin:
De datos/cdigo entre procesos.
Permite el ahorro de memoria.
Reubicacin: En sists. multiprogramados,
un programa debe poder cargarse en
diferentes zonas de memoria.
C
o
n
t
r
a
p
u
e
s
t
o
s
9
SOI
Requisitos de la gestin
Requisitos de la gestin
de memoria (y ii)
de memoria (y ii)
El SO debe esconder la
organizacin fsica (jerarqua de niveles,
estructura no lineal) de la memoria
fsica.
para que el usuario tenga una visin
lgica de la memoria como una matriz
lineal. Adems permita la
estructuracin de un programa en
mdulos.
10
SOI
Niveles de gestin
Niveles de gestin
de memoria
de memoria
Existen dos niveles:
Gestor de memoria
del SO -asigna
porciones de
memoria al proceso
Gestor de memoria
del proceso -gestiona
estas porciones (p. ej.
a travs de malloc y
free).
SO
Gestor de
memoria
del SO
Proceso
Gestor de
memoria del
proceso
Nuestro
objetivo
brk
11
SOI
Procesamiento
Procesamiento
de un programa
de un programa
Mdulos
Objetos Traductor
Editor de
Enlaces
Cargador
Programa
Absoluto
Programa
Ejecutable
Bibliotecas
de sistema
dinmicas
Etapas por las que pasa un programa
antes de cargarse en memoria.
Mdulos
Fuentes
Bibliotecas
de sistema
12
SOI
Compiladores, enlazadores
Compiladores, enlazadores
y cargadores
y cargadores
Compiladores y ensambladores: Sus
salidas contienen direcciones reubicables
y referencias externas.
Enlazadores: resuelven las referencias
externas de las subrutinas compiladas o
ensambladas por separado.
Cargadores: ligan direcciones reubicables
a direcciones absolutas.
13
SOI
Ligadura de direcciones
Ligadura de direcciones
Ligadura de direcciones - correspondencia
entre direcciones, de instrucciones y datos,
de nuestro programa con las direcciones
de memoria.
Es un esquema de designacin; una
funcin: T: INT -> INT
ligadura main()
{
int i;
i=0;
}
Espacio de
direcciones
celda i-sima
Memoria
fsica
14
SOI
Enlazado y carga
Enlazado y carga
Proceso en memoria
Cabecera
Cdigo
Datos inicializados
Tabla de smbolos
Info. reubicacin
Cabecera
Cdigo
Datos inicializados
Tabla de smbolos
Info. reubicacin
Bibliotecas
Cabecera
Tamao del cdigo,
datos inicianizados
y no inicializados
Cdigo
Datos
Mdulos objeto (.o)
Mdulo de carga
Cdigo
Datos
Inicializados
Datos no
inicializados
Heap
Pila
Biblioteca dinmica
(carga o ejecucin)
D
i
s
c
o
Biblioteca esttica
Enlazado Carga
15
SOI
Cundo realizar
Cundo realizar
la ligadura? (i)
la ligadura? (i)
Tiempo de compilacin:
El compilador genera cdigo absoluto.
Para ello debemos conocer las
direcciones de memoria donde se va a
cargar el programa.
~
Hay que recompilar el programa si se
cambia en direccin de inicio.
16
SOI
Cuando hacer ligadura (ii)
Cuando hacer ligadura (ii)
Tiempo de carga:
Se genera cdigo reubicable si no se
conoce la ubicacin en memoria en
tiempo de compilacin.
El procesador debe disponer al menos
de un registro de reubicacin, que
contendr la direccin de inicio del
programa. El SO carga el programa en
memoria y ajusta el registro de
reubicacin.
17
SOI
Cuando hacer ligadura (iii)
Cuando hacer ligadura (iii)
Tiempo de ejecucin:
Si la ligadura se retrasa hasta la
ejecucin del proceso, este puede
moverse durante su ejecucin de una
zona de memoria a otra.
Necesitamos soporte hardware para la
correspondencia de direcciones. Lo
veremos para el caso de segmentacin
y paginacin.
18
SOI
Ligaduras dinmicas
Ligaduras dinmicas
Para programas con mucho cdigo, el
mdulo de carga presenta dos problemas:
Su tamao en disco es grande.
Su tiempo de carga es elevado.
El SO mitiga el problema mediante las
ligaduras dinmicas. Para ello:
Retrasa la carga de un mdulo hasta
que este es necesario carga dinmica
(o enlace dinmico en tiempo de carga).
Retrasar el propio enlace hasta la
ejecucin enlace dinmico (o enlace
dinmico en tiempo de ejecucin).
19
SOI
Ligaduras dinmica (y ii)
Ligaduras dinmica (y ii)
Carga dinmica:
Mejor uso del espacio
de memoria. Las
rutinas no usadas no
se cargan.
No necesita soporte
especial del SO;
implementado en el
diseo del programa o
biblioteca.
No solventa el
problema del tiempo
de carga.
Enlace dinmico:
El enlazador inserta
tocones (stubs) para
localizar la biblioteca
residente adecuada.
El SO comprueba que la
rutina est en el
espacio de direcciones
del proceso.
Ms costosa que la
carga esttica pero
ahorra espacio y el
arranque ms rpido.
20
SOI
Espacio lgico y
Espacio lgico y
espacio fsico
espacio fsico
La necesidad de poder reubicar un
programa en memoria, hace necesario
separar el espacio de direcciones generadas
por el compilador, espacio lgico o virtual,
del espacio fsico en el que se carga, el
espacio de direcciones fsicas.
Denominamos:
Direccin lgica - la generada por la
CPU; tambin conocida como virtual.
Direccin fsica - direccin que se pasa
al controlador de memoria.
21
SOI
Traduccin de
Traduccin de
direcciones
direcciones
La separacin de espacios me obliga a
realizar una traduccin de direcciones:
CPU
Memoria
Fsica
Caja de
Traduccin
(MMU)
L/E datos
(sin traducir)
Cach
real
Cach
virtual
Direccin lgica Direccin fsica
22
SOI
Unidad de Gestin
Unidad de Gestin
de Memoria
de Memoria
MMU (Memory Management Unit) disposi-
tivo hardware que traduce direcciones
virtuales en direcciones fsicas. Tambin
implementa proteccin.
El hardware determina la forma en la que el
SO gestiona la MMU.
En el esquema MMU ms simple, el valor del
registro de reubicacin se aade a cada
direccin generada por el proceso de usuario
al mismo tiempo que es enviado a memoria.
23
SOI
MMU
MMU
Memoria
CPU
MMU
Bus instrucciones/datos
Direccin
virtual
Microprocesador
Direccin
fsica
Violacin de
acceso:
-
No presente
-
Usuario/kernel
-
Escritura
-
Lectura
- Ejecucin
Excepcin
Controlador
de memoria
24
SOI
Esquemas simples de
Esquemas simples de
asignacin
asignacin
Gestin de memoria en
sists. multiprogramados:
Asignacin esttica.
Asignacin dinmica.
Intercambio
Fragmentacin
Compactacin
25
SOI
Organizacin contigua
Organizacin contigua
del almacenamiento
del almacenamiento
En este apartado veremos esquemas de
asignacin contigua, es decir, la memoria
principal asignada a un proceso es un
nico bloque de memoria contigua.
En el tema siguiente, veremos esquemas
de asignacin no contigua, es decir,
permitimos que el programa este dividido
en bloques, o segmentos, que se pueden
colocar en zonas no necesariamente
contiguas de memoria principal.
26
SOI
Particiones
Particiones
Dividimos la memoria en particiones:
El SO ocupa permanentemente una regin
de memoria.
El resto de la memoria se particiona entre
los procesos de forma:
Esttica nmero fijo de particiones;
pueden ser de igual o diferente tamao.
Dinmica particiones de diferente
tamao y nmero.
El SO mantiene informacin sobre las
particiones asignadas y las libres (huecos).
27
SOI
Asignacin en sists. de
Asignacin en sists. de
particiones variables
particiones variables
Para cargar proceso en memoria se le
asigna un hueco suficientemente grande
como para albergarlo.
Cmo satisfacer una peticin de tamao
n ? Asignar segn:
Primer encaje Asignar el primer hueco
lo bastante grande.
Mejor encaje Asignar el hueco ms
pequeo lo bastante grande; produce el
hueco sobrante menor.
28
SOI
El Primer encaje y
El Primer encaje y
el Mejor encaje
el Mejor encaje
SO
Hueco de 14K
Hueco de 5K
Hueco de 30K
0
a
b
c
d
e
f
g
Direc.
inicial
Lon-
gitud
a
c
e
g
16K
14K
5K
30K
Lista espacio libre
(orden por direcc.)
Solicitudes
13 K
Hueco de 16K
Mejor encaje:
Se ordenara por
tamao de hueco
29
SOI
Fragmentacin externa
Fragmentacin externa
Fragmentacin
externa: existe espacio
para satisfacer una
peticin pero no es
contiguo. Ej. No
podemos satisfacer
una peticin de 40 KB,
habiendo 62 KB libres.
Memoria
Memoria no utilizada
Particin j
Proceso j
Proceso i
Particin i
30
SOI
Fragmentacin interna
Fragmentacin interna
Fragmentacin interna:
la memoria asignada es
mayor que la usada; la
diferencia entre ambas
es memoria interna a
una particin que no se
usa.
Se produce cuando se
asigna memoria en
particiones fijas.
Memoria
Particin fija
Memoria no utilizada
Particin fija
Proceso
31
SOI
Compactacin
Compactacin
Compactacin tcnica para reducir la frag-
mentacin externa que consiste en arrastrar
los contenido de memoria a un lugar para
reunir la memoria libre en un bloque.
Posible en sistemas con reubicacin
dinmica (se realiza en tiempo de ejecucin).
Problema: procesos que realizan E/S ?:
Anclarlo en memoria durante la E/S
Realizar E/S dentro de los bferes del SO.
32
SOI
Ejemplo de compactacin
Ejemplo de compactacin
Tarea 1(8KB)
Load 4, 53248
37
Tarea 2 (16KB)
SO
19456
40960
-12288
Registro
reubicacin
10 K
18 K
50 K
80 K
Tarea 1(8KB)
Load 4, 53248
37
Tarea 2 (16KB)
SO
31744
53248
00000
Registro
reubicacin
10 K
18 K
30 K
62 K
92 K
Compactacin
33
SOI
Intercambio (
Intercambio (
swapping
swapping
)
)
Qu ocurre si la memoria
esta ocupada totalmente?
Intercambiar procesos
entre memoria principal y
secundaria (un disco
rpido que alberga las
imgenes de memoria de
los procesos de usuario, y
suministra acceso directo
a esas imgenes).
Disco
Memoria
P
i
P
j
P
i
Poner
(swap in)
Quitar
(swap out)
34
SOI
Intecambio (y ii)
Intecambio (y ii)
Aconsejable en sists. de tiempo compartido:
usuarios conectados al sistema alternan
periodos de trabajo e inactividad.
Un proceso se sacar de memoria:
Si va a estar cierto tiempo bloqueado
Necesitamos compartir CPU y memoria
El factor principal en el tiempo de intercam-
bio es el tiempo de transferencia, que es
proporcional a la memoria intercambiada.
Se usa en UNIX, Windows, etc.
35
SOI
Gestin de memoria
Gestin de memoria
Los SOs multitarea asignan una zona de
memoria a cada proceso en ejecucin y
deben garantizar que un proceso de
usuario no lea/escriba de/en la memoria
asignada a otro proceso
Al memos, debemos de tener proteccin
de memoria para la tabla de vectores de
interrupcin/excepcin y las rutinas de
servicio de interrupcin/excepcin.
36
SOI
Proteccin y reubicacin
Proteccin y reubicacin
Cmo aseguramos la proteccin? y
Cmo reubicamos los procesos?
Necesitamos dos registros: el registro
base y lmite. En cada load y store:
Reubicacin:
Direc. Fsica = Direc. Virtual + Reg. Base
Proteccin comprobar que la direccin
cae en el rango [base,lmite).
37
SOI
Registros base y lmite
Registros base y lmite
CPU
Memoria
Registro Base:
3000
2000 Registro Lmite:
3000
5000
5600
Proceso 1
Proceso 2
SO
PID RB RL
1
2
3000 2000
5600
7000
1400
Comentario:
Proceso 1 en ejecucin.
g
i
n
a
s
r
e
f
e
r
e
n
c
i
a
d
a
s
Tiempo
56
SOI
Tiempo de Acceso Efectivo
Tiempo de Acceso Efectivo
Sea el tiempo de ciclo de memoria, el de
una consulta asociativa de y la tasa de
aciertos del TLB, entonces:
TAE = (+) + (1-) (2+)
Despreciable
Para valore altos de
=100ns
=20ns
=98%
TAE=122ns
Slo 22% penalizacin!
57
SOI
Proteccin de memoria
Proteccin de memoria
Implementamos proteccin asociando un bit
de proteccin con cada pgina.
Cada entrada de la TP contiene un bit de
validez o de presencia:
Bit_vlido=1, la pgina asociada est en
el espacio de direcciones lgicas del
proceso, y por tanto es una pgina legal.
Bit_vlido=0, la pgina no pertenece al
espacio de direcciones del proceso.
58
SOI
Ejemplo
Ejemplo
Espacio
lgico
Memoria fsica
Tabla de
pginas
Pgina 0
Pgina 1
Pgina 3
0
1
2
3
0
1
2
3
4
5
Marcos
1
4
3
5
Pgina 0
Pgina 1
Pgina 3
Pg Bit Marco
Prot.
1
1
0
1
No usada
Error
59
SOI
Tamao de la TP
Tamao de la TP
Sea un sistema con:
Direccin virtual: 32 bits.
Tamao de pgina =4 Kbytes (2
12
bytes).
Para el desplazamiento necesitamos 12 bits.
Para el npgina (32-12) = 20 bits.
N posible de pginas virtuales =
2
20
= 1,048,576 !
Solucin para reducir el tamao en
memoria de la TP: paginacin multinivel.
60
SOI
Paginacin multinivel
Paginacin multinivel
Paginamos las tablas de pginas.
La particin de las TPs permite al SO:
Dejar particiones no usadas sin cargar
hasta que el proceso las necesita.
Las porciones del espacio de direcciones
que no se usan no necesitan tener TPs.
Las arquitecturas de 32/64 bits utilizan
varios niveles de paginacin, p. ej. 2 niveles
en Intel, 3 niveles en SPARC y 4 niveles en
Motorola 68030.
61
SOI
Paginacin a 2 niveles
Paginacin a 2 niveles
La direccin lgica se divide de la forma:
k
n-k m
Paginacin a primer nivel
Direccin virtual de n bits
Nmero de pgina
Paginacin a segundo nivel
Desplazamiento
62
SOI
Paginacin a dos
Paginacin a dos
niveles (cont.)
niveles (cont.)
. . .
. . .
. . .
. . .
d1 d2 desp.
Tabla de pginas
de primer nivel
Tablas de pginas
de segundo nivel
Memoria
63
SOI
Rendimiento
Rendimiento
Cada nivel se almacena en una tabla
separada en memoria convertir una
direccin puede llevar hasta tres accesos a
memoria en paginacin a dos niveles.
Aunque los accesos se triplican, las cachs
permiten que el TAE sea razonable.
Con los datos del ejemplo anterior:
TAE=0.98*120 + 0.02*320 = 124 nsg.
esto es, slo un 24% de penalizacin.
64
SOI
Compartir cdigo
Compartir cdigo
La paginacin facilita la comparticin de
cdigo reentrante entre procesos.
Si varios procesos estn ejecutando el
mismo programa slo necesitamos tener
una copia en memoria de las pginas de
cdigo. La comparticin se implementa
ajustando las correspondientes PTEs de la
TPs de los procesos para que apunte al
mismo marco.
Problema: pginas con cdigo y datos.
65
SOI
Segmentacin
Segmentacin
Definicin
Traduccin de
direcciones
Caractersticas
Segmentacin paginada
66
SOI
Segmentacin
Segmentacin
Soporta mejor la
visin de memoria del
usuario: un programa
es una coleccin de
unidades lgicas
segmentos:
procedimientos,
funciones, pila, tabla
de smbolos, matrices,
etc.
S1
S2
S3
S4
S1
S4
S3
S2
Espacio de
usuario
Memoria
fsica
67
SOI
Segmentacin (cont.)
Segmentacin (cont.)
Una direccin lgica es una tupla:
<nmero_de_segmento, desplazamiento>
La Tabla de Segmentos aplica direcciones
bidimensionales definidas por el usuario
en direcciones fsicas de una dimensin.
Cada entrada de la tabla tiene los
siguientes elementos:
base - direccin fsica donde reside el
inicio del segmento en memoria.
lmite - longitud del segmento.
68
SOI
Traduccin en
Traduccin en
segmentacin
segmentacin
CPU
Memoria
s
s d
Direccin
virtual
Error
s = n segmento
d = desplazamiento
b = base
l = longitud
l b
b+d b+d<l
Direccin
lineal
Si
Tabla de
segmentos
69
SOI
Implementacin de la
Implementacin de la
tabla de segmentos
tabla de segmentos
Para acceder a la TS del sistema o de un
proceso necesitamos los registros:
Registro Base de la Tabla de Segmentos
(STBR) apunta a la posicin en memoria
de la tabla de segmentos.
Registro Longitud de la Tabla de
Segmentos (STLR) indica el nmero de
segmentos usados por el programa; el
nmero de segmento s es legal si
s<STLR.
70
SOI
Caractersticas
Caractersticas
Es un esquema eficiente para espacios de
direcciones dispersos.
Reubicacin: como los segmentos varan
en longitud, la asignacin de memoria es
un problema de asignacin dinmica de
almacenamiento: primero/mejor encaje.
Presenta fragmentacin externa. La simu-
lacin da un 10% de memoria no usable
Comparticin: segmentos compartidos,
con el mismo nmero de segmento.
71
SOI
Caractersticas (cont.)
Caractersticas (cont.)
Proteccin: cada entrada de la TS tiene
asociado un bit de validez (0 si es ilegal; 1
si es segmento legal).
Dado que los bits de proteccin se
asocian con el segmento; la comparticin
de cdigo ocurre a nivel de segmento.
A diferencia de la paginacin, la
segmentacin no es transparente al
programador, debe realizarse por el
compilador o el usuario.
72
SOI
Segmentacin paginada
Segmentacin paginada
Trata de resolver los problemas de
fragmentacin externa e interna, y los
elevados tiempos de bsqueda mediante
la paginacin de los segmentos.
Un segmento es un espacio lineal de
direcciones que puede ser paginado.
N segmento N Pgina Deplazamiento
73
SOI
Ejemplo: Intel 80x86
Ejemplo: Intel 80x86
Utiliza segmentacin con paginacin a dos
niveles. Tamao de pgina de 4 kB 4 MB.
Un proceso puede contener hasta 8192
segmentos. Cada proceso tiene su propia
tabla local de descriptores (LDT), con una
entrada por cada segmento.
Existe una tabla global de desciptores
(GDT) que tiene entradas para el cdigo,
datos y pila del kernel y algunos objetos
especiales como las LDTs por proceso.
74
SOI
Intel 80x86
Intel 80x86
Segmento Desplazamiento
Direccin virtual
Tabla de descrip-
tores de segmento
Tabla de
pginas
Pagi.
activa
Traduccin
segmentos
Traduccin
pginas
Si
Direccin fsica
No
Direccin
lineal
75
SOI
Paginacin
Paginacin
Directorio de pginas
Una tabla de pginas
CR3
DIR PAGEOFFSET
PFN OFFSET
Direccin virtual
Direccin fsica
PFN
PFN
31 21 11 0
0 11 31
0 11 31
76
SOI
PTEs en el Intel x86
PTEs en el Intel x86
31 12 8 7 6 5 4 3 2 1 0
PFN D
A
U W P
PFN Nmero de marco de pgina
D Sucio
A Accedida (referenciada)
U Usuario (0) /supervisor (1)
W Lectura (0) /escritura (1)
P Presente (vlido)
Sin usar
77
SOI
Memoria Virtual
Memoria Virtual
Paginacin por
demanda
Falta de pgina
Sustitucin de
pginas
Conjunto activo
(de trabajo)
78
SOI
Memoria virtual es ...
Memoria virtual es ...
Gestin automtica del almacenamiento,
que determina: qu almacenar en memoria
principal, dnde almacenarlo y cuando
cargarlo/descargarlo.
MV simplifica la programacin:
Elimina la necesidad de gestin manual.
Maneja las ligaduras.
Gestiona la comparticin de memoria.
Abstrae los detalles de memoria fsica.
MV es el gestor de la memoria principal
79
SOI
MV como una abstraccin
MV como una abstraccin
La MV abstrae los detalles de memoria:
Memoria como una matriz infinita.
Continuidad lgica de los datos
Aislamiento de datos.
MV como un tipo abstracto de datos:
Crea/destruye espacio de direcciones.
Copia/saca datos en/del espacio direc.
Estas operaciones no son tpicas de la API,
sino internas al SO.
80
SOI
Memoria Virtual
Memoria Virtual
La separacin de espacios permite:
Ejecutar un programa sin estar cargado
completamente en memoria, y/o
Espacios de direc. lgicas mayores que
el espacio de direcciones fsicas.
Necesitamos asignar pginas para inter-
cambiarlas de memoria disco.
Podemos implementar la paginacin por
demanda o anticipada.
MV suele suministrar la nocin de regin
para trabajar con MMUs segmentadas.
81
SOI
Paginacin por demanda
Paginacin por demanda
Caractersticas
Faltas de pginas
Sustitucin de
pginas
Rendimiento
82
SOI
Caractersticas
Caractersticas
Slo traeremos una pgina a memoria
cuando se necesite. Las ventajas son:
menos E/S.
menos memoria.
respuesta ms rpida.
ms usuarios.
Problema: el rendimiento
cundo se necesita? cuando se referencia
Referencia es invlida se aborta.
Si es vlida se trae pg. a memoria.
83
SOI
Bit de validez
Bit de validez
Sobrecargamos la semntica del bit de
validez de cada PTE para implementar la
paginacin por demanda. Si el bit vale:
1 la pgina est en memoria.
0 no est en memoria(no es vlida).
Al inicio, el bit est a cero en todas las
PTEs. Durante la traduccin de direcciones,
si se referencia una pgina con el bit de
validez a cero se produce una trampa falta
de pgina.
84
SOI
Falta de pgina
Falta de pgina
En una falta de pgina, el SO mira en la tabla
que mantiene el espacio de direc. completo
del proceso para decidir si:
La referencia es invlida aborta proceso
La pgina no est en memoria, entonces:
'
Obtiene un marco vaco.
^
Carga la pgina dentro del marco.
Rearranca la instruccin.
Si la pgina esta en memoria pero la
traduccin no es vlida reasigna la pg.
85
SOI
Esquema de la gestin
Esquema de la gestin
de falta de pgina
de falta de pgina
CPU
ld 0x32, r2
0
VB
Tabla
de
Pginas
Memoria principal
Disco
6
1
5
4
2
3
Gestor
Falta Pgina
del SO
86
SOI
Otros usos del
Otros usos del
bits de validez
bits de validez
En ocasiones puede que una pgina este
en memoria pero el SO haya desactivado
el bit de validez.
Esto le permite al SO:
Simular en soft el bit de referencia.
Implementar la copia-sobre-escritura
(copy-on-write) mecanismo que para
ahorrar memoria permite compartir
pginas y duplicarlas cuando se intenta
escribir en en ellas.
87
SOI
si no hay marcos libres?
si no hay marcos libres?
... Sustitucin de pginas
... Sustitucin de pginas
Reducimos la sobreasignacin de memoria
si la rutina de servicio de falta de pgina
incluye la sustitucin de pginas, es decir,
encontrar pgina que no este realmente en
uso para sacarla, y poder utilizar su marco.
La sustitucin de pginas completa la
separacin entre la memoria lgica y fsica.
B
Rendimiento: el algoritmo de sustitucin
debera producir el mnimo nmero de
faltas de pginas.
88
SOI
Rendimiento de la
Rendimiento de la
paginacin por demanda
paginacin por demanda
Sea p la probabilidad de faltas de pgina.
p=0, no hay faltas de pginas; p=1, toda
referencia es una falta. Por tanto, 0 p 1.
TAE = (1 - p) * acceso_a_memoria
+ p * (sobrecarga_falta_de_pgina
+ sacar_fuera_la_pgina
+ traer_la_pgina
+ sobrecarga_de_rearranque)
t
servicio-falta-pg.
=25 msg y TAE=100ns, un 10%
de degradacin slo si 1/2,5 millones de
accesos a memoria producen falta de pgina.
89
SOI
Bit sucio
Bit sucio
El uso de un bit adicional en las PTEs, el
bit sucio (o de modificacin) reduce la
sobrecarga de transferencia de algunas
pginas.
Slo se escriben en disco las pginas que
han sido modificadas; las no modificadas
pueden descartarse ya que tenemos una
copia de ellas en el archivo ejecutable en
disco.
90
SOI
Algoritmos de sustitucin
Algoritmos de sustitucin
Definiciones
Algoritmo ptimo
LRU
Aproximacin: el
algoritmo del reloj
Asignacin de marcos
91
SOI
Definiciones
Definiciones
Buscamos un algoritmo de sustitucin que
de la menor tasa de faltas de pginas.
Denominamos cadena de referencia, =
r
1
,r
2
,r
3
,...,r
i
, ..., la secuencia de nmeros de
las pginas referenciadas por un proceso
durante su ejecucin.
Denominamos tiempo virtual al ndice de la
cadena de referencia de pginas. En
entornos multiprogramados, ste nos da
idea del progreso del proceso a lo largo de
su ejecucin.
92
SOI
Estado de la memoria
Estado de la memoria
El conjunto de pginas cargadas en m
marcos en tiempo virtual t, S
t
(m), viene
dado por
S
t
(m) = S
t-1
(m) X
t
- Y
t
donde X
t
es la pgina trada en t, e Y
t
la
pgina sustituida en t.
As, dando Y
t
, identificamos unvocamente
la estrategia de sustitucin (S
t-1
(m) y X
t
estn
definidos cuando ocurre la falta de pgina).
93
SOI
Algoritmo ptimo
Algoritmo ptimo
Sea FDW
t
(r), la distancia adelante de la
pgina r en t, la distancia desde el punto
actual de la cadena de referencia a la
siguiente posicin en dnde la misma
pgina es referenciada de nuevo.
El algoritmo optimo sustituye la pgina Y
t
con mxima distancia adelante:
Y
t
= max
xSt-1(m)
(FWD
t
(r))
Si se pueden cargar ms de una pgina
que no aparecen en , entonces se elige
una arbitraria.
94
SOI
Ejemplo de Alg. Optimo
Ejemplo de Alg. Optimo
Problema: debemos
tener un conocimien-
to perfecto de la
cadena de referencia.
Aunque no es
implementable, se
utiliza para medir
cmo de bien se
comportan otros
algoritmos.
O
Sean 4 marcos y
4
5
1
2
3
4
6 faltas de p gina
=1,2,3,4,1,2,5,1,2,3,4,5
95
SOI
Algoritmo LRU
Algoritmo LRU
Sea BKWD
t
(r), distancia atrs de la pgina r
en t, la distancia de r a la ltima ocurrencia
de la pgina en la parte precedente de .
LRU (Least Recently Used) selecciona la
pgina con mxima distancia atrs:
Y
t
= max
xSt-1(m)
(BKWD
t
(r))
si hay ms de una, se elige una arbitraria.
Debido a la localidad, la distancia atrs es
un buen estimador de la distancia adelante.
96
SOI
Ejemplo: Algoritmo LRU
Ejemplo: Algoritmo LRU
Implementar LRU
requiere contabilizar el
uso de cada pgina.
Dos formas:
Con contador.
Con pila.
Ambas son costosas,
por lo que se utilizan
aproximaciones como
el algoritmo del reloj.
O
4 marcos y
la anterior:
5
4
1
2
3
4
8 faltas de p gina
5
3
97
SOI
LRU : implementaciones
LRU : implementaciones
LRU con contador
Aadimos a cada PTE un
contador.
Al referenciar una
pgina, se copia el
tiempo del reloj en el
contador.
Si necesitamos cambiar
una pgina, se elige
aquella cuyo contador
sea menor menor.
LRU con pila
Los nmeros de pginas
se mantienen en una pila
(lista doble enlazada).
Al referenciar una pg.,
esta se mueve a la cima
(ajustar 6 punteros).
Sustituimos la pgina
que hay en el fondo de
la pila; no hay que hacer
bsquedas.
98
SOI
Algoritmo del reloj
Algoritmo del reloj
Necesitamos:
1 bit de referencia (inicialmente a 0).
Marcos candidatos en lista circular
Un puntero (la manecilla del reloj).
A partir de la posicin actual de la manecilla:
Si la pg. tiene bit=1, se pone a 0 (se le da
una segunda oportunidad).
Se avanza la manecilla, y seguimos en 1.
Se sustituye la primera que encontramos
con el bit=0. Se avanza la manecilla.
99
SOI
Algoritmo del reloj:
Algoritmo del reloj:
ejemplo
ejemplo
pgina 5
ref.=1
pgina 3
ref.=0
pgina 2
ref.=0
3
pgina 4
ref.=0
1
2
(a) Antes de la sustitucin (b) Despus
0
pgina 1
ref.=1
pgina 3
ref.=1
pgina 2
ref.=1
N marco
pgina 4
ref.=1
1
2
0
3
100
SOI
Asignacin de marcos
Asignacin de marcos
Cada proceso necesita para su ejecucin un
nmero mnimo de pginas.
Criterios de asignacin de marcos:
Segn el nmero de marcos asignados:
Fija todos los procesos igual.
Por prioridad n marcos proporcional
a la prioridad-
Segn a quin pertenecen los marcos:
Local de entre los marcos asignados
al proceso.
Global de entre toda la memoria.
101
SOI
Modelo del Conjunto
Modelo del Conjunto
Activo
Activo
Hiperpaginacin
Modelo del conjunto
activo
Aproximaciones al
algoritmo del
conjunto activo:
Algoritmo del reloj
del conjunto activo
Frecuencia de
faltas de pginas
102
SOI
Hiperpaginacin
Hiperpaginacin
Si un proceso no tiene
suficientes pginas,
la tasa de faltas es alta
baja uso de la CPU
el SO incrementa el
grado de multiprogra-
macin ms faltas
de pginas ...
Hiperpaginacin =
sistema ocupado en
traer/sacar pginas.
Grado de
multiprogramacin
P
r
o
d
u
c
c
i
n
Conducta
real
Conducta
esperada
103
SOI
A qu se debe ?
A qu se debe ?
Segn el modelo de localidad:
Los procesos migran de una localidad
a otra.
Las localidades pueden solaparse.