Está en la página 1de 111

1

SOI

Conceptos generales: hard / soft

Esquemas contiguos de asignacin:

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.

El SO carga los registros


base y lmite con los
valores adecuados al
planificar un proceso
38
SOI
Proteccin hardware del
Proteccin hardware del
direccionamiento
direccionamiento
CPU
M
E
M
O
R
I
A
BASE +
LIMITE
BASE
>= <
No No
Trampa al SO de error
de direccionamiento
MMU
Direccin
39
SOI
Pros y contras de los
Pros y contras de los
registros base y lmite
registros base y lmite
Solucin: asignacin no contigua a
continuacin
Contras: cmo
aumentar la
memoria de un
proceso,
compartir mdulos
y protegerlos
adecuadamente?
Pros: Econmico
en trminos de:
Registros: slo
dos.
Ciclos suma y
comparacin.
SO
gcc
emac
40
SOI
Organizaciones no
Organizaciones no
contiguas
contiguas
Paginacin
Segmentacin
Segmentacin
paginada
Ejemplo: Intel x86
41
SOI
Idea bsica
Idea bsica
Cmo evitar la fragmentacin de
memoria?...
Al desacoplar los espacios lgico y fsico, el
espacio de direcciones de un proceso no
tiene que ser contiguo.
Segmentacin partimos el programa en
trozos de diferentes tamaos.
Paginacin hacemos que todos los
bloques tengan el mismo tamao.
42
SOI
Paginacin
Paginacin
Ideas bsicas
Traduccin de direcciones
Bfer de reconocimiento
de traducciones
Proteccin de memoria
Reduccin de la TP en
memoria:
Paginacin multinivel
43
SOI
Paginacin: ideas bsicas
Paginacin: ideas bsicas
En segmentacin la asignacin de memoria
es dinmica. La paginacin lo evita
haciendo que todos los fragmentos sean
iguales.
La MMU divide el programa en bloques de
igual tamao (en general una potencia de
dos):
La memoria fsica se divide en bloques
denominados marcos de pgina.
El espacio lgico se divide en bloques
denominados pginas.
44
SOI
Paginacin
Paginacin
El SO mantiene el rastro de los marcos que
estn libres.
Para ejecutar un programa con n pginas,
necesitamos m marcos libres. Como
veremos en el tema siguiente m puede ser
menor que n, esto es, podemos ejecutar un
programam mayor que la memoria principal
disponible.
45
SOI
Traduccin:
Traduccin:
Tabla de pginas
Tabla de pginas
La traduccin de direcciones virtuales a
direcciones fsicas consiste bsicamente en
conocer donde esta el marco en el que se
encuentra cargada una pgina dada.
La traduccin se realiza mediante una
estructura de datos denominada tabla de
pginas (TP), que tiene un elemento, entrada
(PTE), por cada pgina de proceso. El
contenido de esta entrada es la direccin del
marco donde esta cargada.
46
SOI
Direccin lgica
Direccin lgica
La MMU descompone las direcciones lgicas
que le pasa la CPU en dos campos:
Nmero de pgina (p) -se usa como ndice
para acceder a la p-sima TPE, que nos
dar la direccin de la base del marco
donde se encuentra la pgina en memoria.
Desplazamiento de pgina (d) -sumado
con la base de pgina define la direccin
fsica que debe utilizar la MMU para
acceder a la instruccin o datos.
47
SOI
Esquema de traduccin
Esquema de traduccin
CPU
Memoria
Tabla de pginas
m
d
p d
m
d
Direccin
virtual
Direccin
fsica
p = n pgina
d =desplazamiento
m= n marco
Bits
adicionales
m
p
MMU M
a
r
c
o

m
48
SOI
Un ejemplo sencillo
Un ejemplo sencillo
Espacio
lgico
Memoria fsica
Tabla de
pginas
Pgina 0
Pgina 1
Pgina 2
Pgina 3
0
1
2
3
0
1
2
3
4
5
Marcos
1
4
3
5
Pgina 0
Pgina 1
Pgina 2
Pgina 3
Pginas
00100
01000
01100
00100
00000
01000
01100
10000
11000
100
00000
011
110
001
10010
Direc. fsica
00110
Direc. virtual
49
SOI
Implementacin
Implementacin
de la TP
de la TP
Por eficiencia, todas las TPs se mantienen
siempre en memoria principal.
Para localizar la TP de un proceso es nece-
sario que la MMU disponga de:
Registro base de la tabla de pginas
(PTBR) apunta a la base de la TP.
Registro longitud de la tabla de pginas
(PTLR) indica el tamao de la TP.
Al asignar la CPU a P
i
, cargamos en estos
registros los valores PTBR
i
y PTLR
i
de su TP.
50
SOI
Acceso a memoria
Acceso a memoria
CPU
Bus instrucciones/datos
Direccin
virtual
Microprocesador
Direccin
fsica
Excepcin
MMU
SO
Memoria
RLTP
a
b
RBTP
b
a+p
a
p d
a + p
m
dato d
m
m | d
marco
TP
51
SOI
Bfer de reconocimiento
Bfer de reconocimiento
de traducciones
de traducciones
Cada acceso a una instruccin/dato requiere
dos accesos a memoria: uno a la TP y otro a
la instruccin/dato.
Para reducir el tiempo de acceso se introduce
una cach hardware rpida denominada Bfer
de reconocimiento de traducciones (TLB
-Translation Look-aside Buffer).
La traduccin ahora se realiza:
0
Si existe ya en el TLB, tenemos el marco.
O
Si no, la buscamos en la TP y ajustamos
el TLB.
52
SOI
TLB: implementacin
TLB: implementacin
Se implementa como un conjunto de regis-
tros asociativos, que permiten bsquedas en
paralelo de una direccin (+ en EC II).
Nmero Pgina virtual TLB
Etiqueta Conjunto TLB
Comparador
V Etiqueta P D Pro. N Pg. Fsica
1 1
N Pgina Fsica
Fallo TLB Acierto TLB
53
SOI
Caractersticas del TLB
Caractersticas del TLB
El TLB es una cache organizada tpicamente
como un conjunto asociativo total de n-vas.
Tiene una Entrada de la TP (PTE) por lnea.
Tiene entre 32 y 1K de entradas.
El tiempo de acierto esta diseado para estar
dentro de un ciclo de reloj.
Tiene una tasa de fallos tpica de entre 0.01
y 1%.
El TLB es una tabla de sistema cuando se
planifica un proceso se invalidan todas las
entradas de la tabla.
54
SOI
Esquema de traduccin
Esquema de traduccin
Memoria
d f d
TLB
f
f
Fallo
TLB
CPU
Acierto
TLB
p
p
Tabla de
pginas
55
SOI
Localidad de referencia
Localidad de referencia
Las cachs funcionan con un alto % de
aciertos ya que los programas suelen exhibir
localidad de referencia =un programa hace
referencias locales, espaciales o temporales, a
posiciones de su espacio de direcciones.
P

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.

Pone el bit de validez a 1.

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.

La hiperpaginacin se produce cuando la


suma de los tamaos de todas las
localidades es mayor que el tamao total
de memoria.
Se puede limitar con algoritmos de
sustitucin locales (o por prioridad).
104
SOI
Modelo del Conjunto Activo
Modelo del Conjunto Activo
El Conjunto Activo (Working Set) con
parmetro , WS(t,), es el conjuto de
pginas que han sido referenciadas en las
ltimas unidades de tiempo.
|WS(t,)| vara con el tiempo.
es el tamao de la ventana y es un
parmetro ajustable. debe medirse en
tiempo virtual.
Si no abarca la localidad completa.
abarca varias localidades.
abarca el programa entero.
105
SOI
Ejemplo
Ejemplo
Sea la cadena de referencias
=... 1 2 3 4 5 6 6 6 5 2 4 4 7 7 5 5 ...
t
1
t
2
Si el tamao de la ventana es =3:
En t
1
, WS (t
1
, 3) ={4,5,6}
En t
2
, WS (t
2
,3)={4,7}
Si =5, los conjuntos activos seran:
En t
1
, WS (t
1
, 5) = {2,3,4,5,6}
En t
2
, WS (t
2
, 5) = {2,4,7}

106
SOI
Principio del WS
Principio del WS
La importancia del modelo del conjunto
activo se debe a que liga la gestin de
memoria y la planificacin travs del
Principio del Conjunto Activo:
Un proceso slo puede ejecutarse si
su conjunto activo est en memoria
principal. Una pgina no puede
retirarse de memoria principal si est
dentro del conjunto activo del proceso
en ejecucin.
107
SOI
Propiedades del WS
Propiedades del WS
|WS(t,)| es variable, en concreto,
1 |WS(t,)| min( , n)
(n = nmero total de pginas). Esto implica
que podemos evitar las particiones fijas.
Cul es la forma de la grfica de |WS(t,)|
frente a t?
t
|WS(t,D)|
108
SOI
WS e hiperpaginacin
WS e hiperpaginacin
Sea D=|Ws
i
| =Total marcos demandados.
Si D>m (marcos totales)hiperpaginacin.
Poltica: si D>m, entonces suspender un
proceso (o sea liberar memoria).
Posibles polticas de control de carga:
Proceso de menor prioridad.
El que genera ms faltas de pgina.
El ltimo proceso activado.
El proceso ms pequeo, o el mayor.
Proceso con el resto de cuantum ms
largo.
109
SOI
Algoritmo WSReloj
Algoritmo WSReloj
Es ms difcil de implementar que el LRU.
WSReloj es una aproximacin a WS que
produce la misma tasa de faltas de pgs.
Igual al del reloj +1 variable, UltRef, para
cada marco. Al activar el bit de referencia,
UltRef[marco]:= T
proceso-i
(tiempo virtual del
proceso que usa el marco). Al producirse
una falta acta como el reloj, pero cuando
encuentra un marco con bit de referencia
a cero elimina la pgina del WS si T
proceso-i
-
UltRef[m] > .
110
SOI
Algoritmo Frecuencia
Algoritmo Frecuencia
de Faltas de Pgina
de Faltas de Pgina
PFF es una estimacin
del |WS|.
Asignar/desasignar
marcos para mantener
la tasa de faltas de
pgina dentro de unos
lmites (marcas
superior e inferior).
Tasa falta pginas =
1/tiempo entre faltas.
N de marcos
asignados
T
a
s
a

d
e

f
a
l
t
a
s

d
e

p
g
.
Marca superior
Marca Inferior
111
SOI
PFF en detalle
PFF en detalle
El SO mantiene un bit de referencia y el
tiempo virtual de la ltima referencia de la
pgina. Tasa falta pag.=1/t
actual
-t
ultref
.
Cuando se produce una falta de pgina, si:
tfp <marca_inferior aadir una pgina
al conjunto activo.
tfp >marca_superior eliminar pginas
con bit de referencia a cero, y poner a
cero los bits de las restantes.
*
Problema: el algoritmo no se comporta
bien en las transiciones entre localidades.

También podría gustarte